summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-cardhu-sdhci.c
diff options
context:
space:
mode:
authorPavan Kunapuli <pkunapuli@nvidia.com>2011-09-14 14:20:06 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:52:27 -0800
commit3e088981e1281ad5a458a2f7647eddd4e7ca0c8e (patch)
tree084e25a19691e77de82ee560ff90c3b2dbfaf6b1 /arch/arm/mach-tegra/board-cardhu-sdhci.c
parent42883cffcba4eed357115a0d61ea469c647177ed (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.c105
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;
}