xref: /linux/scripts/dtc/include-prefixes/arm/allwinner/sun8i-v3s-netcube-kumquat.dts (revision 2f24482304ebd32c5aa374f31465b9941a860b92)
1*6e085e64SLukas Schmid// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*6e085e64SLukas Schmid/*
3*6e085e64SLukas Schmid * Copyright (C) 2025 Lukas Schmid <lukas.schmid@netcube.li>
4*6e085e64SLukas Schmid */
5*6e085e64SLukas Schmid
6*6e085e64SLukas Schmid/dts-v1/;
7*6e085e64SLukas Schmid#include "sun8i-v3s.dtsi"
8*6e085e64SLukas Schmid
9*6e085e64SLukas Schmid#include <dt-bindings/input/input.h>
10*6e085e64SLukas Schmid#include <dt-bindings/leds/common.h>
11*6e085e64SLukas Schmid#include <dt-bindings/gpio/gpio.h>
12*6e085e64SLukas Schmid
13*6e085e64SLukas Schmid/{
14*6e085e64SLukas Schmid	model = "NetCube Systems Kumquat";
15*6e085e64SLukas Schmid	compatible = "netcube,kumquat", "allwinner,sun8i-v3s";
16*6e085e64SLukas Schmid
17*6e085e64SLukas Schmid	aliases {
18*6e085e64SLukas Schmid		serial0 = &uart0;
19*6e085e64SLukas Schmid		ethernet0 = &emac;
20*6e085e64SLukas Schmid		rtc0 = &ds3232;
21*6e085e64SLukas Schmid		rtc1 = &rtc; /* not battery backed */
22*6e085e64SLukas Schmid	};
23*6e085e64SLukas Schmid
24*6e085e64SLukas Schmid	chosen {
25*6e085e64SLukas Schmid		stdout-path = "serial0:115200n8";
26*6e085e64SLukas Schmid	};
27*6e085e64SLukas Schmid
28*6e085e64SLukas Schmid	/* 40 MHz Crystal Oscillator on PCB */
29*6e085e64SLukas Schmid	clk_can0: clock-can0 {
30*6e085e64SLukas Schmid		compatible = "fixed-clock";
31*6e085e64SLukas Schmid		#clock-cells = <0>;
32*6e085e64SLukas Schmid		clock-frequency  = <40000000>;
33*6e085e64SLukas Schmid	};
34*6e085e64SLukas Schmid
35*6e085e64SLukas Schmid	gpio-keys {
36*6e085e64SLukas Schmid		compatible = "gpio-keys";
37*6e085e64SLukas Schmid		autorepeat;
38*6e085e64SLukas Schmid
39*6e085e64SLukas Schmid		key-user {
40*6e085e64SLukas Schmid			label = "GPIO Key User";
41*6e085e64SLukas Schmid			linux,code = <KEY_PROG1>;
42*6e085e64SLukas Schmid			gpios = <&pio 1 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PB2 */
43*6e085e64SLukas Schmid		};
44*6e085e64SLukas Schmid	};
45*6e085e64SLukas Schmid
46*6e085e64SLukas Schmid	leds {
47*6e085e64SLukas Schmid		compatible = "gpio-leds";
48*6e085e64SLukas Schmid
49*6e085e64SLukas Schmid		led-heartbeat {
50*6e085e64SLukas Schmid			gpios = <&pio 4 4 GPIO_ACTIVE_HIGH>; /* PE4 */
51*6e085e64SLukas Schmid			linux,default-trigger = "heartbeat";
52*6e085e64SLukas Schmid			color = <LED_COLOR_ID_GREEN>;
53*6e085e64SLukas Schmid			function = LED_FUNCTION_HEARTBEAT;
54*6e085e64SLukas Schmid		};
55*6e085e64SLukas Schmid
56*6e085e64SLukas Schmid		led-mmc0-act {
57*6e085e64SLukas Schmid			gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; /* PF6 */
58*6e085e64SLukas Schmid			linux,default-trigger = "mmc0";
59*6e085e64SLukas Schmid			color = <LED_COLOR_ID_GREEN>;
60*6e085e64SLukas Schmid			function = LED_FUNCTION_DISK;
61*6e085e64SLukas Schmid		};
62*6e085e64SLukas Schmid	};
63*6e085e64SLukas Schmid
64*6e085e64SLukas Schmid	/* EA3036C Switching 3 Channel Regulator - Channel 2 */
65*6e085e64SLukas Schmid	reg_vcc3v3: regulator-3v3 {
66*6e085e64SLukas Schmid		compatible = "regulator-fixed";
67*6e085e64SLukas Schmid		regulator-name = "vcc3v3";
68*6e085e64SLukas Schmid		regulator-min-microvolt = <3300000>;
69*6e085e64SLukas Schmid		regulator-max-microvolt = <3300000>;
70*6e085e64SLukas Schmid		vin-supply = <&reg_vcc5v0>;
71*6e085e64SLukas Schmid	};
72*6e085e64SLukas Schmid
73*6e085e64SLukas Schmid	/* K7805-1000R3 Switching Regulator supplied from main 12/24V terminal block */
74*6e085e64SLukas Schmid	reg_vcc5v0: regulator-5v0 {
75*6e085e64SLukas Schmid		compatible = "regulator-fixed";
76*6e085e64SLukas Schmid		regulator-name = "vcc5v0";
77*6e085e64SLukas Schmid		regulator-min-microvolt = <5000000>;
78*6e085e64SLukas Schmid		regulator-max-microvolt = <5000000>;
79*6e085e64SLukas Schmid	};
80*6e085e64SLukas Schmid};
81*6e085e64SLukas Schmid
82*6e085e64SLukas Schmid&codec {
83*6e085e64SLukas Schmid	allwinner,audio-routing =
84*6e085e64SLukas Schmid		"Headphone", "HP",
85*6e085e64SLukas Schmid		"Headphone", "HPCOM",
86*6e085e64SLukas Schmid		"MIC1", "Mic",
87*6e085e64SLukas Schmid		"Mic", "HBIAS";
88*6e085e64SLukas Schmid	status = "okay";
89*6e085e64SLukas Schmid};
90*6e085e64SLukas Schmid
91*6e085e64SLukas Schmid&ehci {
92*6e085e64SLukas Schmid	status = "okay";
93*6e085e64SLukas Schmid};
94*6e085e64SLukas Schmid
95*6e085e64SLukas Schmid&emac {
96*6e085e64SLukas Schmid	allwinner,leds-active-low;
97*6e085e64SLukas Schmid	nvmem-cells = <&eth0_macaddress>;
98*6e085e64SLukas Schmid	nvmem-cell-names = "mac-address";
99*6e085e64SLukas Schmid	status = "okay";
100*6e085e64SLukas Schmid};
101*6e085e64SLukas Schmid
102*6e085e64SLukas Schmid&i2c0 {
103*6e085e64SLukas Schmid	status = "okay";
104*6e085e64SLukas Schmid
105*6e085e64SLukas Schmid	eeprom0: eeprom@50 {
106*6e085e64SLukas Schmid		compatible = "atmel,24c02";		/* actually it's a 24AA02E48 */
107*6e085e64SLukas Schmid		reg = <0x50>;
108*6e085e64SLukas Schmid		pagesize = <16>;
109*6e085e64SLukas Schmid		read-only;
110*6e085e64SLukas Schmid		vcc-supply = <&reg_vcc3v3>;
111*6e085e64SLukas Schmid
112*6e085e64SLukas Schmid		#address-cells = <1>;
113*6e085e64SLukas Schmid		#size-cells = <1>;
114*6e085e64SLukas Schmid
115*6e085e64SLukas Schmid		eth0_macaddress: macaddress@fa {
116*6e085e64SLukas Schmid			reg = <0xfa 0x06>;
117*6e085e64SLukas Schmid		};
118*6e085e64SLukas Schmid	};
119*6e085e64SLukas Schmid
120*6e085e64SLukas Schmid	tusb320: typec@60 {
121*6e085e64SLukas Schmid		compatible = "ti,tusb320";
122*6e085e64SLukas Schmid		reg = <0x60>;
123*6e085e64SLukas Schmid		interrupts-extended = <&pio 1 5 IRQ_TYPE_LEVEL_LOW>;  /* PB5 */
124*6e085e64SLukas Schmid	};
125*6e085e64SLukas Schmid
126*6e085e64SLukas Schmid	ds3232: rtc@68 {
127*6e085e64SLukas Schmid		compatible = "dallas,ds3232";
128*6e085e64SLukas Schmid		reg = <0x68>;
129*6e085e64SLukas Schmid	};
130*6e085e64SLukas Schmid};
131*6e085e64SLukas Schmid
132*6e085e64SLukas Schmid/* Exposed as the Flash/SD Header on the board */
133*6e085e64SLukas Schmid&mmc0 {
134*6e085e64SLukas Schmid	vmmc-supply = <&reg_vcc3v3>;
135*6e085e64SLukas Schmid	bus-width = <4>;
136*6e085e64SLukas Schmid	broken-cd;
137*6e085e64SLukas Schmid	status = "okay";
138*6e085e64SLukas Schmid};
139*6e085e64SLukas Schmid
140*6e085e64SLukas Schmid/* Connected to the on-board ESP32 */
141*6e085e64SLukas Schmid&mmc1 {
142*6e085e64SLukas Schmid	vmmc-supply = <&reg_vcc3v3>;
143*6e085e64SLukas Schmid	bus-width = <4>;
144*6e085e64SLukas Schmid	broken-cd;
145*6e085e64SLukas Schmid	status = "okay";
146*6e085e64SLukas Schmid};
147*6e085e64SLukas Schmid
148*6e085e64SLukas Schmid&ohci {
149*6e085e64SLukas Schmid	status = "okay";
150*6e085e64SLukas Schmid};
151*6e085e64SLukas Schmid
152*6e085e64SLukas Schmid/* Disable external 32k osc as it is broken on current revision */
153*6e085e64SLukas Schmid&osc32k {
154*6e085e64SLukas Schmid	status = "disabled";
155*6e085e64SLukas Schmid};
156*6e085e64SLukas Schmid
157*6e085e64SLukas Schmid&pio {
158*6e085e64SLukas Schmid	vcc-pb-supply = <&reg_vcc3v3>;
159*6e085e64SLukas Schmid	vcc-pc-supply = <&reg_vcc3v3>;
160*6e085e64SLukas Schmid	vcc-pe-supply = <&reg_vcc3v3>;
161*6e085e64SLukas Schmid	vcc-pf-supply = <&reg_vcc3v3>;
162*6e085e64SLukas Schmid	vcc-pg-supply = <&reg_vcc3v3>;
163*6e085e64SLukas Schmid
164*6e085e64SLukas Schmid	gpio-line-names = "", "", "", "", // PA
165*6e085e64SLukas Schmid			  "", "", "", "",
166*6e085e64SLukas Schmid			  "", "", "", "",
167*6e085e64SLukas Schmid			  "", "", "", "",
168*6e085e64SLukas Schmid			  "", "", "", "",
169*6e085e64SLukas Schmid			  "", "", "", "",
170*6e085e64SLukas Schmid			  "", "", "", "",
171*6e085e64SLukas Schmid			  "", "", "", "",
172*6e085e64SLukas Schmid			  "CAN_nCS", "CAN_nINT", "USER_SW", "PB3", // PB
173*6e085e64SLukas Schmid			  "USB_ID", "USBC_nINT", "I2C0_SCL", "I2C0_SDA",
174*6e085e64SLukas Schmid			  "UART0_TX", "UART0_RX", "", "",
175*6e085e64SLukas Schmid			  "", "", "", "",
176*6e085e64SLukas Schmid			  "", "", "", "",
177*6e085e64SLukas Schmid			  "", "", "", "",
178*6e085e64SLukas Schmid			  "", "", "", "",
179*6e085e64SLukas Schmid			  "", "", "", "",
180*6e085e64SLukas Schmid			  "SPI_MISO", "SPI_SCK", "FLASH_nCS", "SPI_MOSI", // PC
181*6e085e64SLukas Schmid			  "", "", "", "",
182*6e085e64SLukas Schmid			  "", "", "", "",
183*6e085e64SLukas Schmid			  "", "", "", "",
184*6e085e64SLukas Schmid			  "", "", "", "",
185*6e085e64SLukas Schmid			  "", "", "", "",
186*6e085e64SLukas Schmid			  "", "", "", "",
187*6e085e64SLukas Schmid			  "", "", "", "",
188*6e085e64SLukas Schmid			  "", "", "", "", // PD
189*6e085e64SLukas Schmid			  "", "", "", "",
190*6e085e64SLukas Schmid			  "", "", "", "",
191*6e085e64SLukas Schmid			  "", "", "", "",
192*6e085e64SLukas Schmid			  "", "", "", "",
193*6e085e64SLukas Schmid			  "", "", "", "",
194*6e085e64SLukas Schmid			  "", "", "", "",
195*6e085e64SLukas Schmid			  "", "", "", "",
196*6e085e64SLukas Schmid			  "Q12", "Q11", "Q10", "Q9", // PE
197*6e085e64SLukas Schmid			  "LED_SYS0", "I1", "Q1", "Q2",
198*6e085e64SLukas Schmid			  "I2", "I3", "Q3", "Q4",
199*6e085e64SLukas Schmid			  "I4", "I5", "Q5", "Q6",
200*6e085e64SLukas Schmid			  "I6", "I7", "Q7", "Q8",
201*6e085e64SLukas Schmid			  "I8", "UART1_TXD", "UART1_RXD", "ESP_nRST",
202*6e085e64SLukas Schmid			  "ESP_nBOOT", "", "", "",
203*6e085e64SLukas Schmid			  "", "", "", "",
204*6e085e64SLukas Schmid			  "SD_D1", "SD_D0", "SD_CLK", "SD_CMD", // PF
205*6e085e64SLukas Schmid			  "SD_D3", "SD_D2", "LED_SYS1", "",
206*6e085e64SLukas Schmid			  "", "", "", "",
207*6e085e64SLukas Schmid			  "", "", "", "",
208*6e085e64SLukas Schmid			  "", "", "", "",
209*6e085e64SLukas Schmid			  "", "", "", "",
210*6e085e64SLukas Schmid			  "", "", "", "",
211*6e085e64SLukas Schmid			  "", "", "", "",
212*6e085e64SLukas Schmid			  "ESP_CLK", "ESP_CMD", "ESP_D0", "ESP_D1", // PG
213*6e085e64SLukas Schmid			  "ESP_D2", "ESP_D3", "", "",
214*6e085e64SLukas Schmid			  "", "", "", "",
215*6e085e64SLukas Schmid			  "", "", "", "",
216*6e085e64SLukas Schmid			  "", "", "", "",
217*6e085e64SLukas Schmid			  "", "", "", "",
218*6e085e64SLukas Schmid			  "", "", "", "",
219*6e085e64SLukas Schmid			  "", "", "", "";
220*6e085e64SLukas Schmid};
221*6e085e64SLukas Schmid
222*6e085e64SLukas Schmid/* Disable external 32k osc as it is broken on current revision */
223*6e085e64SLukas Schmid&rtc {
224*6e085e64SLukas Schmid	/delete-property/ clocks;
225*6e085e64SLukas Schmid};
226*6e085e64SLukas Schmid
227*6e085e64SLukas Schmid/* Exposed as a USB-C connector with USB-Serial converter */
228*6e085e64SLukas Schmid&uart0 {
229*6e085e64SLukas Schmid	pinctrl-0 = <&uart0_pb_pins>;
230*6e085e64SLukas Schmid	pinctrl-names = "default";
231*6e085e64SLukas Schmid	status = "okay";
232*6e085e64SLukas Schmid};
233*6e085e64SLukas Schmid
234*6e085e64SLukas Schmid/* Connected to the Bootloader/Console of the ESP32 */
235*6e085e64SLukas Schmid&uart1 {
236*6e085e64SLukas Schmid	pinctrl-0 = <&uart1_pe_pins>;
237*6e085e64SLukas Schmid	pinctrl-names = "default";
238*6e085e64SLukas Schmid	status = "okay";
239*6e085e64SLukas Schmid};
240*6e085e64SLukas Schmid
241*6e085e64SLukas Schmid&usb_otg {
242*6e085e64SLukas Schmid	extcon = <&tusb320 0>;
243*6e085e64SLukas Schmid	dr_mode = "otg";
244*6e085e64SLukas Schmid	status = "okay";
245*6e085e64SLukas Schmid};
246*6e085e64SLukas Schmid
247*6e085e64SLukas Schmid&usbphy {
248*6e085e64SLukas Schmid	usb0_id_det-gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; /* PB4 */
249*6e085e64SLukas Schmid	status = "okay";
250*6e085e64SLukas Schmid};
251*6e085e64SLukas Schmid
252*6e085e64SLukas Schmid&spi0 {
253*6e085e64SLukas Schmid	#address-cells = <1>;
254*6e085e64SLukas Schmid	#size-cells = <0>;
255*6e085e64SLukas Schmid	cs-gpios = <0>, <&pio 1 0 GPIO_ACTIVE_LOW>; /* PB0 */
256*6e085e64SLukas Schmid	status = "okay";
257*6e085e64SLukas Schmid
258*6e085e64SLukas Schmid	flash@0 {
259*6e085e64SLukas Schmid		compatible = "jedec,spi-nor";
260*6e085e64SLukas Schmid		reg = <0>;
261*6e085e64SLukas Schmid		#address-cells = <1>;
262*6e085e64SLukas Schmid		#size-cells = <1>;
263*6e085e64SLukas Schmid		label = "firmware";
264*6e085e64SLukas Schmid		spi-max-frequency = <40000000>;
265*6e085e64SLukas Schmid	};
266*6e085e64SLukas Schmid
267*6e085e64SLukas Schmid	can@1 {
268*6e085e64SLukas Schmid		compatible = "microchip,mcp2518fd";
269*6e085e64SLukas Schmid		reg = <1>;
270*6e085e64SLukas Schmid		clocks = <&clk_can0>;
271*6e085e64SLukas Schmid		interrupts-extended = <&pio 1 1 IRQ_TYPE_LEVEL_LOW>;  /* PB1 */
272*6e085e64SLukas Schmid		spi-max-frequency = <20000000>;
273*6e085e64SLukas Schmid		vdd-supply = <&reg_vcc3v3>;
274*6e085e64SLukas Schmid		xceiver-supply = <&reg_vcc3v3>;
275*6e085e64SLukas Schmid	};
276*6e085e64SLukas Schmid};
277