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
55e299e6ddSMaxime Ripard		led-0 {
56c916eb95SHarald Geyer			label = "teres-i:green:capslock";
57c916eb95SHarald Geyer			gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */
58c916eb95SHarald Geyer		};
59c916eb95SHarald Geyer
60e299e6ddSMaxime 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 {
142*01312f74SMaxime Ripard				reg = <0>;
143*01312f74SMaxime Ripard
14479bc02f1STorsten Duwe				anx6345_in: endpoint {
14579bc02f1STorsten Duwe					remote-endpoint = <&tcon0_out_anx6345>;
14679bc02f1STorsten Duwe				};
14779bc02f1STorsten Duwe			};
14879bc02f1STorsten Duwe		};
14979bc02f1STorsten Duwe	};
15079bc02f1STorsten Duwe};
15179bc02f1STorsten Duwe
15279bc02f1STorsten Duwe&mixer0 {
15379bc02f1STorsten Duwe	status = "okay";
154c916eb95SHarald Geyer};
155c916eb95SHarald Geyer
156c916eb95SHarald Geyer&mmc0 {
157c916eb95SHarald Geyer	pinctrl-names = "default";
158c916eb95SHarald Geyer	pinctrl-0 = <&mmc0_pins>;
159c916eb95SHarald Geyer	vmmc-supply = <&reg_dcdc1>;
160c916eb95SHarald Geyer	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
161c916eb95SHarald Geyer	disable-wp;
162c916eb95SHarald Geyer	bus-width = <4>;
163c916eb95SHarald Geyer	status = "okay";
164c916eb95SHarald Geyer};
165c916eb95SHarald Geyer
166c916eb95SHarald Geyer&mmc1 {
167c916eb95SHarald Geyer	pinctrl-names = "default";
168c916eb95SHarald Geyer	pinctrl-0 = <&mmc1_pins>;
169c916eb95SHarald Geyer	vmmc-supply = <&reg_aldo2>;
170c916eb95SHarald Geyer	vqmmc-supply = <&reg_dldo4>;
171c916eb95SHarald Geyer	mmc-pwrseq = <&wifi_pwrseq>;
172c916eb95SHarald Geyer	bus-width = <4>;
173c916eb95SHarald Geyer	non-removable;
174c916eb95SHarald Geyer	status = "okay";
175c916eb95SHarald Geyer
176c916eb95SHarald Geyer	rtl8723bs: wifi@1 {
177c916eb95SHarald Geyer		reg = <1>;
178c916eb95SHarald Geyer		interrupt-parent = <&r_pio>;
179c916eb95SHarald Geyer		interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */
180c916eb95SHarald Geyer		interrupt-names = "host-wake";
181c916eb95SHarald Geyer	};
182c916eb95SHarald Geyer};
183c916eb95SHarald Geyer
184c916eb95SHarald Geyer&mmc2 {
185c916eb95SHarald Geyer	pinctrl-names = "default";
186c916eb95SHarald Geyer	pinctrl-0 = <&mmc2_pins>;
187c916eb95SHarald Geyer	vmmc-supply = <&reg_dcdc1>;
188c916eb95SHarald Geyer	vqmmc-supply = <&reg_dcdc1>;
189c916eb95SHarald Geyer	bus-width = <8>;
190c916eb95SHarald Geyer	non-removable;
191c916eb95SHarald Geyer	cap-mmc-hw-reset;
192c916eb95SHarald Geyer	status = "okay";
193c916eb95SHarald Geyer};
194c916eb95SHarald Geyer
195c916eb95SHarald Geyer&ohci1 {
196c916eb95SHarald Geyer	status = "okay";
197c916eb95SHarald Geyer};
198c916eb95SHarald Geyer
19924bd5d2cSHarald Geyer&pwm {
20024bd5d2cSHarald Geyer	status = "okay";
20124bd5d2cSHarald Geyer};
20224bd5d2cSHarald Geyer
203c916eb95SHarald Geyer&r_rsb {
204c916eb95SHarald Geyer	status = "okay";
205c916eb95SHarald Geyer
206c916eb95SHarald Geyer	axp803: pmic@3a3 {
207c916eb95SHarald Geyer		compatible = "x-powers,axp803";
208c916eb95SHarald Geyer		reg = <0x3a3>;
209c916eb95SHarald Geyer		interrupt-parent = <&r_intc>;
21073088dfeSSamuel Holland		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>;
211c916eb95SHarald Geyer		wakeup-source;
212c916eb95SHarald Geyer	};
213c916eb95SHarald Geyer};
214c916eb95SHarald Geyer
215c916eb95SHarald Geyer#include "axp803.dtsi"
216c916eb95SHarald Geyer
21725f6f54fSHarald Geyer&ac_power_supply {
21825f6f54fSHarald Geyer	status = "okay";
21925f6f54fSHarald Geyer};
22025f6f54fSHarald Geyer
22125f6f54fSHarald Geyer&battery_power_supply {
22225f6f54fSHarald Geyer	status = "okay";
22325f6f54fSHarald Geyer};
22425f6f54fSHarald Geyer
225c916eb95SHarald Geyer&reg_aldo1 {
226c916eb95SHarald Geyer	regulator-always-on;
227c916eb95SHarald Geyer	regulator-min-microvolt = <2800000>;
228c916eb95SHarald Geyer	regulator-max-microvolt = <2800000>;
229c916eb95SHarald Geyer	regulator-name = "vcc-pe";
230c916eb95SHarald Geyer};
231c916eb95SHarald Geyer
232c916eb95SHarald Geyer&reg_aldo2 {
233c916eb95SHarald Geyer	regulator-always-on;
234c916eb95SHarald Geyer	regulator-min-microvolt = <3300000>;
235c916eb95SHarald Geyer	regulator-max-microvolt = <3300000>;
236c916eb95SHarald Geyer	regulator-name = "vcc-pl";
237c916eb95SHarald Geyer};
238c916eb95SHarald Geyer
239c916eb95SHarald Geyer&reg_aldo3 {
240c916eb95SHarald Geyer	regulator-always-on;
241c916eb95SHarald Geyer	regulator-min-microvolt = <3000000>;
242c916eb95SHarald Geyer	regulator-max-microvolt = <3000000>;
243c916eb95SHarald Geyer	regulator-name = "vcc-pll-avcc";
244c916eb95SHarald Geyer};
245c916eb95SHarald Geyer
246c916eb95SHarald Geyer&reg_dcdc1 {
247c916eb95SHarald Geyer	regulator-always-on;
248c916eb95SHarald Geyer	regulator-min-microvolt = <3300000>;
249c916eb95SHarald Geyer	regulator-max-microvolt = <3300000>;
250c916eb95SHarald Geyer	regulator-name = "vcc-3v3";
251c916eb95SHarald Geyer};
252c916eb95SHarald Geyer
253c916eb95SHarald Geyer&reg_dcdc2 {
254c916eb95SHarald Geyer	regulator-always-on;
255c916eb95SHarald Geyer	regulator-min-microvolt = <1040000>;
256c916eb95SHarald Geyer	regulator-max-microvolt = <1300000>;
257c916eb95SHarald Geyer	regulator-name = "vdd-cpux";
258c916eb95SHarald Geyer};
259c916eb95SHarald Geyer
260c916eb95SHarald Geyer/* DCDC3 is polyphased with DCDC2 */
261c916eb95SHarald Geyer
262c916eb95SHarald Geyer&reg_dcdc5 {
263c916eb95SHarald Geyer	regulator-always-on;
264c916eb95SHarald Geyer	regulator-min-microvolt = <1500000>;
265c916eb95SHarald Geyer	regulator-max-microvolt = <1500000>;
266c916eb95SHarald Geyer	regulator-name = "vcc-ddr3";
267c916eb95SHarald Geyer};
268c916eb95SHarald Geyer
269c916eb95SHarald Geyer&reg_dcdc6 {
270c916eb95SHarald Geyer	regulator-always-on;
271c916eb95SHarald Geyer	regulator-min-microvolt = <1100000>;
272c916eb95SHarald Geyer	regulator-max-microvolt = <1100000>;
273c916eb95SHarald Geyer	regulator-name = "vdd-sys";
274c916eb95SHarald Geyer};
275c916eb95SHarald Geyer
276c916eb95SHarald Geyer&reg_dldo1 {
277c916eb95SHarald Geyer	regulator-min-microvolt = <3300000>;
278c916eb95SHarald Geyer	regulator-max-microvolt = <3300000>;
279c916eb95SHarald Geyer	regulator-name = "vcc-hdmi";
280c916eb95SHarald Geyer};
281c916eb95SHarald Geyer
282c916eb95SHarald Geyer&reg_dldo2 {
283c916eb95SHarald Geyer	regulator-min-microvolt = <2500000>;
284c916eb95SHarald Geyer	regulator-max-microvolt = <2500000>;
285c916eb95SHarald Geyer	regulator-name = "vcc-pd";
286c916eb95SHarald Geyer};
287c916eb95SHarald Geyer
288c916eb95SHarald Geyer&reg_dldo3 {
289c916eb95SHarald Geyer	regulator-min-microvolt = <1200000>;
290c916eb95SHarald Geyer	regulator-max-microvolt = <1200000>;
291e4357c82SIcenowy Zheng	regulator-name = "vdd-edp";
292c916eb95SHarald Geyer};
293c916eb95SHarald Geyer
294c916eb95SHarald Geyer&reg_dldo4 {
295c916eb95SHarald Geyer	regulator-min-microvolt = <3300000>;
296c916eb95SHarald Geyer	regulator-max-microvolt = <3300000>;
297c916eb95SHarald Geyer	regulator-name = "vcc-wifi-io";
298c916eb95SHarald Geyer};
299c916eb95SHarald Geyer
300c916eb95SHarald Geyer&reg_eldo1 {
301c916eb95SHarald Geyer	regulator-min-microvolt = <1800000>;
302c916eb95SHarald Geyer	regulator-max-microvolt = <1800000>;
303c916eb95SHarald Geyer	regulator-name = "cpvdd";
304c916eb95SHarald Geyer};
305c916eb95SHarald Geyer
306c916eb95SHarald Geyer&reg_eldo2 {
307c916eb95SHarald Geyer	regulator-min-microvolt = <1800000>;
308c916eb95SHarald Geyer	regulator-max-microvolt = <1800000>;
309c916eb95SHarald Geyer	regulator-name = "vcc-dvdd-csi";
310c916eb95SHarald Geyer};
311c916eb95SHarald Geyer
312c916eb95SHarald Geyer&reg_fldo1 {
313c916eb95SHarald Geyer	regulator-min-microvolt = <1200000>;
314c916eb95SHarald Geyer	regulator-max-microvolt = <1200000>;
315c916eb95SHarald Geyer	regulator-name = "vcc-1v2-hsic";
316c916eb95SHarald Geyer};
317c916eb95SHarald Geyer
318c916eb95SHarald Geyer/*
319062904f2SJonathan Neuschäfer * The A64 chip cannot work with this regulator off, although
320c916eb95SHarald Geyer * it seems to be only driving the AR100 core.
321c916eb95SHarald Geyer * Maybe we don't still know well about CPUs domain.
322c916eb95SHarald Geyer */
323c916eb95SHarald Geyer&reg_fldo2 {
324c916eb95SHarald Geyer	regulator-always-on;
325c916eb95SHarald Geyer	regulator-min-microvolt = <1100000>;
326c916eb95SHarald Geyer	regulator-max-microvolt = <1100000>;
327c916eb95SHarald Geyer	regulator-name = "vdd-cpus";
328c916eb95SHarald Geyer};
329c916eb95SHarald Geyer
330c916eb95SHarald Geyer&reg_rtc_ldo {
331c916eb95SHarald Geyer	regulator-name = "vcc-rtc";
332c916eb95SHarald Geyer};
333c916eb95SHarald Geyer
3345cbef9f9SIcenowy Zheng&simplefb_hdmi {
3355cbef9f9SIcenowy Zheng	vcc-hdmi-supply = <&reg_dldo1>;
3365cbef9f9SIcenowy Zheng};
3375cbef9f9SIcenowy Zheng
338439152aeSHarald Geyer&sound {
339439152aeSHarald Geyer	simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>;
340439152aeSHarald Geyer	simple-audio-card,widgets = "Headphone", "Headphone Jack",
341439152aeSHarald Geyer				    "Microphone", "Headset Microphone",
342439152aeSHarald Geyer				    "Microphone", "Internal Microphone",
343439152aeSHarald Geyer				    "Speaker", "Internal Speaker";
344439152aeSHarald Geyer	simple-audio-card,routing =
345631e6a35SSamuel Holland			"Left DAC", "DACL",
346631e6a35SSamuel Holland			"Right DAC", "DACR",
347631e6a35SSamuel Holland			"ADCL", "Left ADC",
348631e6a35SSamuel Holland			"ADCR", "Right ADC",
349439152aeSHarald Geyer			"Headphone Jack", "HP",
350439152aeSHarald Geyer			"Speaker Amp INL", "LINEOUT",
351439152aeSHarald Geyer			"Speaker Amp INR", "LINEOUT",
352439152aeSHarald Geyer			"Internal Speaker", "Speaker Amp OUTL",
353439152aeSHarald Geyer			"Internal Speaker", "Speaker Amp OUTR",
354439152aeSHarald Geyer			"Internal Microphone", "MBIAS",
355439152aeSHarald Geyer			"MIC1", "Internal Microphone",
356439152aeSHarald Geyer			"Headset Microphone", "HBIAS",
357439152aeSHarald Geyer			"MIC2", "Headset Microphone";
358439152aeSHarald Geyer	status = "okay";
359439152aeSHarald Geyer};
360439152aeSHarald Geyer
36179bc02f1STorsten Duwe&tcon0 {
36279bc02f1STorsten Duwe	pinctrl-names = "default";
36379bc02f1STorsten Duwe	pinctrl-0 = <&lcd_rgb666_pins>;
36479bc02f1STorsten Duwe
36579bc02f1STorsten Duwe	status = "okay";
36679bc02f1STorsten Duwe};
36779bc02f1STorsten Duwe
36879bc02f1STorsten Duwe&tcon0_out {
36979bc02f1STorsten Duwe	tcon0_out_anx6345: endpoint@0 {
37079bc02f1STorsten Duwe		reg = <0>;
37179bc02f1STorsten Duwe		remote-endpoint = <&anx6345_in>;
37279bc02f1STorsten Duwe	};
37379bc02f1STorsten Duwe};
37479bc02f1STorsten Duwe
375c916eb95SHarald Geyer&uart0 {
376c916eb95SHarald Geyer	pinctrl-names = "default";
377d91ebb95SChen-Yu Tsai	pinctrl-0 = <&uart0_pb_pins>;
378c916eb95SHarald Geyer	status = "okay";
379c916eb95SHarald Geyer};
380c916eb95SHarald Geyer
381c916eb95SHarald Geyer&usbphy {
382c916eb95SHarald Geyer	usb1_vbus-supply = <&reg_usb1_vbus>;
383c916eb95SHarald Geyer	status = "okay";
384c916eb95SHarald Geyer};
385