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	};
82c916eb95SHarald Geyer};
83c916eb95SHarald Geyer
84c916eb95SHarald Geyer&ehci1 {
85c916eb95SHarald Geyer	status = "okay";
86c916eb95SHarald Geyer};
87c916eb95SHarald Geyer
88c916eb95SHarald Geyer
89c916eb95SHarald Geyer/* The ANX6345 eDP-bridge is on i2c0. There is no linux (mainline)
90c916eb95SHarald Geyer * driver for this chip at the moment, the bootloader initializes it.
91c916eb95SHarald Geyer * However it can be accessed with the i2c-dev driver from user space.
92c916eb95SHarald Geyer */
93c916eb95SHarald Geyer&i2c0 {
94c916eb95SHarald Geyer	clock-frequency = <100000>;
95c916eb95SHarald Geyer	pinctrl-names = "default";
96c916eb95SHarald Geyer	pinctrl-0 = <&i2c0_pins>;
97c916eb95SHarald Geyer	status = "okay";
98c916eb95SHarald Geyer};
99c916eb95SHarald Geyer
100c916eb95SHarald Geyer&mmc0 {
101c916eb95SHarald Geyer	pinctrl-names = "default";
102c916eb95SHarald Geyer	pinctrl-0 = <&mmc0_pins>;
103c916eb95SHarald Geyer	vmmc-supply = <&reg_dcdc1>;
104c916eb95SHarald Geyer	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
105c916eb95SHarald Geyer	disable-wp;
106c916eb95SHarald Geyer	bus-width = <4>;
107c916eb95SHarald Geyer	status = "okay";
108c916eb95SHarald Geyer};
109c916eb95SHarald Geyer
110c916eb95SHarald Geyer&mmc1 {
111c916eb95SHarald Geyer	pinctrl-names = "default";
112c916eb95SHarald Geyer	pinctrl-0 = <&mmc1_pins>;
113c916eb95SHarald Geyer	vmmc-supply = <&reg_aldo2>;
114c916eb95SHarald Geyer	vqmmc-supply = <&reg_dldo4>;
115c916eb95SHarald Geyer	mmc-pwrseq = <&wifi_pwrseq>;
116c916eb95SHarald Geyer	bus-width = <4>;
117c916eb95SHarald Geyer	non-removable;
118c916eb95SHarald Geyer	status = "okay";
119c916eb95SHarald Geyer
120c916eb95SHarald Geyer	rtl8723bs: wifi@1 {
121c916eb95SHarald Geyer		reg = <1>;
122c916eb95SHarald Geyer		interrupt-parent = <&r_pio>;
123c916eb95SHarald Geyer		interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */
124c916eb95SHarald Geyer		interrupt-names = "host-wake";
125c916eb95SHarald Geyer	};
126c916eb95SHarald Geyer};
127c916eb95SHarald Geyer
128c916eb95SHarald Geyer&mmc2 {
129c916eb95SHarald Geyer	pinctrl-names = "default";
130c916eb95SHarald Geyer	pinctrl-0 = <&mmc2_pins>;
131c916eb95SHarald Geyer	vmmc-supply = <&reg_dcdc1>;
132c916eb95SHarald Geyer	vqmmc-supply = <&reg_dcdc1>;
133c916eb95SHarald Geyer	bus-width = <8>;
134c916eb95SHarald Geyer	non-removable;
135c916eb95SHarald Geyer	cap-mmc-hw-reset;
136c916eb95SHarald Geyer	status = "okay";
137c916eb95SHarald Geyer};
138c916eb95SHarald Geyer
139c916eb95SHarald Geyer&ohci1 {
140c916eb95SHarald Geyer	status = "okay";
141c916eb95SHarald Geyer};
142c916eb95SHarald Geyer
14324bd5d2cSHarald Geyer&pwm {
14424bd5d2cSHarald Geyer	status = "okay";
14524bd5d2cSHarald Geyer};
14624bd5d2cSHarald Geyer
147c916eb95SHarald Geyer&r_rsb {
148c916eb95SHarald Geyer	status = "okay";
149c916eb95SHarald Geyer
150c916eb95SHarald Geyer	axp803: pmic@3a3 {
151c916eb95SHarald Geyer		compatible = "x-powers,axp803";
152c916eb95SHarald Geyer		reg = <0x3a3>;
153c916eb95SHarald Geyer		interrupt-parent = <&r_intc>;
154c916eb95SHarald Geyer		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
155c916eb95SHarald Geyer		wakeup-source;
156c916eb95SHarald Geyer	};
157c916eb95SHarald Geyer};
158c916eb95SHarald Geyer
159c916eb95SHarald Geyer#include "axp803.dtsi"
160c916eb95SHarald Geyer
16125f6f54fSHarald Geyer&ac_power_supply {
16225f6f54fSHarald Geyer	status = "okay";
16325f6f54fSHarald Geyer};
16425f6f54fSHarald Geyer
16525f6f54fSHarald Geyer&battery_power_supply {
16625f6f54fSHarald Geyer	status = "okay";
16725f6f54fSHarald Geyer};
16825f6f54fSHarald Geyer
169c916eb95SHarald Geyer&reg_aldo1 {
170c916eb95SHarald Geyer	regulator-always-on;
171c916eb95SHarald Geyer	regulator-min-microvolt = <2800000>;
172c916eb95SHarald Geyer	regulator-max-microvolt = <2800000>;
173c916eb95SHarald Geyer	regulator-name = "vcc-pe";
174c916eb95SHarald Geyer};
175c916eb95SHarald Geyer
176c916eb95SHarald Geyer&reg_aldo2 {
177c916eb95SHarald Geyer	regulator-always-on;
178c916eb95SHarald Geyer	regulator-min-microvolt = <3300000>;
179c916eb95SHarald Geyer	regulator-max-microvolt = <3300000>;
180c916eb95SHarald Geyer	regulator-name = "vcc-pl";
181c916eb95SHarald Geyer};
182c916eb95SHarald Geyer
183c916eb95SHarald Geyer&reg_aldo3 {
184c916eb95SHarald Geyer	regulator-always-on;
185c916eb95SHarald Geyer	regulator-min-microvolt = <3000000>;
186c916eb95SHarald Geyer	regulator-max-microvolt = <3000000>;
187c916eb95SHarald Geyer	regulator-name = "vcc-pll-avcc";
188c916eb95SHarald Geyer};
189c916eb95SHarald Geyer
190c916eb95SHarald Geyer&reg_dcdc1 {
191c916eb95SHarald Geyer	regulator-always-on;
192c916eb95SHarald Geyer	regulator-min-microvolt = <3300000>;
193c916eb95SHarald Geyer	regulator-max-microvolt = <3300000>;
194c916eb95SHarald Geyer	regulator-name = "vcc-3v3";
195c916eb95SHarald Geyer};
196c916eb95SHarald Geyer
197c916eb95SHarald Geyer&reg_dcdc2 {
198c916eb95SHarald Geyer	regulator-always-on;
199c916eb95SHarald Geyer	regulator-min-microvolt = <1040000>;
200c916eb95SHarald Geyer	regulator-max-microvolt = <1300000>;
201c916eb95SHarald Geyer	regulator-name = "vdd-cpux";
202c916eb95SHarald Geyer};
203c916eb95SHarald Geyer
204c916eb95SHarald Geyer/* DCDC3 is polyphased with DCDC2 */
205c916eb95SHarald Geyer
206c916eb95SHarald Geyer&reg_dcdc5 {
207c916eb95SHarald Geyer	regulator-always-on;
208c916eb95SHarald Geyer	regulator-min-microvolt = <1500000>;
209c916eb95SHarald Geyer	regulator-max-microvolt = <1500000>;
210c916eb95SHarald Geyer	regulator-name = "vcc-ddr3";
211c916eb95SHarald Geyer};
212c916eb95SHarald Geyer
213c916eb95SHarald Geyer&reg_dcdc6 {
214c916eb95SHarald Geyer	regulator-always-on;
215c916eb95SHarald Geyer	regulator-min-microvolt = <1100000>;
216c916eb95SHarald Geyer	regulator-max-microvolt = <1100000>;
217c916eb95SHarald Geyer	regulator-name = "vdd-sys";
218c916eb95SHarald Geyer};
219c916eb95SHarald Geyer
220c916eb95SHarald Geyer&reg_dldo1 {
221c916eb95SHarald Geyer	regulator-min-microvolt = <3300000>;
222c916eb95SHarald Geyer	regulator-max-microvolt = <3300000>;
223c916eb95SHarald Geyer	regulator-name = "vcc-hdmi";
224c916eb95SHarald Geyer};
225c916eb95SHarald Geyer
226c916eb95SHarald Geyer&reg_dldo2 {
227c916eb95SHarald Geyer	regulator-min-microvolt = <2500000>;
228c916eb95SHarald Geyer	regulator-max-microvolt = <2500000>;
229c916eb95SHarald Geyer	regulator-name = "vcc-pd";
230c916eb95SHarald Geyer};
231c916eb95SHarald Geyer
232c916eb95SHarald Geyer&reg_dldo3 {
233c916eb95SHarald Geyer	regulator-min-microvolt = <1200000>;
234c916eb95SHarald Geyer	regulator-max-microvolt = <1200000>;
235e4357c82SIcenowy Zheng	regulator-name = "vdd-edp";
236c916eb95SHarald Geyer};
237c916eb95SHarald Geyer
238c916eb95SHarald Geyer&reg_dldo4 {
239c916eb95SHarald Geyer	regulator-min-microvolt = <3300000>;
240c916eb95SHarald Geyer	regulator-max-microvolt = <3300000>;
241c916eb95SHarald Geyer	regulator-name = "vcc-wifi-io";
242c916eb95SHarald Geyer};
243c916eb95SHarald Geyer
244c916eb95SHarald Geyer&reg_eldo1 {
245c916eb95SHarald Geyer	regulator-min-microvolt = <1800000>;
246c916eb95SHarald Geyer	regulator-max-microvolt = <1800000>;
247c916eb95SHarald Geyer	regulator-name = "cpvdd";
248c916eb95SHarald Geyer};
249c916eb95SHarald Geyer
250c916eb95SHarald Geyer&reg_eldo2 {
251c916eb95SHarald Geyer	regulator-min-microvolt = <1800000>;
252c916eb95SHarald Geyer	regulator-max-microvolt = <1800000>;
253c916eb95SHarald Geyer	regulator-name = "vcc-dvdd-csi";
254c916eb95SHarald Geyer};
255c916eb95SHarald Geyer
256c916eb95SHarald Geyer&reg_fldo1 {
257c916eb95SHarald Geyer	regulator-min-microvolt = <1200000>;
258c916eb95SHarald Geyer	regulator-max-microvolt = <1200000>;
259c916eb95SHarald Geyer	regulator-name = "vcc-1v2-hsic";
260c916eb95SHarald Geyer};
261c916eb95SHarald Geyer
262c916eb95SHarald Geyer/*
263062904f2SJonathan Neuschäfer * The A64 chip cannot work with this regulator off, although
264c916eb95SHarald Geyer * it seems to be only driving the AR100 core.
265c916eb95SHarald Geyer * Maybe we don't still know well about CPUs domain.
266c916eb95SHarald Geyer */
267c916eb95SHarald Geyer&reg_fldo2 {
268c916eb95SHarald Geyer	regulator-always-on;
269c916eb95SHarald Geyer	regulator-min-microvolt = <1100000>;
270c916eb95SHarald Geyer	regulator-max-microvolt = <1100000>;
271c916eb95SHarald Geyer	regulator-name = "vdd-cpus";
272c916eb95SHarald Geyer};
273c916eb95SHarald Geyer
274c916eb95SHarald Geyer&reg_rtc_ldo {
275c916eb95SHarald Geyer	regulator-name = "vcc-rtc";
276c916eb95SHarald Geyer};
277c916eb95SHarald Geyer
2785cbef9f9SIcenowy Zheng&simplefb_hdmi {
2795cbef9f9SIcenowy Zheng	vcc-hdmi-supply = <&reg_dldo1>;
2805cbef9f9SIcenowy Zheng};
2815cbef9f9SIcenowy Zheng
282c916eb95SHarald Geyer&uart0 {
283c916eb95SHarald Geyer	pinctrl-names = "default";
284d91ebb95SChen-Yu Tsai	pinctrl-0 = <&uart0_pb_pins>;
285c916eb95SHarald Geyer	status = "okay";
286c916eb95SHarald Geyer};
287c916eb95SHarald Geyer
288c916eb95SHarald Geyer&usbphy {
289c916eb95SHarald Geyer	usb1_vbus-supply = <&reg_usb1_vbus>;
290c916eb95SHarald Geyer	status = "okay";
291c916eb95SHarald Geyer};
292