aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2018-10-02 04:28:14 -0400
committerArnd Bergmann <arnd@arndb.de>2018-10-02 04:28:23 -0400
commitf6cfb90582388df120083ff2c5aa90f178787076 (patch)
treebcc24ec81a3e393c5d398694dc566c1c2561d805
parent26220da2ab08cca61378359f5e1e00848062cc1b (diff)
parent679294497be31596e1c9c61507746d72b6b05f26 (diff)
Merge tag 'sunxi-dt64-for-4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into next/dt
Allwinner arm64 DT changes for 4.20 Our usual set of DT changes for the arm64 Allwinner SoCs. The most notable things are: - HDMI support on the A64 - New boards: OrangePi One Plus * tag 'sunxi-dt64-for-4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux: (28 commits) arm64: dts: allwinner: a64: a64-olinuxino: set the PHY TX delay arm64: dts: allwinner: a64: Enable HDMI output on A64 boards w/ HDMI arm64: dts: allwinner: a64: Add display pipeline arm64: dts: allwinner: h6: add system controller device tree node arm64: dts: allwinner: h6: Add OrangePi One Plus initial support arm64: dts: allwinner: a64: Rename r_i2c_pins_a label to r_i2c_pl89_pins arm64: dts: allwinner: a64: Rename uart0_pins_a label to uart0_pb_pins arm64: dts: allwinner: a64: Split out data strobe pin from mmc2 pinmux arm64: dts: allwinner: a64: NanoPi-A64: Add blue status LED arm64: dts: allwinner: a64: NanoPi-A64: Add Wifi chip arm64: dts: allwinner: a64: NanoPi-A64: Add Ethernet arm64: dts: allwinner: a64: NanoPi-A64: Fix DCDC1 voltage arm64: dts: allwinner: a64: Olinuxino: enable USB arm64: dts: allwinner: a64: Olinuxino: add Ethernet nodes arm64: dts: allwinner: a64: Olinuxino: fix DRAM voltage arm64: dts: allwinner: a64: Orange Pi Win: Adjust CSI power rails arm64: dts: allwinner: a64: Orange Pi Win: Add SPI flash node arm64: dts: allwinner: a64: Orange Pi Win: Add SDIO node arm64: dts: allwinner: a64: Orange Pi Win: Add LED node arm64: dts: allwinner: a64: Orange Pi Win: Add UARTs ... Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-rw-r--r--arch/arm64/boot/dts/allwinner/Makefile2
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64-amarula-relic.dts2
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts30
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts85
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts99
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts175
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts13
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts28
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts9
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts28
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts2
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi193
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dts150
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi23
14 files changed, 812 insertions, 27 deletions
diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
index b7f6cfbeb615..8d4f97f279e0 100644
--- a/arch/arm64/boot/dts/allwinner/Makefile
+++ b/arch/arm64/boot/dts/allwinner/Makefile
@@ -4,6 +4,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-bananapi-m64.dtb
4dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-nanopi-a64.dtb 4dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-nanopi-a64.dtb
5dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-olinuxino.dtb 5dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-olinuxino.dtb
6dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-orangepi-win.dtb 6dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-orangepi-win.dtb
7dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pine64-lts.dtb
7dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pine64-plus.dtb sun50i-a64-pine64.dtb 8dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pine64-plus.dtb sun50i-a64-pine64.dtb
8dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinebook.dtb 9dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinebook.dtb
9dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb 10dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb
@@ -17,4 +18,5 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-pc2.dtb
17dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-prime.dtb 18dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-prime.dtb
18dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus.dtb 19dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus.dtb
19dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus2.dtb 20dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus2.dtb
21dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-one-plus.dtb
20dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-pine-h64.dtb 22dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-pine-h64.dtb
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-amarula-relic.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-amarula-relic.dts
index eac4793c8502..6cb2b7f0c817 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-amarula-relic.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-amarula-relic.dts
@@ -203,7 +203,7 @@
203 203
204&uart0 { 204&uart0 {
205 pinctrl-names = "default"; 205 pinctrl-names = "default";
206 pinctrl-0 = <&uart0_pins_a>; 206 pinctrl-0 = <&uart0_pb_pins>;
207 status = "okay"; 207 status = "okay";
208}; 208};
209 209
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts
index 094cfed13df9..ef1c90401bb2 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts
@@ -60,6 +60,17 @@
60 stdout-path = "serial0:115200n8"; 60 stdout-path = "serial0:115200n8";
61 }; 61 };
62 62
63 hdmi-connector {
64 compatible = "hdmi-connector";
65 type = "a";
66
67 port {
68 hdmi_con_in: endpoint {
69 remote-endpoint = <&hdmi_out_con>;
70 };
71 };
72 };
73
63 leds { 74 leds {
64 compatible = "gpio-leds"; 75 compatible = "gpio-leds";
65 76
@@ -86,6 +97,10 @@
86 }; 97 };
87}; 98};
88 99
100&de {
101 status = "okay";
102};
103
89&ehci0 { 104&ehci0 {
90 status = "okay"; 105 status = "okay";
91}; 106};
@@ -103,6 +118,17 @@
103 status = "okay"; 118 status = "okay";
104}; 119};
105 120
121&hdmi {
122 hvcc-supply = <&reg_dldo1>;
123 status = "okay";
124};
125
126&hdmi_out {
127 hdmi_out_con: endpoint {
128 remote-endpoint = <&hdmi_con_in>;
129 };
130};
131
106&i2c1 { 132&i2c1 {
107 pinctrl-names = "default"; 133 pinctrl-names = "default";
108 pinctrl-0 = <&i2c1_pins>; 134 pinctrl-0 = <&i2c1_pins>;
@@ -151,7 +177,7 @@
151 177
152&mmc2 { 178&mmc2 {
153 pinctrl-names = "default"; 179 pinctrl-names = "default";
154 pinctrl-0 = <&mmc2_pins>; 180 pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pin>;
155 vmmc-supply = <&reg_dcdc1>; 181 vmmc-supply = <&reg_dcdc1>;
156 bus-width = <8>; 182 bus-width = <8>;
157 non-removable; 183 non-removable;
@@ -302,7 +328,7 @@
302 328
303&uart0 { 329&uart0 {
304 pinctrl-names = "default"; 330 pinctrl-names = "default";
305 pinctrl-0 = <&uart0_pins_a>; 331 pinctrl-0 = <&uart0_pb_pins>;
306 status = "okay"; 332 status = "okay";
307}; 333};
308 334
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts
index 98dbff19f5cc..31884dbc8838 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts
@@ -51,12 +51,44 @@
51 compatible = "friendlyarm,nanopi-a64", "allwinner,sun50i-a64"; 51 compatible = "friendlyarm,nanopi-a64", "allwinner,sun50i-a64";
52 52
53 aliases { 53 aliases {
54 ethernet0 = &emac;
54 serial0 = &uart0; 55 serial0 = &uart0;
55 }; 56 };
56 57
57 chosen { 58 chosen {
58 stdout-path = "serial0:115200n8"; 59 stdout-path = "serial0:115200n8";
59 }; 60 };
61
62 hdmi-connector {
63 compatible = "hdmi-connector";
64 type = "a";
65
66 port {
67 hdmi_con_in: endpoint {
68 remote-endpoint = <&hdmi_out_con>;
69 };
70 };
71 };
72
73 leds {
74 compatible = "gpio-leds";
75
76 blue {
77 label = "nanopi-a64:blue:status";
78 gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */
79 };
80 };
81
82 wifi_pwrseq: wifi_pwrseq {
83 compatible = "mmc-pwrseq-simple";
84 clocks = <&rtc 1>;
85 clock-names = "ext_clock";
86 reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
87 };
88};
89
90&de {
91 status = "okay";
60}; 92};
61 93
62&ehci0 { 94&ehci0 {
@@ -67,6 +99,26 @@
67 status = "okay"; 99 status = "okay";
68}; 100};
69 101
102&emac {
103 pinctrl-names = "default";
104 pinctrl-0 = <&rgmii_pins>;
105 phy-mode = "rgmii";
106 phy-handle = <&ext_rgmii_phy>;
107 phy-supply = <&reg_dcdc1>;
108 status = "okay";
109};
110
111&hdmi {
112 hvcc-supply = <&reg_dldo1>;
113 status = "okay";
114};
115
116&hdmi_out {
117 hdmi_out_con: endpoint {
118 remote-endpoint = <&hdmi_con_in>;
119 };
120};
121
70/* i2c1 connected with gpio headers like pine64, bananapi */ 122/* i2c1 connected with gpio headers like pine64, bananapi */
71&i2c1 { 123&i2c1 {
72 pinctrl-names = "default"; 124 pinctrl-names = "default";
@@ -78,6 +130,13 @@
78 bias-pull-up; 130 bias-pull-up;
79}; 131};
80 132
133&mdio {
134 ext_rgmii_phy: ethernet-phy@1 {
135 compatible = "ethernet-phy-ieee802.3-c22";
136 reg = <7>;
137 };
138};
139
81&mmc0 { 140&mmc0 {
82 pinctrl-names = "default"; 141 pinctrl-names = "default";
83 pinctrl-0 = <&mmc0_pins>; 142 pinctrl-0 = <&mmc0_pins>;
@@ -88,6 +147,24 @@
88 status = "okay"; 147 status = "okay";
89}; 148};
90 149
150&mmc1 {
151 pinctrl-names = "default";
152 pinctrl-0 = <&mmc1_pins>;
153 vmmc-supply = <&reg_dcdc1>;
154 vqmmc-supply = <&reg_dldo4>;
155 mmc-pwrseq = <&wifi_pwrseq>;
156 bus-width = <4>;
157 non-removable;
158 status = "okay";
159
160 rtl8189etv: wifi@1 {
161 reg = <1>;
162 interrupt-parent = <&r_pio>;
163 interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */
164 interrupt-names = "host-wake";
165 };
166};
167
91&ohci0 { 168&ohci0 {
92 status = "okay"; 169 status = "okay";
93}; 170};
@@ -125,9 +202,9 @@
125 202
126&reg_dcdc1 { 203&reg_dcdc1 {
127 regulator-always-on; 204 regulator-always-on;
128 regulator-min-microvolt = <3000000>; 205 regulator-min-microvolt = <3300000>;
129 regulator-max-microvolt = <3000000>; 206 regulator-max-microvolt = <3300000>;
130 regulator-name = "vcc-3v"; 207 regulator-name = "vcc-3v3";
131}; 208};
132 209
133&reg_dcdc2 { 210&reg_dcdc2 {
@@ -201,7 +278,7 @@
201 278
202&uart0 { 279&uart0 {
203 pinctrl-names = "default"; 280 pinctrl-names = "default";
204 pinctrl-0 = <&uart0_pins_a>; 281 pinctrl-0 = <&uart0_pb_pins>;
205 status = "okay"; 282 status = "okay";
206}; 283};
207 284
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts
index 3f531393eaee..f7a4bccaa5d4 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts
@@ -51,6 +51,7 @@
51 compatible = "olimex,a64-olinuxino", "allwinner,sun50i-a64"; 51 compatible = "olimex,a64-olinuxino", "allwinner,sun50i-a64";
52 52
53 aliases { 53 aliases {
54 ethernet0 = &emac;
54 serial0 = &uart0; 55 serial0 = &uart0;
55 }; 56 };
56 57
@@ -58,12 +59,74 @@
58 stdout-path = "serial0:115200n8"; 59 stdout-path = "serial0:115200n8";
59 }; 60 };
60 61
62 hdmi-connector {
63 compatible = "hdmi-connector";
64 type = "a";
65
66 port {
67 hdmi_con_in: endpoint {
68 remote-endpoint = <&hdmi_out_con>;
69 };
70 };
71 };
72
73 reg_usb1_vbus: usb1-vbus {
74 compatible = "regulator-fixed";
75 regulator-name = "usb1-vbus";
76 regulator-min-microvolt = <5000000>;
77 regulator-max-microvolt = <5000000>;
78 regulator-boot-on;
79 enable-active-high;
80 gpio = <&pio 6 9 GPIO_ACTIVE_HIGH>; /* PG9 */
81 status = "okay";
82 };
83
61 wifi_pwrseq: wifi_pwrseq { 84 wifi_pwrseq: wifi_pwrseq {
62 compatible = "mmc-pwrseq-simple"; 85 compatible = "mmc-pwrseq-simple";
63 reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ 86 reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
64 }; 87 };
65}; 88};
66 89
90&de {
91 status = "okay";
92};
93
94&ehci0 {
95 status = "okay";
96};
97
98&ehci1 {
99 status = "okay";
100};
101
102&emac {
103 pinctrl-names = "default";
104 pinctrl-0 = <&rgmii_pins>;
105 phy-mode = "rgmii";
106 phy-handle = <&ext_rgmii_phy>;
107 phy-supply = <&reg_dcdc1>;
108 allwinner,tx-delay-ps = <600>;
109 status = "okay";
110};
111
112&hdmi {
113 hvcc-supply = <&reg_dldo1>;
114 status = "okay";
115};
116
117&hdmi_out {
118 hdmi_out_con: endpoint {
119 remote-endpoint = <&hdmi_con_in>;
120 };
121};
122
123&mdio {
124 ext_rgmii_phy: ethernet-phy@1 {
125 compatible = "ethernet-phy-ieee802.3-c22";
126 reg = <1>;
127 };
128};
129
67&mmc0 { 130&mmc0 {
68 pinctrl-names = "default"; 131 pinctrl-names = "default";
69 pinctrl-0 = <&mmc0_pins>; 132 pinctrl-0 = <&mmc0_pins>;
@@ -92,6 +155,14 @@
92 }; 155 };
93}; 156};
94 157
158&ohci0 {
159 status = "okay";
160};
161
162&ohci1 {
163 status = "okay";
164};
165
95&r_rsb { 166&r_rsb {
96 status = "okay"; 167 status = "okay";
97 168
@@ -100,6 +171,7 @@
100 reg = <0x3a3>; 171 reg = <0x3a3>;
101 interrupt-parent = <&r_intc>; 172 interrupt-parent = <&r_intc>;
102 interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 173 interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
174 x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */
103 }; 175 };
104}; 176};
105 177
@@ -142,10 +214,14 @@
142 214
143/* DCDC3 is polyphased with DCDC2 */ 215/* DCDC3 is polyphased with DCDC2 */
144 216
217/*
218 * The board uses DDR3L DRAM chips. 1.36V is the closest to the nominal
219 * 1.35V that the PMIC can drive.
220 */
145&reg_dcdc5 { 221&reg_dcdc5 {
146 regulator-always-on; 222 regulator-always-on;
147 regulator-min-microvolt = <1500000>; 223 regulator-min-microvolt = <1360000>;
148 regulator-max-microvolt = <1500000>; 224 regulator-max-microvolt = <1360000>;
149 regulator-name = "vcc-ddr3"; 225 regulator-name = "vcc-ddr3";
150}; 226};
151 227
@@ -180,6 +256,11 @@
180 regulator-name = "vcc-wifi-io"; 256 regulator-name = "vcc-wifi-io";
181}; 257};
182 258
259&reg_drivevbus {
260 regulator-name = "usb0-vbus";
261 status = "okay";
262};
263
183&reg_eldo1 { 264&reg_eldo1 {
184 regulator-min-microvolt = <1800000>; 265 regulator-min-microvolt = <1800000>;
185 regulator-max-microvolt = <1800000>; 266 regulator-max-microvolt = <1800000>;
@@ -220,6 +301,18 @@
220 301
221&uart0 { 302&uart0 {
222 pinctrl-names = "default"; 303 pinctrl-names = "default";
223 pinctrl-0 = <&uart0_pins_a>; 304 pinctrl-0 = <&uart0_pb_pins>;
305 status = "okay";
306};
307
308&usb_otg {
309 dr_mode = "otg";
310 status = "okay";
311};
312
313&usbphy {
224 status = "okay"; 314 status = "okay";
315 usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */
316 usb0_vbus-supply = <&reg_drivevbus>;
317 usb1_vbus-supply = <&reg_usb1_vbus>;
225}; 318};
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts
index 1221764f5719..b0c64f75792c 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts
@@ -1,5 +1,6 @@
1/* 1/*
2 * Copyright (C) 2017 Jagan Teki <jteki@openedev.com> 2 * Copyright (C) 2017 Jagan Teki <jteki@openedev.com>
3 * Copyright (C) 2017-2018 Samuel Holland <samuel@sholland.org>
3 * 4 *
4 * This file is dual-licensed: you can use it either under the terms 5 * This file is dual-licensed: you can use it either under the terms
5 * of the GPL or the X11 license, at your option. Note that this dual 6 * of the GPL or the X11 license, at your option. Note that this dual
@@ -51,23 +52,127 @@
51 compatible = "xunlong,orangepi-win", "allwinner,sun50i-a64"; 52 compatible = "xunlong,orangepi-win", "allwinner,sun50i-a64";
52 53
53 aliases { 54 aliases {
55 ethernet0 = &emac;
54 serial0 = &uart0; 56 serial0 = &uart0;
57 serial1 = &uart1;
58 serial2 = &uart2;
59 serial3 = &uart3;
60 serial4 = &uart4;
55 }; 61 };
56 62
57 chosen { 63 chosen {
58 stdout-path = "serial0:115200n8"; 64 stdout-path = "serial0:115200n8";
59 }; 65 };
66
67 hdmi-connector {
68 compatible = "hdmi-connector";
69 type = "a";
70
71 port {
72 hdmi_con_in: endpoint {
73 remote-endpoint = <&hdmi_out_con>;
74 };
75 };
76 };
77
78 leds {
79 compatible = "gpio-leds";
80
81 status {
82 label = "orangepi:green:status";
83 gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */
84 };
85 };
86
87 reg_gmac_3v3: gmac-3v3 {
88 compatible = "regulator-fixed";
89 regulator-name = "gmac-3v3";
90 regulator-min-microvolt = <3300000>;
91 regulator-max-microvolt = <3300000>;
92 regulator-boot-on;
93 enable-active-high;
94 gpio = <&pio 3 14 GPIO_ACTIVE_HIGH>; /* PD14 */
95 status = "okay";
96 };
97
98 reg_usb1_vbus: usb1-vbus {
99 compatible = "regulator-fixed";
100 regulator-name = "usb1-vbus";
101 regulator-min-microvolt = <5000000>;
102 regulator-max-microvolt = <5000000>;
103 regulator-boot-on;
104 enable-active-high;
105 gpio = <&pio 3 7 GPIO_ACTIVE_HIGH>; /* PD7 */
106 status = "okay";
107 };
108
109 wifi_pwrseq: wifi_pwrseq {
110 compatible = "mmc-pwrseq-simple";
111 reset-gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */
112 };
113};
114
115&de {
116 status = "okay";
117};
118
119&ehci0 {
120 status = "okay";
60}; 121};
61 122
62&ehci1 { 123&ehci1 {
63 status = "okay"; 124 status = "okay";
64}; 125};
65 126
127&emac {
128 pinctrl-names = "default";
129 pinctrl-0 = <&rgmii_pins>;
130 phy-mode = "rgmii";
131 phy-handle = <&ext_rgmii_phy>;
132 phy-supply = <&reg_gmac_3v3>;
133 status = "okay";
134};
135
136&hdmi {
137 hvcc-supply = <&reg_dldo1>;
138 status = "okay";
139};
140
141&hdmi_out {
142 hdmi_out_con: endpoint {
143 remote-endpoint = <&hdmi_con_in>;
144 };
145};
146
147&mdio {
148 ext_rgmii_phy: ethernet-phy@1 {
149 compatible = "ethernet-phy-ieee802.3-c22";
150 reg = <1>;
151 };
152};
153
66&mmc0 { 154&mmc0 {
67 pinctrl-names = "default"; 155 pinctrl-names = "default";
68 pinctrl-0 = <&mmc0_pins>; 156 pinctrl-0 = <&mmc0_pins>;
69 vmmc-supply = <&reg_dcdc1>; 157 vmmc-supply = <&reg_dcdc1>;
70 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; 158 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
159 disable-wp;
160 bus-width = <4>;
161 status = "okay";
162};
163
164&mmc1 {
165 pinctrl-names = "default";
166 pinctrl-0 = <&mmc1_pins>;
167 vmmc-supply = <&reg_dldo2>;
168 vqmmc-supply = <&reg_dldo4>;
169 mmc-pwrseq = <&wifi_pwrseq>;
170 bus-width = <4>;
171 non-removable;
172 status = "okay";
173};
174
175&ohci0 {
71 status = "okay"; 176 status = "okay";
72}; 177};
73 178
@@ -89,9 +194,8 @@
89#include "axp803.dtsi" 194#include "axp803.dtsi"
90 195
91&reg_aldo1 { 196&reg_aldo1 {
92 regulator-always-on; 197 regulator-min-microvolt = <2800000>;
93 regulator-min-microvolt = <1800000>; 198 regulator-max-microvolt = <2800000>;
94 regulator-max-microvolt = <3300000>;
95 regulator-name = "afvcc-csi"; 199 regulator-name = "afvcc-csi";
96}; 200};
97 201
@@ -163,12 +267,23 @@
163 regulator-name = "vcc-wifi-io"; 267 regulator-name = "vcc-wifi-io";
164}; 268};
165 269
270&reg_drivevbus {
271 regulator-name = "usb0-vbus";
272 status = "okay";
273};
274
166&reg_eldo1 { 275&reg_eldo1 {
167 regulator-min-microvolt = <1800000>; 276 regulator-min-microvolt = <1800000>;
168 regulator-max-microvolt = <1800000>; 277 regulator-max-microvolt = <1800000>;
169 regulator-name = "cpvdd"; 278 regulator-name = "cpvdd";
170}; 279};
171 280
281&reg_eldo3 {
282 regulator-min-microvolt = <1500000>;
283 regulator-max-microvolt = <1800000>;
284 regulator-name = "dvdd-csi";
285};
286
172&reg_fldo1 { 287&reg_fldo1 {
173 regulator-min-microvolt = <1200000>; 288 regulator-min-microvolt = <1200000>;
174 regulator-max-microvolt = <1200000>; 289 regulator-max-microvolt = <1200000>;
@@ -195,13 +310,61 @@
195 vcc-hdmi-supply = <&reg_dldo1>; 310 vcc-hdmi-supply = <&reg_dldo1>;
196}; 311};
197 312
313&spi0 {
314 status = "okay";
315
316 spi-flash@0 {
317 compatible = "mxicy,mx25l1606e", "jedec,spi-nor";
318 reg = <0>;
319 spi-max-frequency = <80000000>;
320 m25p,fast-read;
321 status = "okay";
322 };
323};
324
325/* On debug connector */
198&uart0 { 326&uart0 {
199 pinctrl-names = "default"; 327 pinctrl-names = "default";
200 pinctrl-0 = <&uart0_pins_a>; 328 pinctrl-0 = <&uart0_pb_pins>;
201 status = "okay"; 329 status = "okay";
202}; 330};
203 331
204&usbphy { 332/* Bluetooth */
333&uart1 {
334 pinctrl-names = "default";
335 pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
205 status = "okay"; 336 status = "okay";
206}; 337};
207 338
339/* On Pi-2 connector, RTS/CTS optional */
340&uart2 {
341 pinctrl-names = "default";
342 pinctrl-0 = <&uart2_pins>;
343 status = "disabled";
344};
345
346/* On Pi-2 connector, RTS/CTS optional */
347&uart3 {
348 pinctrl-names = "default";
349 pinctrl-0 = <&uart3_pins>;
350 status = "disabled";
351};
352
353/* On Pi-2 connector (labeled for SPI1), RTS/CTS optional */
354&uart4 {
355 pinctrl-names = "default";
356 pinctrl-0 = <&uart4_pins>;
357 status = "disabled";
358};
359
360&usb_otg {
361 dr_mode = "otg";
362 status = "okay";
363};
364
365&usbphy {
366 usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */
367 usb0_vbus-supply = <&reg_drivevbus>;
368 usb1_vbus-supply = <&reg_usb1_vbus>;
369 status = "okay";
370};
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts
new file mode 100644
index 000000000000..72d6961dc312
--- /dev/null
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts
@@ -0,0 +1,13 @@
1/*
2 * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
3 *
4 * Copyright (c) 2018 ARM Ltd.
5 */
6
7#include "sun50i-a64-sopine-baseboard.dts"
8
9/ {
10 model = "Pine64 LTS";
11 compatible = "pine64,pine64-lts", "allwinner,sun50i-r18",
12 "allwinner,sun50i-a64";
13};
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
index 1b9b92e541d2..c077b6c1f458 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
@@ -62,6 +62,21 @@
62 chosen { 62 chosen {
63 stdout-path = "serial0:115200n8"; 63 stdout-path = "serial0:115200n8";
64 }; 64 };
65
66 hdmi-connector {
67 compatible = "hdmi-connector";
68 type = "a";
69
70 port {
71 hdmi_con_in: endpoint {
72 remote-endpoint = <&hdmi_out_con>;
73 };
74 };
75 };
76};
77
78&de {
79 status = "okay";
65}; 80};
66 81
67&ehci0 { 82&ehci0 {
@@ -82,6 +97,17 @@
82 97
83}; 98};
84 99
100&hdmi {
101 hvcc-supply = <&reg_dldo1>;
102 status = "okay";
103};
104
105&hdmi_out {
106 hdmi_out_con: endpoint {
107 remote-endpoint = <&hdmi_con_in>;
108 };
109};
110
85&i2c1 { 111&i2c1 {
86 pinctrl-names = "default"; 112 pinctrl-names = "default";
87 pinctrl-0 = <&i2c1_pins>; 113 pinctrl-0 = <&i2c1_pins>;
@@ -241,7 +267,7 @@
241/* On Exp and Euler connectors */ 267/* On Exp and Euler connectors */
242&uart0 { 268&uart0 {
243 pinctrl-names = "default"; 269 pinctrl-names = "default";
244 pinctrl-0 = <&uart0_pins_a>; 270 pinctrl-0 = <&uart0_pb_pins>;
245 status = "okay"; 271 status = "okay";
246}; 272};
247 273
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts
index 897e60cbe38d..77fac84797e9 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts
@@ -80,8 +80,7 @@
80 pinctrl-names = "default"; 80 pinctrl-names = "default";
81 pinctrl-0 = <&mmc0_pins>; 81 pinctrl-0 = <&mmc0_pins>;
82 vmmc-supply = <&reg_dcdc1>; 82 vmmc-supply = <&reg_dcdc1>;
83 cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; 83 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
84 cd-inverted;
85 disable-wp; 84 disable-wp;
86 bus-width = <4>; 85 bus-width = <4>;
87 status = "okay"; 86 status = "okay";
@@ -104,7 +103,7 @@
104 103
105&mmc2 { 104&mmc2 {
106 pinctrl-names = "default"; 105 pinctrl-names = "default";
107 pinctrl-0 = <&mmc2_pins>; 106 pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pin>;
108 vmmc-supply = <&reg_dcdc1>; 107 vmmc-supply = <&reg_dcdc1>;
109 vqmmc-supply = <&reg_eldo1>; 108 vqmmc-supply = <&reg_eldo1>;
110 bus-width = <8>; 109 bus-width = <8>;
@@ -143,7 +142,7 @@
143&r_i2c { 142&r_i2c {
144 clock-frequency = <100000>; 143 clock-frequency = <100000>;
145 pinctrl-names = "default"; 144 pinctrl-names = "default";
146 pinctrl-0 = <&r_i2c_pins_a>; 145 pinctrl-0 = <&r_i2c_pl89_pins>;
147 status = "okay"; 146 status = "okay";
148}; 147};
149 148
@@ -270,7 +269,7 @@
270 269
271&uart0 { 270&uart0 {
272 pinctrl-names = "default"; 271 pinctrl-names = "default";
273 pinctrl-0 = <&uart0_pins_a>; 272 pinctrl-0 = <&uart0_pb_pins>;
274 status = "okay"; 273 status = "okay";
275}; 274};
276 275
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
index c21f2331add6..53fcc9098df3 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
@@ -61,6 +61,17 @@
61 stdout-path = "serial0:115200n8"; 61 stdout-path = "serial0:115200n8";
62 }; 62 };
63 63
64 hdmi-connector {
65 compatible = "hdmi-connector";
66 type = "a";
67
68 port {
69 hdmi_con_in: endpoint {
70 remote-endpoint = <&hdmi_out_con>;
71 };
72 };
73 };
74
64 reg_vcc1v8: vcc1v8 { 75 reg_vcc1v8: vcc1v8 {
65 compatible = "regulator-fixed"; 76 compatible = "regulator-fixed";
66 regulator-name = "vcc1v8"; 77 regulator-name = "vcc1v8";
@@ -69,6 +80,10 @@
69 }; 80 };
70}; 81};
71 82
83&de {
84 status = "okay";
85};
86
72&ehci0 { 87&ehci0 {
73 status = "okay"; 88 status = "okay";
74}; 89};
@@ -86,6 +101,17 @@
86 status = "okay"; 101 status = "okay";
87}; 102};
88 103
104&hdmi {
105 hvcc-supply = <&reg_dldo1>;
106 status = "okay";
107};
108
109&hdmi_out {
110 hdmi_out_con: endpoint {
111 remote-endpoint = <&hdmi_con_in>;
112 };
113};
114
89&mdio { 115&mdio {
90 ext_rgmii_phy: ethernet-phy@1 { 116 ext_rgmii_phy: ethernet-phy@1 {
91 compatible = "ethernet-phy-ieee802.3-c22"; 117 compatible = "ethernet-phy-ieee802.3-c22";
@@ -140,7 +166,7 @@
140 166
141&uart0 { 167&uart0 {
142 pinctrl-names = "default"; 168 pinctrl-names = "default";
143 pinctrl-0 = <&uart0_pins_a>; 169 pinctrl-0 = <&uart0_pb_pins>;
144 status = "okay"; 170 status = "okay";
145}; 171};
146 172
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts
index 81f8e0098699..c455b24dd079 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts
@@ -260,7 +260,7 @@
260 260
261&uart0 { 261&uart0 {
262 pinctrl-names = "default"; 262 pinctrl-names = "default";
263 pinctrl-0 = <&uart0_pins_a>; 263 pinctrl-0 = <&uart0_pb_pins>;
264 status = "okay"; 264 status = "okay";
265}; 265};
266 266
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
index d3daf90a8715..f3a66f888205 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
@@ -88,6 +88,7 @@
88 device_type = "cpu"; 88 device_type = "cpu";
89 reg = <0>; 89 reg = <0>;
90 enable-method = "psci"; 90 enable-method = "psci";
91 next-level-cache = <&L2>;
91 }; 92 };
92 93
93 cpu1: cpu@1 { 94 cpu1: cpu@1 {
@@ -95,6 +96,7 @@
95 device_type = "cpu"; 96 device_type = "cpu";
96 reg = <1>; 97 reg = <1>;
97 enable-method = "psci"; 98 enable-method = "psci";
99 next-level-cache = <&L2>;
98 }; 100 };
99 101
100 cpu2: cpu@2 { 102 cpu2: cpu@2 {
@@ -102,6 +104,7 @@
102 device_type = "cpu"; 104 device_type = "cpu";
103 reg = <2>; 105 reg = <2>;
104 enable-method = "psci"; 106 enable-method = "psci";
107 next-level-cache = <&L2>;
105 }; 108 };
106 109
107 cpu3: cpu@3 { 110 cpu3: cpu@3 {
@@ -109,7 +112,20 @@
109 device_type = "cpu"; 112 device_type = "cpu";
110 reg = <3>; 113 reg = <3>;
111 enable-method = "psci"; 114 enable-method = "psci";
115 next-level-cache = <&L2>;
112 }; 116 };
117
118 L2: l2-cache {
119 compatible = "cache";
120 cache-level = <2>;
121 };
122 };
123
124 de: display-engine {
125 compatible = "allwinner,sun50i-a64-display-engine";
126 allwinner,pipelines = <&mixer0>,
127 <&mixer1>;
128 status = "disabled";
113 }; 129 };
114 130
115 osc24M: osc24M_clk { 131 osc24M: osc24M_clk {
@@ -194,6 +210,52 @@
194 #clock-cells = <1>; 210 #clock-cells = <1>;
195 #reset-cells = <1>; 211 #reset-cells = <1>;
196 }; 212 };
213
214 mixer0: mixer@100000 {
215 compatible = "allwinner,sun50i-a64-de2-mixer-0";
216 reg = <0x100000 0x100000>;
217 clocks = <&display_clocks CLK_BUS_MIXER0>,
218 <&display_clocks CLK_MIXER0>;
219 clock-names = "bus",
220 "mod";
221 resets = <&display_clocks RST_MIXER0>;
222
223 ports {
224 #address-cells = <1>;
225 #size-cells = <0>;
226
227 mixer0_out: port@1 {
228 reg = <1>;
229
230 mixer0_out_tcon0: endpoint {
231 remote-endpoint = <&tcon0_in_mixer0>;
232 };
233 };
234 };
235 };
236
237 mixer1: mixer@200000 {
238 compatible = "allwinner,sun50i-a64-de2-mixer-1";
239 reg = <0x200000 0x100000>;
240 clocks = <&display_clocks CLK_BUS_MIXER1>,
241 <&display_clocks CLK_MIXER1>;
242 clock-names = "bus",
243 "mod";
244 resets = <&display_clocks RST_MIXER1>;
245
246 ports {
247 #address-cells = <1>;
248 #size-cells = <0>;
249
250 mixer1_out: port@1 {
251 reg = <1>;
252
253 mixer1_out_tcon1: endpoint {
254 remote-endpoint = <&tcon1_in_mixer1>;
255 };
256 };
257 };
258 };
197 }; 259 };
198 260
199 syscon: syscon@1c00000 { 261 syscon: syscon@1c00000 {
@@ -228,6 +290,75 @@
228 #dma-cells = <1>; 290 #dma-cells = <1>;
229 }; 291 };
230 292
293 tcon0: lcd-controller@1c0c000 {
294 compatible = "allwinner,sun50i-a64-tcon-lcd",
295 "allwinner,sun8i-a83t-tcon-lcd";
296 reg = <0x01c0c000 0x1000>;
297 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
298 clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>;
299 clock-names = "ahb", "tcon-ch0";
300 clock-output-names = "tcon-pixel-clock";
301 resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>;
302 reset-names = "lcd", "lvds";
303
304 ports {
305 #address-cells = <1>;
306 #size-cells = <0>;
307
308 tcon0_in: port@0 {
309 #address-cells = <1>;
310 #size-cells = <0>;
311 reg = <0>;
312
313 tcon0_in_mixer0: endpoint@0 {
314 reg = <0>;
315 remote-endpoint = <&mixer0_out_tcon0>;
316 };
317 };
318
319 tcon0_out: port@1 {
320 #address-cells = <1>;
321 #size-cells = <0>;
322 reg = <1>;
323 };
324 };
325 };
326
327 tcon1: lcd-controller@1c0d000 {
328 compatible = "allwinner,sun50i-a64-tcon-tv",
329 "allwinner,sun8i-a83t-tcon-tv";
330 reg = <0x01c0d000 0x1000>;
331 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
332 clocks = <&ccu CLK_BUS_TCON1>, <&ccu CLK_TCON1>;
333 clock-names = "ahb", "tcon-ch1";
334 resets = <&ccu RST_BUS_TCON1>;
335 reset-names = "lcd";
336
337 ports {
338 #address-cells = <1>;
339 #size-cells = <0>;
340
341 tcon1_in: port@0 {
342 reg = <0>;
343
344 tcon1_in_mixer1: endpoint {
345 remote-endpoint = <&mixer1_out_tcon1>;
346 };
347 };
348
349 tcon1_out: port@1 {
350 #address-cells = <1>;
351 #size-cells = <0>;
352 reg = <1>;
353
354 tcon1_out_hdmi: endpoint@1 {
355 reg = <1>;
356 remote-endpoint = <&hdmi_in_tcon1>;
357 };
358 };
359 };
360 };
361
231 mmc0: mmc@1c0f000 { 362 mmc0: mmc@1c0f000 {
232 compatible = "allwinner,sun50i-a64-mmc"; 363 compatible = "allwinner,sun50i-a64-mmc";
233 reg = <0x01c0f000 0x1000>; 364 reg = <0x01c0f000 0x1000>;
@@ -270,6 +401,11 @@
270 #size-cells = <0>; 401 #size-cells = <0>;
271 }; 402 };
272 403
404 sid: eeprom@1c14000 {
405 compatible = "allwinner,sun50i-a64-sid";
406 reg = <0x1c14000 0x400>;
407 };
408
273 usb_otg: usb@1c19000 { 409 usb_otg: usb@1c19000 {
274 compatible = "allwinner,sun8i-a33-musb"; 410 compatible = "allwinner,sun8i-a33-musb";
275 reg = <0x01c19000 0x0400>; 411 reg = <0x01c19000 0x0400>;
@@ -399,7 +535,7 @@
399 }; 535 };
400 536
401 mmc2_pins: mmc2-pins { 537 mmc2_pins: mmc2-pins {
402 pins = "PC1", "PC5", "PC6", "PC8", "PC9", 538 pins = "PC5", "PC6", "PC8", "PC9",
403 "PC10","PC11", "PC12", "PC13", 539 "PC10","PC11", "PC12", "PC13",
404 "PC14", "PC15", "PC16"; 540 "PC14", "PC15", "PC16";
405 function = "mmc2"; 541 function = "mmc2";
@@ -407,6 +543,13 @@
407 bias-pull-up; 543 bias-pull-up;
408 }; 544 };
409 545
546 mmc2_ds_pin: mmc2-ds-pin {
547 pins = "PC1";
548 function = "mmc2";
549 drive-strength = <30>;
550 bias-pull-up;
551 };
552
410 pwm_pin: pwm_pin { 553 pwm_pin: pwm_pin {
411 pins = "PD22"; 554 pins = "PD22";
412 function = "pwm"; 555 function = "pwm";
@@ -442,7 +585,7 @@
442 function = "spi1"; 585 function = "spi1";
443 }; 586 };
444 587
445 uart0_pins_a: uart0 { 588 uart0_pb_pins: uart0-pb-pins {
446 pins = "PB8", "PB9"; 589 pins = "PB8", "PB9";
447 function = "uart0"; 590 function = "uart0";
448 }; 591 };
@@ -686,6 +829,50 @@
686 status = "disabled"; 829 status = "disabled";
687 }; 830 };
688 831
832 hdmi: hdmi@1ee0000 {
833 compatible = "allwinner,sun50i-a64-dw-hdmi",
834 "allwinner,sun8i-a83t-dw-hdmi";
835 reg = <0x01ee0000 0x10000>;
836 reg-io-width = <1>;
837 interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
838 clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_DDC>,
839 <&ccu CLK_HDMI>;
840 clock-names = "iahb", "isfr", "tmds";
841 resets = <&ccu RST_BUS_HDMI1>;
842 reset-names = "ctrl";
843 phys = <&hdmi_phy>;
844 phy-names = "hdmi-phy";
845 status = "disabled";
846
847 ports {
848 #address-cells = <1>;
849 #size-cells = <0>;
850
851 hdmi_in: port@0 {
852 reg = <0>;
853
854 hdmi_in_tcon1: endpoint {
855 remote-endpoint = <&tcon1_out_hdmi>;
856 };
857 };
858
859 hdmi_out: port@1 {
860 reg = <1>;
861 };
862 };
863 };
864
865 hdmi_phy: hdmi-phy@1ef0000 {
866 compatible = "allwinner,sun50i-a64-hdmi-phy";
867 reg = <0x01ef0000 0x10000>;
868 clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_DDC>,
869 <&ccu 7>;
870 clock-names = "bus", "mod", "pll-0";
871 resets = <&ccu RST_BUS_HDMI0>;
872 reset-names = "phy";
873 #phy-cells = <0>;
874 };
875
689 rtc: rtc@1f00000 { 876 rtc: rtc@1f00000 {
690 compatible = "allwinner,sun6i-a31-rtc"; 877 compatible = "allwinner,sun6i-a31-rtc";
691 reg = <0x01f00000 0x54>; 878 reg = <0x01f00000 0x54>;
@@ -749,7 +936,7 @@
749 interrupt-controller; 936 interrupt-controller;
750 #interrupt-cells = <3>; 937 #interrupt-cells = <3>;
751 938
752 r_i2c_pins_a: i2c-a { 939 r_i2c_pl89_pins: r-i2c-pl89-pins {
753 pins = "PL8", "PL9"; 940 pins = "PL8", "PL9";
754 function = "s_i2c"; 941 function = "s_i2c";
755 }; 942 };
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dts
new file mode 100644
index 000000000000..0612c19cd994
--- /dev/null
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dts
@@ -0,0 +1,150 @@
1// SPDX-License-Identifier: (GPL-2.0+ or MIT)
2/*
3 * Copyright (C) 2018 Amarula Solutions
4 * Author: Jagan Teki <jagan@amarulasolutions.com>
5 */
6
7/dts-v1/;
8
9#include "sun50i-h6.dtsi"
10
11#include <dt-bindings/gpio/gpio.h>
12
13/ {
14 model = "OrangePi One Plus";
15 compatible = "xunlong,orangepi-one-plus", "allwinner,sun50i-h6";
16
17 aliases {
18 serial0 = &uart0;
19 };
20
21 chosen {
22 stdout-path = "serial0:115200n8";
23 };
24};
25
26&mmc0 {
27 pinctrl-names = "default";
28 pinctrl-0 = <&mmc0_pins>;
29 vmmc-supply = <&reg_cldo1>;
30 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
31 bus-width = <4>;
32 status = "okay";
33};
34
35&r_i2c {
36 status = "okay";
37
38 axp805: pmic@36 {
39 compatible = "x-powers,axp805", "x-powers,axp806";
40 reg = <0x36>;
41 interrupt-parent = <&r_intc>;
42 interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
43 interrupt-controller;
44 #interrupt-cells = <1>;
45 x-powers,self-working-mode;
46
47 regulators {
48 reg_aldo1: aldo1 {
49 regulator-always-on;
50 regulator-min-microvolt = <3300000>;
51 regulator-max-microvolt = <3300000>;
52 regulator-name = "vcc-pl";
53 };
54
55 reg_aldo2: aldo2 {
56 regulator-min-microvolt = <3300000>;
57 regulator-max-microvolt = <3300000>;
58 regulator-name = "vcc-ac200";
59 };
60
61 reg_aldo3: aldo3 {
62 regulator-always-on;
63 regulator-min-microvolt = <3300000>;
64 regulator-max-microvolt = <3300000>;
65 regulator-name = "vcc25-dram";
66 };
67
68 reg_bldo1: bldo1 {
69 regulator-always-on;
70 regulator-min-microvolt = <1800000>;
71 regulator-max-microvolt = <1800000>;
72 regulator-name = "vcc-bias-pll";
73 };
74
75 reg_bldo2: bldo2 {
76 regulator-always-on;
77 regulator-min-microvolt = <1800000>;
78 regulator-max-microvolt = <1800000>;
79 regulator-name = "vcc-efuse-pcie-hdmi-io";
80 };
81
82 reg_bldo3: bldo3 {
83 regulator-always-on;
84 regulator-min-microvolt = <1800000>;
85 regulator-max-microvolt = <1800000>;
86 regulator-name = "vcc-dcxoio";
87 };
88
89 bldo4 {
90 /* unused */
91 };
92
93 reg_cldo1: cldo1 {
94 regulator-always-on;
95 regulator-min-microvolt = <3300000>;
96 regulator-max-microvolt = <3300000>;
97 regulator-name = "vcc-3v3";
98 };
99
100 reg_cldo2: cldo2 {
101 regulator-min-microvolt = <3300000>;
102 regulator-max-microvolt = <3300000>;
103 regulator-name = "vcc-wifi-1";
104 };
105
106 reg_cldo3: cldo3 {
107 regulator-min-microvolt = <3300000>;
108 regulator-max-microvolt = <3300000>;
109 regulator-name = "vcc-wifi-2";
110 };
111
112 reg_dcdca: dcdca {
113 regulator-always-on;
114 regulator-min-microvolt = <810000>;
115 regulator-max-microvolt = <1080000>;
116 regulator-name = "vdd-cpu";
117 };
118
119 reg_dcdcc: dcdcc {
120 regulator-min-microvolt = <810000>;
121 regulator-max-microvolt = <1080000>;
122 regulator-name = "vdd-gpu";
123 };
124
125 reg_dcdcd: dcdcd {
126 regulator-always-on;
127 regulator-min-microvolt = <960000>;
128 regulator-max-microvolt = <960000>;
129 regulator-name = "vdd-sys";
130 };
131
132 reg_dcdce: dcdce {
133 regulator-always-on;
134 regulator-min-microvolt = <1200000>;
135 regulator-max-microvolt = <1200000>;
136 regulator-name = "vcc-dram";
137 };
138
139 sw {
140 /* unused */
141 };
142 };
143 };
144};
145
146&uart0 {
147 pinctrl-names = "default";
148 pinctrl-0 = <&uart0_ph_pins>;
149 status = "okay";
150};
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
index cfa5fffcf62b..040828d2e2c0 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
@@ -92,6 +92,29 @@
92 #size-cells = <1>; 92 #size-cells = <1>;
93 ranges; 93 ranges;
94 94
95 syscon: syscon@3000000 {
96 compatible = "allwinner,sun50i-h6-system-control",
97 "allwinner,sun50i-a64-system-control";
98 reg = <0x03000000 0x1000>;
99 #address-cells = <1>;
100 #size-cells = <1>;
101 ranges;
102
103 sram_c: sram@28000 {
104 compatible = "mmio-sram";
105 reg = <0x00028000 0x1e000>;
106 #address-cells = <1>;
107 #size-cells = <1>;
108 ranges = <0 0x00028000 0x1e000>;
109
110 de2_sram: sram-section@0 {
111 compatible = "allwinner,sun50i-h6-sram-c",
112 "allwinner,sun50i-a64-sram-c";
113 reg = <0x0000 0x1e000>;
114 };
115 };
116 };
117
95 ccu: clock@3001000 { 118 ccu: clock@3001000 {
96 compatible = "allwinner,sun50i-h6-ccu"; 119 compatible = "allwinner,sun50i-h6-ccu";
97 reg = <0x03001000 0x1000>; 120 reg = <0x03001000 0x1000>;