History

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

Pull ARM SoC fixes from Arnd Bergmann: "The majority of the fixes this time are for OMAP hardware, here is a breakdown of the significant changes: Various device tree bug fixes: - TI am57xx boards need a voltage level fix to avoid damaging SD cards - vf610-bk4 fails to detect its flash due to an incorrect description - meson-g12a USB phy configuration fails - meson-g12b reboot should not power off the SD card - Some corrections for apparently harmless differences from the documentation. Regression fixes: - ams-delta FIQ interrupts broke in 5.3 - TI am3/am4 mmc controllers broke in 5.2 The logic_pio driver (used on some Huawei ARM servers) got a few bug fixes for reliability. And a couple of compile-time warning fixes" * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (26 commits) soc: ixp4xx: Protect IXP4xx SoC drivers by ARCH_IXP4XX || COMPILE_TEST soc: ti: pm33xx: Make two symbols static soc: ti: pm33xx: Fix static checker warnings ARM: OMAP: dma: Mark expected switch fall-throughs ARM: dts: Fix incomplete dts data for am3 and am4 mmc bus: ti-sysc: Simplify cleanup upon failures in sysc_probe() ARM: OMAP1: ams-delta-fiq: Fix missing irq_ack ARM: dts: dra74x: Fix iodelay configuration for mmc3 ARM: dts: am335x: Fix UARTs length ARM: OMAP2+: Fix omap4 errata warning on other SoCs bus: hisi_lpc: Add .remove method to avoid driver unbind crash bus: hisi_lpc: Unregister logical PIO range to avoid potential use-after-free lib: logic_pio: Add logic_pio_unregister_range() lib: logic_pio: Avoid possible overlap for unregistering regions lib: logic_pio: Fix RCU usage arm64: dts: amlogic: odroid-n2: keep SD card regulator always on arm64: dts: meson-g12a-sei510: enable IR controller arm64: dts: meson-g12a: add missing dwc2 phy-names ARM: dts: vf610-bk4: Fix qspi node description ARM: dts: Fix incorrect dcan register mapping for am3, am4 and dra7 ...

Linus Torvalds committed 7 years ago

Commit e8d67662 parents 8fb8e9e 7a6c9db29 files · +250 −135Browse files

Unified · Split

29 files
  1. .mailmap +2 −0
  2. MAINTAINERS +5 −5
  3. arch/arm/boot/dts/am33xx-l4.dtsi +10 −6
  4. arch/arm/boot/dts/am33xx.dtsi +26 −6
  5. arch/arm/boot/dts/am4372.dtsi +26 −6
  6. arch/arm/boot/dts/am437x-l4.dtsi +4 −0
  7. arch/arm/boot/dts/am571x-idk.dts +1 −6
  8. arch/arm/boot/dts/am572x-idk.dts +1 −6
  9. arch/arm/boot/dts/am574x-idk.dts +1 −6
  10. arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi +2 −1
  11. arch/arm/boot/dts/am57xx-beagle-x15-revb1.dts +1 −6
  12. arch/arm/boot/dts/am57xx-beagle-x15-revc.dts +1 −6
  13. arch/arm/boot/dts/dra7-evm.dts +1 −1
  14. arch/arm/boot/dts/dra7-l4.dtsi +3 −3
  15. arch/arm/boot/dts/dra74x-mmc-iodelay.dtsi +25 −25
  16. arch/arm/boot/dts/vf610-bk4.dts +2 −2
  17. arch/arm/mach-omap1/ams-delta-fiq-handler.S +2 −1
  18. arch/arm/mach-omap1/ams-delta-fiq.c +1 −3
  19. arch/arm/mach-omap2/omap4-common.c +3 −0
  20. arch/arm/mach-omap2/omap_hwmod_7xx_data.c +2 −1
  21. arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts +6 −0
  22. arch/arm64/boot/dts/amlogic/meson-g12a.dtsi +1 −0
  23. arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts +1 −0
  24. drivers/bus/hisi_lpc.c +41 −6
  25. drivers/bus/ti-sysc.c +11 −13
  26. drivers/soc/ixp4xx/Kconfig +4 −0
  27. drivers/soc/ti/pm33xx.c +12 −7
  28. include/linux/logic_pio.h +1 −0
  29. lib/logic_pio.c +54 −19
.mailmap+2−0
@@ -160,6 +160,8 @@ Matt Ranostay <mranostay@gmail.com> Matthew Ranostay <mranostay@embeddedalley.co · 159 unmodified lines
160Matt Ranostay <mranostay@gmail.com> <matt.ranostay@intel.com>160Matt Ranostay <mranostay@gmail.com> <matt.ranostay@intel.com>
161Matt Ranostay <matt.ranostay@konsulko.com> <matt@ranostay.consulting>161Matt Ranostay <matt.ranostay@konsulko.com> <matt@ranostay.consulting>
162Matt Redfearn <matt.redfearn@mips.com> <matt.redfearn@imgtec.com>162Matt Redfearn <matt.redfearn@mips.com> <matt.redfearn@imgtec.com>
163Maxime Ripard <mripard@kernel.org> <maxime.ripard@bootlin.com>
164Maxime Ripard <mripard@kernel.org> <maxime.ripard@free-electrons.com>
163Mayuresh Janorkar <mayur@ti.com>165Mayuresh Janorkar <mayur@ti.com>
164Michael Buesch <m@bues.ch>166Michael Buesch <m@bues.ch>
165Michel Dänzer <michel@tungstengraphics.com>167Michel Dänzer <michel@tungstengraphics.com>
MAINTAINERS+5−5
@@ -683,7 +683,7 @@ S: Maintained · 682 unmodified lines
683F: drivers/crypto/sunxi-ss/683F: drivers/crypto/sunxi-ss/
684 684
685ALLWINNER VPU DRIVER685ALLWINNER VPU DRIVER
686M: Maxime Ripard <maxime.ripard@bootlin.com>686M: Maxime Ripard <mripard@kernel.org>
687M: Paul Kocialkowski <paul.kocialkowski@bootlin.com>687M: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
688L: linux-media@vger.kernel.org688L: linux-media@vger.kernel.org
689S: Maintained689S: Maintained
@@ -1408,7 +1408,7 @@ S: Maintained · 718 unmodified lines
1408F: drivers/clk/sunxi/1408F: drivers/clk/sunxi/
1409 1409
1410ARM/Allwinner sunXi SoC support1410ARM/Allwinner sunXi SoC support
1411M: Maxime Ripard <maxime.ripard@bootlin.com>1411M: Maxime Ripard <mripard@kernel.org>
1412M: Chen-Yu Tsai <wens@csie.org>1412M: Chen-Yu Tsai <wens@csie.org>
1413L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)1413L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1414S: Maintained1414S: Maintained
@@ -3577,7 +3577,7 @@ F: Documentation/filesystems/caching/cachefiles.txt · 2162 unmodified lines
3577F: fs/cachefiles/3577F: fs/cachefiles/
3578 3578
3579CADENCE MIPI-CSI2 BRIDGES3579CADENCE MIPI-CSI2 BRIDGES
3580M: Maxime Ripard <maxime.ripard@bootlin.com>3580M: Maxime Ripard <mripard@kernel.org>
3581L: linux-media@vger.kernel.org3581L: linux-media@vger.kernel.org
3582S: Maintained3582S: Maintained
3583F: Documentation/devicetree/bindings/media/cdns,*.txt3583F: Documentation/devicetree/bindings/media/cdns,*.txt
@@ -5295,7 +5295,7 @@ F: include/linux/vga* · 1711 unmodified lines
5295 5295
5296DRM DRIVERS AND MISC GPU PATCHES5296DRM DRIVERS AND MISC GPU PATCHES
5297M: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>5297M: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
5298M: Maxime Ripard <maxime.ripard@bootlin.com>5298M: Maxime Ripard <mripard@kernel.org>
5299M: Sean Paul <sean@poorly.run>5299M: Sean Paul <sean@poorly.run>
5300W: https://01.org/linuxgraphics/gfx-docs/maintainer-tools/drm-misc.html5300W: https://01.org/linuxgraphics/gfx-docs/maintainer-tools/drm-misc.html
5301S: Maintained5301S: Maintained
@@ -5308,7 +5308,7 @@ F: include/uapi/drm/drm* · 6 unmodified lines
5308F: include/linux/vga*5308F: include/linux/vga*
5309 5309
5310DRM DRIVERS FOR ALLWINNER A105310DRM DRIVERS FOR ALLWINNER A10
5311M: Maxime Ripard <maxime.ripard@bootlin.com>5311M: Maxime Ripard <mripard@kernel.org>
5312L: dri-devel@lists.freedesktop.org5312L: dri-devel@lists.freedesktop.org
5313S: Supported5313S: Supported
5314F: drivers/gpu/drm/sun4i/5314F: drivers/gpu/drm/sun4i/
arch/arm/boot/dts/am33xx-l4.dtsi+10−6
@@ -185,7 +185,7 @@ · 184 unmodified lines
185 uart0: serial@0 {185 uart0: serial@0 {
186 compatible = "ti,am3352-uart", "ti,omap3-uart";186 compatible = "ti,am3352-uart", "ti,omap3-uart";
187 clock-frequency = <48000000>;187 clock-frequency = <48000000>;
188 reg = <0x0 0x2000>;188 reg = <0x0 0x1000>;
189 interrupts = <72>;189 interrupts = <72>;
190 status = "disabled";190 status = "disabled";
191 dmas = <&edma 26 0>, <&edma 27 0>;191 dmas = <&edma 26 0>, <&edma 27 0>;
@@ -934,7 +934,7 @@ · 742 unmodified lines
934 uart1: serial@0 {934 uart1: serial@0 {
935 compatible = "ti,am3352-uart", "ti,omap3-uart";935 compatible = "ti,am3352-uart", "ti,omap3-uart";
936 clock-frequency = <48000000>;936 clock-frequency = <48000000>;
937 reg = <0x0 0x2000>;937 reg = <0x0 0x1000>;
938 interrupts = <73>;938 interrupts = <73>;
939 status = "disabled";939 status = "disabled";
940 dmas = <&edma 28 0>, <&edma 29 0>;940 dmas = <&edma 28 0>, <&edma 29 0>;
@@ -966,7 +966,7 @@ · 25 unmodified lines
966 uart2: serial@0 {966 uart2: serial@0 {
967 compatible = "ti,am3352-uart", "ti,omap3-uart";967 compatible = "ti,am3352-uart", "ti,omap3-uart";
968 clock-frequency = <48000000>;968 clock-frequency = <48000000>;
969 reg = <0x0 0x2000>;969 reg = <0x0 0x1000>;
970 interrupts = <74>;970 interrupts = <74>;
971 status = "disabled";971 status = "disabled";
972 dmas = <&edma 30 0>, <&edma 31 0>;972 dmas = <&edma 30 0>, <&edma 31 0>;
@@ -1614,7 +1614,7 @@ · 641 unmodified lines
1614 uart3: serial@0 {1614 uart3: serial@0 {
1615 compatible = "ti,am3352-uart", "ti,omap3-uart";1615 compatible = "ti,am3352-uart", "ti,omap3-uart";
1616 clock-frequency = <48000000>;1616 clock-frequency = <48000000>;
1617 reg = <0x0 0x2000>;1617 reg = <0x0 0x1000>;
1618 interrupts = <44>;1618 interrupts = <44>;
1619 status = "disabled";1619 status = "disabled";
1620 };1620 };
@@ -1644,7 +1644,7 @@ · 23 unmodified lines
1644 uart4: serial@0 {1644 uart4: serial@0 {
1645 compatible = "ti,am3352-uart", "ti,omap3-uart";1645 compatible = "ti,am3352-uart", "ti,omap3-uart";
1646 clock-frequency = <48000000>;1646 clock-frequency = <48000000>;
1647 reg = <0x0 0x2000>;1647 reg = <0x0 0x1000>;
1648 interrupts = <45>;1648 interrupts = <45>;
1649 status = "disabled";1649 status = "disabled";
1650 };1650 };
@@ -1674,7 +1674,7 @@ · 23 unmodified lines
1674 uart5: serial@0 {1674 uart5: serial@0 {
1675 compatible = "ti,am3352-uart", "ti,omap3-uart";1675 compatible = "ti,am3352-uart", "ti,omap3-uart";
1676 clock-frequency = <48000000>;1676 clock-frequency = <48000000>;
1677 reg = <0x0 0x2000>;1677 reg = <0x0 0x1000>;
1678 interrupts = <46>;1678 interrupts = <46>;
1679 status = "disabled";1679 status = "disabled";
1680 };1680 };
@@ -1758,6 +1758,8 @@ · 77 unmodified lines
1758 1758
1759 target-module@cc000 { /* 0x481cc000, ap 60 46.0 */1759 target-module@cc000 { /* 0x481cc000, ap 60 46.0 */
1760 compatible = "ti,sysc-omap4", "ti,sysc";1760 compatible = "ti,sysc-omap4", "ti,sysc";
1761 reg = <0xcc020 0x4>;
1762 reg-names = "rev";
1761 ti,hwmods = "d_can0";1763 ti,hwmods = "d_can0";
1762 /* Domains (P, C): per_pwrdm, l4ls_clkdm */1764 /* Domains (P, C): per_pwrdm, l4ls_clkdm */
1763 clocks = <&l4ls_clkctrl AM3_L4LS_D_CAN0_CLKCTRL 0>,1765 clocks = <&l4ls_clkctrl AM3_L4LS_D_CAN0_CLKCTRL 0>,
@@ -1780,6 +1782,8 @@ · 16 unmodified lines
1780 1782
1781 target-module@d0000 { /* 0x481d0000, ap 62 42.0 */1783 target-module@d0000 { /* 0x481d0000, ap 62 42.0 */
1782 compatible = "ti,sysc-omap4", "ti,sysc";1784 compatible = "ti,sysc-omap4", "ti,sysc";
1785 reg = <0xd0020 0x4>;
1786 reg-names = "rev";
1783 ti,hwmods = "d_can1";1787 ti,hwmods = "d_can1";
1784 /* Domains (P, C): per_pwrdm, l4ls_clkdm */1788 /* Domains (P, C): per_pwrdm, l4ls_clkdm */
1785 clocks = <&l4ls_clkctrl AM3_L4LS_D_CAN1_CLKCTRL 0>,1789 clocks = <&l4ls_clkctrl AM3_L4LS_D_CAN1_CLKCTRL 0>,
arch/arm/boot/dts/am33xx.dtsi+26−6
@@ -234,13 +234,33 @@ · 233 unmodified lines
234 interrupt-names = "edma3_tcerrint";234 interrupt-names = "edma3_tcerrint";
235 };235 };
236 236
237 mmc3: mmc@47810000 {237 target-module@47810000 {
238 compatible = "ti,omap4-hsmmc";238 compatible = "ti,sysc-omap2", "ti,sysc";
239 ti,hwmods = "mmc3";239 ti,hwmods = "mmc3";
240 ti,needs-special-reset;240 reg = <0x478102fc 0x4>,
241 interrupts = <29>;241 <0x47810110 0x4>,
242 reg = <0x47810000 0x1000>;242 <0x47810114 0x4>;
243 status = "disabled";243 reg-names = "rev", "sysc", "syss";
244 ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
245 SYSC_OMAP2_ENAWAKEUP |
246 SYSC_OMAP2_SOFTRESET |
247 SYSC_OMAP2_AUTOIDLE)>;
248 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
249 <SYSC_IDLE_NO>,
250 <SYSC_IDLE_SMART>;
251 ti,syss-mask = <1>;
252 clocks = <&l3s_clkctrl AM3_L3S_MMC3_CLKCTRL 0>;
253 clock-names = "fck";
254 #address-cells = <1>;
255 #size-cells = <1>;
256 ranges = <0x0 0x47810000 0x1000>;
257
258 mmc3: mmc@0 {
259 compatible = "ti,omap4-hsmmc";
260 ti,needs-special-reset;
261 interrupts = <29>;
262 reg = <0x0 0x1000>;
263 };
244 };264 };
245 265
246 usb: usb@47400000 {266 usb: usb@47400000 {
arch/arm/boot/dts/am4372.dtsi+26−6
@@ -228,13 +228,33 @@ · 227 unmodified lines
228 interrupt-names = "edma3_tcerrint";228 interrupt-names = "edma3_tcerrint";
229 };229 };
230 230
231 mmc3: mmc@47810000 {231 target-module@47810000 {
232 compatible = "ti,omap4-hsmmc";232 compatible = "ti,sysc-omap2", "ti,sysc";
233 reg = <0x47810000 0x1000>;
234 ti,hwmods = "mmc3";233 ti,hwmods = "mmc3";
235 ti,needs-special-reset;234 reg = <0x478102fc 0x4>,
236 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;235 <0x47810110 0x4>,
237 status = "disabled";236 <0x47810114 0x4>;
237 reg-names = "rev", "sysc", "syss";
238 ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
239 SYSC_OMAP2_ENAWAKEUP |
240 SYSC_OMAP2_SOFTRESET |
241 SYSC_OMAP2_AUTOIDLE)>;
242 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
243 <SYSC_IDLE_NO>,
244 <SYSC_IDLE_SMART>;
245 ti,syss-mask = <1>;
246 clocks = <&l3s_clkctrl AM4_L3S_MMC3_CLKCTRL 0>;
247 clock-names = "fck";
248 #address-cells = <1>;
249 #size-cells = <1>;
250 ranges = <0x0 0x47810000 0x1000>;
251
252 mmc3: mmc@0 {
253 compatible = "ti,omap4-hsmmc";
254 ti,needs-special-reset;
255 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
256 reg = <0x0 0x1000>;
257 };
238 };258 };
239 259
240 sham: sham@53100000 {260 sham: sham@53100000 {
arch/arm/boot/dts/am437x-l4.dtsi+4−0
@@ -1574,6 +1574,8 @@ · 1573 unmodified lines
1574 1574
1575 target-module@cc000 { /* 0x481cc000, ap 50 46.0 */1575 target-module@cc000 { /* 0x481cc000, ap 50 46.0 */
1576 compatible = "ti,sysc-omap4", "ti,sysc";1576 compatible = "ti,sysc-omap4", "ti,sysc";
1577 reg = <0xcc020 0x4>;
1578 reg-names = "rev";
1577 ti,hwmods = "d_can0";1579 ti,hwmods = "d_can0";
1578 /* Domains (P, C): per_pwrdm, l4ls_clkdm */1580 /* Domains (P, C): per_pwrdm, l4ls_clkdm */
1579 clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN0_CLKCTRL 0>;1581 clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN0_CLKCTRL 0>;
@@ -1593,6 +1595,8 @@ · 13 unmodified lines
1593 1595
1594 target-module@d0000 { /* 0x481d0000, ap 52 3a.0 */1596 target-module@d0000 { /* 0x481d0000, ap 52 3a.0 */
1595 compatible = "ti,sysc-omap4", "ti,sysc";1597 compatible = "ti,sysc-omap4", "ti,sysc";
1598 reg = <0xd0020 0x4>;
1599 reg-names = "rev";
1596 ti,hwmods = "d_can1";1600 ti,hwmods = "d_can1";
1597 /* Domains (P, C): per_pwrdm, l4ls_clkdm */1601 /* Domains (P, C): per_pwrdm, l4ls_clkdm */
1598 clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN1_CLKCTRL 0>;1602 clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN1_CLKCTRL 0>;
arch/arm/boot/dts/am571x-idk.dts+1−6
@@ -175,14 +175,9 @@ · 174 unmodified lines
175};175};
176 176
177&mmc1 {177&mmc1 {
178 pinctrl-names = "default", "hs", "sdr12", "sdr25", "sdr50", "ddr50", "sdr104";178 pinctrl-names = "default", "hs";
179 pinctrl-0 = <&mmc1_pins_default_no_clk_pu>;179 pinctrl-0 = <&mmc1_pins_default_no_clk_pu>;
180 pinctrl-1 = <&mmc1_pins_hs>;180 pinctrl-1 = <&mmc1_pins_hs>;
181 pinctrl-2 = <&mmc1_pins_sdr12>;
182 pinctrl-3 = <&mmc1_pins_sdr25>;
183 pinctrl-4 = <&mmc1_pins_sdr50>;
184 pinctrl-5 = <&mmc1_pins_ddr50_rev20 &mmc1_iodelay_ddr50_conf>;
185 pinctrl-6 = <&mmc1_pins_sdr104 &mmc1_iodelay_sdr104_rev20_conf>;
186};181};
187 182
188&mmc2 {183&mmc2 {
arch/arm/boot/dts/am572x-idk.dts+1−6
@@ -16,14 +16,9 @@ · 15 unmodified lines
16};16};
17 17
18&mmc1 {18&mmc1 {
19 pinctrl-names = "default", "hs", "sdr12", "sdr25", "sdr50", "ddr50", "sdr104";19 pinctrl-names = "default", "hs";
20 pinctrl-0 = <&mmc1_pins_default_no_clk_pu>;20 pinctrl-0 = <&mmc1_pins_default_no_clk_pu>;
21 pinctrl-1 = <&mmc1_pins_hs>;21 pinctrl-1 = <&mmc1_pins_hs>;
22 pinctrl-2 = <&mmc1_pins_sdr12>;
23 pinctrl-3 = <&mmc1_pins_sdr25>;
24 pinctrl-4 = <&mmc1_pins_sdr50>;
25 pinctrl-5 = <&mmc1_pins_ddr50 &mmc1_iodelay_ddr_rev20_conf>;
26 pinctrl-6 = <&mmc1_pins_sdr104 &mmc1_iodelay_sdr104_rev20_conf>;
27};22};
28 23
29&mmc2 {24&mmc2 {
arch/arm/boot/dts/am574x-idk.dts+1−6
@@ -24,14 +24,9 @@ · 23 unmodified lines
24};24};
25 25
26&mmc1 {26&mmc1 {
27 pinctrl-names = "default", "hs", "sdr12", "sdr25", "sdr50", "ddr50", "sdr104";27 pinctrl-names = "default", "hs";
28 pinctrl-0 = <&mmc1_pins_default_no_clk_pu>;28 pinctrl-0 = <&mmc1_pins_default_no_clk_pu>;
29 pinctrl-1 = <&mmc1_pins_hs>;29 pinctrl-1 = <&mmc1_pins_hs>;
30 pinctrl-2 = <&mmc1_pins_default>;
31 pinctrl-3 = <&mmc1_pins_hs>;
32 pinctrl-4 = <&mmc1_pins_sdr50>;
33 pinctrl-5 = <&mmc1_pins_ddr50 &mmc1_iodelay_ddr_conf>;
34 pinctrl-6 = <&mmc1_pins_ddr50 &mmc1_iodelay_sdr104_conf>;
35};30};
36 31
37&mmc2 {32&mmc2 {
arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi+2−1
@@ -379,7 +379,7 @@ · 378 unmodified lines
379 };379 };
380};380};
381 381
382&gpio7 {382&gpio7_target {
383 ti,no-reset-on-init;383 ti,no-reset-on-init;
384 ti,no-idle-on-init;384 ti,no-idle-on-init;
385};385};
@@ -430,6 +430,7 @@ · 44 unmodified lines
430 430
431 bus-width = <4>;431 bus-width = <4>;
432 cd-gpios = <&gpio6 27 GPIO_ACTIVE_LOW>; /* gpio 219 */432 cd-gpios = <&gpio6 27 GPIO_ACTIVE_LOW>; /* gpio 219 */
433 no-1-8-v;
433};434};
434 435
435&mmc2 {436&mmc2 {
arch/arm/boot/dts/am57xx-beagle-x15-revb1.dts+1−6
@@ -16,14 +16,9 @@ · 15 unmodified lines
16};16};
17 17
18&mmc1 {18&mmc1 {
19 pinctrl-names = "default", "hs", "sdr12", "sdr25", "sdr50", "ddr50", "sdr104";19 pinctrl-names = "default", "hs";
20 pinctrl-0 = <&mmc1_pins_default>;20 pinctrl-0 = <&mmc1_pins_default>;
21 pinctrl-1 = <&mmc1_pins_hs>;21 pinctrl-1 = <&mmc1_pins_hs>;
22 pinctrl-2 = <&mmc1_pins_sdr12>;
23 pinctrl-3 = <&mmc1_pins_sdr25>;
24 pinctrl-4 = <&mmc1_pins_sdr50>;
25 pinctrl-5 = <&mmc1_pins_ddr50 &mmc1_iodelay_ddr_rev11_conf>;
26 pinctrl-6 = <&mmc1_pins_sdr104 &mmc1_iodelay_sdr104_rev11_conf>;
27 vmmc-supply = <&vdd_3v3>;22 vmmc-supply = <&vdd_3v3>;
28 vqmmc-supply = <&ldo1_reg>;23 vqmmc-supply = <&ldo1_reg>;
29};24};
arch/arm/boot/dts/am57xx-beagle-x15-revc.dts+1−6
@@ -16,14 +16,9 @@ · 15 unmodified lines
16};16};
17 17
18&mmc1 {18&mmc1 {
19 pinctrl-names = "default", "hs", "sdr12", "sdr25", "sdr50", "ddr50", "sdr104";19 pinctrl-names = "default", "hs";
20 pinctrl-0 = <&mmc1_pins_default>;20 pinctrl-0 = <&mmc1_pins_default>;
21 pinctrl-1 = <&mmc1_pins_hs>;21 pinctrl-1 = <&mmc1_pins_hs>;
22 pinctrl-2 = <&mmc1_pins_sdr12>;
23 pinctrl-3 = <&mmc1_pins_sdr25>;
24 pinctrl-4 = <&mmc1_pins_sdr50>;
25 pinctrl-5 = <&mmc1_pins_ddr50 &mmc1_iodelay_ddr_rev20_conf>;
26 pinctrl-6 = <&mmc1_pins_sdr104 &mmc1_iodelay_sdr104_rev20_conf>;
27 vmmc-supply = <&vdd_3v3>;22 vmmc-supply = <&vdd_3v3>;
28 vqmmc-supply = <&ldo1_reg>;23 vqmmc-supply = <&ldo1_reg>;
29};24};
arch/arm/boot/dts/dra7-evm.dts+1−1
@@ -498,7 +498,7 @@ · 497 unmodified lines
498 phy-supply = <&ldousb_reg>;498 phy-supply = <&ldousb_reg>;
499};499};
500 500
501&gpio7 {501&gpio7_target {
502 ti,no-reset-on-init;502 ti,no-reset-on-init;
503 ti,no-idle-on-init;503 ti,no-idle-on-init;
504};504};
arch/arm/boot/dts/dra7-l4.dtsi+3−3
@@ -1261,7 +1261,7 @@ · 1260 unmodified lines
1261 };1261 };
1262 };1262 };
1263 1263
1264 target-module@51000 { /* 0x48051000, ap 45 2e.0 */1264 gpio7_target: target-module@51000 { /* 0x48051000, ap 45 2e.0 */
1265 compatible = "ti,sysc-omap2", "ti,sysc";1265 compatible = "ti,sysc-omap2", "ti,sysc";
1266 ti,hwmods = "gpio7";1266 ti,hwmods = "gpio7";
1267 reg = <0x51000 0x4>,1267 reg = <0x51000 0x4>,
@@ -3025,7 +3025,7 @@ · 1757 unmodified lines
3025 3025
3026 target-module@80000 { /* 0x48480000, ap 31 16.0 */3026 target-module@80000 { /* 0x48480000, ap 31 16.0 */
3027 compatible = "ti,sysc-omap4", "ti,sysc";3027 compatible = "ti,sysc-omap4", "ti,sysc";
3028 reg = <0x80000 0x4>;3028 reg = <0x80020 0x4>;
3029 reg-names = "rev";3029 reg-names = "rev";
3030 clocks = <&l4per2_clkctrl DRA7_L4PER2_DCAN2_CLKCTRL 0>;3030 clocks = <&l4per2_clkctrl DRA7_L4PER2_DCAN2_CLKCTRL 0>;
3031 clock-names = "fck";3031 clock-names = "fck";
@@ -4577,7 +4577,7 @@ · 1545 unmodified lines
4577 4577
4578 target-module@c000 { /* 0x4ae3c000, ap 30 04.0 */4578 target-module@c000 { /* 0x4ae3c000, ap 30 04.0 */
4579 compatible = "ti,sysc-omap4", "ti,sysc";4579 compatible = "ti,sysc-omap4", "ti,sysc";
4580 reg = <0xc000 0x4>;4580 reg = <0xc020 0x4>;
4581 reg-names = "rev";4581 reg-names = "rev";
4582 clocks = <&wkupaon_clkctrl DRA7_WKUPAON_DCAN1_CLKCTRL 0>;4582 clocks = <&wkupaon_clkctrl DRA7_WKUPAON_DCAN1_CLKCTRL 0>;
4583 clock-names = "fck";4583 clock-names = "fck";
arch/arm/boot/dts/dra74x-mmc-iodelay.dtsi+25−25
@@ -32,7 +32,7 @@ · 31 unmodified lines
32 *32 *
33 * Datamanual Revisions:33 * Datamanual Revisions:
34 *34 *
35 * AM572x Silicon Revision 2.0: SPRS953B, Revised November 201635 * AM572x Silicon Revision 2.0: SPRS953F, Revised May 2019
36 * AM572x Silicon Revision 1.1: SPRS915R, Revised November 201636 * AM572x Silicon Revision 1.1: SPRS915R, Revised November 2016
37 *37 *
38 */38 */
@@ -229,45 +229,45 @@ · 190 unmodified lines
229 229
230 mmc3_pins_default: mmc3_pins_default {230 mmc3_pins_default: mmc3_pins_default {
231 pinctrl-single,pins = <231 pinctrl-single,pins = <
232 DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_clk.mmc3_clk */232 DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
233 DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */233 DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
234 DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */234 DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
235 DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */235 DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
236 DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */236 DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
237 DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */237 DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
238 >;238 >;
239 };239 };
240 240
241 mmc3_pins_hs: mmc3_pins_hs {241 mmc3_pins_hs: mmc3_pins_hs {
242 pinctrl-single,pins = <242 pinctrl-single,pins = <
243 DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_clk.mmc3_clk */243 DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
244 DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */244 DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
245 DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */245 DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
246 DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */246 DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
247 DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */247 DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
248 DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */248 DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
249 >;249 >;
250 };250 };
251 251
252 mmc3_pins_sdr12: mmc3_pins_sdr12 {252 mmc3_pins_sdr12: mmc3_pins_sdr12 {
253 pinctrl-single,pins = <253 pinctrl-single,pins = <
254 DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_clk.mmc3_clk */254 DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
255 DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */255 DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
256 DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */256 DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
257 DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */257 DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
258 DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */258 DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
259 DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */259 DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
260 >;260 >;
261 };261 };
262 262
263 mmc3_pins_sdr25: mmc3_pins_sdr25 {263 mmc3_pins_sdr25: mmc3_pins_sdr25 {
264 pinctrl-single,pins = <264 pinctrl-single,pins = <
265 DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_clk.mmc3_clk */265 DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
266 DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */266 DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
267 DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */267 DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
268 DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */268 DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
269 DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */269 DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
270 DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */270 DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
271 >;271 >;
272 };272 };
273 273
arch/arm/boot/dts/vf610-bk4.dts+2−2
@@ -246,13 +246,13 @@ · 245 unmodified lines
246 reg = <0>;246 reg = <0>;
247 };247 };
248 248
249 n25q128a13_2: flash@1 {249 n25q128a13_2: flash@2 {
250 compatible = "n25q128a13", "jedec,spi-nor";250 compatible = "n25q128a13", "jedec,spi-nor";
251 #address-cells = <1>;251 #address-cells = <1>;
252 #size-cells = <1>;252 #size-cells = <1>;
253 spi-max-frequency = <66000000>;253 spi-max-frequency = <66000000>;
254 spi-rx-bus-width = <2>;254 spi-rx-bus-width = <2>;
255 reg = <1>;255 reg = <2>;
256 };256 };
257};257};
258 258
arch/arm/mach-omap1/ams-delta-fiq-handler.S+2−1
@@ -126,6 +126,8 @@ restart: · 125 unmodified lines
126 orr r11, r11, r13 @ mask all requested interrupts126 orr r11, r11, r13 @ mask all requested interrupts
127 str r11, [r12, #OMAP1510_GPIO_INT_MASK]127 str r11, [r12, #OMAP1510_GPIO_INT_MASK]
128 128
129 str r13, [r12, #OMAP1510_GPIO_INT_STATUS] @ ack all requested interrupts
130
129 ands r10, r13, #KEYBRD_CLK_MASK @ extract keyboard status - set?131 ands r10, r13, #KEYBRD_CLK_MASK @ extract keyboard status - set?
130 beq hksw @ no - try next source132 beq hksw @ no - try next source
131 133
@@ -133,7 +135,6 @@ restart: · 1 unmodified line
133 @@@@@@@@@@@@@@@@@@@@@@135 @@@@@@@@@@@@@@@@@@@@@@
134 @ Keyboard clock FIQ mode interrupt handler136 @ Keyboard clock FIQ mode interrupt handler
135 @ r10 now contains KEYBRD_CLK_MASK, use it137 @ r10 now contains KEYBRD_CLK_MASK, use it
136 str r10, [r12, #OMAP1510_GPIO_INT_STATUS] @ ack the interrupt
137 bic r11, r11, r10 @ unmask it138 bic r11, r11, r10 @ unmask it
138 str r11, [r12, #OMAP1510_GPIO_INT_MASK]139 str r11, [r12, #OMAP1510_GPIO_INT_MASK]
139 140
arch/arm/mach-omap1/ams-delta-fiq.c+1−3
@@ -70,9 +70,7 @@ static irqreturn_t deferred_fiq(int irq, void *dev_id) · 69 unmodified lines
70 * interrupts default to since commit 80ac93c2744170 * interrupts default to since commit 80ac93c27441
71 * requires interrupt already acked and unmasked.71 * requires interrupt already acked and unmasked.
72 */72 */
73 if (irq_chip->irq_ack)73 if (!WARN_ON_ONCE(!irq_chip->irq_unmask))
74 irq_chip->irq_ack(d);
75 if (irq_chip->irq_unmask)
76 irq_chip->irq_unmask(d);74 irq_chip->irq_unmask(d);
77 }75 }
78 for (; irq_counter[gpio] < fiq_count; irq_counter[gpio]++)76 for (; irq_counter[gpio] < fiq_count; irq_counter[gpio]++)
arch/arm/mach-omap2/omap4-common.c+3−0
@@ -127,6 +127,9 @@ static int __init omap4_sram_init(void) · 126 unmodified lines
127 struct device_node *np;127 struct device_node *np;
128 struct gen_pool *sram_pool;128 struct gen_pool *sram_pool;
129 129
130 if (!soc_is_omap44xx() && !soc_is_omap54xx())
131 return 0;
132
130 np = of_find_compatible_node(NULL, NULL, "ti,omap4-mpu");133 np = of_find_compatible_node(NULL, NULL, "ti,omap4-mpu");
131 if (!np)134 if (!np)
132 pr_warn("%s:Unable to allocate sram needed to handle errata I688\n",135 pr_warn("%s:Unable to allocate sram needed to handle errata I688\n",
arch/arm/mach-omap2/omap_hwmod_7xx_data.c+2−1
@@ -379,7 +379,8 @@ static struct omap_hwmod dra7xx_dcan2_hwmod = { · 378 unmodified lines
379static struct omap_hwmod_class_sysconfig dra7xx_epwmss_sysc = {379static struct omap_hwmod_class_sysconfig dra7xx_epwmss_sysc = {
380 .rev_offs = 0x0,380 .rev_offs = 0x0,
381 .sysc_offs = 0x4,381 .sysc_offs = 0x4,
382 .sysc_flags = SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET,382 .sysc_flags = SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
383 SYSC_HAS_RESET_STATUS,
383 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),384 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
384 .sysc_fields = &omap_hwmod_sysc_type2,385 .sysc_fields = &omap_hwmod_sysc_type2,
385};386};
arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts+6−0
@@ -339,6 +339,12 @@ · 338 unmodified lines
339 pinctrl-names = "default";339 pinctrl-names = "default";
340};340};
341 341
342&ir {
343 status = "okay";
344 pinctrl-0 = <&remote_input_ao_pins>;
345 pinctrl-names = "default";
346};
347
342&pwm_ef {348&pwm_ef {
343 status = "okay";349 status = "okay";
344 pinctrl-0 = <&pwm_e_pins>;350 pinctrl-0 = <&pwm_e_pins>;
arch/arm64/boot/dts/amlogic/meson-g12a.dtsi+1−0
@@ -2386,6 +2386,7 @@ · 2385 unmodified lines
2386 clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;2386 clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;
2387 clock-names = "ddr";2387 clock-names = "ddr";
2388 phys = <&usb2_phy1>;2388 phys = <&usb2_phy1>;
2389 phy-names = "usb2-phy";
2389 dr_mode = "peripheral";2390 dr_mode = "peripheral";
2390 g-rx-fifo-size = <192>;2391 g-rx-fifo-size = <192>;
2391 g-np-tx-fifo-size = <128>;2392 g-np-tx-fifo-size = <128>;
arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts+1−0
@@ -53,6 +53,7 @@ · 52 unmodified lines
53 53
54 gpio = <&gpio_ao GPIOAO_8 GPIO_ACTIVE_HIGH>;54 gpio = <&gpio_ao GPIOAO_8 GPIO_ACTIVE_HIGH>;
55 enable-active-high;55 enable-active-high;
56 regulator-always-on;
56 };57 };
57 58
58 tf_io: gpio-regulator-tf_io {59 tf_io: gpio-regulator-tf_io {
drivers/bus/hisi_lpc.c+41−6
@@ -456,6 +456,17 @@ struct hisi_lpc_acpi_cell { · 455 unmodified lines
456 size_t pdata_size;456 size_t pdata_size;
457};457};
458 458
459static void hisi_lpc_acpi_remove(struct device *hostdev)
460{
461 struct acpi_device *adev = ACPI_COMPANION(hostdev);
462 struct acpi_device *child;
463
464 device_for_each_child(hostdev, NULL, hisi_lpc_acpi_remove_subdev);
465
466 list_for_each_entry(child, &adev->children, node)
467 acpi_device_clear_enumerated(child);
468}
469
459/*470/*
460 * hisi_lpc_acpi_probe - probe children for ACPI FW471 * hisi_lpc_acpi_probe - probe children for ACPI FW
461 * @hostdev: LPC host device pointer472 * @hostdev: LPC host device pointer
@@ -555,8 +566,7 @@ static int hisi_lpc_acpi_probe(struct device *hostdev) · 93 unmodified lines
555 return 0;566 return 0;
556 567
557fail:568fail:
558 device_for_each_child(hostdev, NULL,569 hisi_lpc_acpi_remove(hostdev);
559 hisi_lpc_acpi_remove_subdev);
560 return ret;570 return ret;
561}571}
562 572
@@ -569,6 +579,10 @@ static int hisi_lpc_acpi_probe(struct device *dev) · 6 unmodified lines
569{579{
570 return -ENODEV;580 return -ENODEV;
571}581}
582
583static void hisi_lpc_acpi_remove(struct device *hostdev)
584{
585}
572#endif // CONFIG_ACPI586#endif // CONFIG_ACPI
573 587
574/*588/*
@@ -606,24 +620,27 @@ static int hisi_lpc_probe(struct platform_device *pdev) · 31 unmodified lines
606 range->fwnode = dev->fwnode;620 range->fwnode = dev->fwnode;
607 range->flags = LOGIC_PIO_INDIRECT;621 range->flags = LOGIC_PIO_INDIRECT;
608 range->size = PIO_INDIRECT_SIZE;622 range->size = PIO_INDIRECT_SIZE;
623 range->hostdata = lpcdev;
624 range->ops = &hisi_lpc_ops;
625 lpcdev->io_host = range;
609 626
610 ret = logic_pio_register_range(range);627 ret = logic_pio_register_range(range);
611 if (ret) {628 if (ret) {
612 dev_err(dev, "register IO range failed (%d)!\n", ret);629 dev_err(dev, "register IO range failed (%d)!\n", ret);
613 return ret;630 return ret;
614 }631 }
615 lpcdev->io_host = range;
616 632
617 /* register the LPC host PIO resources */633 /* register the LPC host PIO resources */
618 if (acpi_device)634 if (acpi_device)
619 ret = hisi_lpc_acpi_probe(dev);635 ret = hisi_lpc_acpi_probe(dev);
620 else636 else
621 ret = of_platform_populate(dev->of_node, NULL, NULL, dev);637 ret = of_platform_populate(dev->of_node, NULL, NULL, dev);
622 if (ret)638 if (ret) {
639 logic_pio_unregister_range(range);
623 return ret;640 return ret;
641 }
624 642
625 lpcdev->io_host->hostdata = lpcdev;643 dev_set_drvdata(dev, lpcdev);
626 lpcdev->io_host->ops = &hisi_lpc_ops;
627 644
628 io_end = lpcdev->io_host->io_start + lpcdev->io_host->size;645 io_end = lpcdev->io_host->io_start + lpcdev->io_host->size;
629 dev_info(dev, "registered range [%pa - %pa]\n",646 dev_info(dev, "registered range [%pa - %pa]\n",
@@ -632,6 +649,23 @@ static int hisi_lpc_probe(struct platform_device *pdev) · 2 unmodified lines
632 return ret;649 return ret;
633}650}
634 651
652static int hisi_lpc_remove(struct platform_device *pdev)
653{
654 struct device *dev = &pdev->dev;
655 struct acpi_device *acpi_device = ACPI_COMPANION(dev);
656 struct hisi_lpc_dev *lpcdev = dev_get_drvdata(dev);
657 struct logic_pio_hwaddr *range = lpcdev->io_host;
658
659 if (acpi_device)
660 hisi_lpc_acpi_remove(dev);
661 else
662 of_platform_depopulate(dev);
663
664 logic_pio_unregister_range(range);
665
666 return 0;
667}
668
635static const struct of_device_id hisi_lpc_of_match[] = {669static const struct of_device_id hisi_lpc_of_match[] = {
636 { .compatible = "hisilicon,hip06-lpc", },670 { .compatible = "hisilicon,hip06-lpc", },
637 { .compatible = "hisilicon,hip07-lpc", },671 { .compatible = "hisilicon,hip07-lpc", },
@@ -645,5 +679,6 @@ static struct platform_driver hisi_lpc_driver = { · 7 unmodified lines
645 .acpi_match_table = ACPI_PTR(hisi_lpc_acpi_match),679 .acpi_match_table = ACPI_PTR(hisi_lpc_acpi_match),
646 },680 },
647 .probe = hisi_lpc_probe,681 .probe = hisi_lpc_probe,
682 .remove = hisi_lpc_remove,
648};683};
649builtin_platform_driver(hisi_lpc_driver);684builtin_platform_driver(hisi_lpc_driver);
drivers/bus/ti-sysc.c+11−13
@@ -949,7 +949,7 @@ static int sysc_best_idle_mode(u32 idlemodes, u32 *best_mode) · 948 unmodified lines
949 *best_mode = SYSC_IDLE_SMART_WKUP;949 *best_mode = SYSC_IDLE_SMART_WKUP;
950 else if (idlemodes & BIT(SYSC_IDLE_SMART))950 else if (idlemodes & BIT(SYSC_IDLE_SMART))
951 *best_mode = SYSC_IDLE_SMART;951 *best_mode = SYSC_IDLE_SMART;
952 else if (idlemodes & SYSC_IDLE_FORCE)952 else if (idlemodes & BIT(SYSC_IDLE_FORCE))
953 *best_mode = SYSC_IDLE_FORCE;953 *best_mode = SYSC_IDLE_FORCE;
954 else954 else
955 return -EINVAL;955 return -EINVAL;
@@ -1267,7 +1267,8 @@ static const struct sysc_revision_quirk sysc_revision_quirks[] = { · 311 unmodified lines
1267 SYSC_QUIRK("control", 0, 0, 0x10, -1, 0x40000900, 0xffffffff, 0),1267 SYSC_QUIRK("control", 0, 0, 0x10, -1, 0x40000900, 0xffffffff, 0),
1268 SYSC_QUIRK("cpgmac", 0, 0x1200, 0x1208, 0x1204, 0x4edb1902,1268 SYSC_QUIRK("cpgmac", 0, 0x1200, 0x1208, 0x1204, 0x4edb1902,
1269 0xffff00f0, 0),1269 0xffff00f0, 0),
1270 SYSC_QUIRK("dcan", 0, 0, -1, -1, 0xffffffff, 0xffffffff, 0),1270 SYSC_QUIRK("dcan", 0, 0x20, -1, -1, 0xa3170504, 0xffffffff, 0),
1271 SYSC_QUIRK("dcan", 0, 0x20, -1, -1, 0x4edb1902, 0xffffffff, 0),
1271 SYSC_QUIRK("dmic", 0, 0, 0x10, -1, 0x50010000, 0xffffffff, 0),1272 SYSC_QUIRK("dmic", 0, 0, 0x10, -1, 0x50010000, 0xffffffff, 0),
1272 SYSC_QUIRK("dwc3", 0, 0, 0x10, -1, 0x500a0200, 0xffffffff, 0),1273 SYSC_QUIRK("dwc3", 0, 0, 0x10, -1, 0x500a0200, 0xffffffff, 0),
1273 SYSC_QUIRK("epwmss", 0, 0, 0x4, -1, 0x47400001, 0xffffffff, 0),1274 SYSC_QUIRK("epwmss", 0, 0, 0x4, -1, 0x47400001, 0xffffffff, 0),
@@ -1692,10 +1693,7 @@ static int sysc_init_sysc_mask(struct sysc *ddata) · 418 unmodified lines
1692 if (error)1693 if (error)
1693 return 0;1694 return 0;
1694 1695
1695 if (val)1696 ddata->cfg.sysc_val = val & ddata->cap->sysc_mask;
1696 ddata->cfg.sysc_val = val & ddata->cap->sysc_mask;
1697 else
1698 ddata->cfg.sysc_val = ddata->cap->sysc_mask;
1699 1697
1700 return 0;1698 return 0;
1701}1699}
@@ -2385,27 +2383,27 @@ static int sysc_probe(struct platform_device *pdev) · 683 unmodified lines
2385 2383
2386 error = sysc_init_dts_quirks(ddata);2384 error = sysc_init_dts_quirks(ddata);
2387 if (error)2385 if (error)
2388 goto unprepare;2386 return error;
2389 2387
2390 error = sysc_map_and_check_registers(ddata);2388 error = sysc_map_and_check_registers(ddata);
2391 if (error)2389 if (error)
2392 goto unprepare;2390 return error;
2393 2391
2394 error = sysc_init_sysc_mask(ddata);2392 error = sysc_init_sysc_mask(ddata);
2395 if (error)2393 if (error)
2396 goto unprepare;2394 return error;
2397 2395
2398 error = sysc_init_idlemodes(ddata);2396 error = sysc_init_idlemodes(ddata);
2399 if (error)2397 if (error)
2400 goto unprepare;2398 return error;
2401 2399
2402 error = sysc_init_syss_mask(ddata);2400 error = sysc_init_syss_mask(ddata);
2403 if (error)2401 if (error)
2404 goto unprepare;2402 return error;
2405 2403
2406 error = sysc_init_pdata(ddata);2404 error = sysc_init_pdata(ddata);
2407 if (error)2405 if (error)
2408 goto unprepare;2406 return error;
2409 2407
2410 sysc_init_early_quirks(ddata);2408 sysc_init_early_quirks(ddata);
2411 2409
@@ -2415,7 +2413,7 @@ static int sysc_probe(struct platform_device *pdev) · 3 unmodified lines
2415 2413
2416 error = sysc_init_resets(ddata);2414 error = sysc_init_resets(ddata);
2417 if (error)2415 if (error)
2418 return error;2416 goto unprepare;
2419 2417
2420 error = sysc_init_module(ddata);2418 error = sysc_init_module(ddata);
2421 if (error)2419 if (error)
drivers/soc/ixp4xx/Kconfig+4−0
@@ -1,4 +1,6 @@
1# SPDX-License-Identifier: GPL-2.0-only1# SPDX-License-Identifier: GPL-2.0-only
2if ARCH_IXP4XX || COMPILE_TEST
3
2menu "IXP4xx SoC drivers"4menu "IXP4xx SoC drivers"
3 5
4config IXP4XX_QMGR6config IXP4XX_QMGR
@@ -15,3 +17,5 @@ config IXP4XX_NPE · 10 unmodified lines
15 and is automatically selected by Ethernet and HSS drivers.17 and is automatically selected by Ethernet and HSS drivers.
16 18
17endmenu19endmenu
20
21endif
drivers/soc/ti/pm33xx.c+12−7
@@ -141,7 +141,7 @@ static int __init am43xx_map_gic(void) · 140 unmodified lines
141}141}
142 142
143#ifdef CONFIG_SUSPEND143#ifdef CONFIG_SUSPEND
144struct wkup_m3_wakeup_src rtc_wake_src(void)144static struct wkup_m3_wakeup_src rtc_wake_src(void)
145{145{
146 u32 i;146 u32 i;
147 147
@@ -157,7 +157,7 @@ struct wkup_m3_wakeup_src rtc_wake_src(void) · 9 unmodified lines
157 return rtc_ext_wakeup;157 return rtc_ext_wakeup;
158}158}
159 159
160int am33xx_rtc_only_idle(unsigned long wfi_flags)160static int am33xx_rtc_only_idle(unsigned long wfi_flags)
161{161{
162 omap_rtc_power_off_program(&omap_rtc->dev);162 omap_rtc_power_off_program(&omap_rtc->dev);
163 am33xx_do_wfi_sram(wfi_flags);163 am33xx_do_wfi_sram(wfi_flags);
@@ -252,7 +252,7 @@ static int am33xx_pm_begin(suspend_state_t state) · 88 unmodified lines
252 if (state == PM_SUSPEND_MEM && pm_ops->check_off_mode_enable()) {252 if (state == PM_SUSPEND_MEM && pm_ops->check_off_mode_enable()) {
253 nvmem = devm_nvmem_device_get(&omap_rtc->dev,253 nvmem = devm_nvmem_device_get(&omap_rtc->dev,
254 "omap_rtc_scratch0");254 "omap_rtc_scratch0");
255 if (nvmem)255 if (!IS_ERR(nvmem))
256 nvmem_device_write(nvmem, RTC_SCRATCH_MAGIC_REG * 4, 4,256 nvmem_device_write(nvmem, RTC_SCRATCH_MAGIC_REG * 4, 4,
257 (void *)&rtc_magic_val);257 (void *)&rtc_magic_val);
258 rtc_only_idle = 1;258 rtc_only_idle = 1;
@@ -278,9 +278,12 @@ static void am33xx_pm_end(void) · 19 unmodified lines
278 struct nvmem_device *nvmem;278 struct nvmem_device *nvmem;
279 279
280 nvmem = devm_nvmem_device_get(&omap_rtc->dev, "omap_rtc_scratch0");280 nvmem = devm_nvmem_device_get(&omap_rtc->dev, "omap_rtc_scratch0");
281 if (IS_ERR(nvmem))
282 return;
283
281 m3_ipc->ops->finish_low_power(m3_ipc);284 m3_ipc->ops->finish_low_power(m3_ipc);
282 if (rtc_only_idle) {285 if (rtc_only_idle) {
283 if (retrigger_irq)286 if (retrigger_irq) {
284 /*287 /*
285 * 32 bits of Interrupt Set-Pending correspond to 32288 * 32 bits of Interrupt Set-Pending correspond to 32
286 * 32 interrupts. Compute the bit offset of the289 * 32 interrupts. Compute the bit offset of the
@@ -291,8 +294,10 @@ static void am33xx_pm_end(void) · 4 unmodified lines
291 writel_relaxed(1 << (retrigger_irq & 31),294 writel_relaxed(1 << (retrigger_irq & 31),
292 gic_dist_base + GIC_INT_SET_PENDING_BASE295 gic_dist_base + GIC_INT_SET_PENDING_BASE
293 + retrigger_irq / 32 * 4);296 + retrigger_irq / 32 * 4);
294 nvmem_device_write(nvmem, RTC_SCRATCH_MAGIC_REG * 4, 4,297 }
295 (void *)&val);298
299 nvmem_device_write(nvmem, RTC_SCRATCH_MAGIC_REG * 4, 4,
300 (void *)&val);
296 }301 }
297 302
298 rtc_only_idle = 0;303 rtc_only_idle = 0;
@@ -415,7 +420,7 @@ static int am33xx_pm_rtc_setup(void) · 116 unmodified lines
415 420
416 nvmem = devm_nvmem_device_get(&omap_rtc->dev,421 nvmem = devm_nvmem_device_get(&omap_rtc->dev,
417 "omap_rtc_scratch0");422 "omap_rtc_scratch0");
418 if (nvmem) {423 if (!IS_ERR(nvmem)) {
419 nvmem_device_read(nvmem, RTC_SCRATCH_MAGIC_REG * 4,424 nvmem_device_read(nvmem, RTC_SCRATCH_MAGIC_REG * 4,
420 4, (void *)&rtc_magic_val);425 4, (void *)&rtc_magic_val);
421 if ((rtc_magic_val & 0xffff) != RTC_REG_BOOT_MAGIC)426 if ((rtc_magic_val & 0xffff) != RTC_REG_BOOT_MAGIC)
include/linux/logic_pio.h+1−0
@@ -117,6 +117,7 @@ struct logic_pio_hwaddr *find_io_range_by_fwnode(struct fwnode_handle *fwnode); · 116 unmodified lines
117unsigned long logic_pio_trans_hwaddr(struct fwnode_handle *fwnode,117unsigned long logic_pio_trans_hwaddr(struct fwnode_handle *fwnode,
118 resource_size_t hw_addr, resource_size_t size);118 resource_size_t hw_addr, resource_size_t size);
119int logic_pio_register_range(struct logic_pio_hwaddr *newrange);119int logic_pio_register_range(struct logic_pio_hwaddr *newrange);
120void logic_pio_unregister_range(struct logic_pio_hwaddr *range);
120resource_size_t logic_pio_to_hwaddr(unsigned long pio);121resource_size_t logic_pio_to_hwaddr(unsigned long pio);
121unsigned long logic_pio_trans_cpuaddr(resource_size_t hw_addr);122unsigned long logic_pio_trans_cpuaddr(resource_size_t hw_addr);
122 123
lib/logic_pio.c+54−19
@@ -35,7 +35,7 @@ int logic_pio_register_range(struct logic_pio_hwaddr *new_range) · 34 unmodified lines
35 struct logic_pio_hwaddr *range;35 struct logic_pio_hwaddr *range;
36 resource_size_t start;36 resource_size_t start;
37 resource_size_t end;37 resource_size_t end;
38 resource_size_t mmio_sz = 0;38 resource_size_t mmio_end = 0;
39 resource_size_t iio_sz = MMIO_UPPER_LIMIT;39 resource_size_t iio_sz = MMIO_UPPER_LIMIT;
40 int ret = 0;40 int ret = 0;
41 41
@@ -46,7 +46,7 @@ int logic_pio_register_range(struct logic_pio_hwaddr *new_range) · 4 unmodified lines
46 end = new_range->hw_start + new_range->size;46 end = new_range->hw_start + new_range->size;
47 47
48 mutex_lock(&io_range_mutex);48 mutex_lock(&io_range_mutex);
49 list_for_each_entry_rcu(range, &io_range_list, list) {49 list_for_each_entry(range, &io_range_list, list) {
50 if (range->fwnode == new_range->fwnode) {50 if (range->fwnode == new_range->fwnode) {
51 /* range already there */51 /* range already there */
52 goto end_register;52 goto end_register;
@@ -56,7 +56,7 @@ int logic_pio_register_range(struct logic_pio_hwaddr *new_range) · 3 unmodified lines
56 /* for MMIO ranges we need to check for overlap */56 /* for MMIO ranges we need to check for overlap */
57 if (start >= range->hw_start + range->size ||57 if (start >= range->hw_start + range->size ||
58 end < range->hw_start) {58 end < range->hw_start) {
59 mmio_sz += range->size;59 mmio_end = range->io_start + range->size;
60 } else {60 } else {
61 ret = -EFAULT;61 ret = -EFAULT;
62 goto end_register;62 goto end_register;
@@ -69,16 +69,16 @@ int logic_pio_register_range(struct logic_pio_hwaddr *new_range) · 6 unmodified lines
69 69
70 /* range not registered yet, check for available space */70 /* range not registered yet, check for available space */
71 if (new_range->flags == LOGIC_PIO_CPU_MMIO) {71 if (new_range->flags == LOGIC_PIO_CPU_MMIO) {
72 if (mmio_sz + new_range->size - 1 > MMIO_UPPER_LIMIT) {72 if (mmio_end + new_range->size - 1 > MMIO_UPPER_LIMIT) {
73 /* if it's too big check if 64K space can be reserved */73 /* if it's too big check if 64K space can be reserved */
74 if (mmio_sz + SZ_64K - 1 > MMIO_UPPER_LIMIT) {74 if (mmio_end + SZ_64K - 1 > MMIO_UPPER_LIMIT) {
75 ret = -E2BIG;75 ret = -E2BIG;
76 goto end_register;76 goto end_register;
77 }77 }
78 new_range->size = SZ_64K;78 new_range->size = SZ_64K;
79 pr_warn("Requested IO range too big, new size set to 64K\n");79 pr_warn("Requested IO range too big, new size set to 64K\n");
80 }80 }
81 new_range->io_start = mmio_sz;81 new_range->io_start = mmio_end;
82 } else if (new_range->flags == LOGIC_PIO_INDIRECT) {82 } else if (new_range->flags == LOGIC_PIO_INDIRECT) {
83 if (iio_sz + new_range->size - 1 > IO_SPACE_LIMIT) {83 if (iio_sz + new_range->size - 1 > IO_SPACE_LIMIT) {
84 ret = -E2BIG;84 ret = -E2BIG;
@@ -98,6 +98,20 @@ end_register: · 13 unmodified lines
98 return ret;98 return ret;
99}99}
100 100
101/**
102 * logic_pio_unregister_range - unregister a logical PIO range for a host
103 * @range: pointer to the IO range which has been already registered.
104 *
105 * Unregister a previously-registered IO range node.
106 */
107void logic_pio_unregister_range(struct logic_pio_hwaddr *range)
108{
109 mutex_lock(&io_range_mutex);
110 list_del_rcu(&range->list);
111 mutex_unlock(&io_range_mutex);
112 synchronize_rcu();
113}
114
101/**115/**
102 * find_io_range_by_fwnode - find logical PIO range for given FW node116 * find_io_range_by_fwnode - find logical PIO range for given FW node
103 * @fwnode: FW node handle associated with logical PIO range117 * @fwnode: FW node handle associated with logical PIO range
@@ -108,26 +122,38 @@ end_register: · 4 unmodified lines
108 */122 */
109struct logic_pio_hwaddr *find_io_range_by_fwnode(struct fwnode_handle *fwnode)123struct logic_pio_hwaddr *find_io_range_by_fwnode(struct fwnode_handle *fwnode)
110{124{
111 struct logic_pio_hwaddr *range;125 struct logic_pio_hwaddr *range, *found_range = NULL;
112 126
127 rcu_read_lock();
113 list_for_each_entry_rcu(range, &io_range_list, list) {128 list_for_each_entry_rcu(range, &io_range_list, list) {
114 if (range->fwnode == fwnode)129 if (range->fwnode == fwnode) {
115 return range;130 found_range = range;
131 break;
132 }
116 }133 }
117 return NULL;134 rcu_read_unlock();
135
136 return found_range;
118}137}
119 138
120/* Return a registered range given an input PIO token */139/* Return a registered range given an input PIO token */
121static struct logic_pio_hwaddr *find_io_range(unsigned long pio)140static struct logic_pio_hwaddr *find_io_range(unsigned long pio)
122{141{
123 struct logic_pio_hwaddr *range;142 struct logic_pio_hwaddr *range, *found_range = NULL;
124 143
144 rcu_read_lock();
125 list_for_each_entry_rcu(range, &io_range_list, list) {145 list_for_each_entry_rcu(range, &io_range_list, list) {
126 if (in_range(pio, range->io_start, range->size))146 if (in_range(pio, range->io_start, range->size)) {
127 return range;147 found_range = range;
148 break;
149 }
128 }150 }
129 pr_err("PIO entry token %lx invalid\n", pio);151 rcu_read_unlock();
130 return NULL;152
153 if (!found_range)
154 pr_err("PIO entry token 0x%lx invalid\n", pio);
155
156 return found_range;
131}157}
132 158
133/**159/**
@@ -180,14 +206,23 @@ unsigned long logic_pio_trans_cpuaddr(resource_size_t addr) · 46 unmodified lines
180{206{
181 struct logic_pio_hwaddr *range;207 struct logic_pio_hwaddr *range;
182 208
209 rcu_read_lock();
183 list_for_each_entry_rcu(range, &io_range_list, list) {210 list_for_each_entry_rcu(range, &io_range_list, list) {
184 if (range->flags != LOGIC_PIO_CPU_MMIO)211 if (range->flags != LOGIC_PIO_CPU_MMIO)
185 continue;212 continue;
186 if (in_range(addr, range->hw_start, range->size))213 if (in_range(addr, range->hw_start, range->size)) {
187 return addr - range->hw_start + range->io_start;214 unsigned long cpuaddr;
215
216 cpuaddr = addr - range->hw_start + range->io_start;
217
218 rcu_read_unlock();
219 return cpuaddr;
220 }
188 }221 }
189 pr_err("addr %llx not registered in io_range_list\n",222 rcu_read_unlock();
190 (unsigned long long) addr);223
224 pr_err("addr %pa not registered in io_range_list\n", &addr);
225
191 return ~0UL;226 return ~0UL;
192}227}
193 228

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t