void __init ssg_pins_init(void)
{
	nmk_config_pins(kyle_pins, ARRAY_SIZE(kyle_pins));

	if (system_rev >= KYLE_ATT_R0_1){
		nmk_config_pins(kyle_r0_1_pins, ARRAY_SIZE(kyle_r0_1_pins));
		ux500_pins_add(kyle_r0_1_lookup_pins, ARRAY_SIZE(kyle_r0_1_lookup_pins));
	} else if (system_rev == KYLE_ATT_R0_0){
		nmk_config_pins(kyle_r0_0_pins, ARRAY_SIZE(kyle_r0_0_pins));
		ux500_pins_add(kyle_lookup_pins, ARRAY_SIZE(kyle_lookup_pins));
	}

	gps_pins_init();

	sdmmc_pins_init();
	suspend_set_pins_force_fn(kyle_pins_suspend_force,
				  kyle_pins_suspend_force_mux);
}
void __init ssg_pins_init(void)
{
	nmk_config_pins(janice_r0_0_pins, ARRAY_SIZE(janice_r0_0_pins));
	ux500_pins_add(janice_r0_0_lookup_pins, ARRAY_SIZE(janice_r0_0_lookup_pins));
	gps_pins_init();
	sdmmc_pins_init();
	suspend_set_pins_force_fn(janice_pins_suspend_force,
				  janice_pins_suspend_force_mux);
}
void __init ssg_pins_init(void)
{
	nmk_config_pins(golden_bringup_pins,
		ARRAY_SIZE(golden_bringup_pins));
	ux500_pins_add(golden_bringup_lookup_pins,
		ARRAY_SIZE(golden_bringup_lookup_pins));
	gps_pins_init();
	sdmmc_pins_init();
	suspend_set_pins_force_fn(golden_pins_suspend_force,
				  golden_pins_suspend_force_mux);
}
void __init ssg_pins_init(void)
{
	if (system_rev == GTI9060_R0_1) {
		nmk_config_pins(gti9060_r0_1_pins, ARRAY_SIZE(gti9060_r0_1_pins));
		ux500_pins_add(gti9060_r0_1_lookup_pins, ARRAY_SIZE(gti9060_r0_1_lookup_pins));
		gps_pins_init();
		sdmmc_pins_init();
		suspend_set_pins_force_fn(gti9060_pins_suspend_force,
					  gti9060_pins_suspend_force_mux);
	} 
}
void __init mop500_pins_init(void)
{
	nmk_config_pins(mop500_pins_common,
				ARRAY_SIZE(mop500_pins_common));

	ux500_pins_add(mop500_runtime_pins, ARRAY_SIZE(mop500_runtime_pins));

	if (machine_is_hrefv60() || machine_is_u8520() || machine_is_u9540())
		ux500_pins_add(mop500_runtime_pins_v60,
			       ARRAY_SIZE(mop500_runtime_pins_v60));
	else if (machine_is_snowball())
		ux500_pins_add(mop500_runtime_pins_snowball,
			       ARRAY_SIZE(mop500_runtime_pins_snowball));
	else
		ux500_pins_add(mop500_runtime_pins_pre_v60,
			       ARRAY_SIZE(mop500_runtime_pins_pre_v60));

	if (machine_is_hrefv60() || machine_is_u8520() || machine_is_u9540())
		nmk_config_pins(mop500_pins_hrefv60,
				ARRAY_SIZE(mop500_pins_hrefv60));
	else if (machine_is_snowball())
		nmk_config_pins(snowball_pins,
				ARRAY_SIZE(snowball_pins));
	else
		nmk_config_pins(mop500_pins_default,
				ARRAY_SIZE(mop500_pins_default));

	switch (pinsfor) {
	case PINS_FOR_U9500:
		nmk_config_pins(u9500_pins, ARRAY_SIZE(u9500_pins));
		break;

	case PINS_FOR_DEFAULT:
		nmk_config_pins(u8500_pins, ARRAY_SIZE(u8500_pins));
	default:
		break;
	}

	suspend_set_pins_force_fn(mop500_pins_suspend_force,
				  mop500_pins_suspend_force_mux);
}
void __init ccu9540_pinmaps_init(void)
{
	pinctrl_register_mappings(ccu9540_common_pinmap,
				  ARRAY_SIZE(ccu9540_common_pinmap));

	ux500_pins_add(u9540_ccu_pins, ARRAY_SIZE(u9540_ccu_pins));

	pinctrl_register_mappings(ccu9540_pinmap, ARRAY_SIZE(ccu9540_pinmap));

	suspend_set_pins_force_fn(ccu9540_pins_suspend_force,
				ccu9540_pins_suspend_force_mux);


}
void __init mop500_pins_init(void)
{
	nmk_config_pins(mop500_pins_default, ARRAY_SIZE(mop500_pins_default));
	ux500_pins_add(mop500_pins, ARRAY_SIZE(mop500_pins));

	switch (pinsfor) {
	case PINS_FOR_U9500_21:
		nmk_config_pins(u9500_21_pins, ARRAY_SIZE(u9500_21_pins));
		break;

	case PINS_FOR_DEFAULT:
	default:
		break;
	}
}
void __init ssg_pins_init(void)
{
	if (system_rev < GAVINI_R0_0_B) {
		nmk_config_pins(gavini_r0_0_pins, ARRAY_SIZE(gavini_r0_0_pins));
	} else if (system_rev == GAVINI_R0_0_B || system_rev == GAVINI_R0_0_A_EMUL) {
		nmk_config_pins(gavini_r0_0_B_pins, ARRAY_SIZE(gavini_r0_0_B_pins));
	} else if (system_rev == GAVINI_R0_0_C || system_rev == GAVINI_R0_0_D) {
		nmk_config_pins(gavini_r0_0_C_pins, ARRAY_SIZE(gavini_r0_0_C_pins));
	} else if (system_rev == GAVINI_R0_1) {
		nmk_config_pins(gavini_r0_1_pins, ARRAY_SIZE(gavini_r0_1_pins));
	}

	ux500_pins_add(gavini_r0_0_lookup_pins, ARRAY_SIZE(gavini_r0_0_lookup_pins));
	gps_pins_init();
	sdmmc_pins_init();
	suspend_set_pins_force_fn(gavini_pins_suspend_force,
				  gavini_pins_suspend_force_mux);
}
void __init ssg_pins_init(void)
{
	nmk_config_pins(codina_common_pins,
		ARRAY_SIZE(codina_common_pins));

	if (system_rev < CODINA_TMO_R0_4){
		nmk_config_pins(codina_r0_0_pins,
			ARRAY_SIZE(codina_r0_0_pins));
	}
	else {
		nmk_config_pins(codina_r0_4_pins,
			ARRAY_SIZE(codina_r0_4_pins));
	}

	ux500_pins_add(codina_r0_0_lookup_pins,
		ARRAY_SIZE(codina_r0_0_lookup_pins));
	gps_pins_init();
	sdmmc_pins_init();
	suspend_set_pins_force_fn(codina_pins_suspend_force,
				  codina_pins_suspend_force_mux);
}
static void __init sdmmc_pins_init(void)
{
	u32 value;
	const void *prcm_gpiocr = __io_address(U8500_PRCMU_BASE) + 0x138;

	if (sec_debug_settings & SEC_DBG_STM_APE_OPT) {

		/* Set GPIO ALT to C3 */
		value = readl(prcm_gpiocr);
		value |= 0x00000200;	/* Set bit 9 */
		writel(value, prcm_gpiocr);

		nmk_config_pins(golden_bringup_ape_trace,
			ARRAY_SIZE(golden_bringup_ape_trace));

		/* also need to ensure VAUX3 turned on (defaults to 2.91V) */
		golden_ab8500_regulators[AB8500_LDO_AUX3].constraints.valid_ops_mask = 0;
		golden_ab8500_regulators[AB8500_LDO_AUX3].constraints.always_on = 1;
		golden_ab8505_regulators[AB9540_LDO_AUX3].constraints.valid_ops_mask = 0;
		golden_ab8505_regulators[AB9540_LDO_AUX3].constraints.always_on = 1;

#ifdef CONFIG_DEBUG_PRINTK
		printk(KERN_INFO "SD Card I/F set for STM APE Trace\n");
#else
		;
#endif

	} else if (sec_debug_settings & SEC_DBG_STM_MODEM_OPT) {

		/* Set GPIO ALT to B */
		value = readl(prcm_gpiocr);
		value &= ~0x00002202; /* For UART_MOD */
		writel(value, prcm_gpiocr);

		nmk_config_pins(golden_bringup_modem_trace,
			ARRAY_SIZE(golden_bringup_modem_trace));

		/* also need to ensure VAUX3 turned on (defaults to 2.91V) */
		golden_ab8500_regulators[AB8500_LDO_AUX3].constraints.valid_ops_mask = 0;
		golden_ab8500_regulators[AB8500_LDO_AUX3].constraints.always_on = 1;
		golden_ab8505_regulators[AB9540_LDO_AUX3].constraints.valid_ops_mask = 0;
		golden_ab8505_regulators[AB9540_LDO_AUX3].constraints.always_on = 1;

#ifdef CONFIG_DEBUG_PRINTK
		printk(KERN_INFO "SD Card I/F set for STM Modem Trace\n");
#else
		;
#endif
	} else if (sec_debug_settings & SEC_DBG_STM_FIDO_OPT) {

		value = readl(prcm_gpiocr);
		value |= 0x00002002;
		writel(value, prcm_gpiocr);

		nmk_config_pins(golden_bringup_fidobox_trace,
			ARRAY_SIZE(golden_bringup_fidobox_trace));

#ifdef CONFIG_DEBUG_PRINTK
		printk(KERN_INFO "XTI I/F set for STM Fidobox Trace\n");
#else
		;
#endif
	} else {
		/* Set GPIO ALT to A */
		value = readl(prcm_gpiocr);
		value &= ~0x00000200; /* clear bit 9 */
		writel(value, prcm_gpiocr);

		ux500_pins_add(golden_bringup_lookup_sdmmc_pins,
			ARRAY_SIZE(golden_bringup_lookup_sdmmc_pins));
	}
}