[RFC: WL1271 DC supprot on OMAP3EVM 2/5] ARM: Supported for Standard SDIO driver on OMAP3EVM for WL1271 DC

csanjay-EvXpCiN+lbve9wHmmfpqLFaTQe2KTcn/
2010-10-13T10:57:16Z

From: Sanjay Kumar Champati <csanjay-EvXpCiN+lbve9wHmmfpqLFaTQe2KTcn/@public.gmane.org>

* Apply MMC2 support patch before apply this patch
* Modified the "Kconfig" and "board-omap3evm.c" files to support
standard SDIO driver for WL1271 DC

Signed-off-by: Sanjay Kumar Champati <csanjay-EvXpCiN+lbve9wHmmfpqLFaTQe2KTcn/@public.gmane.org>
---
arch/arm/mach-omap2/board-omap3evm.c | 13 ++++++++++++-
drivers/mmc/core/sdio_ops.c | 7 ++++++-
drivers/net/wireless/Kconfig | 11 +++++++++++
3 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
index 6b45b6e..06fab2e 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -79,6 +79,10 @@
#define OMAP3EVM_ETHR_ID_REV 0x50
#define OMAP3EVM_ETHR_GPIO_IRQ 176
#define OMAP3EVM_SMSC911X_CS 5
+#ifdef CONFIG_WL1271_WLAN
+#define OMAP3EVM_WLAN_EN 150
+#define OMAP3EVM_WLAN_IRQ 149
+#endif

extern struct regulator_consumer_supply twl4030_vmmc1_supply;
extern struct regulator_consumer_supply twl4030_vsim_supply;
@@ -749,7 +753,14 @@ static int omap3evm_twl_gpio_setup(struct device *dev,
twl4030_vmmc1_supply.dev = mmc[0].dev;
twl4030_vsim_supply.dev = mmc[0].dev;
twl4030_vmmc2_supply.dev = mmc[1].dev;
-
+#ifdef CONFIG_WL1271_WLAN
+ omap_mux_init_gpio(OMAP3EVM_WLAN_EN, OMAP_PIN_OUTPUT);
+ if (gpio_request(OMAP3EVM_WLAN_EN, "WLAN_ENABLE"))
+ printk(KERN_ERR "Fail to get WLAN Enable GPIO\n");
+ gpio_direction_output(OMAP3EVM_WLAN_EN, 1);
+ mdelay(100);
+ omap_mux_init_gpio(OMAP3EVM_WLAN_IRQ, OMAP_PIN_INPUT);
+#endif
/*
* Most GPIOs are for USB OTG. Some are mostly sent to
* the P2 connector; notably LEDA for the LCD backlight.
diff --git a/drivers/mmc/core/sdio_ops.c b/drivers/mmc/core/sdio_ops.c
index 4eb7825..4213ee0 100644
--- a/drivers/mmc/core/sdio_ops.c
+++ b/drivers/mmc/core/sdio_ops.c
@@ -114,6 +114,9 @@ int mmc_io_rw_direct(struct mmc_card *card, int write, unsigned fn,

return 0;
}
+#ifdef CONFIG_WL1271_WLAN
+EXPORT_SYMBOL(mmc_io_rw_direct);
+#endif

int mmc_io_rw_extended(struct mmc_card *card, int write, unsigned fn,
unsigned addr, int incr_addr, u8 *buf, unsigned blocks, unsigned blksz)
@@ -181,4 +184,6 @@ int mmc_io_rw_extended(struct mmc_card *card, int write, unsigned fn,

return 0;
}
-
+#ifdef CONFIG_WL1271_WLAN
+EXPORT_SYMBOL(mmc_io_rw_extended);
+#endif
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
index 56dd665..dc319b7 100644
--- a/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -31,6 +31,17 @@ config PCMCIA_RAYCS
To compile this driver as a module, choose M here: the module will be
called ray_cs. If unsure, say N.

+config WL1271_WLAN
+ tristate "WL1271 TI's SDIO based wireless card"
+ select WIRELESS_EXT
+ select CRYPTO
+ select WEXT_SPY
+ select WEXT_PRIV
+ ---help---
+ This driver support both the standard Linux Wireless Extensions
+ and TI's proprietary API, so both the Linux Wireless Tools and this
+ module support 2.4 GHz 802.11 b/g/n standrd.
+
config LIBERTAS_THINFIRM
tristate "Marvell 8xxx Libertas WLAN driver support with thin firmware"
depends on MAC80211