aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-01-14 16:13:07 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2011-01-14 16:13:07 -0500
commitec08bdb148767f1193f5f3028749ed865ac27181 (patch)
tree03effeb02aaa21a21eaa70cd438ae301566af740 /arch
parent9cefa17e196beab300d4faf09d242de77e5900d5 (diff)
parent7d4ca85a53bab1f6f9911411be38e0486a11187a (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.c10
-rw-r--r--arch/arm/mach-omap2/board-igep0020.c33
-rw-r--r--arch/arm/mach-omap2/board-igep0030.c85
-rw-r--r--arch/arm/mach-omap2/board-omap3beagle.c60
-rw-r--r--arch/arm/mach-omap2/board-omap4panda.c10
-rw-r--r--arch/arm/mach-omap2/board-zoom-peripherals.c4
-rw-r--r--arch/arm/mach-omap2/clock3xxx_data.c2
-rw-r--r--arch/arm/mach-omap2/clockdomain.h2
-rw-r--r--arch/arm/mach-omap2/devices.c2
-rw-r--r--arch/arm/mach-omap2/mux.c2
-rw-r--r--arch/arm/mach-omap2/mux34xx.c4
-rw-r--r--arch/arm/mach-omap2/mux44xx.c6
-rw-r--r--arch/arm/mach-omap2/omap_twl.c10
-rw-r--r--arch/arm/mach-omap2/pm_bus.c4
-rw-r--r--arch/arm/mach-omap2/prm2xxx_3xxx.h63
-rw-r--r--arch/arm/mach-omap2/sr_device.c1
-rw-r--r--arch/arm/mach-omap2/wd_timer.c2
-rw-r--r--arch/arm/mm/Kconfig2
-rw-r--r--arch/arm/plat-omap/gpio.c12
-rw-r--r--arch/arm/plat-omap/include/plat/voltage.h17
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
556static struct omap_board_mux board_mux[] __initdata = { 556static 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
545static 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
564static struct matrix_keymap_data igep2_keymap_data = {
565 .keymap = igep2_keymap,
566 .keymap_size = ARRAY_SIZE(igep2_keymap),
567};
568
569static struct twl4030_keypad_data igep2_keypad_pdata = {
570 .keymap_data = &igep2_keymap_data,
571 .rows = 4,
572 .cols = 4,
573 .rep = 1,
574};
575
544static struct twl4030_platform_data igep2_twldata = { 576static 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
106void __init igep3_flash_init(void) 107static 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
140void __init igep3_flash_init(void) {} 141static void __init igep3_flash_init(void) {}
141#endif 142#endif
142 143
143static struct regulator_consumer_supply igep3_vmmc1_supply = { 144static 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 */
148static struct regulator_init_data igep3_vmmc1 = { 148static 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
162static struct regulator_consumer_supply igep3_vio_supply =
163 REGULATOR_SUPPLY("vmmc_aux", "mmci-omap-hs.1");
164
165static 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
180static struct regulator_consumer_supply igep3_vmmc2_supply =
181 REGULATOR_SUPPLY("vmmc", "mmci-omap-hs.1");
182
183static 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
192static 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
200static struct platform_device igep3_vwlan_device = {
201 .name = "reg-fixed-voltage",
202 .id = 0,
203 .dev = {
204 .platform_data = &igep3_vwlan,
205 },
206};
207
162static struct omap2_hsmmc_info mmc[] = { 208static 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
330static struct platform_device *igep3_devices[] __initdata = {
331 &igep3_vwlan_device,
332};
333
290static void __init igep3_init_irq(void) 334static 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
308static struct i2c_board_info __initdata igep3_i2c_boardinfo[] = { 353static struct i2c_board_info __initdata igep3_i2c_boardinfo[] = {
@@ -363,8 +408,20 @@ static void __init igep3_wifi_bt_init(void)
363void __init igep3_wifi_bt_init(void) {} 408void __init igep3_wifi_bt_init(void) {}
364#endif 409#endif
365 410
411static 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
367static struct omap_board_mux board_mux[] __initdata = { 423static 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
393MACHINE_START(IGEP0030, "IGEP OMAP3 module") 451MACHINE_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
213static struct omap_dss_device beagle_tv_device = { 213static struct omap_dss_device beagle_tv_device = {
@@ -279,6 +279,8 @@ static struct gpio_led gpio_leds[];
279static int beagle_twl_gpio_setup(struct device *dev, 279static 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 = {
95static void __init omap4_ehci_init(void) 96static 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
195struct wl12xx_platform_data omap_zoom_wlan_data __initdata = { 195static 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 */
289void zoom2_set_hs_extmute(int mute) 289static 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)
978arch_initcall(omap2_init_devices); 978arch_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)
981struct omap_device_pm_latency omap_wdt_latency[] = { 981static 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)
706struct omap_mux __initdata omap3_cbc_subset[] = { 706static 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)
724struct omap_ball __initdata omap3_cbc_ball[] = { 724static 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)
547struct omap_ball __initdata omap4_core_cbl_ball[] = { 547static 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)
1265struct omap_ball __initdata omap4_core_cbs_ball[] = { 1265static 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)
1549struct omap_ball __initdata omap4_wkup_cbl_cbs_ball[] = { 1549static 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
63unsigned long twl4030_vsel_to_uv(const u8 vsel) 65static 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
68u8 twl4030_uv_to_vsel(unsigned long uv) 70static 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
73unsigned long twl6030_vsel_to_uv(const u8 vsel) 75static 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
105u8 twl6030_uv_to_vsel(unsigned long uv) 107static 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
23int omap_pm_runtime_suspend(struct device *dev) 23static 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
40int omap_pm_runtime_resume(struct device *dev) 40static 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))
237static 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}
243static 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}
248static 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}
255static 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}
261static 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}
267static 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}
273static 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}
279static 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}
285static 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 */
233extern u32 omap2_prm_read_mod_reg(s16 module, u16 idx); 293extern u32 omap2_prm_read_mod_reg(s16 module, u16 idx);
234extern void omap2_prm_write_mod_reg(u32 val, s16 module, u16 idx); 294extern 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);
242extern int omap2_prm_assert_hardreset(s16 prm_mod, u8 shift); 302extern int omap2_prm_assert_hardreset(s16 prm_mod, u8 shift);
243extern int omap2_prm_deassert_hardreset(s16 prm_mod, u8 shift); 303extern 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
31static bool sr_enable_on_init; 32static 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
645config SWP_EMULATE 645config 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 */
69struct 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);
132void omap_change_voltscale_method(struct voltagedomain *voltdm, 131void omap_change_voltscale_method(struct voltagedomain *voltdm,
133 int voltscale_method); 132 int voltscale_method);
133/* API to get the voltagedomain pointer */
134struct voltagedomain *omap_voltage_domain_lookup(char *name);
135
134int omap_voltage_late_init(void); 136int omap_voltage_late_init(void);
135#else 137#else
136static inline int omap_voltage_register_pmic(struct voltagedomain *voltdm, 138static 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}
138static inline void omap_change_voltscale_method(struct voltagedomain *voltdm, 143static inline void omap_change_voltscale_method(struct voltagedomain *voltdm,
139 int voltscale_method) {} 144 int voltscale_method) {}
140static inline int omap_voltage_late_init(void) 145static inline int omap_voltage_late_init(void)
141{ 146{
142 return -EINVAL; 147 return -EINVAL;
143} 148}
149static 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