diff options
author | Tony Lindgren <tony@atomide.com> | 2013-05-30 15:53:05 -0400 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2013-05-30 16:09:31 -0400 |
commit | b42b918194c4791510ac049e3d507169a7de8544 (patch) | |
tree | 19573b8308a1c3b6b9e965c7eb94b70160f5f207 /arch | |
parent | 76787b3bd2550613ab688842b231e8f82c451cee (diff) |
ARM: OMAP2+: Remove board-omap4panda.c
We can now boot with device tree. If you don't want to update u-boot,
you can boot with appended DTB with the following instructions:
1. Make sure you have the appended DTB support in .config
CONFIG_ARM_APPENDED_DTB=y
CONFIG_ARM_ATAG_DTB_COMPAT=y
CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND=y
2. Build the zImage
$ ARCH=arm CROSS_COMPILE=... make zImage
3. Build the device tree blobs
$ ARCH=arm CROSS_COMPILE=... make dtbs
4. Append the correct panda dtb to zImage
Depending on your hardware it's omap4-panda.dtb, omap4-panda-a4.dtb
or omap4-panda-es.dtb.
$ cat arch/arm/boot/zImage arch/arm/boot/dts/omap4-panda-es.dtb > /tmp/appended
5. Use mkimage to produce the appended device tree uImage
$ mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 \
-n "Linux" -d /tmp/appended /tmp/uImage
Signed-off-by: Tony Lindgren <tony@atomide.com
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-omap2/Kconfig | 8 | ||||
-rw-r--r-- | arch/arm/mach-omap2/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-omap4panda.c | 455 |
3 files changed, 0 insertions, 464 deletions
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index 465edd10e0aa..1f941c48b3b8 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
@@ -378,14 +378,6 @@ config MACH_TI8148EVM | |||
378 | depends on SOC_TI81XX | 378 | depends on SOC_TI81XX |
379 | default y | 379 | default y |
380 | 380 | ||
381 | config MACH_OMAP4_PANDA | ||
382 | bool "OMAP4 Panda Board" | ||
383 | default y | ||
384 | depends on ARCH_OMAP4 | ||
385 | select OMAP_PACKAGE_CBL | ||
386 | select OMAP_PACKAGE_CBS | ||
387 | select REGULATOR_FIXED_VOLTAGE if REGULATOR | ||
388 | |||
389 | config OMAP3_EMU | 381 | config OMAP3_EMU |
390 | bool "OMAP3 debugging peripherals" | 382 | bool "OMAP3 debugging peripherals" |
391 | depends on ARCH_OMAP3 | 383 | depends on ARCH_OMAP3 |
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index 875d61d71730..2cbf3ef1526b 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile | |||
@@ -251,7 +251,6 @@ obj-$(CONFIG_MACH_CM_T35) += board-cm-t35.o | |||
251 | obj-$(CONFIG_MACH_CM_T3517) += board-cm-t3517.o | 251 | obj-$(CONFIG_MACH_CM_T3517) += board-cm-t3517.o |
252 | obj-$(CONFIG_MACH_IGEP0020) += board-igep0020.o | 252 | obj-$(CONFIG_MACH_IGEP0020) += board-igep0020.o |
253 | obj-$(CONFIG_MACH_TOUCHBOOK) += board-omap3touchbook.o | 253 | obj-$(CONFIG_MACH_TOUCHBOOK) += board-omap3touchbook.o |
254 | obj-$(CONFIG_MACH_OMAP4_PANDA) += board-omap4panda.o | ||
255 | 254 | ||
256 | obj-$(CONFIG_MACH_OMAP3517EVM) += board-am3517evm.o | 255 | obj-$(CONFIG_MACH_OMAP3517EVM) += board-am3517evm.o |
257 | 256 | ||
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c deleted file mode 100644 index 1e2c75eee912..000000000000 --- a/arch/arm/mach-omap2/board-omap4panda.c +++ /dev/null | |||
@@ -1,455 +0,0 @@ | |||
1 | /* | ||
2 | * Board support file for OMAP4430 based PandaBoard. | ||
3 | * | ||
4 | * Copyright (C) 2010 Texas Instruments | ||
5 | * | ||
6 | * Author: David Anders <x0132446@ti.com> | ||
7 | * | ||
8 | * Based on mach-omap2/board-4430sdp.c | ||
9 | * | ||
10 | * Author: Santosh Shilimkar <santosh.shilimkar@ti.com> | ||
11 | * | ||
12 | * Based on mach-omap2/board-3430sdp.c | ||
13 | * | ||
14 | * This program is free software; you can redistribute it and/or modify | ||
15 | * it under the terms of the GNU General Public License version 2 as | ||
16 | * published by the Free Software Foundation. | ||
17 | */ | ||
18 | |||
19 | #include <linux/kernel.h> | ||
20 | #include <linux/init.h> | ||
21 | #include <linux/platform_device.h> | ||
22 | #include <linux/clk.h> | ||
23 | #include <linux/io.h> | ||
24 | #include <linux/leds.h> | ||
25 | #include <linux/gpio.h> | ||
26 | #include <linux/usb/otg.h> | ||
27 | #include <linux/i2c/twl.h> | ||
28 | #include <linux/mfd/twl6040.h> | ||
29 | #include <linux/regulator/machine.h> | ||
30 | #include <linux/regulator/fixed.h> | ||
31 | #include <linux/ti_wilink_st.h> | ||
32 | #include <linux/usb/musb.h> | ||
33 | #include <linux/usb/phy.h> | ||
34 | #include <linux/usb/nop-usb-xceiv.h> | ||
35 | #include <linux/wl12xx.h> | ||
36 | #include <linux/irqchip/arm-gic.h> | ||
37 | #include <linux/platform_data/omap-abe-twl6040.h> | ||
38 | |||
39 | #include <asm/mach-types.h> | ||
40 | #include <asm/mach/arch.h> | ||
41 | #include <asm/mach/map.h> | ||
42 | |||
43 | #include "common.h" | ||
44 | #include "soc.h" | ||
45 | #include "mmc.h" | ||
46 | #include "hsmmc.h" | ||
47 | #include "control.h" | ||
48 | #include "mux.h" | ||
49 | #include "common-board-devices.h" | ||
50 | #include "dss-common.h" | ||
51 | |||
52 | #define GPIO_HUB_POWER 1 | ||
53 | #define GPIO_HUB_NRESET 62 | ||
54 | #define GPIO_WIFI_PMENA 43 | ||
55 | #define GPIO_WIFI_IRQ 53 | ||
56 | |||
57 | /* wl127x BT, FM, GPS connectivity chip */ | ||
58 | static struct ti_st_plat_data wilink_platform_data = { | ||
59 | .nshutdown_gpio = 46, | ||
60 | .dev_name = "/dev/ttyO1", | ||
61 | .flow_cntrl = 1, | ||
62 | .baud_rate = 3000000, | ||
63 | .chip_enable = NULL, | ||
64 | .suspend = NULL, | ||
65 | .resume = NULL, | ||
66 | }; | ||
67 | |||
68 | static struct platform_device wl1271_device = { | ||
69 | .name = "kim", | ||
70 | .id = -1, | ||
71 | .dev = { | ||
72 | .platform_data = &wilink_platform_data, | ||
73 | }, | ||
74 | }; | ||
75 | |||
76 | static struct gpio_led gpio_leds[] = { | ||
77 | { | ||
78 | .name = "pandaboard::status1", | ||
79 | .default_trigger = "heartbeat", | ||
80 | .gpio = 7, | ||
81 | }, | ||
82 | { | ||
83 | .name = "pandaboard::status2", | ||
84 | .default_trigger = "mmc0", | ||
85 | .gpio = 8, | ||
86 | }, | ||
87 | }; | ||
88 | |||
89 | static struct gpio_led_platform_data gpio_led_info = { | ||
90 | .leds = gpio_leds, | ||
91 | .num_leds = ARRAY_SIZE(gpio_leds), | ||
92 | }; | ||
93 | |||
94 | static struct platform_device leds_gpio = { | ||
95 | .name = "leds-gpio", | ||
96 | .id = -1, | ||
97 | .dev = { | ||
98 | .platform_data = &gpio_led_info, | ||
99 | }, | ||
100 | }; | ||
101 | |||
102 | static struct omap_abe_twl6040_data panda_abe_audio_data = { | ||
103 | /* Audio out */ | ||
104 | .has_hs = ABE_TWL6040_LEFT | ABE_TWL6040_RIGHT, | ||
105 | /* HandsFree through expansion connector */ | ||
106 | .has_hf = ABE_TWL6040_LEFT | ABE_TWL6040_RIGHT, | ||
107 | /* PandaBoard: FM TX, PandaBoardES: can be connected to audio out */ | ||
108 | .has_aux = ABE_TWL6040_LEFT | ABE_TWL6040_RIGHT, | ||
109 | /* PandaBoard: FM RX, PandaBoardES: audio in */ | ||
110 | .has_afm = ABE_TWL6040_LEFT | ABE_TWL6040_RIGHT, | ||
111 | /* No jack detection. */ | ||
112 | .jack_detection = 0, | ||
113 | /* MCLK input is 38.4MHz */ | ||
114 | .mclk_freq = 38400000, | ||
115 | |||
116 | }; | ||
117 | |||
118 | static struct platform_device panda_abe_audio = { | ||
119 | .name = "omap-abe-twl6040", | ||
120 | .id = -1, | ||
121 | .dev = { | ||
122 | .platform_data = &panda_abe_audio_data, | ||
123 | }, | ||
124 | }; | ||
125 | |||
126 | static struct platform_device panda_hdmi_audio_codec = { | ||
127 | .name = "hdmi-audio-codec", | ||
128 | .id = -1, | ||
129 | }; | ||
130 | |||
131 | static struct platform_device btwilink_device = { | ||
132 | .name = "btwilink", | ||
133 | .id = -1, | ||
134 | }; | ||
135 | |||
136 | /* PHY device on HS USB Port 1 i.e. nop_usb_xceiv.1 */ | ||
137 | static struct nop_usb_xceiv_platform_data hsusb1_phy_data = { | ||
138 | /* FREF_CLK3 provides the 19.2 MHz reference clock to the PHY */ | ||
139 | .clk_rate = 19200000, | ||
140 | }; | ||
141 | |||
142 | static struct usbhs_phy_data phy_data[] __initdata = { | ||
143 | { | ||
144 | .port = 1, | ||
145 | .reset_gpio = GPIO_HUB_NRESET, | ||
146 | .vcc_gpio = GPIO_HUB_POWER, | ||
147 | .vcc_polarity = 1, | ||
148 | .platform_data = &hsusb1_phy_data, | ||
149 | }, | ||
150 | }; | ||
151 | |||
152 | static struct platform_device *panda_devices[] __initdata = { | ||
153 | &leds_gpio, | ||
154 | &wl1271_device, | ||
155 | &panda_abe_audio, | ||
156 | &panda_hdmi_audio_codec, | ||
157 | &btwilink_device, | ||
158 | }; | ||
159 | |||
160 | static struct usbhs_omap_platform_data usbhs_bdata __initdata = { | ||
161 | .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, | ||
162 | }; | ||
163 | |||
164 | static void __init omap4_ehci_init(void) | ||
165 | { | ||
166 | int ret; | ||
167 | |||
168 | /* FREF_CLK3 provides the 19.2 MHz reference clock to the PHY */ | ||
169 | ret = clk_add_alias("main_clk", "nop_usb_xceiv.1", "auxclk3_ck", NULL); | ||
170 | if (ret) | ||
171 | pr_err("Failed to add main_clk alias to auxclk3_ck\n"); | ||
172 | |||
173 | usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data)); | ||
174 | usbhs_init(&usbhs_bdata); | ||
175 | } | ||
176 | |||
177 | static struct omap_musb_board_data musb_board_data = { | ||
178 | .interface_type = MUSB_INTERFACE_UTMI, | ||
179 | .mode = MUSB_OTG, | ||
180 | .power = 100, | ||
181 | }; | ||
182 | |||
183 | static struct omap2_hsmmc_info mmc[] = { | ||
184 | { | ||
185 | .mmc = 1, | ||
186 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, | ||
187 | .gpio_wp = -EINVAL, | ||
188 | .gpio_cd = -EINVAL, | ||
189 | }, | ||
190 | { | ||
191 | .name = "wl1271", | ||
192 | .mmc = 5, | ||
193 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD, | ||
194 | .gpio_wp = -EINVAL, | ||
195 | .gpio_cd = -EINVAL, | ||
196 | .ocr_mask = MMC_VDD_165_195, | ||
197 | .nonremovable = true, | ||
198 | }, | ||
199 | {} /* Terminator */ | ||
200 | }; | ||
201 | |||
202 | static struct regulator_consumer_supply omap4_panda_vmmc5_supply[] = { | ||
203 | REGULATOR_SUPPLY("vmmc", "omap_hsmmc.4"), | ||
204 | }; | ||
205 | |||
206 | static struct regulator_init_data panda_vmmc5 = { | ||
207 | .constraints = { | ||
208 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | ||
209 | }, | ||
210 | .num_consumer_supplies = ARRAY_SIZE(omap4_panda_vmmc5_supply), | ||
211 | .consumer_supplies = omap4_panda_vmmc5_supply, | ||
212 | }; | ||
213 | |||
214 | static struct fixed_voltage_config panda_vwlan = { | ||
215 | .supply_name = "vwl1271", | ||
216 | .microvolts = 1800000, /* 1.8V */ | ||
217 | .gpio = GPIO_WIFI_PMENA, | ||
218 | .startup_delay = 70000, /* 70msec */ | ||
219 | .enable_high = 1, | ||
220 | .enabled_at_boot = 0, | ||
221 | .init_data = &panda_vmmc5, | ||
222 | }; | ||
223 | |||
224 | static struct platform_device omap_vwlan_device = { | ||
225 | .name = "reg-fixed-voltage", | ||
226 | .id = 1, | ||
227 | .dev = { | ||
228 | .platform_data = &panda_vwlan, | ||
229 | }, | ||
230 | }; | ||
231 | |||
232 | static struct wl12xx_platform_data omap_panda_wlan_data __initdata = { | ||
233 | .board_ref_clock = WL12XX_REFCLOCK_38, /* 38.4 MHz */ | ||
234 | }; | ||
235 | |||
236 | static struct twl6040_codec_data twl6040_codec = { | ||
237 | /* single-step ramp for headset and handsfree */ | ||
238 | .hs_left_step = 0x0f, | ||
239 | .hs_right_step = 0x0f, | ||
240 | .hf_left_step = 0x1d, | ||
241 | .hf_right_step = 0x1d, | ||
242 | }; | ||
243 | |||
244 | static struct twl6040_platform_data twl6040_data = { | ||
245 | .codec = &twl6040_codec, | ||
246 | .audpwron_gpio = 127, | ||
247 | }; | ||
248 | |||
249 | static struct i2c_board_info __initdata panda_i2c_1_boardinfo[] = { | ||
250 | { | ||
251 | I2C_BOARD_INFO("twl6040", 0x4b), | ||
252 | .irq = 119 + OMAP44XX_IRQ_GIC_START, | ||
253 | .platform_data = &twl6040_data, | ||
254 | }, | ||
255 | }; | ||
256 | |||
257 | /* Panda board uses the common PMIC configuration */ | ||
258 | static struct twl4030_platform_data omap4_panda_twldata; | ||
259 | |||
260 | /* | ||
261 | * Display monitor features are burnt in their EEPROM as EDID data. The EEPROM | ||
262 | * is connected as I2C slave device, and can be accessed at address 0x50 | ||
263 | */ | ||
264 | static struct i2c_board_info __initdata panda_i2c_eeprom[] = { | ||
265 | { | ||
266 | I2C_BOARD_INFO("eeprom", 0x50), | ||
267 | }, | ||
268 | }; | ||
269 | |||
270 | static int __init omap4_panda_i2c_init(void) | ||
271 | { | ||
272 | omap4_pmic_get_config(&omap4_panda_twldata, TWL_COMMON_PDATA_USB, | ||
273 | TWL_COMMON_REGULATOR_VDAC | | ||
274 | TWL_COMMON_REGULATOR_VAUX2 | | ||
275 | TWL_COMMON_REGULATOR_VAUX3 | | ||
276 | TWL_COMMON_REGULATOR_VMMC | | ||
277 | TWL_COMMON_REGULATOR_VPP | | ||
278 | TWL_COMMON_REGULATOR_VANA | | ||
279 | TWL_COMMON_REGULATOR_VCXIO | | ||
280 | TWL_COMMON_REGULATOR_VUSB | | ||
281 | TWL_COMMON_REGULATOR_CLK32KG | | ||
282 | TWL_COMMON_REGULATOR_V1V8 | | ||
283 | TWL_COMMON_REGULATOR_V2V1); | ||
284 | omap4_pmic_init("twl6030", &omap4_panda_twldata, panda_i2c_1_boardinfo, | ||
285 | ARRAY_SIZE(panda_i2c_1_boardinfo)); | ||
286 | omap_register_i2c_bus(2, 400, NULL, 0); | ||
287 | /* | ||
288 | * Bus 3 is attached to the DVI port where devices like the pico DLP | ||
289 | * projector don't work reliably with 400kHz | ||
290 | */ | ||
291 | omap_register_i2c_bus(3, 100, panda_i2c_eeprom, | ||
292 | ARRAY_SIZE(panda_i2c_eeprom)); | ||
293 | omap_register_i2c_bus(4, 400, NULL, 0); | ||
294 | return 0; | ||
295 | } | ||
296 | |||
297 | #ifdef CONFIG_OMAP_MUX | ||
298 | static struct omap_board_mux board_mux[] __initdata = { | ||
299 | /* WLAN IRQ - GPIO 53 */ | ||
300 | OMAP4_MUX(GPMC_NCS3, OMAP_MUX_MODE3 | OMAP_PIN_INPUT), | ||
301 | /* WLAN POWER ENABLE - GPIO 43 */ | ||
302 | OMAP4_MUX(GPMC_A19, OMAP_MUX_MODE3 | OMAP_PIN_OUTPUT), | ||
303 | /* WLAN SDIO: MMC5 CMD */ | ||
304 | OMAP4_MUX(SDMMC5_CMD, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP), | ||
305 | /* WLAN SDIO: MMC5 CLK */ | ||
306 | OMAP4_MUX(SDMMC5_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP), | ||
307 | /* WLAN SDIO: MMC5 DAT[0-3] */ | ||
308 | OMAP4_MUX(SDMMC5_DAT0, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP), | ||
309 | OMAP4_MUX(SDMMC5_DAT1, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP), | ||
310 | OMAP4_MUX(SDMMC5_DAT2, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP), | ||
311 | OMAP4_MUX(SDMMC5_DAT3, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP), | ||
312 | /* gpio 0 - TFP410 PD */ | ||
313 | OMAP4_MUX(KPD_COL1, OMAP_PIN_OUTPUT | OMAP_MUX_MODE3), | ||
314 | /* dispc2_data23 */ | ||
315 | OMAP4_MUX(USBB2_ULPITLL_STP, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
316 | /* dispc2_data22 */ | ||
317 | OMAP4_MUX(USBB2_ULPITLL_DIR, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
318 | /* dispc2_data21 */ | ||
319 | OMAP4_MUX(USBB2_ULPITLL_NXT, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
320 | /* dispc2_data20 */ | ||
321 | OMAP4_MUX(USBB2_ULPITLL_DAT0, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
322 | /* dispc2_data19 */ | ||
323 | OMAP4_MUX(USBB2_ULPITLL_DAT1, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
324 | /* dispc2_data18 */ | ||
325 | OMAP4_MUX(USBB2_ULPITLL_DAT2, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
326 | /* dispc2_data15 */ | ||
327 | OMAP4_MUX(USBB2_ULPITLL_DAT3, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
328 | /* dispc2_data14 */ | ||
329 | OMAP4_MUX(USBB2_ULPITLL_DAT4, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
330 | /* dispc2_data13 */ | ||
331 | OMAP4_MUX(USBB2_ULPITLL_DAT5, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
332 | /* dispc2_data12 */ | ||
333 | OMAP4_MUX(USBB2_ULPITLL_DAT6, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
334 | /* dispc2_data11 */ | ||
335 | OMAP4_MUX(USBB2_ULPITLL_DAT7, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
336 | /* dispc2_data10 */ | ||
337 | OMAP4_MUX(DPM_EMU3, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
338 | /* dispc2_data9 */ | ||
339 | OMAP4_MUX(DPM_EMU4, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
340 | /* dispc2_data16 */ | ||
341 | OMAP4_MUX(DPM_EMU5, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
342 | /* dispc2_data17 */ | ||
343 | OMAP4_MUX(DPM_EMU6, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
344 | /* dispc2_hsync */ | ||
345 | OMAP4_MUX(DPM_EMU7, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
346 | /* dispc2_pclk */ | ||
347 | OMAP4_MUX(DPM_EMU8, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
348 | /* dispc2_vsync */ | ||
349 | OMAP4_MUX(DPM_EMU9, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
350 | /* dispc2_de */ | ||
351 | OMAP4_MUX(DPM_EMU10, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
352 | /* dispc2_data8 */ | ||
353 | OMAP4_MUX(DPM_EMU11, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
354 | /* dispc2_data7 */ | ||
355 | OMAP4_MUX(DPM_EMU12, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
356 | /* dispc2_data6 */ | ||
357 | OMAP4_MUX(DPM_EMU13, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
358 | /* dispc2_data5 */ | ||
359 | OMAP4_MUX(DPM_EMU14, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
360 | /* dispc2_data4 */ | ||
361 | OMAP4_MUX(DPM_EMU15, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
362 | /* dispc2_data3 */ | ||
363 | OMAP4_MUX(DPM_EMU16, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
364 | /* dispc2_data2 */ | ||
365 | OMAP4_MUX(DPM_EMU17, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
366 | /* dispc2_data1 */ | ||
367 | OMAP4_MUX(DPM_EMU18, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
368 | /* dispc2_data0 */ | ||
369 | OMAP4_MUX(DPM_EMU19, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), | ||
370 | /* NIRQ2 for twl6040 */ | ||
371 | OMAP4_MUX(SYS_NIRQ2, OMAP_MUX_MODE0 | | ||
372 | OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE), | ||
373 | /* GPIO_127 for twl6040 */ | ||
374 | OMAP4_MUX(HDQ_SIO, OMAP_MUX_MODE3 | OMAP_PIN_OUTPUT), | ||
375 | /* McPDM */ | ||
376 | OMAP4_MUX(ABE_PDM_UL_DATA, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN), | ||
377 | OMAP4_MUX(ABE_PDM_DL_DATA, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN), | ||
378 | OMAP4_MUX(ABE_PDM_FRAME, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP), | ||
379 | OMAP4_MUX(ABE_PDM_LB_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN), | ||
380 | OMAP4_MUX(ABE_CLKS, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN), | ||
381 | /* McBSP1 */ | ||
382 | OMAP4_MUX(ABE_MCBSP1_CLKX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), | ||
383 | OMAP4_MUX(ABE_MCBSP1_DR, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN), | ||
384 | OMAP4_MUX(ABE_MCBSP1_DX, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT | | ||
385 | OMAP_PULL_ENA), | ||
386 | OMAP4_MUX(ABE_MCBSP1_FSX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), | ||
387 | |||
388 | /* UART2 - BT/FM/GPS shared transport */ | ||
389 | OMAP4_MUX(UART2_CTS, OMAP_PIN_INPUT | OMAP_MUX_MODE0), | ||
390 | OMAP4_MUX(UART2_RTS, OMAP_PIN_OUTPUT | OMAP_MUX_MODE0), | ||
391 | OMAP4_MUX(UART2_RX, OMAP_PIN_INPUT | OMAP_MUX_MODE0), | ||
392 | OMAP4_MUX(UART2_TX, OMAP_PIN_OUTPUT | OMAP_MUX_MODE0), | ||
393 | |||
394 | { .reg_offset = OMAP_MUX_TERMINATOR }, | ||
395 | }; | ||
396 | |||
397 | #else | ||
398 | #define board_mux NULL | ||
399 | #endif | ||
400 | |||
401 | |||
402 | static void omap4_panda_init_rev(void) | ||
403 | { | ||
404 | if (cpu_is_omap443x()) { | ||
405 | /* PandaBoard 4430 */ | ||
406 | /* ASoC audio configuration */ | ||
407 | panda_abe_audio_data.card_name = "PandaBoard"; | ||
408 | panda_abe_audio_data.has_hsmic = 1; | ||
409 | } else { | ||
410 | /* PandaBoard ES */ | ||
411 | /* ASoC audio configuration */ | ||
412 | panda_abe_audio_data.card_name = "PandaBoardES"; | ||
413 | } | ||
414 | } | ||
415 | |||
416 | static void __init omap4_panda_init(void) | ||
417 | { | ||
418 | int package = OMAP_PACKAGE_CBS; | ||
419 | int ret; | ||
420 | |||
421 | if (omap_rev() == OMAP4430_REV_ES1_0) | ||
422 | package = OMAP_PACKAGE_CBL; | ||
423 | omap4_mux_init(board_mux, NULL, package); | ||
424 | |||
425 | omap_panda_wlan_data.irq = gpio_to_irq(GPIO_WIFI_IRQ); | ||
426 | ret = wl12xx_set_platform_data(&omap_panda_wlan_data); | ||
427 | if (ret) | ||
428 | pr_err("error setting wl12xx data: %d\n", ret); | ||
429 | |||
430 | omap4_panda_init_rev(); | ||
431 | omap4_panda_i2c_init(); | ||
432 | platform_add_devices(panda_devices, ARRAY_SIZE(panda_devices)); | ||
433 | platform_device_register(&omap_vwlan_device); | ||
434 | omap_serial_init(); | ||
435 | omap_sdrc_init(NULL, NULL); | ||
436 | omap4_twl6030_hsmmc_init(mmc); | ||
437 | omap4_ehci_init(); | ||
438 | usb_bind_phy("musb-hdrc.2.auto", 0, "omap-usb2.3.auto"); | ||
439 | usb_musb_init(&musb_board_data); | ||
440 | omap4_panda_display_init(); | ||
441 | } | ||
442 | |||
443 | MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board") | ||
444 | /* Maintainer: David Anders - Texas Instruments Inc */ | ||
445 | .atag_offset = 0x100, | ||
446 | .smp = smp_ops(omap4_smp_ops), | ||
447 | .reserve = omap_reserve, | ||
448 | .map_io = omap4_map_io, | ||
449 | .init_early = omap4430_init_early, | ||
450 | .init_irq = gic_init_irq, | ||
451 | .init_machine = omap4_panda_init, | ||
452 | .init_late = omap4430_init_late, | ||
453 | .init_time = omap4_local_timer_init, | ||
454 | .restart = omap44xx_restart, | ||
455 | MACHINE_END | ||