1c916eb95SHarald Geyer/*
2c916eb95SHarald Geyer * Copyright (C) Harald Geyer <harald@ccbib.org>
3c916eb95SHarald Geyer * based on sun50i-a64-olinuxino.dts by Jagan Teki <jteki@openedev.com>
4c916eb95SHarald Geyer *
5c916eb95SHarald Geyer * SPDX-License-Identifier: (GPL-2.0 OR MIT)
6c916eb95SHarald Geyer */
7c916eb95SHarald Geyer
8c916eb95SHarald Geyer/dts-v1/;
9c916eb95SHarald Geyer
10c916eb95SHarald Geyer#include "sun50i-a64.dtsi"
11c916eb95SHarald Geyer
12c916eb95SHarald Geyer#include <dt-bindings/gpio/gpio.h>
13c916eb95SHarald Geyer#include <dt-bindings/input/input.h>
14c916eb95SHarald Geyer#include <dt-bindings/pwm/pwm.h>
15c916eb95SHarald Geyer
16c916eb95SHarald Geyer/ {
17c916eb95SHarald Geyer	model = "Olimex A64 Teres-I";
18c916eb95SHarald Geyer	compatible = "olimex,a64-teres-i", "allwinner,sun50i-a64";
19c916eb95SHarald Geyer
20c916eb95SHarald Geyer	aliases {
21c916eb95SHarald Geyer		serial0 = &uart0;
22c916eb95SHarald Geyer	};
23c916eb95SHarald Geyer
2424bd5d2cSHarald Geyer	backlight: backlight {
2524bd5d2cSHarald Geyer		compatible = "pwm-backlight";
2624bd5d2cSHarald Geyer		pwms = <&pwm 0 50000 0>;
2724bd5d2cSHarald Geyer		power-supply = <&reg_dcdc1>;
2824bd5d2cSHarald Geyer		brightness-levels = <0 5 7 10 14 20 28 40 56 80 112>;
2924bd5d2cSHarald Geyer		default-brightness-level = <5>;
3024bd5d2cSHarald Geyer		enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */
3124bd5d2cSHarald Geyer	};
3224bd5d2cSHarald Geyer
33c916eb95SHarald Geyer	chosen {
34c916eb95SHarald Geyer		stdout-path = "serial0:115200n8";
35c916eb95SHarald Geyer
36c916eb95SHarald Geyer		framebuffer-lcd {
37c916eb95SHarald Geyer			eDP25-supply = <&reg_dldo2>;
38c916eb95SHarald Geyer			eDP12-supply = <&reg_dldo3>;
39c916eb95SHarald Geyer		};
40c916eb95SHarald Geyer	};
41c916eb95SHarald Geyer
42c916eb95SHarald Geyer	gpio-keys {
43c916eb95SHarald Geyer		compatible = "gpio-keys";
44c916eb95SHarald Geyer
45c916eb95SHarald Geyer		lid-switch {
46c916eb95SHarald Geyer			label = "Lid Switch";
47c916eb95SHarald Geyer			gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */
48c916eb95SHarald Geyer			linux,input-type = <EV_SW>;
49c916eb95SHarald Geyer			linux,code = <SW_LID>;
5048f3e7bfSIcenowy Zheng			wakeup-source;
51c916eb95SHarald Geyer		};
52c916eb95SHarald Geyer	};
53c916eb95SHarald Geyer
54c916eb95SHarald Geyer	leds {
55c916eb95SHarald Geyer		compatible = "gpio-leds";
56c916eb95SHarald Geyer
57c916eb95SHarald Geyer		capslock {
58c916eb95SHarald Geyer			label = "teres-i:green:capslock";
59c916eb95SHarald Geyer			gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */
60c916eb95SHarald Geyer		};
61c916eb95SHarald Geyer
62c916eb95SHarald Geyer		numlock {
63c916eb95SHarald Geyer			label = "teres-i:green:numlock";
64c916eb95SHarald Geyer			gpios = <&pio 2 4 GPIO_ACTIVE_HIGH>; /* PC4 */
65c916eb95SHarald Geyer		};
66c916eb95SHarald Geyer	};
67c916eb95SHarald Geyer
68c916eb95SHarald Geyer	reg_usb1_vbus: usb1-vbus {
69c916eb95SHarald Geyer		compatible = "regulator-fixed";
70c916eb95SHarald Geyer		regulator-name = "usb1-vbus";
71c916eb95SHarald Geyer		regulator-min-microvolt = <5000000>;
72c916eb95SHarald Geyer		regulator-max-microvolt = <5000000>;
73c916eb95SHarald Geyer		enable-active-high;
74c916eb95SHarald Geyer		gpio = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */
75c916eb95SHarald Geyer		status = "okay";
76c916eb95SHarald Geyer	};
77c916eb95SHarald Geyer
78c916eb95SHarald Geyer	wifi_pwrseq: wifi_pwrseq {
79c916eb95SHarald Geyer		compatible = "mmc-pwrseq-simple";
80c916eb95SHarald Geyer		reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
81c916eb95SHarald Geyer	};
82439152aeSHarald Geyer
83439152aeSHarald Geyer	speaker_amp: audio-amplifier {
84439152aeSHarald Geyer		compatible = "simple-audio-amplifier";
85439152aeSHarald Geyer		enable-gpios = <&r_pio 0 12 GPIO_ACTIVE_HIGH>; /* PL12 */
86439152aeSHarald Geyer		sound-name-prefix = "Speaker Amp";
87439152aeSHarald Geyer	};
88439152aeSHarald Geyer};
89439152aeSHarald Geyer
90439152aeSHarald Geyer&codec {
91439152aeSHarald Geyer	status = "okay";
92439152aeSHarald Geyer};
93439152aeSHarald Geyer
94439152aeSHarald Geyer&codec_analog {
95439152aeSHarald Geyer	cpvdd-supply = <&reg_eldo1>;
96439152aeSHarald Geyer	status = "okay";
97439152aeSHarald Geyer};
98439152aeSHarald Geyer
99439152aeSHarald Geyer&dai {
100439152aeSHarald Geyer	status = "okay";
101c916eb95SHarald Geyer};
102c916eb95SHarald Geyer
10379bc02f1STorsten Duwe&de {
10479bc02f1STorsten Duwe	status = "okay";
10579bc02f1STorsten Duwe};
10679bc02f1STorsten Duwe
107c916eb95SHarald Geyer&ehci1 {
108c916eb95SHarald Geyer	status = "okay";
109c916eb95SHarald Geyer};
110c916eb95SHarald Geyer
111c916eb95SHarald Geyer
112c916eb95SHarald Geyer&i2c0 {
113c916eb95SHarald Geyer	clock-frequency = <100000>;
114c916eb95SHarald Geyer	status = "okay";
11579bc02f1STorsten Duwe
11679bc02f1STorsten Duwe	anx6345: anx6345@38 {
11779bc02f1STorsten Duwe		compatible = "analogix,anx6345";
11879bc02f1STorsten Duwe		reg = <0x38>;
11979bc02f1STorsten Duwe		reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */
12079bc02f1STorsten Duwe		dvdd25-supply = <&reg_dldo2>;
12179bc02f1STorsten Duwe		dvdd12-supply = <&reg_dldo3>;
12279bc02f1STorsten Duwe
12379bc02f1STorsten Duwe		ports {
12479bc02f1STorsten Duwe			#address-cells = <1>;
12579bc02f1STorsten Duwe			#size-cells = <0>;
12679bc02f1STorsten Duwe
12779bc02f1STorsten Duwe			port@0 {
12879bc02f1STorsten Duwe				anx6345_in: endpoint {
12979bc02f1STorsten Duwe					remote-endpoint = <&tcon0_out_anx6345>;
13079bc02f1STorsten Duwe				};
13179bc02f1STorsten Duwe			};
13279bc02f1STorsten Duwe		};
13379bc02f1STorsten Duwe	};
13479bc02f1STorsten Duwe};
13579bc02f1STorsten Duwe
13679bc02f1STorsten Duwe&mixer0 {
13779bc02f1STorsten Duwe	status = "okay";
138c916eb95SHarald Geyer};
139c916eb95SHarald Geyer
140c916eb95SHarald Geyer&mmc0 {
141c916eb95SHarald Geyer	pinctrl-names = "default";
142c916eb95SHarald Geyer	pinctrl-0 = <&mmc0_pins>;
143c916eb95SHarald Geyer	vmmc-supply = <&reg_dcdc1>;
144c916eb95SHarald Geyer	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
145c916eb95SHarald Geyer	disable-wp;
146c916eb95SHarald Geyer	bus-width = <4>;
147c916eb95SHarald Geyer	status = "okay";
148c916eb95SHarald Geyer};
149c916eb95SHarald Geyer
150c916eb95SHarald Geyer&mmc1 {
151c916eb95SHarald Geyer	pinctrl-names = "default";
152c916eb95SHarald Geyer	pinctrl-0 = <&mmc1_pins>;
153c916eb95SHarald Geyer	vmmc-supply = <&reg_aldo2>;
154c916eb95SHarald Geyer	vqmmc-supply = <&reg_dldo4>;
155c916eb95SHarald Geyer	mmc-pwrseq = <&wifi_pwrseq>;
156c916eb95SHarald Geyer	bus-width = <4>;
157c916eb95SHarald Geyer	non-removable;
158c916eb95SHarald Geyer	status = "okay";
159c916eb95SHarald Geyer
160c916eb95SHarald Geyer	rtl8723bs: wifi@1 {
161c916eb95SHarald Geyer		reg = <1>;
162c916eb95SHarald Geyer		interrupt-parent = <&r_pio>;
163c916eb95SHarald Geyer		interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */
164c916eb95SHarald Geyer		interrupt-names = "host-wake";
165c916eb95SHarald Geyer	};
166c916eb95SHarald Geyer};
167c916eb95SHarald Geyer
168c916eb95SHarald Geyer&mmc2 {
169c916eb95SHarald Geyer	pinctrl-names = "default";
170c916eb95SHarald Geyer	pinctrl-0 = <&mmc2_pins>;
171c916eb95SHarald Geyer	vmmc-supply = <&reg_dcdc1>;
172c916eb95SHarald Geyer	vqmmc-supply = <&reg_dcdc1>;
173c916eb95SHarald Geyer	bus-width = <8>;
174c916eb95SHarald Geyer	non-removable;
175c916eb95SHarald Geyer	cap-mmc-hw-reset;
176c916eb95SHarald Geyer	status = "okay";
177c916eb95SHarald Geyer};
178c916eb95SHarald Geyer
179c916eb95SHarald Geyer&ohci1 {
180c916eb95SHarald Geyer	status = "okay";
181c916eb95SHarald Geyer};
182c916eb95SHarald Geyer
18324bd5d2cSHarald Geyer&pwm {
18424bd5d2cSHarald Geyer	status = "okay";
18524bd5d2cSHarald Geyer};
18624bd5d2cSHarald Geyer
187c916eb95SHarald Geyer&r_rsb {
188c916eb95SHarald Geyer	status = "okay";
189c916eb95SHarald Geyer
190c916eb95SHarald Geyer	axp803: pmic@3a3 {
191c916eb95SHarald Geyer		compatible = "x-powers,axp803";
192c916eb95SHarald Geyer		reg = <0x3a3>;
193c916eb95SHarald Geyer		interrupt-parent = <&r_intc>;
194c916eb95SHarald Geyer		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
195c916eb95SHarald Geyer		wakeup-source;
196c916eb95SHarald Geyer	};
197c916eb95SHarald Geyer};
198c916eb95SHarald Geyer
199c916eb95SHarald Geyer#include "axp803.dtsi"
200c916eb95SHarald Geyer
20125f6f54fSHarald Geyer&ac_power_supply {
20225f6f54fSHarald Geyer	status = "okay";
20325f6f54fSHarald Geyer};
20425f6f54fSHarald Geyer
20525f6f54fSHarald Geyer&battery_power_supply {
20625f6f54fSHarald Geyer	status = "okay";
20725f6f54fSHarald Geyer};
20825f6f54fSHarald Geyer
209c916eb95SHarald Geyer&reg_aldo1 {
210c916eb95SHarald Geyer	regulator-always-on;
211c916eb95SHarald Geyer	regulator-min-microvolt = <2800000>;
212c916eb95SHarald Geyer	regulator-max-microvolt = <2800000>;
213c916eb95SHarald Geyer	regulator-name = "vcc-pe";
214c916eb95SHarald Geyer};
215c916eb95SHarald Geyer
216c916eb95SHarald Geyer&reg_aldo2 {
217c916eb95SHarald Geyer	regulator-always-on;
218c916eb95SHarald Geyer	regulator-min-microvolt = <3300000>;
219c916eb95SHarald Geyer	regulator-max-microvolt = <3300000>;
220c916eb95SHarald Geyer	regulator-name = "vcc-pl";
221c916eb95SHarald Geyer};
222c916eb95SHarald Geyer
223c916eb95SHarald Geyer&reg_aldo3 {
224c916eb95SHarald Geyer	regulator-always-on;
225c916eb95SHarald Geyer	regulator-min-microvolt = <3000000>;
226c916eb95SHarald Geyer	regulator-max-microvolt = <3000000>;
227c916eb95SHarald Geyer	regulator-name = "vcc-pll-avcc";
228c916eb95SHarald Geyer};
229c916eb95SHarald Geyer
230c916eb95SHarald Geyer&reg_dcdc1 {
231c916eb95SHarald Geyer	regulator-always-on;
232c916eb95SHarald Geyer	regulator-min-microvolt = <3300000>;
233c916eb95SHarald Geyer	regulator-max-microvolt = <3300000>;
234c916eb95SHarald Geyer	regulator-name = "vcc-3v3";
235c916eb95SHarald Geyer};
236c916eb95SHarald Geyer
237c916eb95SHarald Geyer&reg_dcdc2 {
238c916eb95SHarald Geyer	regulator-always-on;
239c916eb95SHarald Geyer	regulator-min-microvolt = <1040000>;
240c916eb95SHarald Geyer	regulator-max-microvolt = <1300000>;
241c916eb95SHarald Geyer	regulator-name = "vdd-cpux";
242c916eb95SHarald Geyer};
243c916eb95SHarald Geyer
244c916eb95SHarald Geyer/* DCDC3 is polyphased with DCDC2 */
245c916eb95SHarald Geyer
246c916eb95SHarald Geyer&reg_dcdc5 {
247c916eb95SHarald Geyer	regulator-always-on;
248c916eb95SHarald Geyer	regulator-min-microvolt = <1500000>;
249c916eb95SHarald Geyer	regulator-max-microvolt = <1500000>;
250c916eb95SHarald Geyer	regulator-name = "vcc-ddr3";
251c916eb95SHarald Geyer};
252c916eb95SHarald Geyer
253c916eb95SHarald Geyer&reg_dcdc6 {
254c916eb95SHarald Geyer	regulator-always-on;
255c916eb95SHarald Geyer	regulator-min-microvolt = <1100000>;
256c916eb95SHarald Geyer	regulator-max-microvolt = <1100000>;
257c916eb95SHarald Geyer	regulator-name = "vdd-sys";
258c916eb95SHarald Geyer};
259c916eb95SHarald Geyer
260c916eb95SHarald Geyer&reg_dldo1 {
261c916eb95SHarald Geyer	regulator-min-microvolt = <3300000>;
262c916eb95SHarald Geyer	regulator-max-microvolt = <3300000>;
263c916eb95SHarald Geyer	regulator-name = "vcc-hdmi";
264c916eb95SHarald Geyer};
265c916eb95SHarald Geyer
266c916eb95SHarald Geyer&reg_dldo2 {
267c916eb95SHarald Geyer	regulator-min-microvolt = <2500000>;
268c916eb95SHarald Geyer	regulator-max-microvolt = <2500000>;
269c916eb95SHarald Geyer	regulator-name = "vcc-pd";
270c916eb95SHarald Geyer};
271c916eb95SHarald Geyer
272c916eb95SHarald Geyer&reg_dldo3 {
273c916eb95SHarald Geyer	regulator-min-microvolt = <1200000>;
274c916eb95SHarald Geyer	regulator-max-microvolt = <1200000>;
275e4357c82SIcenowy Zheng	regulator-name = "vdd-edp";
276c916eb95SHarald Geyer};
277c916eb95SHarald Geyer
278c916eb95SHarald Geyer&reg_dldo4 {
279c916eb95SHarald Geyer	regulator-min-microvolt = <3300000>;
280c916eb95SHarald Geyer	regulator-max-microvolt = <3300000>;
281c916eb95SHarald Geyer	regulator-name = "vcc-wifi-io";
282c916eb95SHarald Geyer};
283c916eb95SHarald Geyer
284c916eb95SHarald Geyer&reg_eldo1 {
285c916eb95SHarald Geyer	regulator-min-microvolt = <1800000>;
286c916eb95SHarald Geyer	regulator-max-microvolt = <1800000>;
287c916eb95SHarald Geyer	regulator-name = "cpvdd";
288c916eb95SHarald Geyer};
289c916eb95SHarald Geyer
290c916eb95SHarald Geyer&reg_eldo2 {
291c916eb95SHarald Geyer	regulator-min-microvolt = <1800000>;
292c916eb95SHarald Geyer	regulator-max-microvolt = <1800000>;
293c916eb95SHarald Geyer	regulator-name = "vcc-dvdd-csi";
294c916eb95SHarald Geyer};
295c916eb95SHarald Geyer
296c916eb95SHarald Geyer&reg_fldo1 {
297c916eb95SHarald Geyer	regulator-min-microvolt = <1200000>;
298c916eb95SHarald Geyer	regulator-max-microvolt = <1200000>;
299c916eb95SHarald Geyer	regulator-name = "vcc-1v2-hsic";
300c916eb95SHarald Geyer};
301c916eb95SHarald Geyer
302c916eb95SHarald Geyer/*
303062904f2SJonathan Neuschäfer * The A64 chip cannot work with this regulator off, although
304c916eb95SHarald Geyer * it seems to be only driving the AR100 core.
305c916eb95SHarald Geyer * Maybe we don't still know well about CPUs domain.
306c916eb95SHarald Geyer */
307c916eb95SHarald Geyer&reg_fldo2 {
308c916eb95SHarald Geyer	regulator-always-on;
309c916eb95SHarald Geyer	regulator-min-microvolt = <1100000>;
310c916eb95SHarald Geyer	regulator-max-microvolt = <1100000>;
311c916eb95SHarald Geyer	regulator-name = "vdd-cpus";
312c916eb95SHarald Geyer};
313c916eb95SHarald Geyer
314c916eb95SHarald Geyer&reg_rtc_ldo {
315c916eb95SHarald Geyer	regulator-name = "vcc-rtc";
316c916eb95SHarald Geyer};
317c916eb95SHarald Geyer
3185cbef9f9SIcenowy Zheng&simplefb_hdmi {
3195cbef9f9SIcenowy Zheng	vcc-hdmi-supply = <&reg_dldo1>;
3205cbef9f9SIcenowy Zheng};
3215cbef9f9SIcenowy Zheng
322439152aeSHarald Geyer&sound {
323439152aeSHarald Geyer	simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>;
324439152aeSHarald Geyer	simple-audio-card,widgets = "Headphone", "Headphone Jack",
325439152aeSHarald Geyer				    "Microphone", "Headset Microphone",
326439152aeSHarald Geyer				    "Microphone", "Internal Microphone",
327439152aeSHarald Geyer				    "Speaker", "Internal Speaker";
328439152aeSHarald Geyer	simple-audio-card,routing =
329439152aeSHarald Geyer			"Left DAC", "AIF1 Slot 0 Left",
330439152aeSHarald Geyer			"Right DAC", "AIF1 Slot 0 Right",
331439152aeSHarald Geyer			"AIF1 Slot 0 Left ADC", "Left ADC",
332439152aeSHarald Geyer			"AIF1 Slot 0 Right ADC", "Right ADC",
333439152aeSHarald Geyer			"Headphone Jack", "HP",
334439152aeSHarald Geyer			"Speaker Amp INL", "LINEOUT",
335439152aeSHarald Geyer			"Speaker Amp INR", "LINEOUT",
336439152aeSHarald Geyer			"Internal Speaker", "Speaker Amp OUTL",
337439152aeSHarald Geyer			"Internal Speaker", "Speaker Amp OUTR",
338439152aeSHarald Geyer			"Internal Microphone", "MBIAS",
339439152aeSHarald Geyer			"MIC1", "Internal Microphone",
340439152aeSHarald Geyer			"Headset Microphone", "HBIAS",
341439152aeSHarald Geyer			"MIC2", "Headset Microphone";
342439152aeSHarald Geyer	status = "okay";
343439152aeSHarald Geyer};
344439152aeSHarald Geyer
34579bc02f1STorsten Duwe&tcon0 {
34679bc02f1STorsten Duwe	pinctrl-names = "default";
34779bc02f1STorsten Duwe	pinctrl-0 = <&lcd_rgb666_pins>;
34879bc02f1STorsten Duwe
34979bc02f1STorsten Duwe	status = "okay";
35079bc02f1STorsten Duwe};
35179bc02f1STorsten Duwe
35279bc02f1STorsten Duwe&tcon0_out {
35379bc02f1STorsten Duwe	tcon0_out_anx6345: endpoint@0 {
35479bc02f1STorsten Duwe		reg = <0>;
35579bc02f1STorsten Duwe		remote-endpoint = <&anx6345_in>;
35679bc02f1STorsten Duwe	};
35779bc02f1STorsten Duwe};
35879bc02f1STorsten Duwe
359c916eb95SHarald Geyer&uart0 {
360c916eb95SHarald Geyer	pinctrl-names = "default";
361d91ebb95SChen-Yu Tsai	pinctrl-0 = <&uart0_pb_pins>;
362c916eb95SHarald Geyer	status = "okay";
363c916eb95SHarald Geyer};
364c916eb95SHarald Geyer
365c916eb95SHarald Geyer&usbphy {
366c916eb95SHarald Geyer	usb1_vbus-supply = <&reg_usb1_vbus>;
367c916eb95SHarald Geyer	status = "okay";
368c916eb95SHarald Geyer};
369