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
160160 Matt Ranostay <mranostay@gmail.com> <matt.ranostay@intel.com>
161161 Matt Ranostay <matt.ranostay@konsulko.com> <matt@ranostay.consulting>
162162 Matt Redfearn <matt.redfearn@mips.com> <matt.redfearn@imgtec.com>
163+Maxime Ripard <mripard@kernel.org> <maxime.ripard@bootlin.com>
164+Maxime Ripard <mripard@kernel.org> <maxime.ripard@free-electrons.com>
163165 Mayuresh Janorkar <mayur@ti.com>
164166 Michael Buesch <m@bues.ch>
165167 Michel Dänzer <michel@tungstengraphics.com>
MAINTAINERS+5−5
@@ -683,7 +683,7 @@ S: Maintained · 682 unmodified lines
683683 F: drivers/crypto/sunxi-ss/
684684
685685 ALLWINNER VPU DRIVER
686−M: Maxime Ripard <maxime.ripard@bootlin.com>
686+M: Maxime Ripard <mripard@kernel.org>
687687 M: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
688688 L: linux-media@vger.kernel.org
689689 S: Maintained
@@ -1408,7 +1408,7 @@ S: Maintained · 718 unmodified lines
14081408 F: drivers/clk/sunxi/
14091409
14101410 ARM/Allwinner sunXi SoC support
1411−M: Maxime Ripard <maxime.ripard@bootlin.com>
1411+M: Maxime Ripard <mripard@kernel.org>
14121412 M: Chen-Yu Tsai <wens@csie.org>
14131413 L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
14141414 S: Maintained
@@ -3577,7 +3577,7 @@ F: Documentation/filesystems/caching/cachefiles.txt · 2162 unmodified lines
35773577 F: fs/cachefiles/
35783578
35793579 CADENCE MIPI-CSI2 BRIDGES
3580−M: Maxime Ripard <maxime.ripard@bootlin.com>
3580+M: Maxime Ripard <mripard@kernel.org>
35813581 L: linux-media@vger.kernel.org
35823582 S: Maintained
35833583 F: Documentation/devicetree/bindings/media/cdns,*.txt
@@ -5295,7 +5295,7 @@ F: include/linux/vga* · 1711 unmodified lines
52955295
52965296 DRM DRIVERS AND MISC GPU PATCHES
52975297 M: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
5298−M: Maxime Ripard <maxime.ripard@bootlin.com>
5298+M: Maxime Ripard <mripard@kernel.org>
52995299 M: Sean Paul <sean@poorly.run>
53005300 W: https://01.org/linuxgraphics/gfx-docs/maintainer-tools/drm-misc.html
53015301 S: Maintained
@@ -5308,7 +5308,7 @@ F: include/uapi/drm/drm* · 6 unmodified lines
53085308 F: include/linux/vga*
53095309
53105310 DRM DRIVERS FOR ALLWINNER A10
5311−M: Maxime Ripard <maxime.ripard@bootlin.com>
5311+M: Maxime Ripard <mripard@kernel.org>
53125312 L: dri-devel@lists.freedesktop.org
53135313 S: Supported
53145314 F: drivers/gpu/drm/sun4i/
arch/arm/boot/dts/am33xx-l4.dtsi+10−6
@@ -185,7 +185,7 @@ · 184 unmodified lines
185185 uart0: serial@0 {
186186 compatible = "ti,am3352-uart", "ti,omap3-uart";
187187 clock-frequency = <48000000>;
188− reg = <0x0 0x2000>;
188+ reg = <0x0 0x1000>;
189189 interrupts = <72>;
190190 status = "disabled";
191191 dmas = <&edma 26 0>, <&edma 27 0>;
@@ -934,7 +934,7 @@ · 742 unmodified lines
934934 uart1: serial@0 {
935935 compatible = "ti,am3352-uart", "ti,omap3-uart";
936936 clock-frequency = <48000000>;
937− reg = <0x0 0x2000>;
937+ reg = <0x0 0x1000>;
938938 interrupts = <73>;
939939 status = "disabled";
940940 dmas = <&edma 28 0>, <&edma 29 0>;
@@ -966,7 +966,7 @@ · 25 unmodified lines
966966 uart2: serial@0 {
967967 compatible = "ti,am3352-uart", "ti,omap3-uart";
968968 clock-frequency = <48000000>;
969− reg = <0x0 0x2000>;
969+ reg = <0x0 0x1000>;
970970 interrupts = <74>;
971971 status = "disabled";
972972 dmas = <&edma 30 0>, <&edma 31 0>;
@@ -1614,7 +1614,7 @@ · 641 unmodified lines
16141614 uart3: serial@0 {
16151615 compatible = "ti,am3352-uart", "ti,omap3-uart";
16161616 clock-frequency = <48000000>;
1617− reg = <0x0 0x2000>;
1617+ reg = <0x0 0x1000>;
16181618 interrupts = <44>;
16191619 status = "disabled";
16201620 };
@@ -1644,7 +1644,7 @@ · 23 unmodified lines
16441644 uart4: serial@0 {
16451645 compatible = "ti,am3352-uart", "ti,omap3-uart";
16461646 clock-frequency = <48000000>;
1647− reg = <0x0 0x2000>;
1647+ reg = <0x0 0x1000>;
16481648 interrupts = <45>;
16491649 status = "disabled";
16501650 };
@@ -1674,7 +1674,7 @@ · 23 unmodified lines
16741674 uart5: serial@0 {
16751675 compatible = "ti,am3352-uart", "ti,omap3-uart";
16761676 clock-frequency = <48000000>;
1677− reg = <0x0 0x2000>;
1677+ reg = <0x0 0x1000>;
16781678 interrupts = <46>;
16791679 status = "disabled";
16801680 };
@@ -1758,6 +1758,8 @@ · 77 unmodified lines
17581758
17591759 target-module@cc000 { /* 0x481cc000, ap 60 46.0 */
17601760 compatible = "ti,sysc-omap4", "ti,sysc";
1761+ reg = <0xcc020 0x4>;
1762+ reg-names = "rev";
17611763 ti,hwmods = "d_can0";
17621764 /* Domains (P, C): per_pwrdm, l4ls_clkdm */
17631765 clocks = <&l4ls_clkctrl AM3_L4LS_D_CAN0_CLKCTRL 0>,
@@ -1780,6 +1782,8 @@ · 16 unmodified lines
17801782
17811783 target-module@d0000 { /* 0x481d0000, ap 62 42.0 */
17821784 compatible = "ti,sysc-omap4", "ti,sysc";
1785+ reg = <0xd0020 0x4>;
1786+ reg-names = "rev";
17831787 ti,hwmods = "d_can1";
17841788 /* Domains (P, C): per_pwrdm, l4ls_clkdm */
17851789 clocks = <&l4ls_clkctrl AM3_L4LS_D_CAN1_CLKCTRL 0>,
arch/arm/boot/dts/am33xx.dtsi+26−6
@@ -234,13 +234,33 @@ · 233 unmodified lines
234234 interrupt-names = "edma3_tcerrint";
235235 };
236236
237− mmc3: mmc@47810000 {
238− compatible = "ti,omap4-hsmmc";
237+ target-module@47810000 {
238+ compatible = "ti,sysc-omap2", "ti,sysc";
239239 ti,hwmods = "mmc3";
240− ti,needs-special-reset;
241− interrupts = <29>;
242− reg = <0x47810000 0x1000>;
243− status = "disabled";
240+ reg = <0x478102fc 0x4>,
241+ <0x47810110 0x4>,
242+ <0x47810114 0x4>;
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+ };
244264 };
245265
246266 usb: usb@47400000 {
arch/arm/boot/dts/am4372.dtsi+26−6
@@ -228,13 +228,33 @@ · 227 unmodified lines
228228 interrupt-names = "edma3_tcerrint";
229229 };
230230
231− mmc3: mmc@47810000 {
232− compatible = "ti,omap4-hsmmc";
233− reg = <0x47810000 0x1000>;
231+ target-module@47810000 {
232+ compatible = "ti,sysc-omap2", "ti,sysc";
234233 ti,hwmods = "mmc3";
235− ti,needs-special-reset;
236− interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
237− status = "disabled";
234+ reg = <0x478102fc 0x4>,
235+ <0x47810110 0x4>,
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+ };
238258 };
239259
240260 sham: sham@53100000 {
arch/arm/boot/dts/am437x-l4.dtsi+4−0
@@ -1574,6 +1574,8 @@ · 1573 unmodified lines
15741574
15751575 target-module@cc000 { /* 0x481cc000, ap 50 46.0 */
15761576 compatible = "ti,sysc-omap4", "ti,sysc";
1577+ reg = <0xcc020 0x4>;
1578+ reg-names = "rev";
15771579 ti,hwmods = "d_can0";
15781580 /* Domains (P, C): per_pwrdm, l4ls_clkdm */
15791581 clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN0_CLKCTRL 0>;
@@ -1593,6 +1595,8 @@ · 13 unmodified lines
15931595
15941596 target-module@d0000 { /* 0x481d0000, ap 52 3a.0 */
15951597 compatible = "ti,sysc-omap4", "ti,sysc";
1598+ reg = <0xd0020 0x4>;
1599+ reg-names = "rev";
15961600 ti,hwmods = "d_can1";
15971601 /* Domains (P, C): per_pwrdm, l4ls_clkdm */
15981602 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
175175 };
176176
177177 &mmc1 {
178− pinctrl-names = "default", "hs", "sdr12", "sdr25", "sdr50", "ddr50", "sdr104";
178+ pinctrl-names = "default", "hs";
179179 pinctrl-0 = <&mmc1_pins_default_no_clk_pu>;
180180 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>;
186181 };
187182
188183 &mmc2 {
arch/arm/boot/dts/am572x-idk.dts+1−6
@@ -16,14 +16,9 @@ · 15 unmodified lines
1616 };
1717
1818 &mmc1 {
19− pinctrl-names = "default", "hs", "sdr12", "sdr25", "sdr50", "ddr50", "sdr104";
19+ pinctrl-names = "default", "hs";
2020 pinctrl-0 = <&mmc1_pins_default_no_clk_pu>;
2121 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>;
2722 };
2823
2924 &mmc2 {
arch/arm/boot/dts/am574x-idk.dts+1−6
@@ -24,14 +24,9 @@ · 23 unmodified lines
2424 };
2525
2626 &mmc1 {
27− pinctrl-names = "default", "hs", "sdr12", "sdr25", "sdr50", "ddr50", "sdr104";
27+ pinctrl-names = "default", "hs";
2828 pinctrl-0 = <&mmc1_pins_default_no_clk_pu>;
2929 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>;
3530 };
3631
3732 &mmc2 {
arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi+2−1
@@ -379,7 +379,7 @@ · 378 unmodified lines
379379 };
380380 };
381381
382−&gpio7 {
382+&gpio7_target {
383383 ti,no-reset-on-init;
384384 ti,no-idle-on-init;
385385 };
@@ -430,6 +430,7 @@ · 44 unmodified lines
430430
431431 bus-width = <4>;
432432 cd-gpios = <&gpio6 27 GPIO_ACTIVE_LOW>; /* gpio 219 */
433+ no-1-8-v;
433434 };
434435
435436 &mmc2 {
arch/arm/boot/dts/am57xx-beagle-x15-revb1.dts+1−6
@@ -16,14 +16,9 @@ · 15 unmodified lines
1616 };
1717
1818 &mmc1 {
19− pinctrl-names = "default", "hs", "sdr12", "sdr25", "sdr50", "ddr50", "sdr104";
19+ pinctrl-names = "default", "hs";
2020 pinctrl-0 = <&mmc1_pins_default>;
2121 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>;
2722 vmmc-supply = <&vdd_3v3>;
2823 vqmmc-supply = <&ldo1_reg>;
2924 };
arch/arm/boot/dts/am57xx-beagle-x15-revc.dts+1−6
@@ -16,14 +16,9 @@ · 15 unmodified lines
1616 };
1717
1818 &mmc1 {
19− pinctrl-names = "default", "hs", "sdr12", "sdr25", "sdr50", "ddr50", "sdr104";
19+ pinctrl-names = "default", "hs";
2020 pinctrl-0 = <&mmc1_pins_default>;
2121 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>;
2722 vmmc-supply = <&vdd_3v3>;
2823 vqmmc-supply = <&ldo1_reg>;
2924 };
arch/arm/boot/dts/dra7-evm.dts+1−1
@@ -498,7 +498,7 @@ · 497 unmodified lines
498498 phy-supply = <&ldousb_reg>;
499499 };
500500
501−&gpio7 {
501+&gpio7_target {
502502 ti,no-reset-on-init;
503503 ti,no-idle-on-init;
504504 };
arch/arm/boot/dts/dra7-l4.dtsi+3−3
@@ -1261,7 +1261,7 @@ · 1260 unmodified lines
12611261 };
12621262 };
12631263
1264− target-module@51000 { /* 0x48051000, ap 45 2e.0 */
1264+ gpio7_target: target-module@51000 { /* 0x48051000, ap 45 2e.0 */
12651265 compatible = "ti,sysc-omap2", "ti,sysc";
12661266 ti,hwmods = "gpio7";
12671267 reg = <0x51000 0x4>,
@@ -3025,7 +3025,7 @@ · 1757 unmodified lines
30253025
30263026 target-module@80000 { /* 0x48480000, ap 31 16.0 */
30273027 compatible = "ti,sysc-omap4", "ti,sysc";
3028− reg = <0x80000 0x4>;
3028+ reg = <0x80020 0x4>;
30293029 reg-names = "rev";
30303030 clocks = <&l4per2_clkctrl DRA7_L4PER2_DCAN2_CLKCTRL 0>;
30313031 clock-names = "fck";
@@ -4577,7 +4577,7 @@ · 1545 unmodified lines
45774577
45784578 target-module@c000 { /* 0x4ae3c000, ap 30 04.0 */
45794579 compatible = "ti,sysc-omap4", "ti,sysc";
4580− reg = <0xc000 0x4>;
4580+ reg = <0xc020 0x4>;
45814581 reg-names = "rev";
45824582 clocks = <&wkupaon_clkctrl DRA7_WKUPAON_DCAN1_CLKCTRL 0>;
45834583 clock-names = "fck";
arch/arm/boot/dts/dra74x-mmc-iodelay.dtsi+25−25
@@ -32,7 +32,7 @@ · 31 unmodified lines
3232 *
3333 * Datamanual Revisions:
3434 *
35− * AM572x Silicon Revision 2.0: SPRS953B, Revised November 2016
35+ * AM572x Silicon Revision 2.0: SPRS953F, Revised May 2019
3636 * AM572x Silicon Revision 1.1: SPRS915R, Revised November 2016
3737 *
3838 */
@@ -229,45 +229,45 @@ · 190 unmodified lines
229229
230230 mmc3_pins_default: mmc3_pins_default {
231231 pinctrl-single,pins = <
232− DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
233− DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
234− DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
235− DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
236− DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
237− DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
232+ DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
233+ DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
234+ DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
235+ DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
236+ DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
237+ DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
238238 >;
239239 };
240240
241241 mmc3_pins_hs: mmc3_pins_hs {
242242 pinctrl-single,pins = <
243− DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
244− DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
245− DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
246− DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
247− DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
248− DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
243+ DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
244+ DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
245+ DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
246+ DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
247+ DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
248+ DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
249249 >;
250250 };
251251
252252 mmc3_pins_sdr12: mmc3_pins_sdr12 {
253253 pinctrl-single,pins = <
254− DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
255− DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
256− DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
257− DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
258− DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
259− DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
254+ DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
255+ DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
256+ DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
257+ DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
258+ DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
259+ DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
260260 >;
261261 };
262262
263263 mmc3_pins_sdr25: mmc3_pins_sdr25 {
264264 pinctrl-single,pins = <
265− DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
266− DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
267− DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
268− DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
269− DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
270− DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
265+ DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
266+ DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
267+ DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
268+ DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
269+ DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
270+ DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
271271 >;
272272 };
273273
arch/arm/boot/dts/vf610-bk4.dts+2−2
@@ -246,13 +246,13 @@ · 245 unmodified lines
246246 reg = <0>;
247247 };
248248
249− n25q128a13_2: flash@1 {
249+ n25q128a13_2: flash@2 {
250250 compatible = "n25q128a13", "jedec,spi-nor";
251251 #address-cells = <1>;
252252 #size-cells = <1>;
253253 spi-max-frequency = <66000000>;
254254 spi-rx-bus-width = <2>;
255− reg = <1>;
255+ reg = <2>;
256256 };
257257 };
258258
arch/arm/mach-omap1/ams-delta-fiq-handler.S+2−1
@@ -126,6 +126,8 @@ restart: · 125 unmodified lines
126126 orr r11, r11, r13 @ mask all requested interrupts
127127 str r11, [r12, #OMAP1510_GPIO_INT_MASK]
128128
129+ str r13, [r12, #OMAP1510_GPIO_INT_STATUS] @ ack all requested interrupts
130+
129131 ands r10, r13, #KEYBRD_CLK_MASK @ extract keyboard status - set?
130132 beq hksw @ no - try next source
131133
@@ -133,7 +135,6 @@ restart: · 1 unmodified line
133135 @@@@@@@@@@@@@@@@@@@@@@
134136 @ Keyboard clock FIQ mode interrupt handler
135137 @ r10 now contains KEYBRD_CLK_MASK, use it
136− str r10, [r12, #OMAP1510_GPIO_INT_STATUS] @ ack the interrupt
137138 bic r11, r11, r10 @ unmask it
138139 str r11, [r12, #OMAP1510_GPIO_INT_MASK]
139140
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
7070 * interrupts default to since commit 80ac93c27441
7171 * requires interrupt already acked and unmasked.
7272 */
73− if (irq_chip->irq_ack)
74− irq_chip->irq_ack(d);
75− if (irq_chip->irq_unmask)
73+ if (!WARN_ON_ONCE(!irq_chip->irq_unmask))
7674 irq_chip->irq_unmask(d);
7775 }
7876 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
127127 struct device_node *np;
128128 struct gen_pool *sram_pool;
129129
130+ if (!soc_is_omap44xx() && !soc_is_omap54xx())
131+ return 0;
132+
130133 np = of_find_compatible_node(NULL, NULL, "ti,omap4-mpu");
131134 if (!np)
132135 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
379379 static struct omap_hwmod_class_sysconfig dra7xx_epwmss_sysc = {
380380 .rev_offs = 0x0,
381381 .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,
383384 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
384385 .sysc_fields = &omap_hwmod_sysc_type2,
385386 };
arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts+6−0
@@ -339,6 +339,12 @@ · 338 unmodified lines
339339 pinctrl-names = "default";
340340 };
341341
342+&ir {
343+ status = "okay";
344+ pinctrl-0 = <&remote_input_ao_pins>;
345+ pinctrl-names = "default";
346+};
347+
342348 &pwm_ef {
343349 status = "okay";
344350 pinctrl-0 = <&pwm_e_pins>;
arch/arm64/boot/dts/amlogic/meson-g12a.dtsi+1−0
@@ -2386,6 +2386,7 @@ · 2385 unmodified lines
23862386 clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;
23872387 clock-names = "ddr";
23882388 phys = <&usb2_phy1>;
2389+ phy-names = "usb2-phy";
23892390 dr_mode = "peripheral";
23902391 g-rx-fifo-size = <192>;
23912392 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
5353
5454 gpio = <&gpio_ao GPIOAO_8 GPIO_ACTIVE_HIGH>;
5555 enable-active-high;
56+ regulator-always-on;
5657 };
5758
5859 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
456456 size_t pdata_size;
457457 };
458458
459+static 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+
459470 /*
460471 * hisi_lpc_acpi_probe - probe children for ACPI FW
461472 * @hostdev: LPC host device pointer
@@ -555,8 +566,7 @@ static int hisi_lpc_acpi_probe(struct device *hostdev) · 93 unmodified lines
555566 return 0;
556567
557568 fail:
558− device_for_each_child(hostdev, NULL,
559− hisi_lpc_acpi_remove_subdev);
569+ hisi_lpc_acpi_remove(hostdev);
560570 return ret;
561571 }
562572
@@ -569,6 +579,10 @@ static int hisi_lpc_acpi_probe(struct device *dev) · 6 unmodified lines
569579 {
570580 return -ENODEV;
571581 }
582+
583+static void hisi_lpc_acpi_remove(struct device *hostdev)
584+{
585+}
572586 #endif // CONFIG_ACPI
573587
574588 /*
@@ -606,24 +620,27 @@ static int hisi_lpc_probe(struct platform_device *pdev) · 31 unmodified lines
606620 range->fwnode = dev->fwnode;
607621 range->flags = LOGIC_PIO_INDIRECT;
608622 range->size = PIO_INDIRECT_SIZE;
623+ range->hostdata = lpcdev;
624+ range->ops = &hisi_lpc_ops;
625+ lpcdev->io_host = range;
609626
610627 ret = logic_pio_register_range(range);
611628 if (ret) {
612629 dev_err(dev, "register IO range failed (%d)!\n", ret);
613630 return ret;
614631 }
615− lpcdev->io_host = range;
616632
617633 /* register the LPC host PIO resources */
618634 if (acpi_device)
619635 ret = hisi_lpc_acpi_probe(dev);
620636 else
621637 ret = of_platform_populate(dev->of_node, NULL, NULL, dev);
622− if (ret)
638+ if (ret) {
639+ logic_pio_unregister_range(range);
623640 return ret;
641+ }
624642
625− lpcdev->io_host->hostdata = lpcdev;
626− lpcdev->io_host->ops = &hisi_lpc_ops;
643+ dev_set_drvdata(dev, lpcdev);
627644
628645 io_end = lpcdev->io_host->io_start + lpcdev->io_host->size;
629646 dev_info(dev, "registered range [%pa - %pa]\n",
@@ -632,6 +649,23 @@ static int hisi_lpc_probe(struct platform_device *pdev) · 2 unmodified lines
632649 return ret;
633650 }
634651
652+static 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+
635669 static const struct of_device_id hisi_lpc_of_match[] = {
636670 { .compatible = "hisilicon,hip06-lpc", },
637671 { .compatible = "hisilicon,hip07-lpc", },
@@ -645,5 +679,6 @@ static struct platform_driver hisi_lpc_driver = { · 7 unmodified lines
645679 .acpi_match_table = ACPI_PTR(hisi_lpc_acpi_match),
646680 },
647681 .probe = hisi_lpc_probe,
682+ .remove = hisi_lpc_remove,
648683 };
649684 builtin_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
949949 *best_mode = SYSC_IDLE_SMART_WKUP;
950950 else if (idlemodes & BIT(SYSC_IDLE_SMART))
951951 *best_mode = SYSC_IDLE_SMART;
952− else if (idlemodes & SYSC_IDLE_FORCE)
952+ else if (idlemodes & BIT(SYSC_IDLE_FORCE))
953953 *best_mode = SYSC_IDLE_FORCE;
954954 else
955955 return -EINVAL;
@@ -1267,7 +1267,8 @@ static const struct sysc_revision_quirk sysc_revision_quirks[] = { · 311 unmodified lines
12671267 SYSC_QUIRK("control", 0, 0, 0x10, -1, 0x40000900, 0xffffffff, 0),
12681268 SYSC_QUIRK("cpgmac", 0, 0x1200, 0x1208, 0x1204, 0x4edb1902,
12691269 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),
12711272 SYSC_QUIRK("dmic", 0, 0, 0x10, -1, 0x50010000, 0xffffffff, 0),
12721273 SYSC_QUIRK("dwc3", 0, 0, 0x10, -1, 0x500a0200, 0xffffffff, 0),
12731274 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
16921693 if (error)
16931694 return 0;
16941695
1695− if (val)
1696− ddata->cfg.sysc_val = val & ddata->cap->sysc_mask;
1697− else
1698− ddata->cfg.sysc_val = ddata->cap->sysc_mask;
1696+ ddata->cfg.sysc_val = val & ddata->cap->sysc_mask;
16991697
17001698 return 0;
17011699 }
@@ -2385,27 +2383,27 @@ static int sysc_probe(struct platform_device *pdev) · 683 unmodified lines
23852383
23862384 error = sysc_init_dts_quirks(ddata);
23872385 if (error)
2388− goto unprepare;
2386+ return error;
23892387
23902388 error = sysc_map_and_check_registers(ddata);
23912389 if (error)
2392− goto unprepare;
2390+ return error;
23932391
23942392 error = sysc_init_sysc_mask(ddata);
23952393 if (error)
2396− goto unprepare;
2394+ return error;
23972395
23982396 error = sysc_init_idlemodes(ddata);
23992397 if (error)
2400− goto unprepare;
2398+ return error;
24012399
24022400 error = sysc_init_syss_mask(ddata);
24032401 if (error)
2404− goto unprepare;
2402+ return error;
24052403
24062404 error = sysc_init_pdata(ddata);
24072405 if (error)
2408− goto unprepare;
2406+ return error;
24092407
24102408 sysc_init_early_quirks(ddata);
24112409
@@ -2415,7 +2413,7 @@ static int sysc_probe(struct platform_device *pdev) · 3 unmodified lines
24152413
24162414 error = sysc_init_resets(ddata);
24172415 if (error)
2418− return error;
2416+ goto unprepare;
24192417
24202418 error = sysc_init_module(ddata);
24212419 if (error)
drivers/soc/ixp4xx/Kconfig+4−0
@@ -1,4 +1,6 @@
11 # SPDX-License-Identifier: GPL-2.0-only
2+if ARCH_IXP4XX || COMPILE_TEST
3+
24 menu "IXP4xx SoC drivers"
35
46 config IXP4XX_QMGR
@@ -15,3 +17,5 @@ config IXP4XX_NPE · 10 unmodified lines
1517 and is automatically selected by Ethernet and HSS drivers.
1618
1719 endmenu
20+
21+endif
drivers/soc/ti/pm33xx.c+12−7
@@ -141,7 +141,7 @@ static int __init am43xx_map_gic(void) · 140 unmodified lines
141141 }
142142
143143 #ifdef CONFIG_SUSPEND
144−struct wkup_m3_wakeup_src rtc_wake_src(void)
144+static struct wkup_m3_wakeup_src rtc_wake_src(void)
145145 {
146146 u32 i;
147147
@@ -157,7 +157,7 @@ struct wkup_m3_wakeup_src rtc_wake_src(void) · 9 unmodified lines
157157 return rtc_ext_wakeup;
158158 }
159159
160−int am33xx_rtc_only_idle(unsigned long wfi_flags)
160+static int am33xx_rtc_only_idle(unsigned long wfi_flags)
161161 {
162162 omap_rtc_power_off_program(&omap_rtc->dev);
163163 am33xx_do_wfi_sram(wfi_flags);
@@ -252,7 +252,7 @@ static int am33xx_pm_begin(suspend_state_t state) · 88 unmodified lines
252252 if (state == PM_SUSPEND_MEM && pm_ops->check_off_mode_enable()) {
253253 nvmem = devm_nvmem_device_get(&omap_rtc->dev,
254254 "omap_rtc_scratch0");
255− if (nvmem)
255+ if (!IS_ERR(nvmem))
256256 nvmem_device_write(nvmem, RTC_SCRATCH_MAGIC_REG * 4, 4,
257257 (void *)&rtc_magic_val);
258258 rtc_only_idle = 1;
@@ -278,9 +278,12 @@ static void am33xx_pm_end(void) · 19 unmodified lines
278278 struct nvmem_device *nvmem;
279279
280280 nvmem = devm_nvmem_device_get(&omap_rtc->dev, "omap_rtc_scratch0");
281+ if (IS_ERR(nvmem))
282+ return;
283+
281284 m3_ipc->ops->finish_low_power(m3_ipc);
282285 if (rtc_only_idle) {
283− if (retrigger_irq)
286+ if (retrigger_irq) {
284287 /*
285288 * 32 bits of Interrupt Set-Pending correspond to 32
286289 * 32 interrupts. Compute the bit offset of the
@@ -291,8 +294,10 @@ static void am33xx_pm_end(void) · 4 unmodified lines
291294 writel_relaxed(1 << (retrigger_irq & 31),
292295 gic_dist_base + GIC_INT_SET_PENDING_BASE
293296 + retrigger_irq / 32 * 4);
294− nvmem_device_write(nvmem, RTC_SCRATCH_MAGIC_REG * 4, 4,
295− (void *)&val);
297+ }
298+
299+ nvmem_device_write(nvmem, RTC_SCRATCH_MAGIC_REG * 4, 4,
300+ (void *)&val);
296301 }
297302
298303 rtc_only_idle = 0;
@@ -415,7 +420,7 @@ static int am33xx_pm_rtc_setup(void) · 116 unmodified lines
415420
416421 nvmem = devm_nvmem_device_get(&omap_rtc->dev,
417422 "omap_rtc_scratch0");
418− if (nvmem) {
423+ if (!IS_ERR(nvmem)) {
419424 nvmem_device_read(nvmem, RTC_SCRATCH_MAGIC_REG * 4,
420425 4, (void *)&rtc_magic_val);
421426 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
117117 unsigned long logic_pio_trans_hwaddr(struct fwnode_handle *fwnode,
118118 resource_size_t hw_addr, resource_size_t size);
119119 int logic_pio_register_range(struct logic_pio_hwaddr *newrange);
120+void logic_pio_unregister_range(struct logic_pio_hwaddr *range);
120121 resource_size_t logic_pio_to_hwaddr(unsigned long pio);
121122 unsigned long logic_pio_trans_cpuaddr(resource_size_t hw_addr);
122123
lib/logic_pio.c+54−19
@@ -35,7 +35,7 @@ int logic_pio_register_range(struct logic_pio_hwaddr *new_range) · 34 unmodified lines
3535 struct logic_pio_hwaddr *range;
3636 resource_size_t start;
3737 resource_size_t end;
38− resource_size_t mmio_sz = 0;
38+ resource_size_t mmio_end = 0;
3939 resource_size_t iio_sz = MMIO_UPPER_LIMIT;
4040 int ret = 0;
4141
@@ -46,7 +46,7 @@ int logic_pio_register_range(struct logic_pio_hwaddr *new_range) · 4 unmodified lines
4646 end = new_range->hw_start + new_range->size;
4747
4848 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) {
5050 if (range->fwnode == new_range->fwnode) {
5151 /* range already there */
5252 goto end_register;
@@ -56,7 +56,7 @@ int logic_pio_register_range(struct logic_pio_hwaddr *new_range) · 3 unmodified lines
5656 /* for MMIO ranges we need to check for overlap */
5757 if (start >= range->hw_start + range->size ||
5858 end < range->hw_start) {
59− mmio_sz += range->size;
59+ mmio_end = range->io_start + range->size;
6060 } else {
6161 ret = -EFAULT;
6262 goto end_register;
@@ -69,16 +69,16 @@ int logic_pio_register_range(struct logic_pio_hwaddr *new_range) · 6 unmodified lines
6969
7070 /* range not registered yet, check for available space */
7171 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) {
7373 /* 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) {
7575 ret = -E2BIG;
7676 goto end_register;
7777 }
7878 new_range->size = SZ_64K;
7979 pr_warn("Requested IO range too big, new size set to 64K\n");
8080 }
81− new_range->io_start = mmio_sz;
81+ new_range->io_start = mmio_end;
8282 } else if (new_range->flags == LOGIC_PIO_INDIRECT) {
8383 if (iio_sz + new_range->size - 1 > IO_SPACE_LIMIT) {
8484 ret = -E2BIG;
@@ -98,6 +98,20 @@ end_register: · 13 unmodified lines
9898 return ret;
9999 }
100100
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+ */
107+void 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+
101115 /**
102116 * find_io_range_by_fwnode - find logical PIO range for given FW node
103117 * @fwnode: FW node handle associated with logical PIO range
@@ -108,26 +122,38 @@ end_register: · 4 unmodified lines
108122 */
109123 struct logic_pio_hwaddr *find_io_range_by_fwnode(struct fwnode_handle *fwnode)
110124 {
111− struct logic_pio_hwaddr *range;
125+ struct logic_pio_hwaddr *range, *found_range = NULL;
112126
127+ rcu_read_lock();
113128 list_for_each_entry_rcu(range, &io_range_list, list) {
114− if (range->fwnode == fwnode)
115− return range;
129+ if (range->fwnode == fwnode) {
130+ found_range = range;
131+ break;
132+ }
116133 }
117− return NULL;
134+ rcu_read_unlock();
135+
136+ return found_range;
118137 }
119138
120139 /* Return a registered range given an input PIO token */
121140 static struct logic_pio_hwaddr *find_io_range(unsigned long pio)
122141 {
123− struct logic_pio_hwaddr *range;
142+ struct logic_pio_hwaddr *range, *found_range = NULL;
124143
144+ rcu_read_lock();
125145 list_for_each_entry_rcu(range, &io_range_list, list) {
126− if (in_range(pio, range->io_start, range->size))
127− return range;
146+ if (in_range(pio, range->io_start, range->size)) {
147+ found_range = range;
148+ break;
149+ }
128150 }
129− pr_err("PIO entry token %lx invalid\n", pio);
130− return NULL;
151+ rcu_read_unlock();
152+
153+ if (!found_range)
154+ pr_err("PIO entry token 0x%lx invalid\n", pio);
155+
156+ return found_range;
131157 }
132158
133159 /**
@@ -180,14 +206,23 @@ unsigned long logic_pio_trans_cpuaddr(resource_size_t addr) · 46 unmodified lines
180206 {
181207 struct logic_pio_hwaddr *range;
182208
209+ rcu_read_lock();
183210 list_for_each_entry_rcu(range, &io_range_list, list) {
184211 if (range->flags != LOGIC_PIO_CPU_MMIO)
185212 continue;
186− if (in_range(addr, range->hw_start, range->size))
187− return addr - range->hw_start + range->io_start;
213+ if (in_range(addr, range->hw_start, range->size)) {
214+ unsigned long cpuaddr;
215+
216+ cpuaddr = addr - range->hw_start + range->io_start;
217+
218+ rcu_read_unlock();
219+ return cpuaddr;
220+ }
188221 }
189− pr_err("addr %llx not registered in io_range_list\n",
190− (unsigned long long) addr);
222+ rcu_read_unlock();
223+
224+ pr_err("addr %pa not registered in io_range_list\n", &addr);
225+
191226 return ~0UL;
192227 }
193228

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