aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/board-omap3evm.c
diff options
context:
space:
mode:
authorEyal Reizer <eyalr@ti.com>2011-01-27 04:49:49 -0500
committerTony Lindgren <tony@atomide.com>2011-02-17 17:07:59 -0500
commit741927f753a41c644840589a382a1d3500f86206 (patch)
tree7d8b66b88c77b6a93afcae24faac1152dcece3dc /arch/arm/mach-omap2/board-omap3evm.c
parentdf7ffd317d36d36095c26bb57b3dd405274048e5 (diff)
omap3evm: add support for the WL12xx WLAN module to the AM/DM3xx Evaluation Module
Adds platform initialization for working with the WLAN module attached to the evaluation module. The patch includes MMC2 initialization, SDIO and control pins muxing and platform device registration Signed-off-by: Eyal Reizer <eyalr@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2/board-omap3evm.c')
-rw-r--r--arch/arm/mach-omap2/board-omap3evm.c78
1 files changed, 78 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
index c2a0fca4aa53..ac50bf949447 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -30,6 +30,8 @@
30#include <linux/usb/otg.h> 30#include <linux/usb/otg.h>
31#include <linux/smsc911x.h> 31#include <linux/smsc911x.h>
32 32
33#include <linux/wl12xx.h>
34#include <linux/regulator/fixed.h>
33#include <linux/regulator/machine.h> 35#include <linux/regulator/machine.h>
34#include <linux/mmc/host.h> 36#include <linux/mmc/host.h>
35 37
@@ -381,6 +383,16 @@ static struct omap2_hsmmc_info mmc[] = {
381 .gpio_cd = -EINVAL, 383 .gpio_cd = -EINVAL,
382 .gpio_wp = 63, 384 .gpio_wp = 63,
383 }, 385 },
386#ifdef CONFIG_WL12XX_PLATFORM_DATA
387 {
388 .name = "wl1271",
389 .mmc = 2,
390 .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD,
391 .gpio_wp = -EINVAL,
392 .gpio_cd = -EINVAL,
393 .nonremovable = true,
394 },
395#endif
384 {} /* Terminator */ 396 {} /* Terminator */
385}; 397};
386 398
@@ -538,6 +550,50 @@ static struct regulator_init_data omap3_evm_vpll2 = {
538 .consumer_supplies = &omap3_evm_vpll2_supply, 550 .consumer_supplies = &omap3_evm_vpll2_supply,
539}; 551};
540 552
553#ifdef CONFIG_WL12XX_PLATFORM_DATA
554
555#define OMAP3EVM_WLAN_PMENA_GPIO (150)
556#define OMAP3EVM_WLAN_IRQ_GPIO (149)
557
558static struct regulator_consumer_supply omap3evm_vmmc2_supply = {
559 .supply = "vmmc",
560 .dev_name = "mmci-omap-hs.1",
561};
562
563/* VMMC2 for driving the WL12xx module */
564static struct regulator_init_data omap3evm_vmmc2 = {
565 .constraints = {
566 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
567 },
568 .num_consumer_supplies = 1,
569 .consumer_supplies = &omap3evm_vmmc2_supply,
570};
571
572static struct fixed_voltage_config omap3evm_vwlan = {
573 .supply_name = "vwl1271",
574 .microvolts = 1800000, /* 1.80V */
575 .gpio = OMAP3EVM_WLAN_PMENA_GPIO,
576 .startup_delay = 70000, /* 70ms */
577 .enable_high = 1,
578 .enabled_at_boot = 0,
579 .init_data = &omap3evm_vmmc2,
580};
581
582static struct platform_device omap3evm_vwlan_device = {
583 .name = "reg-fixed-voltage",
584 .id = 1,
585 .dev = {
586 .platform_data = &omap3evm_vwlan,
587 },
588};
589
590struct wl12xx_platform_data omap3evm_wlan_data __initdata = {
591 .irq = OMAP_GPIO_IRQ(OMAP3EVM_WLAN_IRQ_GPIO),
592 /* ref clock is 38.4 MHz */
593 .board_ref_clock = 2,
594};
595#endif
596
541static struct twl4030_platform_data omap3evm_twldata = { 597static struct twl4030_platform_data omap3evm_twldata = {
542 .irq_base = TWL4030_IRQ_BASE, 598 .irq_base = TWL4030_IRQ_BASE,
543 .irq_end = TWL4030_IRQ_END, 599 .irq_end = TWL4030_IRQ_END,
@@ -657,6 +713,21 @@ static struct omap_board_mux board_mux[] __initdata = {
657 OMAP_PIN_OFF_WAKEUPENABLE), 713 OMAP_PIN_OFF_WAKEUPENABLE),
658 OMAP3_MUX(MCSPI1_CS1, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP | 714 OMAP3_MUX(MCSPI1_CS1, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP |
659 OMAP_PIN_OFF_INPUT_PULLUP | OMAP_PIN_OFF_OUTPUT_LOW), 715 OMAP_PIN_OFF_INPUT_PULLUP | OMAP_PIN_OFF_OUTPUT_LOW),
716#ifdef CONFIG_WL12XX_PLATFORM_DATA
717 /* WLAN IRQ - GPIO 149 */
718 OMAP3_MUX(UART1_RTS, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP),
719
720 /* WLAN POWER ENABLE - GPIO 150 */
721 OMAP3_MUX(UART1_CTS, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
722
723 /* MMC2 SDIO pin muxes for WL12xx */
724 OMAP3_MUX(SDMMC2_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
725 OMAP3_MUX(SDMMC2_CMD, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
726 OMAP3_MUX(SDMMC2_DAT0, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
727 OMAP3_MUX(SDMMC2_DAT1, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
728 OMAP3_MUX(SDMMC2_DAT2, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
729 OMAP3_MUX(SDMMC2_DAT3, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
730#endif
660 { .reg_offset = OMAP_MUX_TERMINATOR }, 731 { .reg_offset = OMAP_MUX_TERMINATOR },
661}; 732};
662#endif 733#endif
@@ -714,6 +785,13 @@ static void __init omap3_evm_init(void)
714 ads7846_dev_init(); 785 ads7846_dev_init();
715 omap3evm_init_smsc911x(); 786 omap3evm_init_smsc911x();
716 omap3_evm_display_init(); 787 omap3_evm_display_init();
788
789#ifdef CONFIG_WL12XX_PLATFORM_DATA
790 /* WL12xx WLAN Init */
791 if (wl12xx_set_platform_data(&omap3evm_wlan_data))
792 pr_err("error setting wl12xx data\n");
793 platform_device_register(&omap3evm_vwlan_device);
794#endif
717} 795}
718 796
719MACHINE_START(OMAP3EVM, "OMAP3 EVM") 797MACHINE_START(OMAP3EVM, "OMAP3 EVM")