aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2017-10-30 09:34:03 -0400
committerArnd Bergmann <arnd@arndb.de>2017-10-30 09:37:17 -0400
commita5494aed0d94a2e6b12be963d28b57cfffe0f9e9 (patch)
tree3a3e9996fcd896ccb3261290af9d6aa880eb075d
parentb295477e0026b92cceba642b111a3efd569d3cc5 (diff)
parent9d59b708500fcb62d28e15b8c6333be620984d8b (diff)
Merge tag 'amlogic-dt64' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic into next/dt
Pull "Amlogic 64-bit platforms: DT updates for v4.15" from Kevin Hilman: - new SoC support: A113D - new boards: Tronsmart Vega S96, Khadas vim2 - reserved memory fixups - gpio-names cleanups - MMC cleanups, enable high-speed modes - misc cleanups * tag 'amlogic-dt64' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic: arm64: dts: meson-axg: add initial A113D SoC DT support dt-bindings: arm: amlogic: Add Meson AXG binding ARM64: dts: meson-gx: remove unnecessary uart compatible ARM64: dts: meson-gx: remove unnecessary clocks properties ARM64: dts: meson-gxl: Add alternate ARM Trusted Firmware reserved memory zone ARM64: dts: meson-gxm: enable HS400 on the vim2 ARM64: dts: meson-gxbb-nexbox-a95x: Enable USB Nodes dt-bindings: arm: amlogic: Add Tronsmart Vega S96 binding ARM64: dts: meson-gxm: Add Vega S96 board ARM64: dts: meson-gxm: Add support for Khadas VIM2 ARM64: dts: meson-gxl: Take eMMC data strobe out of eMMC pins ARM64: dts: meson-gxl: adjust libretech-cc gpio-line-names ARM64: dts: meson-gxl: adjust kvim gpio-line-names ARM64: dts: meson-gxbb: adjust odroid-c2 gpio-line-names ARM64: dts: meson-gxbb: adjust nanopi-k2 gpio-line-names ARM64: dts: meson-gx: adjust gpio-ranges for TEST_N ARM64: dts: meson-gx: remove gpio offset ARM: dts: meson8: remove gpio offset ARM64: dts: meson-gxl-libretech-cc: enable internal phy leds ARM64: dts: meson-gxl-libretech-cc: enable saradc
-rw-r--r--Documentation/devicetree/bindings/arm/amlogic.txt8
-rw-r--r--arch/arm/boot/dts/meson8.dtsi2
-rw-r--r--arch/arm/boot/dts/meson8b.dtsi2
-rw-r--r--arch/arm64/boot/dts/amlogic/Makefile3
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-axg-s400.dts22
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-axg.dtsi204
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi2
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gx.dtsi13
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts12
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts31
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts12
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi2
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi2
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi12
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl-s905x-hwacom-amazetv.dts2
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts8
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts27
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl-s905x-nexbox-a95x.dts2
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi2
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl.dtsi20
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts400
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts2
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts2
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxm-vega-s96.dts38
24 files changed, 784 insertions, 46 deletions
diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
index 4e4bc0bae597..f747f47922c5 100644
--- a/Documentation/devicetree/bindings/arm/amlogic.txt
+++ b/Documentation/devicetree/bindings/arm/amlogic.txt
@@ -41,6 +41,10 @@ Boards with the Amlogic Meson GXM S912 SoC shall have the following properties:
41 Required root node property: 41 Required root node property:
42 compatible: "amlogic,s912", "amlogic,meson-gxm"; 42 compatible: "amlogic,s912", "amlogic,meson-gxm";
43 43
44Boards with the Amlogic Meson AXG A113D SoC shall have the following properties:
45 Required root node property:
46 compatible: "amlogic,a113d", "amlogic,meson-axg";
47
44Board compatible values (alphabetically, grouped by SoC): 48Board compatible values (alphabetically, grouped by SoC):
45 49
46 - "geniatech,atv1200" (Meson6) 50 - "geniatech,atv1200" (Meson6)
@@ -71,8 +75,12 @@ Board compatible values (alphabetically, grouped by SoC):
71 75
72 - "amlogic,q200" (Meson gxm s912) 76 - "amlogic,q200" (Meson gxm s912)
73 - "amlogic,q201" (Meson gxm s912) 77 - "amlogic,q201" (Meson gxm s912)
78 - "khadas,vim2" (Meson gxm s912)
74 - "kingnovel,r-box-pro" (Meson gxm S912) 79 - "kingnovel,r-box-pro" (Meson gxm S912)
75 - "nexbox,a1" (Meson gxm s912) 80 - "nexbox,a1" (Meson gxm s912)
81 - "tronsmart,vega-s96" (Meson gxm s912)
82
83 - "amlogic,s400" (Meson axg a113d)
76 84
77Amlogic Meson Firmware registers Interface 85Amlogic Meson Firmware registers Interface
78------------------------------------------ 86------------------------------------------
diff --git a/arch/arm/boot/dts/meson8.dtsi b/arch/arm/boot/dts/meson8.dtsi
index 661287806ead..2d7a0752a460 100644
--- a/arch/arm/boot/dts/meson8.dtsi
+++ b/arch/arm/boot/dts/meson8.dtsi
@@ -146,7 +146,7 @@
146 reg-names = "mux", "pull", "gpio"; 146 reg-names = "mux", "pull", "gpio";
147 gpio-controller; 147 gpio-controller;
148 #gpio-cells = <2>; 148 #gpio-cells = <2>;
149 gpio-ranges = <&pinctrl_aobus 0 120 16>; 149 gpio-ranges = <&pinctrl_aobus 0 0 16>;
150 }; 150 };
151 151
152 uart_ao_a_pins: uart_ao_a { 152 uart_ao_a_pins: uart_ao_a {
diff --git a/arch/arm/boot/dts/meson8b.dtsi b/arch/arm/boot/dts/meson8b.dtsi
index 7ecce8890d21..d75e0ceda8bb 100644
--- a/arch/arm/boot/dts/meson8b.dtsi
+++ b/arch/arm/boot/dts/meson8b.dtsi
@@ -130,7 +130,7 @@
130 reg-names = "mux", "pull", "gpio"; 130 reg-names = "mux", "pull", "gpio";
131 gpio-controller; 131 gpio-controller;
132 #gpio-cells = <2>; 132 #gpio-cells = <2>;
133 gpio-ranges = <&pinctrl_aobus 0 130 16>; 133 gpio-ranges = <&pinctrl_aobus 0 0 16>;
134 }; 134 };
135 135
136 uart_ao_a_pins: uart_ao_a { 136 uart_ao_a_pins: uart_ao_a {
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
index 7a9f48c27b1f..3d6b088d2160 100644
--- a/arch/arm64/boot/dts/amlogic/Makefile
+++ b/arch/arm64/boot/dts/amlogic/Makefile
@@ -1,3 +1,4 @@
1dtb-$(CONFIG_ARCH_MESON) += meson-axg-s400.dtb
1dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb 2dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb
2dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nexbox-a95x.dtb 3dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nexbox-a95x.dtb
3dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-odroidc2.dtb 4dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-odroidc2.dtb
@@ -15,10 +16,12 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-nexbox-a95x.dtb
15dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-p212.dtb 16dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-p212.dtb
16dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-p230.dtb 17dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-p230.dtb
17dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-p231.dtb 18dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-p231.dtb
19dtb-$(CONFIG_ARCH_MESON) += meson-gxm-khadas-vim2.dtb
18dtb-$(CONFIG_ARCH_MESON) += meson-gxm-nexbox-a1.dtb 20dtb-$(CONFIG_ARCH_MESON) += meson-gxm-nexbox-a1.dtb
19dtb-$(CONFIG_ARCH_MESON) += meson-gxm-q200.dtb 21dtb-$(CONFIG_ARCH_MESON) += meson-gxm-q200.dtb
20dtb-$(CONFIG_ARCH_MESON) += meson-gxm-q201.dtb 22dtb-$(CONFIG_ARCH_MESON) += meson-gxm-q201.dtb
21dtb-$(CONFIG_ARCH_MESON) += meson-gxm-rbox-pro.dtb 23dtb-$(CONFIG_ARCH_MESON) += meson-gxm-rbox-pro.dtb
24dtb-$(CONFIG_ARCH_MESON) += meson-gxm-vega-s96.dtb
22 25
23always := $(dtb-y) 26always := $(dtb-y)
24subdir-y := $(dts-dirs) 27subdir-y := $(dts-dirs)
diff --git a/arch/arm64/boot/dts/amlogic/meson-axg-s400.dts b/arch/arm64/boot/dts/amlogic/meson-axg-s400.dts
new file mode 100644
index 000000000000..70eca1f8736a
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/meson-axg-s400.dts
@@ -0,0 +1,22 @@
1/*
2 * Copyright (c) 2017 Amlogic, Inc. All rights reserved.
3 *
4 * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
5 */
6
7/dts-v1/;
8
9#include "meson-axg.dtsi"
10
11/ {
12 compatible = "amlogic,s400", "amlogic,a113d", "amlogic,meson-axg";
13 model = "Amlogic Meson AXG S400 Development Board";
14
15 aliases {
16 serial0 = &uart_AO;
17 };
18};
19
20&uart_AO {
21 status = "okay";
22};
diff --git a/arch/arm64/boot/dts/amlogic/meson-axg.dtsi b/arch/arm64/boot/dts/amlogic/meson-axg.dtsi
new file mode 100644
index 000000000000..b932a784b02a
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/meson-axg.dtsi
@@ -0,0 +1,204 @@
1/*
2 * Copyright (c) 2017 Amlogic, Inc. All rights reserved.
3 *
4 * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
5 */
6
7#include <dt-bindings/gpio/gpio.h>
8#include <dt-bindings/interrupt-controller/irq.h>
9#include <dt-bindings/interrupt-controller/arm-gic.h>
10
11/ {
12 compatible = "amlogic,meson-axg";
13
14 interrupt-parent = <&gic>;
15 #address-cells = <2>;
16 #size-cells = <2>;
17
18 reserved-memory {
19 #address-cells = <2>;
20 #size-cells = <2>;
21 ranges;
22
23 /* 16 MiB reserved for Hardware ROM Firmware */
24 hwrom_reserved: hwrom@0 {
25 reg = <0x0 0x0 0x0 0x1000000>;
26 no-map;
27 };
28
29 /* Alternate 3 MiB reserved for ARM Trusted Firmware (BL31) */
30 secmon_reserved: secmon@5000000 {
31 reg = <0x0 0x05000000 0x0 0x300000>;
32 no-map;
33 };
34 };
35
36 cpus {
37 #address-cells = <0x2>;
38 #size-cells = <0x0>;
39
40 cpu0: cpu@0 {
41 device_type = "cpu";
42 compatible = "arm,cortex-a53", "arm,armv8";
43 reg = <0x0 0x0>;
44 enable-method = "psci";
45 next-level-cache = <&l2>;
46 };
47
48 cpu1: cpu@1 {
49 device_type = "cpu";
50 compatible = "arm,cortex-a53", "arm,armv8";
51 reg = <0x0 0x1>;
52 enable-method = "psci";
53 next-level-cache = <&l2>;
54 };
55
56 cpu2: cpu@2 {
57 device_type = "cpu";
58 compatible = "arm,cortex-a53", "arm,armv8";
59 reg = <0x0 0x2>;
60 enable-method = "psci";
61 next-level-cache = <&l2>;
62 };
63
64 cpu3: cpu@3 {
65 device_type = "cpu";
66 compatible = "arm,cortex-a53", "arm,armv8";
67 reg = <0x0 0x3>;
68 enable-method = "psci";
69 next-level-cache = <&l2>;
70 };
71
72 l2: l2-cache0 {
73 compatible = "cache";
74 };
75 };
76
77 arm-pmu {
78 compatible = "arm,cortex-a53-pmu";
79 interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
80 <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
81 <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
82 <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
83 interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
84 };
85
86 psci {
87 compatible = "arm,psci-1.0";
88 method = "smc";
89 };
90
91 timer {
92 compatible = "arm,armv8-timer";
93 interrupts = <GIC_PPI 13
94 (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
95 <GIC_PPI 14
96 (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
97 <GIC_PPI 11
98 (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
99 <GIC_PPI 10
100 (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>;
101 };
102
103 xtal: xtal-clk {
104 compatible = "fixed-clock";
105 clock-frequency = <24000000>;
106 clock-output-names = "xtal";
107 #clock-cells = <0>;
108 };
109
110 soc {
111 compatible = "simple-bus";
112 #address-cells = <2>;
113 #size-cells = <2>;
114 ranges;
115
116 cbus: cbus@ffd00000 {
117 compatible = "simple-bus";
118 reg = <0x0 0xffd00000 0x0 0x25000>;
119 #address-cells = <2>;
120 #size-cells = <2>;
121 ranges = <0x0 0x0 0x0 0xffd00000 0x0 0x25000>;
122
123 uart_A: serial@24000 {
124 compatible = "amlogic,meson-gx-uart", "amlogic,meson-uart";
125 reg = <0x0 0x24000 0x0 0x14>;
126 interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
127 status = "disabled";
128 };
129
130 uart_B: serial@23000 {
131 compatible = "amlogic,meson-gx-uart", "amlogic,meson-uart";
132 reg = <0x0 0x23000 0x0 0x14>;
133 interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING>;
134 status = "disabled";
135 };
136 };
137
138 gic: interrupt-controller@ffc01000 {
139 compatible = "arm,gic-400";
140 reg = <0x0 0xffc01000 0 0x1000>,
141 <0x0 0xffc02000 0 0x2000>,
142 <0x0 0xffc04000 0 0x2000>,
143 <0x0 0xffc06000 0 0x2000>;
144 interrupt-controller;
145 interrupts = <GIC_PPI 9
146 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
147 #interrupt-cells = <3>;
148 #address-cells = <0>;
149 };
150
151 mailbox: mailbox@ff63dc00 {
152 compatible = "amlogic,meson-gx-mhu", "amlogic,meson-gxbb-mhu";
153 reg = <0 0xff63dc00 0 0x400>;
154 interrupts = <GIC_SPI 208 IRQ_TYPE_EDGE_RISING>,
155 <GIC_SPI 209 IRQ_TYPE_EDGE_RISING>,
156 <GIC_SPI 210 IRQ_TYPE_EDGE_RISING>;
157 #mbox-cells = <1>;
158 };
159
160 sram: sram@fffc0000 {
161 compatible = "amlogic,meson-axg-sram", "mmio-sram";
162 reg = <0x0 0xfffc0000 0x0 0x20000>;
163 #address-cells = <1>;
164 #size-cells = <1>;
165 ranges = <0 0x0 0xfffc0000 0x20000>;
166
167 cpu_scp_lpri: scp-shmem@0 {
168 compatible = "amlogic,meson-axg-scp-shmem";
169 reg = <0x13000 0x400>;
170 };
171
172 cpu_scp_hpri: scp-shmem@200 {
173 compatible = "amlogic,meson-axg-scp-shmem";
174 reg = <0x13400 0x400>;
175 };
176 };
177
178 aobus: aobus@ff800000 {
179 compatible = "simple-bus";
180 reg = <0x0 0xff800000 0x0 0x100000>;
181 #address-cells = <2>;
182 #size-cells = <2>;
183 ranges = <0x0 0x0 0x0 0xff800000 0x0 0x100000>;
184
185 uart_AO: serial@3000 {
186 compatible = "amlogic,meson-gx-uart", "amlogic,meson-ao-uart";
187 reg = <0x0 0x3000 0x0 0x18>;
188 interrupts = <GIC_SPI 193 IRQ_TYPE_EDGE_RISING>;
189 clocks = <&xtal>, <&xtal>, <&xtal>;
190 clock-names = "xtal", "pclk", "baud";
191 status = "disabled";
192 };
193
194 uart_AO_B: serial@4000 {
195 compatible = "amlogic,meson-gx-uart", "amlogic,meson-ao-uart";
196 reg = <0x0 0x4000 0x0 0x18>;
197 interrupts = <GIC_SPI 197 IRQ_TYPE_EDGE_RISING>;
198 clocks = <&xtal>, <&xtal>, <&xtal>;
199 clock-names = "xtal", "pclk", "baud";
200 status = "disabled";
201 };
202 };
203 };
204};
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 4157987f4a3d..7d4b95e49993 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
@@ -213,7 +213,7 @@
213/* eMMC */ 213/* eMMC */
214&sd_emmc_c { 214&sd_emmc_c {
215 status = "okay"; 215 status = "okay";
216 pinctrl-0 = <&emmc_pins>; 216 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
217 pinctrl-1 = <&emmc_clk_gate_pins>; 217 pinctrl-1 = <&emmc_clk_gate_pins>;
218 pinctrl-names = "default", "clk-gate"; 218 pinctrl-names = "default", "clk-gate";
219 219
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
index f175db846286..b7723436a04b 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
@@ -225,18 +225,16 @@
225 }; 225 };
226 226
227 uart_A: serial@84c0 { 227 uart_A: serial@84c0 {
228 compatible = "amlogic,meson-gx-uart", "amlogic,meson-uart"; 228 compatible = "amlogic,meson-gx-uart";
229 reg = <0x0 0x84c0 0x0 0x14>; 229 reg = <0x0 0x84c0 0x0 0x14>;
230 interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>; 230 interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
231 clocks = <&xtal>;
232 status = "disabled"; 231 status = "disabled";
233 }; 232 };
234 233
235 uart_B: serial@84dc { 234 uart_B: serial@84dc {
236 compatible = "amlogic,meson-gx-uart", "amlogic,meson-uart"; 235 compatible = "amlogic,meson-gx-uart";
237 reg = <0x0 0x84dc 0x0 0x14>; 236 reg = <0x0 0x84dc 0x0 0x14>;
238 interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING>; 237 interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING>;
239 clocks = <&xtal>;
240 status = "disabled"; 238 status = "disabled";
241 }; 239 };
242 240
@@ -279,10 +277,9 @@
279 }; 277 };
280 278
281 uart_C: serial@8700 { 279 uart_C: serial@8700 {
282 compatible = "amlogic,meson-gx-uart", "amlogic,meson-uart"; 280 compatible = "amlogic,meson-gx-uart";
283 reg = <0x0 0x8700 0x0 0x14>; 281 reg = <0x0 0x8700 0x0 0x14>;
284 interrupts = <GIC_SPI 93 IRQ_TYPE_EDGE_RISING>; 282 interrupts = <GIC_SPI 93 IRQ_TYPE_EDGE_RISING>;
285 clocks = <&xtal>;
286 status = "disabled"; 283 status = "disabled";
287 }; 284 };
288 285
@@ -391,14 +388,14 @@
391 }; 388 };
392 389
393 uart_AO: serial@4c0 { 390 uart_AO: serial@4c0 {
394 compatible = "amlogic,meson-gx-uart", "amlogic,meson-ao-uart", "amlogic,meson-uart"; 391 compatible = "amlogic,meson-gx-uart", "amlogic,meson-ao-uart";
395 reg = <0x0 0x004c0 0x0 0x14>; 392 reg = <0x0 0x004c0 0x0 0x14>;
396 interrupts = <GIC_SPI 193 IRQ_TYPE_EDGE_RISING>; 393 interrupts = <GIC_SPI 193 IRQ_TYPE_EDGE_RISING>;
397 status = "disabled"; 394 status = "disabled";
398 }; 395 };
399 396
400 uart_AO_B: serial@4e0 { 397 uart_AO_B: serial@4e0 {
401 compatible = "amlogic,meson-gx-uart", "amlogic,meson-ao-uart", "amlogic,meson-uart"; 398 compatible = "amlogic,meson-gx-uart", "amlogic,meson-ao-uart";
402 reg = <0x0 0x004e0 0x0 0x14>; 399 reg = <0x0 0x004e0 0x0 0x14>;
403 interrupts = <GIC_SPI 197 IRQ_TYPE_EDGE_RISING>; 400 interrupts = <GIC_SPI 197 IRQ_TYPE_EDGE_RISING>;
404 status = "disabled"; 401 status = "disabled";
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 4b17a76959b2..2e853c082a65 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts
@@ -183,7 +183,9 @@
183 "VCCK En", "CON1 Header Pin31", 183 "VCCK En", "CON1 Header Pin31",
184 "I2S Header Pin6", "IR In", "I2S Header Pin7", 184 "I2S Header Pin6", "IR In", "I2S Header Pin7",
185 "I2S Header Pin3", "I2S Header Pin4", 185 "I2S Header Pin3", "I2S Header Pin4",
186 "I2S Header Pin5", "HDMI CEC", "SYS LED"; 186 "I2S Header Pin5", "HDMI CEC", "SYS LED",
187 /* GPIO_TEST_N */
188 "";
187}; 189};
188 190
189&pinctrl_periphs { 191&pinctrl_periphs {
@@ -229,11 +231,9 @@
229 "Bluetooth UART TX", "Bluetooth UART RX", 231 "Bluetooth UART TX", "Bluetooth UART RX",
230 "Bluetooth UART CTS", "Bluetooth UART RTS", 232 "Bluetooth UART CTS", "Bluetooth UART RTS",
231 "", "", "", "WIFI 32K", "Bluetooth Enable", 233 "", "", "", "WIFI 32K", "Bluetooth Enable",
232 "Bluetooth WAKE HOST", 234 "Bluetooth WAKE HOST", "",
233 /* Bank GPIOCLK */ 235 /* Bank GPIOCLK */
234 "", "CON1 Header Pin35", "", "", 236 "", "CON1 Header Pin35", "", "";
235 /* GPIO_TEST_N */
236 "";
237}; 237};
238 238
239&pwm_ef { 239&pwm_ef {
@@ -302,7 +302,7 @@
302/* eMMC */ 302/* eMMC */
303&sd_emmc_c { 303&sd_emmc_c {
304 status = "disabled"; 304 status = "disabled";
305 pinctrl-0 = <&emmc_pins>; 305 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
306 pinctrl-1 = <&emmc_clk_gate_pins>; 306 pinctrl-1 = <&emmc_clk_gate_pins>;
307 pinctrl-names = "default", "clk-gate"; 307 pinctrl-names = "default", "clk-gate";
308 308
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 38dfdde5c147..818954b1d57f 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts
@@ -88,6 +88,18 @@
88 }; 88 };
89 }; 89 };
90 90
91 usb_pwr: regulator-usb-pwrs {
92 compatible = "regulator-fixed";
93
94 regulator-name = "USB_PWR";
95
96 regulator-min-microvolt = <5000000>;
97 regulator-max-microvolt = <5000000>;
98
99 gpio = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>;
100 enable-active-high;
101 };
102
91 vddio_card: gpio-regulator { 103 vddio_card: gpio-regulator {
92 compatible = "regulator-gpio"; 104 compatible = "regulator-gpio";
93 105
@@ -272,7 +284,7 @@
272/* eMMC */ 284/* eMMC */
273&sd_emmc_c { 285&sd_emmc_c {
274 status = "okay"; 286 status = "okay";
275 pinctrl-0 = <&emmc_pins>; 287 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
276 pinctrl-1 = <&emmc_clk_gate_pins>; 288 pinctrl-1 = <&emmc_clk_gate_pins>;
277 pinctrl-names = "default", "clk-gate"; 289 pinctrl-names = "default", "clk-gate";
278 290
@@ -294,3 +306,20 @@
294 pinctrl-0 = <&uart_ao_a_pins>; 306 pinctrl-0 = <&uart_ao_a_pins>;
295 pinctrl-names = "default"; 307 pinctrl-names = "default";
296}; 308};
309
310&usb0_phy {
311 status = "okay";
312 phy-supply = <&usb_pwr>;
313};
314
315&usb1_phy {
316 status = "okay";
317};
318
319&usb0 {
320 status = "okay";
321};
322
323&usb1 {
324 status = "okay";
325};
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
index 1ffa1c238a72..1deaa53c9fb5 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
@@ -194,7 +194,9 @@
194 "USB HUB nRESET", "USB OTG Power En", 194 "USB HUB nRESET", "USB OTG Power En",
195 "J7 Header Pin2", "IR In", "J7 Header Pin4", 195 "J7 Header Pin2", "IR In", "J7 Header Pin4",
196 "J7 Header Pin6", "J7 Header Pin5", "J7 Header Pin7", 196 "J7 Header Pin6", "J7 Header Pin5", "J7 Header Pin7",
197 "HDMI CEC", "SYS LED"; 197 "HDMI CEC", "SYS LED",
198 /* GPIO_TEST_N */
199 "";
198}; 200};
199 201
200&pinctrl_periphs { 202&pinctrl_periphs {
@@ -233,11 +235,9 @@
233 "J2 Header Pin12", "J2 Header Pin13", 235 "J2 Header Pin12", "J2 Header Pin13",
234 "J2 Header Pin8", "J2 Header Pin10", 236 "J2 Header Pin8", "J2 Header Pin10",
235 "", "", "", "", "", 237 "", "", "", "", "",
236 "J2 Header Pin11", "", "J2 Header Pin7", 238 "J2 Header Pin11", "", "J2 Header Pin7", "",
237 /* Bank GPIOCLK */ 239 /* Bank GPIOCLK */
238 "", "", "", "", 240 "", "", "", "";
239 /* GPIO_TEST_N */
240 "";
241}; 241};
242 242
243&saradc { 243&saradc {
@@ -271,7 +271,7 @@
271/* eMMC */ 271/* eMMC */
272&sd_emmc_c { 272&sd_emmc_c {
273 status = "okay"; 273 status = "okay";
274 pinctrl-0 = <&emmc_pins>; 274 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
275 pinctrl-1 = <&emmc_clk_gate_pins>; 275 pinctrl-1 = <&emmc_clk_gate_pins>;
276 pinctrl-names = "default", "clk-gate"; 276 pinctrl-names = "default", "clk-gate";
277 277
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi
index 23c08c3afd0a..932158a778ef 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi
@@ -242,7 +242,7 @@
242/* eMMC */ 242/* eMMC */
243&sd_emmc_c { 243&sd_emmc_c {
244 status = "okay"; 244 status = "okay";
245 pinctrl-0 = <&emmc_pins>; 245 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
246 pinctrl-1 = <&emmc_clk_gate_pins>; 246 pinctrl-1 = <&emmc_clk_gate_pins>;
247 pinctrl-names = "default", "clk-gate"; 247 pinctrl-names = "default", "clk-gate";
248 248
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 f2bc6dea1fc6..1fe8e24cf675 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi
@@ -199,7 +199,7 @@
199/* eMMC */ 199/* eMMC */
200&sd_emmc_c { 200&sd_emmc_c {
201 status = "okay"; 201 status = "okay";
202 pinctrl-0 = <&emmc_pins>; 202 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
203 pinctrl-1 = <&emmc_clk_gate_pins>; 203 pinctrl-1 = <&emmc_clk_gate_pins>;
204 pinctrl-names = "default", "clk-gate"; 204 pinctrl-names = "default", "clk-gate";
205 205
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi
index af834cdbba79..3d41db9c9d22 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi
@@ -379,15 +379,21 @@
379 reg-names = "mux", "pull", "pull-enable", "gpio"; 379 reg-names = "mux", "pull", "pull-enable", "gpio";
380 gpio-controller; 380 gpio-controller;
381 #gpio-cells = <2>; 381 #gpio-cells = <2>;
382 gpio-ranges = <&pinctrl_periphs 0 14 120>; 382 gpio-ranges = <&pinctrl_periphs 0 0 119>;
383 }; 383 };
384 384
385 emmc_pins: emmc { 385 emmc_pins: emmc {
386 mux { 386 mux {
387 groups = "emmc_nand_d07", 387 groups = "emmc_nand_d07",
388 "emmc_cmd", 388 "emmc_cmd",
389 "emmc_clk", 389 "emmc_clk";
390 "emmc_ds"; 390 function = "emmc";
391 };
392 };
393
394 emmc_ds_pins: emmc-ds {
395 mux {
396 groups = "emmc_ds";
391 function = "emmc"; 397 function = "emmc";
392 }; 398 };
393 }; 399 };
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 977b4240f3c1..e82582574160 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
@@ -141,7 +141,7 @@
141/* eMMC */ 141/* eMMC */
142&sd_emmc_c { 142&sd_emmc_c {
143 status = "okay"; 143 status = "okay";
144 pinctrl-0 = <&emmc_pins>; 144 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
145 pinctrl-1 = <&emmc_clk_gate_pins>; 145 pinctrl-1 = <&emmc_clk_gate_pins>;
146 pinctrl-names = "default", "clk-gate"; 146 pinctrl-names = "default", "clk-gate";
147 147
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
index edc512ad0bac..71a6e1ce7ad5 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
@@ -122,7 +122,9 @@
122 "J9 Header Pin33", 122 "J9 Header Pin33",
123 "IR In", 123 "IR In",
124 "HDMI CEC", 124 "HDMI CEC",
125 "SYS LED"; 125 "SYS LED",
126 /* GPIO_TEST_N */
127 "";
126}; 128};
127 129
128&pinctrl_periphs { 130&pinctrl_periphs {
@@ -163,9 +165,7 @@
163 "WIFI 32K", "Bluetooth Enable", 165 "WIFI 32K", "Bluetooth Enable",
164 "Bluetooth WAKE HOST", 166 "Bluetooth WAKE HOST",
165 /* Bank GPIOCLK */ 167 /* Bank GPIOCLK */
166 "", "J9 Header Pin39", 168 "", "J9 Header Pin39";
167 /* GPIO_TEST_N */
168 "";
169}; 169};
170 170
171&pwm_AO_ab { 171&pwm_AO_ab {
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 64c54c92e214..dc9c3b8216c2 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
@@ -96,6 +96,13 @@
96 regulator-settling-time-down-us = <50000>; 96 regulator-settling-time-down-us = <50000>;
97 }; 97 };
98 98
99 vddio_ao18: regulator-vddio_ao18 {
100 compatible = "regulator-fixed";
101 regulator-name = "VDDIO_AO18";
102 regulator-min-microvolt = <1800000>;
103 regulator-max-microvolt = <1800000>;
104 };
105
99 vddio_boot: regulator-vddio_boot { 106 vddio_boot: regulator-vddio_boot {
100 compatible = "regulator-fixed"; 107 compatible = "regulator-fixed";
101 regulator-name = "VDDIO_BOOT"; 108 regulator-name = "VDDIO_BOOT";
@@ -121,6 +128,11 @@
121 status = "okay"; 128 status = "okay";
122}; 129};
123 130
131&internal_phy {
132 pinctrl-0 = <&eth_link_led_pins>, <&eth_act_led_pins>;
133 pinctrl-names = "default";
134};
135
124&ir { 136&ir {
125 status = "okay"; 137 status = "okay";
126 pinctrl-0 = <&remote_input_ao_pins>; 138 pinctrl-0 = <&remote_input_ao_pins>;
@@ -149,7 +161,9 @@
149 "7J1 Header Pin12", 161 "7J1 Header Pin12",
150 "IR In", 162 "IR In",
151 "9J3 Switch HDMI CEC/7J1 Header Pin11", 163 "9J3 Switch HDMI CEC/7J1 Header Pin11",
152 "7J1 Header Pin13"; 164 "7J1 Header Pin13",
165 /* GPIO_TEST_N */
166 "7J1 Header Pin15";
153}; 167};
154 168
155&pinctrl_periphs { 169&pinctrl_periphs {
@@ -191,9 +205,12 @@
191 "7J1 Header Pin32", "7J1 Header Pin29", 205 "7J1 Header Pin32", "7J1 Header Pin29",
192 "7J1 Header Pin31", 206 "7J1 Header Pin31",
193 /* Bank GPIOCLK */ 207 /* Bank GPIOCLK */
194 "7J1 Header Pin7", "", 208 "7J1 Header Pin7", "";
195 /* GPIO_TEST_N */ 209};
196 "7J1 Header Pin15"; 210
211&saradc {
212 status = "okay";
213 vref-supply = <&vddio_ao18>;
197}; 214};
198 215
199/* SD card */ 216/* SD card */
@@ -221,7 +238,7 @@
221/* eMMC */ 238/* eMMC */
222&sd_emmc_c { 239&sd_emmc_c {
223 status = "okay"; 240 status = "okay";
224 pinctrl-0 = <&emmc_pins>; 241 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
225 pinctrl-1 = <&emmc_clk_gate_pins>; 242 pinctrl-1 = <&emmc_clk_gate_pins>;
226 pinctrl-names = "default", "clk-gate"; 243 pinctrl-names = "default", "clk-gate";
227 244
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 1b8f32867aa1..271f14279180 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
@@ -229,7 +229,7 @@
229/* eMMC */ 229/* eMMC */
230&sd_emmc_c { 230&sd_emmc_c {
231 status = "okay"; 231 status = "okay";
232 pinctrl-0 = <&emmc_pins>; 232 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
233 pinctrl-1 = <&emmc_clk_gate_pins>; 233 pinctrl-1 = <&emmc_clk_gate_pins>;
234 pinctrl-names = "default", "clk-gate"; 234 pinctrl-names = "default", "clk-gate";
235 235
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 129af9068814..ff09df1fd5a3 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi
@@ -135,7 +135,7 @@
135/* eMMC */ 135/* eMMC */
136&sd_emmc_c { 136&sd_emmc_c {
137 status = "okay"; 137 status = "okay";
138 pinctrl-0 = <&emmc_pins>; 138 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
139 pinctrl-1 = <&emmc_clk_gate_pins>; 139 pinctrl-1 = <&emmc_clk_gate_pins>;
140 pinctrl-names = "default", "clk-gate"; 140 pinctrl-names = "default", "clk-gate";
141 141
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
index d8dd3298b15c..703cde9546a1 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
@@ -49,6 +49,14 @@
49 49
50/ { 50/ {
51 compatible = "amlogic,meson-gxl"; 51 compatible = "amlogic,meson-gxl";
52
53 reserved-memory {
54 /* Alternate 3 MiB reserved for ARM Trusted Firmware (BL31) */
55 secmon_reserved_alt: secmon@5000000 {
56 reg = <0x0 0x05000000 0x0 0x300000>;
57 no-map;
58 };
59 };
52}; 60};
53 61
54&ethmac { 62&ethmac {
@@ -268,15 +276,21 @@
268 reg-names = "mux", "pull", "pull-enable", "gpio"; 276 reg-names = "mux", "pull", "pull-enable", "gpio";
269 gpio-controller; 277 gpio-controller;
270 #gpio-cells = <2>; 278 #gpio-cells = <2>;
271 gpio-ranges = <&pinctrl_periphs 0 10 101>; 279 gpio-ranges = <&pinctrl_periphs 0 0 100>;
272 }; 280 };
273 281
274 emmc_pins: emmc { 282 emmc_pins: emmc {
275 mux { 283 mux {
276 groups = "emmc_nand_d07", 284 groups = "emmc_nand_d07",
277 "emmc_cmd", 285 "emmc_cmd",
278 "emmc_clk", 286 "emmc_clk";
279 "emmc_ds"; 287 function = "emmc";
288 };
289 };
290
291 emmc_ds_pins: emmc-ds {
292 mux {
293 groups = "emmc_ds";
280 function = "emmc"; 294 function = "emmc";
281 }; 295 };
282 }; 296 };
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts
new file mode 100644
index 000000000000..34a41b26a4ed
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts
@@ -0,0 +1,400 @@
1/*
2 * Copyright (c) 2017 Martin Blumenstingl <martin.blumenstingl@googlemail.com>.
3 * Copyright (c) 2017 BayLibre, SAS
4 * Author: Neil Armstrong <narmstrong@baylibre.com>
5 *
6 * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
7 */
8
9/dts-v1/;
10
11#include <dt-bindings/input/input.h>
12#include <dt-bindings/thermal/thermal.h>
13
14#include "meson-gxm.dtsi"
15
16/ {
17 compatible = "khadas,vim2", "amlogic,s912", "amlogic,meson-gxm";
18 model = "Khadas VIM2";
19
20 aliases {
21 serial0 = &uart_AO;
22 serial1 = &uart_A;
23 serial2 = &uart_AO_B;
24 };
25
26 chosen {
27 stdout-path = "serial0:115200n8";
28 };
29
30 memory@0 {
31 device_type = "memory";
32 reg = <0x0 0x0 0x0 0x80000000>;
33 };
34
35 adc-keys {
36 compatible = "adc-keys";
37 io-channels = <&saradc 0>;
38 io-channel-names = "buttons";
39 keyup-threshold-microvolt = <1710000>;
40
41 button-function {
42 label = "Function";
43 linux,code = <KEY_FN>;
44 press-threshold-microvolt = <10000>;
45 };
46 };
47
48 emmc_pwrseq: emmc-pwrseq {
49 compatible = "mmc-pwrseq-emmc";
50 reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
51 };
52
53 gpio_fan: gpio-fan {
54 compatible = "gpio-fan";
55 gpios = <&gpio GPIODV_14 GPIO_ACTIVE_HIGH
56 &gpio GPIODV_15 GPIO_ACTIVE_HIGH>;
57 /* Dummy RPM values since fan is optional */
58 gpio-fan,speed-map = <0 0
59 1 1
60 2 2
61 3 3>;
62 cooling-min-level = <0>;
63 cooling-max-level = <3>;
64 #cooling-cells = <2>;
65 };
66
67 gpio-keys-polled {
68 compatible = "gpio-keys-polled";
69 #address-cells = <1>;
70 #size-cells = <0>;
71 poll-interval = <100>;
72
73 button@0 {
74 label = "power";
75 linux,code = <KEY_POWER>;
76 gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
77 };
78 };
79
80 hdmi-connector {
81 compatible = "hdmi-connector";
82 type = "a";
83
84 port {
85 hdmi_connector_in: endpoint {
86 remote-endpoint = <&hdmi_tx_tmds_out>;
87 };
88 };
89 };
90
91 pwmleds {
92 compatible = "pwm-leds";
93
94 power {
95 label = "vim:red:power";
96 pwms = <&pwm_AO_ab 1 7812500 0>;
97 max-brightness = <255>;
98 linux,default-trigger = "default-on";
99 };
100 };
101
102 sdio_pwrseq: sdio-pwrseq {
103 compatible = "mmc-pwrseq-simple";
104 reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
105 clocks = <&wifi32k>;
106 clock-names = "ext_clock";
107 };
108
109 thermal-zones {
110 cpu-thermal {
111 polling-delay-passive = <250>; /* milliseconds */
112 polling-delay = <1000>; /* milliseconds */
113
114 thermal-sensors = <&scpi_sensors 0>;
115
116 trips {
117 cpu_alert0: cpu-alert0 {
118 temperature = <70000>; /* millicelsius */
119 hysteresis = <2000>; /* millicelsius */
120 type = "active";
121 };
122
123 cpu_alert1: cpu-alert1 {
124 temperature = <80000>; /* millicelsius */
125 hysteresis = <2000>; /* millicelsius */
126 type = "passive";
127 };
128 };
129
130 cooling-maps {
131 map0 {
132 trip = <&cpu_alert0>;
133 cooling-device = <&gpio_fan THERMAL_NO_LIMIT 1>;
134 };
135
136 map1 {
137 trip = <&cpu_alert1>;
138 cooling-device = <&gpio_fan 2 THERMAL_NO_LIMIT>;
139 };
140
141 map2 {
142 trip = <&cpu_alert1>;
143 cooling-device =
144 <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
145 };
146
147 map3 {
148 trip = <&cpu_alert1>;
149 cooling-device =
150 <&cpu4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
151 };
152 };
153 };
154 };
155
156 vcc_3v3: regulator-vcc_3v3 {
157 compatible = "regulator-fixed";
158 regulator-name = "VCC_3V3";
159 regulator-min-microvolt = <3300000>;
160 regulator-max-microvolt = <3300000>;
161 };
162
163 vddio_ao18: regulator-vddio_ao18 {
164 compatible = "regulator-fixed";
165 regulator-name = "VDDIO_AO18";
166 regulator-min-microvolt = <1800000>;
167 regulator-max-microvolt = <1800000>;
168 };
169
170 vddio_boot: regulator-vddio_boot {
171 compatible = "regulator-fixed";
172 regulator-name = "VDDIO_BOOT";
173 regulator-min-microvolt = <1800000>;
174 regulator-max-microvolt = <1800000>;
175 };
176
177 vddao_3v3: regulator-vddao_3v3 {
178 compatible = "regulator-fixed";
179 regulator-name = "VDDAO_3V3";
180 regulator-min-microvolt = <3300000>;
181 regulator-max-microvolt = <3300000>;
182 };
183
184 wifi32k: wifi32k {
185 compatible = "pwm-clock";
186 #clock-cells = <0>;
187 clock-frequency = <32768>;
188 pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
189 };
190};
191
192&cec_AO {
193 status = "okay";
194 pinctrl-0 = <&ao_cec_pins>;
195 pinctrl-names = "default";
196 hdmi-phandle = <&hdmi_tx>;
197};
198
199&cpu0 {
200 cooling-min-level = <0>;
201 cooling-max-level = <6>;
202 #cooling-cells = <2>;
203};
204
205&cpu4 {
206 cooling-min-level = <0>;
207 cooling-max-level = <4>;
208 #cooling-cells = <2>;
209};
210
211&ethmac {
212 pinctrl-0 = <&eth_pins>;
213 pinctrl-names = "default";
214
215 /* Select external PHY by default */
216 phy-handle = <&external_phy>;
217
218 amlogic,tx-delay-ns = <2>;
219
220 /* External PHY reset is shared with internal PHY Led signals */
221 snps,reset-gpio = <&gpio GPIOZ_14 0>;
222 snps,reset-delays-us = <0 10000 1000000>;
223 snps,reset-active-low;
224
225 /* External PHY is in RGMII */
226 phy-mode = "rgmii";
227
228 status = "okay";
229};
230
231&external_mdio {
232 external_phy: ethernet-phy@0 {
233 /* Realtek RTL8211F (0x001cc916) */
234 reg = <0>;
235 };
236};
237
238&hdmi_tx {
239 status = "okay";
240 pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
241 pinctrl-names = "default";
242};
243
244&hdmi_tx_tmds_port {
245 hdmi_tx_tmds_out: endpoint {
246 remote-endpoint = <&hdmi_connector_in>;
247 };
248};
249
250&i2c_A {
251 status = "okay";
252 pinctrl-0 = <&i2c_a_pins>;
253 pinctrl-names = "default";
254};
255
256&i2c_B {
257 status = "okay";
258 pinctrl-0 = <&i2c_b_pins>;
259 pinctrl-names = "default";
260
261 rtc: rtc@51 {
262 /* has to be enabled manually when a battery is connected: */
263 status = "disabled";
264 compatible = "haoyu,hym8563";
265 reg = <0x51>;
266 #clock-cells = <0>;
267 clock-frequency = <32768>;
268 clock-output-names = "xin32k";
269 };
270};
271
272&ir {
273 status = "okay";
274 pinctrl-0 = <&remote_input_ao_pins>;
275 pinctrl-names = "default";
276 linux,rc-map-name = "rc-geekbox";
277};
278
279&pwm_AO_ab {
280 status = "okay";
281 pinctrl-0 = <&pwm_ao_a_3_pins>, <&pwm_ao_b_pins>;
282 pinctrl-names = "default";
283 clocks = <&clkc CLKID_FCLK_DIV4>;
284 clock-names = "clkin0";
285};
286
287&pwm_ef {
288 status = "okay";
289 pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>;
290 pinctrl-names = "default";
291 clocks = <&clkc CLKID_FCLK_DIV4>;
292 clock-names = "clkin0";
293};
294
295&sd_emmc_a {
296 status = "okay";
297 pinctrl-0 = <&sdio_pins>;
298 pinctrl-names = "default";
299 #address-cells = <1>;
300 #size-cells = <0>;
301
302 bus-width = <4>;
303 max-frequency = <100000000>;
304
305 non-removable;
306 disable-wp;
307
308 mmc-pwrseq = <&sdio_pwrseq>;
309
310 vmmc-supply = <&vddao_3v3>;
311 vqmmc-supply = <&vddio_boot>;
312
313 brcmf: wifi@1 {
314 reg = <1>;
315 compatible = "brcm,bcm4329-fmac";
316 };
317};
318
319/* SD card */
320&sd_emmc_b {
321 status = "okay";
322 pinctrl-0 = <&sdcard_pins>;
323 pinctrl-names = "default";
324
325 bus-width = <4>;
326 cap-sd-highspeed;
327 max-frequency = <100000000>;
328 disable-wp;
329
330 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
331 cd-inverted;
332
333 vmmc-supply = <&vddao_3v3>;
334 vqmmc-supply = <&vddio_boot>;
335};
336
337/* eMMC */
338&sd_emmc_c {
339 status = "okay";
340 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
341 pinctrl-names = "default";
342
343 bus-width = <8>;
344 cap-sd-highspeed;
345 cap-mmc-highspeed;
346 max-frequency = <200000000>;
347 non-removable;
348 disable-wp;
349 mmc-ddr-1_8v;
350 mmc-hs200-1_8v;
351 mmc-hs400-1_8v;
352
353 mmc-pwrseq = <&emmc_pwrseq>;
354 vmmc-supply = <&vcc_3v3>;
355 vqmmc-supply = <&vddio_boot>;
356};
357
358/*
359 * EMMC_DS pin is shared between SPI NOR CS and eMMC Data Strobe
360 * Remove emmc_ds_pins from sd_emmc_c pinctrl-0 then spifc can be enabled
361 */
362&spifc {
363 status = "disabled";
364 pinctrl-0 = <&nor_pins>;
365 pinctrl-names = "default";
366
367 w25q32: spi-flash@0 {
368 #address-cells = <1>;
369 #size-cells = <1>;
370 compatible = "winbond,w25q16", "jedec,spi-nor";
371 reg = <0>;
372 spi-max-frequency = <3000000>;
373 };
374};
375
376/* This one is connected to the Bluetooth module */
377&uart_A {
378 status = "okay";
379 pinctrl-0 = <&uart_a_pins>;
380 pinctrl-names = "default";
381};
382
383/* This is brought out on the Linux_RX (18) and Linux_TX (19) pins: */
384&uart_AO {
385 status = "okay";
386 pinctrl-0 = <&uart_ao_a_pins>;
387 pinctrl-names = "default";
388};
389
390/* This is brought out on the UART_RX_AO_B (15) and UART_TX_AO_B (16) pins: */
391&uart_AO_B {
392 status = "okay";
393 pinctrl-0 = <&uart_ao_b_pins>;
394 pinctrl-names = "default";
395};
396
397&saradc {
398 status = "okay";
399 vref-supply = <&vddio_ao18>;
400};
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 22c697732f66..e7a228f6cc7e 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts
@@ -193,7 +193,7 @@
193/* eMMC */ 193/* eMMC */
194&sd_emmc_c { 194&sd_emmc_c {
195 status = "okay"; 195 status = "okay";
196 pinctrl-0 = <&emmc_pins>; 196 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
197 pinctrl-1 = <&emmc_clk_gate_pins>; 197 pinctrl-1 = <&emmc_clk_gate_pins>;
198 pinctrl-names = "default", "clk-gate"; 198 pinctrl-names = "default", "clk-gate";
199 199
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 470f72bb863c..a5e9b955d5ed 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts
@@ -216,7 +216,7 @@
216/* eMMC */ 216/* eMMC */
217&sd_emmc_c { 217&sd_emmc_c {
218 status = "okay"; 218 status = "okay";
219 pinctrl-0 = <&emmc_pins>; 219 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
220 pinctrl-names = "default"; 220 pinctrl-names = "default";
221 221
222 bus-width = <8>; 222 bus-width = <8>;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-vega-s96.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-vega-s96.dts
new file mode 100644
index 000000000000..dc37eecb9514
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-vega-s96.dts
@@ -0,0 +1,38 @@
1/*
2 * Copyright (c) 2017 BayLibre, SAS.
3 * Author: Neil Armstrong <narmstrong@baylibre.com>
4 * Copyright (c) 2017 Oleg <balbes-150@yandex.ru>
5 *
6 * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
7 */
8
9/dts-v1/;
10
11#include "meson-gxm.dtsi"
12#include "meson-gx-p23x-q20x.dtsi"
13
14/ {
15 compatible = "tronsmart,vega-s96", "amlogic,s912", "amlogic,meson-gxm";
16 model = "Tronsmart Vega S96";
17
18};
19
20&ethmac {
21 pinctrl-0 = <&eth_pins>;
22 pinctrl-names = "default";
23
24 /* Select external PHY by default */
25 phy-handle = <&external_phy>;
26
27 amlogic,tx-delay-ns = <2>;
28
29 /* External PHY is in RGMII */
30 phy-mode = "rgmii";
31};
32
33&external_mdio {
34 external_phy: ethernet-phy@0 {
35 /* Realtek RTL8211F (0x001cc916) */
36 reg = <0>;
37 };
38};