xref: /linux/scripts/dtc/include-prefixes/arm/allwinner/sun8i-a33-vstar.dts (revision c34e9ab9a612ee8b18273398ef75c207b01f516d)
1*3888715cSIcenowy Zheng// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*3888715cSIcenowy Zheng/*
3*3888715cSIcenowy Zheng * Copyright (C) 2024 Icenowy Zheng <uwu@icenowy.me>
4*3888715cSIcenowy Zheng */
5*3888715cSIcenowy Zheng
6*3888715cSIcenowy Zheng/dts-v1/;
7*3888715cSIcenowy Zheng#include "sun8i-a33-vstar-core1.dtsi"
8*3888715cSIcenowy Zheng
9*3888715cSIcenowy Zheng#include <dt-bindings/gpio/gpio.h>
10*3888715cSIcenowy Zheng#include <dt-bindings/input/input.h>
11*3888715cSIcenowy Zheng
12*3888715cSIcenowy Zheng/ {
13*3888715cSIcenowy Zheng	model = "Rervision A33-Vstar";
14*3888715cSIcenowy Zheng	compatible = "rervision,a33-vstar",
15*3888715cSIcenowy Zheng		     "rervision,a33-core1",
16*3888715cSIcenowy Zheng		     "allwinner,sun8i-a33";
17*3888715cSIcenowy Zheng
18*3888715cSIcenowy Zheng	aliases {
19*3888715cSIcenowy Zheng		serial0 = &uart0;
20*3888715cSIcenowy Zheng		ethernet0 = &r8152;
21*3888715cSIcenowy Zheng	};
22*3888715cSIcenowy Zheng
23*3888715cSIcenowy Zheng	chosen {
24*3888715cSIcenowy Zheng		stdout-path = "serial0:115200n8";
25*3888715cSIcenowy Zheng	};
26*3888715cSIcenowy Zheng
27*3888715cSIcenowy Zheng	reg_usb1_vbus: regulator-usb1-vbus {
28*3888715cSIcenowy Zheng		compatible = "regulator-fixed";
29*3888715cSIcenowy Zheng		regulator-name = "usb1-vbus";
30*3888715cSIcenowy Zheng		regulator-min-microvolt = <5000000>;
31*3888715cSIcenowy Zheng		regulator-max-microvolt = <5000000>;
32*3888715cSIcenowy Zheng		regulator-boot-on;
33*3888715cSIcenowy Zheng		enable-active-high;
34*3888715cSIcenowy Zheng		gpio = <&pio 1 2 GPIO_ACTIVE_HIGH>; /* PB2 */
35*3888715cSIcenowy Zheng	};
36*3888715cSIcenowy Zheng
37*3888715cSIcenowy Zheng	wifi_pwrseq: pwrseq {
38*3888715cSIcenowy Zheng		compatible = "mmc-pwrseq-simple";
39*3888715cSIcenowy Zheng		reset-gpios = <&r_pio 0 6 GPIO_ACTIVE_LOW>; /* PL6 */
40*3888715cSIcenowy Zheng		clocks = <&rtc CLK_OSC32K_FANOUT>;
41*3888715cSIcenowy Zheng		clock-names = "ext_clock";
42*3888715cSIcenowy Zheng	};
43*3888715cSIcenowy Zheng};
44*3888715cSIcenowy Zheng
45*3888715cSIcenowy Zheng&ac_power_supply {
46*3888715cSIcenowy Zheng	status = "okay";
47*3888715cSIcenowy Zheng};
48*3888715cSIcenowy Zheng
49*3888715cSIcenowy Zheng&codec {
50*3888715cSIcenowy Zheng	status = "okay";
51*3888715cSIcenowy Zheng};
52*3888715cSIcenowy Zheng
53*3888715cSIcenowy Zheng&dai {
54*3888715cSIcenowy Zheng	status = "okay";
55*3888715cSIcenowy Zheng};
56*3888715cSIcenowy Zheng
57*3888715cSIcenowy Zheng&ehci0 {
58*3888715cSIcenowy Zheng	#address-cells = <1>;
59*3888715cSIcenowy Zheng	#size-cells = <0>;
60*3888715cSIcenowy Zheng	status = "okay";
61*3888715cSIcenowy Zheng
62*3888715cSIcenowy Zheng	hub@1 {
63*3888715cSIcenowy Zheng		/* Onboard GL850G hub which needs no extra power sequence */
64*3888715cSIcenowy Zheng		compatible = "usb5e3,608";
65*3888715cSIcenowy Zheng		reg = <1>;
66*3888715cSIcenowy Zheng		#address-cells = <1>;
67*3888715cSIcenowy Zheng		#size-cells = <0>;
68*3888715cSIcenowy Zheng
69*3888715cSIcenowy Zheng		r8152: ethernet@4 {
70*3888715cSIcenowy Zheng			/*
71*3888715cSIcenowy Zheng			 * Onboard Realtek RTL8152 USB Ethernet,
72*3888715cSIcenowy Zheng			 * with no MAC address programmed
73*3888715cSIcenowy Zheng			 */
74*3888715cSIcenowy Zheng			compatible = "usbbda,8152";
75*3888715cSIcenowy Zheng			reg = <4>;
76*3888715cSIcenowy Zheng		};
77*3888715cSIcenowy Zheng	};
78*3888715cSIcenowy Zheng};
79*3888715cSIcenowy Zheng
80*3888715cSIcenowy Zheng&lradc {
81*3888715cSIcenowy Zheng	vref-supply = <&reg_aldo3>;
82*3888715cSIcenowy Zheng	status = "okay";
83*3888715cSIcenowy Zheng
84*3888715cSIcenowy Zheng	button-191 {
85*3888715cSIcenowy Zheng		label = "V+";
86*3888715cSIcenowy Zheng		linux,code = <KEY_VOLUMEUP>;
87*3888715cSIcenowy Zheng		channel = <0>;
88*3888715cSIcenowy Zheng		voltage = <191011>;
89*3888715cSIcenowy Zheng	};
90*3888715cSIcenowy Zheng
91*3888715cSIcenowy Zheng	button-391 {
92*3888715cSIcenowy Zheng		label = "V-";
93*3888715cSIcenowy Zheng		linux,code = <KEY_VOLUMEDOWN>;
94*3888715cSIcenowy Zheng		channel = <0>;
95*3888715cSIcenowy Zheng		voltage = <391304>;
96*3888715cSIcenowy Zheng	};
97*3888715cSIcenowy Zheng
98*3888715cSIcenowy Zheng	button-600 {
99*3888715cSIcenowy Zheng		label = "BACK";
100*3888715cSIcenowy Zheng		linux,code = <KEY_BACK>;
101*3888715cSIcenowy Zheng		channel = <0>;
102*3888715cSIcenowy Zheng		voltage = <600000>;
103*3888715cSIcenowy Zheng	};
104*3888715cSIcenowy Zheng};
105*3888715cSIcenowy Zheng
106*3888715cSIcenowy Zheng&mmc0 {
107*3888715cSIcenowy Zheng	vmmc-supply = <&reg_dcdc1>;
108*3888715cSIcenowy Zheng	bus-width = <4>;
109*3888715cSIcenowy Zheng	cd-gpios = <&pio 1 4 GPIO_ACTIVE_LOW>; /* PB4 */
110*3888715cSIcenowy Zheng	status = "okay";
111*3888715cSIcenowy Zheng};
112*3888715cSIcenowy Zheng
113*3888715cSIcenowy Zheng&mmc1 {
114*3888715cSIcenowy Zheng	pinctrl-names = "default";
115*3888715cSIcenowy Zheng	pinctrl-0 = <&mmc1_pg_pins>;
116*3888715cSIcenowy Zheng	vmmc-supply = <&reg_dldo1>;
117*3888715cSIcenowy Zheng	mmc-pwrseq = <&wifi_pwrseq>;
118*3888715cSIcenowy Zheng	bus-width = <4>;
119*3888715cSIcenowy Zheng	non-removable;
120*3888715cSIcenowy Zheng	status = "okay";
121*3888715cSIcenowy Zheng
122*3888715cSIcenowy Zheng	brcmf: wifi@1 {
123*3888715cSIcenowy Zheng		reg = <1>;
124*3888715cSIcenowy Zheng		compatible = "brcm,bcm4329-fmac";
125*3888715cSIcenowy Zheng		interrupt-parent = <&r_pio>;
126*3888715cSIcenowy Zheng		interrupts = <0 7 IRQ_TYPE_LEVEL_LOW>; /* PL7 */
127*3888715cSIcenowy Zheng		interrupt-names = "host-wake";
128*3888715cSIcenowy Zheng	};
129*3888715cSIcenowy Zheng};
130*3888715cSIcenowy Zheng
131*3888715cSIcenowy Zheng/*
132*3888715cSIcenowy Zheng * Our WiFi chip needs both DLDO1 and DLDO2 to be powered at the same
133*3888715cSIcenowy Zheng * time, with the two being in sync. Since this is not really
134*3888715cSIcenowy Zheng * supported right now, just use the two as always on, and we will fix
135*3888715cSIcenowy Zheng * it later.
136*3888715cSIcenowy Zheng */
137*3888715cSIcenowy Zheng&reg_dldo1 {
138*3888715cSIcenowy Zheng	regulator-always-on;
139*3888715cSIcenowy Zheng	regulator-min-microvolt = <3300000>;
140*3888715cSIcenowy Zheng	regulator-max-microvolt = <3300000>;
141*3888715cSIcenowy Zheng	regulator-name = "vcc-wifi0";
142*3888715cSIcenowy Zheng};
143*3888715cSIcenowy Zheng
144*3888715cSIcenowy Zheng&reg_dldo2 {
145*3888715cSIcenowy Zheng	regulator-always-on;
146*3888715cSIcenowy Zheng	regulator-min-microvolt = <3300000>;
147*3888715cSIcenowy Zheng	regulator-max-microvolt = <3300000>;
148*3888715cSIcenowy Zheng	regulator-name = "vcc-wifi1";
149*3888715cSIcenowy Zheng};
150*3888715cSIcenowy Zheng
151*3888715cSIcenowy Zheng&reg_drivevbus {
152*3888715cSIcenowy Zheng	regulator-name = "usb0-vbus";
153*3888715cSIcenowy Zheng	status = "okay";
154*3888715cSIcenowy Zheng};
155*3888715cSIcenowy Zheng
156*3888715cSIcenowy Zheng&sound {
157*3888715cSIcenowy Zheng	/* TODO: on-board microphone */
158*3888715cSIcenowy Zheng
159*3888715cSIcenowy Zheng	simple-audio-card,widgets = "Headphone", "Headphone Jack";
160*3888715cSIcenowy Zheng	simple-audio-card,routing =
161*3888715cSIcenowy Zheng		"Left DAC", "DACL",
162*3888715cSIcenowy Zheng		"Right DAC", "DACR",
163*3888715cSIcenowy Zheng		"Headphone Jack", "HP";
164*3888715cSIcenowy Zheng	status = "okay";
165*3888715cSIcenowy Zheng};
166*3888715cSIcenowy Zheng
167*3888715cSIcenowy Zheng&uart0 {
168*3888715cSIcenowy Zheng	pinctrl-names = "default";
169*3888715cSIcenowy Zheng	pinctrl-0 = <&uart0_pb_pins>;
170*3888715cSIcenowy Zheng	status = "okay";
171*3888715cSIcenowy Zheng};
172*3888715cSIcenowy Zheng
173*3888715cSIcenowy Zheng&uart1 {
174*3888715cSIcenowy Zheng	pinctrl-names = "default";
175*3888715cSIcenowy Zheng	pinctrl-0 = <&uart1_pg_pins>, <&uart1_cts_rts_pg_pins>;
176*3888715cSIcenowy Zheng	uart-has-rtscts;
177*3888715cSIcenowy Zheng	status = "okay";
178*3888715cSIcenowy Zheng
179*3888715cSIcenowy Zheng	bluetooth {
180*3888715cSIcenowy Zheng		compatible = "brcm,bcm43438-bt";
181*3888715cSIcenowy Zheng		clocks = <&rtc CLK_OSC32K_FANOUT>;
182*3888715cSIcenowy Zheng		clock-names = "lpo";
183*3888715cSIcenowy Zheng		vbat-supply = <&reg_dldo1>;
184*3888715cSIcenowy Zheng		device-wakeup-gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */
185*3888715cSIcenowy Zheng		host-wakeup-gpios = <&r_pio 0 9 GPIO_ACTIVE_HIGH>; /* PL9 */
186*3888715cSIcenowy Zheng		shutdown-gpios = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */
187*3888715cSIcenowy Zheng	};
188*3888715cSIcenowy Zheng};
189*3888715cSIcenowy Zheng
190*3888715cSIcenowy Zheng&usb_otg {
191*3888715cSIcenowy Zheng	dr_mode = "otg";
192*3888715cSIcenowy Zheng	status = "okay";
193*3888715cSIcenowy Zheng};
194*3888715cSIcenowy Zheng
195*3888715cSIcenowy Zheng&usb_power_supply {
196*3888715cSIcenowy Zheng	status = "okay";
197*3888715cSIcenowy Zheng};
198*3888715cSIcenowy Zheng
199*3888715cSIcenowy Zheng&usbphy {
200*3888715cSIcenowy Zheng	usb0_id_det-gpios = <&pio 7 8 GPIO_ACTIVE_HIGH>; /* PH8 */
201*3888715cSIcenowy Zheng	usb0_vbus_power-supply = <&usb_power_supply>;
202*3888715cSIcenowy Zheng	usb0_vbus-supply = <&reg_drivevbus>;
203*3888715cSIcenowy Zheng	usb1_vbus-supply = <&reg_usb1_vbus>;
204*3888715cSIcenowy Zheng	status = "okay";
205*3888715cSIcenowy Zheng};
206