Merge branch 'core/urgent' into x86/urgent, to pick up objtool fix
[sfrench/cifs-2.6.git] / arch / arm64 / boot / dts / allwinner / sun50i-a64-amarula-relic.dts
1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 /*
3  * Copyright (C) 2018 Amarula Solutions B.V.
4  * Author: Jagan Teki <jagan@amarulasolutions.com>
5  */
6
7 /dts-v1/;
8
9 #include "sun50i-a64.dtsi"
10
11 #include <dt-bindings/gpio/gpio.h>
12
13 / {
14         model = "Amarula A64-Relic";
15         compatible = "amarula,a64-relic", "allwinner,sun50i-a64";
16
17         aliases {
18                 serial0 = &uart0;
19         };
20
21         chosen {
22                 stdout-path = "serial0:115200n8";
23         };
24
25         wifi_pwrseq: wifi-pwrseq {
26                 compatible = "mmc-pwrseq-simple";
27                 clocks = <&rtc 1>;
28                 clock-names = "ext_clock";
29                 reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* WL-PMU-EN: PL2 */
30         };
31 };
32
33 &ehci0 {
34         status = "okay";
35 };
36
37 &mmc1 {
38         pinctrl-names = "default";
39         pinctrl-0 = <&mmc1_pins>;
40         vmmc-supply = <&reg_dcdc1>;
41         /*
42          * Schematic shows both dldo4 and eldo1 connected for vcc-io-wifi, but
43          * dldo4 connection shows DNP(Do Not Populate) and eldo1 connected with
44          * 0Ohm register to vcc-io-wifi so eldo1 is used.
45          */
46         vqmmc-supply = <&reg_eldo1>;
47         mmc-pwrseq = <&wifi_pwrseq>;
48         bus-width = <4>;
49         non-removable;
50         status = "okay";
51
52         brcmf: wifi@1 {
53                 reg = <1>;
54                 compatible = "brcm,bcm4329-fmac";
55                 interrupt-parent = <&r_pio>;
56                 interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>;  /* WL-WAKE-AP: PL3 */
57                 interrupt-names = "host-wake";
58         };
59 };
60
61 &mmc2 {
62         pinctrl-names = "default";
63         pinctrl-0 = <&mmc2_pins>;
64         vmmc-supply = <&reg_dcdc1>;
65         bus-width = <8>;
66         non-removable;
67         cap-mmc-hw-reset;
68         status = "okay";
69 };
70
71 &ohci0 {
72         status = "okay";
73 };
74
75 &r_rsb {
76         status = "okay";
77
78         axp803: pmic@3a3 {
79                 compatible = "x-powers,axp803";
80                 reg = <0x3a3>;
81                 interrupt-parent = <&r_intc>;
82                 interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
83                 x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */
84         };
85 };
86
87 #include "axp803.dtsi"
88
89 &reg_aldo1 {
90         regulator-always-on;
91         regulator-min-microvolt = <2800000>;
92         regulator-max-microvolt = <2800000>;
93         regulator-name = "avdd-csi";
94 };
95
96 &reg_aldo2 {
97         regulator-always-on;
98         regulator-min-microvolt = <1800000>;
99         regulator-max-microvolt = <3300000>;
100         regulator-name = "vcc-pl";
101 };
102
103 &reg_aldo3 {
104         regulator-always-on;
105         regulator-min-microvolt = <3000000>;
106         regulator-max-microvolt = <3000000>;
107         regulator-name = "vcc-pll-avcc";
108 };
109
110 &reg_dcdc1 {
111         regulator-always-on;
112         regulator-min-microvolt = <3300000>;
113         regulator-max-microvolt = <3300000>;
114         regulator-name = "vcc-3v3";
115 };
116
117 &reg_dcdc2 {
118         regulator-always-on;
119         regulator-min-microvolt = <1040000>;
120         regulator-max-microvolt = <1300000>;
121         regulator-name = "vdd-cpux";
122 };
123
124 /* DCDC3 is polyphased with DCDC2 */
125
126 &reg_dcdc5 {
127         regulator-always-on;
128         regulator-min-microvolt = <1500000>;
129         regulator-max-microvolt = <1500000>;
130         regulator-name = "vcc-dram";
131 };
132
133 &reg_dcdc6 {
134         regulator-always-on;
135         regulator-min-microvolt = <1100000>;
136         regulator-max-microvolt = <1100000>;
137         regulator-name = "vdd-sys";
138 };
139
140 &reg_dldo1 {
141         regulator-min-microvolt = <3300000>;
142         regulator-max-microvolt = <3300000>;
143         regulator-name = "vcc-hdmi-dsi-sensor";
144 };
145
146 &reg_dldo2 {
147         regulator-min-microvolt = <3300000>;
148         regulator-max-microvolt = <3300000>;
149         regulator-name = "vcc-mipi";
150 };
151
152 &reg_dldo3 {
153         regulator-min-microvolt = <2800000>;
154         regulator-max-microvolt = <2800000>;
155         regulator-name = "dovdd-csi";
156 };
157
158 &reg_dldo4 {
159         regulator-min-microvolt = <3300000>;
160         regulator-max-microvolt = <3300000>;
161         regulator-name = "vcc-wifi-io";
162 };
163
164 &reg_drivevbus {
165         regulator-name = "usb0-vbus";
166         status = "okay";
167 };
168
169 &reg_eldo1 {
170         regulator-always-on;
171         regulator-min-microvolt = <1800000>;
172         regulator-max-microvolt = <1800000>;
173         regulator-name = "cpvdd";
174 };
175
176 &reg_eldo3 {
177         regulator-min-microvolt = <1800000>;
178         regulator-max-microvolt = <1800000>;
179         regulator-name = "dvdd-csi";
180 };
181
182 &reg_fldo1 {
183         regulator-min-microvolt = <1200000>;
184         regulator-max-microvolt = <1200000>;
185         regulator-name = "vcc-1v2-hsic";
186 };
187
188 /*
189  * The A64 chip cannot work without this regulator off, although
190  * it seems to be only driving the AR100 core.
191  * Maybe we don't still know well about CPUs domain.
192  */
193 &reg_fldo2 {
194         regulator-always-on;
195         regulator-min-microvolt = <1100000>;
196         regulator-max-microvolt = <1100000>;
197         regulator-name = "vdd-cpus";
198 };
199
200 &reg_rtc_ldo {
201         regulator-name = "vcc-rtc";
202 };
203
204 &uart0 {
205         pinctrl-names = "default";
206         pinctrl-0 = <&uart0_pb_pins>;
207         status = "okay";
208 };
209
210 &usb_otg {
211         dr_mode = "otg";
212         status = "okay";
213 };
214
215 &usbphy {
216         usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */
217         usb0_vbus-supply = <&reg_drivevbus>;
218         status = "okay";
219 };