diff options
author | Mursalin Akon <makon@nvidia.com> | 2012-03-16 11:38:20 -0700 |
---|---|---|
committer | Rohan Somvanshi <rsomvanshi@nvidia.com> | 2012-04-16 03:19:52 -0700 |
commit | e4b1676171cd3d6e14b55f2404c794b55975a327 (patch) | |
tree | be1bbdeb863815a2d9e597bae800d312bd8f774d | |
parent | 7d23fc1970979f5f51baef3fc890e0618ad45e8f (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/Kconfig | 6 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-cardhu-sdhci.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-enterprise-sdhci.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-harmony.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-kai-sdhci.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-ventana-sdhci.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-whistler-sdhci.c | 14 |
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"); |