blob: 422a8507f674fc7e1dd1d6365225af76275d1926 [file] [log] [blame]
Samuel Hollande210ec02020-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/ {
Andre Przywara647b3922021-04-17 22:55:19 +010017 model = "PineTab, Development Sample";
Samuel Hollande210ec02020-10-24 10:21:55 -050018 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 {
Samuel Hollande210ec02020-10-24 10:21:55 -0500125 csi_ep: endpoint {
126 remote-endpoint = <&ov5640_ep>;
127 bus-width = <8>;
128 hsync-active = <1>; /* Active high */
129 vsync-active = <0>; /* Active low */
130 data-active = <1>; /* Active high */
131 pclk-sample = <1>; /* Rising */
132 };
133 };
134};
135
136&dai {
137 status = "okay";
138};
139
140&de {
141 status = "okay";
142};
143
144&dphy {
145 status = "okay";
146};
147
148&dsi {
149 vcc-dsi-supply = <&reg_dldo1>;
150 status = "okay";
151
152 panel@0 {
153 compatible = "feixin,k101-im2ba02";
154 reg = <0>;
155 avdd-supply = <&reg_dc1sw>;
156 dvdd-supply = <&reg_dc1sw>;
157 cvdd-supply = <&reg_ldo_io1>;
158 reset-gpios = <&pio 3 24 GPIO_ACTIVE_HIGH>; /* PD24 */
159 backlight = <&backlight>;
160 };
161};
162
163&ehci0 {
164 status = "okay";
165};
166
167&ehci1 {
168 status = "okay";
169};
170
171&i2c0 {
172 status = "okay";
173
174 touchscreen@5d {
175 compatible = "goodix,gt9271";
176 reg = <0x5d>;
177 interrupt-parent = <&pio>;
178 interrupts = <7 4 IRQ_TYPE_LEVEL_HIGH>; /* PH4 */
179 irq-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
180 reset-gpios = <&pio 7 8 GPIO_ACTIVE_HIGH>; /* PH8 */
181 AVDD28-supply = <&reg_ldo_io1>;
182 };
183};
184
185&i2c0_pins {
186 bias-pull-up;
187};
188
189&i2c1 {
190 status = "okay";
191
192 /* TODO: add Bochs BMA223 accelerometer here */
193};
194
195&lradc {
196 vref-supply = <&reg_aldo3>;
197 status = "okay";
198
199 button-200 {
200 label = "Volume Up";
201 linux,code = <KEY_VOLUMEUP>;
202 channel = <0>;
203 voltage = <200000>;
204 };
205
206 button-400 {
207 label = "Volume Down";
208 linux,code = <KEY_VOLUMEDOWN>;
209 channel = <0>;
210 voltage = <400000>;
211 };
212};
213
214&mixer1 {
215 status = "okay";
216};
217
218&mmc0 {
219 pinctrl-names = "default";
220 pinctrl-0 = <&mmc0_pins>;
221 vmmc-supply = <&reg_dcdc1>;
222 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
223 disable-wp;
224 bus-width = <4>;
225 status = "okay";
226};
227
228&mmc1 {
229 pinctrl-names = "default";
230 pinctrl-0 = <&mmc1_pins>;
231 vmmc-supply = <&reg_dldo4>;
232 vqmmc-supply = <&reg_eldo1>;
233 mmc-pwrseq = <&wifi_pwrseq>;
234 bus-width = <4>;
235 non-removable;
236 status = "okay";
237
238 rtl8723cs: wifi@1 {
239 reg = <1>;
240 };
241};
242
243&mmc2 {
244 pinctrl-names = "default";
245 pinctrl-0 = <&mmc2_pins>;
246 vmmc-supply = <&reg_dcdc1>;
247 vqmmc-supply = <&reg_dcdc1>;
248 bus-width = <8>;
249 non-removable;
250 cap-mmc-hw-reset;
251 status = "okay";
252};
253
254&ohci0 {
255 status = "okay";
256};
257
258&pwm {
259 status = "okay";
260};
261
262&r_rsb {
263 status = "okay";
264
265 axp803: pmic@3a3 {
266 compatible = "x-powers,axp803";
267 reg = <0x3a3>;
268 interrupt-parent = <&r_intc>;
269 interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
270 x-powers,drive-vbus-en;
271 };
272};
273
274#include "axp803.dtsi"
275
276&ac_power_supply {
277 status = "okay";
278};
279
280&battery_power_supply {
281 status = "okay";
282};
283
284&reg_aldo1 {
285 regulator-min-microvolt = <2800000>;
286 regulator-max-microvolt = <2800000>;
287 regulator-name = "dovdd-csi";
288};
289
290&reg_aldo2 {
291 regulator-always-on;
292 regulator-min-microvolt = <1800000>;
293 regulator-max-microvolt = <3300000>;
294 regulator-name = "vcc-pl";
295};
296
297&reg_aldo3 {
298 regulator-always-on;
299 regulator-min-microvolt = <2700000>;
300 regulator-max-microvolt = <3300000>;
301 regulator-name = "vcc-pll-avcc";
302};
303
304&reg_dc1sw {
305 regulator-name = "vcc-lcd";
306};
307
308&reg_dcdc1 {
309 regulator-always-on;
310 regulator-min-microvolt = <3300000>;
311 regulator-max-microvolt = <3300000>;
312 regulator-name = "vcc-3v3";
313};
314
315&reg_dcdc2 {
316 regulator-always-on;
317 regulator-min-microvolt = <1000000>;
318 regulator-max-microvolt = <1300000>;
319 regulator-name = "vdd-cpux";
320};
321
322/* DCDC3 is polyphased with DCDC2 */
323
324&reg_dcdc5 {
325 regulator-always-on;
326 regulator-min-microvolt = <1200000>;
327 regulator-max-microvolt = <1200000>;
328 regulator-name = "vcc-dram";
329};
330
331&reg_dcdc6 {
332 regulator-always-on;
333 regulator-min-microvolt = <1100000>;
334 regulator-max-microvolt = <1100000>;
335 regulator-name = "vdd-sys";
336};
337
338&reg_dldo1 {
339 regulator-always-on;
340 regulator-min-microvolt = <3300000>;
341 regulator-max-microvolt = <3300000>;
342 regulator-name = "vcc-hdmi-dsi-sensor";
343};
344
345&reg_dldo3 {
346 regulator-min-microvolt = <2800000>;
347 regulator-max-microvolt = <2800000>;
348 regulator-name = "avdd-csi";
349};
350
351&reg_dldo4 {
352 regulator-min-microvolt = <3300000>;
353 regulator-max-microvolt = <3300000>;
354 regulator-name = "vcc-wifi";
355};
356
357&reg_drivevbus {
358 regulator-name = "usb0-vbus";
359 status = "okay";
360};
361
362&reg_eldo1 {
363 regulator-always-on;
364 regulator-min-microvolt = <1800000>;
365 regulator-max-microvolt = <1800000>;
366 regulator-name = "cpvdd";
367};
368
369&reg_eldo2 {
370 regulator-min-microvolt = <1800000>;
371 regulator-max-microvolt = <1800000>;
372 regulator-name = "vcca-1v8";
373};
374
375&reg_eldo3 {
376 regulator-min-microvolt = <1800000>;
377 regulator-max-microvolt = <1800000>;
378 regulator-name = "dvdd-1v8-csi";
379};
380
381&reg_fldo1 {
382 regulator-min-microvolt = <1200000>;
383 regulator-max-microvolt = <1200000>;
384 regulator-name = "vcc-1v2-hsic";
385};
386
387&reg_fldo2 {
388 regulator-always-on;
389 regulator-min-microvolt = <1100000>;
390 regulator-max-microvolt = <1100000>;
391 regulator-name = "vdd-cpus";
392};
393
394&reg_ldo_io0 {
395 regulator-min-microvolt = <3300000>;
396 regulator-max-microvolt = <3300000>;
397 regulator-name = "vcc-usb";
398 status = "okay";
399};
400
401&reg_ldo_io1 {
402 regulator-min-microvolt = <3300000>;
403 regulator-max-microvolt = <3300000>;
404 regulator-enable-ramp-delay = <3500000>;
405 regulator-name = "vcc-touchscreen";
406 status = "okay";
407};
408
409&reg_rtc_ldo {
410 regulator-name = "vcc-rtc";
411};
412
413&sound {
414 status = "okay";
415 simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>;
416 simple-audio-card,widgets = "Microphone", "Internal Microphone Left",
417 "Microphone", "Internal Microphone Right",
418 "Headphone", "Headphone Jack",
419 "Speaker", "Internal Speaker";
420 simple-audio-card,routing =
Andre Przywara647b3922021-04-17 22:55:19 +0100421 "Left DAC", "DACL",
422 "Right DAC", "DACR",
Samuel Hollande210ec02020-10-24 10:21:55 -0500423 "Speaker Amp INL", "LINEOUT",
424 "Speaker Amp INR", "LINEOUT",
425 "Internal Speaker", "Speaker Amp OUTL",
426 "Internal Speaker", "Speaker Amp OUTR",
427 "Headphone Jack", "HP",
Andre Przywara647b3922021-04-17 22:55:19 +0100428 "ADCL", "Left ADC",
429 "ADCR", "Right ADC",
Samuel Hollande210ec02020-10-24 10:21:55 -0500430 "Internal Microphone Left", "MBIAS",
431 "MIC1", "Internal Microphone Left",
432 "Internal Microphone Right", "HBIAS",
433 "MIC2", "Internal Microphone Right";
434};
435
436&uart0 {
437 pinctrl-names = "default";
438 pinctrl-0 = <&uart0_pb_pins>;
439 status = "okay";
440};
441
442&usb_otg {
443 dr_mode = "otg";
444 status = "okay";
445};
446
447&usb_power_supply {
448 status = "okay";
449};
450
451&usbphy {
452 usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */
453 usb0_vbus_power-supply = <&usb_power_supply>;
454 usb0_vbus-supply = <&reg_drivevbus>;
455 usb1_vbus-supply = <&reg_ldo_io0>;
456 status = "okay";
457};