diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-14 16:13:07 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-14 16:13:07 -0500 |
commit | ec08bdb148767f1193f5f3028749ed865ac27181 (patch) | |
tree | 03effeb02aaa21a21eaa70cd438ae301566af740 /arch | |
parent | 9cefa17e196beab300d4faf09d242de77e5900d5 (diff) | |
parent | 7d4ca85a53bab1f6f9911411be38e0486a11187a (diff) |
Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6
* 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6: (27 commits)
omap4: Fix ULPI PHY init for ES1.0 SDP
omap3: beaglexm: fix power on of DVI
omap3: igep3: Add omap_reserve functionality
omap3: beaglexm: fix DVI reset GPIO
omap3: beaglexm: fix EHCI power up GPIO dir
omap3: igep2: Add keypad support
omap3: igep3: Fix IGEP module second MMC channel power supply
omap3: igep3: Add USB EHCI support for IGEP module
omap3: clocks: Fix build error 'CK_3430ES2' undeclared here
arm: omap4: pandaboard: turn on PHY reference clock at init
omap2plus: prm: Trvial build break fix for undefined reference to 'omap2_prm_read_mod_reg'
omap2plus: voltage: Trivial linking fix for 'EINVAL' undeclared
omap2plus: voltage: Trivial linking fix 'undefined reference'
omap2plus: voltage: Trivial warning fix 'no return statement'
omap2plus: clockdomain: Trivial fix for build break because of clktrctrl_mask
arm: omap: gpio: don't access irq_desc array directly
omap2+: pm_bus: make functions used as pointers as static
OMAP: GPIO: fix _set_gpio_triggering() for OMAP2+
OMAP2+: TWL: include pm header for init protos
OMAP2+: TWL: make conversion routines static
...
Fix up conflicts in arch/arm/mach-omap2/board-omap3beagle.c ("DVI reset
GPIO" vs "use generic DPI panel driver")
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-omap2/board-4430sdp.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-igep0020.c | 33 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-igep0030.c | 85 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-omap3beagle.c | 60 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-omap4panda.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-zoom-peripherals.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clock3xxx_data.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clockdomain.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/devices.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/mux.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/mux34xx.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-omap2/mux44xx.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_twl.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-omap2/pm_bus.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-omap2/prm2xxx_3xxx.h | 63 | ||||
-rw-r--r-- | arch/arm/mach-omap2/sr_device.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/wd_timer.c | 2 | ||||
-rw-r--r-- | arch/arm/mm/Kconfig | 2 | ||||
-rw-r--r-- | arch/arm/plat-omap/gpio.c | 12 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/voltage.h | 17 |
20 files changed, 280 insertions, 51 deletions
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c index a70bdf28e2bc..07d1b20b1148 100644 --- a/arch/arm/mach-omap2/board-4430sdp.c +++ b/arch/arm/mach-omap2/board-4430sdp.c | |||
@@ -554,6 +554,7 @@ static void __init omap_sfh7741prox_init(void) | |||
554 | 554 | ||
555 | #ifdef CONFIG_OMAP_MUX | 555 | #ifdef CONFIG_OMAP_MUX |
556 | static struct omap_board_mux board_mux[] __initdata = { | 556 | static struct omap_board_mux board_mux[] __initdata = { |
557 | OMAP4_MUX(USBB2_ULPITLL_CLK, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), | ||
557 | { .reg_offset = OMAP_MUX_TERMINATOR }, | 558 | { .reg_offset = OMAP_MUX_TERMINATOR }, |
558 | }; | 559 | }; |
559 | #else | 560 | #else |
@@ -576,11 +577,12 @@ static void __init omap_4430sdp_init(void) | |||
576 | omap4_twl6030_hsmmc_init(mmc); | 577 | omap4_twl6030_hsmmc_init(mmc); |
577 | 578 | ||
578 | /* Power on the ULPI PHY */ | 579 | /* Power on the ULPI PHY */ |
579 | if (gpio_is_valid(OMAP4SDP_MDM_PWR_EN_GPIO)) { | 580 | status = gpio_request(OMAP4SDP_MDM_PWR_EN_GPIO, "USBB1 PHY VMDM_3V3"); |
580 | /* FIXME: Assumes pad is already muxed for GPIO mode */ | 581 | if (status) |
581 | gpio_request(OMAP4SDP_MDM_PWR_EN_GPIO, "USBB1 PHY VMDM_3V3"); | 582 | pr_err("%s: Could not get USBB1 PHY GPIO\n", __func__); |
583 | else | ||
582 | gpio_direction_output(OMAP4SDP_MDM_PWR_EN_GPIO, 1); | 584 | gpio_direction_output(OMAP4SDP_MDM_PWR_EN_GPIO, 1); |
583 | } | 585 | |
584 | usb_ehci_init(&ehci_pdata); | 586 | usb_ehci_init(&ehci_pdata); |
585 | usb_musb_init(&musb_board_data); | 587 | usb_musb_init(&musb_board_data); |
586 | 588 | ||
diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c index ebaa230e67ed..3be85a1f55f4 100644 --- a/arch/arm/mach-omap2/board-igep0020.c +++ b/arch/arm/mach-omap2/board-igep0020.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <linux/gpio.h> | 18 | #include <linux/gpio.h> |
19 | #include <linux/interrupt.h> | 19 | #include <linux/interrupt.h> |
20 | #include <linux/input.h> | ||
20 | 21 | ||
21 | #include <linux/regulator/machine.h> | 22 | #include <linux/regulator/machine.h> |
22 | #include <linux/regulator/fixed.h> | 23 | #include <linux/regulator/fixed.h> |
@@ -541,6 +542,37 @@ static struct twl4030_codec_data igep2_codec_data = { | |||
541 | .audio = &igep2_audio_data, | 542 | .audio = &igep2_audio_data, |
542 | }; | 543 | }; |
543 | 544 | ||
545 | static int igep2_keymap[] = { | ||
546 | KEY(0, 0, KEY_LEFT), | ||
547 | KEY(0, 1, KEY_RIGHT), | ||
548 | KEY(0, 2, KEY_A), | ||
549 | KEY(0, 3, KEY_B), | ||
550 | KEY(1, 0, KEY_DOWN), | ||
551 | KEY(1, 1, KEY_UP), | ||
552 | KEY(1, 2, KEY_E), | ||
553 | KEY(1, 3, KEY_F), | ||
554 | KEY(2, 0, KEY_ENTER), | ||
555 | KEY(2, 1, KEY_I), | ||
556 | KEY(2, 2, KEY_J), | ||
557 | KEY(2, 3, KEY_K), | ||
558 | KEY(3, 0, KEY_M), | ||
559 | KEY(3, 1, KEY_N), | ||
560 | KEY(3, 2, KEY_O), | ||
561 | KEY(3, 3, KEY_P) | ||
562 | }; | ||
563 | |||
564 | static struct matrix_keymap_data igep2_keymap_data = { | ||
565 | .keymap = igep2_keymap, | ||
566 | .keymap_size = ARRAY_SIZE(igep2_keymap), | ||
567 | }; | ||
568 | |||
569 | static struct twl4030_keypad_data igep2_keypad_pdata = { | ||
570 | .keymap_data = &igep2_keymap_data, | ||
571 | .rows = 4, | ||
572 | .cols = 4, | ||
573 | .rep = 1, | ||
574 | }; | ||
575 | |||
544 | static struct twl4030_platform_data igep2_twldata = { | 576 | static struct twl4030_platform_data igep2_twldata = { |
545 | .irq_base = TWL4030_IRQ_BASE, | 577 | .irq_base = TWL4030_IRQ_BASE, |
546 | .irq_end = TWL4030_IRQ_END, | 578 | .irq_end = TWL4030_IRQ_END, |
@@ -549,6 +581,7 @@ static struct twl4030_platform_data igep2_twldata = { | |||
549 | .usb = &igep2_usb_data, | 581 | .usb = &igep2_usb_data, |
550 | .codec = &igep2_codec_data, | 582 | .codec = &igep2_codec_data, |
551 | .gpio = &igep2_twl4030_gpio_pdata, | 583 | .gpio = &igep2_twl4030_gpio_pdata, |
584 | .keypad = &igep2_keypad_pdata, | ||
552 | .vmmc1 = &igep2_vmmc1, | 585 | .vmmc1 = &igep2_vmmc1, |
553 | .vpll2 = &igep2_vpll2, | 586 | .vpll2 = &igep2_vpll2, |
554 | .vio = &igep2_vio, | 587 | .vio = &igep2_vio, |
diff --git a/arch/arm/mach-omap2/board-igep0030.c b/arch/arm/mach-omap2/board-igep0030.c index bcccd68f1856..4dc62a9b9cb2 100644 --- a/arch/arm/mach-omap2/board-igep0030.c +++ b/arch/arm/mach-omap2/board-igep0030.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/interrupt.h> | 19 | #include <linux/interrupt.h> |
20 | 20 | ||
21 | #include <linux/regulator/machine.h> | 21 | #include <linux/regulator/machine.h> |
22 | #include <linux/regulator/fixed.h> | ||
22 | #include <linux/i2c/twl.h> | 23 | #include <linux/i2c/twl.h> |
23 | #include <linux/mmc/host.h> | 24 | #include <linux/mmc/host.h> |
24 | 25 | ||
@@ -43,7 +44,7 @@ | |||
43 | #define IGEP3_GPIO_WIFI_NRESET 139 | 44 | #define IGEP3_GPIO_WIFI_NRESET 139 |
44 | #define IGEP3_GPIO_BT_NRESET 137 | 45 | #define IGEP3_GPIO_BT_NRESET 137 |
45 | 46 | ||
46 | #define IGEP3_GPIO_USBH_NRESET 115 | 47 | #define IGEP3_GPIO_USBH_NRESET 183 |
47 | 48 | ||
48 | 49 | ||
49 | #if defined(CONFIG_MTD_ONENAND_OMAP2) || \ | 50 | #if defined(CONFIG_MTD_ONENAND_OMAP2) || \ |
@@ -103,7 +104,7 @@ static struct platform_device igep3_onenand_device = { | |||
103 | }, | 104 | }, |
104 | }; | 105 | }; |
105 | 106 | ||
106 | void __init igep3_flash_init(void) | 107 | static void __init igep3_flash_init(void) |
107 | { | 108 | { |
108 | u8 cs = 0; | 109 | u8 cs = 0; |
109 | u8 onenandcs = GPMC_CS_NUM + 1; | 110 | u8 onenandcs = GPMC_CS_NUM + 1; |
@@ -137,12 +138,11 @@ void __init igep3_flash_init(void) | |||
137 | } | 138 | } |
138 | 139 | ||
139 | #else | 140 | #else |
140 | void __init igep3_flash_init(void) {} | 141 | static void __init igep3_flash_init(void) {} |
141 | #endif | 142 | #endif |
142 | 143 | ||
143 | static struct regulator_consumer_supply igep3_vmmc1_supply = { | 144 | static struct regulator_consumer_supply igep3_vmmc1_supply = |
144 | .supply = "vmmc", | 145 | REGULATOR_SUPPLY("vmmc", "mmci-omap-hs.0"); |
145 | }; | ||
146 | 146 | ||
147 | /* VMMC1 for OMAP VDD_MMC1 (i/o) and MMC1 card */ | 147 | /* VMMC1 for OMAP VDD_MMC1 (i/o) and MMC1 card */ |
148 | static struct regulator_init_data igep3_vmmc1 = { | 148 | static struct regulator_init_data igep3_vmmc1 = { |
@@ -159,6 +159,52 @@ static struct regulator_init_data igep3_vmmc1 = { | |||
159 | .consumer_supplies = &igep3_vmmc1_supply, | 159 | .consumer_supplies = &igep3_vmmc1_supply, |
160 | }; | 160 | }; |
161 | 161 | ||
162 | static struct regulator_consumer_supply igep3_vio_supply = | ||
163 | REGULATOR_SUPPLY("vmmc_aux", "mmci-omap-hs.1"); | ||
164 | |||
165 | static struct regulator_init_data igep3_vio = { | ||
166 | .constraints = { | ||
167 | .min_uV = 1800000, | ||
168 | .max_uV = 1800000, | ||
169 | .apply_uV = 1, | ||
170 | .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
171 | | REGULATOR_MODE_STANDBY, | ||
172 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | ||
173 | | REGULATOR_CHANGE_MODE | ||
174 | | REGULATOR_CHANGE_STATUS, | ||
175 | }, | ||
176 | .num_consumer_supplies = 1, | ||
177 | .consumer_supplies = &igep3_vio_supply, | ||
178 | }; | ||
179 | |||
180 | static struct regulator_consumer_supply igep3_vmmc2_supply = | ||
181 | REGULATOR_SUPPLY("vmmc", "mmci-omap-hs.1"); | ||
182 | |||
183 | static struct regulator_init_data igep3_vmmc2 = { | ||
184 | .constraints = { | ||
185 | .valid_modes_mask = REGULATOR_MODE_NORMAL, | ||
186 | .always_on = 1, | ||
187 | }, | ||
188 | .num_consumer_supplies = 1, | ||
189 | .consumer_supplies = &igep3_vmmc2_supply, | ||
190 | }; | ||
191 | |||
192 | static struct fixed_voltage_config igep3_vwlan = { | ||
193 | .supply_name = "vwlan", | ||
194 | .microvolts = 3300000, | ||
195 | .gpio = -EINVAL, | ||
196 | .enabled_at_boot = 1, | ||
197 | .init_data = &igep3_vmmc2, | ||
198 | }; | ||
199 | |||
200 | static struct platform_device igep3_vwlan_device = { | ||
201 | .name = "reg-fixed-voltage", | ||
202 | .id = 0, | ||
203 | .dev = { | ||
204 | .platform_data = &igep3_vwlan, | ||
205 | }, | ||
206 | }; | ||
207 | |||
162 | static struct omap2_hsmmc_info mmc[] = { | 208 | static struct omap2_hsmmc_info mmc[] = { |
163 | [0] = { | 209 | [0] = { |
164 | .mmc = 1, | 210 | .mmc = 1, |
@@ -254,12 +300,6 @@ static int igep3_twl4030_gpio_setup(struct device *dev, | |||
254 | mmc[0].gpio_cd = gpio + 0; | 300 | mmc[0].gpio_cd = gpio + 0; |
255 | omap2_hsmmc_init(mmc); | 301 | omap2_hsmmc_init(mmc); |
256 | 302 | ||
257 | /* | ||
258 | * link regulators to MMC adapters ... we "know" the | ||
259 | * regulators will be set up only *after* we return. | ||
260 | */ | ||
261 | igep3_vmmc1_supply.dev = mmc[0].dev; | ||
262 | |||
263 | /* TWL4030_GPIO_MAX + 1 == ledB (out, active low LED) */ | 303 | /* TWL4030_GPIO_MAX + 1 == ledB (out, active low LED) */ |
264 | #if !defined(CONFIG_LEDS_GPIO) && !defined(CONFIG_LEDS_GPIO_MODULE) | 304 | #if !defined(CONFIG_LEDS_GPIO) && !defined(CONFIG_LEDS_GPIO_MODULE) |
265 | if ((gpio_request(gpio+TWL4030_GPIO_MAX+1, "gpio-led:green:d1") == 0) | 305 | if ((gpio_request(gpio+TWL4030_GPIO_MAX+1, "gpio-led:green:d1") == 0) |
@@ -287,6 +327,10 @@ static struct twl4030_usb_data igep3_twl4030_usb_data = { | |||
287 | .usb_mode = T2_USB_MODE_ULPI, | 327 | .usb_mode = T2_USB_MODE_ULPI, |
288 | }; | 328 | }; |
289 | 329 | ||
330 | static struct platform_device *igep3_devices[] __initdata = { | ||
331 | &igep3_vwlan_device, | ||
332 | }; | ||
333 | |||
290 | static void __init igep3_init_irq(void) | 334 | static void __init igep3_init_irq(void) |
291 | { | 335 | { |
292 | omap2_init_common_infrastructure(); | 336 | omap2_init_common_infrastructure(); |
@@ -303,6 +347,7 @@ static struct twl4030_platform_data igep3_twl4030_pdata = { | |||
303 | .usb = &igep3_twl4030_usb_data, | 347 | .usb = &igep3_twl4030_usb_data, |
304 | .gpio = &igep3_twl4030_gpio_pdata, | 348 | .gpio = &igep3_twl4030_gpio_pdata, |
305 | .vmmc1 = &igep3_vmmc1, | 349 | .vmmc1 = &igep3_vmmc1, |
350 | .vio = &igep3_vio, | ||
306 | }; | 351 | }; |
307 | 352 | ||
308 | static struct i2c_board_info __initdata igep3_i2c_boardinfo[] = { | 353 | static struct i2c_board_info __initdata igep3_i2c_boardinfo[] = { |
@@ -363,8 +408,20 @@ static void __init igep3_wifi_bt_init(void) | |||
363 | void __init igep3_wifi_bt_init(void) {} | 408 | void __init igep3_wifi_bt_init(void) {} |
364 | #endif | 409 | #endif |
365 | 410 | ||
411 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | ||
412 | .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN, | ||
413 | .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, | ||
414 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | ||
415 | |||
416 | .phy_reset = true, | ||
417 | .reset_gpio_port[0] = -EINVAL, | ||
418 | .reset_gpio_port[1] = IGEP3_GPIO_USBH_NRESET, | ||
419 | .reset_gpio_port[2] = -EINVAL, | ||
420 | }; | ||
421 | |||
366 | #ifdef CONFIG_OMAP_MUX | 422 | #ifdef CONFIG_OMAP_MUX |
367 | static struct omap_board_mux board_mux[] __initdata = { | 423 | static struct omap_board_mux board_mux[] __initdata = { |
424 | OMAP3_MUX(I2C2_SDA, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), | ||
368 | { .reg_offset = OMAP_MUX_TERMINATOR }, | 425 | { .reg_offset = OMAP_MUX_TERMINATOR }, |
369 | }; | 426 | }; |
370 | #endif | 427 | #endif |
@@ -375,9 +432,10 @@ static void __init igep3_init(void) | |||
375 | 432 | ||
376 | /* Register I2C busses and drivers */ | 433 | /* Register I2C busses and drivers */ |
377 | igep3_i2c_init(); | 434 | igep3_i2c_init(); |
378 | 435 | platform_add_devices(igep3_devices, ARRAY_SIZE(igep3_devices)); | |
379 | omap_serial_init(); | 436 | omap_serial_init(); |
380 | usb_musb_init(&musb_board_data); | 437 | usb_musb_init(&musb_board_data); |
438 | usb_ehci_init(&ehci_pdata); | ||
381 | 439 | ||
382 | igep3_flash_init(); | 440 | igep3_flash_init(); |
383 | igep3_leds_init(); | 441 | igep3_leds_init(); |
@@ -392,6 +450,7 @@ static void __init igep3_init(void) | |||
392 | 450 | ||
393 | MACHINE_START(IGEP0030, "IGEP OMAP3 module") | 451 | MACHINE_START(IGEP0030, "IGEP OMAP3 module") |
394 | .boot_params = 0x80000100, | 452 | .boot_params = 0x80000100, |
453 | .reserve = omap_reserve, | ||
395 | .map_io = omap3_map_io, | 454 | .map_io = omap3_map_io, |
396 | .init_irq = igep3_init_irq, | 455 | .init_irq = igep3_init_irq, |
397 | .init_machine = igep3_init, | 456 | .init_machine = igep3_init, |
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index a4fe8e1ee1bd..46d814ab5656 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c | |||
@@ -207,7 +207,7 @@ static struct omap_dss_device beagle_dvi_device = { | |||
207 | .driver_name = "generic_dpi_panel", | 207 | .driver_name = "generic_dpi_panel", |
208 | .data = &dvi_panel, | 208 | .data = &dvi_panel, |
209 | .phy.dpi.data_lines = 24, | 209 | .phy.dpi.data_lines = 24, |
210 | .reset_gpio = 170, | 210 | .reset_gpio = -EINVAL, |
211 | }; | 211 | }; |
212 | 212 | ||
213 | static struct omap_dss_device beagle_tv_device = { | 213 | static struct omap_dss_device beagle_tv_device = { |
@@ -279,6 +279,8 @@ static struct gpio_led gpio_leds[]; | |||
279 | static int beagle_twl_gpio_setup(struct device *dev, | 279 | static int beagle_twl_gpio_setup(struct device *dev, |
280 | unsigned gpio, unsigned ngpio) | 280 | unsigned gpio, unsigned ngpio) |
281 | { | 281 | { |
282 | int r; | ||
283 | |||
282 | if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) { | 284 | if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) { |
283 | mmc[0].gpio_wp = -EINVAL; | 285 | mmc[0].gpio_wp = -EINVAL; |
284 | } else if ((omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C1_3) || | 286 | } else if ((omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C1_3) || |
@@ -299,17 +301,63 @@ static int beagle_twl_gpio_setup(struct device *dev, | |||
299 | /* REVISIT: need ehci-omap hooks for external VBUS | 301 | /* REVISIT: need ehci-omap hooks for external VBUS |
300 | * power switch and overcurrent detect | 302 | * power switch and overcurrent detect |
301 | */ | 303 | */ |
304 | if (omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XM) { | ||
305 | r = gpio_request(gpio + 1, "EHCI_nOC"); | ||
306 | if (!r) { | ||
307 | r = gpio_direction_input(gpio + 1); | ||
308 | if (r) | ||
309 | gpio_free(gpio + 1); | ||
310 | } | ||
311 | if (r) | ||
312 | pr_err("%s: unable to configure EHCI_nOC\n", __func__); | ||
313 | } | ||
302 | 314 | ||
303 | gpio_request(gpio + 1, "EHCI_nOC"); | 315 | /* |
304 | gpio_direction_input(gpio + 1); | 316 | * TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, XM active |
305 | 317 | * high / others active low) | |
306 | /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ | 318 | */ |
307 | gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); | 319 | gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); |
308 | gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); | 320 | if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) |
321 | gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1); | ||
322 | else | ||
323 | gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); | ||
324 | |||
325 | /* DVI reset GPIO is different between beagle revisions */ | ||
326 | if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) | ||
327 | beagle_dvi_device.reset_gpio = 129; | ||
328 | else | ||
329 | beagle_dvi_device.reset_gpio = 170; | ||
309 | 330 | ||
310 | /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ | 331 | /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ |
311 | gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; | 332 | gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; |
312 | 333 | ||
334 | /* | ||
335 | * gpio + 1 on Xm controls the TFP410's enable line (active low) | ||
336 | * gpio + 2 control varies depending on the board rev as follows: | ||
337 | * P7/P8 revisions(prototype): Camera EN | ||
338 | * A2+ revisions (production): LDO (supplies DVI, serial, led blocks) | ||
339 | */ | ||
340 | if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) { | ||
341 | r = gpio_request(gpio + 1, "nDVI_PWR_EN"); | ||
342 | if (!r) { | ||
343 | r = gpio_direction_output(gpio + 1, 0); | ||
344 | if (r) | ||
345 | gpio_free(gpio + 1); | ||
346 | } | ||
347 | if (r) | ||
348 | pr_err("%s: unable to configure nDVI_PWR_EN\n", | ||
349 | __func__); | ||
350 | r = gpio_request(gpio + 2, "DVI_LDO_EN"); | ||
351 | if (!r) { | ||
352 | r = gpio_direction_output(gpio + 2, 1); | ||
353 | if (r) | ||
354 | gpio_free(gpio + 2); | ||
355 | } | ||
356 | if (r) | ||
357 | pr_err("%s: unable to configure DVI_LDO_EN\n", | ||
358 | __func__); | ||
359 | } | ||
360 | |||
313 | return 0; | 361 | return 0; |
314 | } | 362 | } |
315 | 363 | ||
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c index 3094e2007844..e001a048dc0c 100644 --- a/arch/arm/mach-omap2/board-omap4panda.c +++ b/arch/arm/mach-omap2/board-omap4panda.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
22 | #include <linux/clk.h> | ||
22 | #include <linux/io.h> | 23 | #include <linux/io.h> |
23 | #include <linux/leds.h> | 24 | #include <linux/leds.h> |
24 | #include <linux/gpio.h> | 25 | #include <linux/gpio.h> |
@@ -95,7 +96,16 @@ static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | |||
95 | static void __init omap4_ehci_init(void) | 96 | static void __init omap4_ehci_init(void) |
96 | { | 97 | { |
97 | int ret; | 98 | int ret; |
99 | struct clk *phy_ref_clk; | ||
98 | 100 | ||
101 | /* FREF_CLK3 provides the 19.2 MHz reference clock to the PHY */ | ||
102 | phy_ref_clk = clk_get(NULL, "auxclk3_ck"); | ||
103 | if (IS_ERR(phy_ref_clk)) { | ||
104 | pr_err("Cannot request auxclk3\n"); | ||
105 | goto error1; | ||
106 | } | ||
107 | clk_set_rate(phy_ref_clk, 19200000); | ||
108 | clk_enable(phy_ref_clk); | ||
99 | 109 | ||
100 | /* disable the power to the usb hub prior to init */ | 110 | /* disable the power to the usb hub prior to init */ |
101 | ret = gpio_request(GPIO_HUB_POWER, "hub_power"); | 111 | ret = gpio_request(GPIO_HUB_POWER, "hub_power"); |
diff --git a/arch/arm/mach-omap2/board-zoom-peripherals.c b/arch/arm/mach-omap2/board-zoom-peripherals.c index 14d95afa3f0d..e0e040f34c68 100644 --- a/arch/arm/mach-omap2/board-zoom-peripherals.c +++ b/arch/arm/mach-omap2/board-zoom-peripherals.c | |||
@@ -192,7 +192,7 @@ static struct platform_device omap_vwlan_device = { | |||
192 | }, | 192 | }, |
193 | }; | 193 | }; |
194 | 194 | ||
195 | struct wl12xx_platform_data omap_zoom_wlan_data __initdata = { | 195 | static struct wl12xx_platform_data omap_zoom_wlan_data __initdata = { |
196 | .irq = OMAP_GPIO_IRQ(OMAP_ZOOM_WLAN_IRQ_GPIO), | 196 | .irq = OMAP_GPIO_IRQ(OMAP_ZOOM_WLAN_IRQ_GPIO), |
197 | /* ZOOM ref clock is 26 MHz */ | 197 | /* ZOOM ref clock is 26 MHz */ |
198 | .board_ref_clock = 1, | 198 | .board_ref_clock = 1, |
@@ -286,7 +286,7 @@ static int zoom_twl_gpio_setup(struct device *dev, | |||
286 | } | 286 | } |
287 | 287 | ||
288 | /* EXTMUTE callback function */ | 288 | /* EXTMUTE callback function */ |
289 | void zoom2_set_hs_extmute(int mute) | 289 | static void zoom2_set_hs_extmute(int mute) |
290 | { | 290 | { |
291 | gpio_set_value(ZOOM2_HEADSET_EXTMUTE_GPIO, mute); | 291 | gpio_set_value(ZOOM2_HEADSET_EXTMUTE_GPIO, mute); |
292 | } | 292 | } |
diff --git a/arch/arm/mach-omap2/clock3xxx_data.c b/arch/arm/mach-omap2/clock3xxx_data.c index d3ab1c9e50b0..403a4a1d3f9c 100644 --- a/arch/arm/mach-omap2/clock3xxx_data.c +++ b/arch/arm/mach-omap2/clock3xxx_data.c | |||
@@ -3286,7 +3286,7 @@ static struct omap_clk omap3xxx_clks[] = { | |||
3286 | CLK(NULL, "cpefuse_fck", &cpefuse_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), | 3286 | CLK(NULL, "cpefuse_fck", &cpefuse_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3287 | CLK(NULL, "ts_fck", &ts_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), | 3287 | CLK(NULL, "ts_fck", &ts_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3288 | CLK(NULL, "usbtll_fck", &usbtll_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), | 3288 | CLK(NULL, "usbtll_fck", &usbtll_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3289 | CLK("ehci-omap.0", "usbtll_fck", &usbtll_fck, CK_3430ES2 | CK_AM35XX), | 3289 | CLK("ehci-omap.0", "usbtll_fck", &usbtll_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3290 | CLK("omap-mcbsp.1", "prcm_fck", &core_96m_fck, CK_3XXX), | 3290 | CLK("omap-mcbsp.1", "prcm_fck", &core_96m_fck, CK_3XXX), |
3291 | CLK("omap-mcbsp.5", "prcm_fck", &core_96m_fck, CK_3XXX), | 3291 | CLK("omap-mcbsp.5", "prcm_fck", &core_96m_fck, CK_3XXX), |
3292 | CLK(NULL, "core_96m_fck", &core_96m_fck, CK_3XXX), | 3292 | CLK(NULL, "core_96m_fck", &core_96m_fck, CK_3XXX), |
diff --git a/arch/arm/mach-omap2/clockdomain.h b/arch/arm/mach-omap2/clockdomain.h index de3faa20b46b..9b459c26fb85 100644 --- a/arch/arm/mach-omap2/clockdomain.h +++ b/arch/arm/mach-omap2/clockdomain.h | |||
@@ -103,9 +103,7 @@ struct clockdomain { | |||
103 | const char *name; | 103 | const char *name; |
104 | struct powerdomain *ptr; | 104 | struct powerdomain *ptr; |
105 | } pwrdm; | 105 | } pwrdm; |
106 | #if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) | ||
107 | const u16 clktrctrl_mask; | 106 | const u16 clktrctrl_mask; |
108 | #endif | ||
109 | const u8 flags; | 107 | const u8 flags; |
110 | const u8 dep_bit; | 108 | const u8 dep_bit; |
111 | const u8 prcm_partition; | 109 | const u8 prcm_partition; |
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 381f4eb92352..2c9c912f2c42 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
@@ -978,7 +978,7 @@ static int __init omap2_init_devices(void) | |||
978 | arch_initcall(omap2_init_devices); | 978 | arch_initcall(omap2_init_devices); |
979 | 979 | ||
980 | #if defined(CONFIG_OMAP_WATCHDOG) || defined(CONFIG_OMAP_WATCHDOG_MODULE) | 980 | #if defined(CONFIG_OMAP_WATCHDOG) || defined(CONFIG_OMAP_WATCHDOG_MODULE) |
981 | struct omap_device_pm_latency omap_wdt_latency[] = { | 981 | static struct omap_device_pm_latency omap_wdt_latency[] = { |
982 | [0] = { | 982 | [0] = { |
983 | .deactivate_func = omap_device_idle_hwmods, | 983 | .deactivate_func = omap_device_idle_hwmods, |
984 | .activate_func = omap_device_enable_hwmods, | 984 | .activate_func = omap_device_enable_hwmods, |
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index 17bd6394d224..df8d2f2872c6 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c | |||
@@ -893,7 +893,7 @@ static struct omap_mux * __init omap_mux_list_add( | |||
893 | return NULL; | 893 | return NULL; |
894 | 894 | ||
895 | m = &entry->mux; | 895 | m = &entry->mux; |
896 | memcpy(m, src, sizeof(struct omap_mux_entry)); | 896 | entry->mux = *src; |
897 | 897 | ||
898 | #ifdef CONFIG_OMAP_MUX | 898 | #ifdef CONFIG_OMAP_MUX |
899 | if (omap_mux_copy_names(src, m)) { | 899 | if (omap_mux_copy_names(src, m)) { |
diff --git a/arch/arm/mach-omap2/mux34xx.c b/arch/arm/mach-omap2/mux34xx.c index 440c98e9a510..17f80e4ab162 100644 --- a/arch/arm/mach-omap2/mux34xx.c +++ b/arch/arm/mach-omap2/mux34xx.c | |||
@@ -703,7 +703,7 @@ static struct omap_mux __initdata omap3_muxmodes[] = { | |||
703 | * Signals different on CBC package compared to the superset | 703 | * Signals different on CBC package compared to the superset |
704 | */ | 704 | */ |
705 | #if defined(CONFIG_OMAP_MUX) && defined(CONFIG_OMAP_PACKAGE_CBC) | 705 | #if defined(CONFIG_OMAP_MUX) && defined(CONFIG_OMAP_PACKAGE_CBC) |
706 | struct omap_mux __initdata omap3_cbc_subset[] = { | 706 | static struct omap_mux __initdata omap3_cbc_subset[] = { |
707 | { .reg_offset = OMAP_MUX_TERMINATOR }, | 707 | { .reg_offset = OMAP_MUX_TERMINATOR }, |
708 | }; | 708 | }; |
709 | #else | 709 | #else |
@@ -721,7 +721,7 @@ struct omap_mux __initdata omap3_cbc_subset[] = { | |||
721 | */ | 721 | */ |
722 | #if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) \ | 722 | #if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) \ |
723 | && defined(CONFIG_OMAP_PACKAGE_CBC) | 723 | && defined(CONFIG_OMAP_PACKAGE_CBC) |
724 | struct omap_ball __initdata omap3_cbc_ball[] = { | 724 | static struct omap_ball __initdata omap3_cbc_ball[] = { |
725 | _OMAP3_BALLENTRY(CAM_D0, "ae16", NULL), | 725 | _OMAP3_BALLENTRY(CAM_D0, "ae16", NULL), |
726 | _OMAP3_BALLENTRY(CAM_D1, "ae15", NULL), | 726 | _OMAP3_BALLENTRY(CAM_D1, "ae15", NULL), |
727 | _OMAP3_BALLENTRY(CAM_D10, "d25", NULL), | 727 | _OMAP3_BALLENTRY(CAM_D10, "d25", NULL), |
diff --git a/arch/arm/mach-omap2/mux44xx.c b/arch/arm/mach-omap2/mux44xx.c index 980f11d45c79..c322e7bdaa17 100644 --- a/arch/arm/mach-omap2/mux44xx.c +++ b/arch/arm/mach-omap2/mux44xx.c | |||
@@ -544,7 +544,7 @@ static struct omap_mux __initdata omap4_core_muxmodes[] = { | |||
544 | */ | 544 | */ |
545 | #if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) \ | 545 | #if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) \ |
546 | && defined(CONFIG_OMAP_PACKAGE_CBL) | 546 | && defined(CONFIG_OMAP_PACKAGE_CBL) |
547 | struct omap_ball __initdata omap4_core_cbl_ball[] = { | 547 | static struct omap_ball __initdata omap4_core_cbl_ball[] = { |
548 | _OMAP4_BALLENTRY(GPMC_AD0, "c12", NULL), | 548 | _OMAP4_BALLENTRY(GPMC_AD0, "c12", NULL), |
549 | _OMAP4_BALLENTRY(GPMC_AD1, "d12", NULL), | 549 | _OMAP4_BALLENTRY(GPMC_AD1, "d12", NULL), |
550 | _OMAP4_BALLENTRY(GPMC_AD2, "c13", NULL), | 550 | _OMAP4_BALLENTRY(GPMC_AD2, "c13", NULL), |
@@ -1262,7 +1262,7 @@ static struct omap_mux __initdata omap4_es2_core_muxmodes[] = { | |||
1262 | */ | 1262 | */ |
1263 | #if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) \ | 1263 | #if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) \ |
1264 | && defined(CONFIG_OMAP_PACKAGE_CBS) | 1264 | && defined(CONFIG_OMAP_PACKAGE_CBS) |
1265 | struct omap_ball __initdata omap4_core_cbs_ball[] = { | 1265 | static struct omap_ball __initdata omap4_core_cbs_ball[] = { |
1266 | _OMAP4_BALLENTRY(GPMC_AD0, "c12", NULL), | 1266 | _OMAP4_BALLENTRY(GPMC_AD0, "c12", NULL), |
1267 | _OMAP4_BALLENTRY(GPMC_AD1, "d12", NULL), | 1267 | _OMAP4_BALLENTRY(GPMC_AD1, "d12", NULL), |
1268 | _OMAP4_BALLENTRY(GPMC_AD2, "c13", NULL), | 1268 | _OMAP4_BALLENTRY(GPMC_AD2, "c13", NULL), |
@@ -1546,7 +1546,7 @@ static struct omap_mux __initdata omap4_wkup_muxmodes[] = { | |||
1546 | */ | 1546 | */ |
1547 | #if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) \ | 1547 | #if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) \ |
1548 | && defined(CONFIG_OMAP_PACKAGE_CBL) | 1548 | && defined(CONFIG_OMAP_PACKAGE_CBL) |
1549 | struct omap_ball __initdata omap4_wkup_cbl_cbs_ball[] = { | 1549 | static struct omap_ball __initdata omap4_wkup_cbl_cbs_ball[] = { |
1550 | _OMAP4_BALLENTRY(SIM_IO, "h4", NULL), | 1550 | _OMAP4_BALLENTRY(SIM_IO, "h4", NULL), |
1551 | _OMAP4_BALLENTRY(SIM_CLK, "j2", NULL), | 1551 | _OMAP4_BALLENTRY(SIM_CLK, "j2", NULL), |
1552 | _OMAP4_BALLENTRY(SIM_RESET, "g2", NULL), | 1552 | _OMAP4_BALLENTRY(SIM_RESET, "g2", NULL), |
diff --git a/arch/arm/mach-omap2/omap_twl.c b/arch/arm/mach-omap2/omap_twl.c index 15f8c6c1bb0f..00e1d2b53683 100644 --- a/arch/arm/mach-omap2/omap_twl.c +++ b/arch/arm/mach-omap2/omap_twl.c | |||
@@ -20,6 +20,8 @@ | |||
20 | 20 | ||
21 | #include <plat/voltage.h> | 21 | #include <plat/voltage.h> |
22 | 22 | ||
23 | #include "pm.h" | ||
24 | |||
23 | #define OMAP3_SRI2C_SLAVE_ADDR 0x12 | 25 | #define OMAP3_SRI2C_SLAVE_ADDR 0x12 |
24 | #define OMAP3_VDD_MPU_SR_CONTROL_REG 0x00 | 26 | #define OMAP3_VDD_MPU_SR_CONTROL_REG 0x00 |
25 | #define OMAP3_VDD_CORE_SR_CONTROL_REG 0x01 | 27 | #define OMAP3_VDD_CORE_SR_CONTROL_REG 0x01 |
@@ -60,17 +62,17 @@ static u8 smps_offset; | |||
60 | 62 | ||
61 | #define REG_SMPS_OFFSET 0xE0 | 63 | #define REG_SMPS_OFFSET 0xE0 |
62 | 64 | ||
63 | unsigned long twl4030_vsel_to_uv(const u8 vsel) | 65 | static unsigned long twl4030_vsel_to_uv(const u8 vsel) |
64 | { | 66 | { |
65 | return (((vsel * 125) + 6000)) * 100; | 67 | return (((vsel * 125) + 6000)) * 100; |
66 | } | 68 | } |
67 | 69 | ||
68 | u8 twl4030_uv_to_vsel(unsigned long uv) | 70 | static u8 twl4030_uv_to_vsel(unsigned long uv) |
69 | { | 71 | { |
70 | return DIV_ROUND_UP(uv - 600000, 12500); | 72 | return DIV_ROUND_UP(uv - 600000, 12500); |
71 | } | 73 | } |
72 | 74 | ||
73 | unsigned long twl6030_vsel_to_uv(const u8 vsel) | 75 | static unsigned long twl6030_vsel_to_uv(const u8 vsel) |
74 | { | 76 | { |
75 | /* | 77 | /* |
76 | * In TWL6030 depending on the value of SMPS_OFFSET | 78 | * In TWL6030 depending on the value of SMPS_OFFSET |
@@ -102,7 +104,7 @@ unsigned long twl6030_vsel_to_uv(const u8 vsel) | |||
102 | return ((((vsel - 1) * 125) + 6000)) * 100; | 104 | return ((((vsel - 1) * 125) + 6000)) * 100; |
103 | } | 105 | } |
104 | 106 | ||
105 | u8 twl6030_uv_to_vsel(unsigned long uv) | 107 | static u8 twl6030_uv_to_vsel(unsigned long uv) |
106 | { | 108 | { |
107 | /* | 109 | /* |
108 | * In TWL6030 depending on the value of SMPS_OFFSET | 110 | * In TWL6030 depending on the value of SMPS_OFFSET |
diff --git a/arch/arm/mach-omap2/pm_bus.c b/arch/arm/mach-omap2/pm_bus.c index 784989f8f2f5..5acd2ab298b1 100644 --- a/arch/arm/mach-omap2/pm_bus.c +++ b/arch/arm/mach-omap2/pm_bus.c | |||
@@ -20,7 +20,7 @@ | |||
20 | #include <plat/omap-pm.h> | 20 | #include <plat/omap-pm.h> |
21 | 21 | ||
22 | #ifdef CONFIG_PM_RUNTIME | 22 | #ifdef CONFIG_PM_RUNTIME |
23 | int omap_pm_runtime_suspend(struct device *dev) | 23 | static int omap_pm_runtime_suspend(struct device *dev) |
24 | { | 24 | { |
25 | struct platform_device *pdev = to_platform_device(dev); | 25 | struct platform_device *pdev = to_platform_device(dev); |
26 | int r, ret = 0; | 26 | int r, ret = 0; |
@@ -37,7 +37,7 @@ int omap_pm_runtime_suspend(struct device *dev) | |||
37 | return ret; | 37 | return ret; |
38 | }; | 38 | }; |
39 | 39 | ||
40 | int omap_pm_runtime_resume(struct device *dev) | 40 | static int omap_pm_runtime_resume(struct device *dev) |
41 | { | 41 | { |
42 | struct platform_device *pdev = to_platform_device(dev); | 42 | struct platform_device *pdev = to_platform_device(dev); |
43 | int r; | 43 | int r; |
diff --git a/arch/arm/mach-omap2/prm2xxx_3xxx.h b/arch/arm/mach-omap2/prm2xxx_3xxx.h index 53d44f6e3736..49654c8d18f5 100644 --- a/arch/arm/mach-omap2/prm2xxx_3xxx.h +++ b/arch/arm/mach-omap2/prm2xxx_3xxx.h | |||
@@ -228,7 +228,67 @@ | |||
228 | 228 | ||
229 | 229 | ||
230 | #ifndef __ASSEMBLER__ | 230 | #ifndef __ASSEMBLER__ |
231 | 231 | /* | |
232 | * Stub omap2xxx/omap3xxx functions so that common files | ||
233 | * continue to build when custom builds are used | ||
234 | */ | ||
235 | #if defined(CONFIG_ARCH_OMAP4) && !(defined(CONFIG_ARCH_OMAP2) || \ | ||
236 | defined(CONFIG_ARCH_OMAP3)) | ||
237 | static inline u32 omap2_prm_read_mod_reg(s16 module, u16 idx) | ||
238 | { | ||
239 | WARN(1, "prm: omap2xxx/omap3xxx specific function and " | ||
240 | "not suppose to be used on omap4\n"); | ||
241 | return 0; | ||
242 | } | ||
243 | static inline void omap2_prm_write_mod_reg(u32 val, s16 module, u16 idx) | ||
244 | { | ||
245 | WARN(1, "prm: omap2xxx/omap3xxx specific function and " | ||
246 | "not suppose to be used on omap4\n"); | ||
247 | } | ||
248 | static inline u32 omap2_prm_rmw_mod_reg_bits(u32 mask, u32 bits, | ||
249 | s16 module, s16 idx) | ||
250 | { | ||
251 | WARN(1, "prm: omap2xxx/omap3xxx specific function and " | ||
252 | "not suppose to be used on omap4\n"); | ||
253 | return 0; | ||
254 | } | ||
255 | static inline u32 omap2_prm_set_mod_reg_bits(u32 bits, s16 module, s16 idx) | ||
256 | { | ||
257 | WARN(1, "prm: omap2xxx/omap3xxx specific function and " | ||
258 | "not suppose to be used on omap4\n"); | ||
259 | return 0; | ||
260 | } | ||
261 | static inline u32 omap2_prm_clear_mod_reg_bits(u32 bits, s16 module, s16 idx) | ||
262 | { | ||
263 | WARN(1, "prm: omap2xxx/omap3xxx specific function and " | ||
264 | "not suppose to be used on omap4\n"); | ||
265 | return 0; | ||
266 | } | ||
267 | static inline u32 omap2_prm_read_mod_bits_shift(s16 domain, s16 idx, u32 mask) | ||
268 | { | ||
269 | WARN(1, "prm: omap2xxx/omap3xxx specific function and " | ||
270 | "not suppose to be used on omap4\n"); | ||
271 | return 0; | ||
272 | } | ||
273 | static inline int omap2_prm_is_hardreset_asserted(s16 prm_mod, u8 shift) | ||
274 | { | ||
275 | WARN(1, "prm: omap2xxx/omap3xxx specific function and " | ||
276 | "not suppose to be used on omap4\n"); | ||
277 | return 0; | ||
278 | } | ||
279 | static inline int omap2_prm_assert_hardreset(s16 prm_mod, u8 shift) | ||
280 | { | ||
281 | WARN(1, "prm: omap2xxx/omap3xxx specific function and " | ||
282 | "not suppose to be used on omap4\n"); | ||
283 | return 0; | ||
284 | } | ||
285 | static inline int omap2_prm_deassert_hardreset(s16 prm_mod, u8 shift) | ||
286 | { | ||
287 | WARN(1, "prm: omap2xxx/omap3xxx specific function and " | ||
288 | "not suppose to be used on omap4\n"); | ||
289 | return 0; | ||
290 | } | ||
291 | #else | ||
232 | /* Power/reset management domain register get/set */ | 292 | /* Power/reset management domain register get/set */ |
233 | extern u32 omap2_prm_read_mod_reg(s16 module, u16 idx); | 293 | extern u32 omap2_prm_read_mod_reg(s16 module, u16 idx); |
234 | extern void omap2_prm_write_mod_reg(u32 val, s16 module, u16 idx); | 294 | extern void omap2_prm_write_mod_reg(u32 val, s16 module, u16 idx); |
@@ -242,6 +302,7 @@ extern int omap2_prm_is_hardreset_asserted(s16 prm_mod, u8 shift); | |||
242 | extern int omap2_prm_assert_hardreset(s16 prm_mod, u8 shift); | 302 | extern int omap2_prm_assert_hardreset(s16 prm_mod, u8 shift); |
243 | extern int omap2_prm_deassert_hardreset(s16 prm_mod, u8 shift); | 303 | extern int omap2_prm_deassert_hardreset(s16 prm_mod, u8 shift); |
244 | 304 | ||
305 | #endif /* CONFIG_ARCH_OMAP4 */ | ||
245 | #endif | 306 | #endif |
246 | 307 | ||
247 | /* | 308 | /* |
diff --git a/arch/arm/mach-omap2/sr_device.c b/arch/arm/mach-omap2/sr_device.c index 786d685c09a9..b1e0af18a26a 100644 --- a/arch/arm/mach-omap2/sr_device.c +++ b/arch/arm/mach-omap2/sr_device.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <plat/voltage.h> | 27 | #include <plat/voltage.h> |
28 | 28 | ||
29 | #include "control.h" | 29 | #include "control.h" |
30 | #include "pm.h" | ||
30 | 31 | ||
31 | static bool sr_enable_on_init; | 32 | static bool sr_enable_on_init; |
32 | 33 | ||
diff --git a/arch/arm/mach-omap2/wd_timer.c b/arch/arm/mach-omap2/wd_timer.c index b0c4907ab3ca..4067669d96c4 100644 --- a/arch/arm/mach-omap2/wd_timer.c +++ b/arch/arm/mach-omap2/wd_timer.c | |||
@@ -13,6 +13,8 @@ | |||
13 | 13 | ||
14 | #include <plat/omap_hwmod.h> | 14 | #include <plat/omap_hwmod.h> |
15 | 15 | ||
16 | #include "wd_timer.h" | ||
17 | |||
16 | /* | 18 | /* |
17 | * In order to avoid any assumptions from bootloader regarding WDT | 19 | * In order to avoid any assumptions from bootloader regarding WDT |
18 | * settings, WDT module is reset during init. This enables the watchdog | 20 | * settings, WDT module is reset during init. This enables the watchdog |
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index fcc1e628e050..9d30c6f804b9 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
@@ -644,7 +644,7 @@ config ARM_THUMBEE | |||
644 | 644 | ||
645 | config SWP_EMULATE | 645 | config SWP_EMULATE |
646 | bool "Emulate SWP/SWPB instructions" | 646 | bool "Emulate SWP/SWPB instructions" |
647 | depends on CPU_V7 | 647 | depends on CPU_V7 && !CPU_V6 |
648 | select HAVE_PROC_CPU if PROC_FS | 648 | select HAVE_PROC_CPU if PROC_FS |
649 | default y if SMP | 649 | default y if SMP |
650 | help | 650 | help |
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 1f98e0b94847..ccf2660f4151 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c | |||
@@ -718,7 +718,7 @@ static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger) | |||
718 | case METHOD_GPIO_24XX: | 718 | case METHOD_GPIO_24XX: |
719 | case METHOD_GPIO_44XX: | 719 | case METHOD_GPIO_44XX: |
720 | set_24xx_gpio_triggering(bank, gpio, trigger); | 720 | set_24xx_gpio_triggering(bank, gpio, trigger); |
721 | break; | 721 | return 0; |
722 | #endif | 722 | #endif |
723 | default: | 723 | default: |
724 | goto bad; | 724 | goto bad; |
@@ -756,8 +756,10 @@ static int gpio_irq_type(unsigned irq, unsigned type) | |||
756 | spin_lock_irqsave(&bank->lock, flags); | 756 | spin_lock_irqsave(&bank->lock, flags); |
757 | retval = _set_gpio_triggering(bank, get_gpio_index(gpio), type); | 757 | retval = _set_gpio_triggering(bank, get_gpio_index(gpio), type); |
758 | if (retval == 0) { | 758 | if (retval == 0) { |
759 | irq_desc[irq].status &= ~IRQ_TYPE_SENSE_MASK; | 759 | struct irq_desc *d = irq_to_desc(irq); |
760 | irq_desc[irq].status |= type; | 760 | |
761 | d->status &= ~IRQ_TYPE_SENSE_MASK; | ||
762 | d->status |= type; | ||
761 | } | 763 | } |
762 | spin_unlock_irqrestore(&bank->lock, flags); | 764 | spin_unlock_irqrestore(&bank->lock, flags); |
763 | 765 | ||
@@ -1671,7 +1673,9 @@ static void __init omap_gpio_chip_init(struct gpio_bank *bank) | |||
1671 | 1673 | ||
1672 | for (j = bank->virtual_irq_start; | 1674 | for (j = bank->virtual_irq_start; |
1673 | j < bank->virtual_irq_start + bank_width; j++) { | 1675 | j < bank->virtual_irq_start + bank_width; j++) { |
1674 | lockdep_set_class(&irq_desc[j].lock, &gpio_lock_class); | 1676 | struct irq_desc *d = irq_to_desc(j); |
1677 | |||
1678 | lockdep_set_class(&d->lock, &gpio_lock_class); | ||
1675 | set_irq_chip_data(j, bank); | 1679 | set_irq_chip_data(j, bank); |
1676 | if (bank_is_mpuio(bank)) | 1680 | if (bank_is_mpuio(bank)) |
1677 | set_irq_chip(j, &mpuio_irq_chip); | 1681 | set_irq_chip(j, &mpuio_irq_chip); |
diff --git a/arch/arm/plat-omap/include/plat/voltage.h b/arch/arm/plat-omap/include/plat/voltage.h index 0ff123399f3b..5bd204e55c32 100644 --- a/arch/arm/plat-omap/include/plat/voltage.h +++ b/arch/arm/plat-omap/include/plat/voltage.h | |||
@@ -14,6 +14,8 @@ | |||
14 | #ifndef __ARCH_ARM_MACH_OMAP2_VOLTAGE_H | 14 | #ifndef __ARCH_ARM_MACH_OMAP2_VOLTAGE_H |
15 | #define __ARCH_ARM_MACH_OMAP2_VOLTAGE_H | 15 | #define __ARCH_ARM_MACH_OMAP2_VOLTAGE_H |
16 | 16 | ||
17 | #include <linux/err.h> | ||
18 | |||
17 | #define VOLTSCALE_VPFORCEUPDATE 1 | 19 | #define VOLTSCALE_VPFORCEUPDATE 1 |
18 | #define VOLTSCALE_VCBYPASS 2 | 20 | #define VOLTSCALE_VCBYPASS 2 |
19 | 21 | ||
@@ -65,9 +67,6 @@ struct voltagedomain { | |||
65 | char *name; | 67 | char *name; |
66 | }; | 68 | }; |
67 | 69 | ||
68 | /* API to get the voltagedomain pointer */ | ||
69 | struct voltagedomain *omap_voltage_domain_lookup(char *name); | ||
70 | |||
71 | /** | 70 | /** |
72 | * struct omap_volt_data - Omap voltage specific data. | 71 | * struct omap_volt_data - Omap voltage specific data. |
73 | * @voltage_nominal: The possible voltage value in uV | 72 | * @voltage_nominal: The possible voltage value in uV |
@@ -131,16 +130,26 @@ int omap_voltage_register_pmic(struct voltagedomain *voltdm, | |||
131 | struct omap_volt_pmic_info *pmic_info); | 130 | struct omap_volt_pmic_info *pmic_info); |
132 | void omap_change_voltscale_method(struct voltagedomain *voltdm, | 131 | void omap_change_voltscale_method(struct voltagedomain *voltdm, |
133 | int voltscale_method); | 132 | int voltscale_method); |
133 | /* API to get the voltagedomain pointer */ | ||
134 | struct voltagedomain *omap_voltage_domain_lookup(char *name); | ||
135 | |||
134 | int omap_voltage_late_init(void); | 136 | int omap_voltage_late_init(void); |
135 | #else | 137 | #else |
136 | static inline int omap_voltage_register_pmic(struct voltagedomain *voltdm, | 138 | static inline int omap_voltage_register_pmic(struct voltagedomain *voltdm, |
137 | struct omap_volt_pmic_info *pmic_info) {} | 139 | struct omap_volt_pmic_info *pmic_info) |
140 | { | ||
141 | return -EINVAL; | ||
142 | } | ||
138 | static inline void omap_change_voltscale_method(struct voltagedomain *voltdm, | 143 | static inline void omap_change_voltscale_method(struct voltagedomain *voltdm, |
139 | int voltscale_method) {} | 144 | int voltscale_method) {} |
140 | static inline int omap_voltage_late_init(void) | 145 | static inline int omap_voltage_late_init(void) |
141 | { | 146 | { |
142 | return -EINVAL; | 147 | return -EINVAL; |
143 | } | 148 | } |
149 | static inline struct voltagedomain *omap_voltage_domain_lookup(char *name) | ||
150 | { | ||
151 | return ERR_PTR(-EINVAL); | ||
152 | } | ||
144 | #endif | 153 | #endif |
145 | 154 | ||
146 | #endif | 155 | #endif |