]>
Commit | Line | Data |
---|---|---|
d006af40 AF |
1 | From f2e2294733d926e627dcda6425f58611b185c7fc Mon Sep 17 00:00:00 2001 |
2 | From: Robert Nelson <robertcnelson@gmail.com> | |
3 | Date: Tue, 11 Dec 2012 07:02:40 -0600 | |
4 | Subject: [PATCH 10/10] Beagle: expansion: add LSR COM6L Adapter Board | |
5 | ||
6 | Signed-off-by: Robert Nelson <robertcnelson@gmail.com> | |
7 | --- | |
8 | arch/arm/mach-omap2/board-omap3beagle.c | 60 ++++++++++++++++++++++++++++--- | |
9 | 1 file changed, 55 insertions(+), 5 deletions(-) | |
10 | ||
11 | diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c | |
12 | index 0ac1b49..5a7e7b5 100644 | |
13 | --- a/arch/arm/mach-omap2/board-omap3beagle.c | |
14 | +++ b/arch/arm/mach-omap2/board-omap3beagle.c | |
15 | @@ -202,6 +202,7 @@ static void __init omap3_beagle_init_rev(void) | |
16 | char expansionboard_name[16]; | |
17 | char expansionboard2_name[16]; | |
18 | char camera_name[16]; | |
19 | +char wl12xx_name[16]; | |
20 | ||
21 | enum { | |
22 | EXPANSION_MMC_NONE = 0, | |
23 | @@ -237,6 +238,10 @@ struct wl12xx_platform_data omap_beagle_wlan_data __initdata = { | |
24 | .board_ref_clock = WL12XX_REFCLOCK_38, /* 38.4 MHz */ | |
25 | }; | |
26 | ||
27 | +struct wl12xx_platform_data omap_beagle_wlan_data_26mhz __initdata = { | |
28 | + .board_ref_clock = WL12XX_REFCLOCK_26, /* 26 MHz */ | |
29 | +}; | |
30 | + | |
31 | static struct ti_st_plat_data wilink_platform_data = { | |
32 | .nshutdown_gpio = OMAP_BEAGLE_BT_EN_GPIO, | |
33 | .dev_name = "/dev/ttyO1", | |
34 | @@ -987,6 +992,18 @@ static int __init camera_setup(char *str) | |
35 | return 0; | |
36 | } | |
37 | ||
38 | +static int __init wl12xx_setup(char *str) | |
39 | +{ | |
40 | + if (!machine_is_omap3_beagle()) | |
41 | + return 0; | |
42 | + | |
43 | + if (!str) | |
44 | + return -EINVAL; | |
45 | + strncpy(wl12xx_name, str, 16); | |
46 | + pr_info("Beagle wl12xx clk: %s\n", wl12xx_name); | |
47 | + return 0; | |
48 | +} | |
49 | + | |
50 | static int __init beagle_opp_init(void) | |
51 | { | |
52 | int r = 0; | |
53 | @@ -1114,9 +1131,29 @@ static void __init omap3_beagle_init(void) | |
54 | omap_mux_init_gpio(OMAP3BEAGLE_GPIO_ZIPPY_MMC_CD, OMAP_PIN_INPUT); | |
55 | } | |
56 | ||
57 | - if (!strcmp(expansionboard_name, "bbtoys-wifi")) | |
58 | + if ((!strcmp(expansionboard_name, "bbtoys-wifi")) || (!strcmp(expansionboard_name, "lsr-com6l-adpt"))) | |
59 | { | |
60 | #if IS_ENABLED(CONFIG_WL12XX) | |
61 | + pr_info("Beagle expansion: wl12xx: setting up gpio pinmux\n"); | |
62 | + | |
63 | + omap_mux_init_gpio(OMAP_BEAGLE_FM_EN_BT_WU, OMAP_PIN_OUTPUT); | |
64 | + omap_mux_init_gpio(OMAP_BEAGLE_BT_EN_GPIO, OMAP_PIN_OUTPUT); | |
65 | + omap_mux_init_gpio(OMAP_BEAGLE_WLAN_EN_GPIO, OMAP_PIN_OUTPUT); | |
66 | + | |
67 | + omap_mux_init_gpio(OMAP_BEAGLE_WLAN_IRQ_GPIO, OMAP_PIN_INPUT_PULLUP); | |
68 | + | |
69 | + /* WLAN SDIO: MMC2 CLK */ | |
70 | + omap_mux_init_signal("sdmmc2_clk.sdmmc2_clk", OMAP_PIN_INPUT_PULLUP); | |
71 | + | |
72 | + /* WLAN SDIO: MMC2 CMD */ | |
73 | + omap_mux_init_signal("sdmmc2_cmd.sdmmc2_cmd", OMAP_PIN_INPUT_PULLUP); | |
74 | + | |
75 | + /* WLAN SDIO: MMC2 DAT[0-3] */ | |
76 | + omap_mux_init_signal("sdmmc2_dat0.sdmmc2_dat0", OMAP_PIN_INPUT_PULLUP); | |
77 | + omap_mux_init_signal("sdmmc2_dat1.sdmmc2_dat1", OMAP_PIN_INPUT_PULLUP); | |
78 | + omap_mux_init_signal("sdmmc2_dat2.sdmmc2_dat2", OMAP_PIN_INPUT_PULLUP); | |
79 | + omap_mux_init_signal("sdmmc2_dat3.sdmmc2_dat3", OMAP_PIN_INPUT_PULLUP); | |
80 | + | |
81 | expansion_config.mmc_settings = EXPANSION_MMC_WIFI; | |
82 | #endif | |
83 | } | |
84 | @@ -1208,12 +1245,24 @@ static void __init omap3_beagle_init(void) | |
85 | gpio_export(162, 1); | |
86 | } | |
87 | ||
88 | - if (!strcmp(expansionboard_name, "bbtoys-wifi")) | |
89 | + if ((!strcmp(expansionboard_name, "bbtoys-wifi")) || (!strcmp(expansionboard_name, "lsr-com6l-adpt"))) | |
90 | { | |
91 | #if IS_ENABLED(CONFIG_WL12XX) | |
92 | - omap_beagle_wlan_data.irq = gpio_to_irq(OMAP_BEAGLE_WLAN_IRQ_GPIO); | |
93 | - if (wl12xx_set_platform_data(&omap_beagle_wlan_data)) | |
94 | - pr_err("error setting wl12xx data\n"); | |
95 | + pr_info("Beagle expansionboard: initializing wl12xx platform\n"); | |
96 | + | |
97 | + if (!strcmp(wl12xx_name, "wl12xx_26mhz")) { | |
98 | + pr_info("wl12xx: 26Mhz reference clock (TiWi5)\n"); | |
99 | + omap_beagle_wlan_data_26mhz.irq = gpio_to_irq(OMAP_BEAGLE_WLAN_IRQ_GPIO); | |
100 | + if (wl12xx_set_platform_data(&omap_beagle_wlan_data_26mhz)) | |
101 | + pr_err("error setting wl12xx data\n"); | |
102 | + } else { | |
103 | + pr_info("wl12xx: 38.4Mhz reference clock (TiWi2/TiWi-BLE)\n"); | |
104 | + pr_info("wl12xx: for (TiWi5) support pass kernel [wl12xx_clk=wl12xx_26mhz]\n"); | |
105 | + omap_beagle_wlan_data.irq = gpio_to_irq(OMAP_BEAGLE_WLAN_IRQ_GPIO); | |
106 | + if (wl12xx_set_platform_data(&omap_beagle_wlan_data)) | |
107 | + pr_err("error setting wl12xx data\n"); | |
108 | + } | |
109 | + | |
110 | pr_info("Beagle expansionboard: registering wl12xx bt platform device\n"); | |
111 | platform_device_register(&wl12xx_device); | |
112 | platform_device_register(&btwilink_device); | |
113 | @@ -1307,6 +1356,7 @@ static int __init omap3_beagle_late_initcall(void) | |
114 | early_param("buddy", expansionboard_setup); | |
115 | early_param("buddy2", expansionboard2_setup); | |
116 | early_param("camera", camera_setup); | |
117 | +early_param("wl12xx_clk", wl12xx_setup); | |
118 | ||
119 | late_initcall(omap3_beagle_late_initcall); | |
120 | ||
121 | -- | |
122 | 1.7.10.4 | |
123 |