diff options
author | Rakesh Goyal <rgoyal@nvidia.com> | 2011-05-04 12:40:58 +0530 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:52:15 -0800 |
commit | 8c2c29a947d040fc1a7459e642475af8a4727340 (patch) | |
tree | 278d68c839e7c2d1aeda597c8b04e97d50b0c0ca /arch/arm/mach-tegra/board-cardhu-sdhci.c | |
parent | 87c721771af470f8530a5f2667d03523da209bf2 (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.c | 31 |
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; |