xref: /linux/arch/arm/boot/dts/amlogic/meson8-fernsehfee3.dts (revision ec71f661a572a770d7c861cd52a50cbbb0e1a8d1)
1dac92875SJ. Neuschäfer// SPDX-License-Identifier: GPL-2.0-only OR MIT
2dac92875SJ. Neuschäfer// Copyright (C) 2025 J. Neuschäfer <j.ne@posteo.net>
3dac92875SJ. Neuschäfer
4dac92875SJ. Neuschäfer/dts-v1/;
5dac92875SJ. Neuschäfer
6dac92875SJ. Neuschäfer#include <dt-bindings/gpio/gpio.h>
7dac92875SJ. Neuschäfer#include <dt-bindings/input/linux-event-codes.h>
8dac92875SJ. Neuschäfer#include <dt-bindings/leds/common.h>
9dac92875SJ. Neuschäfer
10dac92875SJ. Neuschäfer#include "meson8.dtsi"
11dac92875SJ. Neuschäfer
12dac92875SJ. Neuschäfer/ {
13dac92875SJ. Neuschäfer	model = "Fernsehfee 3.0";
14dac92875SJ. Neuschäfer	compatible = "tcu,fernsehfee3", "amlogic,meson8";
15dac92875SJ. Neuschäfer
16dac92875SJ. Neuschäfer	aliases {
17dac92875SJ. Neuschäfer		serial0 = &uart_AO;
18dac92875SJ. Neuschäfer		gpiochip0 = &gpio;
19dac92875SJ. Neuschäfer		gpiochip1 = &gpio_ao;
20dac92875SJ. Neuschäfer		i2c0 = &i2c_AO;
21dac92875SJ. Neuschäfer		i2c1 = &i2c_B;
22dac92875SJ. Neuschäfer		mmc0 = &sdhc;
23dac92875SJ. Neuschäfer		mmc1 = &sdio;
24dac92875SJ. Neuschäfer	};
25dac92875SJ. Neuschäfer
26dac92875SJ. Neuschäfer	chosen {
27dac92875SJ. Neuschäfer		stdout-path = "serial0:115200n8";
28dac92875SJ. Neuschäfer	};
29dac92875SJ. Neuschäfer
30dac92875SJ. Neuschäfer	memory@0 {
31dac92875SJ. Neuschäfer		device_type = "memory";
32dac92875SJ. Neuschäfer		reg = <0x0 0x40000000>;  /* 1 GiB */
33dac92875SJ. Neuschäfer	};
34dac92875SJ. Neuschäfer
35dac92875SJ. Neuschäfer	gpio-keys {
36dac92875SJ. Neuschäfer		compatible = "gpio-keys-polled";
37dac92875SJ. Neuschäfer		poll-interval = <100>;
38dac92875SJ. Neuschäfer
39dac92875SJ. Neuschäfer		power-button {
40dac92875SJ. Neuschäfer			label = "Power button";
41dac92875SJ. Neuschäfer			linux,code = <KEY_POWER>;
42dac92875SJ. Neuschäfer			gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_LOW>;
43dac92875SJ. Neuschäfer		};
44dac92875SJ. Neuschäfer	};
45dac92875SJ. Neuschäfer
46dac92875SJ. Neuschäfer	leds {
47dac92875SJ. Neuschäfer		compatible = "gpio-leds";
48dac92875SJ. Neuschäfer
49dac92875SJ. Neuschäfer		led-0 {
50dac92875SJ. Neuschäfer			/*
51dac92875SJ. Neuschäfer			 * The power LED can be turned red, otherwise it is green.
52dac92875SJ. Neuschäfer			 */
53dac92875SJ. Neuschäfer			gpios = <&gpio_ao GPIO_TEST_N GPIO_ACTIVE_LOW>;
54dac92875SJ. Neuschäfer			function = LED_FUNCTION_POWER;
55dac92875SJ. Neuschäfer			color = <LED_COLOR_ID_RED>;
56dac92875SJ. Neuschäfer		};
57dac92875SJ. Neuschäfer	};
58dac92875SJ. Neuschäfer
59dac92875SJ. Neuschäfer	vcc_5v: regulator-5v {
60dac92875SJ. Neuschäfer		/* 5V rail, always on as long as the system is running */
61dac92875SJ. Neuschäfer		compatible = "regulator-fixed";
62dac92875SJ. Neuschäfer		regulator-name = "5V";
63dac92875SJ. Neuschäfer		regulator-min-microvolt = <5000000>;
64dac92875SJ. Neuschäfer		regulator-max-microvolt = <5000000>;
65dac92875SJ. Neuschäfer		regulator-always-on;
66dac92875SJ. Neuschäfer	};
67dac92875SJ. Neuschäfer
68dac92875SJ. Neuschäfer	vcc_3v3: regulator-3v3 {
69dac92875SJ. Neuschäfer		/* Chipown AP2420 step-down converter */
70dac92875SJ. Neuschäfer		compatible = "regulator-fixed";
71dac92875SJ. Neuschäfer		regulator-name = "3.3V";
72dac92875SJ. Neuschäfer		regulator-min-microvolt = <3300000>;
73dac92875SJ. Neuschäfer		regulator-max-microvolt = <3300000>;
74dac92875SJ. Neuschäfer		vin-supply = <&vcc_5v>;
75dac92875SJ. Neuschäfer	};
76dac92875SJ. Neuschäfer
77dac92875SJ. Neuschäfer	wifi_3v3: regulator-wifi {
78dac92875SJ. Neuschäfer		compatible = "regulator-fixed";
79dac92875SJ. Neuschäfer		regulator-name = "3.3V-WIFI";
80dac92875SJ. Neuschäfer		regulator-min-microvolt = <3300000>;
81dac92875SJ. Neuschäfer		regulator-max-microvolt = <3300000>;
82dac92875SJ. Neuschäfer		vin-supply = <&vcc_3v3>;
83dac92875SJ. Neuschäfer		gpio = <&gpio GPIOX_11 GPIO_ACTIVE_HIGH>;
84dac92875SJ. Neuschäfer		enable-active-high;
85dac92875SJ. Neuschäfer	};
86dac92875SJ. Neuschäfer};
87dac92875SJ. Neuschäfer
88*2c1879a4SJ. Neuschäfer&cpu0 {
89*2c1879a4SJ. Neuschäfer	cpu-supply = <&vcck>;
90*2c1879a4SJ. Neuschäfer};
91*2c1879a4SJ. Neuschäfer
92dac92875SJ. Neuschäfer&ethmac {
93dac92875SJ. Neuschäfer	status = "okay";
94dac92875SJ. Neuschäfer	pinctrl-0 = <&eth_pins>;
95dac92875SJ. Neuschäfer	pinctrl-names = "default";
96dac92875SJ. Neuschäfer	phy-handle = <&eth_phy0>;
97dac92875SJ. Neuschäfer	phy-mode = "rmii";
98dac92875SJ. Neuschäfer
99dac92875SJ. Neuschäfer	mdio {
100dac92875SJ. Neuschäfer		compatible = "snps,dwmac-mdio";
101dac92875SJ. Neuschäfer		#address-cells = <1>;
102dac92875SJ. Neuschäfer		#size-cells = <0>;
103dac92875SJ. Neuschäfer
104dac92875SJ. Neuschäfer		eth_phy0: ethernet-phy@0 {
105dac92875SJ. Neuschäfer			/* IC Plus IP101A (0x02430c54) */
106dac92875SJ. Neuschäfer			reg = <0>;
107dac92875SJ. Neuschäfer
108dac92875SJ. Neuschäfer			reset-assert-us = <10000>;
109dac92875SJ. Neuschäfer			reset-deassert-us = <10000>;
110dac92875SJ. Neuschäfer			reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>;
111dac92875SJ. Neuschäfer		};
112dac92875SJ. Neuschäfer	};
113dac92875SJ. Neuschäfer};
114dac92875SJ. Neuschäfer
115dac92875SJ. Neuschäfer&i2c_AO {
116dac92875SJ. Neuschäfer	status = "okay";
117dac92875SJ. Neuschäfer	pinctrl-0 = <&i2c_ao_pins>;
118dac92875SJ. Neuschäfer	pinctrl-names = "default";
119dac92875SJ. Neuschäfer
120dac92875SJ. Neuschäfer	pmic@32 {
121dac92875SJ. Neuschäfer		compatible = "ricoh,rn5t618";
122dac92875SJ. Neuschäfer		reg = <0x32>;
123dac92875SJ. Neuschäfer		system-power-controller;
124*2c1879a4SJ. Neuschäfer
125*2c1879a4SJ. Neuschäfer		regulators {
126*2c1879a4SJ. Neuschäfer			vcck: DCDC1 {
127*2c1879a4SJ. Neuschäfer				regulator-name = "VCCK";
128*2c1879a4SJ. Neuschäfer				regulator-min-microvolt = <825000>;
129*2c1879a4SJ. Neuschäfer				regulator-max-microvolt = <1150000>;
130*2c1879a4SJ. Neuschäfer				regulator-boot-on;
131*2c1879a4SJ. Neuschäfer				regulator-always-on;
132*2c1879a4SJ. Neuschäfer			};
133*2c1879a4SJ. Neuschäfer
134*2c1879a4SJ. Neuschäfer			vddee: DCDC2 {
135*2c1879a4SJ. Neuschäfer				/* the output is also used as VDDAO */
136*2c1879a4SJ. Neuschäfer				regulator-name = "VDD_EE";
137*2c1879a4SJ. Neuschäfer				regulator-min-microvolt = <950000>;
138*2c1879a4SJ. Neuschäfer				regulator-max-microvolt = <1150000>;
139*2c1879a4SJ. Neuschäfer				regulator-boot-on;
140*2c1879a4SJ. Neuschäfer				regulator-always-on;
141*2c1879a4SJ. Neuschäfer			};
142*2c1879a4SJ. Neuschäfer
143*2c1879a4SJ. Neuschäfer			DCDC3 {
144*2c1879a4SJ. Neuschäfer				regulator-name = "VDD_DDR";
145*2c1879a4SJ. Neuschäfer				regulator-min-microvolt = <1500000>;
146*2c1879a4SJ. Neuschäfer				regulator-max-microvolt = <1500000>;
147*2c1879a4SJ. Neuschäfer				regulator-boot-on;
148*2c1879a4SJ. Neuschäfer				regulator-always-on;
149*2c1879a4SJ. Neuschäfer			};
150*2c1879a4SJ. Neuschäfer
151*2c1879a4SJ. Neuschäfer			LDO1 {
152*2c1879a4SJ. Neuschäfer				regulator-name = "VDDIO_AO28";
153*2c1879a4SJ. Neuschäfer				regulator-min-microvolt = <2900000>;
154*2c1879a4SJ. Neuschäfer				regulator-max-microvolt = <2900000>;
155*2c1879a4SJ. Neuschäfer				regulator-boot-on;
156*2c1879a4SJ. Neuschäfer				regulator-always-on;
157*2c1879a4SJ. Neuschäfer			};
158*2c1879a4SJ. Neuschäfer
159*2c1879a4SJ. Neuschäfer			LDO2 {
160*2c1879a4SJ. Neuschäfer				regulator-name = "VDDIO_AO18";
161*2c1879a4SJ. Neuschäfer				regulator-min-microvolt = <1800000>;
162*2c1879a4SJ. Neuschäfer				regulator-max-microvolt = <1800000>;
163*2c1879a4SJ. Neuschäfer				regulator-boot-on;
164*2c1879a4SJ. Neuschäfer				regulator-always-on;
165*2c1879a4SJ. Neuschäfer			};
166*2c1879a4SJ. Neuschäfer
167*2c1879a4SJ. Neuschäfer			vcc1v8_usb: LDO3 {
168*2c1879a4SJ. Neuschäfer				regulator-name = "VCC1V8_USB";
169*2c1879a4SJ. Neuschäfer				regulator-min-microvolt = <1800000>;
170*2c1879a4SJ. Neuschäfer				regulator-max-microvolt = <1800000>;
171*2c1879a4SJ. Neuschäfer				regulator-boot-on;
172*2c1879a4SJ. Neuschäfer			};
173*2c1879a4SJ. Neuschäfer
174*2c1879a4SJ. Neuschäfer			LDO4 {
175*2c1879a4SJ. Neuschäfer				/* This one appears to be unused */
176*2c1879a4SJ. Neuschäfer				regulator-name = "VCC2V8";
177*2c1879a4SJ. Neuschäfer				regulator-min-microvolt = <2850000>;
178*2c1879a4SJ. Neuschäfer				regulator-max-microvolt = <2850000>;
179*2c1879a4SJ. Neuschäfer			};
180*2c1879a4SJ. Neuschäfer
181*2c1879a4SJ. Neuschäfer			LDO5 {
182*2c1879a4SJ. Neuschäfer				regulator-name = "AVDD1V8";
183*2c1879a4SJ. Neuschäfer				regulator-min-microvolt = <1800000>;
184*2c1879a4SJ. Neuschäfer				regulator-max-microvolt = <1800000>;
185*2c1879a4SJ. Neuschäfer				regulator-boot-on;
186*2c1879a4SJ. Neuschäfer				regulator-always-on;
187*2c1879a4SJ. Neuschäfer			};
188*2c1879a4SJ. Neuschäfer
189*2c1879a4SJ. Neuschäfer			LDORTC1 {
190*2c1879a4SJ. Neuschäfer				regulator-name = "VDD_LDO";
191*2c1879a4SJ. Neuschäfer				regulator-min-microvolt = <2700000>;
192*2c1879a4SJ. Neuschäfer				regulator-max-microvolt = <2700000>;
193*2c1879a4SJ. Neuschäfer				regulator-boot-on;
194*2c1879a4SJ. Neuschäfer				regulator-always-on;
195*2c1879a4SJ. Neuschäfer			};
196*2c1879a4SJ. Neuschäfer
197*2c1879a4SJ. Neuschäfer			LDORTC2 {
198*2c1879a4SJ. Neuschäfer				regulator-name = "RTC_0V9";
199*2c1879a4SJ. Neuschäfer				regulator-min-microvolt = <900000>;
200*2c1879a4SJ. Neuschäfer				regulator-max-microvolt = <900000>;
201*2c1879a4SJ. Neuschäfer				regulator-boot-on;
202*2c1879a4SJ. Neuschäfer				regulator-always-on;
203*2c1879a4SJ. Neuschäfer			};
204*2c1879a4SJ. Neuschäfer		};
205dac92875SJ. Neuschäfer	};
206dac92875SJ. Neuschäfer
207dac92875SJ. Neuschäfer	eeprom@50 {
208dac92875SJ. Neuschäfer		/* Fairchild FM24C08A */
209dac92875SJ. Neuschäfer		compatible = "atmel,24c08";
210dac92875SJ. Neuschäfer		reg = <0x50>;
211dac92875SJ. Neuschäfer		pagesize = <16>;
212dac92875SJ. Neuschäfer		wp-gpios = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>;
213dac92875SJ. Neuschäfer		num-addresses = <4>;
214dac92875SJ. Neuschäfer	};
215dac92875SJ. Neuschäfer};
216dac92875SJ. Neuschäfer
217dac92875SJ. Neuschäfer&i2c_B {
218dac92875SJ. Neuschäfer	status = "okay";
219dac92875SJ. Neuschäfer	pinctrl-0 = <&i2c_b_pins>;
220dac92875SJ. Neuschäfer	pinctrl-names = "default";
221dac92875SJ. Neuschäfer
222dac92875SJ. Neuschäfer	/* TODO: SiI9293 HDMI receiver @ 0x39 */
223dac92875SJ. Neuschäfer};
224dac92875SJ. Neuschäfer
225*2c1879a4SJ. Neuschäfer&mali {
226*2c1879a4SJ. Neuschäfer	mali-supply = <&vddee>;
227*2c1879a4SJ. Neuschäfer};
228*2c1879a4SJ. Neuschäfer
229dac92875SJ. Neuschäfer&sdhc {
230dac92875SJ. Neuschäfer	status = "okay";
231dac92875SJ. Neuschäfer	pinctrl-0 = <&sdxc_c_pins>;
232dac92875SJ. Neuschäfer	pinctrl-names = "default";
233dac92875SJ. Neuschäfer
234dac92875SJ. Neuschäfer	/* eMMC */
235dac92875SJ. Neuschäfer	bus-width = <8>;
236dac92875SJ. Neuschäfer	max-frequency = <100000000>;
237dac92875SJ. Neuschäfer
238dac92875SJ. Neuschäfer	disable-wp;
239dac92875SJ. Neuschäfer	cap-mmc-highspeed;
240dac92875SJ. Neuschäfer	mmc-hs200-1_8v;
241dac92875SJ. Neuschäfer	no-sdio;
242dac92875SJ. Neuschäfer
243dac92875SJ. Neuschäfer	vmmc-supply = <&vcc_3v3>;
244dac92875SJ. Neuschäfer	vqmmc-supply = <&vcc_3v3>;
245dac92875SJ. Neuschäfer};
246dac92875SJ. Neuschäfer
247dac92875SJ. Neuschäfer&sdio {
248dac92875SJ. Neuschäfer	status = "okay";
249dac92875SJ. Neuschäfer	pinctrl-0 = <&sd_b_pins>;
250dac92875SJ. Neuschäfer
251dac92875SJ. Neuschäfer	/* SD card */
252dac92875SJ. Neuschäfer	slot@1 {
253dac92875SJ. Neuschäfer		compatible = "mmc-slot";
254dac92875SJ. Neuschäfer		reg = <1>;
255dac92875SJ. Neuschäfer		status = "okay";
256dac92875SJ. Neuschäfer
257dac92875SJ. Neuschäfer		bus-width = <4>;
258dac92875SJ. Neuschäfer		cap-mmc-highspeed;
259dac92875SJ. Neuschäfer		cap-sd-highspeed;
260dac92875SJ. Neuschäfer		disable-wp;
261dac92875SJ. Neuschäfer
262dac92875SJ. Neuschäfer		cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
263dac92875SJ. Neuschäfer
264dac92875SJ. Neuschäfer		vmmc-supply = <&vcc_3v3>;
265dac92875SJ. Neuschäfer	};
266dac92875SJ. Neuschäfer};
267dac92875SJ. Neuschäfer
268dac92875SJ. Neuschäfer&uart_AO {
269dac92875SJ. Neuschäfer	status = "okay";
270dac92875SJ. Neuschäfer	pinctrl-0 = <&uart_ao_a_pins>;
271dac92875SJ. Neuschäfer	pinctrl-names = "default";
272dac92875SJ. Neuschäfer};
273dac92875SJ. Neuschäfer
274dac92875SJ. Neuschäfer&usb0 {
275dac92875SJ. Neuschäfer	status = "okay";
276dac92875SJ. Neuschäfer};
277dac92875SJ. Neuschäfer
278dac92875SJ. Neuschäfer&usb0_phy {
279dac92875SJ. Neuschäfer	status = "okay";
280*2c1879a4SJ. Neuschäfer	phy-supply = <&vcc1v8_usb>;
281dac92875SJ. Neuschäfer};
282dac92875SJ. Neuschäfer
283dac92875SJ. Neuschäfer&usb1 {
284dac92875SJ. Neuschäfer	status = "okay";
285dac92875SJ. Neuschäfer	dr_mode = "host";
286dac92875SJ. Neuschäfer	#address-cells = <1>;
287dac92875SJ. Neuschäfer	#size-cells = <0>;
288dac92875SJ. Neuschäfer
289dac92875SJ. Neuschäfer	wifi: wifi@1 {
290dac92875SJ. Neuschäfer		/* Realtek RTL8188 2.4GHz WiFi module */
291dac92875SJ. Neuschäfer		compatible = "usbbda,179";
292dac92875SJ. Neuschäfer		reg = <1>;
293dac92875SJ. Neuschäfer		vdd-supply = <&wifi_3v3>;
294dac92875SJ. Neuschäfer	};
295dac92875SJ. Neuschäfer};
296dac92875SJ. Neuschäfer
297dac92875SJ. Neuschäfer&usb1_phy {
298dac92875SJ. Neuschäfer	status = "okay";
299*2c1879a4SJ. Neuschäfer	phy-supply = <&vcc1v8_usb>;
300dac92875SJ. Neuschäfer};
301dac92875SJ. Neuschäfer
302dac92875SJ. Neuschäfer&ir_receiver {
303dac92875SJ. Neuschäfer	status = "okay";
304dac92875SJ. Neuschäfer	pinctrl-0 = <&ir_recv_pins>;
305dac92875SJ. Neuschäfer	pinctrl-names = "default";
306dac92875SJ. Neuschäfer};
307