diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-07-26 20:13:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-07-26 20:13:04 -0400 |
commit | 2d86a3f04e345b03d5e429bfe14985ce26bff4dc (patch) | |
tree | 10d0d3e57fb65f4df6763e7ef859fdabcf4badd8 /arch/arm/mach-omap2 | |
parent | 3960ef326a1838971466193ffa008ff37c1d978d (diff) | |
parent | 5ddac6bc1c4bfcbf645d18668a5033ca257a8ea7 (diff) |
Merge branch 'next/board' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/linux-arm-soc
* 'next/board' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/linux-arm-soc:
ARM: S3C64XX: Configure backup battery charger on Cragganmore
ARM: S3C64XX: Fix WM8915 IRQ polarity on Cragganmore
ARM: S3C64XX: Configure supplies for all Cragganmore regulators
ARM: S3C64XX: Refresh Cragganmore support
ARM: S3C64XX: Initial support for Wolfson/Simtec Cragganmore/Banff
OMAP4: Keyboard: Mux changes in the board file
omap: blaze: add mmc5/wl1283 device support
omap: 4430SDP: Register the card detect GPIO properly
arm: omap3: cm-t35: add support for cm-t3730
OMAP3: beagle: add support for beagleboard xM revision C
OMAP3: rx-51: Add full regulator definitions
omap: rx51: Platform support for lp5523 led chip
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r-- | arch/arm/mach-omap2/Kconfig | 6 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-4430sdp.c | 148 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-cm-t35.c | 77 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-omap3beagle.c | 78 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-rx51-peripherals.c | 135 | ||||
-rw-r--r-- | arch/arm/mach-omap2/devices.c | 3 |
6 files changed, 401 insertions, 46 deletions
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index 19d5891c48e3..4ae6257b39a4 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
@@ -266,9 +266,10 @@ config MACH_OMAP_ZOOM3 | |||
266 | select REGULATOR_FIXED_VOLTAGE | 266 | select REGULATOR_FIXED_VOLTAGE |
267 | 267 | ||
268 | config MACH_CM_T35 | 268 | config MACH_CM_T35 |
269 | bool "CompuLab CM-T35 module" | 269 | bool "CompuLab CM-T35/CM-T3730 modules" |
270 | depends on ARCH_OMAP3 | 270 | depends on ARCH_OMAP3 |
271 | default y | 271 | default y |
272 | select MACH_CM_T3730 | ||
272 | select OMAP_PACKAGE_CUS | 273 | select OMAP_PACKAGE_CUS |
273 | 274 | ||
274 | config MACH_CM_T3517 | 275 | config MACH_CM_T3517 |
@@ -277,6 +278,9 @@ config MACH_CM_T3517 | |||
277 | default y | 278 | default y |
278 | select OMAP_PACKAGE_CBB | 279 | select OMAP_PACKAGE_CBB |
279 | 280 | ||
281 | config MACH_CM_T3730 | ||
282 | bool | ||
283 | |||
280 | config MACH_IGEP0020 | 284 | config MACH_IGEP0020 |
281 | bool "IGEP v2 board" | 285 | bool "IGEP v2 board" |
282 | depends on ARCH_OMAP3 | 286 | depends on ARCH_OMAP3 |
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c index 933b25bb10de..a7c0b31fd084 100644 --- a/arch/arm/mach-omap2/board-4430sdp.c +++ b/arch/arm/mach-omap2/board-4430sdp.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/i2c/twl.h> | 22 | #include <linux/i2c/twl.h> |
23 | #include <linux/gpio_keys.h> | 23 | #include <linux/gpio_keys.h> |
24 | #include <linux/regulator/machine.h> | 24 | #include <linux/regulator/machine.h> |
25 | #include <linux/regulator/fixed.h> | ||
25 | #include <linux/leds.h> | 26 | #include <linux/leds.h> |
26 | #include <linux/leds_pwm.h> | 27 | #include <linux/leds_pwm.h> |
27 | 28 | ||
@@ -37,6 +38,7 @@ | |||
37 | #include <plat/mmc.h> | 38 | #include <plat/mmc.h> |
38 | #include <plat/omap4-keypad.h> | 39 | #include <plat/omap4-keypad.h> |
39 | #include <video/omapdss.h> | 40 | #include <video/omapdss.h> |
41 | #include <linux/wl12xx.h> | ||
40 | 42 | ||
41 | #include "mux.h" | 43 | #include "mux.h" |
42 | #include "hsmmc.h" | 44 | #include "hsmmc.h" |
@@ -51,6 +53,9 @@ | |||
51 | #define HDMI_GPIO_HPD 60 /* Hot plug pin for HDMI */ | 53 | #define HDMI_GPIO_HPD 60 /* Hot plug pin for HDMI */ |
52 | #define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */ | 54 | #define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */ |
53 | 55 | ||
56 | #define GPIO_WIFI_PMENA 54 | ||
57 | #define GPIO_WIFI_IRQ 53 | ||
58 | |||
54 | static const int sdp4430_keymap[] = { | 59 | static const int sdp4430_keymap[] = { |
55 | KEY(0, 0, KEY_E), | 60 | KEY(0, 0, KEY_E), |
56 | KEY(0, 1, KEY_R), | 61 | KEY(0, 1, KEY_R), |
@@ -124,6 +129,64 @@ static const int sdp4430_keymap[] = { | |||
124 | KEY(7, 6, KEY_OK), | 129 | KEY(7, 6, KEY_OK), |
125 | KEY(7, 7, KEY_DOWN), | 130 | KEY(7, 7, KEY_DOWN), |
126 | }; | 131 | }; |
132 | static struct omap_device_pad keypad_pads[] __initdata = { | ||
133 | { .name = "kpd_col1.kpd_col1", | ||
134 | .enable = OMAP_WAKEUP_EN | OMAP_MUX_MODE1, | ||
135 | }, | ||
136 | { .name = "kpd_col1.kpd_col1", | ||
137 | .enable = OMAP_WAKEUP_EN | OMAP_MUX_MODE1, | ||
138 | }, | ||
139 | { .name = "kpd_col2.kpd_col2", | ||
140 | .enable = OMAP_WAKEUP_EN | OMAP_MUX_MODE1, | ||
141 | }, | ||
142 | { .name = "kpd_col3.kpd_col3", | ||
143 | .enable = OMAP_WAKEUP_EN | OMAP_MUX_MODE1, | ||
144 | }, | ||
145 | { .name = "kpd_col4.kpd_col4", | ||
146 | .enable = OMAP_WAKEUP_EN | OMAP_MUX_MODE1, | ||
147 | }, | ||
148 | { .name = "kpd_col5.kpd_col5", | ||
149 | .enable = OMAP_WAKEUP_EN | OMAP_MUX_MODE1, | ||
150 | }, | ||
151 | { .name = "gpmc_a23.kpd_col7", | ||
152 | .enable = OMAP_WAKEUP_EN | OMAP_MUX_MODE1, | ||
153 | }, | ||
154 | { .name = "gpmc_a22.kpd_col6", | ||
155 | .enable = OMAP_WAKEUP_EN | OMAP_MUX_MODE1, | ||
156 | }, | ||
157 | { .name = "kpd_row0.kpd_row0", | ||
158 | .enable = OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_WAKEUP_EN | | ||
159 | OMAP_MUX_MODE1 | OMAP_INPUT_EN, | ||
160 | }, | ||
161 | { .name = "kpd_row1.kpd_row1", | ||
162 | .enable = OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_WAKEUP_EN | | ||
163 | OMAP_MUX_MODE1 | OMAP_INPUT_EN, | ||
164 | }, | ||
165 | { .name = "kpd_row2.kpd_row2", | ||
166 | .enable = OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_WAKEUP_EN | | ||
167 | OMAP_MUX_MODE1 | OMAP_INPUT_EN, | ||
168 | }, | ||
169 | { .name = "kpd_row3.kpd_row3", | ||
170 | .enable = OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_WAKEUP_EN | | ||
171 | OMAP_MUX_MODE1 | OMAP_INPUT_EN, | ||
172 | }, | ||
173 | { .name = "kpd_row4.kpd_row4", | ||
174 | .enable = OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_WAKEUP_EN | | ||
175 | OMAP_MUX_MODE1 | OMAP_INPUT_EN, | ||
176 | }, | ||
177 | { .name = "kpd_row5.kpd_row5", | ||
178 | .enable = OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_WAKEUP_EN | | ||
179 | OMAP_MUX_MODE1 | OMAP_INPUT_EN, | ||
180 | }, | ||
181 | { .name = "gpmc_a18.kpd_row6", | ||
182 | .enable = OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_WAKEUP_EN | | ||
183 | OMAP_MUX_MODE1 | OMAP_INPUT_EN, | ||
184 | }, | ||
185 | { .name = "gpmc_a19.kpd_row7", | ||
186 | .enable = OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_WAKEUP_EN | | ||
187 | OMAP_MUX_MODE1 | OMAP_INPUT_EN, | ||
188 | }, | ||
189 | }; | ||
127 | 190 | ||
128 | static struct matrix_keymap_data sdp4430_keymap_data = { | 191 | static struct matrix_keymap_data sdp4430_keymap_data = { |
129 | .keymap = sdp4430_keymap, | 192 | .keymap = sdp4430_keymap, |
@@ -135,6 +198,13 @@ static struct omap4_keypad_platform_data sdp4430_keypad_data = { | |||
135 | .rows = 8, | 198 | .rows = 8, |
136 | .cols = 8, | 199 | .cols = 8, |
137 | }; | 200 | }; |
201 | |||
202 | static struct omap_board_data keypad_data = { | ||
203 | .id = 1, | ||
204 | .pads = keypad_pads, | ||
205 | .pads_cnt = ARRAY_SIZE(keypad_pads), | ||
206 | }; | ||
207 | |||
138 | static struct gpio_led sdp4430_gpio_leds[] = { | 208 | static struct gpio_led sdp4430_gpio_leds[] = { |
139 | { | 209 | { |
140 | .name = "omap4:green:debug0", | 210 | .name = "omap4:green:debug0", |
@@ -315,8 +385,17 @@ static struct omap2_hsmmc_info mmc[] = { | |||
315 | { | 385 | { |
316 | .mmc = 1, | 386 | .mmc = 1, |
317 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, | 387 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
388 | .gpio_cd = -EINVAL, | ||
318 | .gpio_wp = -EINVAL, | 389 | .gpio_wp = -EINVAL, |
319 | }, | 390 | }, |
391 | { | ||
392 | .mmc = 5, | ||
393 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD, | ||
394 | .gpio_cd = -EINVAL, | ||
395 | .gpio_wp = -EINVAL, | ||
396 | .ocr_mask = MMC_VDD_165_195, | ||
397 | .nonremovable = true, | ||
398 | }, | ||
320 | {} /* Terminator */ | 399 | {} /* Terminator */ |
321 | }; | 400 | }; |
322 | 401 | ||
@@ -324,6 +403,37 @@ static struct regulator_consumer_supply sdp4430_vaux_supply[] = { | |||
324 | REGULATOR_SUPPLY("vmmc", "omap_hsmmc.1"), | 403 | REGULATOR_SUPPLY("vmmc", "omap_hsmmc.1"), |
325 | }; | 404 | }; |
326 | 405 | ||
406 | static struct regulator_consumer_supply omap4_sdp4430_vmmc5_supply = { | ||
407 | .supply = "vmmc", | ||
408 | .dev_name = "omap_hsmmc.4", | ||
409 | }; | ||
410 | |||
411 | static struct regulator_init_data sdp4430_vmmc5 = { | ||
412 | .constraints = { | ||
413 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | ||
414 | }, | ||
415 | .num_consumer_supplies = 1, | ||
416 | .consumer_supplies = &omap4_sdp4430_vmmc5_supply, | ||
417 | }; | ||
418 | |||
419 | static struct fixed_voltage_config sdp4430_vwlan = { | ||
420 | .supply_name = "vwl1271", | ||
421 | .microvolts = 1800000, /* 1.8V */ | ||
422 | .gpio = GPIO_WIFI_PMENA, | ||
423 | .startup_delay = 70000, /* 70msec */ | ||
424 | .enable_high = 1, | ||
425 | .enabled_at_boot = 0, | ||
426 | .init_data = &sdp4430_vmmc5, | ||
427 | }; | ||
428 | |||
429 | static struct platform_device omap_vwlan_device = { | ||
430 | .name = "reg-fixed-voltage", | ||
431 | .id = 1, | ||
432 | .dev = { | ||
433 | .platform_data = &sdp4430_vwlan, | ||
434 | }, | ||
435 | }; | ||
436 | |||
327 | static int omap4_twl6030_hsmmc_late_init(struct device *dev) | 437 | static int omap4_twl6030_hsmmc_late_init(struct device *dev) |
328 | { | 438 | { |
329 | int ret = 0; | 439 | int ret = 0; |
@@ -593,6 +703,41 @@ static inline void board_serial_init(void) | |||
593 | } | 703 | } |
594 | #endif | 704 | #endif |
595 | 705 | ||
706 | static void omap4_sdp4430_wifi_mux_init(void) | ||
707 | { | ||
708 | omap_mux_init_gpio(GPIO_WIFI_IRQ, OMAP_PIN_INPUT | | ||
709 | OMAP_PIN_OFF_WAKEUPENABLE); | ||
710 | omap_mux_init_gpio(GPIO_WIFI_PMENA, OMAP_PIN_OUTPUT); | ||
711 | |||
712 | omap_mux_init_signal("sdmmc5_cmd.sdmmc5_cmd", | ||
713 | OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP); | ||
714 | omap_mux_init_signal("sdmmc5_clk.sdmmc5_clk", | ||
715 | OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP); | ||
716 | omap_mux_init_signal("sdmmc5_dat0.sdmmc5_dat0", | ||
717 | OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP); | ||
718 | omap_mux_init_signal("sdmmc5_dat1.sdmmc5_dat1", | ||
719 | OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP); | ||
720 | omap_mux_init_signal("sdmmc5_dat2.sdmmc5_dat2", | ||
721 | OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP); | ||
722 | omap_mux_init_signal("sdmmc5_dat3.sdmmc5_dat3", | ||
723 | OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP); | ||
724 | |||
725 | } | ||
726 | |||
727 | static struct wl12xx_platform_data omap4_sdp4430_wlan_data __initdata = { | ||
728 | .irq = OMAP_GPIO_IRQ(GPIO_WIFI_IRQ), | ||
729 | .board_ref_clock = WL12XX_REFCLOCK_26, | ||
730 | .board_tcxo_clock = WL12XX_TCXOCLOCK_26, | ||
731 | }; | ||
732 | |||
733 | static void omap4_sdp4430_wifi_init(void) | ||
734 | { | ||
735 | omap4_sdp4430_wifi_mux_init(); | ||
736 | if (wl12xx_set_platform_data(&omap4_sdp4430_wlan_data)) | ||
737 | pr_err("Error setting wl12xx data\n"); | ||
738 | platform_device_register(&omap_vwlan_device); | ||
739 | } | ||
740 | |||
596 | static void __init omap_4430sdp_init(void) | 741 | static void __init omap_4430sdp_init(void) |
597 | { | 742 | { |
598 | int status; | 743 | int status; |
@@ -609,6 +754,7 @@ static void __init omap_4430sdp_init(void) | |||
609 | omap_sfh7741prox_init(); | 754 | omap_sfh7741prox_init(); |
610 | platform_add_devices(sdp4430_devices, ARRAY_SIZE(sdp4430_devices)); | 755 | platform_add_devices(sdp4430_devices, ARRAY_SIZE(sdp4430_devices)); |
611 | board_serial_init(); | 756 | board_serial_init(); |
757 | omap4_sdp4430_wifi_init(); | ||
612 | omap4_twl6030_hsmmc_init(mmc); | 758 | omap4_twl6030_hsmmc_init(mmc); |
613 | 759 | ||
614 | usb_musb_init(&musb_board_data); | 760 | usb_musb_init(&musb_board_data); |
@@ -622,7 +768,7 @@ static void __init omap_4430sdp_init(void) | |||
622 | ARRAY_SIZE(sdp4430_spi_board_info)); | 768 | ARRAY_SIZE(sdp4430_spi_board_info)); |
623 | } | 769 | } |
624 | 770 | ||
625 | status = omap4_keyboard_init(&sdp4430_keypad_data); | 771 | status = omap4_keyboard_init(&sdp4430_keypad_data, &keypad_data); |
626 | if (status) | 772 | if (status) |
627 | pr_err("Keypad initialization failed: %d\n", status); | 773 | pr_err("Keypad initialization failed: %d\n", status); |
628 | 774 | ||
diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c index f0749215df11..3af8aab435b5 100644 --- a/arch/arm/mach-omap2/board-cm-t35.c +++ b/arch/arm/mach-omap2/board-cm-t35.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * board-cm-t35.c (CompuLab CM-T35 module) | 2 | * CompuLab CM-T35/CM-T3730 modules support |
3 | * | 3 | * |
4 | * Copyright (C) 2009-2011 CompuLab, Ltd. | 4 | * Copyright (C) 2009-2011 CompuLab, Ltd. |
5 | * Authors: Mike Rapoport <mike@compulab.co.il> | 5 | * Authors: Mike Rapoport <mike@compulab.co.il> |
@@ -535,17 +535,11 @@ static struct omap_board_mux board_mux[] __initdata = { | |||
535 | OMAP3_MUX(UART1_TX, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | 535 | OMAP3_MUX(UART1_TX, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), |
536 | OMAP3_MUX(UART1_RX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), | 536 | OMAP3_MUX(UART1_RX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), |
537 | 537 | ||
538 | /* DSS */ | 538 | /* common DSS */ |
539 | OMAP3_MUX(DSS_PCLK, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | 539 | OMAP3_MUX(DSS_PCLK, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), |
540 | OMAP3_MUX(DSS_HSYNC, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | 540 | OMAP3_MUX(DSS_HSYNC, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), |
541 | OMAP3_MUX(DSS_VSYNC, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | 541 | OMAP3_MUX(DSS_VSYNC, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), |
542 | OMAP3_MUX(DSS_ACBIAS, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | 542 | OMAP3_MUX(DSS_ACBIAS, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), |
543 | OMAP3_MUX(DSS_DATA0, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | ||
544 | OMAP3_MUX(DSS_DATA1, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | ||
545 | OMAP3_MUX(DSS_DATA2, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | ||
546 | OMAP3_MUX(DSS_DATA3, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | ||
547 | OMAP3_MUX(DSS_DATA4, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | ||
548 | OMAP3_MUX(DSS_DATA5, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | ||
549 | OMAP3_MUX(DSS_DATA6, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | 543 | OMAP3_MUX(DSS_DATA6, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), |
550 | OMAP3_MUX(DSS_DATA7, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | 544 | OMAP3_MUX(DSS_DATA7, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), |
551 | OMAP3_MUX(DSS_DATA8, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | 545 | OMAP3_MUX(DSS_DATA8, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), |
@@ -558,12 +552,6 @@ static struct omap_board_mux board_mux[] __initdata = { | |||
558 | OMAP3_MUX(DSS_DATA15, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | 552 | OMAP3_MUX(DSS_DATA15, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), |
559 | OMAP3_MUX(DSS_DATA16, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | 553 | OMAP3_MUX(DSS_DATA16, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), |
560 | OMAP3_MUX(DSS_DATA17, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | 554 | OMAP3_MUX(DSS_DATA17, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), |
561 | OMAP3_MUX(DSS_DATA18, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | ||
562 | OMAP3_MUX(DSS_DATA19, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | ||
563 | OMAP3_MUX(DSS_DATA20, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | ||
564 | OMAP3_MUX(DSS_DATA21, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | ||
565 | OMAP3_MUX(DSS_DATA22, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | ||
566 | OMAP3_MUX(DSS_DATA23, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), | ||
567 | 555 | ||
568 | /* display controls */ | 556 | /* display controls */ |
569 | OMAP3_MUX(MCBSP1_FSR, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), | 557 | OMAP3_MUX(MCBSP1_FSR, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), |
@@ -576,19 +564,53 @@ static struct omap_board_mux board_mux[] __initdata = { | |||
576 | 564 | ||
577 | { .reg_offset = OMAP_MUX_TERMINATOR }, | 565 | { .reg_offset = OMAP_MUX_TERMINATOR }, |
578 | }; | 566 | }; |
567 | |||
568 | static void __init cm_t3x_common_dss_mux_init(int mux_mode) | ||
569 | { | ||
570 | omap_mux_init_signal("dss_data18", mux_mode); | ||
571 | omap_mux_init_signal("dss_data19", mux_mode); | ||
572 | omap_mux_init_signal("dss_data20", mux_mode); | ||
573 | omap_mux_init_signal("dss_data21", mux_mode); | ||
574 | omap_mux_init_signal("dss_data22", mux_mode); | ||
575 | omap_mux_init_signal("dss_data23", mux_mode); | ||
576 | } | ||
577 | |||
578 | static void __init cm_t35_init_mux(void) | ||
579 | { | ||
580 | omap_mux_init_signal("gpio_70", OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT); | ||
581 | omap_mux_init_signal("gpio_71", OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT); | ||
582 | omap_mux_init_signal("gpio_72", OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT); | ||
583 | omap_mux_init_signal("gpio_73", OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT); | ||
584 | omap_mux_init_signal("gpio_74", OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT); | ||
585 | omap_mux_init_signal("gpio_75", OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT); | ||
586 | cm_t3x_common_dss_mux_init(OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT); | ||
587 | } | ||
588 | |||
589 | static void __init cm_t3730_init_mux(void) | ||
590 | { | ||
591 | omap_mux_init_signal("sys_boot0", OMAP_MUX_MODE3 | OMAP_PIN_OUTPUT); | ||
592 | omap_mux_init_signal("sys_boot1", OMAP_MUX_MODE3 | OMAP_PIN_OUTPUT); | ||
593 | omap_mux_init_signal("sys_boot3", OMAP_MUX_MODE3 | OMAP_PIN_OUTPUT); | ||
594 | omap_mux_init_signal("sys_boot4", OMAP_MUX_MODE3 | OMAP_PIN_OUTPUT); | ||
595 | omap_mux_init_signal("sys_boot5", OMAP_MUX_MODE3 | OMAP_PIN_OUTPUT); | ||
596 | omap_mux_init_signal("sys_boot6", OMAP_MUX_MODE3 | OMAP_PIN_OUTPUT); | ||
597 | cm_t3x_common_dss_mux_init(OMAP_MUX_MODE3 | OMAP_PIN_OUTPUT); | ||
598 | } | ||
599 | #else | ||
600 | static inline void cm_t35_init_mux(void) {} | ||
601 | static inline void cm_t3730_init_mux(void) {} | ||
579 | #endif | 602 | #endif |
580 | 603 | ||
581 | static struct omap_board_config_kernel cm_t35_config[] __initdata = { | 604 | static struct omap_board_config_kernel cm_t35_config[] __initdata = { |
582 | }; | 605 | }; |
583 | 606 | ||
584 | static void __init cm_t35_init(void) | 607 | static void __init cm_t3x_common_init(void) |
585 | { | 608 | { |
586 | omap_board_config = cm_t35_config; | 609 | omap_board_config = cm_t35_config; |
587 | omap_board_config_size = ARRAY_SIZE(cm_t35_config); | 610 | omap_board_config_size = ARRAY_SIZE(cm_t35_config); |
588 | omap3_mux_init(board_mux, OMAP_PACKAGE_CUS); | 611 | omap3_mux_init(board_mux, OMAP_PACKAGE_CUS); |
589 | omap_serial_init(); | 612 | omap_serial_init(); |
590 | cm_t35_init_i2c(); | 613 | cm_t35_init_i2c(); |
591 | cm_t35_init_nand(); | ||
592 | omap_ads7846_init(1, CM_T35_GPIO_PENDOWN, 0, NULL); | 614 | omap_ads7846_init(1, CM_T35_GPIO_PENDOWN, 0, NULL); |
593 | cm_t35_init_ethernet(); | 615 | cm_t35_init_ethernet(); |
594 | cm_t35_init_led(); | 616 | cm_t35_init_led(); |
@@ -598,6 +620,19 @@ static void __init cm_t35_init(void) | |||
598 | usbhs_init(&usbhs_bdata); | 620 | usbhs_init(&usbhs_bdata); |
599 | } | 621 | } |
600 | 622 | ||
623 | static void __init cm_t35_init(void) | ||
624 | { | ||
625 | cm_t3x_common_init(); | ||
626 | cm_t35_init_mux(); | ||
627 | cm_t35_init_nand(); | ||
628 | } | ||
629 | |||
630 | static void __init cm_t3730_init(void) | ||
631 | { | ||
632 | cm_t3x_common_init(); | ||
633 | cm_t3730_init_mux(); | ||
634 | } | ||
635 | |||
601 | MACHINE_START(CM_T35, "Compulab CM-T35") | 636 | MACHINE_START(CM_T35, "Compulab CM-T35") |
602 | .boot_params = 0x80000100, | 637 | .boot_params = 0x80000100, |
603 | .reserve = omap_reserve, | 638 | .reserve = omap_reserve, |
@@ -607,3 +642,13 @@ MACHINE_START(CM_T35, "Compulab CM-T35") | |||
607 | .init_machine = cm_t35_init, | 642 | .init_machine = cm_t35_init, |
608 | .timer = &omap3_timer, | 643 | .timer = &omap3_timer, |
609 | MACHINE_END | 644 | MACHINE_END |
645 | |||
646 | MACHINE_START(CM_T3730, "Compulab CM-T3730") | ||
647 | .boot_params = 0x80000100, | ||
648 | .reserve = omap_reserve, | ||
649 | .map_io = omap3_map_io, | ||
650 | .init_early = cm_t35_init_early, | ||
651 | .init_irq = omap3_init_irq, | ||
652 | .init_machine = cm_t3730_init, | ||
653 | .timer = &omap3_timer, | ||
654 | MACHINE_END | ||
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 34f841112768..32f5f895568a 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c | |||
@@ -60,7 +60,8 @@ | |||
60 | * AXBX = GPIO173, GPIO172, GPIO171: 1 1 1 | 60 | * AXBX = GPIO173, GPIO172, GPIO171: 1 1 1 |
61 | * C1_3 = GPIO173, GPIO172, GPIO171: 1 1 0 | 61 | * C1_3 = GPIO173, GPIO172, GPIO171: 1 1 0 |
62 | * C4 = GPIO173, GPIO172, GPIO171: 1 0 1 | 62 | * C4 = GPIO173, GPIO172, GPIO171: 1 0 1 |
63 | * XM = GPIO173, GPIO172, GPIO171: 0 0 0 | 63 | * XMA/XMB = GPIO173, GPIO172, GPIO171: 0 0 0 |
64 | * XMC = GPIO173, GPIO172, GPIO171: 0 1 0 | ||
64 | */ | 65 | */ |
65 | enum { | 66 | enum { |
66 | OMAP3BEAGLE_BOARD_UNKN = 0, | 67 | OMAP3BEAGLE_BOARD_UNKN = 0, |
@@ -68,14 +69,26 @@ enum { | |||
68 | OMAP3BEAGLE_BOARD_C1_3, | 69 | OMAP3BEAGLE_BOARD_C1_3, |
69 | OMAP3BEAGLE_BOARD_C4, | 70 | OMAP3BEAGLE_BOARD_C4, |
70 | OMAP3BEAGLE_BOARD_XM, | 71 | OMAP3BEAGLE_BOARD_XM, |
72 | OMAP3BEAGLE_BOARD_XMC, | ||
71 | }; | 73 | }; |
72 | 74 | ||
73 | static u8 omap3_beagle_version; | 75 | static u8 omap3_beagle_version; |
74 | 76 | ||
75 | static u8 omap3_beagle_get_rev(void) | 77 | /* |
76 | { | 78 | * Board-specific configuration |
77 | return omap3_beagle_version; | 79 | * Defaults to BeagleBoard-xMC |
78 | } | 80 | */ |
81 | static struct { | ||
82 | int mmc1_gpio_wp; | ||
83 | int usb_pwr_level; | ||
84 | int reset_gpio; | ||
85 | int usr_button_gpio; | ||
86 | } beagle_config = { | ||
87 | .mmc1_gpio_wp = -EINVAL, | ||
88 | .usb_pwr_level = GPIOF_OUT_INIT_LOW, | ||
89 | .reset_gpio = 129, | ||
90 | .usr_button_gpio = 4, | ||
91 | }; | ||
79 | 92 | ||
80 | static struct gpio omap3_beagle_rev_gpios[] __initdata = { | 93 | static struct gpio omap3_beagle_rev_gpios[] __initdata = { |
81 | { 171, GPIOF_IN, "rev_id_0" }, | 94 | { 171, GPIOF_IN, "rev_id_0" }, |
@@ -110,18 +123,32 @@ static void __init omap3_beagle_init_rev(void) | |||
110 | case 7: | 123 | case 7: |
111 | printk(KERN_INFO "OMAP3 Beagle Rev: Ax/Bx\n"); | 124 | printk(KERN_INFO "OMAP3 Beagle Rev: Ax/Bx\n"); |
112 | omap3_beagle_version = OMAP3BEAGLE_BOARD_AXBX; | 125 | omap3_beagle_version = OMAP3BEAGLE_BOARD_AXBX; |
126 | beagle_config.mmc1_gpio_wp = 29; | ||
127 | beagle_config.reset_gpio = 170; | ||
128 | beagle_config.usr_button_gpio = 7; | ||
113 | break; | 129 | break; |
114 | case 6: | 130 | case 6: |
115 | printk(KERN_INFO "OMAP3 Beagle Rev: C1/C2/C3\n"); | 131 | printk(KERN_INFO "OMAP3 Beagle Rev: C1/C2/C3\n"); |
116 | omap3_beagle_version = OMAP3BEAGLE_BOARD_C1_3; | 132 | omap3_beagle_version = OMAP3BEAGLE_BOARD_C1_3; |
133 | beagle_config.mmc1_gpio_wp = 23; | ||
134 | beagle_config.reset_gpio = 170; | ||
135 | beagle_config.usr_button_gpio = 7; | ||
117 | break; | 136 | break; |
118 | case 5: | 137 | case 5: |
119 | printk(KERN_INFO "OMAP3 Beagle Rev: C4\n"); | 138 | printk(KERN_INFO "OMAP3 Beagle Rev: C4\n"); |
120 | omap3_beagle_version = OMAP3BEAGLE_BOARD_C4; | 139 | omap3_beagle_version = OMAP3BEAGLE_BOARD_C4; |
140 | beagle_config.mmc1_gpio_wp = 23; | ||
141 | beagle_config.reset_gpio = 170; | ||
142 | beagle_config.usr_button_gpio = 7; | ||
121 | break; | 143 | break; |
122 | case 0: | 144 | case 0: |
123 | printk(KERN_INFO "OMAP3 Beagle Rev: xM\n"); | 145 | printk(KERN_INFO "OMAP3 Beagle Rev: xM Ax/Bx\n"); |
124 | omap3_beagle_version = OMAP3BEAGLE_BOARD_XM; | 146 | omap3_beagle_version = OMAP3BEAGLE_BOARD_XM; |
147 | beagle_config.usb_pwr_level = GPIOF_OUT_INIT_HIGH; | ||
148 | break; | ||
149 | case 2: | ||
150 | printk(KERN_INFO "OMAP3 Beagle Rev: xM C\n"); | ||
151 | omap3_beagle_version = OMAP3BEAGLE_BOARD_XMC; | ||
125 | break; | 152 | break; |
126 | default: | 153 | default: |
127 | printk(KERN_INFO "OMAP3 Beagle Rev: unknown %hd\n", beagle_rev); | 154 | printk(KERN_INFO "OMAP3 Beagle Rev: unknown %hd\n", beagle_rev); |
@@ -225,7 +252,7 @@ static struct omap2_hsmmc_info mmc[] = { | |||
225 | { | 252 | { |
226 | .mmc = 1, | 253 | .mmc = 1, |
227 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, | 254 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
228 | .gpio_wp = 29, | 255 | .gpio_wp = -EINVAL, |
229 | }, | 256 | }, |
230 | {} /* Terminator */ | 257 | {} /* Terminator */ |
231 | }; | 258 | }; |
@@ -243,17 +270,11 @@ static struct gpio_led gpio_leds[]; | |||
243 | static int beagle_twl_gpio_setup(struct device *dev, | 270 | static int beagle_twl_gpio_setup(struct device *dev, |
244 | unsigned gpio, unsigned ngpio) | 271 | unsigned gpio, unsigned ngpio) |
245 | { | 272 | { |
246 | int r, usb_pwr_level; | 273 | int r; |
247 | 274 | ||
248 | if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) { | 275 | if (beagle_config.mmc1_gpio_wp != -EINVAL) |
249 | mmc[0].gpio_wp = -EINVAL; | 276 | omap_mux_init_gpio(beagle_config.mmc1_gpio_wp, OMAP_PIN_INPUT); |
250 | } else if ((omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C1_3) || | 277 | mmc[0].gpio_wp = beagle_config.mmc1_gpio_wp; |
251 | (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C4)) { | ||
252 | omap_mux_init_gpio(23, OMAP_PIN_INPUT); | ||
253 | mmc[0].gpio_wp = 23; | ||
254 | } else { | ||
255 | omap_mux_init_gpio(29, OMAP_PIN_INPUT); | ||
256 | } | ||
257 | /* gpio + 0 is "mmc0_cd" (input/IRQ) */ | 278 | /* gpio + 0 is "mmc0_cd" (input/IRQ) */ |
258 | mmc[0].gpio_cd = gpio + 0; | 279 | mmc[0].gpio_cd = gpio + 0; |
259 | omap2_hsmmc_init(mmc); | 280 | omap2_hsmmc_init(mmc); |
@@ -263,9 +284,8 @@ static int beagle_twl_gpio_setup(struct device *dev, | |||
263 | * high / others active low) | 284 | * high / others active low) |
264 | * DVI reset GPIO is different between beagle revisions | 285 | * DVI reset GPIO is different between beagle revisions |
265 | */ | 286 | */ |
266 | if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) { | 287 | /* Valid for all -xM revisions */ |
267 | usb_pwr_level = GPIOF_OUT_INIT_HIGH; | 288 | if (cpu_is_omap3630()) { |
268 | beagle_dvi_device.reset_gpio = 129; | ||
269 | /* | 289 | /* |
270 | * gpio + 1 on Xm controls the TFP410's enable line (active low) | 290 | * gpio + 1 on Xm controls the TFP410's enable line (active low) |
271 | * gpio + 2 control varies depending on the board rev as below: | 291 | * gpio + 2 control varies depending on the board rev as below: |
@@ -283,8 +303,6 @@ static int beagle_twl_gpio_setup(struct device *dev, | |||
283 | pr_err("%s: unable to configure DVI_LDO_EN\n", | 303 | pr_err("%s: unable to configure DVI_LDO_EN\n", |
284 | __func__); | 304 | __func__); |
285 | } else { | 305 | } else { |
286 | usb_pwr_level = GPIOF_OUT_INIT_LOW; | ||
287 | beagle_dvi_device.reset_gpio = 170; | ||
288 | /* | 306 | /* |
289 | * REVISIT: need ehci-omap hooks for external VBUS | 307 | * REVISIT: need ehci-omap hooks for external VBUS |
290 | * power switch and overcurrent detect | 308 | * power switch and overcurrent detect |
@@ -292,8 +310,10 @@ static int beagle_twl_gpio_setup(struct device *dev, | |||
292 | if (gpio_request_one(gpio + 1, GPIOF_IN, "EHCI_nOC")) | 310 | if (gpio_request_one(gpio + 1, GPIOF_IN, "EHCI_nOC")) |
293 | pr_err("%s: unable to configure EHCI_nOC\n", __func__); | 311 | pr_err("%s: unable to configure EHCI_nOC\n", __func__); |
294 | } | 312 | } |
313 | beagle_dvi_device.reset_gpio = beagle_config.reset_gpio; | ||
295 | 314 | ||
296 | gpio_request_one(gpio + TWL4030_GPIO_MAX, usb_pwr_level, "nEN_USB_PWR"); | 315 | gpio_request_one(gpio + TWL4030_GPIO_MAX, beagle_config.usb_pwr_level, |
316 | "nEN_USB_PWR"); | ||
297 | 317 | ||
298 | /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ | 318 | /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ |
299 | gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; | 319 | gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; |
@@ -404,7 +424,8 @@ static struct platform_device leds_gpio = { | |||
404 | static struct gpio_keys_button gpio_buttons[] = { | 424 | static struct gpio_keys_button gpio_buttons[] = { |
405 | { | 425 | { |
406 | .code = BTN_EXTRA, | 426 | .code = BTN_EXTRA, |
407 | .gpio = 7, | 427 | /* Dynamically assigned depending on board */ |
428 | .gpio = -EINVAL, | ||
408 | .desc = "user", | 429 | .desc = "user", |
409 | .wakeup = 1, | 430 | .wakeup = 1, |
410 | }, | 431 | }, |
@@ -468,8 +489,8 @@ static void __init beagle_opp_init(void) | |||
468 | return; | 489 | return; |
469 | } | 490 | } |
470 | 491 | ||
471 | /* Custom OPP enabled for XM */ | 492 | /* Custom OPP enabled for all xM versions */ |
472 | if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) { | 493 | if (cpu_is_omap3630()) { |
473 | struct omap_hwmod *mh = omap_hwmod_lookup("mpu"); | 494 | struct omap_hwmod *mh = omap_hwmod_lookup("mpu"); |
474 | struct omap_hwmod *dh = omap_hwmod_lookup("iva"); | 495 | struct omap_hwmod *dh = omap_hwmod_lookup("iva"); |
475 | struct device *dev; | 496 | struct device *dev; |
@@ -509,6 +530,9 @@ static void __init omap3_beagle_init(void) | |||
509 | omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); | 530 | omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); |
510 | omap3_beagle_init_rev(); | 531 | omap3_beagle_init_rev(); |
511 | omap3_beagle_i2c_init(); | 532 | omap3_beagle_i2c_init(); |
533 | |||
534 | gpio_buttons[0].gpio = beagle_config.usr_button_gpio; | ||
535 | |||
512 | platform_add_devices(omap3_beagle_devices, | 536 | platform_add_devices(omap3_beagle_devices, |
513 | ARRAY_SIZE(omap3_beagle_devices)); | 537 | ARRAY_SIZE(omap3_beagle_devices)); |
514 | omap_display_init(&beagle_dss_data); | 538 | omap_display_init(&beagle_dss_data); |
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c index bdb24db36004..0c9e0f28ed07 100644 --- a/arch/arm/mach-omap2/board-rx51-peripherals.c +++ b/arch/arm/mach-omap2/board-rx51-peripherals.c | |||
@@ -39,6 +39,7 @@ | |||
39 | #include <sound/tpa6130a2-plat.h> | 39 | #include <sound/tpa6130a2-plat.h> |
40 | #include <media/radio-si4713.h> | 40 | #include <media/radio-si4713.h> |
41 | #include <media/si4713.h> | 41 | #include <media/si4713.h> |
42 | #include <linux/leds-lp5523.h> | ||
42 | 43 | ||
43 | #include <../drivers/staging/iio/light/tsl2563.h> | 44 | #include <../drivers/staging/iio/light/tsl2563.h> |
44 | 45 | ||
@@ -53,6 +54,7 @@ | |||
53 | #define RX51_WL1251_IRQ_GPIO 42 | 54 | #define RX51_WL1251_IRQ_GPIO 42 |
54 | #define RX51_FMTX_RESET_GPIO 163 | 55 | #define RX51_FMTX_RESET_GPIO 163 |
55 | #define RX51_FMTX_IRQ 53 | 56 | #define RX51_FMTX_IRQ 53 |
57 | #define RX51_LP5523_CHIP_EN_GPIO 41 | ||
56 | 58 | ||
57 | #define RX51_USB_TRANSCEIVER_RST_GPIO 67 | 59 | #define RX51_USB_TRANSCEIVER_RST_GPIO 67 |
58 | 60 | ||
@@ -71,6 +73,64 @@ static struct tsl2563_platform_data rx51_tsl2563_platform_data = { | |||
71 | }; | 73 | }; |
72 | #endif | 74 | #endif |
73 | 75 | ||
76 | #if defined(CONFIG_LEDS_LP5523) || defined(CONFIG_LEDS_LP5523_MODULE) | ||
77 | static struct lp5523_led_config rx51_lp5523_led_config[] = { | ||
78 | { | ||
79 | .chan_nr = 0, | ||
80 | .led_current = 50, | ||
81 | }, { | ||
82 | .chan_nr = 1, | ||
83 | .led_current = 50, | ||
84 | }, { | ||
85 | .chan_nr = 2, | ||
86 | .led_current = 50, | ||
87 | }, { | ||
88 | .chan_nr = 3, | ||
89 | .led_current = 50, | ||
90 | }, { | ||
91 | .chan_nr = 4, | ||
92 | .led_current = 50, | ||
93 | }, { | ||
94 | .chan_nr = 5, | ||
95 | .led_current = 50, | ||
96 | }, { | ||
97 | .chan_nr = 6, | ||
98 | .led_current = 50, | ||
99 | }, { | ||
100 | .chan_nr = 7, | ||
101 | .led_current = 50, | ||
102 | }, { | ||
103 | .chan_nr = 8, | ||
104 | .led_current = 50, | ||
105 | } | ||
106 | }; | ||
107 | |||
108 | static int rx51_lp5523_setup(void) | ||
109 | { | ||
110 | return gpio_request_one(RX51_LP5523_CHIP_EN_GPIO, GPIOF_DIR_OUT, | ||
111 | "lp5523_enable"); | ||
112 | } | ||
113 | |||
114 | static void rx51_lp5523_release(void) | ||
115 | { | ||
116 | gpio_free(RX51_LP5523_CHIP_EN_GPIO); | ||
117 | } | ||
118 | |||
119 | static void rx51_lp5523_enable(bool state) | ||
120 | { | ||
121 | gpio_set_value(RX51_LP5523_CHIP_EN_GPIO, !!state); | ||
122 | } | ||
123 | |||
124 | static struct lp5523_platform_data rx51_lp5523_platform_data = { | ||
125 | .led_config = rx51_lp5523_led_config, | ||
126 | .num_channels = ARRAY_SIZE(rx51_lp5523_led_config), | ||
127 | .clock_mode = LP5523_CLOCK_AUTO, | ||
128 | .setup_resources = rx51_lp5523_setup, | ||
129 | .release_resources = rx51_lp5523_release, | ||
130 | .enable = rx51_lp5523_enable, | ||
131 | }; | ||
132 | #endif | ||
133 | |||
74 | static struct omap2_mcspi_device_config wl1251_mcspi_config = { | 134 | static struct omap2_mcspi_device_config wl1251_mcspi_config = { |
75 | .turbo_mode = 0, | 135 | .turbo_mode = 0, |
76 | .single_channel = 1, | 136 | .single_channel = 1, |
@@ -495,6 +555,32 @@ static struct regulator_init_data rx51_vmmc2 = { | |||
495 | .consumer_supplies = rx51_vmmc2_supplies, | 555 | .consumer_supplies = rx51_vmmc2_supplies, |
496 | }; | 556 | }; |
497 | 557 | ||
558 | static struct regulator_init_data rx51_vpll1 = { | ||
559 | .constraints = { | ||
560 | .name = "VPLL", | ||
561 | .min_uV = 1800000, | ||
562 | .max_uV = 1800000, | ||
563 | .apply_uV = true, | ||
564 | .always_on = true, | ||
565 | .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
566 | | REGULATOR_MODE_STANDBY, | ||
567 | .valid_ops_mask = REGULATOR_CHANGE_MODE, | ||
568 | }, | ||
569 | }; | ||
570 | |||
571 | static struct regulator_init_data rx51_vpll2 = { | ||
572 | .constraints = { | ||
573 | .name = "VSDI_CSI", | ||
574 | .min_uV = 1800000, | ||
575 | .max_uV = 1800000, | ||
576 | .apply_uV = true, | ||
577 | .always_on = true, | ||
578 | .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
579 | | REGULATOR_MODE_STANDBY, | ||
580 | .valid_ops_mask = REGULATOR_CHANGE_MODE, | ||
581 | }, | ||
582 | }; | ||
583 | |||
498 | static struct regulator_init_data rx51_vsim = { | 584 | static struct regulator_init_data rx51_vsim = { |
499 | .constraints = { | 585 | .constraints = { |
500 | .name = "VMMC2_IO_18", | 586 | .name = "VMMC2_IO_18", |
@@ -524,6 +610,43 @@ static struct regulator_init_data rx51_vio = { | |||
524 | .consumer_supplies = rx51_vio_supplies, | 610 | .consumer_supplies = rx51_vio_supplies, |
525 | }; | 611 | }; |
526 | 612 | ||
613 | static struct regulator_init_data rx51_vintana1 = { | ||
614 | .constraints = { | ||
615 | .name = "VINTANA1", | ||
616 | .min_uV = 1500000, | ||
617 | .max_uV = 1500000, | ||
618 | .always_on = true, | ||
619 | .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
620 | | REGULATOR_MODE_STANDBY, | ||
621 | .valid_ops_mask = REGULATOR_CHANGE_MODE, | ||
622 | }, | ||
623 | }; | ||
624 | |||
625 | static struct regulator_init_data rx51_vintana2 = { | ||
626 | .constraints = { | ||
627 | .name = "VINTANA2", | ||
628 | .min_uV = 2750000, | ||
629 | .max_uV = 2750000, | ||
630 | .apply_uV = true, | ||
631 | .always_on = true, | ||
632 | .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
633 | | REGULATOR_MODE_STANDBY, | ||
634 | .valid_ops_mask = REGULATOR_CHANGE_MODE, | ||
635 | }, | ||
636 | }; | ||
637 | |||
638 | static struct regulator_init_data rx51_vintdig = { | ||
639 | .constraints = { | ||
640 | .name = "VINTDIG", | ||
641 | .min_uV = 1500000, | ||
642 | .max_uV = 1500000, | ||
643 | .always_on = true, | ||
644 | .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
645 | | REGULATOR_MODE_STANDBY, | ||
646 | .valid_ops_mask = REGULATOR_CHANGE_MODE, | ||
647 | }, | ||
648 | }; | ||
649 | |||
527 | static struct si4713_platform_data rx51_si4713_i2c_data __initdata_or_module = { | 650 | static struct si4713_platform_data rx51_si4713_i2c_data __initdata_or_module = { |
528 | .gpio_reset = RX51_FMTX_RESET_GPIO, | 651 | .gpio_reset = RX51_FMTX_RESET_GPIO, |
529 | }; | 652 | }; |
@@ -761,7 +884,12 @@ static struct twl4030_platform_data rx51_twldata __initdata = { | |||
761 | .vaux2 = &rx51_vaux2, | 884 | .vaux2 = &rx51_vaux2, |
762 | .vaux4 = &rx51_vaux4, | 885 | .vaux4 = &rx51_vaux4, |
763 | .vmmc1 = &rx51_vmmc1, | 886 | .vmmc1 = &rx51_vmmc1, |
887 | .vpll1 = &rx51_vpll1, | ||
888 | .vpll2 = &rx51_vpll2, | ||
764 | .vsim = &rx51_vsim, | 889 | .vsim = &rx51_vsim, |
890 | .vintana1 = &rx51_vintana1, | ||
891 | .vintana2 = &rx51_vintana2, | ||
892 | .vintdig = &rx51_vintdig, | ||
765 | .vio = &rx51_vio, | 893 | .vio = &rx51_vio, |
766 | }; | 894 | }; |
767 | 895 | ||
@@ -800,6 +928,12 @@ static struct i2c_board_info __initdata rx51_peripherals_i2c_board_info_2[] = { | |||
800 | .platform_data = &rx51_tsl2563_platform_data, | 928 | .platform_data = &rx51_tsl2563_platform_data, |
801 | }, | 929 | }, |
802 | #endif | 930 | #endif |
931 | #if defined(CONFIG_LEDS_LP5523) || defined(CONFIG_LEDS_LP5523_MODULE) | ||
932 | { | ||
933 | I2C_BOARD_INFO("lp5523", 0x32), | ||
934 | .platform_data = &rx51_lp5523_platform_data, | ||
935 | }, | ||
936 | #endif | ||
803 | { | 937 | { |
804 | I2C_BOARD_INFO("tpa6130a2", 0x60), | 938 | I2C_BOARD_INFO("tpa6130a2", 0x60), |
805 | .platform_data = &rx51_tpa6130a2_data, | 939 | .platform_data = &rx51_tpa6130a2_data, |
@@ -950,6 +1084,7 @@ error: | |||
950 | void __init rx51_peripherals_init(void) | 1084 | void __init rx51_peripherals_init(void) |
951 | { | 1085 | { |
952 | rx51_i2c_init(); | 1086 | rx51_i2c_init(); |
1087 | regulator_has_full_constraints(); | ||
953 | gpmc_onenand_init(board_onenand_data); | 1088 | gpmc_onenand_init(board_onenand_data); |
954 | board_smc91x_init(); | 1089 | board_smc91x_init(); |
955 | rx51_add_gpio_keys(); | 1090 | rx51_add_gpio_keys(); |
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 5b8ca680ed93..1077ad663f93 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
@@ -230,7 +230,7 @@ struct omap_device_pm_latency omap_keyboard_latency[] = { | |||
230 | }; | 230 | }; |
231 | 231 | ||
232 | int __init omap4_keyboard_init(struct omap4_keypad_platform_data | 232 | int __init omap4_keyboard_init(struct omap4_keypad_platform_data |
233 | *sdp4430_keypad_data) | 233 | *sdp4430_keypad_data, struct omap_board_data *bdata) |
234 | { | 234 | { |
235 | struct omap_device *od; | 235 | struct omap_device *od; |
236 | struct omap_hwmod *oh; | 236 | struct omap_hwmod *oh; |
@@ -257,6 +257,7 @@ int __init omap4_keyboard_init(struct omap4_keypad_platform_data | |||
257 | name, oh->name); | 257 | name, oh->name); |
258 | return PTR_ERR(od); | 258 | return PTR_ERR(od); |
259 | } | 259 | } |
260 | oh->mux = omap_hwmod_mux_init(bdata->pads, bdata->pads_cnt); | ||
260 | 261 | ||
261 | return 0; | 262 | return 0; |
262 | } | 263 | } |