summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-cardhu-sdhci.c
diff options
context:
space:
mode:
authorRakesh Goyal <rgoyal@nvidia.com>2011-05-04 12:40:58 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:52:15 -0800
commit8c2c29a947d040fc1a7459e642475af8a4727340 (patch)
tree278d68c839e7c2d1aeda597c8b04e97d50b0c0ca /arch/arm/mach-tegra/board-cardhu-sdhci.c
parent87c721771af470f8530a5f2667d03523da209bf2 (diff)
arm: tegra: cardhu: adding support for wifi OOB interrupt
Configuring gpio line for oob interrupts and providing required resources to make oob work. Original-Change-Id: Ia4231870854562f68b6c1486002f2abeba413b04 Reviewed-on: http://git-master/r/30322 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com> Rebase-Id: Rb88413ba6e36b82a9c0df3b959d3e3fb1f82eda7
Diffstat (limited to 'arch/arm/mach-tegra/board-cardhu-sdhci.c')
-rw-r--r--arch/arm/mach-tegra/board-cardhu-sdhci.c31
1 files changed, 25 insertions, 6 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu-sdhci.c b/arch/arm/mach-tegra/board-cardhu-sdhci.c
index f2948a5925ad..eef42defb852 100644
--- a/arch/arm/mach-tegra/board-cardhu-sdhci.c
+++ b/arch/arm/mach-tegra/board-cardhu-sdhci.c
@@ -35,6 +35,7 @@
#define CARDHU_WLAN_PWR TEGRA_GPIO_PD4
#define CARDHU_WLAN_RST TEGRA_GPIO_PD3
+#define CARDHU_WLAN_WOW TEGRA_GPIO_PO4
#define CARDHU_SD_CD TEGRA_GPIO_PI5
#define CARDHU_SD_WP TEGRA_GPIO_PT3
#define PM269_SD_WP -1
@@ -48,15 +49,26 @@ static int cardhu_wifi_power(int on);
static int cardhu_wifi_set_carddetect(int val);
static struct wifi_platform_data cardhu_wifi_control = {
- .set_power = cardhu_wifi_power,
- .set_reset = cardhu_wifi_reset,
- .set_carddetect = cardhu_wifi_set_carddetect,
+ .set_power = cardhu_wifi_power,
+ .set_reset = cardhu_wifi_reset,
+ .set_carddetect = cardhu_wifi_set_carddetect,
+};
+
+static struct resource wifi_resource[] = {
+ [0] = {
+ .name = "bcm4329_wlan_irq",
+ .start = TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PO4),
+ .end = TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PO4),
+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL | IORESOURCE_IRQ_SHAREABLE,
+ },
};
static struct platform_device cardhu_wifi_device = {
- .name = "bcm4329_wlan",
- .id = 1,
- .dev = {
+ .name = "bcm4329_wlan",
+ .id = 1,
+ .num_resources = 1,
+ .resource = wifi_resource,
+ .dev = {
.platform_data = &cardhu_wifi_control,
},
};
@@ -298,9 +310,13 @@ static int __init cardhu_wifi_init(void)
rc = gpio_request(CARDHU_WLAN_RST, "wlan_rst");
if (rc)
pr_err("WLAN_RST gpio request failed:%d\n", rc);
+ rc = gpio_request(CARDHU_WLAN_WOW, "bcmsdh_sdmmc");
+ if (rc)
+ pr_err("WLAN_WOW gpio request failed:%d\n", rc);
tegra_gpio_enable(CARDHU_WLAN_PWR);
tegra_gpio_enable(CARDHU_WLAN_RST);
+ tegra_gpio_enable(CARDHU_WLAN_WOW);
rc = gpio_direction_output(CARDHU_WLAN_PWR, 0);
if (rc)
@@ -308,6 +324,9 @@ static int __init cardhu_wifi_init(void)
gpio_direction_output(CARDHU_WLAN_RST, 0);
if (rc)
pr_err("WLAN_RST gpio direction configuration failed:%d\n", rc);
+ rc = gpio_direction_input(CARDHU_WLAN_WOW);
+ if (rc)
+ pr_err("WLAN_WOW gpio direction configuration failed:%d\n", rc);
platform_device_register(&cardhu_wifi_device);
return 0;