blob: dc4ab6b434f9700ab855bd0f1b6fe1dd57ca94e1 [file] [log] [blame]
Samuel Holland26bc4e72020-10-24 10:21:55 -05001// 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", "AIF1 Slot 0 Left",
425 "Right DAC", "AIF1 Slot 0 Right",
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 "AIF1 Slot 0 Left ADC", "Left ADC",
432 "AIF1 Slot 0 Right ADC", "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};