xref: /openbmc/linux/arch/arm64/boot/dts/allwinner/sun50i-a64-pinetab.dts (revision e533cda12d8f0e7936354bafdc85c81741f805d2)
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};
461