aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-04-26 19:17:01 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-04-26 19:17:01 -0400
commit91ea692f8798a40a3f9ed771fade1bdff08acd58 (patch)
tree50fec45518aeba3a178e34ae2020c1ee3a78027c
parent8ead9dd54716d1e05e129959f702fcc1786f82b4 (diff)
parent978fa436231a834dc686292efc7d944d9013e035 (diff)
Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC fixes from Arnd Bergmann: "Here are the latest bug fixes for ARM SoCs, mostly addressing recent regressions. Changes are across several platforms, so I'm listing every change separately here. Regressions since 4.5: - A correction of the psci firmware DT binding, to prevent users from relying on unintended semantics - Actually getting the newly merged clock driver for some OMAP platforms to work - A revert of patches for the Qualcomm BAM, these need to be reworked for 4.7 to avoid breaking boards other than the one they were intended for - A correction for the I2C device nodes on the Socionext Uniphier platform - i.MX SDHCI was broken for non-DT platforms due to a change with the setting of the DMA mask - A revert of a patch that accidentally added a nonexisting clock on the Rensas "Porter" board - A couple of OMAP fixes that are all related to suspend after the power domain changes for dra7 - On Mediatek, revert part of the power domain initialization changes that broke mt8173-evb Fixes for older bugs: - Workaround for an "external abort" in the omap34xx suspend/resume code. - The USB1/eSATA should not be listed as an excon device on am57xx-beagle-x15 (broken since v4.0) - A v4.5 regression in the TI AM33xx and AM43XX DT specifying incorrect DMA request lines for the GPMC - The jiffies calibration on Renesas platforms was incorrect for some modern CPU cores. - A hardware errata woraround for clockdomains on TI DRA7" * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: drivers: firmware: psci: unify enable-method binding on ARM {64,32}-bit systems arm64: dts: uniphier: fix I2C nodes of PH1-LD20 ARM: shmobile: timer: Fix preset_lpj leading to too short delays Revert "ARM: dts: porter: Enable SCIF_CLK frequency and pins" ARM: dts: r8a7791: Don't disable referenced optional clocks Revert "ARM: OMAP: Catch callers of revision information prior to it being populated" ARM: OMAP3: Fix external abort on 36xx waking from off mode idle ARM: dts: am57xx-beagle-x15: remove extcon_usb1 ARM: dts: am437x: Fix GPMC dma properties ARM: dts: am33xx: Fix GPMC dma properties Revert "soc: mediatek: SCPSYS: Fix double enabling of regulators" ARM: mach-imx: sdhci-esdhc-imx: initialize DMA mask ARM: DRA7: clockdomain: Implement timer workaround for errata i874 ARM: OMAP: Catch callers of revision information prior to it being populated ARM: dts: dra7: Correct clock tree for sys_32k_ck ARM: OMAP: DRA7: Provide proper class to omap2_set_globals_tap ARM: OMAP: DRA7: wakeupgen: Skip SAR save for wakeupgen Revert "dts: msm8974: Add dma channels for blsp2_i2c1 node" Revert "dts: msm8974: Add blsp2_bam dma node" ARM: dts: Add clocks for dm814x ADPLL
-rw-r--r--Documentation/devicetree/bindings/arm/cpus.txt1
-rw-r--r--arch/arm/boot/dts/am33xx.dtsi2
-rw-r--r--arch/arm/boot/dts/am4372.dtsi2
-rw-r--r--arch/arm/boot/dts/am57xx-beagle-x15.dts17
-rw-r--r--arch/arm/boot/dts/dm814x-clocks.dtsi243
-rw-r--r--arch/arm/boot/dts/dra62x-clocks.dtsi26
-rw-r--r--arch/arm/boot/dts/dra7xx-clocks.dtsi18
-rw-r--r--arch/arm/boot/dts/qcom-msm8974.dtsi14
-rw-r--r--arch/arm/boot/dts/r8a7791-koelsch.dts1
-rw-r--r--arch/arm/boot/dts/r8a7791-porter.dts14
-rw-r--r--arch/arm/boot/dts/r8a7791.dtsi5
-rw-r--r--arch/arm/mach-imx/devices/platform-sdhci-esdhc-imx.c5
-rw-r--r--arch/arm/mach-omap2/clockdomains7xx_data.c2
-rw-r--r--arch/arm/mach-omap2/io.c3
-rw-r--r--arch/arm/mach-omap2/omap-wakeupgen.c7
-rw-r--r--arch/arm/mach-omap2/pm34xx.c23
-rw-r--r--arch/arm/mach-shmobile/timer.c28
-rw-r--r--arch/arm64/boot/dts/socionext/uniphier-ph1-ld20-ref.dts1
-rw-r--r--arch/arm64/boot/dts/socionext/uniphier-ph1-ld20.dtsi20
-rw-r--r--drivers/firmware/psci.c2
-rw-r--r--drivers/soc/mediatek/mtk-scpsys.c11
21 files changed, 310 insertions, 135 deletions
diff --git a/Documentation/devicetree/bindings/arm/cpus.txt b/Documentation/devicetree/bindings/arm/cpus.txt
index ccc62f145306..3f0cbbb8395f 100644
--- a/Documentation/devicetree/bindings/arm/cpus.txt
+++ b/Documentation/devicetree/bindings/arm/cpus.txt
@@ -192,7 +192,6 @@ nodes to be present and contain the properties described below.
192 can be one of: 192 can be one of:
193 "allwinner,sun6i-a31" 193 "allwinner,sun6i-a31"
194 "allwinner,sun8i-a23" 194 "allwinner,sun8i-a23"
195 "arm,psci"
196 "arm,realview-smp" 195 "arm,realview-smp"
197 "brcm,bcm-nsp-smp" 196 "brcm,bcm-nsp-smp"
198 "brcm,brahma-b15" 197 "brcm,brahma-b15"
diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
index 55ca9c7dcf6a..0467846b4cc3 100644
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -860,7 +860,7 @@
860 ti,no-idle-on-init; 860 ti,no-idle-on-init;
861 reg = <0x50000000 0x2000>; 861 reg = <0x50000000 0x2000>;
862 interrupts = <100>; 862 interrupts = <100>;
863 dmas = <&edma 52>; 863 dmas = <&edma 52 0>;
864 dma-names = "rxtx"; 864 dma-names = "rxtx";
865 gpmc,num-cs = <7>; 865 gpmc,num-cs = <7>;
866 gpmc,num-waitpins = <2>; 866 gpmc,num-waitpins = <2>;
diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi
index 344b861a55a5..ba580a9da390 100644
--- a/arch/arm/boot/dts/am4372.dtsi
+++ b/arch/arm/boot/dts/am4372.dtsi
@@ -884,7 +884,7 @@
884 gpmc: gpmc@50000000 { 884 gpmc: gpmc@50000000 {
885 compatible = "ti,am3352-gpmc"; 885 compatible = "ti,am3352-gpmc";
886 ti,hwmods = "gpmc"; 886 ti,hwmods = "gpmc";
887 dmas = <&edma 52>; 887 dmas = <&edma 52 0>;
888 dma-names = "rxtx"; 888 dma-names = "rxtx";
889 clocks = <&l3s_gclk>; 889 clocks = <&l3s_gclk>;
890 clock-names = "fck"; 890 clock-names = "fck";
diff --git a/arch/arm/boot/dts/am57xx-beagle-x15.dts b/arch/arm/boot/dts/am57xx-beagle-x15.dts
index 0a5fc5d02ce2..4168eb9dd369 100644
--- a/arch/arm/boot/dts/am57xx-beagle-x15.dts
+++ b/arch/arm/boot/dts/am57xx-beagle-x15.dts
@@ -99,13 +99,6 @@
99 #cooling-cells = <2>; 99 #cooling-cells = <2>;
100 }; 100 };
101 101
102 extcon_usb1: extcon_usb1 {
103 compatible = "linux,extcon-usb-gpio";
104 id-gpio = <&gpio7 25 GPIO_ACTIVE_HIGH>;
105 pinctrl-names = "default";
106 pinctrl-0 = <&extcon_usb1_pins>;
107 };
108
109 hdmi0: connector { 102 hdmi0: connector {
110 compatible = "hdmi-connector"; 103 compatible = "hdmi-connector";
111 label = "hdmi"; 104 label = "hdmi";
@@ -349,12 +342,6 @@
349 >; 342 >;
350 }; 343 };
351 344
352 extcon_usb1_pins: extcon_usb1_pins {
353 pinctrl-single,pins = <
354 DRA7XX_CORE_IOPAD(0x37ec, PIN_INPUT_PULLUP | MUX_MODE14) /* uart1_rtsn.gpio7_25 */
355 >;
356 };
357
358 tpd12s015_pins: pinmux_tpd12s015_pins { 345 tpd12s015_pins: pinmux_tpd12s015_pins {
359 pinctrl-single,pins = < 346 pinctrl-single,pins = <
360 DRA7XX_CORE_IOPAD(0x37b0, PIN_OUTPUT | MUX_MODE14) /* gpio7_10 CT_CP_HPD */ 347 DRA7XX_CORE_IOPAD(0x37b0, PIN_OUTPUT | MUX_MODE14) /* gpio7_10 CT_CP_HPD */
@@ -706,10 +693,6 @@
706 pinctrl-0 = <&usb1_pins>; 693 pinctrl-0 = <&usb1_pins>;
707}; 694};
708 695
709&omap_dwc3_1 {
710 extcon = <&extcon_usb1>;
711};
712
713&omap_dwc3_2 { 696&omap_dwc3_2 {
714 extcon = <&extcon_usb2>; 697 extcon = <&extcon_usb2>;
715}; 698};
diff --git a/arch/arm/boot/dts/dm814x-clocks.dtsi b/arch/arm/boot/dts/dm814x-clocks.dtsi
index e0ea6a93a22e..792a64ee0df7 100644
--- a/arch/arm/boot/dts/dm814x-clocks.dtsi
+++ b/arch/arm/boot/dts/dm814x-clocks.dtsi
@@ -4,6 +4,157 @@
4 * published by the Free Software Foundation. 4 * published by the Free Software Foundation.
5 */ 5 */
6 6
7&pllss {
8 /*
9 * See TRM "2.6.10 Connected outputso DPLLS" and
10 * "2.6.11 Connected Outputs of DPLLJ". Only clkout is
11 * connected except for hdmi and usb.
12 */
13 adpll_mpu_ck: adpll@40 {
14 #clock-cells = <1>;
15 compatible = "ti,dm814-adpll-s-clock";
16 reg = <0x40 0x40>;
17 clocks = <&devosc_ck &devosc_ck &devosc_ck>;
18 clock-names = "clkinp", "clkinpulow", "clkinphif";
19 clock-output-names = "481c5040.adpll.dcoclkldo",
20 "481c5040.adpll.clkout",
21 "481c5040.adpll.clkoutx2",
22 "481c5040.adpll.clkouthif";
23 };
24
25 adpll_dsp_ck: adpll@80 {
26 #clock-cells = <1>;
27 compatible = "ti,dm814-adpll-lj-clock";
28 reg = <0x80 0x30>;
29 clocks = <&devosc_ck &devosc_ck>;
30 clock-names = "clkinp", "clkinpulow";
31 clock-output-names = "481c5080.adpll.dcoclkldo",
32 "481c5080.adpll.clkout",
33 "481c5080.adpll.clkoutldo";
34 };
35
36 adpll_sgx_ck: adpll@b0 {
37 #clock-cells = <1>;
38 compatible = "ti,dm814-adpll-lj-clock";
39 reg = <0xb0 0x30>;
40 clocks = <&devosc_ck &devosc_ck>;
41 clock-names = "clkinp", "clkinpulow";
42 clock-output-names = "481c50b0.adpll.dcoclkldo",
43 "481c50b0.adpll.clkout",
44 "481c50b0.adpll.clkoutldo";
45 };
46
47 adpll_hdvic_ck: adpll@e0 {
48 #clock-cells = <1>;
49 compatible = "ti,dm814-adpll-lj-clock";
50 reg = <0xe0 0x30>;
51 clocks = <&devosc_ck &devosc_ck>;
52 clock-names = "clkinp", "clkinpulow";
53 clock-output-names = "481c50e0.adpll.dcoclkldo",
54 "481c50e0.adpll.clkout",
55 "481c50e0.adpll.clkoutldo";
56 };
57
58 adpll_l3_ck: adpll@110 {
59 #clock-cells = <1>;
60 compatible = "ti,dm814-adpll-lj-clock";
61 reg = <0x110 0x30>;
62 clocks = <&devosc_ck &devosc_ck>;
63 clock-names = "clkinp", "clkinpulow";
64 clock-output-names = "481c5110.adpll.dcoclkldo",
65 "481c5110.adpll.clkout",
66 "481c5110.adpll.clkoutldo";
67 };
68
69 adpll_isp_ck: adpll@140 {
70 #clock-cells = <1>;
71 compatible = "ti,dm814-adpll-lj-clock";
72 reg = <0x140 0x30>;
73 clocks = <&devosc_ck &devosc_ck>;
74 clock-names = "clkinp", "clkinpulow";
75 clock-output-names = "481c5140.adpll.dcoclkldo",
76 "481c5140.adpll.clkout",
77 "481c5140.adpll.clkoutldo";
78 };
79
80 adpll_dss_ck: adpll@170 {
81 #clock-cells = <1>;
82 compatible = "ti,dm814-adpll-lj-clock";
83 reg = <0x170 0x30>;
84 clocks = <&devosc_ck &devosc_ck>;
85 clock-names = "clkinp", "clkinpulow";
86 clock-output-names = "481c5170.adpll.dcoclkldo",
87 "481c5170.adpll.clkout",
88 "481c5170.adpll.clkoutldo";
89 };
90
91 adpll_video0_ck: adpll@1a0 {
92 #clock-cells = <1>;
93 compatible = "ti,dm814-adpll-lj-clock";
94 reg = <0x1a0 0x30>;
95 clocks = <&devosc_ck &devosc_ck>;
96 clock-names = "clkinp", "clkinpulow";
97 clock-output-names = "481c51a0.adpll.dcoclkldo",
98 "481c51a0.adpll.clkout",
99 "481c51a0.adpll.clkoutldo";
100 };
101
102 adpll_video1_ck: adpll@1d0 {
103 #clock-cells = <1>;
104 compatible = "ti,dm814-adpll-lj-clock";
105 reg = <0x1d0 0x30>;
106 clocks = <&devosc_ck &devosc_ck>;
107 clock-names = "clkinp", "clkinpulow";
108 clock-output-names = "481c51d0.adpll.dcoclkldo",
109 "481c51d0.adpll.clkout",
110 "481c51d0.adpll.clkoutldo";
111 };
112
113 adpll_hdmi_ck: adpll@200 {
114 #clock-cells = <1>;
115 compatible = "ti,dm814-adpll-lj-clock";
116 reg = <0x200 0x30>;
117 clocks = <&devosc_ck &devosc_ck>;
118 clock-names = "clkinp", "clkinpulow";
119 clock-output-names = "481c5200.adpll.dcoclkldo",
120 "481c5200.adpll.clkout",
121 "481c5200.adpll.clkoutldo";
122 };
123
124 adpll_audio_ck: adpll@230 {
125 #clock-cells = <1>;
126 compatible = "ti,dm814-adpll-lj-clock";
127 reg = <0x230 0x30>;
128 clocks = <&devosc_ck &devosc_ck>;
129 clock-names = "clkinp", "clkinpulow";
130 clock-output-names = "481c5230.adpll.dcoclkldo",
131 "481c5230.adpll.clkout",
132 "481c5230.adpll.clkoutldo";
133 };
134
135 adpll_usb_ck: adpll@260 {
136 #clock-cells = <1>;
137 compatible = "ti,dm814-adpll-lj-clock";
138 reg = <0x260 0x30>;
139 clocks = <&devosc_ck &devosc_ck>;
140 clock-names = "clkinp", "clkinpulow";
141 clock-output-names = "481c5260.adpll.dcoclkldo",
142 "481c5260.adpll.clkout",
143 "481c5260.adpll.clkoutldo";
144 };
145
146 adpll_ddr_ck: adpll@290 {
147 #clock-cells = <1>;
148 compatible = "ti,dm814-adpll-lj-clock";
149 reg = <0x290 0x30>;
150 clocks = <&devosc_ck &devosc_ck>;
151 clock-names = "clkinp", "clkinpulow";
152 clock-output-names = "481c5290.adpll.dcoclkldo",
153 "481c5290.adpll.clkout",
154 "481c5290.adpll.clkoutldo";
155 };
156};
157
7&pllss_clocks { 158&pllss_clocks {
8 timer1_fck: timer1_fck { 159 timer1_fck: timer1_fck {
9 #clock-cells = <0>; 160 #clock-cells = <0>;
@@ -23,6 +174,24 @@
23 reg = <0x2e0>; 174 reg = <0x2e0>;
24 }; 175 };
25 176
177 /* CPTS_RFT_CLK in RMII_REFCLK_SRC, usually sourced from auiod */
178 cpsw_cpts_rft_clk: cpsw_cpts_rft_clk {
179 #clock-cells = <0>;
180 compatible = "ti,mux-clock";
181 clocks = <&adpll_video0_ck 1
182 &adpll_video1_ck 1
183 &adpll_audio_ck 1>;
184 ti,bit-shift = <1>;
185 reg = <0x2e8>;
186 };
187
188 /* REVISIT: Set up with a proper mux using RMII_REFCLK_SRC */
189 cpsw_125mhz_gclk: cpsw_125mhz_gclk {
190 #clock-cells = <0>;
191 compatible = "fixed-clock";
192 clock-frequency = <125000000>;
193 };
194
26 sysclk18_ck: sysclk18_ck { 195 sysclk18_ck: sysclk18_ck {
27 #clock-cells = <0>; 196 #clock-cells = <0>;
28 compatible = "ti,mux-clock"; 197 compatible = "ti,mux-clock";
@@ -79,37 +248,6 @@
79 compatible = "fixed-clock"; 248 compatible = "fixed-clock";
80 clock-frequency = <1000000000>; 249 clock-frequency = <1000000000>;
81 }; 250 };
82
83 sysclk4_ck: sysclk4_ck {
84 #clock-cells = <0>;
85 compatible = "fixed-clock";
86 clock-frequency = <222000000>;
87 };
88
89 sysclk6_ck: sysclk6_ck {
90 #clock-cells = <0>;
91 compatible = "fixed-clock";
92 clock-frequency = <100000000>;
93 };
94
95 sysclk10_ck: sysclk10_ck {
96 #clock-cells = <0>;
97 compatible = "fixed-clock";
98 clock-frequency = <48000000>;
99 };
100
101 cpsw_125mhz_gclk: cpsw_125mhz_gclk {
102 #clock-cells = <0>;
103 compatible = "fixed-clock";
104 clock-frequency = <125000000>;
105 };
106
107 cpsw_cpts_rft_clk: cpsw_cpts_rft_clk {
108 #clock-cells = <0>;
109 compatible = "fixed-clock";
110 clock-frequency = <250000000>;
111 };
112
113}; 251};
114 252
115&prcm_clocks { 253&prcm_clocks {
@@ -138,6 +276,49 @@
138 clock-div = <78125>; 276 clock-div = <78125>;
139 }; 277 };
140 278
279 /* L4_HS 220 MHz*/
280 sysclk4_ck: sysclk4_ck {
281 #clock-cells = <0>;
282 compatible = "ti,fixed-factor-clock";
283 clocks = <&adpll_l3_ck 1>;
284 ti,clock-mult = <1>;
285 ti,clock-div = <1>;
286 };
287
288 /* L4_FWCFG */
289 sysclk5_ck: sysclk5_ck {
290 #clock-cells = <0>;
291 compatible = "ti,fixed-factor-clock";
292 clocks = <&adpll_l3_ck 1>;
293 ti,clock-mult = <1>;
294 ti,clock-div = <2>;
295 };
296
297 /* L4_LS 110 MHz */
298 sysclk6_ck: sysclk6_ck {
299 #clock-cells = <0>;
300 compatible = "ti,fixed-factor-clock";
301 clocks = <&adpll_l3_ck 1>;
302 ti,clock-mult = <1>;
303 ti,clock-div = <2>;
304 };
305
306 sysclk8_ck: sysclk8_ck {
307 #clock-cells = <0>;
308 compatible = "ti,fixed-factor-clock";
309 clocks = <&adpll_usb_ck 1>;
310 ti,clock-mult = <1>;
311 ti,clock-div = <1>;
312 };
313
314 sysclk10_ck: sysclk10_ck {
315 compatible = "ti,divider-clock";
316 reg = <0x324>;
317 ti,max-div = <7>;
318 #clock-cells = <0>;
319 clocks = <&adpll_usb_ck 1>;
320 };
321
141 aud_clkin0_ck: aud_clkin0_ck { 322 aud_clkin0_ck: aud_clkin0_ck {
142 #clock-cells = <0>; 323 #clock-cells = <0>;
143 compatible = "fixed-clock"; 324 compatible = "fixed-clock";
diff --git a/arch/arm/boot/dts/dra62x-clocks.dtsi b/arch/arm/boot/dts/dra62x-clocks.dtsi
index 6f98dc8df9dd..0e49741747ef 100644
--- a/arch/arm/boot/dts/dra62x-clocks.dtsi
+++ b/arch/arm/boot/dts/dra62x-clocks.dtsi
@@ -6,6 +6,32 @@
6 6
7#include "dm814x-clocks.dtsi" 7#include "dm814x-clocks.dtsi"
8 8
9/* Compared to dm814x, dra62x does not have hdic, l3 or dss PLLs */
10&adpll_hdvic_ck {
11 status = "disabled";
12};
13
14&adpll_l3_ck {
15 status = "disabled";
16};
17
18&adpll_dss_ck {
19 status = "disabled";
20};
21
22/* Compared to dm814x, dra62x has interconnect clocks on isp PLL */
23&sysclk4_ck {
24 clocks = <&adpll_isp_ck 1>;
25};
26
27&sysclk5_ck {
28 clocks = <&adpll_isp_ck 1>;
29};
30
31&sysclk6_ck {
32 clocks = <&adpll_isp_ck 1>;
33};
34
9/* 35/*
10 * Compared to dm814x, dra62x has different shifts and more mux options. 36 * Compared to dm814x, dra62x has different shifts and more mux options.
11 * Please add the extra options for ysclk_14 and 16 if really needed. 37 * Please add the extra options for ysclk_14 and 16 if really needed.
diff --git a/arch/arm/boot/dts/dra7xx-clocks.dtsi b/arch/arm/boot/dts/dra7xx-clocks.dtsi
index d0bae06b7eb7..ef2164a99d0f 100644
--- a/arch/arm/boot/dts/dra7xx-clocks.dtsi
+++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi
@@ -98,12 +98,20 @@
98 clock-frequency = <32768>; 98 clock-frequency = <32768>;
99 }; 99 };
100 100
101 sys_32k_ck: sys_32k_ck { 101 sys_clk32_crystal_ck: sys_clk32_crystal_ck {
102 #clock-cells = <0>; 102 #clock-cells = <0>;
103 compatible = "fixed-clock"; 103 compatible = "fixed-clock";
104 clock-frequency = <32768>; 104 clock-frequency = <32768>;
105 }; 105 };
106 106
107 sys_clk32_pseudo_ck: sys_clk32_pseudo_ck {
108 #clock-cells = <0>;
109 compatible = "fixed-factor-clock";
110 clocks = <&sys_clkin1>;
111 clock-mult = <1>;
112 clock-div = <610>;
113 };
114
107 virt_12000000_ck: virt_12000000_ck { 115 virt_12000000_ck: virt_12000000_ck {
108 #clock-cells = <0>; 116 #clock-cells = <0>;
109 compatible = "fixed-clock"; 117 compatible = "fixed-clock";
@@ -2170,4 +2178,12 @@
2170 ti,bit-shift = <22>; 2178 ti,bit-shift = <22>;
2171 reg = <0x0558>; 2179 reg = <0x0558>;
2172 }; 2180 };
2181
2182 sys_32k_ck: sys_32k_ck {
2183 #clock-cells = <0>;
2184 compatible = "ti,mux-clock";
2185 clocks = <&sys_clk32_crystal_ck>, <&sys_clk32_pseudo_ck>, <&sys_clk32_pseudo_ck>, <&sys_clk32_pseudo_ck>;
2186 ti,bit-shift = <8>;
2187 reg = <0x6c4>;
2188 };
2173}; 2189};
diff --git a/arch/arm/boot/dts/qcom-msm8974.dtsi b/arch/arm/boot/dts/qcom-msm8974.dtsi
index ef5330578431..8193139d0d87 100644
--- a/arch/arm/boot/dts/qcom-msm8974.dtsi
+++ b/arch/arm/boot/dts/qcom-msm8974.dtsi
@@ -1,6 +1,6 @@
1/dts-v1/; 1/dts-v1/;
2 2
3#include <dt-bindings/interrupt-controller/arm-gic.h> 3#include <dt-bindings/interrupt-controller/irq.h>
4#include <dt-bindings/clock/qcom,gcc-msm8974.h> 4#include <dt-bindings/clock/qcom,gcc-msm8974.h>
5#include "skeleton.dtsi" 5#include "skeleton.dtsi"
6 6
@@ -460,8 +460,6 @@
460 clock-names = "core", "iface"; 460 clock-names = "core", "iface";
461 #address-cells = <1>; 461 #address-cells = <1>;
462 #size-cells = <0>; 462 #size-cells = <0>;
463 dmas = <&blsp2_dma 20>, <&blsp2_dma 21>;
464 dma-names = "tx", "rx";
465 }; 463 };
466 464
467 spmi_bus: spmi@fc4cf000 { 465 spmi_bus: spmi@fc4cf000 {
@@ -479,16 +477,6 @@
479 interrupt-controller; 477 interrupt-controller;
480 #interrupt-cells = <4>; 478 #interrupt-cells = <4>;
481 }; 479 };
482
483 blsp2_dma: dma-controller@f9944000 {
484 compatible = "qcom,bam-v1.4.0";
485 reg = <0xf9944000 0x19000>;
486 interrupts = <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>;
487 clocks = <&gcc GCC_BLSP2_AHB_CLK>;
488 clock-names = "bam_clk";
489 #dma-cells = <1>;
490 qcom,ee = <0>;
491 };
492 }; 480 };
493 481
494 smd { 482 smd {
diff --git a/arch/arm/boot/dts/r8a7791-koelsch.dts b/arch/arm/boot/dts/r8a7791-koelsch.dts
index 0ad71b81d3a2..cc6e28f81fe4 100644
--- a/arch/arm/boot/dts/r8a7791-koelsch.dts
+++ b/arch/arm/boot/dts/r8a7791-koelsch.dts
@@ -661,6 +661,7 @@
661}; 661};
662 662
663&pcie_bus_clk { 663&pcie_bus_clk {
664 clock-frequency = <100000000>;
664 status = "okay"; 665 status = "okay";
665}; 666};
666 667
diff --git a/arch/arm/boot/dts/r8a7791-porter.dts b/arch/arm/boot/dts/r8a7791-porter.dts
index 6c08314427d6..a9285d9a57cd 100644
--- a/arch/arm/boot/dts/r8a7791-porter.dts
+++ b/arch/arm/boot/dts/r8a7791-porter.dts
@@ -143,19 +143,11 @@
143}; 143};
144 144
145&pfc { 145&pfc {
146 pinctrl-0 = <&scif_clk_pins>;
147 pinctrl-names = "default";
148
149 scif0_pins: serial0 { 146 scif0_pins: serial0 {
150 renesas,groups = "scif0_data_d"; 147 renesas,groups = "scif0_data_d";
151 renesas,function = "scif0"; 148 renesas,function = "scif0";
152 }; 149 };
153 150
154 scif_clk_pins: scif_clk {
155 renesas,groups = "scif_clk";
156 renesas,function = "scif_clk";
157 };
158
159 ether_pins: ether { 151 ether_pins: ether {
160 renesas,groups = "eth_link", "eth_mdio", "eth_rmii"; 152 renesas,groups = "eth_link", "eth_mdio", "eth_rmii";
161 renesas,function = "eth"; 153 renesas,function = "eth";
@@ -229,11 +221,6 @@
229 status = "okay"; 221 status = "okay";
230}; 222};
231 223
232&scif_clk {
233 clock-frequency = <14745600>;
234 status = "okay";
235};
236
237&ether { 224&ether {
238 pinctrl-0 = <&ether_pins &phy1_pins>; 225 pinctrl-0 = <&ether_pins &phy1_pins>;
239 pinctrl-names = "default"; 226 pinctrl-names = "default";
@@ -414,6 +401,7 @@
414}; 401};
415 402
416&pcie_bus_clk { 403&pcie_bus_clk {
404 clock-frequency = <100000000>;
417 status = "okay"; 405 status = "okay";
418}; 406};
419 407
diff --git a/arch/arm/boot/dts/r8a7791.dtsi b/arch/arm/boot/dts/r8a7791.dtsi
index 6439f0569fe2..1cd1b6a3a72a 100644
--- a/arch/arm/boot/dts/r8a7791.dtsi
+++ b/arch/arm/boot/dts/r8a7791.dtsi
@@ -1083,9 +1083,8 @@
1083 pcie_bus_clk: pcie_bus_clk { 1083 pcie_bus_clk: pcie_bus_clk {
1084 compatible = "fixed-clock"; 1084 compatible = "fixed-clock";
1085 #clock-cells = <0>; 1085 #clock-cells = <0>;
1086 clock-frequency = <100000000>; 1086 clock-frequency = <0>;
1087 clock-output-names = "pcie_bus"; 1087 clock-output-names = "pcie_bus";
1088 status = "disabled";
1089 }; 1088 };
1090 1089
1091 /* External SCIF clock */ 1090 /* External SCIF clock */
@@ -1094,7 +1093,6 @@
1094 #clock-cells = <0>; 1093 #clock-cells = <0>;
1095 /* This value must be overridden by the board. */ 1094 /* This value must be overridden by the board. */
1096 clock-frequency = <0>; 1095 clock-frequency = <0>;
1097 status = "disabled";
1098 }; 1096 };
1099 1097
1100 /* External USB clock - can be overridden by the board */ 1098 /* External USB clock - can be overridden by the board */
@@ -1112,7 +1110,6 @@
1112 /* This value must be overridden by the board. */ 1110 /* This value must be overridden by the board. */
1113 clock-frequency = <0>; 1111 clock-frequency = <0>;
1114 clock-output-names = "can_clk"; 1112 clock-output-names = "can_clk";
1115 status = "disabled";
1116 }; 1113 };
1117 1114
1118 /* Special CPG clocks */ 1115 /* Special CPG clocks */
diff --git a/arch/arm/mach-imx/devices/platform-sdhci-esdhc-imx.c b/arch/arm/mach-imx/devices/platform-sdhci-esdhc-imx.c
index a5edd7d60266..3d039ef021e0 100644
--- a/arch/arm/mach-imx/devices/platform-sdhci-esdhc-imx.c
+++ b/arch/arm/mach-imx/devices/platform-sdhci-esdhc-imx.c
@@ -71,6 +71,7 @@ struct platform_device *__init imx_add_sdhci_esdhc_imx(
71 if (!pdata) 71 if (!pdata)
72 pdata = &default_esdhc_pdata; 72 pdata = &default_esdhc_pdata;
73 73
74 return imx_add_platform_device(data->devid, data->id, res, 74 return imx_add_platform_device_dmamask(data->devid, data->id, res,
75 ARRAY_SIZE(res), pdata, sizeof(*pdata)); 75 ARRAY_SIZE(res), pdata, sizeof(*pdata),
76 DMA_BIT_MASK(32));
76} 77}
diff --git a/arch/arm/mach-omap2/clockdomains7xx_data.c b/arch/arm/mach-omap2/clockdomains7xx_data.c
index 7581e036bda6..ef9ed36e8a61 100644
--- a/arch/arm/mach-omap2/clockdomains7xx_data.c
+++ b/arch/arm/mach-omap2/clockdomains7xx_data.c
@@ -461,7 +461,7 @@ static struct clockdomain ipu_7xx_clkdm = {
461 .cm_inst = DRA7XX_CM_CORE_AON_IPU_INST, 461 .cm_inst = DRA7XX_CM_CORE_AON_IPU_INST,
462 .clkdm_offs = DRA7XX_CM_CORE_AON_IPU_IPU_CDOFFS, 462 .clkdm_offs = DRA7XX_CM_CORE_AON_IPU_IPU_CDOFFS,
463 .dep_bit = DRA7XX_IPU_STATDEP_SHIFT, 463 .dep_bit = DRA7XX_IPU_STATDEP_SHIFT,
464 .flags = CLKDM_CAN_HWSUP_SWSUP, 464 .flags = CLKDM_CAN_SWSUP,
465}; 465};
466 466
467static struct clockdomain mpu1_7xx_clkdm = { 467static struct clockdomain mpu1_7xx_clkdm = {
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index 9821be6dfd5e..49de4dd227be 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -737,7 +737,8 @@ void __init omap5_init_late(void)
737#ifdef CONFIG_SOC_DRA7XX 737#ifdef CONFIG_SOC_DRA7XX
738void __init dra7xx_init_early(void) 738void __init dra7xx_init_early(void)
739{ 739{
740 omap2_set_globals_tap(-1, OMAP2_L4_IO_ADDRESS(DRA7XX_TAP_BASE)); 740 omap2_set_globals_tap(DRA7XX_CLASS,
741 OMAP2_L4_IO_ADDRESS(DRA7XX_TAP_BASE));
741 omap2_set_globals_prcm_mpu(OMAP2_L4_IO_ADDRESS(OMAP54XX_PRCM_MPU_BASE)); 742 omap2_set_globals_prcm_mpu(OMAP2_L4_IO_ADDRESS(OMAP54XX_PRCM_MPU_BASE));
742 omap2_control_base_init(); 743 omap2_control_base_init();
743 omap4_pm_init_early(); 744 omap4_pm_init_early();
diff --git a/arch/arm/mach-omap2/omap-wakeupgen.c b/arch/arm/mach-omap2/omap-wakeupgen.c
index f397bd6bd6e3..2c04f2741476 100644
--- a/arch/arm/mach-omap2/omap-wakeupgen.c
+++ b/arch/arm/mach-omap2/omap-wakeupgen.c
@@ -274,6 +274,10 @@ static inline void omap5_irq_save_context(void)
274 */ 274 */
275static void irq_save_context(void) 275static void irq_save_context(void)
276{ 276{
277 /* DRA7 has no SAR to save */
278 if (soc_is_dra7xx())
279 return;
280
277 if (!sar_base) 281 if (!sar_base)
278 sar_base = omap4_get_sar_ram_base(); 282 sar_base = omap4_get_sar_ram_base();
279 283
@@ -290,6 +294,9 @@ static void irq_sar_clear(void)
290{ 294{
291 u32 val; 295 u32 val;
292 u32 offset = SAR_BACKUP_STATUS_OFFSET; 296 u32 offset = SAR_BACKUP_STATUS_OFFSET;
297 /* DRA7 has no SAR to save */
298 if (soc_is_dra7xx())
299 return;
293 300
294 if (soc_is_omap54xx()) 301 if (soc_is_omap54xx())
295 offset = OMAP5_SAR_BACKUP_STATUS_OFFSET; 302 offset = OMAP5_SAR_BACKUP_STATUS_OFFSET;
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index 2dbd3785ee6f..d44e0e2f1106 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -198,7 +198,6 @@ void omap_sram_idle(void)
198 int per_next_state = PWRDM_POWER_ON; 198 int per_next_state = PWRDM_POWER_ON;
199 int core_next_state = PWRDM_POWER_ON; 199 int core_next_state = PWRDM_POWER_ON;
200 int per_going_off; 200 int per_going_off;
201 int core_prev_state;
202 u32 sdrc_pwr = 0; 201 u32 sdrc_pwr = 0;
203 202
204 mpu_next_state = pwrdm_read_next_pwrst(mpu_pwrdm); 203 mpu_next_state = pwrdm_read_next_pwrst(mpu_pwrdm);
@@ -278,16 +277,20 @@ void omap_sram_idle(void)
278 sdrc_write_reg(sdrc_pwr, SDRC_POWER); 277 sdrc_write_reg(sdrc_pwr, SDRC_POWER);
279 278
280 /* CORE */ 279 /* CORE */
281 if (core_next_state < PWRDM_POWER_ON) { 280 if (core_next_state < PWRDM_POWER_ON &&
282 core_prev_state = pwrdm_read_prev_pwrst(core_pwrdm); 281 pwrdm_read_prev_pwrst(core_pwrdm) == PWRDM_POWER_OFF) {
283 if (core_prev_state == PWRDM_POWER_OFF) { 282 omap3_core_restore_context();
284 omap3_core_restore_context(); 283 omap3_cm_restore_context();
285 omap3_cm_restore_context(); 284 omap3_sram_restore_context();
286 omap3_sram_restore_context(); 285 omap2_sms_restore_context();
287 omap2_sms_restore_context(); 286 } else {
288 } 287 /*
288 * In off-mode resume path above, omap3_core_restore_context
289 * also handles the INTC autoidle restore done here so limit
290 * this to non-off mode resume paths so we don't do it twice.
291 */
292 omap3_intc_resume_idle();
289 } 293 }
290 omap3_intc_resume_idle();
291 294
292 pwrdm_post_transition(NULL); 295 pwrdm_post_transition(NULL);
293 296
diff --git a/arch/arm/mach-shmobile/timer.c b/arch/arm/mach-shmobile/timer.c
index ad008e4b0c49..67d79f9c6bad 100644
--- a/arch/arm/mach-shmobile/timer.c
+++ b/arch/arm/mach-shmobile/timer.c
@@ -40,8 +40,7 @@ static void __init shmobile_setup_delay_hz(unsigned int max_cpu_core_hz,
40void __init shmobile_init_delay(void) 40void __init shmobile_init_delay(void)
41{ 41{
42 struct device_node *np, *cpus; 42 struct device_node *np, *cpus;
43 bool is_a7_a8_a9 = false; 43 unsigned int div = 0;
44 bool is_a15 = false;
45 bool has_arch_timer = false; 44 bool has_arch_timer = false;
46 u32 max_freq = 0; 45 u32 max_freq = 0;
47 46
@@ -55,27 +54,22 @@ void __init shmobile_init_delay(void)
55 if (!of_property_read_u32(np, "clock-frequency", &freq)) 54 if (!of_property_read_u32(np, "clock-frequency", &freq))
56 max_freq = max(max_freq, freq); 55 max_freq = max(max_freq, freq);
57 56
58 if (of_device_is_compatible(np, "arm,cortex-a8") || 57 if (of_device_is_compatible(np, "arm,cortex-a8")) {
59 of_device_is_compatible(np, "arm,cortex-a9")) { 58 div = 2;
60 is_a7_a8_a9 = true; 59 } else if (of_device_is_compatible(np, "arm,cortex-a9")) {
61 } else if (of_device_is_compatible(np, "arm,cortex-a7")) { 60 div = 1;
62 is_a7_a8_a9 = true; 61 } else if (of_device_is_compatible(np, "arm,cortex-a7") ||
63 has_arch_timer = true; 62 of_device_is_compatible(np, "arm,cortex-a15")) {
64 } else if (of_device_is_compatible(np, "arm,cortex-a15")) { 63 div = 1;
65 is_a15 = true;
66 has_arch_timer = true; 64 has_arch_timer = true;
67 } 65 }
68 } 66 }
69 67
70 of_node_put(cpus); 68 of_node_put(cpus);
71 69
72 if (!max_freq) 70 if (!max_freq || !div)
73 return; 71 return;
74 72
75 if (!has_arch_timer || !IS_ENABLED(CONFIG_ARM_ARCH_TIMER)) { 73 if (!has_arch_timer || !IS_ENABLED(CONFIG_ARM_ARCH_TIMER))
76 if (is_a7_a8_a9) 74 shmobile_setup_delay_hz(max_freq, 1, div);
77 shmobile_setup_delay_hz(max_freq, 1, 3);
78 else if (is_a15)
79 shmobile_setup_delay_hz(max_freq, 2, 4);
80 }
81} 75}
diff --git a/arch/arm64/boot/dts/socionext/uniphier-ph1-ld20-ref.dts b/arch/arm64/boot/dts/socionext/uniphier-ph1-ld20-ref.dts
index 727ae5f8c4e7..b0ed44313a5b 100644
--- a/arch/arm64/boot/dts/socionext/uniphier-ph1-ld20-ref.dts
+++ b/arch/arm64/boot/dts/socionext/uniphier-ph1-ld20-ref.dts
@@ -70,7 +70,6 @@
70 i2c3 = &i2c3; 70 i2c3 = &i2c3;
71 i2c4 = &i2c4; 71 i2c4 = &i2c4;
72 i2c5 = &i2c5; 72 i2c5 = &i2c5;
73 i2c6 = &i2c6;
74 }; 73 };
75}; 74};
76 75
diff --git a/arch/arm64/boot/dts/socionext/uniphier-ph1-ld20.dtsi b/arch/arm64/boot/dts/socionext/uniphier-ph1-ld20.dtsi
index e682a3f52791..651c9d9d2d54 100644
--- a/arch/arm64/boot/dts/socionext/uniphier-ph1-ld20.dtsi
+++ b/arch/arm64/boot/dts/socionext/uniphier-ph1-ld20.dtsi
@@ -201,15 +201,12 @@
201 201
202 i2c2: i2c@58782000 { 202 i2c2: i2c@58782000 {
203 compatible = "socionext,uniphier-fi2c"; 203 compatible = "socionext,uniphier-fi2c";
204 status = "disabled";
205 reg = <0x58782000 0x80>; 204 reg = <0x58782000 0x80>;
206 #address-cells = <1>; 205 #address-cells = <1>;
207 #size-cells = <0>; 206 #size-cells = <0>;
208 interrupts = <0 43 4>; 207 interrupts = <0 43 4>;
209 pinctrl-names = "default";
210 pinctrl-0 = <&pinctrl_i2c2>;
211 clocks = <&i2c_clk>; 208 clocks = <&i2c_clk>;
212 clock-frequency = <100000>; 209 clock-frequency = <400000>;
213 }; 210 };
214 211
215 i2c3: i2c@58783000 { 212 i2c3: i2c@58783000 {
@@ -227,12 +224,15 @@
227 224
228 i2c4: i2c@58784000 { 225 i2c4: i2c@58784000 {
229 compatible = "socionext,uniphier-fi2c"; 226 compatible = "socionext,uniphier-fi2c";
227 status = "disabled";
230 reg = <0x58784000 0x80>; 228 reg = <0x58784000 0x80>;
231 #address-cells = <1>; 229 #address-cells = <1>;
232 #size-cells = <0>; 230 #size-cells = <0>;
233 interrupts = <0 45 4>; 231 interrupts = <0 45 4>;
232 pinctrl-names = "default";
233 pinctrl-0 = <&pinctrl_i2c4>;
234 clocks = <&i2c_clk>; 234 clocks = <&i2c_clk>;
235 clock-frequency = <400000>; 235 clock-frequency = <100000>;
236 }; 236 };
237 237
238 i2c5: i2c@58785000 { 238 i2c5: i2c@58785000 {
@@ -245,16 +245,6 @@
245 clock-frequency = <400000>; 245 clock-frequency = <400000>;
246 }; 246 };
247 247
248 i2c6: i2c@58786000 {
249 compatible = "socionext,uniphier-fi2c";
250 reg = <0x58786000 0x80>;
251 #address-cells = <1>;
252 #size-cells = <0>;
253 interrupts = <0 26 4>;
254 clocks = <&i2c_clk>;
255 clock-frequency = <400000>;
256 };
257
258 system_bus: system-bus@58c00000 { 248 system_bus: system-bus@58c00000 {
259 compatible = "socionext,uniphier-system-bus"; 249 compatible = "socionext,uniphier-system-bus";
260 status = "disabled"; 250 status = "disabled";
diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c
index 11bfee8b79a9..b5d05807e6ec 100644
--- a/drivers/firmware/psci.c
+++ b/drivers/firmware/psci.c
@@ -360,7 +360,7 @@ static struct cpuidle_ops psci_cpuidle_ops __initdata = {
360 .init = psci_dt_cpu_init_idle, 360 .init = psci_dt_cpu_init_idle,
361}; 361};
362 362
363CPUIDLE_METHOD_OF_DECLARE(psci, "arm,psci", &psci_cpuidle_ops); 363CPUIDLE_METHOD_OF_DECLARE(psci, "psci", &psci_cpuidle_ops);
364#endif 364#endif
365#endif 365#endif
366 366
diff --git a/drivers/soc/mediatek/mtk-scpsys.c b/drivers/soc/mediatek/mtk-scpsys.c
index 57e781c71e67..837effe19907 100644
--- a/drivers/soc/mediatek/mtk-scpsys.c
+++ b/drivers/soc/mediatek/mtk-scpsys.c
@@ -491,13 +491,14 @@ static int scpsys_probe(struct platform_device *pdev)
491 genpd->dev_ops.active_wakeup = scpsys_active_wakeup; 491 genpd->dev_ops.active_wakeup = scpsys_active_wakeup;
492 492
493 /* 493 /*
494 * With CONFIG_PM disabled turn on all domains to make the 494 * Initially turn on all domains to make the domains usable
495 * hardware usable. 495 * with !CONFIG_PM and to get the hardware in sync with the
496 * software. The unused domains will be switched off during
497 * late_init time.
496 */ 498 */
497 if (!IS_ENABLED(CONFIG_PM)) 499 genpd->power_on(genpd);
498 genpd->power_on(genpd);
499 500
500 pm_genpd_init(genpd, NULL, true); 501 pm_genpd_init(genpd, NULL, false);
501 } 502 }
502 503
503 /* 504 /*