ARM: tegra: pluto: add support for bcm2079x nfc
Rakesh Goyal [Wed, 19 Dec 2012 02:11:29 +0000 (07:11 +0530)]
wifi don't use GPIO_PX7, this GPIO is used by NFC.
correction in GPIO assignment.

Bug 1190304

Change-Id: Ic9bf654c037715e71bcc916af5d941bec0f6d8c4
Signed-off-by: Rakesh Goyal <rgoyal@nvidia.com>
Reviewed-on: http://git-master/r/172575
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Rakesh Kumar <krakesh@nvidia.com>
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>

arch/arm/mach-tegra/board-pluto-sdhci.c
arch/arm/mach-tegra/board-pluto.c

index ccbde4e..cdf370e 100644 (file)
@@ -36,7 +36,6 @@
 #include "board-pluto.h"
 
 #define PLUTO_WLAN_PWR TEGRA_GPIO_PCC5
-#define PLUTO_WLAN_RST TEGRA_GPIO_PX7
 #define PLUTO_WLAN_WOW TEGRA_GPIO_PU5
 #define PLUTO_SD_CD    TEGRA_GPIO_PV2
 static void (*wifi_status_cb)(int card_present, void *dev_id);
@@ -241,8 +240,6 @@ static int pluto_wifi_power(int on)
        }
        gpio_set_value(PLUTO_WLAN_PWR, on);
        mdelay(100);
-       gpio_set_value(PLUTO_WLAN_RST, on);
-       mdelay(200);
        if (sd_dpd) {
                mutex_lock(&sd_dpd->delay_lock);
                tegra_io_dpd_enable(sd_dpd);
@@ -265,9 +262,6 @@ static int __init pluto_wifi_init(void)
        rc = gpio_request(PLUTO_WLAN_PWR, "wlan_power");
        if (rc)
                pr_err("WLAN_PWR gpio request failed:%d\n", rc);
-       rc = gpio_request(PLUTO_WLAN_RST, "wlan_rst");
-       if (rc)
-               pr_err("WLAN_RST gpio request failed:%d\n", rc);
        rc = gpio_request(PLUTO_WLAN_WOW, "bcmsdh_sdmmc");
        if (rc)
                pr_err("WLAN_WOW gpio request failed:%d\n", rc);
@@ -275,9 +269,6 @@ static int __init pluto_wifi_init(void)
        rc = gpio_direction_output(PLUTO_WLAN_PWR, 0);
        if (rc)
                pr_err("WLAN_PWR gpio direction configuration failed:%d\n", rc);
-       gpio_direction_output(PLUTO_WLAN_RST, 0);
-       if (rc)
-               pr_err("WLAN_RST gpio direction configuration failed:%d\n", rc);
        rc = gpio_direction_input(PLUTO_WLAN_WOW);
        if (rc)
                pr_err("WLAN_WOW gpio direction configuration failed:%d\n", rc);
index ef61a3c..4cd1c64 100644 (file)
@@ -37,6 +37,7 @@
 #include <linux/memblock.h>
 #include <linux/spi-tegra.h>
 #include <linux/nfc/pn544.h>
+#include <linux/nfc/bcm2079x.h>
 #include <linux/rfkill-gpio.h>
 #include <linux/skbuff.h>
 #include <linux/ti_wilink_st.h>
@@ -218,6 +219,19 @@ static __initdata struct tegra_clk_init_table pluto_clk_init_table[] = {
        { NULL,         NULL,           0,              0},
 };
 
+static struct bcm2079x_platform_data nfc_pdata = {
+       .irq_gpio = TEGRA_GPIO_PW2,
+       .en_gpio = TEGRA_GPIO_PU4,
+       .wake_gpio = TEGRA_GPIO_PX7,
+       };
+
+static struct i2c_board_info __initdata pluto_i2c_bus3_board_info[] = {
+       {
+               I2C_BOARD_INFO("bcm2079x-i2c", 0x77),
+               .platform_data = &nfc_pdata,
+       },
+};
+
 static struct tegra_i2c_platform_data pluto_i2c1_platform_data = {
        .adapter_nr     = 0,
        .bus_count      = 1,
@@ -289,6 +303,8 @@ static void pluto_i2c_init(void)
 
        i2c_register_board_info(0, &pluto_codec_a2220_info, 1);
        i2c_register_board_info(0, &cs42l73_board_info, 1);
+       pluto_i2c_bus3_board_info[0].irq = gpio_to_irq(TEGRA_GPIO_PW2);
+       i2c_register_board_info(0, pluto_i2c_bus3_board_info, 1);
 }
 
 static struct platform_device *pluto_uart_devices[] __initdata = {