From 412f8560ef600b531b0668bda45c926a1ceaed88 Mon Sep 17 00:00:00 2001
From: Colin Cross <ccross@android.com>
Date: Fri, 9 Apr 2010 14:38:44 -0700
Subject: [PATCH] [ARM] tegra: olympus: Enable all SD busses

Change-Id: Ic747f83a4eb84a04f7439f520a815fbe1f6ae50d
Signed-off-by: Colin Cross <ccross@android.com>
---
 arch/arm/mach-tegra/board-olympus-pinmux.c | 12 ++--
 arch/arm/mach-tegra/board-olympus-sdhci.c  | 64 ++++++----------------
 2 files changed, 23 insertions(+), 53 deletions(-)

diff --git a/arch/arm/mach-tegra/board-olympus-pinmux.c b/arch/arm/mach-tegra/board-olympus-pinmux.c
index 13698821b0d2..893b0d3f2cde 100644
--- a/arch/arm/mach-tegra/board-olympus-pinmux.c
+++ b/arch/arm/mach-tegra/board-olympus-pinmux.c
@@ -34,10 +34,10 @@ static struct tegra_pingroup_config olympus_pinmux[] = {
 	{TEGRA_PINGROUP_DAP3,  TEGRA_MUX_DAP3,          TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
 	{TEGRA_PINGROUP_DAP4,  TEGRA_MUX_DAP4,          TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
 	{TEGRA_PINGROUP_DDC,   TEGRA_MUX_I2C2,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DTA,   TEGRA_MUX_SDIO2,         TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
+	{TEGRA_PINGROUP_DTA,   TEGRA_MUX_SDIO2,         TEGRA_TRI_NORMAL,     TEGRA_TRI_NORMAL},
 	{TEGRA_PINGROUP_DTB,   TEGRA_MUX_RSVD1,         TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
 	{TEGRA_PINGROUP_DTC,   TEGRA_MUX_RSVD1,         TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DTD,   TEGRA_MUX_SDIO2,         TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
+	{TEGRA_PINGROUP_DTD,   TEGRA_MUX_SDIO2,         TEGRA_TRI_NORMAL,     TEGRA_TRI_NORMAL},
 	{TEGRA_PINGROUP_DTE,   TEGRA_MUX_RSVD1,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
 	{TEGRA_PINGROUP_DTF,   TEGRA_MUX_I2C3,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
 	{TEGRA_PINGROUP_GMA,   TEGRA_MUX_SDIO4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
@@ -102,10 +102,10 @@ static struct tegra_pingroup_config olympus_pinmux[] = {
 	{TEGRA_PINGROUP_PMC,   TEGRA_MUX_PWR_ON,        TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
 	{TEGRA_PINGROUP_PTA,   TEGRA_MUX_RSVD4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
 	{TEGRA_PINGROUP_RM,    TEGRA_MUX_I2C,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SDB,   TEGRA_MUX_SDIO3,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SDC,   TEGRA_MUX_SDIO3,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SDD,   TEGRA_MUX_SDIO3,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SDIO1, TEGRA_MUX_SDIO1,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
+	{TEGRA_PINGROUP_SDB,   TEGRA_MUX_SDIO3,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
+	{TEGRA_PINGROUP_SDC,   TEGRA_MUX_SDIO3,         TEGRA_TRI_NORMAL,     TEGRA_TRI_NORMAL},
+	{TEGRA_PINGROUP_SDD,   TEGRA_MUX_SDIO3,         TEGRA_TRI_NORMAL,     TEGRA_TRI_NORMAL},
+	{TEGRA_PINGROUP_SDIO1, TEGRA_MUX_SDIO1,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
 	{TEGRA_PINGROUP_SLXA,  TEGRA_MUX_PCIE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
 	{TEGRA_PINGROUP_SLXC,  TEGRA_MUX_SPI4,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
 	{TEGRA_PINGROUP_SLXD,  TEGRA_MUX_SPI4,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
diff --git a/arch/arm/mach-tegra/board-olympus-sdhci.c b/arch/arm/mach-tegra/board-olympus-sdhci.c
index d194cfc8fe80..2dbe68e2ee09 100644
--- a/arch/arm/mach-tegra/board-olympus-sdhci.c
+++ b/arch/arm/mach-tegra/board-olympus-sdhci.c
@@ -26,7 +26,7 @@
 
 #include "gpio-names.h"
 
-/*static struct resource sdhci_resource1[] = {
+static struct resource sdhci_resource1[] = {
 	[0] = {
 		.start  = INT_SDMMC1,
 		.end    = INT_SDMMC1,
@@ -37,9 +37,9 @@
 		.end	= TEGRA_SDMMC1_BASE + TEGRA_SDMMC1_SIZE-1,
 		.flags	= IORESOURCE_MEM,
 	},
-};*/
+};
 
-/*static struct resource sdhci_resource2[] = {
+static struct resource sdhci_resource2[] = {
 	[0] = {
 		.start  = INT_SDMMC2,
 		.end    = INT_SDMMC2,
@@ -50,7 +50,7 @@
 		.end	= TEGRA_SDMMC2_BASE + TEGRA_SDMMC2_SIZE-1,
 		.flags	= IORESOURCE_MEM,
 	},
-};*/
+};
 
 static struct resource sdhci_resource3[] = {
 	[0] = {
@@ -78,18 +78,18 @@ static struct resource sdhci_resource4[] = {
 	},
 };
 
-/*static struct tegra_sdhci_platform_data tegra_sdhci_platform_data1 = {
+static struct tegra_sdhci_platform_data tegra_sdhci_platform_data1 = {
 	.clk_id = NULL,
 	.force_hs = 0,
-};*/
-
-/*static struct tegra_sdhci_platform_data tegra_sdhci_platform_data2 = {
-	.clk_id = NULL,
-	.force_hs = 1,
 	.cd_gpio = TEGRA_GPIO_PI5,
 	.wp_gpio = TEGRA_GPIO_PH1,
 	.power_gpio = TEGRA_GPIO_PT3,
-};*/
+};
+
+static struct tegra_sdhci_platform_data tegra_sdhci_platform_data2 = {
+	.clk_id = NULL,
+	.force_hs = 0,
+};
 
 static struct tegra_sdhci_platform_data tegra_sdhci_platform_data3 = {
 	.clk_id = NULL,
@@ -99,12 +99,9 @@ static struct tegra_sdhci_platform_data tegra_sdhci_platform_data3 = {
 static struct tegra_sdhci_platform_data tegra_sdhci_platform_data4 = {
 	.clk_id = NULL,
 	.force_hs = 0,
-	.cd_gpio = TEGRA_GPIO_PH2,
-	.wp_gpio = TEGRA_GPIO_PH3,
-	.power_gpio = TEGRA_GPIO_PI6,
 };
 
-/*static struct platform_device tegra_sdhci_device1 = {
+static struct platform_device tegra_sdhci_device1 = {
 	.name		= "sdhci-tegra",
 	.id		= 0,
 	.resource	= sdhci_resource1,
@@ -112,9 +109,9 @@ static struct tegra_sdhci_platform_data tegra_sdhci_platform_data4 = {
 	.dev = {
 		.platform_data = &tegra_sdhci_platform_data1,
 	},
-};*/
+};
 
-/*static struct platform_device tegra_sdhci_device2 = {
+static struct platform_device tegra_sdhci_device2 = {
 	.name		= "sdhci-tegra",
 	.id		= 1,
 	.resource	= sdhci_resource2,
@@ -122,7 +119,7 @@ static struct tegra_sdhci_platform_data tegra_sdhci_platform_data4 = {
 	.dev = {
 		.platform_data = &tegra_sdhci_platform_data2,
 	},
-};*/
+};
 
 static struct platform_device tegra_sdhci_device3 = {
 	.name		= "sdhci-tegra",
@@ -151,35 +148,8 @@ static int __init olympus_init_sdhci(void)
 	if (!machine_is_olympus())
 		return 0;
 
-	tegra_pinmux_set_tristate(TEGRA_PINGROUP_SDB, TEGRA_TRI_NORMAL);
-	tegra_pinmux_set_tristate(TEGRA_PINGROUP_SDC, TEGRA_TRI_NORMAL);
-	tegra_pinmux_set_tristate(TEGRA_PINGROUP_SDD, TEGRA_TRI_NORMAL);
-
-	tegra_pinmux_set_tristate(TEGRA_PINGROUP_ATB, TEGRA_TRI_NORMAL);
-	tegra_pinmux_set_tristate(TEGRA_PINGROUP_GMA, TEGRA_TRI_NORMAL);
-	tegra_pinmux_set_tristate(TEGRA_PINGROUP_GME, TEGRA_TRI_NORMAL);
-
-	/*gpio_request(tegra_sdhci_platform_data2.power_gpio, "sdhci2_power");
-	gpio_request(tegra_sdhci_platform_data2.cd_gpio, "sdhci2_cd");
-	gpio_request(tegra_sdhci_platform_data2.wp_gpio, "sdhci2_wp");
-
-	tegra_gpio_enable(tegra_sdhci_platform_data2.power_gpio);
-	tegra_gpio_enable(tegra_sdhci_platform_data2.cd_gpio);
-	tegra_gpio_enable(tegra_sdhci_platform_data2.wp_gpio);
-
-	gpio_request(tegra_sdhci_platform_data4.power_gpio, "sdhci4_power");
-	gpio_request(tegra_sdhci_platform_data4.cd_gpio, "sdhci4_cd");
-	gpio_request(tegra_sdhci_platform_data4.wp_gpio, "sdhci4_wp");
-
-	tegra_gpio_enable(tegra_sdhci_platform_data4.power_gpio);
-	tegra_gpio_enable(tegra_sdhci_platform_data4.cd_gpio);
-	tegra_gpio_enable(tegra_sdhci_platform_data4.wp_gpio);
-
-	gpio_direction_output(tegra_sdhci_platform_data2.power_gpio, 1);
-	gpio_direction_output(tegra_sdhci_platform_data4.power_gpio, 1);*/
-
-	/*ret = platform_device_register(&tegra_sdhci_device1);*/
-	/*ret = platform_device_register(&tegra_sdhci_device2);*/
+	ret = platform_device_register(&tegra_sdhci_device1);
+	ret = platform_device_register(&tegra_sdhci_device2);
 	ret = platform_device_register(&tegra_sdhci_device3);
 	ret = platform_device_register(&tegra_sdhci_device4);
 	if (ret != 0)
-- 
2.34.1