Merge tag 'u-boot-atmel-fixes-2021.01-b' of https://gitlab.denx.de/u-boot/custodians...
[platform/kernel/u-boot.git] / arch / arm / dts / sun50i-a64-pinephone.dtsi
1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 // Copyright (C) 2019 Icenowy Zheng <icenowy@aosc.xyz>
3 // Copyright (C) 2020 Martijn Braam <martijn@brixit.nl>
4 // Copyright (C) 2020 Ondrej Jirman <megous@megous.com>
5
6 #include "sun50i-a64.dtsi"
7 #include "sun50i-a64-cpu-opp.dtsi"
8
9 #include <dt-bindings/gpio/gpio.h>
10 #include <dt-bindings/input/input.h>
11 #include <dt-bindings/leds/common.h>
12 #include <dt-bindings/pwm/pwm.h>
13
14 / {
15         aliases {
16                 serial0 = &uart0;
17         };
18
19         backlight: backlight {
20                 compatible = "pwm-backlight";
21                 pwms = <&r_pwm 0 50000 PWM_POLARITY_INVERTED>;
22                 enable-gpios = <&pio 7 10 GPIO_ACTIVE_HIGH>; /* PH10 */
23                 /* Backlight configuration differs per PinePhone revision. */
24         };
25
26         chosen {
27                 stdout-path = "serial0:115200n8";
28         };
29
30         leds {
31                 compatible = "gpio-leds";
32
33                 blue {
34                         function = LED_FUNCTION_INDICATOR;
35                         color = <LED_COLOR_ID_BLUE>;
36                         gpios = <&pio 3 20 GPIO_ACTIVE_HIGH>; /* PD20 */
37                 };
38
39                 green {
40                         function = LED_FUNCTION_INDICATOR;
41                         color = <LED_COLOR_ID_GREEN>;
42                         gpios = <&pio 3 18 GPIO_ACTIVE_HIGH>; /* PD18 */
43                 };
44
45                 red {
46                         function = LED_FUNCTION_INDICATOR;
47                         color = <LED_COLOR_ID_RED>;
48                         gpios = <&pio 3 19 GPIO_ACTIVE_HIGH>; /* PD19 */
49                 };
50         };
51
52         speaker_amp: audio-amplifier {
53                 compatible = "simple-audio-amplifier";
54                 enable-gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */
55                 sound-name-prefix = "Speaker Amp";
56         };
57
58         vibrator {
59                 compatible = "gpio-vibrator";
60                 enable-gpios = <&pio 3 2 GPIO_ACTIVE_HIGH>; /* PD2 */
61                 vcc-supply = <&reg_dcdc1>;
62         };
63 };
64
65 &codec {
66         status = "okay";
67 };
68
69 &codec_analog {
70         cpvdd-supply = <&reg_eldo1>;
71         status = "okay";
72 };
73
74 &cpu0 {
75         cpu-supply = <&reg_dcdc2>;
76 };
77
78 &cpu1 {
79         cpu-supply = <&reg_dcdc2>;
80 };
81
82 &cpu2 {
83         cpu-supply = <&reg_dcdc2>;
84 };
85
86 &cpu3 {
87         cpu-supply = <&reg_dcdc2>;
88 };
89
90 &dai {
91         status = "okay";
92 };
93
94 &de {
95         status = "okay";
96 };
97
98 &dphy {
99         status = "okay";
100 };
101
102 &dsi {
103         vcc-dsi-supply = <&reg_dldo1>;
104         status = "okay";
105
106         panel@0 {
107                 compatible = "xingbangda,xbd599";
108                 reg = <0>;
109                 reset-gpios = <&pio 3 23 GPIO_ACTIVE_LOW>; /* PD23 */
110                 iovcc-supply = <&reg_dldo2>;
111                 vcc-supply = <&reg_ldo_io0>;
112                 backlight = <&backlight>;
113         };
114 };
115
116 &ehci0 {
117         status = "okay";
118 };
119
120 &ehci1 {
121         status = "okay";
122 };
123
124 &i2c0 {
125         status = "okay";
126
127         touchscreen@5d {
128                 compatible = "goodix,gt917s";
129                 reg = <0x5d>;
130                 interrupt-parent = <&pio>;
131                 interrupts = <7 4 IRQ_TYPE_LEVEL_HIGH>; /* PH4 */
132                 irq-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
133                 reset-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */
134                 AVDD28-supply = <&reg_ldo_io0>;
135                 VDDIO-supply = <&reg_ldo_io0>;
136                 touchscreen-size-x = <720>;
137                 touchscreen-size-y = <1440>;
138         };
139 };
140
141 &i2c1 {
142         status = "okay";
143
144         /* Magnetometer */
145         lis3mdl: lis3mdl@1e {
146                 compatible = "st,lis3mdl-magn";
147                 reg = <0x1e>;
148                 vdd-supply = <&reg_dldo1>;
149                 vddio-supply = <&reg_dldo1>;
150         };
151
152         /* Accelerometer/gyroscope */
153         mpu6050@68 {
154                 compatible = "invensense,mpu6050";
155                 reg = <0x68>;
156                 interrupt-parent = <&pio>;
157                 interrupts = <7 5 IRQ_TYPE_EDGE_RISING>; /* PH5 */
158                 vdd-supply = <&reg_dldo1>;
159                 vddio-supply = <&reg_dldo1>;
160         };
161 };
162
163 /* Connected to pogo pins (external spring based pinheader for user addons) */
164 &i2c2 {
165         status = "okay";
166 };
167
168 &lradc {
169         vref-supply = <&reg_aldo3>;
170         status = "okay";
171
172         button-200 {
173                 label = "Volume Up";
174                 linux,code = <KEY_VOLUMEUP>;
175                 channel = <0>;
176                 voltage = <200000>;
177         };
178
179         button-400 {
180                 label = "Volume Down";
181                 linux,code = <KEY_VOLUMEDOWN>;
182                 channel = <0>;
183                 voltage = <400000>;
184         };
185 };
186
187 &mmc0 {
188         pinctrl-names = "default";
189         pinctrl-0 = <&mmc0_pins>;
190         vmmc-supply = <&reg_dcdc1>;
191         vqmmc-supply = <&reg_dcdc1>;
192         cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
193         disable-wp;
194         bus-width = <4>;
195         status = "okay";
196 };
197
198 &mmc2 {
199         pinctrl-names = "default";
200         pinctrl-0 = <&mmc2_pins>;
201         vmmc-supply = <&reg_dcdc1>;
202         vqmmc-supply = <&reg_dcdc1>;
203         bus-width = <8>;
204         non-removable;
205         cap-mmc-hw-reset;
206         status = "okay";
207 };
208
209 &ohci0 {
210         status = "okay";
211 };
212
213 &ohci1 {
214         status = "okay";
215 };
216
217 &pio {
218         vcc-pb-supply = <&reg_dcdc1>;
219         vcc-pc-supply = <&reg_dcdc1>;
220         vcc-pd-supply = <&reg_dcdc1>;
221         vcc-pe-supply = <&reg_aldo1>;
222         vcc-pf-supply = <&reg_dcdc1>;
223         vcc-pg-supply = <&reg_dldo4>;
224         vcc-ph-supply = <&reg_dcdc1>;
225 };
226
227 &r_pio {
228         /*
229          * FIXME: We can't add that supply for now since it would
230          * create a circular dependency between pinctrl, the regulator
231          * and the RSB Bus.
232          *
233          * vcc-pl-supply = <&reg_aldo2>;
234          */
235 };
236
237 &r_pwm {
238         status = "okay";
239 };
240
241 &r_rsb {
242         status = "okay";
243
244         axp803: pmic@3a3 {
245                 compatible = "x-powers,axp803";
246                 reg = <0x3a3>;
247                 interrupt-parent = <&r_intc>;
248                 interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
249         };
250 };
251
252 #include "axp803.dtsi"
253
254 &ac_power_supply {
255         status = "okay";
256 };
257
258 &battery_power_supply {
259         status = "okay";
260 };
261
262 &reg_aldo1 {
263         regulator-min-microvolt = <1800000>;
264         regulator-max-microvolt = <1800000>;
265         regulator-name = "dovdd-csi";
266 };
267
268 &reg_aldo2 {
269         regulator-always-on;
270         regulator-min-microvolt = <1800000>;
271         regulator-max-microvolt = <1800000>;
272         regulator-name = "vcc-pl";
273 };
274
275 &reg_aldo3 {
276         regulator-always-on;
277         regulator-min-microvolt = <2700000>;
278         regulator-max-microvolt = <3300000>;
279         regulator-name = "vcc-pll-avcc";
280 };
281
282 &reg_dcdc1 {
283         regulator-always-on;
284         regulator-min-microvolt = <3300000>;
285         regulator-max-microvolt = <3300000>;
286         regulator-name = "vcc-3v3";
287 };
288
289 &reg_dcdc2 {
290         regulator-always-on;
291         regulator-min-microvolt = <1000000>;
292         regulator-max-microvolt = <1300000>;
293         regulator-name = "vdd-cpux";
294 };
295
296 /* DCDC3 is polyphased with DCDC2 */
297
298 &reg_dcdc5 {
299         regulator-always-on;
300         regulator-min-microvolt = <1200000>;
301         regulator-max-microvolt = <1200000>;
302         regulator-name = "vcc-dram";
303 };
304
305 &reg_dcdc6 {
306         regulator-always-on;
307         regulator-min-microvolt = <1100000>;
308         regulator-max-microvolt = <1100000>;
309         regulator-name = "vdd-sys";
310 };
311
312 &reg_dldo1 {
313         regulator-min-microvolt = <3300000>;
314         regulator-max-microvolt = <3300000>;
315         regulator-name = "vcc-dsi-sensor";
316 };
317
318 &reg_dldo2 {
319         regulator-min-microvolt = <1800000>;
320         regulator-max-microvolt = <1800000>;
321         regulator-name = "vcc-mipi-io";
322 };
323
324 &reg_dldo3 {
325         regulator-min-microvolt = <2800000>;
326         regulator-max-microvolt = <2800000>;
327         regulator-name = "avdd-csi";
328 };
329
330 &reg_dldo4 {
331         regulator-min-microvolt = <1800000>;
332         regulator-max-microvolt = <1800000>;
333         regulator-name = "vcc-wifi-io";
334 };
335
336 &reg_eldo1 {
337         regulator-always-on;
338         regulator-min-microvolt = <1800000>;
339         regulator-max-microvolt = <1800000>;
340         regulator-name = "vcc-lpddr";
341 };
342
343 &reg_eldo3 {
344         regulator-min-microvolt = <1800000>;
345         regulator-max-microvolt = <1800000>;
346         regulator-name = "dvdd-1v8-csi";
347 };
348
349 &reg_fldo1 {
350         regulator-min-microvolt = <1200000>;
351         regulator-max-microvolt = <1200000>;
352         regulator-name = "vcc-1v2-hsic";
353 };
354
355 &reg_fldo2 {
356         regulator-always-on;
357         regulator-min-microvolt = <1100000>;
358         regulator-max-microvolt = <1100000>;
359         regulator-name = "vdd-cpus";
360 };
361
362 &reg_ldo_io0 {
363         regulator-min-microvolt = <3300000>;
364         regulator-max-microvolt = <3300000>;
365         regulator-name = "vcc-lcd-ctp-stk";
366         status = "okay";
367 };
368
369 &reg_ldo_io1 {
370         regulator-min-microvolt = <1800000>;
371         regulator-max-microvolt = <1800000>;
372         regulator-name = "vcc-1v8-typec";
373         status = "okay";
374 };
375
376 &reg_rtc_ldo {
377         regulator-name = "vcc-rtc";
378 };
379
380 &sound {
381         status = "okay";
382         simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>;
383         simple-audio-card,widgets = "Microphone", "Headset Microphone",
384                                     "Microphone", "Internal Microphone",
385                                     "Headphone", "Headphone Jack",
386                                     "Speaker", "Internal Earpiece",
387                                     "Speaker", "Internal Speaker";
388         simple-audio-card,routing =
389                         "Headphone Jack", "HP",
390                         "Internal Earpiece", "EARPIECE",
391                         "Internal Speaker", "Speaker Amp OUTL",
392                         "Internal Speaker", "Speaker Amp OUTR",
393                         "Speaker Amp INL", "LINEOUT",
394                         "Speaker Amp INR", "LINEOUT",
395                         "Left DAC", "AIF1 Slot 0 Left",
396                         "Right DAC", "AIF1 Slot 0 Right",
397                         "AIF1 Slot 0 Left ADC", "Left ADC",
398                         "AIF1 Slot 0 Right ADC", "Right ADC",
399                         "Internal Microphone", "MBIAS",
400                         "MIC1", "Internal Microphone",
401                         "Headset Microphone", "HBIAS",
402                         "MIC2", "Headset Microphone";
403 };
404
405 &uart0 {
406         pinctrl-names = "default";
407         pinctrl-0 = <&uart0_pb_pins>;
408         status = "okay";
409 };
410
411 /* Connected to the modem (hardware flow control can't be used) */
412 &uart3 {
413         pinctrl-names = "default";
414         pinctrl-0 = <&uart3_pins>;
415         status = "okay";
416 };
417
418 &usb_otg {
419         dr_mode = "peripheral";
420         status = "okay";
421 };
422
423 &usb_power_supply {
424         status = "okay";
425 };
426
427 &usbphy {
428         status = "okay";
429 };