diff options
author | Ohad Ben-Cohen <ohad@wizery.com> | 2010-09-15 19:32:30 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-09-21 11:05:02 -0400 |
commit | 80b517f362605f2b6a6cfe086604534290aab2de (patch) | |
tree | 6516b7401b28065b187071fab8d60fed22829187 /arch/arm | |
parent | b642fde7f137566c993991fd2e7bf6b8274bf625 (diff) |
omap: zoom: add mmc3/wl1271 device support
Add MMC3 support on ZOOM, which has the wl1271 device hardwired to.
The wl1271 is a 4-wire, 1.8V, embedded SDIO WLAN device with an
external IRQ line, and power-controlled by a GPIO-based fixed regulator.
Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-omap2/board-zoom-peripherals.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/board-zoom-peripherals.c b/arch/arm/mach-omap2/board-zoom-peripherals.c index f5df9a2b1465..6aa0728fa15d 100644 --- a/arch/arm/mach-omap2/board-zoom-peripherals.c +++ b/arch/arm/mach-omap2/board-zoom-peripherals.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/i2c/twl.h> | 17 | #include <linux/i2c/twl.h> |
18 | #include <linux/regulator/machine.h> | 18 | #include <linux/regulator/machine.h> |
19 | #include <linux/regulator/fixed.h> | 19 | #include <linux/regulator/fixed.h> |
20 | #include <linux/wl12xx.h> | ||
20 | 21 | ||
21 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
22 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
@@ -29,6 +30,7 @@ | |||
29 | #include "hsmmc.h" | 30 | #include "hsmmc.h" |
30 | 31 | ||
31 | #define OMAP_ZOOM_WLAN_PMENA_GPIO (101) | 32 | #define OMAP_ZOOM_WLAN_PMENA_GPIO (101) |
33 | #define OMAP_ZOOM_WLAN_IRQ_GPIO (162) | ||
32 | 34 | ||
33 | /* Zoom2 has Qwerty keyboard*/ | 35 | /* Zoom2 has Qwerty keyboard*/ |
34 | static int board_keymap[] = { | 36 | static int board_keymap[] = { |
@@ -185,6 +187,12 @@ static struct platform_device omap_vwlan_device = { | |||
185 | }, | 187 | }, |
186 | }; | 188 | }; |
187 | 189 | ||
190 | struct wl12xx_platform_data omap_zoom_wlan_data __initdata = { | ||
191 | .irq = OMAP_GPIO_IRQ(OMAP_ZOOM_WLAN_IRQ_GPIO), | ||
192 | /* ZOOM ref clock is 26 MHz */ | ||
193 | .board_ref_clock = 1, | ||
194 | }; | ||
195 | |||
188 | static struct omap2_hsmmc_info mmc[] __initdata = { | 196 | static struct omap2_hsmmc_info mmc[] __initdata = { |
189 | { | 197 | { |
190 | .name = "external", | 198 | .name = "external", |
@@ -202,6 +210,14 @@ static struct omap2_hsmmc_info mmc[] __initdata = { | |||
202 | .nonremovable = true, | 210 | .nonremovable = true, |
203 | .power_saving = true, | 211 | .power_saving = true, |
204 | }, | 212 | }, |
213 | { | ||
214 | .name = "wl1271", | ||
215 | .mmc = 3, | ||
216 | .wires = 4, | ||
217 | .gpio_wp = -EINVAL, | ||
218 | .gpio_cd = -EINVAL, | ||
219 | .nonremovable = true, | ||
220 | }, | ||
205 | {} /* Terminator */ | 221 | {} /* Terminator */ |
206 | }; | 222 | }; |
207 | 223 | ||
@@ -313,6 +329,9 @@ static void enable_board_wakeup_source(void) | |||
313 | 329 | ||
314 | void __init zoom_peripherals_init(void) | 330 | void __init zoom_peripherals_init(void) |
315 | { | 331 | { |
332 | if (wl12xx_set_platform_data(&omap_zoom_wlan_data)) | ||
333 | pr_err("error setting wl12xx data\n"); | ||
334 | |||
316 | omap_i2c_init(); | 335 | omap_i2c_init(); |
317 | platform_device_register(&omap_vwlan_device); | 336 | platform_device_register(&omap_vwlan_device); |
318 | usb_musb_init(&musb_board_data); | 337 | usb_musb_init(&musb_board_data); |