diff options
author | Pavan Kunapuli <pkunapuli@nvidia.com> | 2011-09-14 14:20:06 +0530 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:52:27 -0800 |
commit | 3e088981e1281ad5a458a2f7647eddd4e7ca0c8e (patch) | |
tree | 084e25a19691e77de82ee560ff90c3b2dbfaf6b1 /arch/arm/mach-tegra/board-cardhu-sdhci.c | |
parent | 42883cffcba4eed357115a0d61ea469c647177ed (diff) |
Arm: Tegra: Cardhu: Enable external SD support
Register tegra_sdhci_device0 which is used for external
sd card. Pass the card detect and write protect gpios
through platform data. Set built_in flag for eMMC and
SDIO.
Bug 873188
Bug 871369
Change-Id: I7b1721400a7b82e5331f2db07b7eed71c1292413
Reviewed-on: http://git-master/r/52277
Reviewed-by: Pavan Kunapuli <pkunapuli@nvidia.com>
Tested-by: Pavan Kunapuli <pkunapuli@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Reviewed-by: Naveen Kumar Arepalli <naveenk@nvidia.com>
Tested-by: Naveen Kumar Arepalli <naveenk@nvidia.com>
Rebase-Id: Rf63d83f6289b657631ff05a60d21b0587d33d594
Diffstat (limited to 'arch/arm/mach-tegra/board-cardhu-sdhci.c')
-rw-r--r-- | arch/arm/mach-tegra/board-cardhu-sdhci.c | 105 |
1 files changed, 6 insertions, 99 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu-sdhci.c b/arch/arm/mach-tegra/board-cardhu-sdhci.c index 5680cc13e980..131e738d7133 100644 --- a/arch/arm/mach-tegra/board-cardhu-sdhci.c +++ b/arch/arm/mach-tegra/board-cardhu-sdhci.c @@ -131,6 +131,7 @@ static struct tegra_sdhci_platform_data tegra_sdhci_platform_data2 = { .mmc_data = { .register_status_notify = cardhu_wifi_status_register, .embedded_sdio = &embedded_sdio_data2, + .built_in = 1, }, .cd_gpio = -1, .wp_gpio = -1, @@ -146,8 +147,8 @@ static struct tegra_sdhci_platform_data tegra_sdhci_platform_data2 = { }; static struct tegra_sdhci_platform_data tegra_sdhci_platform_data0 = { - .cd_gpio = -1, - .wp_gpio = -1, + .cd_gpio = CARDHU_SD_CD, + .wp_gpio = CARDHU_SD_WP, .power_gpio = -1, /* .tap_delay = 6, .is_voltage_switch_supported = true, @@ -164,6 +165,9 @@ static struct tegra_sdhci_platform_data tegra_sdhci_platform_data3 = { .wp_gpio = -1, .power_gpio = -1, .is_8bit = 1, + .mmc_data = { + .built_in = 1, + } /* .tap_delay = 6, .is_voltage_switch_supported = false, .vdd_rail_name = NULL, @@ -204,69 +208,6 @@ static struct platform_device tegra_sdhci_device3 = { }, }; -static int cardhu_sd_cd_gpio_init(void) -{ - unsigned int rc = 0; - - rc = gpio_request(CARDHU_SD_CD, "card_detect"); - if (rc) { - pr_err("Card detect gpio request failed:%d\n", rc); - return rc; - } - - tegra_gpio_enable(CARDHU_SD_CD); - - rc = gpio_direction_input(CARDHU_SD_CD); - if (rc) { - pr_err("Unable to configure direction for card detect gpio:%d\n", rc); - return rc; - } - - return 0; -} - -static int cardhu_sd_wp_gpio_init(void) -{ - unsigned int rc = 0; - - rc = gpio_request(CARDHU_SD_WP, "write_protect"); - if (rc) { - pr_err("Write protect gpio request failed:%d\n", rc); - return rc; - } - - tegra_gpio_enable(CARDHU_SD_WP); - - rc = gpio_direction_input(CARDHU_SD_WP); - if (rc) { - pr_err("Unable to configure direction for write protect gpio:%d\n", rc); - return rc; - } - - return 0; -} - -static int pm269_sd_wp_gpio_init(void) -{ - unsigned int rc = 0; - - rc = gpio_request(PM269_SD_WP, "write_protect"); - if (rc) { - pr_err("Write protect gpio request failed:%d\n", rc); - return rc; - } - - tegra_gpio_enable(PM269_SD_WP); - - rc = gpio_direction_input(PM269_SD_WP); - if (rc) { - pr_err("Unable to configure direction for write protect gpio:%d\n", rc); - return rc; - } - - return 0; -} - static int cardhu_wifi_status_register( void (*callback)(int card_present, void *dev_id), void *dev_id) @@ -339,53 +280,19 @@ static int __init cardhu_wifi_init(void) int __init cardhu_sdhci_init(void) { -#if 0 - unsigned int rc = 0; struct board_info board_info; tegra_get_board_info(&board_info); if ((board_info.board_id == BOARD_PM269) || (board_info.board_id == BOARD_E1257) || (board_info.board_id == BOARD_PM305) || (board_info.board_id == BOARD_PM311)) { - tegra_sdhci_platform_data2.max_clk = 12000000; - rc = pm269_sd_wp_gpio_init(); - if (!rc) { tegra_sdhci_platform_data0.wp_gpio = PM269_SD_WP; - tegra_sdhci_platform_data0.wp_gpio_polarity = 1; - } - } else { - tegra_sdhci_platform_data2.max_clk = 48000000; - rc = cardhu_sd_wp_gpio_init(); - if (!rc) { - tegra_sdhci_platform_data0.wp_gpio = CARDHU_SD_WP; - tegra_sdhci_platform_data0.wp_gpio_polarity = 1; - } } -#endif platform_device_register(&tegra_sdhci_device3); platform_device_register(&tegra_sdhci_device2); - -#if 0 - platform_device_register(&tegra_sdhci_device2); - - /* Fix ME: The gpios have to enabled for hot plug support */ - rc = cardhu_sd_cd_gpio_init(); - if (!rc) { - tegra_sdhci_platform_data0.cd_gpio = CARDHU_SD_CD; - tegra_sdhci_platform_data0.cd_gpio_polarity = 0; - } - platform_device_register(&tegra_sdhci_device0); -#else - (void)tegra_sdhci_device0; - (void)tegra_sdhci_device2; - (void)cardhu_sd_cd_gpio_init; - (void)cardhu_sd_wp_gpio_init; - (void)pm269_sd_wp_gpio_init; -#endif - cardhu_wifi_init(); return 0; } |