static void exynos_dwmci0_cfg_gpio(int width)
{
	unsigned int gpio;

	for (gpio = EXYNOS5420_GPC0(0);
			gpio < EXYNOS5420_GPC0(2); gpio++) {
		s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
		s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
		s5p_gpio_set_drvstr(gpio, S5P_GPIO_DRVSTR_LV3);
	}

	switch (width) {
	case 8:
		for (gpio = EXYNOS5420_GPC3(0);
				gpio <= EXYNOS5420_GPC3(3); gpio++) {
			s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
			s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
			s5p_gpio_set_drvstr(gpio, S5P_GPIO_DRVSTR_LV3);
		}
	case 4:
		for (gpio = EXYNOS5420_GPC0(3);
				gpio <= EXYNOS5420_GPC0(6); gpio++) {
			s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
			s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
			s5p_gpio_set_drvstr(gpio, S5P_GPIO_DRVSTR_LV3);
		}
		break;
	case 1:
		gpio = EXYNOS5420_GPC0(3);
		s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
		s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
		s5p_gpio_set_drvstr(gpio, S5P_GPIO_DRVSTR_LV3);
	default:
		break;
	}

	gpio = EXYNOS5420_GPC0(7);
	s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
	s3c_gpio_setpull(gpio, S3C_GPIO_PULL_DOWN);

	/* CDn PIN: Ouput / High */
	gpio = EXYNOS5420_GPC0(2);
	s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(1));
	gpio_set_value(gpio, 1);
}
	.only_once_tune		= true,
	.hclk_name		= "dwmci",
	.cclk_name		= "sclk_dwmci",
	.cfg_gpio		= exynos_dwmci0_cfg_gpio,
	.get_bus_wd		= exynos_dwmci0_get_bus_wd,
	.save_drv_st		= exynos_dwmci_save_drv_st,
	.restore_drv_st		= exynos_dwmci_restore_drv_st,
	.tuning_drv_st		= exynos_dwmci_tuning_drv_st,
	.cd_type		= DW_MCI_CD_PERMANENT,
	.sdr_timing		= 0x03040000,
	.ddr_timing		= 0x03020000,
	.clk_drv		= 0x3,
	.ddr200_timing		= 0x01020002,
	.clk_tbl		= exynos_dwmci_clk_rates_for_cpll,
	.__drv_st		= {
		.pin			= EXYNOS5420_GPC0(0),
		.val			= S5P_GPIO_DRVSTR_LV3,
	},
#if !defined(CONFIG_SUPPORT_WQXGA)
	.qos_int_level		= 111 * 1000,
#else
	.qos_int_level		= 222 * 1000,
#endif
	.extra_tuning           = exynos_dwmci0_extra_tuning,
#if defined(CONFIG_MMC_DW_CMD_LOGGING)
	.dw_mci_cmd_logging	= true,
	.log_count		= ATOMIC_INIT(-1),
#endif
};

static int exynos_dwmci1_get_bus_wd(u32 slot_id)
Ejemplo n.º 3
0
	{ EXYNOS5420_GPB3(2), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_DOWN_ENABLE }, /* NC */
	{ EXYNOS5420_GPB3(3), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_DOWN_ENABLE }, /* NC */
#if defined(CONFIG_V2A)
	{ EXYNOS5420_GPB3(4), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_DOWN_ENABLE }, /* NC */
	{ EXYNOS5420_GPB3(5), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_DOWN_ENABLE }, /* NC */
#else
	{ EXYNOS5420_GPB3(4), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UPDOWN_DISABLE }, /* PEN_SDA_1.8V */
	{ EXYNOS5420_GPB3(5), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UPDOWN_DISABLE }, /* PEN_SCL_1.8V */
#endif
	{ EXYNOS5420_GPB3(6), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UPDOWN_DISABLE }, /* IF_PMIC_SDA */
	{ EXYNOS5420_GPB3(7), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UPDOWN_DISABLE }, /* IF_PMIC_SCL */
    /* GPB 4 */
	{ EXYNOS5420_GPB4(0), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_DOWN_ENABLE }, /* MHL_SDA_1.8V */
	{ EXYNOS5420_GPB4(1), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_DOWN_ENABLE }, /* MHL_SCL_1.8V */
    /* GPC 0 */
	{ EXYNOS5420_GPC0(0), S5P_GPIO_PD_PREV_STATE, S5P_GPIO_PD_UPDOWN_DISABLE }, /* SDC1_CLK */
	{ EXYNOS5420_GPC0(1), S5P_GPIO_PD_PREV_STATE, S5P_GPIO_PD_UPDOWN_DISABLE }, /* SDC1_CMD */
	{ EXYNOS5420_GPC0(2), S5P_GPIO_PD_PREV_STATE, S5P_GPIO_PD_UPDOWN_DISABLE }, /* eMMC_EN */
	{ EXYNOS5420_GPC0(3), S5P_GPIO_PD_PREV_STATE, S5P_GPIO_PD_UPDOWN_DISABLE }, /* NAND_D(0) */
	{ EXYNOS5420_GPC0(4), S5P_GPIO_PD_PREV_STATE, S5P_GPIO_PD_UPDOWN_DISABLE }, /* NAND_D(1) */
	{ EXYNOS5420_GPC0(5), S5P_GPIO_PD_PREV_STATE, S5P_GPIO_PD_UPDOWN_DISABLE }, /* NAND_D(2) */
	{ EXYNOS5420_GPC0(6), S5P_GPIO_PD_PREV_STATE, S5P_GPIO_PD_UPDOWN_DISABLE }, /* NAND_D(3) */
	{ EXYNOS5420_GPC0(7), S5P_GPIO_PD_PREV_STATE, S5P_GPIO_PD_UPDOWN_DISABLE }, /* EMMC_RCLK */
    /* GPC 1 */
	{ EXYNOS5420_GPC1(0), S5P_GPIO_PD_OUTPUT0, S5P_GPIO_PD_UPDOWN_DISABLE },/* WLAN_SDIO_CLK */
	{ EXYNOS5420_GPC1(1), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UPDOWN_DISABLE },	/* WLAN_SDIO_CMD */
	{ EXYNOS5420_GPC1(2), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_DOWN_ENABLE },	/* GPS_EN */
	{ EXYNOS5420_GPC1(3), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UPDOWN_DISABLE },	/* WLAN_SDIO_D(0) */
	{ EXYNOS5420_GPC1(4), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UPDOWN_DISABLE },	/* WLAN_SDIO_D(1) */
	{ EXYNOS5420_GPC1(5), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UPDOWN_DISABLE },	/* WLAN_SDIO_D(2) */
	{ EXYNOS5420_GPC1(6), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UPDOWN_DISABLE },	/* WLAN_SDIO_D(3) */