blob: 065b1861633bccceb339aaddc00d4e48e28a94a0 [file] [log] [blame]
Samuel Holland26bc4e72020-10-24 10:21:55 -05001// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2// Copyright (C) Harald Geyer <harald@ccbib.org>
3// based on sun50i-a64-olinuxino.dts by Jagan Teki <jteki@openedev.com>
Jonas Smedegaard4d5262e2019-04-20 18:24:16 +08004
5/dts-v1/;
6
7#include "sun50i-a64.dtsi"
Samuel Holland26bc4e72020-10-24 10:21:55 -05008#include "sun50i-a64-cpu-opp.dtsi"
Jonas Smedegaard4d5262e2019-04-20 18:24:16 +08009
10#include <dt-bindings/gpio/gpio.h>
11#include <dt-bindings/input/input.h>
12#include <dt-bindings/pwm/pwm.h>
13
14/ {
15 model = "Olimex A64 Teres-I";
16 compatible = "olimex,a64-teres-i", "allwinner,sun50i-a64";
Samuel Holland43729b72022-04-27 15:31:30 -050017 chassis-type = "laptop";
Jonas Smedegaard4d5262e2019-04-20 18:24:16 +080018
19 aliases {
20 serial0 = &uart0;
21 };
22
Samuel Holland26bc4e72020-10-24 10:21:55 -050023 backlight: backlight {
24 compatible = "pwm-backlight";
25 pwms = <&pwm 0 50000 0>;
26 power-supply = <&reg_dcdc1>;
27 brightness-levels = <0 5 7 10 14 20 28 40 56 80 112>;
28 default-brightness-level = <5>;
29 enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */
30 };
31
Jonas Smedegaard4d5262e2019-04-20 18:24:16 +080032 chosen {
33 stdout-path = "serial0:115200n8";
34
35 framebuffer-lcd {
36 eDP25-supply = <&reg_dldo2>;
37 eDP12-supply = <&reg_dldo3>;
38 };
39 };
40
41 gpio-keys {
42 compatible = "gpio-keys";
43
44 lid-switch {
45 label = "Lid Switch";
46 gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */
47 linux,input-type = <EV_SW>;
48 linux,code = <SW_LID>;
49 wakeup-source;
50 };
51 };
52
53 leds {
54 compatible = "gpio-leds";
55
Andre Przywarafb675472021-04-17 22:55:19 +010056 led-0 {
Jonas Smedegaard4d5262e2019-04-20 18:24:16 +080057 label = "teres-i:green:capslock";
58 gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */
59 };
60
Andre Przywarafb675472021-04-17 22:55:19 +010061 led-1 {
Jonas Smedegaard4d5262e2019-04-20 18:24:16 +080062 label = "teres-i:green:numlock";
63 gpios = <&pio 2 4 GPIO_ACTIVE_HIGH>; /* PC4 */
64 };
65 };
66
67 reg_usb1_vbus: usb1-vbus {
68 compatible = "regulator-fixed";
69 regulator-name = "usb1-vbus";
70 regulator-min-microvolt = <5000000>;
71 regulator-max-microvolt = <5000000>;
72 enable-active-high;
73 gpio = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */
74 status = "okay";
75 };
76
Andre Przywara3b798212024-04-19 17:59:52 +010077 wifi_pwrseq: pwrseq {
Jonas Smedegaard4d5262e2019-04-20 18:24:16 +080078 compatible = "mmc-pwrseq-simple";
79 reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
80 };
Samuel Holland26bc4e72020-10-24 10:21:55 -050081
82 speaker_amp: audio-amplifier {
83 compatible = "simple-audio-amplifier";
84 enable-gpios = <&r_pio 0 12 GPIO_ACTIVE_HIGH>; /* PL12 */
85 sound-name-prefix = "Speaker Amp";
86 };
87};
88
89&codec {
90 status = "okay";
91};
92
93&codec_analog {
94 cpvdd-supply = <&reg_eldo1>;
95 status = "okay";
96};
97
98&dai {
99 status = "okay";
100};
101
102&de {
103 status = "okay";
104};
105
106&cpu0 {
107 cpu-supply = <&reg_dcdc2>;
108};
109
110&cpu1 {
111 cpu-supply = <&reg_dcdc2>;
112};
113
114&cpu2 {
115 cpu-supply = <&reg_dcdc2>;
Jonas Smedegaard4d5262e2019-04-20 18:24:16 +0800116};
117
Samuel Holland26bc4e72020-10-24 10:21:55 -0500118&cpu3 {
119 cpu-supply = <&reg_dcdc2>;
120};
121
Jonas Smedegaard4d5262e2019-04-20 18:24:16 +0800122&ehci1 {
123 status = "okay";
124};
125
126
Jonas Smedegaard4d5262e2019-04-20 18:24:16 +0800127&i2c0 {
128 clock-frequency = <100000>;
Samuel Holland26bc4e72020-10-24 10:21:55 -0500129 status = "okay";
130
131 anx6345: anx6345@38 {
132 compatible = "analogix,anx6345";
133 reg = <0x38>;
134 reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */
135 dvdd25-supply = <&reg_dldo2>;
136 dvdd12-supply = <&reg_dldo3>;
137
138 ports {
139 #address-cells = <1>;
140 #size-cells = <0>;
141
142 port@0 {
Samuel Holland43729b72022-04-27 15:31:30 -0500143 reg = <0>;
144
Samuel Holland26bc4e72020-10-24 10:21:55 -0500145 anx6345_in: endpoint {
146 remote-endpoint = <&tcon0_out_anx6345>;
147 };
148 };
149 };
150 };
151};
152
153&mixer0 {
Jonas Smedegaard4d5262e2019-04-20 18:24:16 +0800154 status = "okay";
155};
156
157&mmc0 {
158 pinctrl-names = "default";
159 pinctrl-0 = <&mmc0_pins>;
160 vmmc-supply = <&reg_dcdc1>;
161 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
162 disable-wp;
163 bus-width = <4>;
164 status = "okay";
165};
166
167&mmc1 {
168 pinctrl-names = "default";
169 pinctrl-0 = <&mmc1_pins>;
170 vmmc-supply = <&reg_aldo2>;
171 vqmmc-supply = <&reg_dldo4>;
172 mmc-pwrseq = <&wifi_pwrseq>;
173 bus-width = <4>;
174 non-removable;
175 status = "okay";
176
177 rtl8723bs: wifi@1 {
178 reg = <1>;
179 interrupt-parent = <&r_pio>;
180 interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */
181 interrupt-names = "host-wake";
182 };
183};
184
185&mmc2 {
186 pinctrl-names = "default";
187 pinctrl-0 = <&mmc2_pins>;
188 vmmc-supply = <&reg_dcdc1>;
189 vqmmc-supply = <&reg_dcdc1>;
190 bus-width = <8>;
191 non-removable;
192 cap-mmc-hw-reset;
193 status = "okay";
194};
195
196&ohci1 {
197 status = "okay";
198};
199
Andre Przywara5eb4bbe2022-09-11 00:04:41 +0100200&pio {
201 vcc-pc-supply = <&reg_dcdc1>;
202 vcc-pd-supply = <&reg_dldo2>;
203 vcc-pe-supply = <&reg_aldo1>;
204 vcc-pf-supply = <&reg_dcdc1>; /* No dedicated supply-pin for this */
205 vcc-pg-supply = <&reg_aldo2>;
206};
207
Samuel Holland26bc4e72020-10-24 10:21:55 -0500208&pwm {
209 status = "okay";
210};
211
Jonas Smedegaard4d5262e2019-04-20 18:24:16 +0800212&r_rsb {
213 status = "okay";
214
215 axp803: pmic@3a3 {
216 compatible = "x-powers,axp803";
217 reg = <0x3a3>;
218 interrupt-parent = <&r_intc>;
219 interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
Jonas Smedegaard4d5262e2019-04-20 18:24:16 +0800220 };
221};
222
223#include "axp803.dtsi"
224
Samuel Holland26bc4e72020-10-24 10:21:55 -0500225&ac_power_supply {
226 status = "okay";
227};
228
229&battery_power_supply {
230 status = "okay";
231};
232
Jonas Smedegaard4d5262e2019-04-20 18:24:16 +0800233&reg_aldo1 {
234 regulator-always-on;
235 regulator-min-microvolt = <2800000>;
236 regulator-max-microvolt = <2800000>;
237 regulator-name = "vcc-pe";
238};
239
240&reg_aldo2 {
241 regulator-always-on;
242 regulator-min-microvolt = <3300000>;
243 regulator-max-microvolt = <3300000>;
244 regulator-name = "vcc-pl";
245};
246
247&reg_aldo3 {
248 regulator-always-on;
249 regulator-min-microvolt = <3000000>;
250 regulator-max-microvolt = <3000000>;
251 regulator-name = "vcc-pll-avcc";
252};
253
254&reg_dcdc1 {
255 regulator-always-on;
256 regulator-min-microvolt = <3300000>;
257 regulator-max-microvolt = <3300000>;
258 regulator-name = "vcc-3v3";
259};
260
261&reg_dcdc2 {
262 regulator-always-on;
263 regulator-min-microvolt = <1040000>;
264 regulator-max-microvolt = <1300000>;
265 regulator-name = "vdd-cpux";
266};
267
268/* DCDC3 is polyphased with DCDC2 */
269
270&reg_dcdc5 {
271 regulator-always-on;
272 regulator-min-microvolt = <1500000>;
273 regulator-max-microvolt = <1500000>;
274 regulator-name = "vcc-ddr3";
275};
276
277&reg_dcdc6 {
278 regulator-always-on;
279 regulator-min-microvolt = <1100000>;
280 regulator-max-microvolt = <1100000>;
281 regulator-name = "vdd-sys";
282};
283
284&reg_dldo1 {
285 regulator-min-microvolt = <3300000>;
286 regulator-max-microvolt = <3300000>;
287 regulator-name = "vcc-hdmi";
288};
289
290&reg_dldo2 {
291 regulator-min-microvolt = <2500000>;
292 regulator-max-microvolt = <2500000>;
293 regulator-name = "vcc-pd";
294};
295
296&reg_dldo3 {
297 regulator-min-microvolt = <1200000>;
298 regulator-max-microvolt = <1200000>;
299 regulator-name = "vdd-edp";
300};
301
302&reg_dldo4 {
303 regulator-min-microvolt = <3300000>;
304 regulator-max-microvolt = <3300000>;
305 regulator-name = "vcc-wifi-io";
306};
307
308&reg_eldo1 {
309 regulator-min-microvolt = <1800000>;
310 regulator-max-microvolt = <1800000>;
311 regulator-name = "cpvdd";
312};
313
314&reg_eldo2 {
315 regulator-min-microvolt = <1800000>;
316 regulator-max-microvolt = <1800000>;
317 regulator-name = "vcc-dvdd-csi";
318};
319
320&reg_fldo1 {
321 regulator-min-microvolt = <1200000>;
322 regulator-max-microvolt = <1200000>;
323 regulator-name = "vcc-1v2-hsic";
324};
325
326/*
Samuel Holland26bc4e72020-10-24 10:21:55 -0500327 * The A64 chip cannot work with this regulator off, although
Jonas Smedegaard4d5262e2019-04-20 18:24:16 +0800328 * it seems to be only driving the AR100 core.
329 * Maybe we don't still know well about CPUs domain.
330 */
331&reg_fldo2 {
332 regulator-always-on;
333 regulator-min-microvolt = <1100000>;
334 regulator-max-microvolt = <1100000>;
335 regulator-name = "vdd-cpus";
336};
337
338&reg_rtc_ldo {
339 regulator-name = "vcc-rtc";
340};
341
342&simplefb_hdmi {
343 vcc-hdmi-supply = <&reg_dldo1>;
344};
345
Samuel Holland26bc4e72020-10-24 10:21:55 -0500346&sound {
347 simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>;
348 simple-audio-card,widgets = "Headphone", "Headphone Jack",
349 "Microphone", "Headset Microphone",
350 "Microphone", "Internal Microphone",
351 "Speaker", "Internal Speaker";
352 simple-audio-card,routing =
Andre Przywarafb675472021-04-17 22:55:19 +0100353 "Left DAC", "DACL",
354 "Right DAC", "DACR",
355 "ADCL", "Left ADC",
356 "ADCR", "Right ADC",
Samuel Holland26bc4e72020-10-24 10:21:55 -0500357 "Headphone Jack", "HP",
358 "Speaker Amp INL", "LINEOUT",
359 "Speaker Amp INR", "LINEOUT",
360 "Internal Speaker", "Speaker Amp OUTL",
361 "Internal Speaker", "Speaker Amp OUTR",
362 "Internal Microphone", "MBIAS",
363 "MIC1", "Internal Microphone",
364 "Headset Microphone", "HBIAS",
365 "MIC2", "Headset Microphone";
366 status = "okay";
367};
368
369&tcon0 {
370 pinctrl-names = "default";
371 pinctrl-0 = <&lcd_rgb666_pins>;
372
373 status = "okay";
374};
375
376&tcon0_out {
377 tcon0_out_anx6345: endpoint@0 {
378 reg = <0>;
379 remote-endpoint = <&anx6345_in>;
380 };
381};
382
Jonas Smedegaard4d5262e2019-04-20 18:24:16 +0800383&uart0 {
384 pinctrl-names = "default";
385 pinctrl-0 = <&uart0_pb_pins>;
386 status = "okay";
387};
388
389&usbphy {
390 usb1_vbus-supply = <&reg_usb1_vbus>;
391 status = "okay";
392};