1cabbaed7SClément Péron// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2cabbaed7SClément Péron// Copyright (C) Harald Geyer <harald@ccbib.org>
3cabbaed7SClément Péron// based on sun50i-a64-olinuxino.dts by Jagan Teki <jteki@openedev.com>
4c916eb95SHarald Geyer
5c916eb95SHarald Geyer/dts-v1/;
6c916eb95SHarald Geyer
7c916eb95SHarald Geyer#include "sun50i-a64.dtsi"
8ac904843SVasily Khoruzhick#include "sun50i-a64-cpu-opp.dtsi"
9c916eb95SHarald Geyer
10c916eb95SHarald Geyer#include <dt-bindings/gpio/gpio.h>
11c916eb95SHarald Geyer#include <dt-bindings/input/input.h>
12c916eb95SHarald Geyer#include <dt-bindings/pwm/pwm.h>
13c916eb95SHarald Geyer
14c916eb95SHarald Geyer/ {
15c916eb95SHarald Geyer	model = "Olimex A64 Teres-I";
16c916eb95SHarald Geyer	compatible = "olimex,a64-teres-i", "allwinner,sun50i-a64";
17c916eb95SHarald Geyer
18c916eb95SHarald Geyer	aliases {
19c916eb95SHarald Geyer		serial0 = &uart0;
20c916eb95SHarald Geyer	};
21c916eb95SHarald Geyer
2224bd5d2cSHarald Geyer	backlight: backlight {
2324bd5d2cSHarald Geyer		compatible = "pwm-backlight";
2424bd5d2cSHarald Geyer		pwms = <&pwm 0 50000 0>;
2524bd5d2cSHarald Geyer		power-supply = <&reg_dcdc1>;
2624bd5d2cSHarald Geyer		brightness-levels = <0 5 7 10 14 20 28 40 56 80 112>;
2724bd5d2cSHarald Geyer		default-brightness-level = <5>;
2824bd5d2cSHarald Geyer		enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */
2924bd5d2cSHarald Geyer	};
3024bd5d2cSHarald Geyer
31c916eb95SHarald Geyer	chosen {
32c916eb95SHarald Geyer		stdout-path = "serial0:115200n8";
33c916eb95SHarald Geyer
34c916eb95SHarald Geyer		framebuffer-lcd {
35c916eb95SHarald Geyer			eDP25-supply = <&reg_dldo2>;
36c916eb95SHarald Geyer			eDP12-supply = <&reg_dldo3>;
37c916eb95SHarald Geyer		};
38c916eb95SHarald Geyer	};
39c916eb95SHarald Geyer
40c916eb95SHarald Geyer	gpio-keys {
41c916eb95SHarald Geyer		compatible = "gpio-keys";
42c916eb95SHarald Geyer
43c916eb95SHarald Geyer		lid-switch {
44c916eb95SHarald Geyer			label = "Lid Switch";
45c916eb95SHarald Geyer			gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */
46c916eb95SHarald Geyer			linux,input-type = <EV_SW>;
47c916eb95SHarald Geyer			linux,code = <SW_LID>;
4848f3e7bfSIcenowy Zheng			wakeup-source;
49c916eb95SHarald Geyer		};
50c916eb95SHarald Geyer	};
51c916eb95SHarald Geyer
52c916eb95SHarald Geyer	leds {
53c916eb95SHarald Geyer		compatible = "gpio-leds";
54c916eb95SHarald Geyer
55*e299e6ddSMaxime Ripard		led-0 {
56c916eb95SHarald Geyer			label = "teres-i:green:capslock";
57c916eb95SHarald Geyer			gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */
58c916eb95SHarald Geyer		};
59c916eb95SHarald Geyer
60*e299e6ddSMaxime Ripard		led-1 {
61c916eb95SHarald Geyer			label = "teres-i:green:numlock";
62c916eb95SHarald Geyer			gpios = <&pio 2 4 GPIO_ACTIVE_HIGH>; /* PC4 */
63c916eb95SHarald Geyer		};
64c916eb95SHarald Geyer	};
65c916eb95SHarald Geyer
66c916eb95SHarald Geyer	reg_usb1_vbus: usb1-vbus {
67c916eb95SHarald Geyer		compatible = "regulator-fixed";
68c916eb95SHarald Geyer		regulator-name = "usb1-vbus";
69c916eb95SHarald Geyer		regulator-min-microvolt = <5000000>;
70c916eb95SHarald Geyer		regulator-max-microvolt = <5000000>;
71c916eb95SHarald Geyer		enable-active-high;
72c916eb95SHarald Geyer		gpio = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */
73c916eb95SHarald Geyer		status = "okay";
74c916eb95SHarald Geyer	};
75c916eb95SHarald Geyer
76c916eb95SHarald Geyer	wifi_pwrseq: wifi_pwrseq {
77c916eb95SHarald Geyer		compatible = "mmc-pwrseq-simple";
78c916eb95SHarald Geyer		reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
79c916eb95SHarald Geyer	};
80439152aeSHarald Geyer
81439152aeSHarald Geyer	speaker_amp: audio-amplifier {
82439152aeSHarald Geyer		compatible = "simple-audio-amplifier";
83439152aeSHarald Geyer		enable-gpios = <&r_pio 0 12 GPIO_ACTIVE_HIGH>; /* PL12 */
84439152aeSHarald Geyer		sound-name-prefix = "Speaker Amp";
85439152aeSHarald Geyer	};
86439152aeSHarald Geyer};
87439152aeSHarald Geyer
88439152aeSHarald Geyer&codec {
89439152aeSHarald Geyer	status = "okay";
90439152aeSHarald Geyer};
91439152aeSHarald Geyer
92439152aeSHarald Geyer&codec_analog {
93439152aeSHarald Geyer	cpvdd-supply = <&reg_eldo1>;
94439152aeSHarald Geyer	status = "okay";
95439152aeSHarald Geyer};
96439152aeSHarald Geyer
97439152aeSHarald Geyer&dai {
98439152aeSHarald Geyer	status = "okay";
99c916eb95SHarald Geyer};
100c916eb95SHarald Geyer
10179bc02f1STorsten Duwe&de {
10279bc02f1STorsten Duwe	status = "okay";
10379bc02f1STorsten Duwe};
10479bc02f1STorsten Duwe
105ac904843SVasily Khoruzhick&cpu0 {
106ac904843SVasily Khoruzhick	cpu-supply = <&reg_dcdc2>;
107ac904843SVasily Khoruzhick};
108ac904843SVasily Khoruzhick
109ac904843SVasily Khoruzhick&cpu1 {
110ac904843SVasily Khoruzhick	cpu-supply = <&reg_dcdc2>;
111ac904843SVasily Khoruzhick};
112ac904843SVasily Khoruzhick
113ac904843SVasily Khoruzhick&cpu2 {
114ac904843SVasily Khoruzhick	cpu-supply = <&reg_dcdc2>;
115ac904843SVasily Khoruzhick};
116ac904843SVasily Khoruzhick
117ac904843SVasily Khoruzhick&cpu3 {
118ac904843SVasily Khoruzhick	cpu-supply = <&reg_dcdc2>;
119ac904843SVasily Khoruzhick};
120ac904843SVasily Khoruzhick
121c916eb95SHarald Geyer&ehci1 {
122c916eb95SHarald Geyer	status = "okay";
123c916eb95SHarald Geyer};
124c916eb95SHarald Geyer
125c916eb95SHarald Geyer
126c916eb95SHarald Geyer&i2c0 {
127c916eb95SHarald Geyer	clock-frequency = <100000>;
128c916eb95SHarald Geyer	status = "okay";
12979bc02f1STorsten Duwe
13079bc02f1STorsten Duwe	anx6345: anx6345@38 {
13179bc02f1STorsten Duwe		compatible = "analogix,anx6345";
13279bc02f1STorsten Duwe		reg = <0x38>;
13379bc02f1STorsten Duwe		reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */
13479bc02f1STorsten Duwe		dvdd25-supply = <&reg_dldo2>;
13579bc02f1STorsten Duwe		dvdd12-supply = <&reg_dldo3>;
13679bc02f1STorsten Duwe
13779bc02f1STorsten Duwe		ports {
13879bc02f1STorsten Duwe			#address-cells = <1>;
13979bc02f1STorsten Duwe			#size-cells = <0>;
14079bc02f1STorsten Duwe
14179bc02f1STorsten Duwe			port@0 {
14279bc02f1STorsten Duwe				anx6345_in: endpoint {
14379bc02f1STorsten Duwe					remote-endpoint = <&tcon0_out_anx6345>;
14479bc02f1STorsten Duwe				};
14579bc02f1STorsten Duwe			};
14679bc02f1STorsten Duwe		};
14779bc02f1STorsten Duwe	};
14879bc02f1STorsten Duwe};
14979bc02f1STorsten Duwe
15079bc02f1STorsten Duwe&mixer0 {
15179bc02f1STorsten Duwe	status = "okay";
152c916eb95SHarald Geyer};
153c916eb95SHarald Geyer
154c916eb95SHarald Geyer&mmc0 {
155c916eb95SHarald Geyer	pinctrl-names = "default";
156c916eb95SHarald Geyer	pinctrl-0 = <&mmc0_pins>;
157c916eb95SHarald Geyer	vmmc-supply = <&reg_dcdc1>;
158c916eb95SHarald Geyer	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
159c916eb95SHarald Geyer	disable-wp;
160c916eb95SHarald Geyer	bus-width = <4>;
161c916eb95SHarald Geyer	status = "okay";
162c916eb95SHarald Geyer};
163c916eb95SHarald Geyer
164c916eb95SHarald Geyer&mmc1 {
165c916eb95SHarald Geyer	pinctrl-names = "default";
166c916eb95SHarald Geyer	pinctrl-0 = <&mmc1_pins>;
167c916eb95SHarald Geyer	vmmc-supply = <&reg_aldo2>;
168c916eb95SHarald Geyer	vqmmc-supply = <&reg_dldo4>;
169c916eb95SHarald Geyer	mmc-pwrseq = <&wifi_pwrseq>;
170c916eb95SHarald Geyer	bus-width = <4>;
171c916eb95SHarald Geyer	non-removable;
172c916eb95SHarald Geyer	status = "okay";
173c916eb95SHarald Geyer
174c916eb95SHarald Geyer	rtl8723bs: wifi@1 {
175c916eb95SHarald Geyer		reg = <1>;
176c916eb95SHarald Geyer		interrupt-parent = <&r_pio>;
177c916eb95SHarald Geyer		interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */
178c916eb95SHarald Geyer		interrupt-names = "host-wake";
179c916eb95SHarald Geyer	};
180c916eb95SHarald Geyer};
181c916eb95SHarald Geyer
182c916eb95SHarald Geyer&mmc2 {
183c916eb95SHarald Geyer	pinctrl-names = "default";
184c916eb95SHarald Geyer	pinctrl-0 = <&mmc2_pins>;
185c916eb95SHarald Geyer	vmmc-supply = <&reg_dcdc1>;
186c916eb95SHarald Geyer	vqmmc-supply = <&reg_dcdc1>;
187c916eb95SHarald Geyer	bus-width = <8>;
188c916eb95SHarald Geyer	non-removable;
189c916eb95SHarald Geyer	cap-mmc-hw-reset;
190c916eb95SHarald Geyer	status = "okay";
191c916eb95SHarald Geyer};
192c916eb95SHarald Geyer
193c916eb95SHarald Geyer&ohci1 {
194c916eb95SHarald Geyer	status = "okay";
195c916eb95SHarald Geyer};
196c916eb95SHarald Geyer
19724bd5d2cSHarald Geyer&pwm {
19824bd5d2cSHarald Geyer	status = "okay";
19924bd5d2cSHarald Geyer};
20024bd5d2cSHarald Geyer
201c916eb95SHarald Geyer&r_rsb {
202c916eb95SHarald Geyer	status = "okay";
203c916eb95SHarald Geyer
204c916eb95SHarald Geyer	axp803: pmic@3a3 {
205c916eb95SHarald Geyer		compatible = "x-powers,axp803";
206c916eb95SHarald Geyer		reg = <0x3a3>;
207c916eb95SHarald Geyer		interrupt-parent = <&r_intc>;
208c916eb95SHarald Geyer		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
209c916eb95SHarald Geyer		wakeup-source;
210c916eb95SHarald Geyer	};
211c916eb95SHarald Geyer};
212c916eb95SHarald Geyer
213c916eb95SHarald Geyer#include "axp803.dtsi"
214c916eb95SHarald Geyer
21525f6f54fSHarald Geyer&ac_power_supply {
21625f6f54fSHarald Geyer	status = "okay";
21725f6f54fSHarald Geyer};
21825f6f54fSHarald Geyer
21925f6f54fSHarald Geyer&battery_power_supply {
22025f6f54fSHarald Geyer	status = "okay";
22125f6f54fSHarald Geyer};
22225f6f54fSHarald Geyer
223c916eb95SHarald Geyer&reg_aldo1 {
224c916eb95SHarald Geyer	regulator-always-on;
225c916eb95SHarald Geyer	regulator-min-microvolt = <2800000>;
226c916eb95SHarald Geyer	regulator-max-microvolt = <2800000>;
227c916eb95SHarald Geyer	regulator-name = "vcc-pe";
228c916eb95SHarald Geyer};
229c916eb95SHarald Geyer
230c916eb95SHarald Geyer&reg_aldo2 {
231c916eb95SHarald Geyer	regulator-always-on;
232c916eb95SHarald Geyer	regulator-min-microvolt = <3300000>;
233c916eb95SHarald Geyer	regulator-max-microvolt = <3300000>;
234c916eb95SHarald Geyer	regulator-name = "vcc-pl";
235c916eb95SHarald Geyer};
236c916eb95SHarald Geyer
237c916eb95SHarald Geyer&reg_aldo3 {
238c916eb95SHarald Geyer	regulator-always-on;
239c916eb95SHarald Geyer	regulator-min-microvolt = <3000000>;
240c916eb95SHarald Geyer	regulator-max-microvolt = <3000000>;
241c916eb95SHarald Geyer	regulator-name = "vcc-pll-avcc";
242c916eb95SHarald Geyer};
243c916eb95SHarald Geyer
244c916eb95SHarald Geyer&reg_dcdc1 {
245c916eb95SHarald Geyer	regulator-always-on;
246c916eb95SHarald Geyer	regulator-min-microvolt = <3300000>;
247c916eb95SHarald Geyer	regulator-max-microvolt = <3300000>;
248c916eb95SHarald Geyer	regulator-name = "vcc-3v3";
249c916eb95SHarald Geyer};
250c916eb95SHarald Geyer
251c916eb95SHarald Geyer&reg_dcdc2 {
252c916eb95SHarald Geyer	regulator-always-on;
253c916eb95SHarald Geyer	regulator-min-microvolt = <1040000>;
254c916eb95SHarald Geyer	regulator-max-microvolt = <1300000>;
255c916eb95SHarald Geyer	regulator-name = "vdd-cpux";
256c916eb95SHarald Geyer};
257c916eb95SHarald Geyer
258c916eb95SHarald Geyer/* DCDC3 is polyphased with DCDC2 */
259c916eb95SHarald Geyer
260c916eb95SHarald Geyer&reg_dcdc5 {
261c916eb95SHarald Geyer	regulator-always-on;
262c916eb95SHarald Geyer	regulator-min-microvolt = <1500000>;
263c916eb95SHarald Geyer	regulator-max-microvolt = <1500000>;
264c916eb95SHarald Geyer	regulator-name = "vcc-ddr3";
265c916eb95SHarald Geyer};
266c916eb95SHarald Geyer
267c916eb95SHarald Geyer&reg_dcdc6 {
268c916eb95SHarald Geyer	regulator-always-on;
269c916eb95SHarald Geyer	regulator-min-microvolt = <1100000>;
270c916eb95SHarald Geyer	regulator-max-microvolt = <1100000>;
271c916eb95SHarald Geyer	regulator-name = "vdd-sys";
272c916eb95SHarald Geyer};
273c916eb95SHarald Geyer
274c916eb95SHarald Geyer&reg_dldo1 {
275c916eb95SHarald Geyer	regulator-min-microvolt = <3300000>;
276c916eb95SHarald Geyer	regulator-max-microvolt = <3300000>;
277c916eb95SHarald Geyer	regulator-name = "vcc-hdmi";
278c916eb95SHarald Geyer};
279c916eb95SHarald Geyer
280c916eb95SHarald Geyer&reg_dldo2 {
281c916eb95SHarald Geyer	regulator-min-microvolt = <2500000>;
282c916eb95SHarald Geyer	regulator-max-microvolt = <2500000>;
283c916eb95SHarald Geyer	regulator-name = "vcc-pd";
284c916eb95SHarald Geyer};
285c916eb95SHarald Geyer
286c916eb95SHarald Geyer&reg_dldo3 {
287c916eb95SHarald Geyer	regulator-min-microvolt = <1200000>;
288c916eb95SHarald Geyer	regulator-max-microvolt = <1200000>;
289e4357c82SIcenowy Zheng	regulator-name = "vdd-edp";
290c916eb95SHarald Geyer};
291c916eb95SHarald Geyer
292c916eb95SHarald Geyer&reg_dldo4 {
293c916eb95SHarald Geyer	regulator-min-microvolt = <3300000>;
294c916eb95SHarald Geyer	regulator-max-microvolt = <3300000>;
295c916eb95SHarald Geyer	regulator-name = "vcc-wifi-io";
296c916eb95SHarald Geyer};
297c916eb95SHarald Geyer
298c916eb95SHarald Geyer&reg_eldo1 {
299c916eb95SHarald Geyer	regulator-min-microvolt = <1800000>;
300c916eb95SHarald Geyer	regulator-max-microvolt = <1800000>;
301c916eb95SHarald Geyer	regulator-name = "cpvdd";
302c916eb95SHarald Geyer};
303c916eb95SHarald Geyer
304c916eb95SHarald Geyer&reg_eldo2 {
305c916eb95SHarald Geyer	regulator-min-microvolt = <1800000>;
306c916eb95SHarald Geyer	regulator-max-microvolt = <1800000>;
307c916eb95SHarald Geyer	regulator-name = "vcc-dvdd-csi";
308c916eb95SHarald Geyer};
309c916eb95SHarald Geyer
310c916eb95SHarald Geyer&reg_fldo1 {
311c916eb95SHarald Geyer	regulator-min-microvolt = <1200000>;
312c916eb95SHarald Geyer	regulator-max-microvolt = <1200000>;
313c916eb95SHarald Geyer	regulator-name = "vcc-1v2-hsic";
314c916eb95SHarald Geyer};
315c916eb95SHarald Geyer
316c916eb95SHarald Geyer/*
317062904f2SJonathan Neuschäfer * The A64 chip cannot work with this regulator off, although
318c916eb95SHarald Geyer * it seems to be only driving the AR100 core.
319c916eb95SHarald Geyer * Maybe we don't still know well about CPUs domain.
320c916eb95SHarald Geyer */
321c916eb95SHarald Geyer&reg_fldo2 {
322c916eb95SHarald Geyer	regulator-always-on;
323c916eb95SHarald Geyer	regulator-min-microvolt = <1100000>;
324c916eb95SHarald Geyer	regulator-max-microvolt = <1100000>;
325c916eb95SHarald Geyer	regulator-name = "vdd-cpus";
326c916eb95SHarald Geyer};
327c916eb95SHarald Geyer
328c916eb95SHarald Geyer&reg_rtc_ldo {
329c916eb95SHarald Geyer	regulator-name = "vcc-rtc";
330c916eb95SHarald Geyer};
331c916eb95SHarald Geyer
3325cbef9f9SIcenowy Zheng&simplefb_hdmi {
3335cbef9f9SIcenowy Zheng	vcc-hdmi-supply = <&reg_dldo1>;
3345cbef9f9SIcenowy Zheng};
3355cbef9f9SIcenowy Zheng
336439152aeSHarald Geyer&sound {
337439152aeSHarald Geyer	simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>;
338439152aeSHarald Geyer	simple-audio-card,widgets = "Headphone", "Headphone Jack",
339439152aeSHarald Geyer				    "Microphone", "Headset Microphone",
340439152aeSHarald Geyer				    "Microphone", "Internal Microphone",
341439152aeSHarald Geyer				    "Speaker", "Internal Speaker";
342439152aeSHarald Geyer	simple-audio-card,routing =
343631e6a35SSamuel Holland			"Left DAC", "DACL",
344631e6a35SSamuel Holland			"Right DAC", "DACR",
345631e6a35SSamuel Holland			"ADCL", "Left ADC",
346631e6a35SSamuel Holland			"ADCR", "Right ADC",
347439152aeSHarald Geyer			"Headphone Jack", "HP",
348439152aeSHarald Geyer			"Speaker Amp INL", "LINEOUT",
349439152aeSHarald Geyer			"Speaker Amp INR", "LINEOUT",
350439152aeSHarald Geyer			"Internal Speaker", "Speaker Amp OUTL",
351439152aeSHarald Geyer			"Internal Speaker", "Speaker Amp OUTR",
352439152aeSHarald Geyer			"Internal Microphone", "MBIAS",
353439152aeSHarald Geyer			"MIC1", "Internal Microphone",
354439152aeSHarald Geyer			"Headset Microphone", "HBIAS",
355439152aeSHarald Geyer			"MIC2", "Headset Microphone";
356439152aeSHarald Geyer	status = "okay";
357439152aeSHarald Geyer};
358439152aeSHarald Geyer
35979bc02f1STorsten Duwe&tcon0 {
36079bc02f1STorsten Duwe	pinctrl-names = "default";
36179bc02f1STorsten Duwe	pinctrl-0 = <&lcd_rgb666_pins>;
36279bc02f1STorsten Duwe
36379bc02f1STorsten Duwe	status = "okay";
36479bc02f1STorsten Duwe};
36579bc02f1STorsten Duwe
36679bc02f1STorsten Duwe&tcon0_out {
36779bc02f1STorsten Duwe	tcon0_out_anx6345: endpoint@0 {
36879bc02f1STorsten Duwe		reg = <0>;
36979bc02f1STorsten Duwe		remote-endpoint = <&anx6345_in>;
37079bc02f1STorsten Duwe	};
37179bc02f1STorsten Duwe};
37279bc02f1STorsten Duwe
373c916eb95SHarald Geyer&uart0 {
374c916eb95SHarald Geyer	pinctrl-names = "default";
375d91ebb95SChen-Yu Tsai	pinctrl-0 = <&uart0_pb_pins>;
376c916eb95SHarald Geyer	status = "okay";
377c916eb95SHarald Geyer};
378c916eb95SHarald Geyer
379c916eb95SHarald Geyer&usbphy {
380c916eb95SHarald Geyer	usb1_vbus-supply = <&reg_usb1_vbus>;
381c916eb95SHarald Geyer	status = "okay";
382c916eb95SHarald Geyer};
383