aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2017-10-04 13:30:39 -0400
committerOlof Johansson <olof@lixom.net>2017-10-04 13:30:39 -0400
commiteab5c00201f3acaea0cbb00cdf0bb2f97b67f2c5 (patch)
treededb47d837f88905a7aed0c482a2ed0ea6c954ea
parent7ea696af44c47af742977e86222c47254f152502 (diff)
parent485a308f05d843034b6e82f688704c44888aecde (diff)
Merge tag 'amlogic-dt64-3' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic into fixes
Amlogic 64-bit DT updates for v4.14 (round 3) - updates for new MMC driver features/fixes - support high-speed modes * tag 'amlogic-dt64-3' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic: ARM64: dts: meson-gxbb: nanopi-k2: enable sdr104 mode ARM64: dts: meson-gxbb: nanopi-k2: enable sdcard UHS modes ARM64: dts: meson-gxbb: p20x: enable sdcard UHS modes ARM64: dts: meson-gxl: libretech-cc: enable high speed modes ARM64: dts: meson-gxl: libretech-cc: add card regulator settle times ARM64: dts: meson-gxbb: nanopi-k2: add card regulator settle times ARM64: dts: meson: add mmc clk gate pins ARM64: dts: meson: remove cap-sd-highspeed from emmc nodes ARM64: dts: meson-gx: Use correct mmc clock source 0 Signed-off-by: Olof Johansson <olof@lixom.net>
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi10
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts19
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts12
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts9
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi13
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi10
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi39
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl-s905x-hwacom-amazetv.dts7
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts13
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl-s905x-nexbox-a95x.dts10
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi10
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl.dtsi39
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts7
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts1
14 files changed, 150 insertions, 49 deletions
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
index c89010e56488..4157987f4a3d 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
@@ -168,7 +168,8 @@
168&sd_emmc_a { 168&sd_emmc_a {
169 status = "okay"; 169 status = "okay";
170 pinctrl-0 = <&sdio_pins>; 170 pinctrl-0 = <&sdio_pins>;
171 pinctrl-names = "default"; 171 pinctrl-1 = <&sdio_clk_gate_pins>;
172 pinctrl-names = "default", "clk-gate";
172 #address-cells = <1>; 173 #address-cells = <1>;
173 #size-cells = <0>; 174 #size-cells = <0>;
174 175
@@ -194,7 +195,8 @@
194&sd_emmc_b { 195&sd_emmc_b {
195 status = "okay"; 196 status = "okay";
196 pinctrl-0 = <&sdcard_pins>; 197 pinctrl-0 = <&sdcard_pins>;
197 pinctrl-names = "default"; 198 pinctrl-1 = <&sdcard_clk_gate_pins>;
199 pinctrl-names = "default", "clk-gate";
198 200
199 bus-width = <4>; 201 bus-width = <4>;
200 cap-sd-highspeed; 202 cap-sd-highspeed;
@@ -212,10 +214,10 @@
212&sd_emmc_c { 214&sd_emmc_c {
213 status = "okay"; 215 status = "okay";
214 pinctrl-0 = <&emmc_pins>; 216 pinctrl-0 = <&emmc_pins>;
215 pinctrl-names = "default"; 217 pinctrl-1 = <&emmc_clk_gate_pins>;
218 pinctrl-names = "default", "clk-gate";
216 219
217 bus-width = <8>; 220 bus-width = <8>;
218 cap-sd-highspeed;
219 cap-mmc-highspeed; 221 cap-mmc-highspeed;
220 max-frequency = <200000000>; 222 max-frequency = <200000000>;
221 non-removable; 223 non-removable;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts
index 9697a7a79464..4b17a76959b2 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts
@@ -107,6 +107,9 @@
107 107
108 states = <3300000 0>, 108 states = <3300000 0>,
109 <1800000 1>; 109 <1800000 1>;
110
111 regulator-settling-time-up-us = <100>;
112 regulator-settling-time-down-us = <5000>;
110 }; 113 };
111 114
112 wifi_32k: wifi-32k { 115 wifi_32k: wifi-32k {
@@ -250,7 +253,8 @@
250&sd_emmc_a { 253&sd_emmc_a {
251 status = "okay"; 254 status = "okay";
252 pinctrl-0 = <&sdio_pins>, <&sdio_irq_pins>; 255 pinctrl-0 = <&sdio_pins>, <&sdio_irq_pins>;
253 pinctrl-names = "default"; 256 pinctrl-1 = <&sdio_clk_gate_pins>;
257 pinctrl-names = "default", "clk-gate";
254 #address-cells = <1>; 258 #address-cells = <1>;
255 #size-cells = <0>; 259 #size-cells = <0>;
256 260
@@ -276,11 +280,16 @@
276&sd_emmc_b { 280&sd_emmc_b {
277 status = "okay"; 281 status = "okay";
278 pinctrl-0 = <&sdcard_pins>; 282 pinctrl-0 = <&sdcard_pins>;
279 pinctrl-names = "default"; 283 pinctrl-1 = <&sdcard_clk_gate_pins>;
284 pinctrl-names = "default", "clk-gate";
280 285
281 bus-width = <4>; 286 bus-width = <4>;
282 cap-sd-highspeed; 287 cap-sd-highspeed;
283 max-frequency = <100000000>; 288 sd-uhs-sdr12;
289 sd-uhs-sdr25;
290 sd-uhs-sdr50;
291 sd-uhs-sdr104;
292 max-frequency = <200000000>;
284 disable-wp; 293 disable-wp;
285 294
286 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>; 295 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
@@ -294,10 +303,10 @@
294&sd_emmc_c { 303&sd_emmc_c {
295 status = "disabled"; 304 status = "disabled";
296 pinctrl-0 = <&emmc_pins>; 305 pinctrl-0 = <&emmc_pins>;
297 pinctrl-names = "default"; 306 pinctrl-1 = <&emmc_clk_gate_pins>;
307 pinctrl-names = "default", "clk-gate";
298 308
299 bus-width = <8>; 309 bus-width = <8>;
300 cap-sd-highspeed;
301 max-frequency = <200000000>; 310 max-frequency = <200000000>;
302 non-removable; 311 non-removable;
303 disable-wp; 312 disable-wp;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts
index 9c59c3c6d1b6..38dfdde5c147 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts
@@ -51,7 +51,7 @@
51/ { 51/ {
52 compatible = "nexbox,a95x", "amlogic,meson-gxbb"; 52 compatible = "nexbox,a95x", "amlogic,meson-gxbb";
53 model = "NEXBOX A95X"; 53 model = "NEXBOX A95X";
54 54
55 aliases { 55 aliases {
56 serial0 = &uart_AO; 56 serial0 = &uart_AO;
57 }; 57 };
@@ -232,7 +232,8 @@
232&sd_emmc_a { 232&sd_emmc_a {
233 status = "okay"; 233 status = "okay";
234 pinctrl-0 = <&sdio_pins>; 234 pinctrl-0 = <&sdio_pins>;
235 pinctrl-names = "default"; 235 pinctrl-1 = <&sdio_clk_gate_pins>;
236 pinctrl-names = "default", "clk-gate";
236 #address-cells = <1>; 237 #address-cells = <1>;
237 #size-cells = <0>; 238 #size-cells = <0>;
238 239
@@ -253,7 +254,8 @@
253&sd_emmc_b { 254&sd_emmc_b {
254 status = "okay"; 255 status = "okay";
255 pinctrl-0 = <&sdcard_pins>; 256 pinctrl-0 = <&sdcard_pins>;
256 pinctrl-names = "default"; 257 pinctrl-1 = <&sdcard_clk_gate_pins>;
258 pinctrl-names = "default", "clk-gate";
257 259
258 bus-width = <4>; 260 bus-width = <4>;
259 cap-sd-highspeed; 261 cap-sd-highspeed;
@@ -271,10 +273,10 @@
271&sd_emmc_c { 273&sd_emmc_c {
272 status = "okay"; 274 status = "okay";
273 pinctrl-0 = <&emmc_pins>; 275 pinctrl-0 = <&emmc_pins>;
274 pinctrl-names = "default"; 276 pinctrl-1 = <&emmc_clk_gate_pins>;
277 pinctrl-names = "default", "clk-gate";
275 278
276 bus-width = <8>; 279 bus-width = <8>;
277 cap-sd-highspeed;
278 cap-mmc-highspeed; 280 cap-mmc-highspeed;
279 max-frequency = <200000000>; 281 max-frequency = <200000000>;
280 non-removable; 282 non-removable;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
index d147c853ab05..1ffa1c238a72 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
@@ -50,7 +50,7 @@
50/ { 50/ {
51 compatible = "hardkernel,odroid-c2", "amlogic,meson-gxbb"; 51 compatible = "hardkernel,odroid-c2", "amlogic,meson-gxbb";
52 model = "Hardkernel ODROID-C2"; 52 model = "Hardkernel ODROID-C2";
53 53
54 aliases { 54 aliases {
55 serial0 = &uart_AO; 55 serial0 = &uart_AO;
56 }; 56 };
@@ -253,7 +253,8 @@
253&sd_emmc_b { 253&sd_emmc_b {
254 status = "okay"; 254 status = "okay";
255 pinctrl-0 = <&sdcard_pins>; 255 pinctrl-0 = <&sdcard_pins>;
256 pinctrl-names = "default"; 256 pinctrl-1 = <&sdcard_clk_gate_pins>;
257 pinctrl-names = "default", "clk-gate";
257 258
258 bus-width = <4>; 259 bus-width = <4>;
259 cap-sd-highspeed; 260 cap-sd-highspeed;
@@ -271,10 +272,10 @@
271&sd_emmc_c { 272&sd_emmc_c {
272 status = "okay"; 273 status = "okay";
273 pinctrl-0 = <&emmc_pins>; 274 pinctrl-0 = <&emmc_pins>;
274 pinctrl-names = "default"; 275 pinctrl-1 = <&emmc_clk_gate_pins>;
276 pinctrl-names = "default", "clk-gate";
275 277
276 bus-width = <8>; 278 bus-width = <8>;
277 cap-sd-highspeed;
278 max-frequency = <200000000>; 279 max-frequency = <200000000>;
279 non-removable; 280 non-removable;
280 disable-wp; 281 disable-wp;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi
index 81ffc689a5bf..23c08c3afd0a 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi
@@ -194,7 +194,8 @@
194&sd_emmc_a { 194&sd_emmc_a {
195 status = "okay"; 195 status = "okay";
196 pinctrl-0 = <&sdio_pins>; 196 pinctrl-0 = <&sdio_pins>;
197 pinctrl-names = "default"; 197 pinctrl-1 = <&sdio_clk_gate_pins>;
198 pinctrl-names = "default", "clk-gate";
198 #address-cells = <1>; 199 #address-cells = <1>;
199 #size-cells = <0>; 200 #size-cells = <0>;
200 201
@@ -220,10 +221,14 @@
220&sd_emmc_b { 221&sd_emmc_b {
221 status = "okay"; 222 status = "okay";
222 pinctrl-0 = <&sdcard_pins>; 223 pinctrl-0 = <&sdcard_pins>;
223 pinctrl-names = "default"; 224 pinctrl-1 = <&sdcard_clk_gate_pins>;
225 pinctrl-names = "default", "clk-gate";
224 226
225 bus-width = <4>; 227 bus-width = <4>;
226 cap-sd-highspeed; 228 cap-sd-highspeed;
229 sd-uhs-sdr12;
230 sd-uhs-sdr25;
231 sd-uhs-sdr50;
227 max-frequency = <100000000>; 232 max-frequency = <100000000>;
228 disable-wp; 233 disable-wp;
229 234
@@ -238,10 +243,10 @@
238&sd_emmc_c { 243&sd_emmc_c {
239 status = "okay"; 244 status = "okay";
240 pinctrl-0 = <&emmc_pins>; 245 pinctrl-0 = <&emmc_pins>;
241 pinctrl-names = "default"; 246 pinctrl-1 = <&emmc_clk_gate_pins>;
247 pinctrl-names = "default", "clk-gate";
242 248
243 bus-width = <8>; 249 bus-width = <8>;
244 cap-sd-highspeed;
245 cap-mmc-highspeed; 250 cap-mmc-highspeed;
246 max-frequency = <200000000>; 251 max-frequency = <200000000>;
247 non-removable; 252 non-removable;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi
index 346753fb6324..f2bc6dea1fc6 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi
@@ -155,7 +155,8 @@
155&sd_emmc_a { 155&sd_emmc_a {
156 status = "okay"; 156 status = "okay";
157 pinctrl-0 = <&sdio_pins &sdio_irq_pins>; 157 pinctrl-0 = <&sdio_pins &sdio_irq_pins>;
158 pinctrl-names = "default"; 158 pinctrl-1 = <&sdio_clk_gate_pins>;
159 pinctrl-names = "default", "clk-gate";
159 #address-cells = <1>; 160 #address-cells = <1>;
160 #size-cells = <0>; 161 #size-cells = <0>;
161 162
@@ -181,7 +182,8 @@
181&sd_emmc_b { 182&sd_emmc_b {
182 status = "okay"; 183 status = "okay";
183 pinctrl-0 = <&sdcard_pins>; 184 pinctrl-0 = <&sdcard_pins>;
184 pinctrl-names = "default"; 185 pinctrl-1 = <&sdcard_clk_gate_pins>;
186 pinctrl-names = "default", "clk-gate";
185 187
186 bus-width = <4>; 188 bus-width = <4>;
187 cap-sd-highspeed; 189 cap-sd-highspeed;
@@ -198,10 +200,10 @@
198&sd_emmc_c { 200&sd_emmc_c {
199 status = "okay"; 201 status = "okay";
200 pinctrl-0 = <&emmc_pins>; 202 pinctrl-0 = <&emmc_pins>;
201 pinctrl-names = "default"; 203 pinctrl-1 = <&emmc_clk_gate_pins>;
204 pinctrl-names = "default", "clk-gate";
202 205
203 bus-width = <8>; 206 bus-width = <8>;
204 cap-sd-highspeed;
205 cap-mmc-highspeed; 207 cap-mmc-highspeed;
206 max-frequency = <200000000>; 208 max-frequency = <200000000>;
207 non-removable; 209 non-removable;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi
index 52f1687e7a09..af834cdbba79 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi
@@ -392,6 +392,17 @@
392 }; 392 };
393 }; 393 };
394 394
395 emmc_clk_gate_pins: emmc_clk_gate {
396 mux {
397 groups = "BOOT_8";
398 function = "gpio_periphs";
399 };
400 cfg-pull-down {
401 pins = "BOOT_8";
402 bias-pull-down;
403 };
404 };
405
395 nor_pins: nor { 406 nor_pins: nor {
396 mux { 407 mux {
397 groups = "nor_d", 408 groups = "nor_d",
@@ -430,6 +441,17 @@
430 }; 441 };
431 }; 442 };
432 443
444 sdcard_clk_gate_pins: sdcard_clk_gate {
445 mux {
446 groups = "CARD_2";
447 function = "gpio_periphs";
448 };
449 cfg-pull-down {
450 pins = "CARD_2";
451 bias-pull-down;
452 };
453 };
454
433 sdio_pins: sdio { 455 sdio_pins: sdio {
434 mux { 456 mux {
435 groups = "sdio_d0", 457 groups = "sdio_d0",
@@ -442,6 +464,17 @@
442 }; 464 };
443 }; 465 };
444 466
467 sdio_clk_gate_pins: sdio_clk_gate {
468 mux {
469 groups = "GPIOX_4";
470 function = "gpio_periphs";
471 };
472 cfg-pull-down {
473 pins = "GPIOX_4";
474 bias-pull-down;
475 };
476 };
477
445 sdio_irq_pins: sdio_irq { 478 sdio_irq_pins: sdio_irq {
446 mux { 479 mux {
447 groups = "sdio_irq"; 480 groups = "sdio_irq";
@@ -661,21 +694,21 @@
661 694
662&sd_emmc_a { 695&sd_emmc_a {
663 clocks = <&clkc CLKID_SD_EMMC_A>, 696 clocks = <&clkc CLKID_SD_EMMC_A>,
664 <&xtal>, 697 <&clkc CLKID_SD_EMMC_A_CLK0>,
665 <&clkc CLKID_FCLK_DIV2>; 698 <&clkc CLKID_FCLK_DIV2>;
666 clock-names = "core", "clkin0", "clkin1"; 699 clock-names = "core", "clkin0", "clkin1";
667}; 700};
668 701
669&sd_emmc_b { 702&sd_emmc_b {
670 clocks = <&clkc CLKID_SD_EMMC_B>, 703 clocks = <&clkc CLKID_SD_EMMC_B>,
671 <&xtal>, 704 <&clkc CLKID_SD_EMMC_B_CLK0>,
672 <&clkc CLKID_FCLK_DIV2>; 705 <&clkc CLKID_FCLK_DIV2>;
673 clock-names = "core", "clkin0", "clkin1"; 706 clock-names = "core", "clkin0", "clkin1";
674}; 707};
675 708
676&sd_emmc_c { 709&sd_emmc_c {
677 clocks = <&clkc CLKID_SD_EMMC_C>, 710 clocks = <&clkc CLKID_SD_EMMC_C>,
678 <&xtal>, 711 <&clkc CLKID_SD_EMMC_C_CLK0>,
679 <&clkc CLKID_FCLK_DIV2>; 712 <&clkc CLKID_FCLK_DIV2>;
680 clock-names = "core", "clkin0", "clkin1"; 713 clock-names = "core", "clkin0", "clkin1";
681}; 714};
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-hwacom-amazetv.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-hwacom-amazetv.dts
index 2a5804ce7f4b..977b4240f3c1 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-hwacom-amazetv.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-hwacom-amazetv.dts
@@ -123,7 +123,8 @@
123&sd_emmc_b { 123&sd_emmc_b {
124 status = "okay"; 124 status = "okay";
125 pinctrl-0 = <&sdcard_pins>; 125 pinctrl-0 = <&sdcard_pins>;
126 pinctrl-names = "default"; 126 pinctrl-1 = <&sdcard_clk_gate_pins>;
127 pinctrl-names = "default", "clk-gate";
127 128
128 bus-width = <4>; 129 bus-width = <4>;
129 cap-sd-highspeed; 130 cap-sd-highspeed;
@@ -141,10 +142,10 @@
141&sd_emmc_c { 142&sd_emmc_c {
142 status = "okay"; 143 status = "okay";
143 pinctrl-0 = <&emmc_pins>; 144 pinctrl-0 = <&emmc_pins>;
144 pinctrl-names = "default"; 145 pinctrl-1 = <&emmc_clk_gate_pins>;
146 pinctrl-names = "default", "clk-gate";
145 147
146 bus-width = <8>; 148 bus-width = <8>;
147 cap-sd-highspeed;
148 cap-mmc-highspeed; 149 cap-mmc-highspeed;
149 max-frequency = <100000000>; 150 max-frequency = <100000000>;
150 non-removable; 151 non-removable;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
index 69ca14ac10fa..64c54c92e214 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
@@ -91,6 +91,9 @@
91 91
92 states = <3300000 0>, 92 states = <3300000 0>,
93 <1800000 1>; 93 <1800000 1>;
94
95 regulator-settling-time-up-us = <200>;
96 regulator-settling-time-down-us = <50000>;
94 }; 97 };
95 98
96 vddio_boot: regulator-vddio_boot { 99 vddio_boot: regulator-vddio_boot {
@@ -197,10 +200,14 @@
197&sd_emmc_b { 200&sd_emmc_b {
198 status = "okay"; 201 status = "okay";
199 pinctrl-0 = <&sdcard_pins>; 202 pinctrl-0 = <&sdcard_pins>;
200 pinctrl-names = "default"; 203 pinctrl-1 = <&sdcard_clk_gate_pins>;
204 pinctrl-names = "default", "clk-gate";
201 205
202 bus-width = <4>; 206 bus-width = <4>;
203 cap-sd-highspeed; 207 cap-sd-highspeed;
208 sd-uhs-sdr12;
209 sd-uhs-sdr25;
210 sd-uhs-sdr50;
204 max-frequency = <100000000>; 211 max-frequency = <100000000>;
205 disable-wp; 212 disable-wp;
206 213
@@ -215,10 +222,12 @@
215&sd_emmc_c { 222&sd_emmc_c {
216 status = "okay"; 223 status = "okay";
217 pinctrl-0 = <&emmc_pins>; 224 pinctrl-0 = <&emmc_pins>;
218 pinctrl-names = "default"; 225 pinctrl-1 = <&emmc_clk_gate_pins>;
226 pinctrl-names = "default", "clk-gate";
219 227
220 bus-width = <8>; 228 bus-width = <8>;
221 cap-mmc-highspeed; 229 cap-mmc-highspeed;
230 mmc-ddr-3_3v;
222 max-frequency = <50000000>; 231 max-frequency = <50000000>;
223 non-removable; 232 non-removable;
224 disable-wp; 233 disable-wp;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-nexbox-a95x.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-nexbox-a95x.dts
index 4c2ac7650fcd..1b8f32867aa1 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-nexbox-a95x.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-nexbox-a95x.dts
@@ -189,7 +189,8 @@
189&sd_emmc_a { 189&sd_emmc_a {
190 status = "okay"; 190 status = "okay";
191 pinctrl-0 = <&sdio_pins>; 191 pinctrl-0 = <&sdio_pins>;
192 pinctrl-names = "default"; 192 pinctrl-1 = <&sdio_clk_gate_pins>;
193 pinctrl-names = "default", "clk-gate";
193 #address-cells = <1>; 194 #address-cells = <1>;
194 #size-cells = <0>; 195 #size-cells = <0>;
195 196
@@ -210,7 +211,8 @@
210&sd_emmc_b { 211&sd_emmc_b {
211 status = "okay"; 212 status = "okay";
212 pinctrl-0 = <&sdcard_pins>; 213 pinctrl-0 = <&sdcard_pins>;
213 pinctrl-names = "default"; 214 pinctrl-1 = <&sdcard_clk_gate_pins>;
215 pinctrl-names = "default", "clk-gate";
214 216
215 bus-width = <4>; 217 bus-width = <4>;
216 cap-sd-highspeed; 218 cap-sd-highspeed;
@@ -228,10 +230,10 @@
228&sd_emmc_c { 230&sd_emmc_c {
229 status = "okay"; 231 status = "okay";
230 pinctrl-0 = <&emmc_pins>; 232 pinctrl-0 = <&emmc_pins>;
231 pinctrl-names = "default"; 233 pinctrl-1 = <&emmc_clk_gate_pins>;
234 pinctrl-names = "default", "clk-gate";
232 235
233 bus-width = <8>; 236 bus-width = <8>;
234 cap-sd-highspeed;
235 cap-mmc-highspeed; 237 cap-mmc-highspeed;
236 max-frequency = <200000000>; 238 max-frequency = <200000000>;
237 non-removable; 239 non-removable;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi
index f3eea8e89d12..129af9068814 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi
@@ -95,7 +95,8 @@
95&sd_emmc_a { 95&sd_emmc_a {
96 status = "okay"; 96 status = "okay";
97 pinctrl-0 = <&sdio_pins>; 97 pinctrl-0 = <&sdio_pins>;
98 pinctrl-names = "default"; 98 pinctrl-1 = <&sdio_clk_gate_pins>;
99 pinctrl-names = "default", "clk-gate";
99 #address-cells = <1>; 100 #address-cells = <1>;
100 #size-cells = <0>; 101 #size-cells = <0>;
101 102
@@ -116,7 +117,8 @@
116&sd_emmc_b { 117&sd_emmc_b {
117 status = "okay"; 118 status = "okay";
118 pinctrl-0 = <&sdcard_pins>; 119 pinctrl-0 = <&sdcard_pins>;
119 pinctrl-names = "default"; 120 pinctrl-1 = <&sdcard_clk_gate_pins>;
121 pinctrl-names = "default", "clk-gate";
120 122
121 bus-width = <4>; 123 bus-width = <4>;
122 cap-sd-highspeed; 124 cap-sd-highspeed;
@@ -134,10 +136,10 @@
134&sd_emmc_c { 136&sd_emmc_c {
135 status = "okay"; 137 status = "okay";
136 pinctrl-0 = <&emmc_pins>; 138 pinctrl-0 = <&emmc_pins>;
137 pinctrl-names = "default"; 139 pinctrl-1 = <&emmc_clk_gate_pins>;
140 pinctrl-names = "default", "clk-gate";
138 141
139 bus-width = <8>; 142 bus-width = <8>;
140 cap-sd-highspeed;
141 cap-mmc-highspeed; 143 cap-mmc-highspeed;
142 max-frequency = <200000000>; 144 max-frequency = <200000000>;
143 non-removable; 145 non-removable;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
index d6876e64979e..d8dd3298b15c 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
@@ -281,6 +281,17 @@
281 }; 281 };
282 }; 282 };
283 283
284 emmc_clk_gate_pins: emmc_clk_gate {
285 mux {
286 groups = "BOOT_8";
287 function = "gpio_periphs";
288 };
289 cfg-pull-down {
290 pins = "BOOT_8";
291 bias-pull-down;
292 };
293 };
294
284 nor_pins: nor { 295 nor_pins: nor {
285 mux { 296 mux {
286 groups = "nor_d", 297 groups = "nor_d",
@@ -319,6 +330,17 @@
319 }; 330 };
320 }; 331 };
321 332
333 sdcard_clk_gate_pins: sdcard_clk_gate {
334 mux {
335 groups = "CARD_2";
336 function = "gpio_periphs";
337 };
338 cfg-pull-down {
339 pins = "CARD_2";
340 bias-pull-down;
341 };
342 };
343
322 sdio_pins: sdio { 344 sdio_pins: sdio {
323 mux { 345 mux {
324 groups = "sdio_d0", 346 groups = "sdio_d0",
@@ -331,6 +353,17 @@
331 }; 353 };
332 }; 354 };
333 355
356 sdio_clk_gate_pins: sdio_clk_gate {
357 mux {
358 groups = "GPIOX_4";
359 function = "gpio_periphs";
360 };
361 cfg-pull-down {
362 pins = "GPIOX_4";
363 bias-pull-down;
364 };
365 };
366
334 sdio_irq_pins: sdio_irq { 367 sdio_irq_pins: sdio_irq {
335 mux { 368 mux {
336 groups = "sdio_irq"; 369 groups = "sdio_irq";
@@ -603,21 +636,21 @@
603 636
604&sd_emmc_a { 637&sd_emmc_a {
605 clocks = <&clkc CLKID_SD_EMMC_A>, 638 clocks = <&clkc CLKID_SD_EMMC_A>,
606 <&xtal>, 639 <&clkc CLKID_SD_EMMC_A_CLK0>,
607 <&clkc CLKID_FCLK_DIV2>; 640 <&clkc CLKID_FCLK_DIV2>;
608 clock-names = "core", "clkin0", "clkin1"; 641 clock-names = "core", "clkin0", "clkin1";
609}; 642};
610 643
611&sd_emmc_b { 644&sd_emmc_b {
612 clocks = <&clkc CLKID_SD_EMMC_B>, 645 clocks = <&clkc CLKID_SD_EMMC_B>,
613 <&xtal>, 646 <&clkc CLKID_SD_EMMC_B_CLK0>,
614 <&clkc CLKID_FCLK_DIV2>; 647 <&clkc CLKID_FCLK_DIV2>;
615 clock-names = "core", "clkin0", "clkin1"; 648 clock-names = "core", "clkin0", "clkin1";
616}; 649};
617 650
618&sd_emmc_c { 651&sd_emmc_c {
619 clocks = <&clkc CLKID_SD_EMMC_C>, 652 clocks = <&clkc CLKID_SD_EMMC_C>,
620 <&xtal>, 653 <&clkc CLKID_SD_EMMC_C_CLK0>,
621 <&clkc CLKID_FCLK_DIV2>; 654 <&clkc CLKID_FCLK_DIV2>;
622 clock-names = "core", "clkin0", "clkin1"; 655 clock-names = "core", "clkin0", "clkin1";
623}; 656};
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts
index 9b10c5f4f8c0..22c697732f66 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts
@@ -175,7 +175,8 @@
175&sd_emmc_b { 175&sd_emmc_b {
176 status = "okay"; 176 status = "okay";
177 pinctrl-0 = <&sdcard_pins>; 177 pinctrl-0 = <&sdcard_pins>;
178 pinctrl-names = "default"; 178 pinctrl-1 = <&sdcard_clk_gate_pins>;
179 pinctrl-names = "default", "clk-gate";
179 180
180 bus-width = <4>; 181 bus-width = <4>;
181 cap-sd-highspeed; 182 cap-sd-highspeed;
@@ -193,10 +194,10 @@
193&sd_emmc_c { 194&sd_emmc_c {
194 status = "okay"; 195 status = "okay";
195 pinctrl-0 = <&emmc_pins>; 196 pinctrl-0 = <&emmc_pins>;
196 pinctrl-names = "default"; 197 pinctrl-1 = <&emmc_clk_gate_pins>;
198 pinctrl-names = "default", "clk-gate";
197 199
198 bus-width = <8>; 200 bus-width = <8>;
199 cap-sd-highspeed;
200 cap-mmc-highspeed; 201 cap-mmc-highspeed;
201 max-frequency = <200000000>; 202 max-frequency = <200000000>;
202 non-removable; 203 non-removable;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts
index 08f1dd69b679..470f72bb863c 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts
@@ -220,7 +220,6 @@
220 pinctrl-names = "default"; 220 pinctrl-names = "default";
221 221
222 bus-width = <8>; 222 bus-width = <8>;
223 cap-sd-highspeed;
224 cap-mmc-highspeed; 223 cap-mmc-highspeed;
225 max-frequency = <200000000>; 224 max-frequency = <200000000>;
226 non-removable; 225 non-removable;