Merge tag 'aspeed-5.11-devicetree' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / arch / arm64 / boot / dts / allwinner / sun50i-a64-pinetab.dts
1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 /*
3  * Copyright (C) 2019 Icenowy Zheng <icenowy@aosc.xyz>
4  *
5  */
6
7 /dts-v1/;
8
9 #include "sun50i-a64.dtsi"
10 #include "sun50i-a64-cpu-opp.dtsi"
11
12 #include <dt-bindings/gpio/gpio.h>
13 #include <dt-bindings/input/input.h>
14 #include <dt-bindings/pwm/pwm.h>
15
16 / {
17         model = "PineTab";
18         compatible = "pine64,pinetab", "allwinner,sun50i-a64";
19
20         aliases {
21                 serial0 = &uart0;
22                 ethernet0 = &rtl8723cs;
23         };
24
25         backlight: backlight {
26                 compatible = "pwm-backlight";
27                 pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>;
28                 brightness-levels = <0 16 18 20 22 24 26 29 32 35 38 42 46 51 56 62 68 75 83 91 100>;
29                 default-brightness-level = <15>;
30                 enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */
31                 power-supply = <&vdd_bl>;
32         };
33
34         chosen {
35                 stdout-path = "serial0:115200n8";
36         };
37
38         i2c-csi {
39                 compatible = "i2c-gpio";
40                 sda-gpios = <&pio 4 13 GPIO_ACTIVE_HIGH>; /* PE13 */
41                 scl-gpios = <&pio 4 12 GPIO_ACTIVE_HIGH>; /* PE12 */
42                 i2c-gpio,delay-us = <5>;
43                 #address-cells = <1>;
44                 #size-cells = <0>;
45
46                 /* Rear camera */
47                 ov5640: camera@3c {
48                         compatible = "ovti,ov5640";
49                         reg = <0x3c>;
50                         pinctrl-names = "default";
51                         pinctrl-0 = <&csi_mclk_pin>;
52                         clocks = <&ccu CLK_CSI_MCLK>;
53                         clock-names = "xclk";
54
55                         AVDD-supply = <&reg_dldo3>;
56                         DOVDD-supply = <&reg_aldo1>;
57                         DVDD-supply = <&reg_eldo3>;
58                         reset-gpios = <&pio 4 14 GPIO_ACTIVE_LOW>; /* PE14 */
59                         powerdown-gpios = <&pio 4 15 GPIO_ACTIVE_HIGH>; /* PE15 */
60
61                         port {
62                                 ov5640_ep: endpoint {
63                                         remote-endpoint = <&csi_ep>;
64                                         bus-width = <8>;
65                                         hsync-active = <1>; /* Active high */
66                                         vsync-active = <0>; /* Active low */
67                                         data-active = <1>;  /* Active high */
68                                         pclk-sample = <1>;  /* Rising */
69                                 };
70                         };
71                 };
72         };
73
74         speaker_amp: audio-amplifier {
75                 compatible = "simple-audio-amplifier";
76                 enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
77                 sound-name-prefix = "Speaker Amp";
78         };
79
80         vdd_bl: regulator@0 {
81                 compatible = "regulator-fixed";
82                 regulator-name = "bl-3v3";
83                 regulator-min-microvolt = <3300000>;
84                 regulator-max-microvolt = <3300000>;
85                 gpio = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */
86                 enable-active-high;
87         };
88
89         wifi_pwrseq: wifi_pwrseq {
90                 compatible = "mmc-pwrseq-simple";
91                 reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
92                 post-power-on-delay-ms = <200>;
93         };
94 };
95
96 &codec {
97         status = "okay";
98 };
99
100 &codec_analog {
101         cpvdd-supply = <&reg_eldo1>;
102         status = "okay";
103 };
104
105 &cpu0 {
106         cpu-supply = <&reg_dcdc2>;
107 };
108
109 &cpu1 {
110         cpu-supply = <&reg_dcdc2>;
111 };
112
113 &cpu2 {
114         cpu-supply = <&reg_dcdc2>;
115 };
116
117 &cpu3 {
118         cpu-supply = <&reg_dcdc2>;
119 };
120
121 &csi {
122         status = "okay";
123
124         port {
125                 #address-cells = <1>;
126                 #size-cells = <0>;
127
128                 csi_ep: endpoint {
129                         remote-endpoint = <&ov5640_ep>;
130                         bus-width = <8>;
131                         hsync-active = <1>; /* Active high */
132                         vsync-active = <0>; /* Active low */
133                         data-active = <1>;  /* Active high */
134                         pclk-sample = <1>;  /* Rising */
135                 };
136         };
137 };
138
139 &dai {
140         status = "okay";
141 };
142
143 &de {
144         status = "okay";
145 };
146
147 &dphy {
148         status = "okay";
149 };
150
151 &dsi {
152         vcc-dsi-supply = <&reg_dldo1>;
153         status = "okay";
154
155         panel@0 {
156                 compatible = "feixin,k101-im2ba02";
157                 reg = <0>;
158                 avdd-supply = <&reg_dc1sw>;
159                 dvdd-supply = <&reg_dc1sw>;
160                 cvdd-supply = <&reg_ldo_io1>;
161                 reset-gpios = <&pio 3 24 GPIO_ACTIVE_HIGH>; /* PD24 */
162                 backlight = <&backlight>;
163         };
164 };
165
166 &ehci0 {
167         status = "okay";
168 };
169
170 &ehci1 {
171         status = "okay";
172 };
173
174 &i2c0 {
175         status = "okay";
176
177         touchscreen@5d {
178                 compatible = "goodix,gt9271";
179                 reg = <0x5d>;
180                 interrupt-parent = <&pio>;
181                 interrupts = <7 4 IRQ_TYPE_LEVEL_HIGH>; /* PH4 */
182                 irq-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
183                 reset-gpios = <&pio 7 8 GPIO_ACTIVE_HIGH>; /* PH8 */
184                 AVDD28-supply = <&reg_ldo_io1>;
185         };
186 };
187
188 &i2c0_pins {
189         bias-pull-up;
190 };
191
192 &i2c1 {
193         status = "okay";
194
195         /* TODO: add Bochs BMA223 accelerometer here */
196 };
197
198 &lradc {
199         vref-supply = <&reg_aldo3>;
200         status = "okay";
201
202         button-200 {
203                 label = "Volume Up";
204                 linux,code = <KEY_VOLUMEUP>;
205                 channel = <0>;
206                 voltage = <200000>;
207         };
208
209         button-400 {
210                 label = "Volume Down";
211                 linux,code = <KEY_VOLUMEDOWN>;
212                 channel = <0>;
213                 voltage = <400000>;
214         };
215 };
216
217 &mixer1 {
218         status = "okay";
219 };
220
221 &mmc0 {
222         pinctrl-names = "default";
223         pinctrl-0 = <&mmc0_pins>;
224         vmmc-supply = <&reg_dcdc1>;
225         cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
226         disable-wp;
227         bus-width = <4>;
228         status = "okay";
229 };
230
231 &mmc1 {
232         pinctrl-names = "default";
233         pinctrl-0 = <&mmc1_pins>;
234         vmmc-supply = <&reg_dldo4>;
235         vqmmc-supply = <&reg_eldo1>;
236         mmc-pwrseq = <&wifi_pwrseq>;
237         bus-width = <4>;
238         non-removable;
239         status = "okay";
240
241         rtl8723cs: wifi@1 {
242                 reg = <1>;
243         };
244 };
245
246 &mmc2 {
247         pinctrl-names = "default";
248         pinctrl-0 = <&mmc2_pins>;
249         vmmc-supply = <&reg_dcdc1>;
250         vqmmc-supply = <&reg_dcdc1>;
251         bus-width = <8>;
252         non-removable;
253         cap-mmc-hw-reset;
254         status = "okay";
255 };
256
257 &ohci0 {
258         status = "okay";
259 };
260
261 &pwm {
262         status = "okay";
263 };
264
265 &r_rsb {
266         status = "okay";
267
268         axp803: pmic@3a3 {
269                 compatible = "x-powers,axp803";
270                 reg = <0x3a3>;
271                 interrupt-parent = <&r_intc>;
272                 interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
273                 x-powers,drive-vbus-en;
274         };
275 };
276
277 #include "axp803.dtsi"
278
279 &ac_power_supply {
280         status = "okay";
281 };
282
283 &battery_power_supply {
284         status = "okay";
285 };
286
287 &reg_aldo1 {
288         regulator-min-microvolt = <2800000>;
289         regulator-max-microvolt = <2800000>;
290         regulator-name = "dovdd-csi";
291 };
292
293 &reg_aldo2 {
294         regulator-always-on;
295         regulator-min-microvolt = <1800000>;
296         regulator-max-microvolt = <3300000>;
297         regulator-name = "vcc-pl";
298 };
299
300 &reg_aldo3 {
301         regulator-always-on;
302         regulator-min-microvolt = <2700000>;
303         regulator-max-microvolt = <3300000>;
304         regulator-name = "vcc-pll-avcc";
305 };
306
307 &reg_dc1sw {
308         regulator-name = "vcc-lcd";
309 };
310
311 &reg_dcdc1 {
312         regulator-always-on;
313         regulator-min-microvolt = <3300000>;
314         regulator-max-microvolt = <3300000>;
315         regulator-name = "vcc-3v3";
316 };
317
318 &reg_dcdc2 {
319         regulator-always-on;
320         regulator-min-microvolt = <1000000>;
321         regulator-max-microvolt = <1300000>;
322         regulator-name = "vdd-cpux";
323 };
324
325 /* DCDC3 is polyphased with DCDC2 */
326
327 &reg_dcdc5 {
328         regulator-always-on;
329         regulator-min-microvolt = <1200000>;
330         regulator-max-microvolt = <1200000>;
331         regulator-name = "vcc-dram";
332 };
333
334 &reg_dcdc6 {
335         regulator-always-on;
336         regulator-min-microvolt = <1100000>;
337         regulator-max-microvolt = <1100000>;
338         regulator-name = "vdd-sys";
339 };
340
341 &reg_dldo1 {
342         regulator-always-on;
343         regulator-min-microvolt = <3300000>;
344         regulator-max-microvolt = <3300000>;
345         regulator-name = "vcc-hdmi-dsi-sensor";
346 };
347
348 &reg_dldo3 {
349         regulator-min-microvolt = <2800000>;
350         regulator-max-microvolt = <2800000>;
351         regulator-name = "avdd-csi";
352 };
353
354 &reg_dldo4 {
355         regulator-min-microvolt = <3300000>;
356         regulator-max-microvolt = <3300000>;
357         regulator-name = "vcc-wifi";
358 };
359
360 &reg_drivevbus {
361         regulator-name = "usb0-vbus";
362         status = "okay";
363 };
364
365 &reg_eldo1 {
366         regulator-always-on;
367         regulator-min-microvolt = <1800000>;
368         regulator-max-microvolt = <1800000>;
369         regulator-name = "cpvdd";
370 };
371
372 &reg_eldo2 {
373         regulator-min-microvolt = <1800000>;
374         regulator-max-microvolt = <1800000>;
375         regulator-name = "vcca-1v8";
376 };
377
378 &reg_eldo3 {
379         regulator-min-microvolt = <1800000>;
380         regulator-max-microvolt = <1800000>;
381         regulator-name = "dvdd-1v8-csi";
382 };
383
384 &reg_fldo1 {
385         regulator-min-microvolt = <1200000>;
386         regulator-max-microvolt = <1200000>;
387         regulator-name = "vcc-1v2-hsic";
388 };
389
390 &reg_fldo2 {
391         regulator-always-on;
392         regulator-min-microvolt = <1100000>;
393         regulator-max-microvolt = <1100000>;
394         regulator-name = "vdd-cpus";
395 };
396
397 &reg_ldo_io0 {
398         regulator-min-microvolt = <3300000>;
399         regulator-max-microvolt = <3300000>;
400         regulator-name = "vcc-usb";
401         status = "okay";
402 };
403
404 &reg_ldo_io1 {
405         regulator-min-microvolt = <3300000>;
406         regulator-max-microvolt = <3300000>;
407         regulator-enable-ramp-delay = <3500000>;
408         regulator-name = "vcc-touchscreen";
409         status = "okay";
410 };
411
412 &reg_rtc_ldo {
413         regulator-name = "vcc-rtc";
414 };
415
416 &sound {
417         status = "okay";
418         simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>;
419         simple-audio-card,widgets = "Microphone", "Internal Microphone Left",
420                                     "Microphone", "Internal Microphone Right",
421                                     "Headphone", "Headphone Jack",
422                                     "Speaker", "Internal Speaker";
423         simple-audio-card,routing =
424                         "Left DAC", "DACL",
425                         "Right DAC", "DACR",
426                         "Speaker Amp INL", "LINEOUT",
427                         "Speaker Amp INR", "LINEOUT",
428                         "Internal Speaker", "Speaker Amp OUTL",
429                         "Internal Speaker", "Speaker Amp OUTR",
430                         "Headphone Jack", "HP",
431                         "ADCL", "Left ADC",
432                         "ADCR", "Right ADC",
433                         "Internal Microphone Left", "MBIAS",
434                         "MIC1", "Internal Microphone Left",
435                         "Internal Microphone Right", "HBIAS",
436                         "MIC2", "Internal Microphone Right";
437 };
438
439 &uart0 {
440         pinctrl-names = "default";
441         pinctrl-0 = <&uart0_pb_pins>;
442         status = "okay";
443 };
444
445 &usb_otg {
446         dr_mode = "otg";
447         status = "okay";
448 };
449
450 &usb_power_supply {
451         status = "okay";
452 };
453
454 &usbphy {
455         usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */
456         usb0_vbus_power-supply = <&usb_power_supply>;
457         usb0_vbus-supply = <&reg_drivevbus>;
458         usb1_vbus-supply = <&reg_ldo_io0>;
459         status = "okay";
460 };