Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull ARM SoC fixes from Olof Johansson:
"These are a little later than I planned on since I got caught up with
handling merges for 3.11 most of the week.

Another week, another batch of fixes for arm-soc platforms.

Again, nothing controversial. A few more than would be ideal, but all
are valid fixes. In particular the prima2 panic patch is critical
since it fixes a problem where multiplatform kernels panic on all but
prima2 hardware."

* tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
ARM: SAMSUNG: pm: Adjust for pinctrl- and DT-enabled platforms
ARM: prima2: fix incorrect panic usage
arm: mvebu: armada-xp-{gp,openblocks-ax3-4}: specify PCIe range
ARM: Kirkwood: handle mv88f6282 cpu in __kirkwood_variant().
ARM: omap3: clock: fix wrong container_of in clock36xx.c
ARM: dts: OMAP5: Fix missing PWM capability to timer nodes
ARM: dts: omap4-panda|sdp: Fix mux for twl6030 IRQ pin and msecure line
ARM: dts: AM33xx: Fix properties on gpmc node
arm: omap2: fix AM33xx hwmod infos for UART2
ARM: OMAP3: Fix iva2_pwrdm settings for 3703

+2 -2
arch/arm/boot/dts/am33xx.dtsi
··· 409 409 ti,hwmods = "gpmc"; 410 410 reg = <0x50000000 0x2000>; 411 411 interrupts = <100>; 412 - num-cs = <7>; 413 - num-waitpins = <2>; 412 + gpmc,num-cs = <7>; 413 + gpmc,num-waitpins = <2>; 414 414 #address-cells = <2>; 415 415 #size-cells = <1>; 416 416 status = "disabled";
+3 -2
arch/arm/boot/dts/armada-xp-gp.dts
··· 39 39 }; 40 40 41 41 soc { 42 - ranges = <0 0 0xd0000000 0x100000 43 - 0xf0000000 0 0xf0000000 0x1000000>; 42 + ranges = <0 0 0xd0000000 0x100000 /* Internal registers 1MiB */ 43 + 0xe0000000 0 0xe0000000 0x8100000 /* PCIe */ 44 + 0xf0000000 0 0xf0000000 0x1000000 /* Device Bus, NOR 16MiB */>; 44 45 45 46 internal-regs { 46 47 serial@12000 {
+3 -2
arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts
··· 27 27 }; 28 28 29 29 soc { 30 - ranges = <0 0 0xd0000000 0x100000 31 - 0xf0000000 0 0xf0000000 0x8000000>; 30 + ranges = <0 0 0xd0000000 0x100000 /* Internal registers 1MiB */ 31 + 0xe0000000 0 0xe0000000 0x8100000 /* PCIe */ 32 + 0xf0000000 0 0xf0000000 0x8000000 /* Device Bus, NOR 128MiB */>; 32 33 33 34 internal-regs { 34 35 serial@12000 {
+20
arch/arm/boot/dts/omap4-panda-common.dtsi
··· 56 56 }; 57 57 }; 58 58 59 + &omap4_pmx_wkup { 60 + pinctrl-names = "default"; 61 + pinctrl-0 = < 62 + &twl6030_wkup_pins 63 + >; 64 + 65 + twl6030_wkup_pins: pinmux_twl6030_wkup_pins { 66 + pinctrl-single,pins = < 67 + 0x14 0x2 /* fref_clk0_out.sys_drm_msecure OUTPUT | MODE2 */ 68 + >; 69 + }; 70 + }; 71 + 59 72 &omap4_pmx_core { 60 73 pinctrl-names = "default"; 61 74 pinctrl-0 = < 75 + &twl6030_pins 62 76 &twl6040_pins 63 77 &mcpdm_pins 64 78 &mcbsp1_pins 65 79 &dss_hdmi_pins 66 80 &tpd12s015_pins 67 81 >; 82 + 83 + twl6030_pins: pinmux_twl6030_pins { 84 + pinctrl-single,pins = < 85 + 0x15e 0x4118 /* sys_nirq1.sys_nirq1 OMAP_WAKEUP_EN | INPUT_PULLUP | MODE0 */ 86 + >; 87 + }; 68 88 69 89 twl6040_pins: pinmux_twl6040_pins { 70 90 pinctrl-single,pins = <
+20
arch/arm/boot/dts/omap4-sdp.dts
··· 142 142 }; 143 143 }; 144 144 145 + &omap4_pmx_wkup { 146 + pinctrl-names = "default"; 147 + pinctrl-0 = < 148 + &twl6030_wkup_pins 149 + >; 150 + 151 + twl6030_wkup_pins: pinmux_twl6030_wkup_pins { 152 + pinctrl-single,pins = < 153 + 0x14 0x2 /* fref_clk0_out.sys_drm_msecure OUTPUT | MODE2 */ 154 + >; 155 + }; 156 + }; 157 + 145 158 &omap4_pmx_core { 146 159 pinctrl-names = "default"; 147 160 pinctrl-0 = < 161 + &twl6030_pins 148 162 &twl6040_pins 149 163 &mcpdm_pins 150 164 &dmic_pins ··· 190 176 pinctrl-single,pins = < 191 177 0x11c 0x100 /* uart4_rx.uart4_rx INPUT | MODE0 */ 192 178 0x11e 0 /* uart4_tx.uart4_tx OUTPUT | MODE0 */ 179 + >; 180 + }; 181 + 182 + twl6030_pins: pinmux_twl6030_pins { 183 + pinctrl-single,pins = < 184 + 0x15e 0x4118 /* sys_nirq1.sys_nirq1 OMAP_WAKEUP_EN | INPUT_PULLUP | MODE0 */ 193 185 >; 194 186 }; 195 187
+3
arch/arm/boot/dts/omap5.dtsi
··· 538 538 interrupts = <0 41 0x4>; 539 539 ti,hwmods = "timer5"; 540 540 ti,timer-dsp; 541 + ti,timer-pwm; 541 542 }; 542 543 543 544 timer6: timer@4013a000 { ··· 575 574 reg = <0x4803e000 0x80>; 576 575 interrupts = <0 45 0x4>; 577 576 ti,hwmods = "timer9"; 577 + ti,timer-pwm; 578 578 }; 579 579 580 580 timer10: timer@48086000 { ··· 583 581 reg = <0x48086000 0x80>; 584 582 interrupts = <0 46 0x4>; 585 583 ti,hwmods = "timer10"; 584 + ti,timer-pwm; 586 585 }; 587 586 588 587 timer11: timer@48088000 {
+3 -2
arch/arm/mach-kirkwood/mpp.c
··· 22 22 23 23 kirkwood_pcie_id(&dev, &rev); 24 24 25 - if ((dev == MV88F6281_DEV_ID && rev >= MV88F6281_REV_A0) || 26 - (dev == MV88F6282_DEV_ID)) 25 + if (dev == MV88F6281_DEV_ID && rev >= MV88F6281_REV_A0) 27 26 return MPP_F6281_MASK; 27 + if (dev == MV88F6282_DEV_ID) 28 + return MPP_F6282_MASK; 28 29 if (dev == MV88F6192_DEV_ID && rev >= MV88F6192_REV_A0) 29 30 return MPP_F6192_MASK; 30 31 if (dev == MV88F6180_DEV_ID)
+9 -9
arch/arm/mach-omap2/clock36xx.c
··· 20 20 21 21 #include <linux/kernel.h> 22 22 #include <linux/clk.h> 23 + #include <linux/clk-provider.h> 23 24 #include <linux/io.h> 24 25 25 26 #include "clock.h" 26 27 #include "clock36xx.h" 27 - 28 + #define to_clk_divider(_hw) container_of(_hw, struct clk_divider, hw) 28 29 29 30 /** 30 31 * omap36xx_pwrdn_clk_enable_with_hsdiv_restore - enable clocks suffering ··· 40 39 */ 41 40 int omap36xx_pwrdn_clk_enable_with_hsdiv_restore(struct clk_hw *clk) 42 41 { 43 - struct clk_hw_omap *parent; 42 + struct clk_divider *parent; 44 43 struct clk_hw *parent_hw; 45 - u32 dummy_v, orig_v, clksel_shift; 44 + u32 dummy_v, orig_v; 46 45 int ret; 47 46 48 47 /* Clear PWRDN bit of HSDIVIDER */ 49 48 ret = omap2_dflt_clk_enable(clk); 50 49 51 50 parent_hw = __clk_get_hw(__clk_get_parent(clk->clk)); 52 - parent = to_clk_hw_omap(parent_hw); 51 + parent = to_clk_divider(parent_hw); 53 52 54 53 /* Restore the dividers */ 55 54 if (!ret) { 56 - clksel_shift = __ffs(parent->clksel_mask); 57 - orig_v = __raw_readl(parent->clksel_reg); 55 + orig_v = __raw_readl(parent->reg); 58 56 dummy_v = orig_v; 59 57 60 58 /* Write any other value different from the Read value */ 61 - dummy_v ^= (1 << clksel_shift); 62 - __raw_writel(dummy_v, parent->clksel_reg); 59 + dummy_v ^= (1 << parent->shift); 60 + __raw_writel(dummy_v, parent->reg); 63 61 64 62 /* Write the original divider */ 65 - __raw_writel(orig_v, parent->clksel_reg); 63 + __raw_writel(orig_v, parent->reg); 66 64 } 67 65 68 66 return ret;
+8 -1
arch/arm/mach-omap2/omap_hwmod_33xx_data.c
··· 2007 2007 }, 2008 2008 }; 2009 2009 2010 + /* uart2 */ 2011 + static struct omap_hwmod_dma_info uart2_edma_reqs[] = { 2012 + { .name = "tx", .dma_req = 28, }, 2013 + { .name = "rx", .dma_req = 29, }, 2014 + { .dma_req = -1 } 2015 + }; 2016 + 2010 2017 static struct omap_hwmod_irq_info am33xx_uart2_irqs[] = { 2011 2018 { .irq = 73 + OMAP_INTC_START, }, 2012 2019 { .irq = -1 }, ··· 2025 2018 .clkdm_name = "l4ls_clkdm", 2026 2019 .flags = HWMOD_SWSUP_SIDLE_ACT, 2027 2020 .mpu_irqs = am33xx_uart2_irqs, 2028 - .sdma_reqs = uart1_edma_reqs, 2021 + .sdma_reqs = uart2_edma_reqs, 2029 2022 .main_clk = "dpll_per_m2_div4_ck", 2030 2023 .prcm = { 2031 2024 .omap4 = {
+4 -2
arch/arm/mach-omap2/pm34xx.c
··· 546 546 /* Clear any pending PRCM interrupts */ 547 547 omap2_prm_write_mod_reg(0, OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET); 548 548 549 - if (omap3_has_iva()) 550 - omap3_iva_idle(); 549 + /* 550 + * We need to idle iva2_pwrdm even on am3703 with no iva2. 551 + */ 552 + omap3_iva_idle(); 551 553 552 554 omap3_d2d_idle(); 553 555 }
+4 -2
arch/arm/mach-prima2/pm.c
··· 101 101 struct device_node *np; 102 102 103 103 np = of_find_matching_node(NULL, pwrc_ids); 104 - if (!np) 105 - panic("unable to find compatible pwrc node in dtb\n"); 104 + if (!np) { 105 + pr_err("unable to find compatible sirf pwrc node in dtb\n"); 106 + return -ENOENT; 107 + } 106 108 107 109 /* 108 110 * pwrc behind rtciobrg is not located in memory space
+4 -2
arch/arm/mach-prima2/rstc.c
··· 28 28 struct device_node *np; 29 29 30 30 np = of_find_matching_node(NULL, rstc_ids); 31 - if (!np) 32 - panic("unable to find compatible rstc node in dtb\n"); 31 + if (!np) { 32 + pr_err("unable to find compatible sirf rstc node in dtb\n"); 33 + return -ENOENT; 34 + } 33 35 34 36 sirfsoc_rstc_base = of_iomap(np, 0); 35 37 if (!sirfsoc_rstc_base)
+13 -5
arch/arm/plat-samsung/pm.c
··· 16 16 #include <linux/suspend.h> 17 17 #include <linux/errno.h> 18 18 #include <linux/delay.h> 19 + #include <linux/of.h> 19 20 #include <linux/serial_core.h> 20 21 #include <linux/io.h> 21 22 ··· 262 261 * require a full power-cycle) 263 262 */ 264 263 265 - if (!any_allowed(s3c_irqwake_intmask, s3c_irqwake_intallow) && 264 + if (!of_have_populated_dt() && 265 + !any_allowed(s3c_irqwake_intmask, s3c_irqwake_intallow) && 266 266 !any_allowed(s3c_irqwake_eintmask, s3c_irqwake_eintallow)) { 267 267 printk(KERN_ERR "%s: No wake-up sources!\n", __func__); 268 268 printk(KERN_ERR "%s: Aborting sleep\n", __func__); ··· 272 270 273 271 /* save all necessary core registers not covered by the drivers */ 274 272 275 - samsung_pm_save_gpios(); 276 - samsung_pm_saved_gpios(); 273 + if (!of_have_populated_dt()) { 274 + samsung_pm_save_gpios(); 275 + samsung_pm_saved_gpios(); 276 + } 277 + 277 278 s3c_pm_save_uarts(); 278 279 s3c_pm_save_core(); 279 280 ··· 315 310 316 311 s3c_pm_restore_core(); 317 312 s3c_pm_restore_uarts(); 318 - samsung_pm_restore_gpios(); 319 - s3c_pm_restored_gpios(); 313 + 314 + if (!of_have_populated_dt()) { 315 + samsung_pm_restore_gpios(); 316 + s3c_pm_restored_gpios(); 317 + } 320 318 321 319 s3c_pm_debug_init(); 322 320