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ðmac { 93dac92875SJ. Neuschäfer status = "okay"; 94dac92875SJ. Neuschäfer pinctrl-0 = <ð_pins>; 95dac92875SJ. Neuschäfer pinctrl-names = "default"; 96dac92875SJ. Neuschäfer phy-handle = <ð_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