summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMursalin Akon <makon@nvidia.com>2012-03-16 11:38:20 -0700
committerRohan Somvanshi <rsomvanshi@nvidia.com>2012-04-16 03:19:52 -0700
commite4b1676171cd3d6e14b55f2404c794b55975a327 (patch)
treebe1bbdeb863815a2d9e597bae800d312bd8f774d
parent7d23fc1970979f5f51baef3fc890e0618ad45e8f (diff)
arm:tegra[3]: power up wifi chip at boot
power up WiFi chip, if Kconfig option TEGRA_PREPOWER_WIFI is turned on. Bug 956238 Change-Id: I26ef92fee30f8d18a47c3968b9b01b97e52a9382 Signed-off-by: Mursalin Akon <makon@nvidia.com> Reviewed-on: http://git-master/r/90671 Reviewed-by: Rohan Somvanshi <rsomvanshi@nvidia.com> Tested-by: Rohan Somvanshi <rsomvanshi@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/Kconfig6
-rw-r--r--arch/arm/mach-tegra/board-cardhu-sdhci.c14
-rw-r--r--arch/arm/mach-tegra/board-enterprise-sdhci.c14
-rw-r--r--arch/arm/mach-tegra/board-harmony.c6
-rw-r--r--arch/arm/mach-tegra/board-kai-sdhci.c14
-rw-r--r--arch/arm/mach-tegra/board-ventana-sdhci.c14
-rw-r--r--arch/arm/mach-tegra/board-whistler-sdhci.c14
7 files changed, 80 insertions, 2 deletions
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
index 9d5e5f01ec29..c0bf9340483e 100644
--- a/arch/arm/mach-tegra/Kconfig
+++ b/arch/arm/mach-tegra/Kconfig
@@ -486,4 +486,10 @@ config TEGRA_PREINIT_CLOCKS
help
Preinitialize Tegra clocks to known states before actual full-
scale clock initialization starts.
+
+config TEGRA_PREPOWER_WIFI
+ bool "Pre-power up WiFi "
+ default n
+ help
+ Pre-power up the on board WiFi chip
endif
diff --git a/arch/arm/mach-tegra/board-cardhu-sdhci.c b/arch/arm/mach-tegra/board-cardhu-sdhci.c
index b1ca3debfc2c..1dfe4eed2a83 100644
--- a/arch/arm/mach-tegra/board-cardhu-sdhci.c
+++ b/arch/arm/mach-tegra/board-cardhu-sdhci.c
@@ -286,6 +286,20 @@ static int __init cardhu_wifi_init(void)
return 0;
}
+#ifdef TEGRA_PREPOWER_WIFI
+static int __init cardhu_wifi_prepower(void)
+{
+ if (!machine_is_cardhu())
+ return 0;
+
+ cardhu_wifi_power(1);
+
+ return 0;
+}
+
+subsys_initcall_sync(cardhu_wifi_prepower);
+#endif
+
int __init cardhu_sdhci_init(void)
{
struct board_info board_info;
diff --git a/arch/arm/mach-tegra/board-enterprise-sdhci.c b/arch/arm/mach-tegra/board-enterprise-sdhci.c
index 6455cdb12997..e7c2c5783998 100644
--- a/arch/arm/mach-tegra/board-enterprise-sdhci.c
+++ b/arch/arm/mach-tegra/board-enterprise-sdhci.c
@@ -230,6 +230,20 @@ static int enterprise_wifi_reset(int on)
return 0;
}
+#ifdef TEGRA_PREPOWER_WIFI
+static int __init enterprise_wifi_prepower(void)
+{
+ if (!machine_is_enterprise())
+ return 0;
+
+ enterprise_wifi_power(1);
+
+ return 0;
+}
+
+subsys_initcall_sync(enterprise_wifi_prepower);
+#endif
+
static int __init enterprise_wifi_init(void)
{
int rc;
diff --git a/arch/arm/mach-tegra/board-harmony.c b/arch/arm/mach-tegra/board-harmony.c
index 86e9615f785a..4c18a0663b44 100644
--- a/arch/arm/mach-tegra/board-harmony.c
+++ b/arch/arm/mach-tegra/board-harmony.c
@@ -425,7 +425,8 @@ static struct tegra_sdhci_platform_data sdhci_pdata4 = {
.is_8bit = 1,
};
-static int __init harmony_wifi_init(void)
+#ifdef TEGRA_PREPOWER_WIFI
+static int __init harmony_wifi_prepower(void)
{
int gpio_pwr, gpio_rst;
@@ -458,7 +459,8 @@ static int __init harmony_wifi_init(void)
* supply of external PMU and 1.2V regulator) are properly enabled,
* and mmc driver has not yet probed for a device on SDIO bus.
*/
-subsys_initcall_sync(harmony_wifi_init);
+subsys_initcall_sync(harmony_wifi_prepower);
+#endif
static void __init tegra_harmony_init(void)
{
diff --git a/arch/arm/mach-tegra/board-kai-sdhci.c b/arch/arm/mach-tegra/board-kai-sdhci.c
index 9c857a7798a6..18a702336425 100644
--- a/arch/arm/mach-tegra/board-kai-sdhci.c
+++ b/arch/arm/mach-tegra/board-kai-sdhci.c
@@ -234,6 +234,20 @@ static int kai_wifi_power(int power_on)
return 0;
}
+#ifdef TEGRA_PREPOWER_WIFI
+static int __init kai_wifi_prepower(void)
+{
+ if (!machine_is_kai())
+ return 0;
+
+ kai_wifi_power(1);
+
+ return 0;
+}
+
+subsys_initcall_sync(kai_wifi_prepower);
+#endif
+
static int __init kai_wifi_init(void)
{
int rc;
diff --git a/arch/arm/mach-tegra/board-ventana-sdhci.c b/arch/arm/mach-tegra/board-ventana-sdhci.c
index 81bbdc6bbdc0..1e3374ec7c34 100644
--- a/arch/arm/mach-tegra/board-ventana-sdhci.c
+++ b/arch/arm/mach-tegra/board-ventana-sdhci.c
@@ -231,6 +231,20 @@ static int ventana_wifi_reset(int on)
return 0;
}
+#ifdef TEGRA_PREPOWER_WIFI
+static int __init ventana_wifi_prepower(void)
+{
+ if (!machine_is_ventana())
+ return 0;
+
+ ventana_wifi_power(1);
+
+ return 0;
+}
+
+subsys_initcall_sync(ventana_wifi_prepower);
+#endif
+
static int __init ventana_wifi_init(void)
{
wifi_32k_clk = clk_get_sys(NULL, "blink");
diff --git a/arch/arm/mach-tegra/board-whistler-sdhci.c b/arch/arm/mach-tegra/board-whistler-sdhci.c
index ebd292a6d168..e3e2fc2000f8 100644
--- a/arch/arm/mach-tegra/board-whistler-sdhci.c
+++ b/arch/arm/mach-tegra/board-whistler-sdhci.c
@@ -223,6 +223,20 @@ static struct platform_device tegra_sdhci_device3 = {
},
};
+#ifdef TEGRA_PREPOWER_WIFI
+static int __init whistler_wifi_prepower(void)
+{
+ if (!machine_is_whistler())
+ return 0;
+
+ whistler_wifi_power(1);
+
+ return 0;
+}
+
+subsys_initcall_sync(whistler_wifi_prepower);
+#endif
+
static int __init whistler_wifi_init(void)
{
gpio_request(WHISTLER_WLAN_PWR, "wlan_power");