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 | |
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
-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 | ||||
-rw-r--r-- | arch/arm/mach-s3c64xx/Kconfig | 23 | ||||
-rw-r--r-- | arch/arm/mach-s3c64xx/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-s3c64xx/include/mach/irqs.h | 4 | ||||
-rw-r--r-- | arch/arm/mach-s3c64xx/mach-crag6410.c | 774 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/omap4-keypad.h | 3 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/uncompress.h | 1 |
12 files changed, 1205 insertions, 48 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 | } |
diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig index fdc89fc3b464..f057b6ae4f90 100644 --- a/arch/arm/mach-s3c64xx/Kconfig +++ b/arch/arm/mach-s3c64xx/Kconfig | |||
@@ -267,3 +267,26 @@ config MACH_SMARTQ7 | |||
267 | select MACH_SMARTQ | 267 | select MACH_SMARTQ |
268 | help | 268 | help |
269 | Machine support for the SmartQ 7 | 269 | Machine support for the SmartQ 7 |
270 | |||
271 | config MACH_WLF_CRAGG_6410 | ||
272 | bool "Wolfson Cragganmore 6410" | ||
273 | select CPU_S3C6410 | ||
274 | select S3C64XX_SETUP_SDHCI | ||
275 | select S3C64XX_SETUP_I2C1 | ||
276 | select S3C64XX_SETUP_IDE | ||
277 | select S3C64XX_SETUP_FB_24BPP | ||
278 | select S3C64XX_SETUP_KEYPAD | ||
279 | select SAMSUNG_DEV_ADC | ||
280 | select SAMSUNG_DEV_KEYPAD | ||
281 | select S3C_DEV_USB_HOST | ||
282 | select S3C_DEV_USB_HSOTG | ||
283 | select S3C_DEV_HSMMC | ||
284 | select S3C_DEV_HSMMC1 | ||
285 | select S3C_DEV_HSMMC2 | ||
286 | select S3C_DEV_I2C1 | ||
287 | select S3C_DEV_WDT | ||
288 | select S3C_DEV_RTC | ||
289 | select S3C64XX_DEV_SPI | ||
290 | select S3C24XX_GPIO_EXTRA128 | ||
291 | help | ||
292 | Machine support for the Wolfson Cragganmore S3C6410 variant. | ||
diff --git a/arch/arm/mach-s3c64xx/Makefile b/arch/arm/mach-s3c64xx/Makefile index f5a7144a052f..61b4034a0c22 100644 --- a/arch/arm/mach-s3c64xx/Makefile +++ b/arch/arm/mach-s3c64xx/Makefile | |||
@@ -55,6 +55,7 @@ obj-$(CONFIG_MACH_HMT) += mach-hmt.o | |||
55 | obj-$(CONFIG_MACH_SMARTQ) += mach-smartq.o | 55 | obj-$(CONFIG_MACH_SMARTQ) += mach-smartq.o |
56 | obj-$(CONFIG_MACH_SMARTQ5) += mach-smartq5.o | 56 | obj-$(CONFIG_MACH_SMARTQ5) += mach-smartq5.o |
57 | obj-$(CONFIG_MACH_SMARTQ7) += mach-smartq7.o | 57 | obj-$(CONFIG_MACH_SMARTQ7) += mach-smartq7.o |
58 | obj-$(CONFIG_MACH_WLF_CRAGG_6410) += mach-crag6410.o | ||
58 | 59 | ||
59 | # device support | 60 | # device support |
60 | 61 | ||
diff --git a/arch/arm/mach-s3c64xx/include/mach/irqs.h b/arch/arm/mach-s3c64xx/include/mach/irqs.h index 8e2df26cf14a..ddb63a1863ab 100644 --- a/arch/arm/mach-s3c64xx/include/mach/irqs.h +++ b/arch/arm/mach-s3c64xx/include/mach/irqs.h | |||
@@ -198,7 +198,9 @@ | |||
198 | * interrupt controllers). */ | 198 | * interrupt controllers). */ |
199 | #define IRQ_BOARD_START (IRQ_EINT_GROUP9_BASE + IRQ_EINT_GROUP9_NR + 1) | 199 | #define IRQ_BOARD_START (IRQ_EINT_GROUP9_BASE + IRQ_EINT_GROUP9_NR + 1) |
200 | 200 | ||
201 | #ifdef CONFIG_SMDK6410_WM1190_EV1 | 201 | #ifdef CONFIG_MACH_WLF_CRAGG_6410 |
202 | #define IRQ_BOARD_NR 128 | ||
203 | #elif defined(CONFIG_SMDK6410_WM1190_EV1) | ||
202 | #define IRQ_BOARD_NR 64 | 204 | #define IRQ_BOARD_NR 64 |
203 | #elif defined(CONFIG_SMDK6410_WM1192_EV1) | 205 | #elif defined(CONFIG_SMDK6410_WM1192_EV1) |
204 | #define IRQ_BOARD_NR 64 | 206 | #define IRQ_BOARD_NR 64 |
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c new file mode 100644 index 000000000000..9026249233ad --- /dev/null +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c | |||
@@ -0,0 +1,774 @@ | |||
1 | /* linux/arch/arm/mach-s3c64xx/mach-crag6410.c | ||
2 | * | ||
3 | * Copyright 2011 Wolfson Microelectronics plc | ||
4 | * Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
5 | * | ||
6 | * Copyright 2011 Simtec Electronics | ||
7 | * Ben Dooks <ben@simtec.co.uk> | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License version 2 as | ||
11 | * published by the Free Software Foundation. | ||
12 | */ | ||
13 | |||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/list.h> | ||
16 | #include <linux/serial_core.h> | ||
17 | #include <linux/platform_device.h> | ||
18 | #include <linux/fb.h> | ||
19 | #include <linux/io.h> | ||
20 | #include <linux/init.h> | ||
21 | #include <linux/gpio.h> | ||
22 | #include <linux/delay.h> | ||
23 | #include <linux/regulator/machine.h> | ||
24 | #include <linux/regulator/fixed.h> | ||
25 | #include <linux/pwm_backlight.h> | ||
26 | #include <linux/dm9000.h> | ||
27 | #include <linux/gpio_keys.h> | ||
28 | #include <linux/basic_mmio_gpio.h> | ||
29 | #include <linux/spi/spi.h> | ||
30 | |||
31 | #include <linux/i2c/pca953x.h> | ||
32 | |||
33 | #include <video/platform_lcd.h> | ||
34 | |||
35 | #include <linux/mfd/wm831x/core.h> | ||
36 | #include <linux/mfd/wm831x/pdata.h> | ||
37 | #include <linux/mfd/wm831x/irq.h> | ||
38 | #include <linux/mfd/wm831x/gpio.h> | ||
39 | |||
40 | #include <asm/mach/arch.h> | ||
41 | #include <asm/mach-types.h> | ||
42 | |||
43 | #include <mach/hardware.h> | ||
44 | #include <mach/map.h> | ||
45 | |||
46 | #include <mach/s3c6410.h> | ||
47 | #include <mach/regs-sys.h> | ||
48 | #include <mach/regs-gpio.h> | ||
49 | #include <mach/regs-modem.h> | ||
50 | |||
51 | #include <mach/regs-gpio-memport.h> | ||
52 | |||
53 | #include <plat/regs-serial.h> | ||
54 | #include <plat/regs-fb-v4.h> | ||
55 | #include <plat/fb.h> | ||
56 | #include <plat/sdhci.h> | ||
57 | #include <plat/gpio-cfg.h> | ||
58 | #include <plat/s3c64xx-spi.h> | ||
59 | |||
60 | #include <plat/keypad.h> | ||
61 | #include <plat/clock.h> | ||
62 | #include <plat/devs.h> | ||
63 | #include <plat/cpu.h> | ||
64 | #include <plat/adc.h> | ||
65 | #include <plat/iic.h> | ||
66 | #include <plat/pm.h> | ||
67 | |||
68 | #include <sound/wm8915.h> | ||
69 | #include <sound/wm8962.h> | ||
70 | #include <sound/wm9081.h> | ||
71 | |||
72 | #define BANFF_PMIC_IRQ_BASE IRQ_BOARD_START | ||
73 | #define GLENFARCLAS_PMIC_IRQ_BASE (IRQ_BOARD_START + 64) | ||
74 | |||
75 | #define PCA935X_GPIO_BASE GPIO_BOARD_START | ||
76 | #define CODEC_GPIO_BASE (GPIO_BOARD_START + 8) | ||
77 | #define GLENFARCLAS_PMIC_GPIO_BASE (GPIO_BOARD_START + 16) | ||
78 | |||
79 | /* serial port setup */ | ||
80 | |||
81 | #define UCON (S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK) | ||
82 | #define ULCON (S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB) | ||
83 | #define UFCON (S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE) | ||
84 | |||
85 | static struct s3c2410_uartcfg crag6410_uartcfgs[] __initdata = { | ||
86 | [0] = { | ||
87 | .hwport = 0, | ||
88 | .flags = 0, | ||
89 | .ucon = UCON, | ||
90 | .ulcon = ULCON, | ||
91 | .ufcon = UFCON, | ||
92 | }, | ||
93 | [1] = { | ||
94 | .hwport = 1, | ||
95 | .flags = 0, | ||
96 | .ucon = UCON, | ||
97 | .ulcon = ULCON, | ||
98 | .ufcon = UFCON, | ||
99 | }, | ||
100 | [2] = { | ||
101 | .hwport = 2, | ||
102 | .flags = 0, | ||
103 | .ucon = UCON, | ||
104 | .ulcon = ULCON, | ||
105 | .ufcon = UFCON, | ||
106 | }, | ||
107 | [3] = { | ||
108 | .hwport = 3, | ||
109 | .flags = 0, | ||
110 | .ucon = UCON, | ||
111 | .ulcon = ULCON, | ||
112 | .ufcon = UFCON, | ||
113 | }, | ||
114 | }; | ||
115 | |||
116 | static struct platform_pwm_backlight_data crag6410_backlight_data = { | ||
117 | .pwm_id = 0, | ||
118 | .max_brightness = 1000, | ||
119 | .dft_brightness = 600, | ||
120 | .pwm_period_ns = 100000, /* about 1kHz */ | ||
121 | }; | ||
122 | |||
123 | static struct platform_device crag6410_backlight_device = { | ||
124 | .name = "pwm-backlight", | ||
125 | .id = -1, | ||
126 | .dev = { | ||
127 | .parent = &s3c_device_timer[0].dev, | ||
128 | .platform_data = &crag6410_backlight_data, | ||
129 | }, | ||
130 | }; | ||
131 | |||
132 | static void crag6410_lcd_power_set(struct plat_lcd_data *pd, unsigned int power) | ||
133 | { | ||
134 | pr_debug("%s: setting power %d\n", __func__, power); | ||
135 | |||
136 | if (power) { | ||
137 | gpio_set_value(S3C64XX_GPB(0), 1); | ||
138 | msleep(1); | ||
139 | s3c_gpio_cfgpin(S3C64XX_GPF(14), S3C_GPIO_SFN(2)); | ||
140 | } else { | ||
141 | gpio_direction_output(S3C64XX_GPF(14), 0); | ||
142 | gpio_set_value(S3C64XX_GPB(0), 0); | ||
143 | } | ||
144 | } | ||
145 | |||
146 | static struct platform_device crag6410_lcd_powerdev = { | ||
147 | .name = "platform-lcd", | ||
148 | .id = -1, | ||
149 | .dev.parent = &s3c_device_fb.dev, | ||
150 | .dev.platform_data = &(struct plat_lcd_data) { | ||
151 | .set_power = crag6410_lcd_power_set, | ||
152 | }, | ||
153 | }; | ||
154 | |||
155 | /* 640x480 URT */ | ||
156 | static struct s3c_fb_pd_win crag6410_fb_win0 = { | ||
157 | /* this is to ensure we use win0 */ | ||
158 | .win_mode = { | ||
159 | .left_margin = 150, | ||
160 | .right_margin = 80, | ||
161 | .upper_margin = 40, | ||
162 | .lower_margin = 5, | ||
163 | .hsync_len = 40, | ||
164 | .vsync_len = 5, | ||
165 | .xres = 640, | ||
166 | .yres = 480, | ||
167 | }, | ||
168 | .max_bpp = 32, | ||
169 | .default_bpp = 16, | ||
170 | .virtual_y = 480 * 2, | ||
171 | .virtual_x = 640, | ||
172 | }; | ||
173 | |||
174 | /* 405566 clocks per frame => 60Hz refresh requires 24333960Hz clock */ | ||
175 | static struct s3c_fb_platdata crag6410_lcd_pdata __initdata = { | ||
176 | .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, | ||
177 | .win[0] = &crag6410_fb_win0, | ||
178 | .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB, | ||
179 | .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC, | ||
180 | }; | ||
181 | |||
182 | /* 2x6 keypad */ | ||
183 | |||
184 | static uint32_t crag6410_keymap[] __initdata = { | ||
185 | /* KEY(row, col, keycode) */ | ||
186 | KEY(0, 0, KEY_VOLUMEUP), | ||
187 | KEY(0, 1, KEY_HOME), | ||
188 | KEY(0, 2, KEY_VOLUMEDOWN), | ||
189 | KEY(0, 3, KEY_HELP), | ||
190 | KEY(0, 4, KEY_MENU), | ||
191 | KEY(0, 5, KEY_MEDIA), | ||
192 | KEY(1, 0, 232), | ||
193 | KEY(1, 1, KEY_DOWN), | ||
194 | KEY(1, 2, KEY_LEFT), | ||
195 | KEY(1, 3, KEY_UP), | ||
196 | KEY(1, 4, KEY_RIGHT), | ||
197 | KEY(1, 5, KEY_CAMERA), | ||
198 | }; | ||
199 | |||
200 | static struct matrix_keymap_data crag6410_keymap_data __initdata = { | ||
201 | .keymap = crag6410_keymap, | ||
202 | .keymap_size = ARRAY_SIZE(crag6410_keymap), | ||
203 | }; | ||
204 | |||
205 | static struct samsung_keypad_platdata crag6410_keypad_data __initdata = { | ||
206 | .keymap_data = &crag6410_keymap_data, | ||
207 | .rows = 2, | ||
208 | .cols = 6, | ||
209 | }; | ||
210 | |||
211 | static struct gpio_keys_button crag6410_gpio_keys[] = { | ||
212 | [0] = { | ||
213 | .code = KEY_SUSPEND, | ||
214 | .gpio = S3C64XX_GPL(10), /* EINT 18 */ | ||
215 | .type = EV_KEY, | ||
216 | .wakeup = 1, | ||
217 | .active_low = 1, | ||
218 | }, | ||
219 | [1] = { | ||
220 | .code = SW_FRONT_PROXIMITY, | ||
221 | .gpio = S3C64XX_GPN(11), /* EINT 11 */ | ||
222 | .type = EV_SW, | ||
223 | }, | ||
224 | }; | ||
225 | |||
226 | static struct gpio_keys_platform_data crag6410_gpio_keydata = { | ||
227 | .buttons = crag6410_gpio_keys, | ||
228 | .nbuttons = ARRAY_SIZE(crag6410_gpio_keys), | ||
229 | }; | ||
230 | |||
231 | static struct platform_device crag6410_gpio_keydev = { | ||
232 | .name = "gpio-keys", | ||
233 | .id = 0, | ||
234 | .dev.platform_data = &crag6410_gpio_keydata, | ||
235 | }; | ||
236 | |||
237 | static struct resource crag6410_dm9k_resource[] = { | ||
238 | [0] = { | ||
239 | .start = S3C64XX_PA_XM0CSN5, | ||
240 | .end = S3C64XX_PA_XM0CSN5 + 1, | ||
241 | .flags = IORESOURCE_MEM, | ||
242 | }, | ||
243 | [1] = { | ||
244 | .start = S3C64XX_PA_XM0CSN5 + (1 << 8), | ||
245 | .end = S3C64XX_PA_XM0CSN5 + (1 << 8) + 1, | ||
246 | .flags = IORESOURCE_MEM, | ||
247 | }, | ||
248 | [2] = { | ||
249 | .start = S3C_EINT(17), | ||
250 | .end = S3C_EINT(17), | ||
251 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
252 | }, | ||
253 | }; | ||
254 | |||
255 | static struct dm9000_plat_data mini6410_dm9k_pdata = { | ||
256 | .flags = DM9000_PLATF_16BITONLY, | ||
257 | }; | ||
258 | |||
259 | static struct platform_device crag6410_dm9k_device = { | ||
260 | .name = "dm9000", | ||
261 | .id = -1, | ||
262 | .num_resources = ARRAY_SIZE(crag6410_dm9k_resource), | ||
263 | .resource = crag6410_dm9k_resource, | ||
264 | .dev.platform_data = &mini6410_dm9k_pdata, | ||
265 | }; | ||
266 | |||
267 | static struct resource crag6410_mmgpio_resource[] = { | ||
268 | [0] = { | ||
269 | .start = S3C64XX_PA_XM0CSN4 + 1, | ||
270 | .end = S3C64XX_PA_XM0CSN4 + 1, | ||
271 | .flags = IORESOURCE_MEM, | ||
272 | }, | ||
273 | }; | ||
274 | |||
275 | static struct platform_device crag6410_mmgpio = { | ||
276 | .name = "basic-mmio-gpio", | ||
277 | .id = -1, | ||
278 | .resource = crag6410_mmgpio_resource, | ||
279 | .num_resources = ARRAY_SIZE(crag6410_mmgpio_resource), | ||
280 | .dev.platform_data = &(struct bgpio_pdata) { | ||
281 | .base = -1, | ||
282 | }, | ||
283 | }; | ||
284 | |||
285 | static struct platform_device speyside_device = { | ||
286 | .name = "speyside", | ||
287 | .id = -1, | ||
288 | }; | ||
289 | |||
290 | static struct platform_device speyside_wm8962_device = { | ||
291 | .name = "speyside-wm8962", | ||
292 | .id = -1, | ||
293 | }; | ||
294 | |||
295 | static struct regulator_consumer_supply wallvdd_consumers[] = { | ||
296 | REGULATOR_SUPPLY("SPKVDD1", "1-001a"), | ||
297 | REGULATOR_SUPPLY("SPKVDD2", "1-001a"), | ||
298 | }; | ||
299 | |||
300 | static struct regulator_init_data wallvdd_data = { | ||
301 | .constraints = { | ||
302 | .always_on = 1, | ||
303 | }, | ||
304 | .num_consumer_supplies = ARRAY_SIZE(wallvdd_consumers), | ||
305 | .consumer_supplies = wallvdd_consumers, | ||
306 | }; | ||
307 | |||
308 | static struct fixed_voltage_config wallvdd_pdata = { | ||
309 | .supply_name = "WALLVDD", | ||
310 | .microvolts = 5000000, | ||
311 | .init_data = &wallvdd_data, | ||
312 | .gpio = -EINVAL, | ||
313 | }; | ||
314 | |||
315 | static struct platform_device wallvdd_device = { | ||
316 | .name = "reg-fixed-voltage", | ||
317 | .id = -1, | ||
318 | .dev = { | ||
319 | .platform_data = &wallvdd_pdata, | ||
320 | }, | ||
321 | }; | ||
322 | |||
323 | static struct platform_device *crag6410_devices[] __initdata = { | ||
324 | &s3c_device_hsmmc0, | ||
325 | &s3c_device_hsmmc1, | ||
326 | &s3c_device_hsmmc2, | ||
327 | &s3c_device_i2c0, | ||
328 | &s3c_device_i2c1, | ||
329 | &s3c_device_fb, | ||
330 | &s3c_device_ohci, | ||
331 | &s3c_device_usb_hsotg, | ||
332 | &s3c_device_adc, | ||
333 | &s3c_device_rtc, | ||
334 | &s3c_device_ts, | ||
335 | &s3c_device_timer[0], | ||
336 | &s3c64xx_device_iis0, | ||
337 | &s3c64xx_device_iis1, | ||
338 | &samsung_asoc_dma, | ||
339 | &samsung_device_keypad, | ||
340 | &crag6410_gpio_keydev, | ||
341 | &crag6410_dm9k_device, | ||
342 | &s3c64xx_device_spi0, | ||
343 | &crag6410_mmgpio, | ||
344 | &crag6410_lcd_powerdev, | ||
345 | &crag6410_backlight_device, | ||
346 | &speyside_device, | ||
347 | &speyside_wm8962_device, | ||
348 | &wallvdd_device, | ||
349 | }; | ||
350 | |||
351 | static struct pca953x_platform_data crag6410_pca_data = { | ||
352 | .gpio_base = PCA935X_GPIO_BASE, | ||
353 | .irq_base = 0, | ||
354 | }; | ||
355 | |||
356 | static struct regulator_consumer_supply vddarm_consumers[] __initdata = { | ||
357 | REGULATOR_SUPPLY("vddarm", NULL), | ||
358 | }; | ||
359 | |||
360 | static struct regulator_init_data vddarm __initdata = { | ||
361 | .constraints = { | ||
362 | .name = "VDDARM", | ||
363 | .min_uV = 1000000, | ||
364 | .max_uV = 1300000, | ||
365 | .always_on = 1, | ||
366 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, | ||
367 | }, | ||
368 | .num_consumer_supplies = ARRAY_SIZE(vddarm_consumers), | ||
369 | .consumer_supplies = vddarm_consumers, | ||
370 | .supply_regulator = "WALLVDD", | ||
371 | }; | ||
372 | |||
373 | static struct regulator_init_data vddint __initdata = { | ||
374 | .constraints = { | ||
375 | .name = "VDDINT", | ||
376 | .min_uV = 1000000, | ||
377 | .max_uV = 1200000, | ||
378 | .always_on = 1, | ||
379 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, | ||
380 | }, | ||
381 | }; | ||
382 | |||
383 | static struct regulator_init_data vddmem __initdata = { | ||
384 | .constraints = { | ||
385 | .name = "VDDMEM", | ||
386 | .always_on = 1, | ||
387 | }, | ||
388 | }; | ||
389 | |||
390 | static struct regulator_init_data vddsys __initdata = { | ||
391 | .constraints = { | ||
392 | .name = "VDDSYS,VDDEXT,VDDPCM,VDDSS", | ||
393 | .always_on = 1, | ||
394 | }, | ||
395 | }; | ||
396 | |||
397 | static struct regulator_consumer_supply vddmmc_consumers[] __initdata = { | ||
398 | REGULATOR_SUPPLY("vmmc", "s3c-sdhci.0"), | ||
399 | REGULATOR_SUPPLY("vmmc", "s3c-sdhci.1"), | ||
400 | REGULATOR_SUPPLY("vmmc", "s3c-sdhci.2"), | ||
401 | }; | ||
402 | |||
403 | static struct regulator_init_data vddmmc __initdata = { | ||
404 | .constraints = { | ||
405 | .name = "VDDMMC,UH", | ||
406 | .always_on = 1, | ||
407 | }, | ||
408 | .num_consumer_supplies = ARRAY_SIZE(vddmmc_consumers), | ||
409 | .consumer_supplies = vddmmc_consumers, | ||
410 | .supply_regulator = "WALLVDD", | ||
411 | }; | ||
412 | |||
413 | static struct regulator_init_data vddotgi __initdata = { | ||
414 | .constraints = { | ||
415 | .name = "VDDOTGi", | ||
416 | .always_on = 1, | ||
417 | }, | ||
418 | .supply_regulator = "WALLVDD", | ||
419 | }; | ||
420 | |||
421 | static struct regulator_init_data vddotg __initdata = { | ||
422 | .constraints = { | ||
423 | .name = "VDDOTG", | ||
424 | .always_on = 1, | ||
425 | }, | ||
426 | .supply_regulator = "WALLVDD", | ||
427 | }; | ||
428 | |||
429 | static struct regulator_init_data vddhi __initdata = { | ||
430 | .constraints = { | ||
431 | .name = "VDDHI", | ||
432 | .always_on = 1, | ||
433 | }, | ||
434 | .supply_regulator = "WALLVDD", | ||
435 | }; | ||
436 | |||
437 | static struct regulator_init_data vddadc __initdata = { | ||
438 | .constraints = { | ||
439 | .name = "VDDADC,VDDDAC", | ||
440 | .always_on = 1, | ||
441 | }, | ||
442 | .supply_regulator = "WALLVDD", | ||
443 | }; | ||
444 | |||
445 | static struct regulator_init_data vddmem0 __initdata = { | ||
446 | .constraints = { | ||
447 | .name = "VDDMEM0", | ||
448 | .always_on = 1, | ||
449 | }, | ||
450 | .supply_regulator = "WALLVDD", | ||
451 | }; | ||
452 | |||
453 | static struct regulator_init_data vddpll __initdata = { | ||
454 | .constraints = { | ||
455 | .name = "VDDPLL", | ||
456 | .always_on = 1, | ||
457 | }, | ||
458 | .supply_regulator = "WALLVDD", | ||
459 | }; | ||
460 | |||
461 | static struct regulator_init_data vddlcd __initdata = { | ||
462 | .constraints = { | ||
463 | .name = "VDDLCD", | ||
464 | .always_on = 1, | ||
465 | }, | ||
466 | .supply_regulator = "WALLVDD", | ||
467 | }; | ||
468 | |||
469 | static struct regulator_init_data vddalive __initdata = { | ||
470 | .constraints = { | ||
471 | .name = "VDDALIVE", | ||
472 | .always_on = 1, | ||
473 | }, | ||
474 | .supply_regulator = "WALLVDD", | ||
475 | }; | ||
476 | |||
477 | static struct wm831x_backup_pdata banff_backup_pdata __initdata = { | ||
478 | .charger_enable = 1, | ||
479 | .vlim = 2500, /* mV */ | ||
480 | .ilim = 200, /* uA */ | ||
481 | }; | ||
482 | |||
483 | static struct wm831x_status_pdata banff_red_led __initdata = { | ||
484 | .name = "banff:red:", | ||
485 | .default_src = WM831X_STATUS_MANUAL, | ||
486 | }; | ||
487 | |||
488 | static struct wm831x_status_pdata banff_green_led __initdata = { | ||
489 | .name = "banff:green:", | ||
490 | .default_src = WM831X_STATUS_MANUAL, | ||
491 | }; | ||
492 | |||
493 | static struct wm831x_touch_pdata touch_pdata __initdata = { | ||
494 | .data_irq = S3C_EINT(26), | ||
495 | .pd_irq = S3C_EINT(27), | ||
496 | }; | ||
497 | |||
498 | static struct wm831x_pdata crag_pmic_pdata __initdata = { | ||
499 | .wm831x_num = 1, | ||
500 | .irq_base = BANFF_PMIC_IRQ_BASE, | ||
501 | .gpio_base = GPIO_BOARD_START + 8, | ||
502 | |||
503 | .backup = &banff_backup_pdata, | ||
504 | |||
505 | .gpio_defaults = { | ||
506 | /* GPIO11: Touchscreen data - CMOS, DBVDD, active high*/ | ||
507 | [10] = WM831X_GPN_POL | WM831X_GPN_ENA | 0x6, | ||
508 | /* GPIO12: Touchscreen pen down - CMOS, DBVDD, active high*/ | ||
509 | [11] = WM831X_GPN_POL | WM831X_GPN_ENA | 0x7, | ||
510 | }, | ||
511 | |||
512 | .dcdc = { | ||
513 | &vddarm, /* DCDC1 */ | ||
514 | &vddint, /* DCDC2 */ | ||
515 | &vddmem, /* DCDC3 */ | ||
516 | }, | ||
517 | |||
518 | .ldo = { | ||
519 | &vddsys, /* LDO1 */ | ||
520 | &vddmmc, /* LDO2 */ | ||
521 | NULL, /* LDO3 */ | ||
522 | &vddotgi, /* LDO4 */ | ||
523 | &vddotg, /* LDO5 */ | ||
524 | &vddhi, /* LDO6 */ | ||
525 | &vddadc, /* LDO7 */ | ||
526 | &vddmem0, /* LDO8 */ | ||
527 | &vddpll, /* LDO9 */ | ||
528 | &vddlcd, /* LDO10 */ | ||
529 | &vddalive, /* LDO11 */ | ||
530 | }, | ||
531 | |||
532 | .status = { | ||
533 | &banff_green_led, | ||
534 | &banff_red_led, | ||
535 | }, | ||
536 | |||
537 | .touch = &touch_pdata, | ||
538 | }; | ||
539 | |||
540 | static struct i2c_board_info i2c_devs0[] __initdata = { | ||
541 | { I2C_BOARD_INFO("24c08", 0x50), }, | ||
542 | { I2C_BOARD_INFO("tca6408", 0x20), | ||
543 | .platform_data = &crag6410_pca_data, | ||
544 | }, | ||
545 | { I2C_BOARD_INFO("wm8312", 0x34), | ||
546 | .platform_data = &crag_pmic_pdata, | ||
547 | .irq = S3C_EINT(23), | ||
548 | }, | ||
549 | }; | ||
550 | |||
551 | static struct s3c2410_platform_i2c i2c0_pdata = { | ||
552 | .frequency = 400000, | ||
553 | }; | ||
554 | |||
555 | static struct regulator_init_data pvdd_1v2 __initdata = { | ||
556 | .constraints = { | ||
557 | .name = "PVDD_1V2", | ||
558 | .always_on = 1, | ||
559 | }, | ||
560 | }; | ||
561 | |||
562 | static struct regulator_consumer_supply pvdd_1v8_consumers[] __initdata = { | ||
563 | REGULATOR_SUPPLY("PLLVDD", "1-001a"), | ||
564 | REGULATOR_SUPPLY("DBVDD", "1-001a"), | ||
565 | REGULATOR_SUPPLY("CPVDD", "1-001a"), | ||
566 | REGULATOR_SUPPLY("AVDD2", "1-001a"), | ||
567 | REGULATOR_SUPPLY("DCVDD", "1-001a"), | ||
568 | REGULATOR_SUPPLY("AVDD", "1-001a"), | ||
569 | }; | ||
570 | |||
571 | static struct regulator_init_data pvdd_1v8 __initdata = { | ||
572 | .constraints = { | ||
573 | .name = "PVDD_1V8", | ||
574 | .always_on = 1, | ||
575 | }, | ||
576 | |||
577 | .consumer_supplies = pvdd_1v8_consumers, | ||
578 | .num_consumer_supplies = ARRAY_SIZE(pvdd_1v8_consumers), | ||
579 | }; | ||
580 | |||
581 | static struct regulator_consumer_supply pvdd_3v3_consumers[] __initdata = { | ||
582 | REGULATOR_SUPPLY("MICVDD", "1-001a"), | ||
583 | REGULATOR_SUPPLY("AVDD1", "1-001a"), | ||
584 | }; | ||
585 | |||
586 | static struct regulator_init_data pvdd_3v3 __initdata = { | ||
587 | .constraints = { | ||
588 | .name = "PVDD_3V3", | ||
589 | .always_on = 1, | ||
590 | }, | ||
591 | |||
592 | .consumer_supplies = pvdd_3v3_consumers, | ||
593 | .num_consumer_supplies = ARRAY_SIZE(pvdd_3v3_consumers), | ||
594 | }; | ||
595 | |||
596 | static struct wm831x_pdata glenfarclas_pmic_pdata __initdata = { | ||
597 | .wm831x_num = 2, | ||
598 | .irq_base = GLENFARCLAS_PMIC_IRQ_BASE, | ||
599 | .gpio_base = GLENFARCLAS_PMIC_GPIO_BASE, | ||
600 | |||
601 | .gpio_defaults = { | ||
602 | /* GPIO1-3: IRQ inputs, rising edge triggered, CMOS */ | ||
603 | [0] = WM831X_GPN_DIR | WM831X_GPN_POL | WM831X_GPN_ENA, | ||
604 | [1] = WM831X_GPN_DIR | WM831X_GPN_POL | WM831X_GPN_ENA, | ||
605 | [2] = WM831X_GPN_DIR | WM831X_GPN_POL | WM831X_GPN_ENA, | ||
606 | }, | ||
607 | |||
608 | .dcdc = { | ||
609 | &pvdd_1v2, /* DCDC1 */ | ||
610 | &pvdd_1v8, /* DCDC2 */ | ||
611 | &pvdd_3v3, /* DCDC3 */ | ||
612 | }, | ||
613 | |||
614 | .disable_touch = true, | ||
615 | }; | ||
616 | |||
617 | static struct wm8915_retune_mobile_config wm8915_retune[] = { | ||
618 | { | ||
619 | .name = "Sub LPF", | ||
620 | .rate = 48000, | ||
621 | .regs = { | ||
622 | 0x6318, 0x6300, 0x1000, 0x0000, 0x0004, 0x2000, 0xF000, | ||
623 | 0x0000, 0x0004, 0x2000, 0xF000, 0x0000, 0x0004, 0x2000, | ||
624 | 0xF000, 0x0000, 0x0004, 0x1000, 0x0800, 0x4000 | ||
625 | }, | ||
626 | }, | ||
627 | { | ||
628 | .name = "Sub HPF", | ||
629 | .rate = 48000, | ||
630 | .regs = { | ||
631 | 0x000A, 0x6300, 0x1000, 0x0000, 0x0004, 0x2000, 0xF000, | ||
632 | 0x0000, 0x0004, 0x2000, 0xF000, 0x0000, 0x0004, 0x2000, | ||
633 | 0xF000, 0x0000, 0x0004, 0x1000, 0x0800, 0x4000 | ||
634 | }, | ||
635 | }, | ||
636 | }; | ||
637 | |||
638 | static struct wm8915_pdata wm8915_pdata __initdata = { | ||
639 | .ldo_ena = S3C64XX_GPN(7), | ||
640 | .gpio_base = CODEC_GPIO_BASE, | ||
641 | .micdet_def = 1, | ||
642 | .inl_mode = WM8915_DIFFERRENTIAL_1, | ||
643 | .inr_mode = WM8915_DIFFERRENTIAL_1, | ||
644 | |||
645 | .irq_flags = IRQF_TRIGGER_RISING, | ||
646 | |||
647 | .gpio_default = { | ||
648 | 0x8001, /* GPIO1 == ADCLRCLK1 */ | ||
649 | 0x8001, /* GPIO2 == ADCLRCLK2, input due to CPU */ | ||
650 | 0x0141, /* GPIO3 == HP_SEL */ | ||
651 | 0x0002, /* GPIO4 == IRQ */ | ||
652 | 0x020e, /* GPIO5 == CLKOUT */ | ||
653 | }, | ||
654 | |||
655 | .retune_mobile_cfgs = wm8915_retune, | ||
656 | .num_retune_mobile_cfgs = ARRAY_SIZE(wm8915_retune), | ||
657 | }; | ||
658 | |||
659 | static struct wm8962_pdata wm8962_pdata __initdata = { | ||
660 | .gpio_init = { | ||
661 | 0, | ||
662 | WM8962_GPIO_FN_OPCLK, | ||
663 | WM8962_GPIO_FN_DMICCLK, | ||
664 | 0, | ||
665 | 0x8000 | WM8962_GPIO_FN_DMICDAT, | ||
666 | WM8962_GPIO_FN_IRQ, /* Open drain mode */ | ||
667 | }, | ||
668 | .irq_active_low = true, | ||
669 | }; | ||
670 | |||
671 | static struct wm9081_pdata wm9081_pdata __initdata = { | ||
672 | .irq_high = false, | ||
673 | .irq_cmos = false, | ||
674 | }; | ||
675 | |||
676 | static struct i2c_board_info i2c_devs1[] __initdata = { | ||
677 | { I2C_BOARD_INFO("wm8311", 0x34), | ||
678 | .irq = S3C_EINT(0), | ||
679 | .platform_data = &glenfarclas_pmic_pdata }, | ||
680 | |||
681 | { I2C_BOARD_INFO("wm1250-ev1", 0x27) }, | ||
682 | { I2C_BOARD_INFO("wm8915", 0x1a), | ||
683 | .platform_data = &wm8915_pdata, | ||
684 | .irq = GLENFARCLAS_PMIC_IRQ_BASE + WM831X_IRQ_GPIO_2, | ||
685 | }, | ||
686 | { I2C_BOARD_INFO("wm9081", 0x6c), | ||
687 | .platform_data = &wm9081_pdata, }, | ||
688 | { I2C_BOARD_INFO("wm8962", 0x1a), | ||
689 | .platform_data = &wm8962_pdata, | ||
690 | .irq = GLENFARCLAS_PMIC_IRQ_BASE + WM831X_IRQ_GPIO_2, | ||
691 | }, | ||
692 | }; | ||
693 | |||
694 | static void __init crag6410_map_io(void) | ||
695 | { | ||
696 | s3c64xx_init_io(NULL, 0); | ||
697 | s3c24xx_init_clocks(12000000); | ||
698 | s3c24xx_init_uarts(crag6410_uartcfgs, ARRAY_SIZE(crag6410_uartcfgs)); | ||
699 | |||
700 | /* LCD type and Bypass set by bootloader */ | ||
701 | } | ||
702 | |||
703 | static struct s3c_sdhci_platdata crag6410_hsmmc2_pdata = { | ||
704 | .max_width = 4, | ||
705 | .cd_type = S3C_SDHCI_CD_PERMANENT, | ||
706 | }; | ||
707 | |||
708 | static struct s3c_sdhci_platdata crag6410_hsmmc1_pdata = { | ||
709 | .max_width = 4, | ||
710 | .cd_type = S3C_SDHCI_CD_GPIO, | ||
711 | .ext_cd_gpio = S3C64XX_GPF(11), | ||
712 | }; | ||
713 | |||
714 | static void crag6410_cfg_sdhci0(struct platform_device *dev, int width) | ||
715 | { | ||
716 | /* Set all the necessary GPG pins to special-function 2 */ | ||
717 | s3c_gpio_cfgrange_nopull(S3C64XX_GPG(0), 2 + width, S3C_GPIO_SFN(2)); | ||
718 | |||
719 | /* force card-detected for prototype 0 */ | ||
720 | s3c_gpio_setpull(S3C64XX_GPG(6), S3C_GPIO_PULL_DOWN); | ||
721 | } | ||
722 | |||
723 | static struct s3c_sdhci_platdata crag6410_hsmmc0_pdata = { | ||
724 | .max_width = 4, | ||
725 | .cd_type = S3C_SDHCI_CD_INTERNAL, | ||
726 | .cfg_gpio = crag6410_cfg_sdhci0, | ||
727 | }; | ||
728 | |||
729 | static void __init crag6410_machine_init(void) | ||
730 | { | ||
731 | /* Open drain IRQs need pullups */ | ||
732 | s3c_gpio_setpull(S3C64XX_GPM(0), S3C_GPIO_PULL_UP); | ||
733 | s3c_gpio_setpull(S3C64XX_GPN(0), S3C_GPIO_PULL_UP); | ||
734 | |||
735 | gpio_request(S3C64XX_GPB(0), "LCD power"); | ||
736 | gpio_direction_output(S3C64XX_GPB(0), 0); | ||
737 | |||
738 | gpio_request(S3C64XX_GPF(14), "LCD PWM"); | ||
739 | gpio_direction_output(S3C64XX_GPF(14), 0); /* turn off */ | ||
740 | |||
741 | gpio_request(S3C64XX_GPB(1), "SD power"); | ||
742 | gpio_direction_output(S3C64XX_GPB(1), 0); | ||
743 | |||
744 | gpio_request(S3C64XX_GPF(10), "nRESETSEL"); | ||
745 | gpio_direction_output(S3C64XX_GPF(10), 1); | ||
746 | |||
747 | s3c_sdhci0_set_platdata(&crag6410_hsmmc0_pdata); | ||
748 | s3c_sdhci1_set_platdata(&crag6410_hsmmc1_pdata); | ||
749 | s3c_sdhci2_set_platdata(&crag6410_hsmmc2_pdata); | ||
750 | |||
751 | s3c_i2c0_set_platdata(&i2c0_pdata); | ||
752 | s3c_i2c1_set_platdata(NULL); | ||
753 | s3c_fb_set_platdata(&crag6410_lcd_pdata); | ||
754 | |||
755 | i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0)); | ||
756 | i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1)); | ||
757 | |||
758 | samsung_keypad_set_platdata(&crag6410_keypad_data); | ||
759 | |||
760 | platform_add_devices(crag6410_devices, ARRAY_SIZE(crag6410_devices)); | ||
761 | |||
762 | regulator_has_full_constraints(); | ||
763 | |||
764 | s3c_pm_init(); | ||
765 | } | ||
766 | |||
767 | MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410") | ||
768 | /* Maintainer: Mark Brown <broonie@opensource.wolfsonmicro.com> */ | ||
769 | .boot_params = S3C64XX_PA_SDRAM + 0x100, | ||
770 | .init_irq = s3c6410_init_irq, | ||
771 | .map_io = crag6410_map_io, | ||
772 | .init_machine = crag6410_machine_init, | ||
773 | .timer = &s3c24xx_timer, | ||
774 | MACHINE_END | ||
diff --git a/arch/arm/plat-omap/include/plat/omap4-keypad.h b/arch/arm/plat-omap/include/plat/omap4-keypad.h index 2b1d9bc1eebb..9fe6c8783236 100644 --- a/arch/arm/plat-omap/include/plat/omap4-keypad.h +++ b/arch/arm/plat-omap/include/plat/omap4-keypad.h | |||
@@ -10,5 +10,6 @@ struct omap4_keypad_platform_data { | |||
10 | u8 cols; | 10 | u8 cols; |
11 | }; | 11 | }; |
12 | 12 | ||
13 | extern int omap4_keyboard_init(struct omap4_keypad_platform_data *); | 13 | extern int omap4_keyboard_init(struct omap4_keypad_platform_data *, |
14 | struct omap_board_data *); | ||
14 | #endif | 15 | #endif |
diff --git a/arch/arm/plat-omap/include/plat/uncompress.h b/arch/arm/plat-omap/include/plat/uncompress.h index ac4b60d9aa29..a067484cc4a2 100644 --- a/arch/arm/plat-omap/include/plat/uncompress.h +++ b/arch/arm/plat-omap/include/plat/uncompress.h | |||
@@ -148,6 +148,7 @@ static inline void __arch_decomp_setup(unsigned long arch_id) | |||
148 | /* omap3 based boards using UART3 */ | 148 | /* omap3 based boards using UART3 */ |
149 | DEBUG_LL_OMAP3(3, cm_t35); | 149 | DEBUG_LL_OMAP3(3, cm_t35); |
150 | DEBUG_LL_OMAP3(3, cm_t3517); | 150 | DEBUG_LL_OMAP3(3, cm_t3517); |
151 | DEBUG_LL_OMAP3(3, cm_t3730); | ||
151 | DEBUG_LL_OMAP3(3, craneboard); | 152 | DEBUG_LL_OMAP3(3, craneboard); |
152 | DEBUG_LL_OMAP3(3, devkit8000); | 153 | DEBUG_LL_OMAP3(3, devkit8000); |
153 | DEBUG_LL_OMAP3(3, igep0020); | 154 | DEBUG_LL_OMAP3(3, igep0020); |