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

Pull ARM SoC fixes from from Olof Johansson:
"A collection of fixes for ARM platforms. A little large due to us
missing to do one last week, but there's nothing in particular here
that is in itself large and scary.

Mostly a handful of smaller fixes all over the place. The majority is
made up of fixes for OMAP, but there are a few for others as well. In
particular, there was a decision to rename a binding for the Broadcom
pinctrl block that we need to go in before the final release since we
then treat it as ABI"

* tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
ARM: dts: omap3-gta04: Add ti,omap36xx to compatible property to avoid problems with booting
ARM: tegra: add LED options back into tegra_defconfig
ARM: dts: omap3-igep: fix boot fail due wrong compatible match
ARM: OMAP3: Fix pinctrl interrupts for core2
pinctrl: Rename Broadcom Capri pinctrl binding
pinctrl: refer to updated dt binding string.
Update dtsi with new pinctrl compatible string
ARM: OMAP: Kill warning in CPUIDLE code with !CONFIG_SMP
ARM: OMAP2+: Add support for thumb mode on DT booted N900
ARM: OMAP2+: clock: fix clkoutx2 with CLK_SET_RATE_PARENT
ARM: OMAP4: hwmod: Fix SOFTRESET logic for OMAP4
ARM: DRA7: hwmod data: correct the sysc data for spinlock
ARM: OMAP5: PRM: Fix reboot handling
ARM: sunxi: dt: Change the touchscreen compatibles
ARM: sun7i: dt: Fix interrupt trigger types

+4 -4
Documentation/devicetree/bindings/pinctrl/brcm,capri-pinctrl.txt Documentation/devicetree/bindings/pinctrl/brcm,bcm11351-pinctrl.txt
··· 1 - Broadcom Capri Pin Controller 1 + Broadcom BCM281xx Pin Controller 2 2 3 3 This is a pin controller for the Broadcom BCM281xx SoC family, which includes 4 4 BCM11130, BCM11140, BCM11351, BCM28145, and BCM28155 SoCs. ··· 7 7 8 8 Required Properties: 9 9 10 - - compatible: Must be "brcm,capri-pinctrl". 10 + - compatible: Must be "brcm,bcm11351-pinctrl" 11 11 - reg: Base address of the PAD Controller register block and the size 12 12 of the block. 13 13 14 14 For example, the following is the bare minimum node: 15 15 16 16 pinctrl@35004800 { 17 - compatible = "brcm,capri-pinctrl"; 17 + compatible = "brcm,bcm11351-pinctrl"; 18 18 reg = <0x35004800 0x430>; 19 19 }; 20 20 ··· 119 119 Example: 120 120 // pin controller node 121 121 pinctrl@35004800 { 122 - compatible = "brcm,capri-pinctrl"; 122 + compatible = "brcmbcm11351-pinctrl"; 123 123 reg = <0x35004800 0x430>; 124 124 125 125 // pin configuration node
+1 -1
arch/arm/boot/dts/bcm11351.dtsi
··· 147 147 }; 148 148 149 149 pinctrl@35004800 { 150 - compatible = "brcm,capri-pinctrl"; 150 + compatible = "brcm,bcm11351-pinctrl"; 151 151 reg = <0x35004800 0x430>; 152 152 }; 153 153
+1 -1
arch/arm/boot/dts/omap3-gta04.dts
··· 13 13 14 14 / { 15 15 model = "OMAP3 GTA04"; 16 - compatible = "ti,omap3-gta04", "ti,omap3"; 16 + compatible = "ti,omap3-gta04", "ti,omap36xx", "ti,omap3"; 17 17 18 18 cpus { 19 19 cpu@0 {
+1 -1
arch/arm/boot/dts/omap3-igep0020.dts
··· 14 14 15 15 / { 16 16 model = "IGEPv2 (TI OMAP AM/DM37x)"; 17 - compatible = "isee,omap3-igep0020", "ti,omap3"; 17 + compatible = "isee,omap3-igep0020", "ti,omap36xx", "ti,omap3"; 18 18 19 19 leds { 20 20 pinctrl-names = "default";
+1 -1
arch/arm/boot/dts/omap3-igep0030.dts
··· 13 13 14 14 / { 15 15 model = "IGEP COM MODULE (TI OMAP AM/DM37x)"; 16 - compatible = "isee,omap3-igep0030", "ti,omap3"; 16 + compatible = "isee,omap3-igep0030", "ti,omap36xx", "ti,omap3"; 17 17 18 18 leds { 19 19 pinctrl-names = "default";
+1 -1
arch/arm/boot/dts/sun4i-a10.dtsi
··· 426 426 }; 427 427 428 428 rtp: rtp@01c25000 { 429 - compatible = "allwinner,sun4i-ts"; 429 + compatible = "allwinner,sun4i-a10-ts"; 430 430 reg = <0x01c25000 0x100>; 431 431 interrupts = <29>; 432 432 };
+1 -1
arch/arm/boot/dts/sun5i-a10s.dtsi
··· 383 383 }; 384 384 385 385 rtp: rtp@01c25000 { 386 - compatible = "allwinner,sun4i-ts"; 386 + compatible = "allwinner,sun4i-a10-ts"; 387 387 reg = <0x01c25000 0x100>; 388 388 interrupts = <29>; 389 389 };
+1 -1
arch/arm/boot/dts/sun5i-a13.dtsi
··· 346 346 }; 347 347 348 348 rtp: rtp@01c25000 { 349 - compatible = "allwinner,sun4i-ts"; 349 + compatible = "allwinner,sun4i-a10-ts"; 350 350 reg = <0x01c25000 0x100>; 351 351 interrupts = <29>; 352 352 };
+6 -6
arch/arm/boot/dts/sun7i-a20.dtsi
··· 454 454 rtc: rtc@01c20d00 { 455 455 compatible = "allwinner,sun7i-a20-rtc"; 456 456 reg = <0x01c20d00 0x20>; 457 - interrupts = <0 24 1>; 457 + interrupts = <0 24 4>; 458 458 }; 459 459 460 460 sid: eeprom@01c23800 { ··· 463 463 }; 464 464 465 465 rtp: rtp@01c25000 { 466 - compatible = "allwinner,sun4i-ts"; 466 + compatible = "allwinner,sun4i-a10-ts"; 467 467 reg = <0x01c25000 0x100>; 468 468 interrupts = <0 29 4>; 469 469 }; ··· 596 596 hstimer@01c60000 { 597 597 compatible = "allwinner,sun7i-a20-hstimer"; 598 598 reg = <0x01c60000 0x1000>; 599 - interrupts = <0 81 1>, 600 - <0 82 1>, 601 - <0 83 1>, 602 - <0 84 1>; 599 + interrupts = <0 81 4>, 600 + <0 82 4>, 601 + <0 83 4>, 602 + <0 84 4>; 603 603 clocks = <&ahb_gates 28>; 604 604 }; 605 605
+3
arch/arm/configs/tegra_defconfig
··· 204 204 CONFIG_MMC_SDHCI=y 205 205 CONFIG_MMC_SDHCI_PLTFM=y 206 206 CONFIG_MMC_SDHCI_TEGRA=y 207 + CONFIG_NEW_LEDS=y 208 + CONFIG_LEDS_CLASS=y 207 209 CONFIG_LEDS_GPIO=y 210 + CONFIG_LEDS_TRIGGERS=y 208 211 CONFIG_LEDS_TRIGGER_TIMER=y 209 212 CONFIG_LEDS_TRIGGER_ONESHOT=y 210 213 CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+2
arch/arm/mach-omap2/cclock3xxx_data.c
··· 433 433 .enable = &omap2_dflt_clk_enable, 434 434 .disable = &omap2_dflt_clk_disable, 435 435 .is_enabled = &omap2_dflt_clk_is_enabled, 436 + .set_rate = &omap3_clkoutx2_set_rate, 436 437 .recalc_rate = &omap3_clkoutx2_recalc, 438 + .round_rate = &omap3_clkoutx2_round_rate, 437 439 }; 438 440 439 441 static const struct clk_ops dpll4_m5x2_ck_3630_ops = {
+5 -3
arch/arm/mach-omap2/cpuidle44xx.c
··· 23 23 #include "prm.h" 24 24 #include "clockdomain.h" 25 25 26 + #define MAX_CPUS 2 27 + 26 28 /* Machine specific information */ 27 29 struct idle_statedata { 28 30 u32 cpu_state; ··· 50 48 }, 51 49 }; 52 50 53 - static struct powerdomain *mpu_pd, *cpu_pd[NR_CPUS]; 54 - static struct clockdomain *cpu_clkdm[NR_CPUS]; 51 + static struct powerdomain *mpu_pd, *cpu_pd[MAX_CPUS]; 52 + static struct clockdomain *cpu_clkdm[MAX_CPUS]; 55 53 56 54 static atomic_t abort_barrier; 57 - static bool cpu_done[NR_CPUS]; 55 + static bool cpu_done[MAX_CPUS]; 58 56 static struct idle_statedata *state_ptr = &omap4_idle_data[0]; 59 57 60 58 /* Private functions */
+78 -16
arch/arm/mach-omap2/dpll3xxx.c
··· 623 623 624 624 /* Clock control for DPLL outputs */ 625 625 626 - /** 627 - * omap3_clkoutx2_recalc - recalculate DPLL X2 output virtual clock rate 628 - * @clk: DPLL output struct clk 629 - * 630 - * Using parent clock DPLL data, look up DPLL state. If locked, set our 631 - * rate to the dpll_clk * 2; otherwise, just use dpll_clk. 632 - */ 633 - unsigned long omap3_clkoutx2_recalc(struct clk_hw *hw, 634 - unsigned long parent_rate) 626 + /* Find the parent DPLL for the given clkoutx2 clock */ 627 + static struct clk_hw_omap *omap3_find_clkoutx2_dpll(struct clk_hw *hw) 635 628 { 636 - const struct dpll_data *dd; 637 - unsigned long rate; 638 - u32 v; 639 629 struct clk_hw_omap *pclk = NULL; 640 630 struct clk *parent; 641 - 642 - if (!parent_rate) 643 - return 0; 644 631 645 632 /* Walk up the parents of clk, looking for a DPLL */ 646 633 do { ··· 643 656 /* clk does not have a DPLL as a parent? error in the clock data */ 644 657 if (!pclk) { 645 658 WARN_ON(1); 646 - return 0; 659 + return NULL; 647 660 } 661 + 662 + return pclk; 663 + } 664 + 665 + /** 666 + * omap3_clkoutx2_recalc - recalculate DPLL X2 output virtual clock rate 667 + * @clk: DPLL output struct clk 668 + * 669 + * Using parent clock DPLL data, look up DPLL state. If locked, set our 670 + * rate to the dpll_clk * 2; otherwise, just use dpll_clk. 671 + */ 672 + unsigned long omap3_clkoutx2_recalc(struct clk_hw *hw, 673 + unsigned long parent_rate) 674 + { 675 + const struct dpll_data *dd; 676 + unsigned long rate; 677 + u32 v; 678 + struct clk_hw_omap *pclk = NULL; 679 + 680 + if (!parent_rate) 681 + return 0; 682 + 683 + pclk = omap3_find_clkoutx2_dpll(hw); 684 + 685 + if (!pclk) 686 + return 0; 648 687 649 688 dd = pclk->dpll_data; 650 689 ··· 683 670 else 684 671 rate = parent_rate * 2; 685 672 return rate; 673 + } 674 + 675 + int omap3_clkoutx2_set_rate(struct clk_hw *hw, unsigned long rate, 676 + unsigned long parent_rate) 677 + { 678 + return 0; 679 + } 680 + 681 + long omap3_clkoutx2_round_rate(struct clk_hw *hw, unsigned long rate, 682 + unsigned long *prate) 683 + { 684 + const struct dpll_data *dd; 685 + u32 v; 686 + struct clk_hw_omap *pclk = NULL; 687 + 688 + if (!*prate) 689 + return 0; 690 + 691 + pclk = omap3_find_clkoutx2_dpll(hw); 692 + 693 + if (!pclk) 694 + return 0; 695 + 696 + dd = pclk->dpll_data; 697 + 698 + /* TYPE J does not have a clkoutx2 */ 699 + if (dd->flags & DPLL_J_TYPE) { 700 + *prate = __clk_round_rate(__clk_get_parent(pclk->hw.clk), rate); 701 + return *prate; 702 + } 703 + 704 + WARN_ON(!dd->enable_mask); 705 + 706 + v = omap2_clk_readl(pclk, dd->control_reg) & dd->enable_mask; 707 + v >>= __ffs(dd->enable_mask); 708 + 709 + /* If in bypass, the rate is fixed to the bypass rate*/ 710 + if (v != OMAP3XXX_EN_DPLL_LOCKED) 711 + return *prate; 712 + 713 + if (__clk_get_flags(hw->clk) & CLK_SET_RATE_PARENT) { 714 + unsigned long best_parent; 715 + 716 + best_parent = (rate / 2); 717 + *prate = __clk_round_rate(__clk_get_parent(hw->clk), 718 + best_parent); 719 + } 720 + 721 + return *prate * 2; 686 722 } 687 723 688 724 /* OMAP3/4 non-CORE DPLL clkops */
+14 -12
arch/arm/mach-omap2/omap_hwmod.c
··· 1947 1947 goto dis_opt_clks; 1948 1948 1949 1949 _write_sysconfig(v, oh); 1950 + 1951 + if (oh->class->sysc->srst_udelay) 1952 + udelay(oh->class->sysc->srst_udelay); 1953 + 1954 + c = _wait_softreset_complete(oh); 1955 + if (c == MAX_MODULE_SOFTRESET_WAIT) { 1956 + pr_warning("omap_hwmod: %s: softreset failed (waited %d usec)\n", 1957 + oh->name, MAX_MODULE_SOFTRESET_WAIT); 1958 + ret = -ETIMEDOUT; 1959 + goto dis_opt_clks; 1960 + } else { 1961 + pr_debug("omap_hwmod: %s: softreset in %d usec\n", oh->name, c); 1962 + } 1963 + 1950 1964 ret = _clear_softreset(oh, &v); 1951 1965 if (ret) 1952 1966 goto dis_opt_clks; 1953 1967 1954 1968 _write_sysconfig(v, oh); 1955 1969 1956 - if (oh->class->sysc->srst_udelay) 1957 - udelay(oh->class->sysc->srst_udelay); 1958 - 1959 - c = _wait_softreset_complete(oh); 1960 - if (c == MAX_MODULE_SOFTRESET_WAIT) 1961 - pr_warning("omap_hwmod: %s: softreset failed (waited %d usec)\n", 1962 - oh->name, MAX_MODULE_SOFTRESET_WAIT); 1963 - else 1964 - pr_debug("omap_hwmod: %s: softreset in %d usec\n", oh->name, c); 1965 - 1966 1970 /* 1967 1971 * XXX add _HWMOD_STATE_WEDGED for modules that don't come back from 1968 1972 * _wait_target_ready() or _reset() 1969 1973 */ 1970 - 1971 - ret = (c == MAX_MODULE_SOFTRESET_WAIT) ? -ETIMEDOUT : 0; 1972 1974 1973 1975 dis_opt_clks: 1974 1976 if (oh->flags & HWMOD_CONTROL_OPT_CLKS_IN_RESET)
+4 -5
arch/arm/mach-omap2/omap_hwmod_7xx_data.c
··· 1365 1365 .rev_offs = 0x0000, 1366 1366 .sysc_offs = 0x0010, 1367 1367 .syss_offs = 0x0014, 1368 - .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | 1369 - SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE | 1370 - SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), 1371 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 1372 - SIDLE_SMART_WKUP), 1368 + .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP | 1369 + SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | 1370 + SYSS_HAS_RESET_STATUS), 1371 + .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 1373 1372 .sysc_fields = &omap_hwmod_sysc_type1, 1374 1373 }; 1375 1374
+20 -1
arch/arm/mach-omap2/pdata-quirks.c
··· 22 22 #include "common-board-devices.h" 23 23 #include "dss-common.h" 24 24 #include "control.h" 25 + #include "omap-secure.h" 26 + #include "soc.h" 25 27 26 28 struct pdata_init { 27 29 const char *compatible; ··· 171 169 omap_ctrl_writel(v, AM35XX_CONTROL_IP_SW_RESET); 172 170 omap_ctrl_readl(AM35XX_CONTROL_IP_SW_RESET); /* OCP barrier */ 173 171 } 172 + 173 + static void __init nokia_n900_legacy_init(void) 174 + { 175 + hsmmc2_internal_input_clk(); 176 + 177 + if (omap_type() == OMAP2_DEVICE_TYPE_SEC) { 178 + if (IS_ENABLED(CONFIG_ARM_ERRATA_430973)) { 179 + pr_info("RX-51: Enabling ARM errata 430973 workaround\n"); 180 + /* set IBE to 1 */ 181 + rx51_secure_update_aux_cr(BIT(6), 0); 182 + } else { 183 + pr_warning("RX-51: Not enabling ARM errata 430973 workaround\n"); 184 + pr_warning("Thumb binaries may crash randomly without this workaround\n"); 185 + } 186 + } 187 + } 174 188 #endif /* CONFIG_ARCH_OMAP3 */ 175 189 176 190 #ifdef CONFIG_ARCH_OMAP4 ··· 257 239 #endif 258 240 #ifdef CONFIG_ARCH_OMAP3 259 241 OF_DEV_AUXDATA("ti,omap3-padconf", 0x48002030, "48002030.pinmux", &pcs_pdata), 242 + OF_DEV_AUXDATA("ti,omap3-padconf", 0x480025a0, "480025a0.pinmux", &pcs_pdata), 260 243 OF_DEV_AUXDATA("ti,omap3-padconf", 0x48002a00, "48002a00.pinmux", &pcs_pdata), 261 244 /* Only on am3517 */ 262 245 OF_DEV_AUXDATA("ti,davinci_mdio", 0x5c030000, "davinci_mdio.0", NULL), ··· 278 259 static struct pdata_init pdata_quirks[] __initdata = { 279 260 #ifdef CONFIG_ARCH_OMAP3 280 261 { "compulab,omap3-sbc-t3730", omap3_sbc_t3730_legacy_init, }, 281 - { "nokia,omap3-n900", hsmmc2_internal_input_clk, }, 262 + { "nokia,omap3-n900", nokia_n900_legacy_init, }, 282 263 { "nokia,omap3-n9", hsmmc2_internal_input_clk, }, 283 264 { "nokia,omap3-n950", hsmmc2_internal_input_clk, }, 284 265 { "isee,omap3-igep0020", omap3_igep0020_legacy_init, },
+2 -2
arch/arm/mach-omap2/prminst44xx.c
··· 183 183 OMAP4_PRM_RSTCTRL_OFFSET); 184 184 v |= OMAP4430_RST_GLOBAL_WARM_SW_MASK; 185 185 omap4_prminst_write_inst_reg(v, OMAP4430_PRM_PARTITION, 186 - OMAP4430_PRM_DEVICE_INST, 186 + dev_inst, 187 187 OMAP4_PRM_RSTCTRL_OFFSET); 188 188 189 189 /* OCP barrier */ 190 190 v = omap4_prminst_read_inst_reg(OMAP4430_PRM_PARTITION, 191 - OMAP4430_PRM_DEVICE_INST, 191 + dev_inst, 192 192 OMAP4_PRM_RSTCTRL_OFFSET); 193 193 }
+1 -1
drivers/pinctrl/pinctrl-capri.c
··· 1435 1435 } 1436 1436 1437 1437 static struct of_device_id capri_pinctrl_of_match[] = { 1438 - { .compatible = "brcm,capri-pinctrl", }, 1438 + { .compatible = "brcm,bcm11351-pinctrl", }, 1439 1439 { }, 1440 1440 }; 1441 1441
+4
include/linux/clk/ti.h
··· 245 245 void omap2_init_clk_clkdm(struct clk_hw *clk); 246 246 unsigned long omap3_clkoutx2_recalc(struct clk_hw *hw, 247 247 unsigned long parent_rate); 248 + int omap3_clkoutx2_set_rate(struct clk_hw *hw, unsigned long rate, 249 + unsigned long parent_rate); 250 + long omap3_clkoutx2_round_rate(struct clk_hw *hw, unsigned long rate, 251 + unsigned long *prate); 248 252 int omap2_clkops_enable_clkdm(struct clk_hw *hw); 249 253 void omap2_clkops_disable_clkdm(struct clk_hw *hw); 250 254 int omap2_clk_disable_autoidle_all(void);