]>
Commit | Line | Data |
---|---|---|
674ef1d0 IZ |
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 = <®_dldo3>; | |
56 | DOVDD-supply = <®_aldo1>; | |
57 | DVDD-supply = <®_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 { | |
5f39dd23 | 101 | cpvdd-supply = <®_eldo1>; |
674ef1d0 IZ |
102 | status = "okay"; |
103 | }; | |
104 | ||
105 | &cpu0 { | |
106 | cpu-supply = <®_dcdc2>; | |
107 | }; | |
108 | ||
109 | &cpu1 { | |
110 | cpu-supply = <®_dcdc2>; | |
111 | }; | |
112 | ||
113 | &cpu2 { | |
114 | cpu-supply = <®_dcdc2>; | |
115 | }; | |
116 | ||
117 | &cpu3 { | |
118 | cpu-supply = <®_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 = <®_dldo1>; | |
153 | status = "okay"; | |
154 | ||
155 | panel@0 { | |
156 | compatible = "feixin,k101-im2ba02"; | |
157 | reg = <0>; | |
158 | avdd-supply = <®_dc1sw>; | |
159 | dvdd-supply = <®_dc1sw>; | |
160 | cvdd-supply = <®_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 = <®_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 = <®_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 = <®_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 = <®_dldo4>; | |
235 | vqmmc-supply = <®_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 = <®_dcdc1>; | |
250 | vqmmc-supply = <®_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 | ®_aldo1 { | |
288 | regulator-min-microvolt = <2800000>; | |
289 | regulator-max-microvolt = <2800000>; | |
290 | regulator-name = "dovdd-csi"; | |
291 | }; | |
292 | ||
293 | ®_aldo2 { | |
294 | regulator-always-on; | |
295 | regulator-min-microvolt = <1800000>; | |
296 | regulator-max-microvolt = <3300000>; | |
297 | regulator-name = "vcc-pl"; | |
298 | }; | |
299 | ||
300 | ®_aldo3 { | |
301 | regulator-always-on; | |
302 | regulator-min-microvolt = <2700000>; | |
303 | regulator-max-microvolt = <3300000>; | |
304 | regulator-name = "vcc-pll-avcc"; | |
305 | }; | |
306 | ||
307 | ®_dc1sw { | |
308 | regulator-name = "vcc-lcd"; | |
309 | }; | |
310 | ||
311 | ®_dcdc1 { | |
312 | regulator-always-on; | |
313 | regulator-min-microvolt = <3300000>; | |
314 | regulator-max-microvolt = <3300000>; | |
315 | regulator-name = "vcc-3v3"; | |
316 | }; | |
317 | ||
318 | ®_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 | ®_dcdc5 { | |
328 | regulator-always-on; | |
329 | regulator-min-microvolt = <1200000>; | |
330 | regulator-max-microvolt = <1200000>; | |
331 | regulator-name = "vcc-dram"; | |
332 | }; | |
333 | ||
334 | ®_dcdc6 { | |
335 | regulator-always-on; | |
336 | regulator-min-microvolt = <1100000>; | |
337 | regulator-max-microvolt = <1100000>; | |
338 | regulator-name = "vdd-sys"; | |
339 | }; | |
340 | ||
341 | ®_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 | ®_dldo3 { | |
349 | regulator-min-microvolt = <2800000>; | |
350 | regulator-max-microvolt = <2800000>; | |
351 | regulator-name = "avdd-csi"; | |
352 | }; | |
353 | ||
354 | ®_dldo4 { | |
355 | regulator-min-microvolt = <3300000>; | |
356 | regulator-max-microvolt = <3300000>; | |
357 | regulator-name = "vcc-wifi"; | |
358 | }; | |
359 | ||
360 | ®_drivevbus { | |
361 | regulator-name = "usb0-vbus"; | |
362 | status = "okay"; | |
363 | }; | |
364 | ||
365 | ®_eldo1 { | |
366 | regulator-always-on; | |
367 | regulator-min-microvolt = <1800000>; | |
368 | regulator-max-microvolt = <1800000>; | |
369 | regulator-name = "cpvdd"; | |
370 | }; | |
371 | ||
372 | ®_eldo2 { | |
373 | regulator-min-microvolt = <1800000>; | |
374 | regulator-max-microvolt = <1800000>; | |
375 | regulator-name = "vcca-1v8"; | |
376 | }; | |
377 | ||
378 | ®_eldo3 { | |
379 | regulator-min-microvolt = <1800000>; | |
380 | regulator-max-microvolt = <1800000>; | |
381 | regulator-name = "dvdd-1v8-csi"; | |
382 | }; | |
383 | ||
384 | ®_fldo1 { | |
385 | regulator-min-microvolt = <1200000>; | |
386 | regulator-max-microvolt = <1200000>; | |
387 | regulator-name = "vcc-1v2-hsic"; | |
388 | }; | |
389 | ||
390 | ®_fldo2 { | |
391 | regulator-always-on; | |
392 | regulator-min-microvolt = <1100000>; | |
393 | regulator-max-microvolt = <1100000>; | |
394 | regulator-name = "vdd-cpus"; | |
395 | }; | |
396 | ||
397 | ®_ldo_io0 { | |
398 | regulator-min-microvolt = <3300000>; | |
399 | regulator-max-microvolt = <3300000>; | |
400 | regulator-name = "vcc-usb"; | |
401 | status = "okay"; | |
402 | }; | |
403 | ||
404 | ®_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 | ®_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 = <®_drivevbus>; | |
458 | usb1_vbus-supply = <®_ldo_io0>; | |
459 | status = "okay"; | |
460 | }; |