aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-10-10 21:21:48 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-10 21:21:48 -0400
commitda06a8d7bed2f3bfc12979384b2d1247ec4873db (patch)
treeed60bec05c7d69d94ad048d404321ce759a48868
parent49999ab27eab6289a8e4f450e148bdab521361b2 (diff)
parent6bd5dbda2adeabba69c969886511e501a65b6e3c (diff)
Merge tag 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC fixes from Olof Johansson: "A series of fixes (and in some cases, some cleanups): Via Tony Lindgren: - A collection of OMAP regression fixes, in particular because firmware no longer sets up all pin states before starting the kernel. - cpufreq fixes for OMAP (Rafael is on vacation and this was pre-agreed). - A longer series of misc regression fixes and cleanups, warning removals, etc for OMAP From Arnd Bergmann: - A series of warning fixes for various platforms (defconfig builds) Misc: - A couple of tegra fixes, one for i.MX, some vt8500 fixes, etc." * tag 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (73 commits) ARM: pxa: armcore: fix PCI PIO warnings ARM: integrator: use __iomem pointers for MMIO, part 2 ARM: assabet: fix bogus warning in get_assabet_scr (again) ARM: shmobile: mark shmobile_init_late as __init ARM: integrator_cp: fix build failure ARM: OMAP4/AM335x: hwmod: fix disable_module regression in hardreset handling ARM: OMAP3: fix workaround for EMU clockdomain arm/omap: Replace board_ref_clock with enum values ARM: OMAP2+: remove duplicated include from board-omap3stalker.c arch/arm/plat-omap/omap-pm-noop.c: Remove unecessary semicolon arch/arm/mach-omap2: Remove unecessary semicolon arch/arm/mach-omap1/devices.c: Remove unecessary semicolon ARM/dts: omap5-evm: pinmux configuration for audio ARM/dts: Add pinctrl driver entries for omap5 ARM/dts: omap4-panda: pinmux configuration for audio ARM/dts: omap4-sdp: pinmux configuration for audio ARM/dts: omap5-evm: Disable unused McBSP3 ARM/dts: omap4-sdp: Disable unused McBSP3 ARM/dts: omap4-panda: Disable unused audio IPs ARM: OMAP: board-omap4panda: Pin mux configuration for audio needs ...
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt2
-rw-r--r--Documentation/devicetree/bindings/timer/brcm,bcm2835-system-timer.txt2
-rw-r--r--arch/arm/Kconfig3
-rw-r--r--arch/arm/boot/dts/Makefile15
-rw-r--r--arch/arm/boot/dts/omap4-panda.dts47
-rw-r--r--arch/arm/boot/dts/omap4-sdp.dts57
-rw-r--r--arch/arm/boot/dts/omap5-evm.dts58
-rw-r--r--arch/arm/boot/dts/omap5.dtsi17
-rw-r--r--arch/arm/boot/dts/tegra20-seaboard.dts2
-rw-r--r--arch/arm/boot/dts/tegra20.dtsi4
-rw-r--r--arch/arm/common/it8152.c12
-rw-r--r--arch/arm/mach-at91/pm.c5
-rw-r--r--arch/arm/mach-at91/setup.c2
-rw-r--r--arch/arm/mach-davinci/da850.c2
-rw-r--r--arch/arm/mach-footbridge/include/mach/irqs.h2
-rw-r--r--arch/arm/mach-integrator/include/mach/cm.h2
-rw-r--r--arch/arm/mach-integrator/include/mach/platform.h6
-rw-r--r--arch/arm/mach-integrator/integrator_ap.c2
-rw-r--r--arch/arm/mach-integrator/integrator_cp.c4
-rw-r--r--arch/arm/mach-iop13xx/iq81340sc.c2
-rw-r--r--arch/arm/mach-iop13xx/pci.c2
-rw-r--r--arch/arm/mach-ks8695/include/mach/memory.h3
-rw-r--r--arch/arm/mach-mv78xx0/addr-map.c2
-rw-r--r--arch/arm/mach-mv78xx0/common.c2
-rw-r--r--arch/arm/mach-omap1/devices.c2
-rw-r--r--arch/arm/mach-omap2/board-4430sdp.c26
-rw-r--r--arch/arm/mach-omap2/board-flash.c2
-rw-r--r--arch/arm/mach-omap2/board-omap3beagle.c2
-rw-r--r--arch/arm/mach-omap2/board-omap3evm.c3
-rw-r--r--arch/arm/mach-omap2/board-omap3stalker.c5
-rw-r--r--arch/arm/mach-omap2/board-omap4panda.c18
-rw-r--r--arch/arm/mach-omap2/board-rx51-peripherals.c2
-rw-r--r--arch/arm/mach-omap2/board-zoom-peripherals.c3
-rw-r--r--arch/arm/mach-omap2/clkt_clksel.c2
-rw-r--r--arch/arm/mach-omap2/clock33xx_data.c2
-rw-r--r--arch/arm/mach-omap2/clockdomain2xxx_3xxx.c44
-rw-r--r--arch/arm/mach-omap2/display.c2
-rw-r--r--arch/arm/mach-omap2/gpmc.c4
-rw-r--r--arch/arm/mach-omap2/hsmmc.c2
-rw-r--r--arch/arm/mach-omap2/mux.c2
-rw-r--r--arch/arm/mach-omap2/omap-secure.c4
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.c31
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c2
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_3xxx_data.c9
-rw-r--r--arch/arm/mach-omap2/opp.c23
-rw-r--r--arch/arm/mach-omap2/pm-debug.c2
-rw-r--r--arch/arm/mach-omap2/pm.c13
-rw-r--r--arch/arm/mach-omap2/sr_device.c2
-rw-r--r--arch/arm/mach-omap2/timer.c2
-rw-r--r--arch/arm/mach-omap2/twl-common.c2
-rw-r--r--arch/arm/mach-pxa/cm-x2xx.c1
-rw-r--r--arch/arm/mach-pxa/palmte2.c2
-rw-r--r--arch/arm/mach-pxa/sharpsl_pm.c48
-rw-r--r--arch/arm/mach-pxa/viper.c3
-rw-r--r--arch/arm/mach-rpc/ecard.c4
-rw-r--r--arch/arm/mach-s3c24xx/irq-s3c2416.c6
-rw-r--r--arch/arm/mach-s3c24xx/irq-s3c2443.c4
-rw-r--r--arch/arm/mach-s3c24xx/simtec-usb.c2
-rw-r--r--arch/arm/mach-sa1100/assabet.c2
-rw-r--r--arch/arm/mach-shark/pci.c2
-rw-r--r--arch/arm/mach-shmobile/include/mach/common.h2
-rw-r--r--arch/arm/mach-tegra/Kconfig6
-rw-r--r--arch/arm/mach-ux500/Kconfig4
-rw-r--r--arch/arm/mach-vt8500/include/mach/uncompress.h8
-rw-r--r--arch/arm/mach-vt8500/vt8500.c5
-rw-r--r--arch/arm/plat-omap/Kconfig2
-rw-r--r--arch/arm/plat-omap/counter_32k.c21
-rw-r--r--arch/arm/plat-omap/omap-pm-noop.c8
-rw-r--r--arch/arm/plat-omap/omap_device.c2
-rw-r--r--drivers/char/ds1620.c8
-rw-r--r--drivers/char/nwflash.c4
-rw-r--r--drivers/cpufreq/omap-cpufreq.c36
-rw-r--r--drivers/mmc/host/sdhci-tegra.c1
-rw-r--r--drivers/power/avs/smartreflex.c8
-rw-r--r--sound/oss/waveartist.c4
75 files changed, 436 insertions, 223 deletions
diff --git a/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt b/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
index 548892c08c59..7da578d72123 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
+++ b/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
@@ -7,7 +7,7 @@ as "armctrl" in the SoC documentation, hence naming of this binding.
7 7
8Required properties: 8Required properties:
9 9
10- compatible : should be "brcm,bcm2835-armctrl-ic.txt" 10- compatible : should be "brcm,bcm2835-armctrl-ic"
11- reg : Specifies base physical address and size of the registers. 11- reg : Specifies base physical address and size of the registers.
12- interrupt-controller : Identifies the node as an interrupt controller 12- interrupt-controller : Identifies the node as an interrupt controller
13- #interrupt-cells : Specifies the number of cells needed to encode an 13- #interrupt-cells : Specifies the number of cells needed to encode an
diff --git a/Documentation/devicetree/bindings/timer/brcm,bcm2835-system-timer.txt b/Documentation/devicetree/bindings/timer/brcm,bcm2835-system-timer.txt
index 2de21c2acf55..844bd5fbd04c 100644
--- a/Documentation/devicetree/bindings/timer/brcm,bcm2835-system-timer.txt
+++ b/Documentation/devicetree/bindings/timer/brcm,bcm2835-system-timer.txt
@@ -7,7 +7,7 @@ free running counter values, and generates an interrupt.
7 7
8Required properties: 8Required properties:
9 9
10- compatible : should be "brcm,bcm2835-system-timer.txt" 10- compatible : should be "brcm,bcm2835-system-timer"
11- reg : Specifies base physical address and size of the registers. 11- reg : Specifies base physical address and size of the registers.
12- interrupts : A list of 4 interrupt sinks; one per timer channel. 12- interrupts : A list of 4 interrupt sinks; one per timer channel.
13- clock-frequency : The frequency of the clock that drives the counter, in Hz. 13- clock-frequency : The frequency of the clock that drives the counter, in Hz.
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index e40eefb5d32d..767aae8277fa 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -494,7 +494,6 @@ config ARCH_IOP32X
494 depends on MMU 494 depends on MMU
495 select CPU_XSCALE 495 select CPU_XSCALE
496 select NEED_MACH_GPIO_H 496 select NEED_MACH_GPIO_H
497 select NEED_MACH_IO_H
498 select NEED_RET_TO_USER 497 select NEED_RET_TO_USER
499 select PLAT_IOP 498 select PLAT_IOP
500 select PCI 499 select PCI
@@ -508,7 +507,6 @@ config ARCH_IOP33X
508 depends on MMU 507 depends on MMU
509 select CPU_XSCALE 508 select CPU_XSCALE
510 select NEED_MACH_GPIO_H 509 select NEED_MACH_GPIO_H
511 select NEED_MACH_IO_H
512 select NEED_RET_TO_USER 510 select NEED_RET_TO_USER
513 select PLAT_IOP 511 select PLAT_IOP
514 select PCI 512 select PCI
@@ -1772,6 +1770,7 @@ source "mm/Kconfig"
1772config FORCE_MAX_ZONEORDER 1770config FORCE_MAX_ZONEORDER
1773 int "Maximum zone order" if ARCH_SHMOBILE 1771 int "Maximum zone order" if ARCH_SHMOBILE
1774 range 11 64 if ARCH_SHMOBILE 1772 range 11 64 if ARCH_SHMOBILE
1773 default "12" if SOC_AM33XX
1775 default "9" if SA1111 1774 default "9" if SA1111
1776 default "11" 1775 default "11"
1777 help 1776 help
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 29f541f0e653..c1ce813fcc4a 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -25,14 +25,6 @@ dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \
25 exynos4210-trats.dtb \ 25 exynos4210-trats.dtb \
26 exynos5250-smdk5250.dtb 26 exynos5250-smdk5250.dtb
27dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb 27dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb
28dtb-$(CONFIG_ARCH_IMX5) += imx51-babbage.dtb \
29 imx53-ard.dtb \
30 imx53-evk.dtb \
31 imx53-qsb.dtb \
32 imx53-smd.dtb
33dtb-$(CONFIG_SOC_IMX6Q) += imx6q-arm2.dtb \
34 imx6q-sabrelite.dtb \
35 imx6q-sabresd.dtb
36dtb-$(CONFIG_ARCH_LPC32XX) += ea3250.dtb phy3250.dtb 28dtb-$(CONFIG_ARCH_LPC32XX) += ea3250.dtb phy3250.dtb
37dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \ 29dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \
38 kirkwood-dns325.dtb \ 30 kirkwood-dns325.dtb \
@@ -76,7 +68,9 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
76 omap4-pandaES.dtb \ 68 omap4-pandaES.dtb \
77 omap4-var_som.dtb \ 69 omap4-var_som.dtb \
78 omap4-sdp.dtb \ 70 omap4-sdp.dtb \
79 omap5-evm.dtb 71 omap5-evm.dtb \
72 am335x-evm.dtb \
73 am335x-bone.dtb
80dtb-$(CONFIG_ARCH_PRIMA2) += prima2-evb.dtb 74dtb-$(CONFIG_ARCH_PRIMA2) += prima2-evb.dtb
81dtb-$(CONFIG_ARCH_U8500) += snowball.dtb 75dtb-$(CONFIG_ARCH_U8500) += snowball.dtb
82dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \ 76dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \
@@ -104,5 +98,8 @@ dtb-$(CONFIG_ARCH_VEXPRESS) += vexpress-v2p-ca5s.dtb \
104 vexpress-v2p-ca15-tc1.dtb \ 98 vexpress-v2p-ca15-tc1.dtb \
105 vexpress-v2p-ca15_a7.dtb \ 99 vexpress-v2p-ca15_a7.dtb \
106 xenvm-4.2.dtb 100 xenvm-4.2.dtb
101dtb-$(CONFIG_ARCH_VT8500) += vt8500-bv07.dtb \
102 wm8505-ref.dtb \
103 wm8650-mid.dtb
107 104
108endif 105endif
diff --git a/arch/arm/boot/dts/omap4-panda.dts b/arch/arm/boot/dts/omap4-panda.dts
index 20b966ee1bb3..e8f927cbb376 100644
--- a/arch/arm/boot/dts/omap4-panda.dts
+++ b/arch/arm/boot/dts/omap4-panda.dts
@@ -59,6 +59,41 @@
59 }; 59 };
60}; 60};
61 61
62&omap4_pmx_core {
63 pinctrl-names = "default";
64 pinctrl-0 = <
65 &twl6040_pins
66 &mcpdm_pins
67 &mcbsp1_pins
68 >;
69
70 twl6040_pins: pinmux_twl6040_pins {
71 pinctrl-single,pins = <
72 0xe0 0x3 /* hdq_sio.gpio_127 OUTPUT | MODE3 */
73 0x160 0x100 /* sys_nirq2.sys_nirq2 INPUT | MODE0 */
74 >;
75 };
76
77 mcpdm_pins: pinmux_mcpdm_pins {
78 pinctrl-single,pins = <
79 0xc6 0x108 /* abe_pdm_ul_data.abe_pdm_ul_data INPUT PULLDOWN | MODE0 */
80 0xc8 0x108 /* abe_pdm_dl_data.abe_pdm_dl_data INPUT PULLDOWN | MODE0 */
81 0xca 0x118 /* abe_pdm_frame.abe_pdm_frame INPUT PULLUP | MODE0 */
82 0xcc 0x108 /* abe_pdm_lb_clk.abe_pdm_lb_clk INPUT PULLDOWN | MODE0 */
83 0xce 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */
84 >;
85 };
86
87 mcbsp1_pins: pinmux_mcbsp1_pins {
88 pinctrl-single,pins = <
89 0xbe 0x100 /* abe_mcbsp1_clkx.abe_mcbsp1_clkx INPUT | MODE0 */
90 0xc0 0x108 /* abe_mcbsp1_dr.abe_mcbsp1_dr INPUT PULLDOWN | MODE0 */
91 0xc2 0x8 /* abe_mcbsp1_dx.abe_mcbsp1_dx OUTPUT PULLDOWN | MODE0 */
92 0xc4 0x100 /* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */
93 >;
94 };
95};
96
62&i2c1 { 97&i2c1 {
63 clock-frequency = <400000>; 98 clock-frequency = <400000>;
64 99
@@ -137,3 +172,15 @@
137 cs1-used; 172 cs1-used;
138 device-handle = <&elpida_ECB240ABACN>; 173 device-handle = <&elpida_ECB240ABACN>;
139}; 174};
175
176&mcbsp2 {
177 status = "disabled";
178};
179
180&mcbsp3 {
181 status = "disabled";
182};
183
184&dmic {
185 status = "disabled";
186};
diff --git a/arch/arm/boot/dts/omap4-sdp.dts b/arch/arm/boot/dts/omap4-sdp.dts
index 94a23b39033d..5b7e04fbff50 100644
--- a/arch/arm/boot/dts/omap4-sdp.dts
+++ b/arch/arm/boot/dts/omap4-sdp.dts
@@ -117,6 +117,15 @@
117}; 117};
118 118
119&omap4_pmx_core { 119&omap4_pmx_core {
120 pinctrl-names = "default";
121 pinctrl-0 = <
122 &twl6040_pins
123 &mcpdm_pins
124 &dmic_pins
125 &mcbsp1_pins
126 &mcbsp2_pins
127 >;
128
120 uart2_pins: pinmux_uart2_pins { 129 uart2_pins: pinmux_uart2_pins {
121 pinctrl-single,pins = < 130 pinctrl-single,pins = <
122 0xd8 0x118 /* uart2_cts.uart2_cts INPUT_PULLUP | MODE0 */ 131 0xd8 0x118 /* uart2_cts.uart2_cts INPUT_PULLUP | MODE0 */
@@ -141,6 +150,50 @@
141 0x11e 0 /* uart4_tx.uart4_tx OUTPUT | MODE0 */ 150 0x11e 0 /* uart4_tx.uart4_tx OUTPUT | MODE0 */
142 >; 151 >;
143 }; 152 };
153
154 twl6040_pins: pinmux_twl6040_pins {
155 pinctrl-single,pins = <
156 0xe0 0x3 /* hdq_sio.gpio_127 OUTPUT | MODE3 */
157 0x160 0x100 /* sys_nirq2.sys_nirq2 INPUT | MODE0 */
158 >;
159 };
160
161 mcpdm_pins: pinmux_mcpdm_pins {
162 pinctrl-single,pins = <
163 0xc6 0x108 /* abe_pdm_ul_data.abe_pdm_ul_data INPUT PULLDOWN | MODE0 */
164 0xc8 0x108 /* abe_pdm_dl_data.abe_pdm_dl_data INPUT PULLDOWN | MODE0 */
165 0xca 0x118 /* abe_pdm_frame.abe_pdm_frame INPUT PULLUP | MODE0 */
166 0xcc 0x108 /* abe_pdm_lb_clk.abe_pdm_lb_clk INPUT PULLDOWN | MODE0 */
167 0xce 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */
168 >;
169 };
170
171 dmic_pins: pinmux_dmic_pins {
172 pinctrl-single,pins = <
173 0xd0 0 /* abe_dmic_clk1.abe_dmic_clk1 OUTPUT | MODE0 */
174 0xd2 0x100 /* abe_dmic_din1.abe_dmic_din1 INPUT | MODE0 */
175 0xd4 0x100 /* abe_dmic_din2.abe_dmic_din2 INPUT | MODE0 */
176 0xd6 0x100 /* abe_dmic_din3.abe_dmic_din3 INPUT | MODE0 */
177 >;
178 };
179
180 mcbsp1_pins: pinmux_mcbsp1_pins {
181 pinctrl-single,pins = <
182 0xbe 0x100 /* abe_mcbsp1_clkx.abe_mcbsp1_clkx INPUT | MODE0 */
183 0xc0 0x108 /* abe_mcbsp1_dr.abe_mcbsp1_dr INPUT PULLDOWN | MODE0 */
184 0xc2 0x8 /* abe_mcbsp1_dx.abe_mcbsp1_dx OUTPUT PULLDOWN | MODE0 */
185 0xc4 0x100 /* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */
186 >;
187 };
188
189 mcbsp2_pins: pinmux_mcbsp2_pins {
190 pinctrl-single,pins = <
191 0xb6 0x100 /* abe_mcbsp2_clkx.abe_mcbsp2_clkx INPUT | MODE0 */
192 0xb8 0x108 /* abe_mcbsp2_dr.abe_mcbsp2_dr INPUT PULLDOWN | MODE0 */
193 0xba 0x8 /* abe_mcbsp2_dx.abe_mcbsp2_dx OUTPUT PULLDOWN | MODE0 */
194 0xbc 0x100 /* abe_mcbsp2_fsx.abe_mcbsp2_fsx INPUT | MODE0 */
195 >;
196 };
144}; 197};
145 198
146&i2c1 { 199&i2c1 {
@@ -349,3 +402,7 @@
349 pinctrl-names = "default"; 402 pinctrl-names = "default";
350 pinctrl-0 = <&uart4_pins>; 403 pinctrl-0 = <&uart4_pins>;
351}; 404};
405
406&mcbsp3 {
407 status = "disabled";
408};
diff --git a/arch/arm/boot/dts/omap5-evm.dts b/arch/arm/boot/dts/omap5-evm.dts
index 9c41a3f311aa..c663eba73168 100644
--- a/arch/arm/boot/dts/omap5-evm.dts
+++ b/arch/arm/boot/dts/omap5-evm.dts
@@ -27,6 +27,60 @@
27 27
28}; 28};
29 29
30&omap5_pmx_core {
31 pinctrl-names = "default";
32 pinctrl-0 = <
33 &twl6040_pins
34 &mcpdm_pins
35 &dmic_pins
36 &mcbsp1_pins
37 &mcbsp2_pins
38 >;
39
40 twl6040_pins: pinmux_twl6040_pins {
41 pinctrl-single,pins = <
42 0x18a 0x6 /* perslimbus2_clock.gpio5_145 OUTPUT | MODE6 */
43 >;
44 };
45
46 mcpdm_pins: pinmux_mcpdm_pins {
47 pinctrl-single,pins = <
48 0x142 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */
49 0x15c 0x108 /* abemcpdm_ul_data.abemcpdm_ul_data INPUT PULLDOWN | MODE0 */
50 0x15e 0x108 /* abemcpdm_dl_data.abemcpdm_dl_data INPUT PULLDOWN | MODE0 */
51 0x160 0x118 /* abemcpdm_frame.abemcpdm_frame INPUT PULLUP | MODE0 */
52 0x162 0x108 /* abemcpdm_lb_clk.abemcpdm_lb_clk INPUT PULLDOWN | MODE0 */
53 >;
54 };
55
56 dmic_pins: pinmux_dmic_pins {
57 pinctrl-single,pins = <
58 0x144 0x100 /* abedmic_din1.abedmic_din1 INPUT | MODE0 */
59 0x146 0x100 /* abedmic_din2.abedmic_din2 INPUT | MODE0 */
60 0x148 0x100 /* abedmic_din3.abedmic_din3 INPUT | MODE0 */
61 0x14a 0 /* abedmic_clk1.abedmic_clk1 OUTPUT | MODE0 */
62 >;
63 };
64
65 mcbsp1_pins: pinmux_mcbsp1_pins {
66 pinctrl-single,pins = <
67 0x14c 0x101 /* abedmic_clk2.abemcbsp1_fsx INPUT | MODE1 */
68 0x14e 0x9 /* abedmic_clk3.abemcbsp1_dx OUTPUT PULLDOWN | MODE1 */
69 0x150 0x101 /* abeslimbus1_clock.abemcbsp1_clkx INPUT | MODE0 */
70 0x152 0x109 /* abeslimbus1_data.abemcbsp1_dr INPUT PULLDOWN | MODE1 */
71 >;
72 };
73
74 mcbsp2_pins: pinmux_mcbsp2_pins {
75 pinctrl-single,pins = <
76 0x154 0x108 /* abemcbsp2_dr.abemcbsp2_dr INPUT PULLDOWN | MODE0 */
77 0x156 0x8 /* abemcbsp2_dx.abemcbsp2_dx OUTPUT PULLDOWN | MODE0 */
78 0x158 0x100 /* abemcbsp2_fsx.abemcbsp2_fsx INPUT | MODE0 */
79 0x15a 0x100 /* abemcbsp2_clkx.abemcbsp2_clkx INPUT | MODE0 */
80 >;
81 };
82};
83
30&mmc1 { 84&mmc1 {
31 vmmc-supply = <&vmmcsd_fixed>; 85 vmmc-supply = <&vmmcsd_fixed>;
32 bus-width = <4>; 86 bus-width = <4>;
@@ -82,3 +136,7 @@
82 0x020700d9>; /* SEARCH */ 136 0x020700d9>; /* SEARCH */
83 linux,input-no-autorepeat; 137 linux,input-no-autorepeat;
84}; 138};
139
140&mcbsp3 {
141 status = "disabled";
142};
diff --git a/arch/arm/boot/dts/omap5.dtsi b/arch/arm/boot/dts/omap5.dtsi
index 5db33f481a33..42c78beb4fdc 100644
--- a/arch/arm/boot/dts/omap5.dtsi
+++ b/arch/arm/boot/dts/omap5.dtsi
@@ -77,6 +77,23 @@
77 ranges; 77 ranges;
78 ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3"; 78 ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
79 79
80 omap5_pmx_core: pinmux@4a002840 {
81 compatible = "ti,omap4-padconf", "pinctrl-single";
82 reg = <0x4a002840 0x01b6>;
83 #address-cells = <1>;
84 #size-cells = <0>;
85 pinctrl-single,register-width = <16>;
86 pinctrl-single,function-mask = <0x7fff>;
87 };
88 omap5_pmx_wkup: pinmux@4ae0c840 {
89 compatible = "ti,omap4-padconf", "pinctrl-single";
90 reg = <0x4ae0c840 0x0038>;
91 #address-cells = <1>;
92 #size-cells = <0>;
93 pinctrl-single,register-width = <16>;
94 pinctrl-single,function-mask = <0x7fff>;
95 };
96
80 gic: interrupt-controller@48211000 { 97 gic: interrupt-controller@48211000 {
81 compatible = "arm,cortex-a15-gic"; 98 compatible = "arm,cortex-a15-gic";
82 interrupt-controller; 99 interrupt-controller;
diff --git a/arch/arm/boot/dts/tegra20-seaboard.dts b/arch/arm/boot/dts/tegra20-seaboard.dts
index e60dc7124e92..f0ba901676ac 100644
--- a/arch/arm/boot/dts/tegra20-seaboard.dts
+++ b/arch/arm/boot/dts/tegra20-seaboard.dts
@@ -539,7 +539,7 @@
539 nvidia,invert-interrupt; 539 nvidia,invert-interrupt;
540 }; 540 };
541 541
542 memory-controller@0x7000f400 { 542 memory-controller@7000f400 {
543 emc-table@190000 { 543 emc-table@190000 {
544 reg = <190000>; 544 reg = <190000>;
545 compatible = "nvidia,tegra20-emc-table"; 545 compatible = "nvidia,tegra20-emc-table";
diff --git a/arch/arm/boot/dts/tegra20.dtsi b/arch/arm/boot/dts/tegra20.dtsi
index 67a6cd910b96..f3a09d0d45bc 100644
--- a/arch/arm/boot/dts/tegra20.dtsi
+++ b/arch/arm/boot/dts/tegra20.dtsi
@@ -170,7 +170,7 @@
170 reg = <0x7000e400 0x400>; 170 reg = <0x7000e400 0x400>;
171 }; 171 };
172 172
173 memory-controller@0x7000f000 { 173 memory-controller@7000f000 {
174 compatible = "nvidia,tegra20-mc"; 174 compatible = "nvidia,tegra20-mc";
175 reg = <0x7000f000 0x024 175 reg = <0x7000f000 0x024
176 0x7000f03c 0x3c4>; 176 0x7000f03c 0x3c4>;
@@ -183,7 +183,7 @@
183 0x58000000 0x02000000>; /* GART aperture */ 183 0x58000000 0x02000000>; /* GART aperture */
184 }; 184 };
185 185
186 memory-controller@0x7000f400 { 186 memory-controller@7000f400 {
187 compatible = "nvidia,tegra20-emc"; 187 compatible = "nvidia,tegra20-emc";
188 reg = <0x7000f400 0x200>; 188 reg = <0x7000f400 0x200>;
189 #address-cells = <1>; 189 #address-cells = <1>;
diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c
index c4110d1b1f2d..001f4913799c 100644
--- a/arch/arm/common/it8152.c
+++ b/arch/arm/common/it8152.c
@@ -284,11 +284,17 @@ int dma_set_coherent_mask(struct device *dev, u64 mask)
284 284
285int __init it8152_pci_setup(int nr, struct pci_sys_data *sys) 285int __init it8152_pci_setup(int nr, struct pci_sys_data *sys)
286{ 286{
287 it8152_io.start = IT8152_IO_BASE + 0x12000; 287 /*
288 it8152_io.end = IT8152_IO_BASE + 0x12000 + 0x100000; 288 * FIXME: use pci_ioremap_io to remap the IO space here and
289 * move over to the generic io.h implementation.
290 * This requires solving the same problem for PXA PCMCIA
291 * support.
292 */
293 it8152_io.start = (unsigned long)IT8152_IO_BASE + 0x12000;
294 it8152_io.end = (unsigned long)IT8152_IO_BASE + 0x12000 + 0x100000;
289 295
290 sys->mem_offset = 0x10000000; 296 sys->mem_offset = 0x10000000;
291 sys->io_offset = IT8152_IO_BASE; 297 sys->io_offset = (unsigned long)IT8152_IO_BASE;
292 298
293 if (request_resource(&ioport_resource, &it8152_io)) { 299 if (request_resource(&ioport_resource, &it8152_io)) {
294 printk(KERN_ERR "PCI: unable to allocate IO region\n"); 300 printk(KERN_ERR "PCI: unable to allocate IO region\n");
diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c
index 2c2d86505a54..5315f05896e9 100644
--- a/arch/arm/mach-at91/pm.c
+++ b/arch/arm/mach-at91/pm.c
@@ -153,7 +153,9 @@ static int at91_pm_verify_clocks(void)
153 } 153 }
154 } 154 }
155 155
156#ifdef CONFIG_AT91_PROGRAMMABLE_CLOCKS 156 if (!IS_ENABLED(CONFIG_AT91_PROGRAMMABLE_CLOCKS))
157 return 1;
158
157 /* PCK0..PCK3 must be disabled, or configured to use clk32k */ 159 /* PCK0..PCK3 must be disabled, or configured to use clk32k */
158 for (i = 0; i < 4; i++) { 160 for (i = 0; i < 4; i++) {
159 u32 css; 161 u32 css;
@@ -167,7 +169,6 @@ static int at91_pm_verify_clocks(void)
167 return 0; 169 return 0;
168 } 170 }
169 } 171 }
170#endif
171 172
172 return 1; 173 return 1;
173} 174}
diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c
index e6f52de1062f..da9881b161e1 100644
--- a/arch/arm/mach-at91/setup.c
+++ b/arch/arm/mach-at91/setup.c
@@ -87,7 +87,7 @@ void __init at91_init_sram(int bank, unsigned long base, unsigned int length)
87 iotable_init(desc, 1); 87 iotable_init(desc, 1);
88} 88}
89 89
90static struct map_desc at91_io_desc __initdata = { 90static struct map_desc at91_io_desc __initdata __maybe_unused = {
91 .virtual = (unsigned long)AT91_VA_BASE_SYS, 91 .virtual = (unsigned long)AT91_VA_BASE_SYS,
92 .pfn = __phys_to_pfn(AT91_BASE_SYS), 92 .pfn = __phys_to_pfn(AT91_BASE_SYS),
93 .length = SZ_16K, 93 .length = SZ_16K,
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c
index 6676dee7104e..e517e1036b09 100644
--- a/arch/arm/mach-davinci/da850.c
+++ b/arch/arm/mach-davinci/da850.c
@@ -939,7 +939,7 @@ static struct platform_device da850_cpufreq_device = {
939 939
940unsigned int da850_max_speed = 300000; 940unsigned int da850_max_speed = 300000;
941 941
942int __init da850_register_cpufreq(char *async_clk) 942int da850_register_cpufreq(char *async_clk)
943{ 943{
944 int i; 944 int i;
945 945
diff --git a/arch/arm/mach-footbridge/include/mach/irqs.h b/arch/arm/mach-footbridge/include/mach/irqs.h
index 400551e43e4e..61c714c4920e 100644
--- a/arch/arm/mach-footbridge/include/mach/irqs.h
+++ b/arch/arm/mach-footbridge/include/mach/irqs.h
@@ -89,8 +89,6 @@
89#define IRQ_NETWINDER_VGA _ISA_IRQ(11) 89#define IRQ_NETWINDER_VGA _ISA_IRQ(11)
90#define IRQ_NETWINDER_SOUND _ISA_IRQ(12) 90#define IRQ_NETWINDER_SOUND _ISA_IRQ(12)
91 91
92#undef RTC_IRQ
93#define RTC_IRQ IRQ_ISA_RTC_ALARM
94#define I8042_KBD_IRQ IRQ_ISA_KEYBOARD 92#define I8042_KBD_IRQ IRQ_ISA_KEYBOARD
95#define I8042_AUX_IRQ (machine_is_netwinder() ? IRQ_NETWINDER_PS2MOUSE : IRQ_ISA_PS2MOUSE) 93#define I8042_AUX_IRQ (machine_is_netwinder() ? IRQ_NETWINDER_PS2MOUSE : IRQ_ISA_PS2MOUSE)
96#define IRQ_FLOPPYDISK IRQ_ISA_FLOPPY 94#define IRQ_FLOPPYDISK IRQ_ISA_FLOPPY
diff --git a/arch/arm/mach-integrator/include/mach/cm.h b/arch/arm/mach-integrator/include/mach/cm.h
index 1a78692e32a4..202e6a57f100 100644
--- a/arch/arm/mach-integrator/include/mach/cm.h
+++ b/arch/arm/mach-integrator/include/mach/cm.h
@@ -3,7 +3,7 @@
3 */ 3 */
4void cm_control(u32, u32); 4void cm_control(u32, u32);
5 5
6#define CM_CTRL IO_ADDRESS(INTEGRATOR_HDR_CTRL) 6#define CM_CTRL __io_address(INTEGRATOR_HDR_CTRL)
7 7
8#define CM_CTRL_LED (1 << 0) 8#define CM_CTRL_LED (1 << 0)
9#define CM_CTRL_nMBDET (1 << 1) 9#define CM_CTRL_nMBDET (1 << 1)
diff --git a/arch/arm/mach-integrator/include/mach/platform.h b/arch/arm/mach-integrator/include/mach/platform.h
index 4c0347526851..efeac5d0bc9e 100644
--- a/arch/arm/mach-integrator/include/mach/platform.h
+++ b/arch/arm/mach-integrator/include/mach/platform.h
@@ -324,9 +324,9 @@
324 */ 324 */
325#define PHYS_PCI_V3_BASE 0x62000000 325#define PHYS_PCI_V3_BASE 0x62000000
326 326
327#define PCI_MEMORY_VADDR 0xe8000000 327#define PCI_MEMORY_VADDR IOMEM(0xe8000000)
328#define PCI_CONFIG_VADDR 0xec000000 328#define PCI_CONFIG_VADDR IOMEM(0xec000000)
329#define PCI_V3_VADDR 0xed000000 329#define PCI_V3_VADDR IOMEM(0xed000000)
330 330
331/* ------------------------------------------------------------------------ 331/* ------------------------------------------------------------------------
332 * Integrator Interrupt Controllers 332 * Integrator Interrupt Controllers
diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c
index d5b5435a09ae..e6617c134faf 100644
--- a/arch/arm/mach-integrator/integrator_ap.c
+++ b/arch/arm/mach-integrator/integrator_ap.c
@@ -157,7 +157,7 @@ static struct map_desc ap_io_desc[] __initdata = {
157static void __init ap_map_io(void) 157static void __init ap_map_io(void)
158{ 158{
159 iotable_init(ap_io_desc, ARRAY_SIZE(ap_io_desc)); 159 iotable_init(ap_io_desc, ARRAY_SIZE(ap_io_desc));
160 vga_base = PCI_MEMORY_VADDR; 160 vga_base = (unsigned long)PCI_MEMORY_VADDR;
161 pci_map_io_early(__phys_to_pfn(PHYS_PCI_IO_BASE)); 161 pci_map_io_early(__phys_to_pfn(PHYS_PCI_IO_BASE));
162} 162}
163 163
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c
index 6870a1fbcd78..5b08e8e4cc83 100644
--- a/arch/arm/mach-integrator/integrator_cp.c
+++ b/arch/arm/mach-integrator/integrator_cp.c
@@ -261,6 +261,8 @@ static void __init intcp_init_early(void)
261#endif 261#endif
262} 262}
263 263
264#ifdef CONFIG_OF
265
264static void __init intcp_timer_init_of(void) 266static void __init intcp_timer_init_of(void)
265{ 267{
266 struct device_node *node; 268 struct device_node *node;
@@ -297,8 +299,6 @@ static struct sys_timer cp_of_timer = {
297 .init = intcp_timer_init_of, 299 .init = intcp_timer_init_of,
298}; 300};
299 301
300#ifdef CONFIG_OF
301
302static const struct of_device_id fpga_irq_of_match[] __initconst = { 302static const struct of_device_id fpga_irq_of_match[] __initconst = {
303 { .compatible = "arm,versatile-fpga-irq", .data = fpga_irq_of_init, }, 303 { .compatible = "arm,versatile-fpga-irq", .data = fpga_irq_of_init, },
304 { /* Sentinel */ } 304 { /* Sentinel */ }
diff --git a/arch/arm/mach-iop13xx/iq81340sc.c b/arch/arm/mach-iop13xx/iq81340sc.c
index 060cddde2fd4..e94744111634 100644
--- a/arch/arm/mach-iop13xx/iq81340sc.c
+++ b/arch/arm/mach-iop13xx/iq81340sc.c
@@ -30,7 +30,7 @@
30extern int init_atu; 30extern int init_atu;
31 31
32static int __init 32static int __init
33iq81340sc_atux_map_irq(struct pci_dev *dev, u8 idsel, u8 pin) 33iq81340sc_atux_map_irq(const struct pci_dev *dev, u8 idsel, u8 pin)
34{ 34{
35 WARN_ON(idsel < 1 || idsel > 2); 35 WARN_ON(idsel < 1 || idsel > 2);
36 36
diff --git a/arch/arm/mach-iop13xx/pci.c b/arch/arm/mach-iop13xx/pci.c
index 9082b84aeebb..2f28018c4447 100644
--- a/arch/arm/mach-iop13xx/pci.c
+++ b/arch/arm/mach-iop13xx/pci.c
@@ -504,7 +504,7 @@ iop13xx_pci_abort(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
504 504
505/* Scan an IOP13XX PCI bus. nr selects which ATU we use. 505/* Scan an IOP13XX PCI bus. nr selects which ATU we use.
506 */ 506 */
507struct pci_bus *iop13xx_scan_bus(int nr, struct pci_sys_data *sys) 507struct pci_bus * __devinit iop13xx_scan_bus(int nr, struct pci_sys_data *sys)
508{ 508{
509 int which_atu; 509 int which_atu;
510 struct pci_bus *bus = NULL; 510 struct pci_bus *bus = NULL;
diff --git a/arch/arm/mach-ks8695/include/mach/memory.h b/arch/arm/mach-ks8695/include/mach/memory.h
index f7e1b9bce345..95e731a7ed6a 100644
--- a/arch/arm/mach-ks8695/include/mach/memory.h
+++ b/arch/arm/mach-ks8695/include/mach/memory.h
@@ -34,7 +34,8 @@ extern struct bus_type platform_bus_type;
34#define __arch_dma_to_virt(dev, x) ({ (void *) (is_lbus_device(dev) ? \ 34#define __arch_dma_to_virt(dev, x) ({ (void *) (is_lbus_device(dev) ? \
35 __phys_to_virt(x) : __bus_to_virt(x)); }) 35 __phys_to_virt(x) : __bus_to_virt(x)); })
36#define __arch_virt_to_dma(dev, x) ({ is_lbus_device(dev) ? \ 36#define __arch_virt_to_dma(dev, x) ({ is_lbus_device(dev) ? \
37 (dma_addr_t)__virt_to_phys(x) : (dma_addr_t)__virt_to_bus(x); }) 37 (dma_addr_t)__virt_to_phys((unsigned long)x) \
38 : (dma_addr_t)__virt_to_bus(x); })
38#define __arch_pfn_to_dma(dev, pfn) \ 39#define __arch_pfn_to_dma(dev, pfn) \
39 ({ dma_addr_t __dma = __pfn_to_phys(pfn); \ 40 ({ dma_addr_t __dma = __pfn_to_phys(pfn); \
40 if (!is_lbus_device(dev)) \ 41 if (!is_lbus_device(dev)) \
diff --git a/arch/arm/mach-mv78xx0/addr-map.c b/arch/arm/mach-mv78xx0/addr-map.c
index 343c435b4176..26e9876b50e9 100644
--- a/arch/arm/mach-mv78xx0/addr-map.c
+++ b/arch/arm/mach-mv78xx0/addr-map.c
@@ -54,7 +54,7 @@ static void __init __iomem *win_cfg_base(const struct orion_addr_map_cfg *cfg, i
54/* 54/*
55 * Description of the windows needed by the platform code 55 * Description of the windows needed by the platform code
56 */ 56 */
57static struct __initdata orion_addr_map_cfg addr_map_cfg = { 57static struct orion_addr_map_cfg addr_map_cfg __initdata = {
58 .num_wins = 14, 58 .num_wins = 14,
59 .remappable_wins = 8, 59 .remappable_wins = 8,
60 .win_cfg_base = win_cfg_base, 60 .win_cfg_base = win_cfg_base,
diff --git a/arch/arm/mach-mv78xx0/common.c b/arch/arm/mach-mv78xx0/common.c
index 131cd4883f3d..d0cb4857b4b3 100644
--- a/arch/arm/mach-mv78xx0/common.c
+++ b/arch/arm/mach-mv78xx0/common.c
@@ -336,7 +336,7 @@ void __init mv78xx0_init_early(void)
336 orion_time_set_base(TIMER_VIRT_BASE); 336 orion_time_set_base(TIMER_VIRT_BASE);
337} 337}
338 338
339static void mv78xx0_timer_init(void) 339static void __init_refok mv78xx0_timer_init(void)
340{ 340{
341 orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR, 341 orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR,
342 IRQ_MV78XX0_TIMER_1, get_tclk()); 342 IRQ_MV78XX0_TIMER_1, get_tclk());
diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c
index 726c02c9c0cd..d3fec92c54cb 100644
--- a/arch/arm/mach-omap1/devices.c
+++ b/arch/arm/mach-omap1/devices.c
@@ -231,7 +231,7 @@ void __init omap1_init_mmc(struct omap_mmc_platform_data **mmc_data,
231 231
232 omap_mmc_add("mmci-omap", i, base, size, irq, 232 omap_mmc_add("mmci-omap", i, base, size, irq,
233 rx_req, tx_req, mmc_data[i]); 233 rx_req, tx_req, mmc_data[i]);
234 }; 234 }
235} 235}
236 236
237#endif 237#endif
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
index a88809a59ea9..5ff28afbefe7 100644
--- a/arch/arm/mach-omap2/board-4430sdp.c
+++ b/arch/arm/mach-omap2/board-4430sdp.c
@@ -830,6 +830,32 @@ static struct omap_board_mux board_mux[] __initdata = {
830 /* NIRQ2 for twl6040 */ 830 /* NIRQ2 for twl6040 */
831 OMAP4_MUX(SYS_NIRQ2, OMAP_MUX_MODE0 | 831 OMAP4_MUX(SYS_NIRQ2, OMAP_MUX_MODE0 |
832 OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE), 832 OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE),
833 /* GPIO_127 for twl6040 */
834 OMAP4_MUX(HDQ_SIO, OMAP_MUX_MODE3 | OMAP_PIN_OUTPUT),
835 /* McPDM */
836 OMAP4_MUX(ABE_PDM_UL_DATA, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
837 OMAP4_MUX(ABE_PDM_DL_DATA, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
838 OMAP4_MUX(ABE_PDM_FRAME, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
839 OMAP4_MUX(ABE_PDM_LB_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
840 OMAP4_MUX(ABE_CLKS, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
841 /* DMIC */
842 OMAP4_MUX(ABE_DMIC_CLK1, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
843 OMAP4_MUX(ABE_DMIC_DIN1, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
844 OMAP4_MUX(ABE_DMIC_DIN2, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
845 OMAP4_MUX(ABE_DMIC_DIN3, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
846 /* McBSP1 */
847 OMAP4_MUX(ABE_MCBSP1_CLKX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
848 OMAP4_MUX(ABE_MCBSP1_DR, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
849 OMAP4_MUX(ABE_MCBSP1_DX, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT |
850 OMAP_PULL_ENA),
851 OMAP4_MUX(ABE_MCBSP1_FSX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
852 /* McBSP2 */
853 OMAP4_MUX(ABE_MCBSP2_CLKX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
854 OMAP4_MUX(ABE_MCBSP2_DR, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
855 OMAP4_MUX(ABE_MCBSP2_DX, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT |
856 OMAP_PULL_ENA),
857 OMAP4_MUX(ABE_MCBSP2_FSX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
858
833 { .reg_offset = OMAP_MUX_TERMINATOR }, 859 { .reg_offset = OMAP_MUX_TERMINATOR },
834}; 860};
835 861
diff --git a/arch/arm/mach-omap2/board-flash.c b/arch/arm/mach-omap2/board-flash.c
index 0cabe61cd507..e642acf9cad0 100644
--- a/arch/arm/mach-omap2/board-flash.c
+++ b/arch/arm/mach-omap2/board-flash.c
@@ -218,7 +218,7 @@ void __init board_flash_init(struct flash_partitions partition_info[],
218 if (onenandcs > GPMC_CS_NUM) 218 if (onenandcs > GPMC_CS_NUM)
219 onenandcs = cs; 219 onenandcs = cs;
220 break; 220 break;
221 }; 221 }
222 cs++; 222 cs++;
223 } 223 }
224 224
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index a08bebc94ec5..388c431c745a 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -461,7 +461,7 @@ static void __init beagle_opp_init(void)
461 mpu_dev = omap_device_get_by_hwmod_name("mpu"); 461 mpu_dev = omap_device_get_by_hwmod_name("mpu");
462 iva_dev = omap_device_get_by_hwmod_name("iva"); 462 iva_dev = omap_device_get_by_hwmod_name("iva");
463 463
464 if (!mpu_dev || !iva_dev) { 464 if (IS_ERR(mpu_dev) || IS_ERR(iva_dev)) {
465 pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n", 465 pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n",
466 __func__, mpu_dev, iva_dev); 466 __func__, mpu_dev, iva_dev);
467 return; 467 return;
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
index a3959de85e05..b9b776b6c954 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -88,11 +88,10 @@ enum {
88 88
89static u8 omap3_evm_version; 89static u8 omap3_evm_version;
90 90
91u8 get_omap3_evm_rev(void) 91static u8 get_omap3_evm_rev(void)
92{ 92{
93 return omap3_evm_version; 93 return omap3_evm_version;
94} 94}
95EXPORT_SYMBOL(get_omap3_evm_rev);
96 95
97static void __init omap3_evm_get_revision(void) 96static void __init omap3_evm_get_revision(void)
98{ 97{
diff --git a/arch/arm/mach-omap2/board-omap3stalker.c b/arch/arm/mach-omap2/board-omap3stalker.c
index c7f3d026e6d4..731235eb319e 100644
--- a/arch/arm/mach-omap2/board-omap3stalker.c
+++ b/arch/arm/mach-omap2/board-omap3stalker.c
@@ -48,11 +48,6 @@
48#include <video/omap-panel-tfp410.h> 48#include <video/omap-panel-tfp410.h>
49 49
50#include <linux/platform_data/spi-omap2-mcspi.h> 50#include <linux/platform_data/spi-omap2-mcspi.h>
51#include <linux/input/matrix_keypad.h>
52#include <linux/spi/spi.h>
53#include <linux/interrupt.h>
54#include <linux/smsc911x.h>
55#include <linux/i2c/at24.h>
56 51
57#include "sdram-micron-mt46h32m32lf-6.h" 52#include "sdram-micron-mt46h32m32lf-6.h"
58#include "mux.h" 53#include "mux.h"
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
index 2b012f9d6925..f62b903f3ea1 100644
--- a/arch/arm/mach-omap2/board-omap4panda.c
+++ b/arch/arm/mach-omap2/board-omap4panda.c
@@ -247,8 +247,7 @@ static struct platform_device omap_vwlan_device = {
247}; 247};
248 248
249static struct wl12xx_platform_data omap_panda_wlan_data __initdata = { 249static struct wl12xx_platform_data omap_panda_wlan_data __initdata = {
250 /* PANDA ref clock is 38.4 MHz */ 250 .board_ref_clock = WL12XX_REFCLOCK_38, /* 38.4 MHz */
251 .board_ref_clock = 2,
252}; 251};
253 252
254static struct twl6040_codec_data twl6040_codec = { 253static struct twl6040_codec_data twl6040_codec = {
@@ -388,6 +387,21 @@ static struct omap_board_mux board_mux[] __initdata = {
388 /* NIRQ2 for twl6040 */ 387 /* NIRQ2 for twl6040 */
389 OMAP4_MUX(SYS_NIRQ2, OMAP_MUX_MODE0 | 388 OMAP4_MUX(SYS_NIRQ2, OMAP_MUX_MODE0 |
390 OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE), 389 OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE),
390 /* GPIO_127 for twl6040 */
391 OMAP4_MUX(HDQ_SIO, OMAP_MUX_MODE3 | OMAP_PIN_OUTPUT),
392 /* McPDM */
393 OMAP4_MUX(ABE_PDM_UL_DATA, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
394 OMAP4_MUX(ABE_PDM_DL_DATA, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
395 OMAP4_MUX(ABE_PDM_FRAME, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
396 OMAP4_MUX(ABE_PDM_LB_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
397 OMAP4_MUX(ABE_CLKS, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
398 /* McBSP1 */
399 OMAP4_MUX(ABE_MCBSP1_CLKX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
400 OMAP4_MUX(ABE_MCBSP1_DR, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
401 OMAP4_MUX(ABE_MCBSP1_DX, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT |
402 OMAP_PULL_ENA),
403 OMAP4_MUX(ABE_MCBSP1_FSX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
404
391 { .reg_offset = OMAP_MUX_TERMINATOR }, 405 { .reg_offset = OMAP_MUX_TERMINATOR },
392}; 406};
393 407
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c
index ed85fb898c7f..020e03c95bfe 100644
--- a/arch/arm/mach-omap2/board-rx51-peripherals.c
+++ b/arch/arm/mach-omap2/board-rx51-peripherals.c
@@ -748,7 +748,7 @@ static struct radio_si4713_platform_data rx51_si4713_data __initdata_or_module =
748 .subdev_board_info = &rx51_si4713_board_info, 748 .subdev_board_info = &rx51_si4713_board_info,
749}; 749};
750 750
751static struct platform_device rx51_si4713_dev = { 751static struct platform_device rx51_si4713_dev __initdata_or_module = {
752 .name = "radio-si4713", 752 .name = "radio-si4713",
753 .id = -1, 753 .id = -1,
754 .dev = { 754 .dev = {
diff --git a/arch/arm/mach-omap2/board-zoom-peripherals.c b/arch/arm/mach-omap2/board-zoom-peripherals.c
index 67f8540c8e07..c166fe1fdff9 100644
--- a/arch/arm/mach-omap2/board-zoom-peripherals.c
+++ b/arch/arm/mach-omap2/board-zoom-peripherals.c
@@ -195,8 +195,7 @@ static struct platform_device omap_vwlan_device = {
195}; 195};
196 196
197static struct wl12xx_platform_data omap_zoom_wlan_data __initdata = { 197static struct wl12xx_platform_data omap_zoom_wlan_data __initdata = {
198 /* ZOOM ref clock is 26 MHz */ 198 .board_ref_clock = WL12XX_REFCLOCK_26, /* 26 MHz */
199 .board_ref_clock = 1,
200}; 199};
201 200
202static struct omap2_hsmmc_info mmc[] = { 201static struct omap2_hsmmc_info mmc[] = {
diff --git a/arch/arm/mach-omap2/clkt_clksel.c b/arch/arm/mach-omap2/clkt_clksel.c
index eaed3900a83c..3ff22114d702 100644
--- a/arch/arm/mach-omap2/clkt_clksel.c
+++ b/arch/arm/mach-omap2/clkt_clksel.c
@@ -382,7 +382,7 @@ void omap2_init_clksel_parent(struct clk *clk)
382 __clk_get_name(parent) : 382 __clk_get_name(parent) :
383 "NULL")); 383 "NULL"));
384 clk_reparent(clk, clks->parent); 384 clk_reparent(clk, clks->parent);
385 }; 385 }
386 found = 1; 386 found = 1;
387 } 387 }
388 } 388 }
diff --git a/arch/arm/mach-omap2/clock33xx_data.c b/arch/arm/mach-omap2/clock33xx_data.c
index b87b88c2638b..114ab4b8e0e3 100644
--- a/arch/arm/mach-omap2/clock33xx_data.c
+++ b/arch/arm/mach-omap2/clock33xx_data.c
@@ -1035,6 +1035,8 @@ static struct omap_clk am33xx_clks[] = {
1035 CLK(NULL, "pruss_ocp_gclk", &pruss_ocp_gclk, CK_AM33XX), 1035 CLK(NULL, "pruss_ocp_gclk", &pruss_ocp_gclk, CK_AM33XX),
1036 CLK("davinci-mcasp.0", NULL, &mcasp0_fck, CK_AM33XX), 1036 CLK("davinci-mcasp.0", NULL, &mcasp0_fck, CK_AM33XX),
1037 CLK("davinci-mcasp.1", NULL, &mcasp1_fck, CK_AM33XX), 1037 CLK("davinci-mcasp.1", NULL, &mcasp1_fck, CK_AM33XX),
1038 CLK(NULL, "mcasp0_fck", &mcasp0_fck, CK_AM33XX),
1039 CLK(NULL, "mcasp1_fck", &mcasp1_fck, CK_AM33XX),
1038 CLK("NULL", "mmc2_fck", &mmc2_fck, CK_AM33XX), 1040 CLK("NULL", "mmc2_fck", &mmc2_fck, CK_AM33XX),
1039 CLK(NULL, "mmu_fck", &mmu_fck, CK_AM33XX), 1041 CLK(NULL, "mmu_fck", &mmu_fck, CK_AM33XX),
1040 CLK(NULL, "smartreflex0_fck", &smartreflex0_fck, CK_AM33XX), 1042 CLK(NULL, "smartreflex0_fck", &smartreflex0_fck, CK_AM33XX),
diff --git a/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c b/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c
index 9a7792aec673..70294f54e35a 100644
--- a/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c
+++ b/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c
@@ -183,17 +183,6 @@ static int omap2_clkdm_clk_enable(struct clockdomain *clkdm)
183 if (!clkdm->clktrctrl_mask) 183 if (!clkdm->clktrctrl_mask)
184 return 0; 184 return 0;
185 185
186 /*
187 * The CLKDM_MISSING_IDLE_REPORTING flag documentation has
188 * more details on the unpleasant problem this is working
189 * around
190 */
191 if (clkdm->flags & CLKDM_MISSING_IDLE_REPORTING &&
192 !(clkdm->flags & CLKDM_CAN_FORCE_SLEEP)) {
193 _enable_hwsup(clkdm);
194 return 0;
195 }
196
197 hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, 186 hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs,
198 clkdm->clktrctrl_mask); 187 clkdm->clktrctrl_mask);
199 188
@@ -217,17 +206,6 @@ static int omap2_clkdm_clk_disable(struct clockdomain *clkdm)
217 if (!clkdm->clktrctrl_mask) 206 if (!clkdm->clktrctrl_mask)
218 return 0; 207 return 0;
219 208
220 /*
221 * The CLKDM_MISSING_IDLE_REPORTING flag documentation has
222 * more details on the unpleasant problem this is working
223 * around
224 */
225 if ((clkdm->flags & CLKDM_MISSING_IDLE_REPORTING) &&
226 (clkdm->flags & CLKDM_CAN_FORCE_WAKEUP)) {
227 omap3_clkdm_wakeup(clkdm);
228 return 0;
229 }
230
231 hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, 209 hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs,
232 clkdm->clktrctrl_mask); 210 clkdm->clktrctrl_mask);
233 211
@@ -269,6 +247,17 @@ static int omap3xxx_clkdm_clk_enable(struct clockdomain *clkdm)
269 if (!clkdm->clktrctrl_mask) 247 if (!clkdm->clktrctrl_mask)
270 return 0; 248 return 0;
271 249
250 /*
251 * The CLKDM_MISSING_IDLE_REPORTING flag documentation has
252 * more details on the unpleasant problem this is working
253 * around
254 */
255 if ((clkdm->flags & CLKDM_MISSING_IDLE_REPORTING) &&
256 (clkdm->flags & CLKDM_CAN_FORCE_WAKEUP)) {
257 omap3_clkdm_wakeup(clkdm);
258 return 0;
259 }
260
272 hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, 261 hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs,
273 clkdm->clktrctrl_mask); 262 clkdm->clktrctrl_mask);
274 263
@@ -292,6 +281,17 @@ static int omap3xxx_clkdm_clk_disable(struct clockdomain *clkdm)
292 if (!clkdm->clktrctrl_mask) 281 if (!clkdm->clktrctrl_mask)
293 return 0; 282 return 0;
294 283
284 /*
285 * The CLKDM_MISSING_IDLE_REPORTING flag documentation has
286 * more details on the unpleasant problem this is working
287 * around
288 */
289 if (clkdm->flags & CLKDM_MISSING_IDLE_REPORTING &&
290 !(clkdm->flags & CLKDM_CAN_FORCE_SLEEP)) {
291 _enable_hwsup(clkdm);
292 return 0;
293 }
294
295 hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, 295 hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs,
296 clkdm->clktrctrl_mask); 296 clkdm->clktrctrl_mask);
297 297
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
index 7012068ccbf6..a51ece491b91 100644
--- a/arch/arm/mach-omap2/display.c
+++ b/arch/arm/mach-omap2/display.c
@@ -221,7 +221,7 @@ static struct platform_device *create_dss_pdev(const char *pdev_name,
221 221
222 ohs[0] = oh; 222 ohs[0] = oh;
223 od = omap_device_alloc(pdev, ohs, 1, NULL, 0); 223 od = omap_device_alloc(pdev, ohs, 1, NULL, 0);
224 if (!od) { 224 if (IS_ERR(od)) {
225 pr_err("Could not alloc omap_device for %s\n", pdev_name); 225 pr_err("Could not alloc omap_device for %s\n", pdev_name);
226 r = -ENOMEM; 226 r = -ENOMEM;
227 goto err; 227 goto err;
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
index 8ab1e1bde5e9..5ac5cf30406a 100644
--- a/arch/arm/mach-omap2/gpmc.c
+++ b/arch/arm/mach-omap2/gpmc.c
@@ -838,7 +838,7 @@ static int gpmc_setup_irq(void)
838 return request_irq(gpmc_irq, gpmc_handle_irq, 0, "gpmc", NULL); 838 return request_irq(gpmc_irq, gpmc_handle_irq, 0, "gpmc", NULL);
839} 839}
840 840
841static __exit int gpmc_free_irq(void) 841static __devexit int gpmc_free_irq(void)
842{ 842{
843 int i; 843 int i;
844 844
@@ -944,7 +944,7 @@ static __devinit int gpmc_probe(struct platform_device *pdev)
944 return 0; 944 return 0;
945} 945}
946 946
947static __exit int gpmc_remove(struct platform_device *pdev) 947static __devexit int gpmc_remove(struct platform_device *pdev)
948{ 948{
949 gpmc_free_irq(); 949 gpmc_free_irq();
950 gpmc_mem_exit(); 950 gpmc_mem_exit();
diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c
index 03ebf47cfa9a..4d3a6324155f 100644
--- a/arch/arm/mach-omap2/hsmmc.c
+++ b/arch/arm/mach-omap2/hsmmc.c
@@ -523,7 +523,7 @@ static void __init omap_hsmmc_init_one(struct omap2_hsmmc_info *hsmmcinfo,
523 dev_set_name(&pdev->dev, "%s.%d", pdev->name, pdev->id); 523 dev_set_name(&pdev->dev, "%s.%d", pdev->name, pdev->id);
524 524
525 od = omap_device_alloc(pdev, ohs, 1, NULL, 0); 525 od = omap_device_alloc(pdev, ohs, 1, NULL, 0);
526 if (!od) { 526 if (IS_ERR(od)) {
527 pr_err("Could not allocate od for %s\n", name); 527 pr_err("Could not allocate od for %s\n", name);
528 goto put_pdev; 528 goto put_pdev;
529 } 529 }
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c
index 9fe6829f4c16..701e17cba468 100644
--- a/arch/arm/mach-omap2/mux.c
+++ b/arch/arm/mach-omap2/mux.c
@@ -486,7 +486,7 @@ void omap_hwmod_mux(struct omap_hwmod_mux_info *hmux, u8 state)
486 default: 486 default:
487 /* Nothing to be done */ 487 /* Nothing to be done */
488 break; 488 break;
489 }; 489 }
490 490
491 if (val >= 0) { 491 if (val >= 0) {
492 omap_mux_write(pad->partition, val, 492 omap_mux_write(pad->partition, val,
diff --git a/arch/arm/mach-omap2/omap-secure.c b/arch/arm/mach-omap2/omap-secure.c
index a004cb9acf52..e089e4d1ae38 100644
--- a/arch/arm/mach-omap2/omap-secure.c
+++ b/arch/arm/mach-omap2/omap-secure.c
@@ -61,8 +61,8 @@ int __init omap_secure_ram_reserve_memblock(void)
61{ 61{
62 u32 size = OMAP_SECURE_RAM_STORAGE; 62 u32 size = OMAP_SECURE_RAM_STORAGE;
63 63
64 size = ALIGN(size, SZ_1M); 64 size = ALIGN(size, SECTION_SIZE);
65 omap_secure_memblock_base = arm_memblock_steal(size, SZ_1M); 65 omap_secure_memblock_base = arm_memblock_steal(size, SECTION_SIZE);
66 66
67 return 0; 67 return 0;
68} 68}
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 299ca2821ad1..b969ab1d258b 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -1698,6 +1698,29 @@ static bool _are_all_hardreset_lines_asserted(struct omap_hwmod *oh)
1698} 1698}
1699 1699
1700/** 1700/**
1701 * _are_any_hardreset_lines_asserted - return true if any part of @oh is
1702 * hard-reset
1703 * @oh: struct omap_hwmod *
1704 *
1705 * If any hardreset lines associated with @oh are asserted, then
1706 * return true. Otherwise, if no hardreset lines associated with @oh
1707 * are asserted, or if @oh has no hardreset lines, then return false.
1708 * This function is used to avoid executing some parts of the IP block
1709 * enable/disable sequence if any hardreset line is set.
1710 */
1711static bool _are_any_hardreset_lines_asserted(struct omap_hwmod *oh)
1712{
1713 int rst_cnt = 0;
1714 int i;
1715
1716 for (i = 0; i < oh->rst_lines_cnt && rst_cnt == 0; i++)
1717 if (_read_hardreset(oh, oh->rst_lines[i].name) > 0)
1718 rst_cnt++;
1719
1720 return (rst_cnt) ? true : false;
1721}
1722
1723/**
1701 * _omap4_disable_module - enable CLKCTRL modulemode on OMAP4 1724 * _omap4_disable_module - enable CLKCTRL modulemode on OMAP4
1702 * @oh: struct omap_hwmod * 1725 * @oh: struct omap_hwmod *
1703 * 1726 *
@@ -1715,7 +1738,7 @@ static int _omap4_disable_module(struct omap_hwmod *oh)
1715 * Since integration code might still be doing something, only 1738 * Since integration code might still be doing something, only
1716 * disable if all lines are under hardreset. 1739 * disable if all lines are under hardreset.
1717 */ 1740 */
1718 if (!_are_all_hardreset_lines_asserted(oh)) 1741 if (_are_any_hardreset_lines_asserted(oh))
1719 return 0; 1742 return 0;
1720 1743
1721 pr_debug("omap_hwmod: %s: %s\n", oh->name, __func__); 1744 pr_debug("omap_hwmod: %s: %s\n", oh->name, __func__);
@@ -1749,12 +1772,12 @@ static int _am33xx_disable_module(struct omap_hwmod *oh)
1749 1772
1750 pr_debug("omap_hwmod: %s: %s\n", oh->name, __func__); 1773 pr_debug("omap_hwmod: %s: %s\n", oh->name, __func__);
1751 1774
1775 if (_are_any_hardreset_lines_asserted(oh))
1776 return 0;
1777
1752 am33xx_cm_module_disable(oh->clkdm->cm_inst, oh->clkdm->clkdm_offs, 1778 am33xx_cm_module_disable(oh->clkdm->cm_inst, oh->clkdm->clkdm_offs,
1753 oh->prcm.omap4.clkctrl_offs); 1779 oh->prcm.omap4.clkctrl_offs);
1754 1780
1755 if (_are_all_hardreset_lines_asserted(oh))
1756 return 0;
1757
1758 v = _am33xx_wait_target_disable(oh); 1781 v = _am33xx_wait_target_disable(oh);
1759 if (v) 1782 if (v)
1760 pr_warn("omap_hwmod: %s: _wait_target_disable failed\n", 1783 pr_warn("omap_hwmod: %s: _wait_target_disable failed\n",
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
index 35dcdb66a4e0..bd9220ed5ab9 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
@@ -219,7 +219,7 @@ struct omap_hwmod omap2xxx_l4_wkup_hwmod = {
219 219
220/* MPU */ 220/* MPU */
221static struct omap_hwmod_irq_info omap2xxx_mpu_irqs[] = { 221static struct omap_hwmod_irq_info omap2xxx_mpu_irqs[] = {
222 { .name = "pmu", .irq = 3 }, 222 { .name = "pmu", .irq = 3 + OMAP_INTC_START },
223 { .irq = -1 } 223 { .irq = -1 }
224}; 224};
225 225
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
index 285777241d5a..f67b7ee07dd4 100644
--- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
@@ -94,7 +94,7 @@ static struct omap_hwmod omap3xxx_l4_sec_hwmod = {
94 94
95/* MPU */ 95/* MPU */
96static struct omap_hwmod_irq_info omap3xxx_mpu_irqs[] = { 96static struct omap_hwmod_irq_info omap3xxx_mpu_irqs[] = {
97 { .name = "pmu", .irq = 3 }, 97 { .name = "pmu", .irq = 3 + OMAP_INTC_START },
98 { .irq = -1 } 98 { .irq = -1 }
99}; 99};
100 100
@@ -3683,6 +3683,7 @@ static struct omap_hwmod_ocp_if *am35xx_hwmod_ocp_ifs[] __initdata = {
3683 &omap3xxx_l4_core__usb_tll_hs, 3683 &omap3xxx_l4_core__usb_tll_hs,
3684 &omap3xxx_l4_core__es3plus_mmc1, 3684 &omap3xxx_l4_core__es3plus_mmc1,
3685 &omap3xxx_l4_core__es3plus_mmc2, 3685 &omap3xxx_l4_core__es3plus_mmc2,
3686 &omap3xxx_l4_core__hdq1w,
3686 &am35xx_mdio__l3, 3687 &am35xx_mdio__l3,
3687 &am35xx_l4_core__mdio, 3688 &am35xx_l4_core__mdio,
3688 &am35xx_emac__l3, 3689 &am35xx_emac__l3,
@@ -3737,7 +3738,7 @@ int __init omap3xxx_hwmod_init(void)
3737 } else { 3738 } else {
3738 WARN(1, "OMAP3 hwmod family init: unknown chip type\n"); 3739 WARN(1, "OMAP3 hwmod family init: unknown chip type\n");
3739 return -EINVAL; 3740 return -EINVAL;
3740 }; 3741 }
3741 3742
3742 r = omap_hwmod_register_links(h); 3743 r = omap_hwmod_register_links(h);
3743 if (r < 0) 3744 if (r < 0)
@@ -3754,7 +3755,7 @@ int __init omap3xxx_hwmod_init(void)
3754 rev == OMAP3430_REV_ES3_0 || rev == OMAP3430_REV_ES3_1 || 3755 rev == OMAP3430_REV_ES3_0 || rev == OMAP3430_REV_ES3_1 ||
3755 rev == OMAP3430_REV_ES3_1_2) { 3756 rev == OMAP3430_REV_ES3_1_2) {
3756 h = omap3430es2plus_hwmod_ocp_ifs; 3757 h = omap3430es2plus_hwmod_ocp_ifs;
3757 }; 3758 }
3758 3759
3759 if (h) { 3760 if (h) {
3760 r = omap_hwmod_register_links(h); 3761 r = omap_hwmod_register_links(h);
@@ -3769,7 +3770,7 @@ int __init omap3xxx_hwmod_init(void)
3769 } else if (rev == OMAP3430_REV_ES3_0 || rev == OMAP3430_REV_ES3_1 || 3770 } else if (rev == OMAP3430_REV_ES3_0 || rev == OMAP3430_REV_ES3_1 ||
3770 rev == OMAP3430_REV_ES3_1_2) { 3771 rev == OMAP3430_REV_ES3_1_2) {
3771 h = omap3430_es3plus_hwmod_ocp_ifs; 3772 h = omap3430_es3plus_hwmod_ocp_ifs;
3772 }; 3773 }
3773 3774
3774 if (h) 3775 if (h)
3775 r = omap_hwmod_register_links(h); 3776 r = omap_hwmod_register_links(h);
diff --git a/arch/arm/mach-omap2/opp.c b/arch/arm/mach-omap2/opp.c
index 45ad7f74f356..58e16aef40bb 100644
--- a/arch/arm/mach-omap2/opp.c
+++ b/arch/arm/mach-omap2/opp.c
@@ -18,6 +18,7 @@
18 */ 18 */
19#include <linux/module.h> 19#include <linux/module.h>
20#include <linux/opp.h> 20#include <linux/opp.h>
21#include <linux/cpu.h>
21 22
22#include <plat/omap_device.h> 23#include <plat/omap_device.h>
23 24
@@ -62,13 +63,23 @@ int __init omap_init_opp_table(struct omap_opp_def *opp_def,
62 __func__, i); 63 __func__, i);
63 return -EINVAL; 64 return -EINVAL;
64 } 65 }
65 oh = omap_hwmod_lookup(opp_def->hwmod_name); 66
66 if (!oh || !oh->od) { 67 if (!strncmp(opp_def->hwmod_name, "mpu", 3)) {
67 pr_debug("%s: no hwmod or odev for %s, [%d] cannot add OPPs.\n", 68 /*
68 __func__, opp_def->hwmod_name, i); 69 * All current OMAPs share voltage rail and
69 continue; 70 * clock source, so CPU0 is used to represent
71 * the MPU-SS.
72 */
73 dev = get_cpu_device(0);
74 } else {
75 oh = omap_hwmod_lookup(opp_def->hwmod_name);
76 if (!oh || !oh->od) {
77 pr_debug("%s: no hwmod or odev for %s, [%d] cannot add OPPs.\n",
78 __func__, opp_def->hwmod_name, i);
79 continue;
80 }
81 dev = &oh->od->pdev->dev;
70 } 82 }
71 dev = &oh->od->pdev->dev;
72 83
73 r = opp_add(dev, opp_def->freq, opp_def->u_volt); 84 r = opp_add(dev, opp_def->freq, opp_def->u_volt);
74 if (r) { 85 if (r) {
diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c
index 3e1345fc0713..46092cd806fa 100644
--- a/arch/arm/mach-omap2/pm-debug.c
+++ b/arch/arm/mach-omap2/pm-debug.c
@@ -168,7 +168,7 @@ static int pm_dbg_open(struct inode *inode, struct file *file)
168 default: 168 default:
169 return single_open(file, pm_dbg_show_timers, 169 return single_open(file, pm_dbg_show_timers,
170 &inode->i_private); 170 &inode->i_private);
171 }; 171 }
172} 172}
173 173
174static const struct file_operations debug_fops = { 174static const struct file_operations debug_fops = {
diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c
index abefbc4d8e0b..ea61c32957bd 100644
--- a/arch/arm/mach-omap2/pm.c
+++ b/arch/arm/mach-omap2/pm.c
@@ -16,6 +16,7 @@
16#include <linux/opp.h> 16#include <linux/opp.h>
17#include <linux/export.h> 17#include <linux/export.h>
18#include <linux/suspend.h> 18#include <linux/suspend.h>
19#include <linux/cpu.h>
19 20
20#include <asm/system_misc.h> 21#include <asm/system_misc.h>
21 22
@@ -169,7 +170,15 @@ static int __init omap2_set_init_voltage(char *vdd_name, char *clk_name,
169 goto exit; 170 goto exit;
170 } 171 }
171 172
172 dev = omap_device_get_by_hwmod_name(oh_name); 173 if (!strncmp(oh_name, "mpu", 3))
174 /*
175 * All current OMAPs share voltage rail and clock
176 * source, so CPU0 is used to represent the MPU-SS.
177 */
178 dev = get_cpu_device(0);
179 else
180 dev = omap_device_get_by_hwmod_name(oh_name);
181
173 if (IS_ERR(dev)) { 182 if (IS_ERR(dev)) {
174 pr_err("%s: Unable to get dev pointer for hwmod %s\n", 183 pr_err("%s: Unable to get dev pointer for hwmod %s\n",
175 __func__, oh_name); 184 __func__, oh_name);
@@ -177,7 +186,7 @@ static int __init omap2_set_init_voltage(char *vdd_name, char *clk_name,
177 } 186 }
178 187
179 voltdm = voltdm_lookup(vdd_name); 188 voltdm = voltdm_lookup(vdd_name);
180 if (IS_ERR(voltdm)) { 189 if (!voltdm) {
181 pr_err("%s: unable to get vdd pointer for vdd_%s\n", 190 pr_err("%s: unable to get vdd pointer for vdd_%s\n",
182 __func__, vdd_name); 191 __func__, vdd_name);
183 goto exit; 192 goto exit;
diff --git a/arch/arm/mach-omap2/sr_device.c b/arch/arm/mach-omap2/sr_device.c
index cbeae56b56a9..f8217a5a4a26 100644
--- a/arch/arm/mach-omap2/sr_device.c
+++ b/arch/arm/mach-omap2/sr_device.c
@@ -122,7 +122,7 @@ static int __init sr_dev_init(struct omap_hwmod *oh, void *user)
122 sr_data->senp_mod = 0x1; 122 sr_data->senp_mod = 0x1;
123 123
124 sr_data->voltdm = voltdm_lookup(sr_dev_attr->sensor_voltdm_name); 124 sr_data->voltdm = voltdm_lookup(sr_dev_attr->sensor_voltdm_name);
125 if (IS_ERR(sr_data->voltdm)) { 125 if (!sr_data->voltdm) {
126 pr_err("%s: Unable to get voltage domain pointer for VDD %s\n", 126 pr_err("%s: Unable to get voltage domain pointer for VDD %s\n",
127 __func__, sr_dev_attr->sensor_voltdm_name); 127 __func__, sr_dev_attr->sensor_voltdm_name);
128 goto exit; 128 goto exit;
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index 8847d6eb2313..44f9aa7ec0c0 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -378,7 +378,7 @@ static void __init realtime_counter_init(void)
378 return; 378 return;
379 } 379 }
380 sys_clk = clk_get(NULL, "sys_clkin_ck"); 380 sys_clk = clk_get(NULL, "sys_clkin_ck");
381 if (!sys_clk) { 381 if (IS_ERR(sys_clk)) {
382 pr_err("%s: failed to get system clock handle\n", __func__); 382 pr_err("%s: failed to get system clock handle\n", __func__);
383 iounmap(base); 383 iounmap(base);
384 return; 384 return;
diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c
index 18a851959425..d83ae4540b9b 100644
--- a/arch/arm/mach-omap2/twl-common.c
+++ b/arch/arm/mach-omap2/twl-common.c
@@ -158,7 +158,7 @@ static struct regulator_init_data omap3_vpll2_idata = {
158}; 158};
159 159
160static struct regulator_consumer_supply omap3_vdd1_supply[] = { 160static struct regulator_consumer_supply omap3_vdd1_supply[] = {
161 REGULATOR_SUPPLY("vcc", "mpu.0"), 161 REGULATOR_SUPPLY("vcc", "cpu0"),
162}; 162};
163 163
164static struct regulator_consumer_supply omap3_vdd2_supply[] = { 164static struct regulator_consumer_supply omap3_vdd2_supply[] = {
diff --git a/arch/arm/mach-pxa/cm-x2xx.c b/arch/arm/mach-pxa/cm-x2xx.c
index fc3afc7cd366..a103c8ffea9f 100644
--- a/arch/arm/mach-pxa/cm-x2xx.c
+++ b/arch/arm/mach-pxa/cm-x2xx.c
@@ -22,6 +22,7 @@
22#include <asm/mach/map.h> 22#include <asm/mach/map.h>
23 23
24#include <mach/pxa25x.h> 24#include <mach/pxa25x.h>
25#undef GPIO24_SSP1_SFRM
25#include <mach/pxa27x.h> 26#include <mach/pxa27x.h>
26#include <mach/audio.h> 27#include <mach/audio.h>
27#include <linux/platform_data/video-pxafb.h> 28#include <linux/platform_data/video-pxafb.h>
diff --git a/arch/arm/mach-pxa/palmte2.c b/arch/arm/mach-pxa/palmte2.c
index 997e6da9a9c4..32e0d7998355 100644
--- a/arch/arm/mach-pxa/palmte2.c
+++ b/arch/arm/mach-pxa/palmte2.c
@@ -105,6 +105,7 @@ static struct pxamci_platform_data palmte2_mci_platform_data = {
105 .gpio_power = GPIO_NR_PALMTE2_SD_POWER, 105 .gpio_power = GPIO_NR_PALMTE2_SD_POWER,
106}; 106};
107 107
108#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
108/****************************************************************************** 109/******************************************************************************
109 * GPIO keys 110 * GPIO keys
110 ******************************************************************************/ 111 ******************************************************************************/
@@ -132,6 +133,7 @@ static struct platform_device palmte2_pxa_keys = {
132 .platform_data = &palmte2_pxa_keys_data, 133 .platform_data = &palmte2_pxa_keys_data,
133 }, 134 },
134}; 135};
136#endif
135 137
136/****************************************************************************** 138/******************************************************************************
137 * Backlight 139 * Backlight
diff --git a/arch/arm/mach-pxa/sharpsl_pm.c b/arch/arm/mach-pxa/sharpsl_pm.c
index 5a406f794798..ec55c575ed19 100644
--- a/arch/arm/mach-pxa/sharpsl_pm.c
+++ b/arch/arm/mach-pxa/sharpsl_pm.c
@@ -55,7 +55,6 @@
55#ifdef CONFIG_PM 55#ifdef CONFIG_PM
56static int sharpsl_off_charge_battery(void); 56static int sharpsl_off_charge_battery(void);
57static int sharpsl_check_battery_voltage(void); 57static int sharpsl_check_battery_voltage(void);
58static int sharpsl_fatal_check(void);
59#endif 58#endif
60static int sharpsl_check_battery_temp(void); 59static int sharpsl_check_battery_temp(void);
61static int sharpsl_ac_check(void); 60static int sharpsl_ac_check(void);
@@ -686,53 +685,6 @@ static int corgi_pxa_pm_enter(suspend_state_t state)
686 return 0; 685 return 0;
687} 686}
688 687
689/*
690 * Check for fatal battery errors
691 * Fatal returns -1
692 */
693static int sharpsl_fatal_check(void)
694{
695 int buff[5], temp, i, acin;
696
697 dev_dbg(sharpsl_pm.dev, "sharpsl_fatal_check entered\n");
698
699 /* Check AC-Adapter */
700 acin = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN);
701
702 if (acin && (sharpsl_pm.charge_mode == CHRG_ON)) {
703 sharpsl_pm.machinfo->charge(0);
704 udelay(100);
705 sharpsl_pm.machinfo->discharge(1); /* enable discharge */
706 mdelay(SHARPSL_WAIT_DISCHARGE_ON);
707 }
708
709 if (sharpsl_pm.machinfo->discharge1)
710 sharpsl_pm.machinfo->discharge1(1);
711
712 /* Check battery : check inserting battery ? */
713 for (i = 0; i < 5; i++) {
714 buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT);
715 mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT);
716 }
717
718 if (sharpsl_pm.machinfo->discharge1)
719 sharpsl_pm.machinfo->discharge1(0);
720
721 if (acin && (sharpsl_pm.charge_mode == CHRG_ON)) {
722 udelay(100);
723 sharpsl_pm.machinfo->charge(1);
724 sharpsl_pm.machinfo->discharge(0);
725 }
726
727 temp = get_select_val(buff);
728 dev_dbg(sharpsl_pm.dev, "sharpsl_fatal_check: acin: %d, discharge voltage: %d, no discharge: %ld\n", acin, temp, sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT));
729
730 if ((acin && (temp < sharpsl_pm.machinfo->fatal_acin_volt)) ||
731 (!acin && (temp < sharpsl_pm.machinfo->fatal_noacin_volt)))
732 return -1;
733 return 0;
734}
735
736static int sharpsl_off_charge_error(void) 688static int sharpsl_off_charge_error(void)
737{ 689{
738 dev_err(sharpsl_pm.dev, "Offline Charger: Error occurred.\n"); 690 dev_err(sharpsl_pm.dev, "Offline Charger: Error occurred.\n");
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c
index 392412ce4dac..c773e4dded64 100644
--- a/arch/arm/mach-pxa/viper.c
+++ b/arch/arm/mach-pxa/viper.c
@@ -768,8 +768,7 @@ static unsigned long viper_tpm;
768 768
769static int __init viper_tpm_setup(char *str) 769static int __init viper_tpm_setup(char *str)
770{ 770{
771 strict_strtoul(str, 10, &viper_tpm); 771 return strict_strtoul(str, 10, &viper_tpm) >= 0;
772 return 1;
773} 772}
774 773
775__setup("tpm=", viper_tpm_setup); 774__setup("tpm=", viper_tpm_setup);
diff --git a/arch/arm/mach-rpc/ecard.c b/arch/arm/mach-rpc/ecard.c
index b91bc87b3dcf..fcb1d59f7aec 100644
--- a/arch/arm/mach-rpc/ecard.c
+++ b/arch/arm/mach-rpc/ecard.c
@@ -960,7 +960,9 @@ static int __init ecard_probe(int slot, unsigned irq, card_type_t type)
960 *ecp = ec; 960 *ecp = ec;
961 slot_to_expcard[slot] = ec; 961 slot_to_expcard[slot] = ec;
962 962
963 device_register(&ec->dev); 963 rc = device_register(&ec->dev);
964 if (rc)
965 goto nodev;
964 966
965 return 0; 967 return 0;
966 968
diff --git a/arch/arm/mach-s3c24xx/irq-s3c2416.c b/arch/arm/mach-s3c24xx/irq-s3c2416.c
index 23ec97370f32..ff141b0af26b 100644
--- a/arch/arm/mach-s3c24xx/irq-s3c2416.c
+++ b/arch/arm/mach-s3c24xx/irq-s3c2416.c
@@ -232,7 +232,7 @@ struct irq_chip s3c2416_irq_second = {
232 232
233/* IRQ initialisation code */ 233/* IRQ initialisation code */
234 234
235static int __init s3c2416_add_sub(unsigned int base, 235static int s3c2416_add_sub(unsigned int base,
236 void (*demux)(unsigned int, 236 void (*demux)(unsigned int,
237 struct irq_desc *), 237 struct irq_desc *),
238 struct irq_chip *chip, 238 struct irq_chip *chip,
@@ -251,7 +251,7 @@ static int __init s3c2416_add_sub(unsigned int base,
251 return 0; 251 return 0;
252} 252}
253 253
254static void __init s3c2416_irq_add_second(void) 254static void s3c2416_irq_add_second(void)
255{ 255{
256 unsigned long pend; 256 unsigned long pend;
257 unsigned long last; 257 unsigned long last;
@@ -287,7 +287,7 @@ static void __init s3c2416_irq_add_second(void)
287 } 287 }
288} 288}
289 289
290static int __init s3c2416_irq_add(struct device *dev, 290static int s3c2416_irq_add(struct device *dev,
291 struct subsys_interface *sif) 291 struct subsys_interface *sif)
292{ 292{
293 printk(KERN_INFO "S3C2416: IRQ Support\n"); 293 printk(KERN_INFO "S3C2416: IRQ Support\n");
diff --git a/arch/arm/mach-s3c24xx/irq-s3c2443.c b/arch/arm/mach-s3c24xx/irq-s3c2443.c
index ac2829f56d12..5e69109c0928 100644
--- a/arch/arm/mach-s3c24xx/irq-s3c2443.c
+++ b/arch/arm/mach-s3c24xx/irq-s3c2443.c
@@ -222,7 +222,7 @@ static struct irq_chip s3c2443_irq_cam = {
222 222
223/* IRQ initialisation code */ 223/* IRQ initialisation code */
224 224
225static int __init s3c2443_add_sub(unsigned int base, 225static int s3c2443_add_sub(unsigned int base,
226 void (*demux)(unsigned int, 226 void (*demux)(unsigned int,
227 struct irq_desc *), 227 struct irq_desc *),
228 struct irq_chip *chip, 228 struct irq_chip *chip,
@@ -241,7 +241,7 @@ static int __init s3c2443_add_sub(unsigned int base,
241 return 0; 241 return 0;
242} 242}
243 243
244static int __init s3c2443_irq_add(struct device *dev, 244static int s3c2443_irq_add(struct device *dev,
245 struct subsys_interface *sif) 245 struct subsys_interface *sif)
246{ 246{
247 printk("S3C2443: IRQ Support\n"); 247 printk("S3C2443: IRQ Support\n");
diff --git a/arch/arm/mach-s3c24xx/simtec-usb.c b/arch/arm/mach-s3c24xx/simtec-usb.c
index 17f8356177c1..ddf7a3c743ac 100644
--- a/arch/arm/mach-s3c24xx/simtec-usb.c
+++ b/arch/arm/mach-s3c24xx/simtec-usb.c
@@ -104,7 +104,7 @@ static struct s3c2410_hcd_info usb_simtec_info __initdata = {
104}; 104};
105 105
106 106
107int usb_simtec_init(void) 107int __init usb_simtec_init(void)
108{ 108{
109 int ret; 109 int ret;
110 110
diff --git a/arch/arm/mach-sa1100/assabet.c b/arch/arm/mach-sa1100/assabet.c
index e1ccda6128eb..6a7ad3c2a3fc 100644
--- a/arch/arm/mach-sa1100/assabet.c
+++ b/arch/arm/mach-sa1100/assabet.c
@@ -388,7 +388,7 @@ static void __init map_sa1100_gpio_regs( void )
388 */ 388 */
389static void __init get_assabet_scr(void) 389static void __init get_assabet_scr(void)
390{ 390{
391 unsigned long scr, i; 391 unsigned long uninitialized_var(scr), i;
392 392
393 GPDR |= 0x3fc; /* Configure GPIO 9:2 as outputs */ 393 GPDR |= 0x3fc; /* Configure GPIO 9:2 as outputs */
394 GPSR = 0x3fc; /* Write 0xFF to GPIO 9:2 */ 394 GPSR = 0x3fc; /* Write 0xFF to GPIO 9:2 */
diff --git a/arch/arm/mach-shark/pci.c b/arch/arm/mach-shark/pci.c
index b8b4ab323a3e..6d91a914c1dd 100644
--- a/arch/arm/mach-shark/pci.c
+++ b/arch/arm/mach-shark/pci.c
@@ -41,7 +41,7 @@ static struct hw_pci shark_pci __initdata = {
41static int __init shark_pci_init(void) 41static int __init shark_pci_init(void)
42{ 42{
43 if (!machine_is_shark()) 43 if (!machine_is_shark())
44 return; 44 return -ENODEV;
45 45
46 pcibios_min_io = 0x6000; 46 pcibios_min_io = 0x6000;
47 pcibios_min_mem = 0x50000000; 47 pcibios_min_mem = 0x50000000;
diff --git a/arch/arm/mach-shmobile/include/mach/common.h b/arch/arm/mach-shmobile/include/mach/common.h
index ed77ab8c9143..d47e215aca87 100644
--- a/arch/arm/mach-shmobile/include/mach/common.h
+++ b/arch/arm/mach-shmobile/include/mach/common.h
@@ -100,7 +100,7 @@ static inline int shmobile_cpu_is_dead(unsigned int cpu) { return 1; }
100 100
101extern void shmobile_smp_init_cpus(unsigned int ncores); 101extern void shmobile_smp_init_cpus(unsigned int ncores);
102 102
103static inline void shmobile_init_late(void) 103static inline void __init shmobile_init_late(void)
104{ 104{
105 shmobile_suspend_init(); 105 shmobile_suspend_init();
106 shmobile_cpuidle_init(); 106 shmobile_cpuidle_init();
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
index 5f3c03b61f8e..11680c532b38 100644
--- a/arch/arm/mach-tegra/Kconfig
+++ b/arch/arm/mach-tegra/Kconfig
@@ -16,7 +16,7 @@ config ARCH_TEGRA_2x_SOC
16 select ARM_ERRATA_742230 16 select ARM_ERRATA_742230
17 select ARM_ERRATA_751472 17 select ARM_ERRATA_751472
18 select ARM_ERRATA_754327 18 select ARM_ERRATA_754327
19 select ARM_ERRATA_764369 19 select ARM_ERRATA_764369 if SMP
20 select PL310_ERRATA_727915 if CACHE_L2X0 20 select PL310_ERRATA_727915 if CACHE_L2X0
21 select PL310_ERRATA_769419 if CACHE_L2X0 21 select PL310_ERRATA_769419 if CACHE_L2X0
22 select CPU_FREQ_TABLE if CPU_FREQ 22 select CPU_FREQ_TABLE if CPU_FREQ
@@ -37,7 +37,7 @@ config ARCH_TEGRA_3x_SOC
37 select ARM_ERRATA_743622 37 select ARM_ERRATA_743622
38 select ARM_ERRATA_751472 38 select ARM_ERRATA_751472
39 select ARM_ERRATA_754322 39 select ARM_ERRATA_754322
40 select ARM_ERRATA_764369 40 select ARM_ERRATA_764369 if SMP
41 select PL310_ERRATA_769419 if CACHE_L2X0 41 select PL310_ERRATA_769419 if CACHE_L2X0
42 select CPU_FREQ_TABLE if CPU_FREQ 42 select CPU_FREQ_TABLE if CPU_FREQ
43 help 43 help
@@ -57,8 +57,6 @@ config TEGRA_AHB
57 which controls AHB bus master arbitration and some 57 which controls AHB bus master arbitration and some
58 perfomance parameters(priority, prefech size). 58 perfomance parameters(priority, prefech size).
59 59
60comment "Tegra board type"
61
62choice 60choice
63 prompt "Default low-level debug console UART" 61 prompt "Default low-level debug console UART"
64 default TEGRA_DEBUG_UART_NONE 62 default TEGRA_DEBUG_UART_NONE
diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig
index c77c86c47369..5848206ee9b9 100644
--- a/arch/arm/mach-ux500/Kconfig
+++ b/arch/arm/mach-ux500/Kconfig
@@ -5,9 +5,9 @@ config UX500_SOC_COMMON
5 default y 5 default y
6 select ARM_GIC 6 select ARM_GIC
7 select HAS_MTU 7 select HAS_MTU
8 select PL310_ERRATA_753970 8 select PL310_ERRATA_753970 if CACHE_PL310
9 select ARM_ERRATA_754322 9 select ARM_ERRATA_754322
10 select ARM_ERRATA_764369 10 select ARM_ERRATA_764369 if SMP
11 select CACHE_L2X0 11 select CACHE_L2X0
12 select PINCTRL 12 select PINCTRL
13 select PINCTRL_NOMADIK 13 select PINCTRL_NOMADIK
diff --git a/arch/arm/mach-vt8500/include/mach/uncompress.h b/arch/arm/mach-vt8500/include/mach/uncompress.h
index bb9e2d23fee3..e6e81fdaf109 100644
--- a/arch/arm/mach-vt8500/include/mach/uncompress.h
+++ b/arch/arm/mach-vt8500/include/mach/uncompress.h
@@ -15,15 +15,15 @@
15 * 15 *
16 */ 16 */
17 17
18#define UART0_PHYS 0xd8200000 18#define UART0_PHYS 0xd8200000
19#include <asm/io.h> 19#define UART0_ADDR(x) *(volatile unsigned char *)(UART0_PHYS + x)
20 20
21static void putc(const char c) 21static void putc(const char c)
22{ 22{
23 while (readb(UART0_PHYS + 0x1c) & 0x2) 23 while (UART0_ADDR(0x1c) & 0x2)
24 /* Tx busy, wait and poll */; 24 /* Tx busy, wait and poll */;
25 25
26 writeb(c, UART0_PHYS); 26 UART0_ADDR(0) = c;
27} 27}
28 28
29static void flush(void) 29static void flush(void)
diff --git a/arch/arm/mach-vt8500/vt8500.c b/arch/arm/mach-vt8500/vt8500.c
index 587ea950d08b..8d3871f110a5 100644
--- a/arch/arm/mach-vt8500/vt8500.c
+++ b/arch/arm/mach-vt8500/vt8500.c
@@ -77,8 +77,11 @@ static void vt8500_power_off(void)
77 77
78void __init vt8500_init(void) 78void __init vt8500_init(void)
79{ 79{
80 struct device_node *np, *fb; 80 struct device_node *np;
81#if defined(CONFIG_FB_VT8500) || defined(CONFIG_FB_WM8505)
82 struct device_node *fb;
81 void __iomem *gpio_base; 83 void __iomem *gpio_base;
84#endif
82 85
83#ifdef CONFIG_FB_VT8500 86#ifdef CONFIG_FB_VT8500
84 fb = of_find_compatible_node(NULL, NULL, "via,vt8500-fb"); 87 fb = of_find_compatible_node(NULL, NULL, "via,vt8500-fb");
diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
index ca83a7659aef..c9d1c3603bbf 100644
--- a/arch/arm/plat-omap/Kconfig
+++ b/arch/arm/plat-omap/Kconfig
@@ -43,11 +43,13 @@ config OMAP_DEBUG_DEVICES
43 43
44config OMAP_DEBUG_LEDS 44config OMAP_DEBUG_LEDS
45 def_bool y if NEW_LEDS 45 def_bool y if NEW_LEDS
46 select LEDS_CLASS
46 depends on OMAP_DEBUG_DEVICES 47 depends on OMAP_DEBUG_DEVICES
47 48
48config POWER_AVS_OMAP 49config POWER_AVS_OMAP
49 bool "AVS(Adaptive Voltage Scaling) support for OMAP IP versions 1&2" 50 bool "AVS(Adaptive Voltage Scaling) support for OMAP IP versions 1&2"
50 depends on POWER_AVS && (ARCH_OMAP3 || ARCH_OMAP4) && PM 51 depends on POWER_AVS && (ARCH_OMAP3 || ARCH_OMAP4) && PM
52 select POWER_SUPPLY
51 help 53 help
52 Say Y to enable AVS(Adaptive Voltage Scaling) 54 Say Y to enable AVS(Adaptive Voltage Scaling)
53 support on OMAP containing the version 1 or 55 support on OMAP containing the version 1 or
diff --git a/arch/arm/plat-omap/counter_32k.c b/arch/arm/plat-omap/counter_32k.c
index 2e826f1faf7b..87ba8dd0d791 100644
--- a/arch/arm/plat-omap/counter_32k.c
+++ b/arch/arm/plat-omap/counter_32k.c
@@ -52,22 +52,29 @@ static u32 notrace omap_32k_read_sched_clock(void)
52 * nsecs and adds to a monotonically increasing timespec. 52 * nsecs and adds to a monotonically increasing timespec.
53 */ 53 */
54static struct timespec persistent_ts; 54static struct timespec persistent_ts;
55static cycles_t cycles, last_cycles; 55static cycles_t cycles;
56static unsigned int persistent_mult, persistent_shift; 56static unsigned int persistent_mult, persistent_shift;
57static DEFINE_SPINLOCK(read_persistent_clock_lock);
58
57static void omap_read_persistent_clock(struct timespec *ts) 59static void omap_read_persistent_clock(struct timespec *ts)
58{ 60{
59 unsigned long long nsecs; 61 unsigned long long nsecs;
60 cycles_t delta; 62 cycles_t last_cycles;
61 struct timespec *tsp = &persistent_ts; 63 unsigned long flags;
64
65 spin_lock_irqsave(&read_persistent_clock_lock, flags);
62 66
63 last_cycles = cycles; 67 last_cycles = cycles;
64 cycles = sync32k_cnt_reg ? __raw_readl(sync32k_cnt_reg) : 0; 68 cycles = sync32k_cnt_reg ? __raw_readl(sync32k_cnt_reg) : 0;
65 delta = cycles - last_cycles;
66 69
67 nsecs = clocksource_cyc2ns(delta, persistent_mult, persistent_shift); 70 nsecs = clocksource_cyc2ns(cycles - last_cycles,
71 persistent_mult, persistent_shift);
72
73 timespec_add_ns(&persistent_ts, nsecs);
74
75 *ts = persistent_ts;
68 76
69 timespec_add_ns(tsp, nsecs); 77 spin_unlock_irqrestore(&read_persistent_clock_lock, flags);
70 *ts = *tsp;
71} 78}
72 79
73/** 80/**
diff --git a/arch/arm/plat-omap/omap-pm-noop.c b/arch/arm/plat-omap/omap-pm-noop.c
index 9f6413324df9..9722f418ae1f 100644
--- a/arch/arm/plat-omap/omap-pm-noop.c
+++ b/arch/arm/plat-omap/omap-pm-noop.c
@@ -38,7 +38,7 @@ int omap_pm_set_max_mpu_wakeup_lat(struct device *dev, long t)
38 if (!dev || t < -1) { 38 if (!dev || t < -1) {
39 WARN(1, "OMAP PM: %s: invalid parameter(s)", __func__); 39 WARN(1, "OMAP PM: %s: invalid parameter(s)", __func__);
40 return -EINVAL; 40 return -EINVAL;
41 }; 41 }
42 42
43 if (t == -1) 43 if (t == -1)
44 pr_debug("OMAP PM: remove max MPU wakeup latency constraint: dev %s\n", 44 pr_debug("OMAP PM: remove max MPU wakeup latency constraint: dev %s\n",
@@ -67,7 +67,7 @@ int omap_pm_set_min_bus_tput(struct device *dev, u8 agent_id, unsigned long r)
67 agent_id != OCP_TARGET_AGENT)) { 67 agent_id != OCP_TARGET_AGENT)) {
68 WARN(1, "OMAP PM: %s: invalid parameter(s)", __func__); 68 WARN(1, "OMAP PM: %s: invalid parameter(s)", __func__);
69 return -EINVAL; 69 return -EINVAL;
70 }; 70 }
71 71
72 if (r == 0) 72 if (r == 0)
73 pr_debug("OMAP PM: remove min bus tput constraint: dev %s for agent_id %d\n", 73 pr_debug("OMAP PM: remove min bus tput constraint: dev %s for agent_id %d\n",
@@ -93,7 +93,7 @@ int omap_pm_set_max_dev_wakeup_lat(struct device *req_dev, struct device *dev,
93 if (!req_dev || !dev || t < -1) { 93 if (!req_dev || !dev || t < -1) {
94 WARN(1, "OMAP PM: %s: invalid parameter(s)", __func__); 94 WARN(1, "OMAP PM: %s: invalid parameter(s)", __func__);
95 return -EINVAL; 95 return -EINVAL;
96 }; 96 }
97 97
98 if (t == -1) 98 if (t == -1)
99 pr_debug("OMAP PM: remove max device latency constraint: dev %s\n", 99 pr_debug("OMAP PM: remove max device latency constraint: dev %s\n",
@@ -123,7 +123,7 @@ int omap_pm_set_max_sdma_lat(struct device *dev, long t)
123 if (!dev || t < -1) { 123 if (!dev || t < -1) {
124 WARN(1, "OMAP PM: %s: invalid parameter(s)", __func__); 124 WARN(1, "OMAP PM: %s: invalid parameter(s)", __func__);
125 return -EINVAL; 125 return -EINVAL;
126 }; 126 }
127 127
128 if (t == -1) 128 if (t == -1)
129 pr_debug("OMAP PM: remove max DMA latency constraint: dev %s\n", 129 pr_debug("OMAP PM: remove max DMA latency constraint: dev %s\n",
diff --git a/arch/arm/plat-omap/omap_device.c b/arch/arm/plat-omap/omap_device.c
index cee85a55bd82..7a7d1f2a65e9 100644
--- a/arch/arm/plat-omap/omap_device.c
+++ b/arch/arm/plat-omap/omap_device.c
@@ -725,7 +725,7 @@ struct platform_device __init *omap_device_build_ss(const char *pdev_name, int p
725 dev_set_name(&pdev->dev, "%s", pdev->name); 725 dev_set_name(&pdev->dev, "%s", pdev->name);
726 726
727 od = omap_device_alloc(pdev, ohs, oh_cnt, pm_lats, pm_lats_cnt); 727 od = omap_device_alloc(pdev, ohs, oh_cnt, pm_lats, pm_lats_cnt);
728 if (!od) 728 if (IS_ERR(od))
729 goto odbs_exit1; 729 goto odbs_exit1;
730 730
731 ret = platform_device_add_data(pdev, pdata, pdata_len); 731 ret = platform_device_add_data(pdev, pdata, pdata_len);
diff --git a/drivers/char/ds1620.c b/drivers/char/ds1620.c
index aab9605f0b43..24ffd8cec51e 100644
--- a/drivers/char/ds1620.c
+++ b/drivers/char/ds1620.c
@@ -74,21 +74,21 @@ static inline void netwinder_ds1620_reset(void)
74 74
75static inline void netwinder_lock(unsigned long *flags) 75static inline void netwinder_lock(unsigned long *flags)
76{ 76{
77 spin_lock_irqsave(&nw_gpio_lock, *flags); 77 raw_spin_lock_irqsave(&nw_gpio_lock, *flags);
78} 78}
79 79
80static inline void netwinder_unlock(unsigned long *flags) 80static inline void netwinder_unlock(unsigned long *flags)
81{ 81{
82 spin_unlock_irqrestore(&nw_gpio_lock, *flags); 82 raw_spin_unlock_irqrestore(&nw_gpio_lock, *flags);
83} 83}
84 84
85static inline void netwinder_set_fan(int i) 85static inline void netwinder_set_fan(int i)
86{ 86{
87 unsigned long flags; 87 unsigned long flags;
88 88
89 spin_lock_irqsave(&nw_gpio_lock, flags); 89 raw_spin_lock_irqsave(&nw_gpio_lock, flags);
90 nw_gpio_modify_op(GPIO_FAN, i ? GPIO_FAN : 0); 90 nw_gpio_modify_op(GPIO_FAN, i ? GPIO_FAN : 0);
91 spin_unlock_irqrestore(&nw_gpio_lock, flags); 91 raw_spin_unlock_irqrestore(&nw_gpio_lock, flags);
92} 92}
93 93
94static inline int netwinder_get_fan(void) 94static inline int netwinder_get_fan(void)
diff --git a/drivers/char/nwflash.c b/drivers/char/nwflash.c
index a0e2f7d70355..e371480d3639 100644
--- a/drivers/char/nwflash.c
+++ b/drivers/char/nwflash.c
@@ -583,9 +583,9 @@ static void kick_open(void)
583 * we want to write a bit pattern XXX1 to Xilinx to enable 583 * we want to write a bit pattern XXX1 to Xilinx to enable
584 * the write gate, which will be open for about the next 2ms. 584 * the write gate, which will be open for about the next 2ms.
585 */ 585 */
586 spin_lock_irqsave(&nw_gpio_lock, flags); 586 raw_spin_lock_irqsave(&nw_gpio_lock, flags);
587 nw_cpld_modify(CPLD_FLASH_WR_ENABLE, CPLD_FLASH_WR_ENABLE); 587 nw_cpld_modify(CPLD_FLASH_WR_ENABLE, CPLD_FLASH_WR_ENABLE);
588 spin_unlock_irqrestore(&nw_gpio_lock, flags); 588 raw_spin_unlock_irqrestore(&nw_gpio_lock, flags);
589 589
590 /* 590 /*
591 * let the ISA bus to catch on... 591 * let the ISA bus to catch on...
diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c
index 65f8e9a54975..1f3417a8322d 100644
--- a/drivers/cpufreq/omap-cpufreq.c
+++ b/drivers/cpufreq/omap-cpufreq.c
@@ -30,20 +30,12 @@
30#include <asm/smp_plat.h> 30#include <asm/smp_plat.h>
31#include <asm/cpu.h> 31#include <asm/cpu.h>
32 32
33#include <plat/clock.h>
34#include <plat/omap-pm.h>
35#include <plat/common.h>
36#include <plat/omap_device.h>
37
38#include <mach/hardware.h>
39
40/* OPP tolerance in percentage */ 33/* OPP tolerance in percentage */
41#define OPP_TOLERANCE 4 34#define OPP_TOLERANCE 4
42 35
43static struct cpufreq_frequency_table *freq_table; 36static struct cpufreq_frequency_table *freq_table;
44static atomic_t freq_table_users = ATOMIC_INIT(0); 37static atomic_t freq_table_users = ATOMIC_INIT(0);
45static struct clk *mpu_clk; 38static struct clk *mpu_clk;
46static char *mpu_clk_name;
47static struct device *mpu_dev; 39static struct device *mpu_dev;
48static struct regulator *mpu_reg; 40static struct regulator *mpu_reg;
49 41
@@ -108,6 +100,14 @@ static int omap_target(struct cpufreq_policy *policy,
108 } 100 }
109 101
110 freq = freqs.new * 1000; 102 freq = freqs.new * 1000;
103 ret = clk_round_rate(mpu_clk, freq);
104 if (IS_ERR_VALUE(ret)) {
105 dev_warn(mpu_dev,
106 "CPUfreq: Cannot find matching frequency for %lu\n",
107 freq);
108 return ret;
109 }
110 freq = ret;
111 111
112 if (mpu_reg) { 112 if (mpu_reg) {
113 opp = opp_find_freq_ceil(mpu_dev, &freq); 113 opp = opp_find_freq_ceil(mpu_dev, &freq);
@@ -172,7 +172,7 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
172{ 172{
173 int result = 0; 173 int result = 0;
174 174
175 mpu_clk = clk_get(NULL, mpu_clk_name); 175 mpu_clk = clk_get(NULL, "cpufreq_ck");
176 if (IS_ERR(mpu_clk)) 176 if (IS_ERR(mpu_clk))
177 return PTR_ERR(mpu_clk); 177 return PTR_ERR(mpu_clk);
178 178
@@ -253,22 +253,10 @@ static struct cpufreq_driver omap_driver = {
253 253
254static int __init omap_cpufreq_init(void) 254static int __init omap_cpufreq_init(void)
255{ 255{
256 if (cpu_is_omap24xx()) 256 mpu_dev = get_cpu_device(0);
257 mpu_clk_name = "virt_prcm_set"; 257 if (!mpu_dev) {
258 else if (cpu_is_omap34xx())
259 mpu_clk_name = "dpll1_ck";
260 else if (cpu_is_omap44xx())
261 mpu_clk_name = "dpll_mpu_ck";
262
263 if (!mpu_clk_name) {
264 pr_err("%s: unsupported Silicon?\n", __func__);
265 return -EINVAL;
266 }
267
268 mpu_dev = omap_device_get_by_hwmod_name("mpu");
269 if (IS_ERR(mpu_dev)) {
270 pr_warning("%s: unable to get the mpu device\n", __func__); 258 pr_warning("%s: unable to get the mpu device\n", __func__);
271 return PTR_ERR(mpu_dev); 259 return -EINVAL;
272 } 260 }
273 261
274 mpu_reg = regulator_get(mpu_dev, "vcc"); 262 mpu_reg = regulator_get(mpu_dev, "vcc");
diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
index 84e8d0c59ee5..f9eb91623701 100644
--- a/drivers/mmc/host/sdhci-tegra.c
+++ b/drivers/mmc/host/sdhci-tegra.c
@@ -27,7 +27,6 @@
27 27
28#include <asm/gpio.h> 28#include <asm/gpio.h>
29 29
30#include <mach/gpio-tegra.h>
31#include <linux/platform_data/mmc-sdhci-tegra.h> 30#include <linux/platform_data/mmc-sdhci-tegra.h>
32 31
33#include "sdhci-pltfm.h" 32#include "sdhci-pltfm.h"
diff --git a/drivers/power/avs/smartreflex.c b/drivers/power/avs/smartreflex.c
index d4957b4edb62..24768a27e1d8 100644
--- a/drivers/power/avs/smartreflex.c
+++ b/drivers/power/avs/smartreflex.c
@@ -930,7 +930,7 @@ static int __init omap_sr_probe(struct platform_device *pdev)
930 if (!sr_info->base) { 930 if (!sr_info->base) {
931 dev_err(&pdev->dev, "%s: ioremap fail\n", __func__); 931 dev_err(&pdev->dev, "%s: ioremap fail\n", __func__);
932 ret = -ENOMEM; 932 ret = -ENOMEM;
933 goto err_release_region; 933 goto err_free_name;
934 } 934 }
935 935
936 if (irq) 936 if (irq)
@@ -969,7 +969,7 @@ static int __init omap_sr_probe(struct platform_device *pdev)
969 dev_err(&pdev->dev, "%s: Unable to create debugfs directory\n", 969 dev_err(&pdev->dev, "%s: Unable to create debugfs directory\n",
970 __func__); 970 __func__);
971 ret = PTR_ERR(sr_info->dbg_dir); 971 ret = PTR_ERR(sr_info->dbg_dir);
972 goto err_free_name; 972 goto err_debugfs;
973 } 973 }
974 974
975 (void) debugfs_create_file("autocomp", S_IRUGO | S_IWUSR, 975 (void) debugfs_create_file("autocomp", S_IRUGO | S_IWUSR,
@@ -1013,11 +1013,11 @@ static int __init omap_sr_probe(struct platform_device *pdev)
1013 1013
1014err_debugfs: 1014err_debugfs:
1015 debugfs_remove_recursive(sr_info->dbg_dir); 1015 debugfs_remove_recursive(sr_info->dbg_dir);
1016err_free_name:
1017 kfree(sr_info->name);
1018err_iounmap: 1016err_iounmap:
1019 list_del(&sr_info->node); 1017 list_del(&sr_info->node);
1020 iounmap(sr_info->base); 1018 iounmap(sr_info->base);
1019err_free_name:
1020 kfree(sr_info->name);
1021err_release_region: 1021err_release_region:
1022 release_mem_region(mem->start, resource_size(mem)); 1022 release_mem_region(mem->start, resource_size(mem));
1023err_free_devinfo: 1023err_free_devinfo:
diff --git a/sound/oss/waveartist.c b/sound/oss/waveartist.c
index 24c430f721d4..672af8b56542 100644
--- a/sound/oss/waveartist.c
+++ b/sound/oss/waveartist.c
@@ -1482,9 +1482,9 @@ vnc_mute_spkr(wavnc_info *devc)
1482{ 1482{
1483 unsigned long flags; 1483 unsigned long flags;
1484 1484
1485 spin_lock_irqsave(&nw_gpio_lock, flags); 1485 raw_spin_lock_irqsave(&nw_gpio_lock, flags);
1486 nw_cpld_modify(CPLD_UNMUTE, devc->spkr_mute_state ? 0 : CPLD_UNMUTE); 1486 nw_cpld_modify(CPLD_UNMUTE, devc->spkr_mute_state ? 0 : CPLD_UNMUTE);
1487 spin_unlock_irqrestore(&nw_gpio_lock, flags); 1487 raw_spin_unlock_irqrestore(&nw_gpio_lock, flags);
1488} 1488}
1489 1489
1490static void 1490static void