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)
{ 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) */