aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-12-09 17:14:47 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2014-12-09 17:14:47 -0500
commit0a9e0acddb2f0975e7c9a379171c82e158e93a9a (patch)
treec6635560b0f9c34b58202c93c2e3a3c4650b6c63
parentb64bb1d758163814687eb3b84d74e56f04d0c9d1 (diff)
parent65bb688aab9424849e94f74d555542fa76cd3d5a (diff)
Merge tag 'fixes-nc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC non-critical bug fixes from Arnd Bergmann: "These are bug fixes for harmless problems that were not important enough to get fixed in 3.19. This contains updates to the MAINTAINERS file, in particular: - Ben Dooks stepped down as Samsung co-maintainer (thanks Ben for long years of maintaining this). Kukjin Kim, who has been doing the work de-facto by himself recently is now the only maintainer. - Liviu, Sudeep and Lorenzo from ARM now officially maintain the Versatile Express platform, which was orphaned (thanks for - Gregory Fong and Florian Fainelli help out on the Broadcom BCM7XXX platform - Ray Jui and Scott Branden are the future maintainers for the newly merged Broadcom Cygnus platform. Welcome! In terms of actual fixes, we have the usual set of OMAP bug fixes, which Tony Lindgren separates out well from the other OMAP changes, one really ep93xx regression fix against 3.11 that didn't make it for 3.18, a few GIC changes from Marc Zyngier as a preparation for later rework (the current code is wrong in a harmless way), on Tegra regression and one samsung spelling fix" * tag 'fixes-nc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: ARM: imx6: fix bogus use of irq_get_irq_data ARM: imx: irq: fix buggy usage of irq_data irq field MAINTAINERS: ARM Versatile Express platform, add missing pattern MAINTAINERS: ARM Versatile Express platform arm: ep93xx: add dma_masks for the M2P and M2M DMA controllers MAINTAINERS: Add ahci_st.c to ARCH/STI architecture MAINTAINERS: add entry for the GISB arbiter driver MAINTAINERS: update brcmstb entries MAINTAINERS: update email address and cleanup for exynos entry ARM: tegra: Re-add removed SoC id macro to tegra_resume() MAINTAINERS: Entry for Cygnus/iproc arm architecture ARM: OMAP: serial: remove last vestige of DTR_gpio support. ARM: OMAP2+: gpmc: Get rid of "ti,elm-id not found" warning ARM: EXYNOS: fix typo in static struct name "exynos5_list_diable_wfi_wfe" ARM: OMAP2: Remove unnecessary KERN_* in omap_phy_internal.c ARM: OMAP4+: Remove unused omap_l3_noc platform init ARM: dts: Add twl keypad map for omap3 EVM ARM: dts: Add twl keypad map for LDP ARM: dts: Fix NAND last partition size on LDP ARM: OMAP3: Fix errors for omap_l3_smx when booted with device tree
-rw-r--r--MAINTAINERS47
-rw-r--r--arch/arm/boot/dts/omap3-evm-common.dtsi21
-rw-r--r--arch/arm/boot/dts/omap3-ldp.dts23
-rw-r--r--arch/arm/boot/dts/omap3.dtsi2
-rw-r--r--arch/arm/mach-ep93xx/dma.c12
-rw-r--r--arch/arm/mach-exynos/pmu.c8
-rw-r--r--arch/arm/mach-imx/common.h4
-rw-r--r--arch/arm/mach-imx/gpc.c42
-rw-r--r--arch/arm/mach-imx/pm-imx6.c5
-rw-r--r--arch/arm/mach-omap2/devices.c36
-rw-r--r--arch/arm/mach-omap2/gpmc.c2
-rw-r--r--arch/arm/mach-omap2/omap_phy_internal.c8
-rw-r--r--arch/arm/mach-omap2/serial.c3
-rw-r--r--arch/arm/mach-tegra/reset-handler.S1
-rw-r--r--drivers/bus/omap_l3_smx.c26
-rw-r--r--include/linux/platform_data/serial-omap.h3
16 files changed, 151 insertions, 92 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 32af1a0f7628..aa62ac666df9 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1308,30 +1308,22 @@ F: drivers/*/*rockchip*
1308F: drivers/*/*/*rockchip* 1308F: drivers/*/*/*rockchip*
1309F: sound/soc/rockchip/ 1309F: sound/soc/rockchip/
1310 1310
1311ARM/SAMSUNG ARM ARCHITECTURES 1311ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
1312M: Ben Dooks <ben-linux@fluff.org> 1312M: Kukjin Kim <kgene@kernel.org>
1313M: Kukjin Kim <kgene.kim@samsung.com>
1314L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1313L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1315L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers) 1314L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
1316W: http://www.fluff.org/ben/linux/
1317S: Maintained 1315S: Maintained
1318F: arch/arm/boot/dts/s3c* 1316F: arch/arm/boot/dts/s3c*
1319F: arch/arm/boot/dts/exynos* 1317F: arch/arm/boot/dts/exynos*
1320F: arch/arm/plat-samsung/ 1318F: arch/arm/plat-samsung/
1321F: arch/arm/mach-s3c24*/ 1319F: arch/arm/mach-s3c24*/
1322F: arch/arm/mach-s3c64xx/ 1320F: arch/arm/mach-s3c64xx/
1321F: arch/arm/mach-s5p*/
1322F: arch/arm/mach-exynos*/
1323F: drivers/*/*s3c2410* 1323F: drivers/*/*s3c2410*
1324F: drivers/*/*/*s3c2410* 1324F: drivers/*/*/*s3c2410*
1325F: drivers/spi/spi-s3c* 1325F: drivers/spi/spi-s3c*
1326F: sound/soc/samsung/* 1326F: sound/soc/samsung/*
1327
1328ARM/S5P EXYNOS ARM ARCHITECTURES
1329M: Kukjin Kim <kgene.kim@samsung.com>
1330L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1331L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
1332S: Maintained
1333F: arch/arm/mach-s5p*/
1334F: arch/arm/mach-exynos*/
1335N: exynos 1327N: exynos
1336 1328
1337ARM/SAMSUNG MOBILE MACHINE SUPPORT 1329ARM/SAMSUNG MOBILE MACHINE SUPPORT
@@ -1430,6 +1422,7 @@ F: drivers/tty/serial/st-asc.c
1430F: drivers/usb/dwc3/dwc3-st.c 1422F: drivers/usb/dwc3/dwc3-st.c
1431F: drivers/usb/host/ehci-st.c 1423F: drivers/usb/host/ehci-st.c
1432F: drivers/usb/host/ohci-st.c 1424F: drivers/usb/host/ohci-st.c
1425F: drivers/ata/ahci_st.c
1433 1426
1434ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT 1427ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT
1435M: Lennert Buytenhek <kernel@wantstofly.org> 1428M: Lennert Buytenhek <kernel@wantstofly.org>
@@ -1503,6 +1496,19 @@ S: Maintained
1503F: drivers/clk/ux500/ 1496F: drivers/clk/ux500/
1504F: include/linux/platform_data/clk-ux500.h 1497F: include/linux/platform_data/clk-ux500.h
1505 1498
1499ARM/VERSATILE EXPRESS PLATFORM
1500M: Liviu Dudau <liviu.dudau@arm.com>
1501M: Sudeep Holla <sudeep.holla@arm.com>
1502M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
1503L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1504S: Maintained
1505F: arch/arm/boot/dts/vexpress*
1506F: arch/arm/mach-vexpress/
1507F: */*/vexpress*
1508F: */*/*/vexpress*
1509F: drivers/clk/versatile/clk-vexpress-osc.c
1510F: drivers/clocksource/versatile.c
1511
1506ARM/VFP SUPPORT 1512ARM/VFP SUPPORT
1507M: Russell King <linux@arm.linux.org.uk> 1513M: Russell King <linux@arm.linux.org.uk>
1508L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1514L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -2097,10 +2103,13 @@ F: arch/arm/include/debug/bcm63xx.S
2097BROADCOM BCM7XXX ARM ARCHITECTURE 2103BROADCOM BCM7XXX ARM ARCHITECTURE
2098M: Marc Carino <marc.ceeeee@gmail.com> 2104M: Marc Carino <marc.ceeeee@gmail.com>
2099M: Brian Norris <computersforpeace@gmail.com> 2105M: Brian Norris <computersforpeace@gmail.com>
2106M: Gregory Fong <gregory.0xf0@gmail.com>
2107M: Florian Fainelli <f.fainelli@gmail.com>
2100L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 2108L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
2101S: Maintained 2109S: Maintained
2102F: arch/arm/mach-bcm/*brcmstb* 2110F: arch/arm/mach-bcm/*brcmstb*
2103F: arch/arm/boot/dts/bcm7*.dts* 2111F: arch/arm/boot/dts/bcm7*.dts*
2112F: drivers/bus/brcmstb_gisb.c
2104 2113
2105BROADCOM TG3 GIGABIT ETHERNET DRIVER 2114BROADCOM TG3 GIGABIT ETHERNET DRIVER
2106M: Prashant Sreedharan <prashant@broadcom.com> 2115M: Prashant Sreedharan <prashant@broadcom.com>
@@ -2131,6 +2140,20 @@ L: linux-scsi@vger.kernel.org
2131S: Supported 2140S: Supported
2132F: drivers/scsi/bnx2i/ 2141F: drivers/scsi/bnx2i/
2133 2142
2143BROADCOM CYGNUS/IPROC ARM ARCHITECTURE
2144M: Ray Jui <rjui@broadcom.com>
2145M: Scott Branden <sbranden@broadcom.com>
2146L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
2147L: bcm-kernel-feedback-list@broadcom.com
2148T: git git://git.github.com/brcm/linux.git
2149S: Maintained
2150N: iproc
2151N: cygnus
2152N: bcm9113*
2153N: bcm9583*
2154N: bcm583*
2155N: bcm113*
2156
2134BROADCOM KONA GPIO DRIVER 2157BROADCOM KONA GPIO DRIVER
2135M: Ray Jui <rjui@broadcom.com> 2158M: Ray Jui <rjui@broadcom.com>
2136L: bcm-kernel-feedback-list@broadcom.com 2159L: bcm-kernel-feedback-list@broadcom.com
diff --git a/arch/arm/boot/dts/omap3-evm-common.dtsi b/arch/arm/boot/dts/omap3-evm-common.dtsi
index c8747c7f1cc8..127f3e7c10c4 100644
--- a/arch/arm/boot/dts/omap3-evm-common.dtsi
+++ b/arch/arm/boot/dts/omap3-evm-common.dtsi
@@ -2,6 +2,7 @@
2 * Common support for omap3 EVM boards 2 * Common support for omap3 EVM boards
3 */ 3 */
4 4
5#include <dt-bindings/input/input.h>
5#include "omap-gpmc-smsc911x.dtsi" 6#include "omap-gpmc-smsc911x.dtsi"
6 7
7/ { 8/ {
@@ -111,6 +112,26 @@
111 ti,use-leds; 112 ti,use-leds;
112}; 113};
113 114
115&twl_keypad {
116 linux,keymap = <
117 MATRIX_KEY(2, 2, KEY_1)
118 MATRIX_KEY(1, 1, KEY_2)
119 MATRIX_KEY(0, 0, KEY_3)
120 MATRIX_KEY(3, 2, KEY_4)
121 MATRIX_KEY(2, 1, KEY_5)
122 MATRIX_KEY(1, 0, KEY_6)
123 MATRIX_KEY(1, 3, KEY_7)
124 MATRIX_KEY(3, 1, KEY_8)
125 MATRIX_KEY(2, 0, KEY_9)
126 MATRIX_KEY(2, 3, KEY_KPASTERISK)
127 MATRIX_KEY(0, 2, KEY_0)
128 MATRIX_KEY(3, 0, KEY_KPDOT)
129 /* s4 not wired */
130 MATRIX_KEY(1, 2, KEY_BACKSPACE)
131 MATRIX_KEY(0, 1, KEY_ENTER)
132 >;
133};
134
114&usb_otg_hs { 135&usb_otg_hs {
115 interface-type = <0>; 136 interface-type = <0>;
116 usb-phy = <&usb2_phy>; 137 usb-phy = <&usb2_phy>;
diff --git a/arch/arm/boot/dts/omap3-ldp.dts b/arch/arm/boot/dts/omap3-ldp.dts
index 72dca0b7904d..77fee3fb7515 100644
--- a/arch/arm/boot/dts/omap3-ldp.dts
+++ b/arch/arm/boot/dts/omap3-ldp.dts
@@ -7,6 +7,7 @@
7 */ 7 */
8/dts-v1/; 8/dts-v1/;
9 9
10#include <dt-bindings/input/input.h>
10#include "omap34xx.dtsi" 11#include "omap34xx.dtsi"
11#include "omap-gpmc-smsc911x.dtsi" 12#include "omap-gpmc-smsc911x.dtsi"
12 13
@@ -141,7 +142,7 @@
141 }; 142 };
142 partition@2000000 { 143 partition@2000000 {
143 label = "Filesystem"; 144 label = "Filesystem";
144 reg = <0x2000000 0xe000000>; 145 reg = <0x2000000 0x6000000>;
145 }; 146 };
146 }; 147 };
147 148
@@ -263,6 +264,26 @@
263 }; 264 };
264}; 265};
265 266
267&twl_keypad {
268 linux,keymap = <MATRIX_KEY(0, 0, KEY_1)
269 MATRIX_KEY(0, 1, KEY_2)
270 MATRIX_KEY(0, 2, KEY_3)
271 MATRIX_KEY(1, 0, KEY_4)
272 MATRIX_KEY(1, 1, KEY_5)
273 MATRIX_KEY(1, 2, KEY_6)
274 MATRIX_KEY(1, 3, KEY_F5)
275 MATRIX_KEY(2, 0, KEY_7)
276 MATRIX_KEY(2, 1, KEY_8)
277 MATRIX_KEY(2, 2, KEY_9)
278 MATRIX_KEY(2, 3, KEY_F6)
279 MATRIX_KEY(3, 0, KEY_F7)
280 MATRIX_KEY(3, 1, KEY_0)
281 MATRIX_KEY(3, 2, KEY_F8)
282 MATRIX_KEY(5, 4, KEY_RESERVED)
283 MATRIX_KEY(4, 4, KEY_VOLUMEUP)
284 MATRIX_KEY(5, 5, KEY_VOLUMEDOWN)>;
285};
286
266&uart3 { 287&uart3 {
267 interrupts-extended = <&intc 74 &omap3_pmx_core OMAP3_UART3_RX>; 288 interrupts-extended = <&intc 74 &omap3_pmx_core OMAP3_UART3_RX>;
268}; 289};
diff --git a/arch/arm/boot/dts/omap3.dtsi b/arch/arm/boot/dts/omap3.dtsi
index d0e884d3a737..e602e75ce5b7 100644
--- a/arch/arm/boot/dts/omap3.dtsi
+++ b/arch/arm/boot/dts/omap3.dtsi
@@ -79,7 +79,7 @@
79 * hierarchy. 79 * hierarchy.
80 */ 80 */
81 ocp { 81 ocp {
82 compatible = "simple-bus"; 82 compatible = "ti,omap3-l3-smx", "simple-bus";
83 reg = <0x68000000 0x10000>; 83 reg = <0x68000000 0x10000>;
84 interrupts = <9 10>; 84 interrupts = <9 10>;
85 #address-cells = <1>; 85 #address-cells = <1>;
diff --git a/arch/arm/mach-ep93xx/dma.c b/arch/arm/mach-ep93xx/dma.c
index d8bfd02f5047..88a4c9b089a5 100644
--- a/arch/arm/mach-ep93xx/dma.c
+++ b/arch/arm/mach-ep93xx/dma.c
@@ -66,11 +66,15 @@ static struct ep93xx_dma_platform_data ep93xx_dma_m2p_data = {
66 .num_channels = ARRAY_SIZE(ep93xx_dma_m2p_channels), 66 .num_channels = ARRAY_SIZE(ep93xx_dma_m2p_channels),
67}; 67};
68 68
69static u64 ep93xx_dma_m2p_mask = DMA_BIT_MASK(32);
70
69static struct platform_device ep93xx_dma_m2p_device = { 71static struct platform_device ep93xx_dma_m2p_device = {
70 .name = "ep93xx-dma-m2p", 72 .name = "ep93xx-dma-m2p",
71 .id = -1, 73 .id = -1,
72 .dev = { 74 .dev = {
73 .platform_data = &ep93xx_dma_m2p_data, 75 .platform_data = &ep93xx_dma_m2p_data,
76 .dma_mask = &ep93xx_dma_m2p_mask,
77 .coherent_dma_mask = DMA_BIT_MASK(32),
74 }, 78 },
75}; 79};
76 80
@@ -93,11 +97,15 @@ static struct ep93xx_dma_platform_data ep93xx_dma_m2m_data = {
93 .num_channels = ARRAY_SIZE(ep93xx_dma_m2m_channels), 97 .num_channels = ARRAY_SIZE(ep93xx_dma_m2m_channels),
94}; 98};
95 99
100static u64 ep93xx_dma_m2m_mask = DMA_BIT_MASK(32);
101
96static struct platform_device ep93xx_dma_m2m_device = { 102static struct platform_device ep93xx_dma_m2m_device = {
97 .name = "ep93xx-dma-m2m", 103 .name = "ep93xx-dma-m2m",
98 .id = -1, 104 .id = -1,
99 .dev = { 105 .dev = {
100 .platform_data = &ep93xx_dma_m2m_data, 106 .platform_data = &ep93xx_dma_m2m_data,
107 .dma_mask = &ep93xx_dma_m2m_mask,
108 .coherent_dma_mask = DMA_BIT_MASK(32),
101 }, 109 },
102}; 110};
103 111
diff --git a/arch/arm/mach-exynos/pmu.c b/arch/arm/mach-exynos/pmu.c
index ff9d23f0a7d9..d8fa0337db73 100644
--- a/arch/arm/mach-exynos/pmu.c
+++ b/arch/arm/mach-exynos/pmu.c
@@ -329,7 +329,7 @@ static unsigned int const exynos5_list_both_cnt_feed[] = {
329 EXYNOS5_TOP_PWR_SYSMEM_OPTION, 329 EXYNOS5_TOP_PWR_SYSMEM_OPTION,
330}; 330};
331 331
332static unsigned int const exynos5_list_diable_wfi_wfe[] = { 332static unsigned int const exynos5_list_disable_wfi_wfe[] = {
333 EXYNOS5_ARM_CORE1_OPTION, 333 EXYNOS5_ARM_CORE1_OPTION,
334 EXYNOS5_FSYS_ARM_OPTION, 334 EXYNOS5_FSYS_ARM_OPTION,
335 EXYNOS5_ISP_ARM_OPTION, 335 EXYNOS5_ISP_ARM_OPTION,
@@ -360,11 +360,11 @@ static void exynos5_init_pmu(void)
360 /* 360 /*
361 * Disable WFI/WFE on XXX_OPTION 361 * Disable WFI/WFE on XXX_OPTION
362 */ 362 */
363 for (i = 0 ; i < ARRAY_SIZE(exynos5_list_diable_wfi_wfe) ; i++) { 363 for (i = 0 ; i < ARRAY_SIZE(exynos5_list_disable_wfi_wfe) ; i++) {
364 tmp = pmu_raw_readl(exynos5_list_diable_wfi_wfe[i]); 364 tmp = pmu_raw_readl(exynos5_list_disable_wfi_wfe[i]);
365 tmp &= ~(EXYNOS5_OPTION_USE_STANDBYWFE | 365 tmp &= ~(EXYNOS5_OPTION_USE_STANDBYWFE |
366 EXYNOS5_OPTION_USE_STANDBYWFI); 366 EXYNOS5_OPTION_USE_STANDBYWFI);
367 pmu_raw_writel(tmp, exynos5_list_diable_wfi_wfe[i]); 367 pmu_raw_writel(tmp, exynos5_list_disable_wfi_wfe[i]);
368 } 368 }
369} 369}
370 370
diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h
index 1dabf435c592..66662a1e36de 100644
--- a/arch/arm/mach-imx/common.h
+++ b/arch/arm/mach-imx/common.h
@@ -108,8 +108,8 @@ void imx_gpc_pre_suspend(bool arm_power_off);
108void imx_gpc_post_resume(void); 108void imx_gpc_post_resume(void);
109void imx_gpc_mask_all(void); 109void imx_gpc_mask_all(void);
110void imx_gpc_restore_all(void); 110void imx_gpc_restore_all(void);
111void imx_gpc_irq_mask(struct irq_data *d); 111void imx_gpc_hwirq_mask(unsigned int hwirq);
112void imx_gpc_irq_unmask(struct irq_data *d); 112void imx_gpc_hwirq_unmask(unsigned int hwirq);
113void imx_anatop_init(void); 113void imx_anatop_init(void);
114void imx_anatop_pre_suspend(void); 114void imx_anatop_pre_suspend(void);
115void imx_anatop_post_resume(void); 115void imx_anatop_post_resume(void);
diff --git a/arch/arm/mach-imx/gpc.c b/arch/arm/mach-imx/gpc.c
index 82ea74e68482..5f3602ec74fa 100644
--- a/arch/arm/mach-imx/gpc.c
+++ b/arch/arm/mach-imx/gpc.c
@@ -56,14 +56,14 @@ void imx_gpc_post_resume(void)
56 56
57static int imx_gpc_irq_set_wake(struct irq_data *d, unsigned int on) 57static int imx_gpc_irq_set_wake(struct irq_data *d, unsigned int on)
58{ 58{
59 unsigned int idx = d->irq / 32 - 1; 59 unsigned int idx = d->hwirq / 32 - 1;
60 u32 mask; 60 u32 mask;
61 61
62 /* Sanity check for SPI irq */ 62 /* Sanity check for SPI irq */
63 if (d->irq < 32) 63 if (d->hwirq < 32)
64 return -EINVAL; 64 return -EINVAL;
65 65
66 mask = 1 << d->irq % 32; 66 mask = 1 << d->hwirq % 32;
67 gpc_wake_irqs[idx] = on ? gpc_wake_irqs[idx] | mask : 67 gpc_wake_irqs[idx] = on ? gpc_wake_irqs[idx] | mask :
68 gpc_wake_irqs[idx] & ~mask; 68 gpc_wake_irqs[idx] & ~mask;
69 69
@@ -91,34 +91,44 @@ void imx_gpc_restore_all(void)
91 writel_relaxed(gpc_saved_imrs[i], reg_imr1 + i * 4); 91 writel_relaxed(gpc_saved_imrs[i], reg_imr1 + i * 4);
92} 92}
93 93
94void imx_gpc_irq_unmask(struct irq_data *d) 94void imx_gpc_hwirq_unmask(unsigned int hwirq)
95{ 95{
96 void __iomem *reg; 96 void __iomem *reg;
97 u32 val; 97 u32 val;
98 98
99 /* Sanity check for SPI irq */ 99 reg = gpc_base + GPC_IMR1 + (hwirq / 32 - 1) * 4;
100 if (d->irq < 32)
101 return;
102
103 reg = gpc_base + GPC_IMR1 + (d->irq / 32 - 1) * 4;
104 val = readl_relaxed(reg); 100 val = readl_relaxed(reg);
105 val &= ~(1 << d->irq % 32); 101 val &= ~(1 << hwirq % 32);
106 writel_relaxed(val, reg); 102 writel_relaxed(val, reg);
107} 103}
108 104
109void imx_gpc_irq_mask(struct irq_data *d) 105void imx_gpc_hwirq_mask(unsigned int hwirq)
110{ 106{
111 void __iomem *reg; 107 void __iomem *reg;
112 u32 val; 108 u32 val;
113 109
110 reg = gpc_base + GPC_IMR1 + (hwirq / 32 - 1) * 4;
111 val = readl_relaxed(reg);
112 val |= 1 << (hwirq % 32);
113 writel_relaxed(val, reg);
114}
115
116static void imx_gpc_irq_unmask(struct irq_data *d)
117{
118 /* Sanity check for SPI irq */
119 if (d->hwirq < 32)
120 return;
121
122 imx_gpc_hwirq_unmask(d->hwirq);
123}
124
125static void imx_gpc_irq_mask(struct irq_data *d)
126{
114 /* Sanity check for SPI irq */ 127 /* Sanity check for SPI irq */
115 if (d->irq < 32) 128 if (d->hwirq < 32)
116 return; 129 return;
117 130
118 reg = gpc_base + GPC_IMR1 + (d->irq / 32 - 1) * 4; 131 imx_gpc_hwirq_mask(d->hwirq);
119 val = readl_relaxed(reg);
120 val |= 1 << (d->irq % 32);
121 writel_relaxed(val, reg);
122} 132}
123 133
124void __init imx_gpc_init(void) 134void __init imx_gpc_init(void)
diff --git a/arch/arm/mach-imx/pm-imx6.c b/arch/arm/mach-imx/pm-imx6.c
index 5c3af8f993d0..d815d1ba27a5 100644
--- a/arch/arm/mach-imx/pm-imx6.c
+++ b/arch/arm/mach-imx/pm-imx6.c
@@ -261,7 +261,6 @@ static void imx6q_enable_wb(bool enable)
261 261
262int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode) 262int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode)
263{ 263{
264 struct irq_data *iomuxc_irq_data = irq_get_irq_data(32);
265 u32 val = readl_relaxed(ccm_base + CLPCR); 264 u32 val = readl_relaxed(ccm_base + CLPCR);
266 265
267 val &= ~BM_CLPCR_LPM; 266 val &= ~BM_CLPCR_LPM;
@@ -316,9 +315,9 @@ int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode)
316 * 3) Software should mask IRQ #32 right after CCM Low-Power mode 315 * 3) Software should mask IRQ #32 right after CCM Low-Power mode
317 * is set (set bits 0-1 of CCM_CLPCR). 316 * is set (set bits 0-1 of CCM_CLPCR).
318 */ 317 */
319 imx_gpc_irq_unmask(iomuxc_irq_data); 318 imx_gpc_hwirq_unmask(32);
320 writel_relaxed(val, ccm_base + CLPCR); 319 writel_relaxed(val, ccm_base + CLPCR);
321 imx_gpc_irq_mask(iomuxc_irq_data); 320 imx_gpc_hwirq_mask(32);
322 321
323 return 0; 322 return 0;
324} 323}
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 324f02bf8a51..492ef1607115 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -49,7 +49,7 @@ static int __init omap3_l3_init(void)
49 * To avoid code running on other OMAPs in 49 * To avoid code running on other OMAPs in
50 * multi-omap builds 50 * multi-omap builds
51 */ 51 */
52 if (!(cpu_is_omap34xx())) 52 if (!(cpu_is_omap34xx()) || of_have_populated_dt())
53 return -ENODEV; 53 return -ENODEV;
54 54
55 snprintf(oh_name, L3_MODULES_MAX_LEN, "l3_main"); 55 snprintf(oh_name, L3_MODULES_MAX_LEN, "l3_main");
@@ -67,40 +67,6 @@ static int __init omap3_l3_init(void)
67} 67}
68omap_postcore_initcall(omap3_l3_init); 68omap_postcore_initcall(omap3_l3_init);
69 69
70static int __init omap4_l3_init(void)
71{
72 int i;
73 struct omap_hwmod *oh[3];
74 struct platform_device *pdev;
75 char oh_name[L3_MODULES_MAX_LEN];
76
77 /* If dtb is there, the devices will be created dynamically */
78 if (of_have_populated_dt())
79 return -ENODEV;
80
81 /*
82 * To avoid code running on other OMAPs in
83 * multi-omap builds
84 */
85 if (!cpu_is_omap44xx() && !soc_is_omap54xx())
86 return -ENODEV;
87
88 for (i = 0; i < L3_MODULES; i++) {
89 snprintf(oh_name, L3_MODULES_MAX_LEN, "l3_main_%d", i+1);
90
91 oh[i] = omap_hwmod_lookup(oh_name);
92 if (!(oh[i]))
93 pr_err("could not look up %s\n", oh_name);
94 }
95
96 pdev = omap_device_build_ss("omap_l3_noc", 0, oh, 3, NULL, 0);
97
98 WARN(IS_ERR(pdev), "could not build omap_device for %s\n", oh_name);
99
100 return PTR_RET(pdev);
101}
102omap_postcore_initcall(omap4_l3_init);
103
104#if defined(CONFIG_VIDEO_OMAP2) || defined(CONFIG_VIDEO_OMAP2_MODULE) 70#if defined(CONFIG_VIDEO_OMAP2) || defined(CONFIG_VIDEO_OMAP2_MODULE)
105 71
106static struct resource omap2cam_resources[] = { 72static struct resource omap2cam_resources[] = {
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
index 5fa3755261ce..8fb5bbce102f 100644
--- a/arch/arm/mach-omap2/gpmc.c
+++ b/arch/arm/mach-omap2/gpmc.c
@@ -1394,8 +1394,6 @@ static int gpmc_probe_nand_child(struct platform_device *pdev,
1394 if (gpmc_nand_data->elm_of_node == NULL) 1394 if (gpmc_nand_data->elm_of_node == NULL)
1395 gpmc_nand_data->elm_of_node = 1395 gpmc_nand_data->elm_of_node =
1396 of_parse_phandle(child, "elm_id", 0); 1396 of_parse_phandle(child, "elm_id", 0);
1397 if (gpmc_nand_data->elm_of_node == NULL)
1398 pr_warn("%s: ti,elm-id property not found\n", __func__);
1399 1397
1400 /* select ecc-scheme for NAND */ 1398 /* select ecc-scheme for NAND */
1401 if (of_property_read_string(child, "ti,nand-ecc-opt", &s)) { 1399 if (of_property_read_string(child, "ti,nand-ecc-opt", &s)) {
diff --git a/arch/arm/mach-omap2/omap_phy_internal.c b/arch/arm/mach-omap2/omap_phy_internal.c
index 50640b38f0bf..1a19fa096bab 100644
--- a/arch/arm/mach-omap2/omap_phy_internal.c
+++ b/arch/arm/mach-omap2/omap_phy_internal.c
@@ -21,6 +21,8 @@
21 * 21 *
22 */ 22 */
23 23
24#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
25
24#include <linux/types.h> 26#include <linux/types.h>
25#include <linux/delay.h> 27#include <linux/delay.h>
26#include <linux/clk.h> 28#include <linux/clk.h>
@@ -97,13 +99,13 @@ void am35x_musb_phy_power(u8 on)
97 99
98 omap_ctrl_writel(devconf2, AM35XX_CONTROL_DEVCONF2); 100 omap_ctrl_writel(devconf2, AM35XX_CONTROL_DEVCONF2);
99 101
100 pr_info(KERN_INFO "Waiting for PHY clock good...\n"); 102 pr_info("Waiting for PHY clock good...\n");
101 while (!(omap_ctrl_readl(AM35XX_CONTROL_DEVCONF2) 103 while (!(omap_ctrl_readl(AM35XX_CONTROL_DEVCONF2)
102 & CONF2_PHYCLKGD)) { 104 & CONF2_PHYCLKGD)) {
103 cpu_relax(); 105 cpu_relax();
104 106
105 if (time_after(jiffies, timeout)) { 107 if (time_after(jiffies, timeout)) {
106 pr_err(KERN_ERR "musb PHY clock good timed out\n"); 108 pr_err("musb PHY clock good timed out\n");
107 break; 109 break;
108 } 110 }
109 } 111 }
@@ -145,7 +147,7 @@ void am35x_set_mode(u8 musb_mode)
145 devconf2 |= CONF2_NO_OVERRIDE; 147 devconf2 |= CONF2_NO_OVERRIDE;
146 break; 148 break;
147 default: 149 default:
148 pr_info(KERN_INFO "Unsupported mode %u\n", musb_mode); 150 pr_info("Unsupported mode %u\n", musb_mode);
149 } 151 }
150 152
151 omap_ctrl_writel(devconf2, AM35XX_CONTROL_DEVCONF2); 153 omap_ctrl_writel(devconf2, AM35XX_CONTROL_DEVCONF2);
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index a388f8c1bcb3..57dee0c7cd2b 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -263,9 +263,6 @@ void __init omap_serial_init_port(struct omap_board_data *bdata,
263 omap_up.dma_rx_timeout = info->dma_rx_timeout; 263 omap_up.dma_rx_timeout = info->dma_rx_timeout;
264 omap_up.dma_rx_poll_rate = info->dma_rx_poll_rate; 264 omap_up.dma_rx_poll_rate = info->dma_rx_poll_rate;
265 omap_up.autosuspend_timeout = info->autosuspend_timeout; 265 omap_up.autosuspend_timeout = info->autosuspend_timeout;
266 omap_up.DTR_gpio = info->DTR_gpio;
267 omap_up.DTR_inverted = info->DTR_inverted;
268 omap_up.DTR_present = info->DTR_present;
269 266
270 pdata = &omap_up; 267 pdata = &omap_up;
271 pdata_size = sizeof(struct omap_uart_port_info); 268 pdata_size = sizeof(struct omap_uart_port_info);
diff --git a/arch/arm/mach-tegra/reset-handler.S b/arch/arm/mach-tegra/reset-handler.S
index 7b2baab0f0bd..71be4af5e975 100644
--- a/arch/arm/mach-tegra/reset-handler.S
+++ b/arch/arm/mach-tegra/reset-handler.S
@@ -51,6 +51,7 @@ ENTRY(tegra_resume)
51 THUMB( it ne ) 51 THUMB( it ne )
52 bne cpu_resume @ no 52 bne cpu_resume @ no
53 53
54 tegra_get_soc_id TEGRA_APB_MISC_BASE, r6
54 /* Are we on Tegra20? */ 55 /* Are we on Tegra20? */
55 cmp r6, #TEGRA20 56 cmp r6, #TEGRA20
56 beq 1f @ Yes 57 beq 1f @ Yes
diff --git a/drivers/bus/omap_l3_smx.c b/drivers/bus/omap_l3_smx.c
index acc216491b8a..597fdaee7315 100644
--- a/drivers/bus/omap_l3_smx.c
+++ b/drivers/bus/omap_l3_smx.c
@@ -27,6 +27,10 @@
27#include <linux/platform_device.h> 27#include <linux/platform_device.h>
28#include <linux/interrupt.h> 28#include <linux/interrupt.h>
29#include <linux/io.h> 29#include <linux/io.h>
30#include <linux/module.h>
31#include <linux/of.h>
32#include <linux/of_device.h>
33
30#include "omap_l3_smx.h" 34#include "omap_l3_smx.h"
31 35
32static inline u64 omap3_l3_readll(void __iomem *base, u16 reg) 36static inline u64 omap3_l3_readll(void __iomem *base, u16 reg)
@@ -211,7 +215,17 @@ static irqreturn_t omap3_l3_app_irq(int irq, void *_l3)
211 return ret; 215 return ret;
212} 216}
213 217
214static int __init omap3_l3_probe(struct platform_device *pdev) 218#if IS_BUILTIN(CONFIG_OF)
219static const struct of_device_id omap3_l3_match[] = {
220 {
221 .compatible = "ti,omap3-l3-smx",
222 },
223 { },
224};
225MODULE_DEVICE_TABLE(of, omap3_l3_match);
226#endif
227
228static int omap3_l3_probe(struct platform_device *pdev)
215{ 229{
216 struct omap3_l3 *l3; 230 struct omap3_l3 *l3;
217 struct resource *res; 231 struct resource *res;
@@ -265,7 +279,7 @@ err0:
265 return ret; 279 return ret;
266} 280}
267 281
268static int __exit omap3_l3_remove(struct platform_device *pdev) 282static int omap3_l3_remove(struct platform_device *pdev)
269{ 283{
270 struct omap3_l3 *l3 = platform_get_drvdata(pdev); 284 struct omap3_l3 *l3 = platform_get_drvdata(pdev);
271 285
@@ -278,15 +292,17 @@ static int __exit omap3_l3_remove(struct platform_device *pdev)
278} 292}
279 293
280static struct platform_driver omap3_l3_driver = { 294static struct platform_driver omap3_l3_driver = {
281 .remove = __exit_p(omap3_l3_remove), 295 .probe = omap3_l3_probe,
296 .remove = omap3_l3_remove,
282 .driver = { 297 .driver = {
283 .name = "omap_l3_smx", 298 .name = "omap_l3_smx",
299 .of_match_table = of_match_ptr(omap3_l3_match),
284 }, 300 },
285}; 301};
286 302
287static int __init omap3_l3_init(void) 303static int __init omap3_l3_init(void)
288{ 304{
289 return platform_driver_probe(&omap3_l3_driver, omap3_l3_probe); 305 return platform_driver_register(&omap3_l3_driver);
290} 306}
291postcore_initcall_sync(omap3_l3_init); 307postcore_initcall_sync(omap3_l3_init);
292 308
diff --git a/include/linux/platform_data/serial-omap.h b/include/linux/platform_data/serial-omap.h
index c860c1b314c0..d09275f3cde3 100644
--- a/include/linux/platform_data/serial-omap.h
+++ b/include/linux/platform_data/serial-omap.h
@@ -38,9 +38,6 @@ struct omap_uart_port_info {
38 unsigned int dma_rx_timeout; 38 unsigned int dma_rx_timeout;
39 unsigned int autosuspend_timeout; 39 unsigned int autosuspend_timeout;
40 unsigned int dma_rx_poll_rate; 40 unsigned int dma_rx_poll_rate;
41 int DTR_gpio;
42 int DTR_inverted;
43 int DTR_present;
44 41
45 int (*get_context_loss_count)(struct device *); 42 int (*get_context_loss_count)(struct device *);
46 void (*enable_wakeup)(struct device *, bool); 43 void (*enable_wakeup)(struct device *, bool);