10262f273SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 20262f273SNeil Armstrong/* 30262f273SNeil Armstrong * Copyright (c) 2023 Neil Armstrong <neil.armstrong@linaro.org> 40262f273SNeil Armstrong */ 50262f273SNeil Armstrong 60262f273SNeil Armstrong#include "meson-g12b-a311d.dtsi" 70262f273SNeil Armstrong#include <dt-bindings/gpio/meson-g12a-gpio.h> 80262f273SNeil Armstrong 90262f273SNeil Armstrong/ { 100262f273SNeil Armstrong aliases { 110262f273SNeil Armstrong serial0 = &uart_AO; 120262f273SNeil Armstrong rtc1 = &vrtc; 130262f273SNeil Armstrong }; 140262f273SNeil Armstrong 150262f273SNeil Armstrong chosen { 160262f273SNeil Armstrong stdout-path = "serial0:115200n8"; 170262f273SNeil Armstrong }; 180262f273SNeil Armstrong 190262f273SNeil Armstrong emmc_pwrseq: emmc-pwrseq { 200262f273SNeil Armstrong compatible = "mmc-pwrseq-emmc"; 210262f273SNeil Armstrong reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>; 220262f273SNeil Armstrong }; 230262f273SNeil Armstrong 240262f273SNeil Armstrong memory@0 { 250262f273SNeil Armstrong device_type = "memory"; 260262f273SNeil Armstrong reg = <0x0 0x0 0x0 0x40000000>; 270262f273SNeil Armstrong }; 280262f273SNeil Armstrong 290262f273SNeil Armstrong sdio_pwrseq: sdio-pwrseq { 300262f273SNeil Armstrong compatible = "mmc-pwrseq-simple"; 310262f273SNeil Armstrong reset-gpios = <&gpio GPIOAO_6 GPIO_ACTIVE_LOW>; 320262f273SNeil Armstrong clocks = <&wifi32k>; 330262f273SNeil Armstrong clock-names = "ext_clock"; 340262f273SNeil Armstrong }; 350262f273SNeil Armstrong 360262f273SNeil Armstrong emmc_1v8: regulator-emmc-1v8 { 370262f273SNeil Armstrong compatible = "regulator-fixed"; 380262f273SNeil Armstrong regulator-name = "EMMC_1V8"; 390262f273SNeil Armstrong regulator-min-microvolt = <1800000>; 400262f273SNeil Armstrong regulator-max-microvolt = <1800000>; 410262f273SNeil Armstrong vin-supply = <&vddao_3v3>; 420262f273SNeil Armstrong regulator-always-on; 430262f273SNeil Armstrong }; 440262f273SNeil Armstrong 450262f273SNeil Armstrong dc_in: regulator-dc-in { 460262f273SNeil Armstrong compatible = "regulator-fixed"; 470262f273SNeil Armstrong regulator-name = "DC_IN"; 480262f273SNeil Armstrong regulator-min-microvolt = <5000000>; 490262f273SNeil Armstrong regulator-max-microvolt = <5000000>; 500262f273SNeil Armstrong regulator-always-on; 510262f273SNeil Armstrong }; 520262f273SNeil Armstrong 530262f273SNeil Armstrong vddio_c: regulator-vddio-c { 540262f273SNeil Armstrong compatible = "regulator-gpio"; 550262f273SNeil Armstrong regulator-name = "VDDIO_C"; 560262f273SNeil Armstrong regulator-min-microvolt = <1800000>; 570262f273SNeil Armstrong regulator-max-microvolt = <3300000>; 580262f273SNeil Armstrong 5901457f6fSKrzysztof Kozlowski enable-gpios = <&gpio_ao GPIOAO_3 GPIO_OPEN_DRAIN>; 600262f273SNeil Armstrong enable-active-high; 610262f273SNeil Armstrong regulator-always-on; 620262f273SNeil Armstrong 630262f273SNeil Armstrong gpios = <&gpio_ao GPIOAO_9 GPIO_OPEN_DRAIN>; 640262f273SNeil Armstrong gpios-states = <1>; 650262f273SNeil Armstrong 660262f273SNeil Armstrong states = <1800000 0>, 670262f273SNeil Armstrong <3300000 1>; 680262f273SNeil Armstrong }; 690262f273SNeil Armstrong 700262f273SNeil Armstrong vddao_1v8: regulator-vddao-1v8 { 710262f273SNeil Armstrong compatible = "regulator-fixed"; 720262f273SNeil Armstrong regulator-name = "VDDAO_1V8"; 730262f273SNeil Armstrong regulator-min-microvolt = <1800000>; 740262f273SNeil Armstrong regulator-max-microvolt = <1800000>; 750262f273SNeil Armstrong vin-supply = <&vddao_3v3>; 760262f273SNeil Armstrong regulator-always-on; 770262f273SNeil Armstrong }; 780262f273SNeil Armstrong 790262f273SNeil Armstrong vddao_3v3: regulator-vddao-3v3 { 800262f273SNeil Armstrong compatible = "regulator-fixed"; 810262f273SNeil Armstrong regulator-name = "VDDAO_3V3"; 820262f273SNeil Armstrong regulator-min-microvolt = <3300000>; 830262f273SNeil Armstrong regulator-max-microvolt = <3300000>; 840262f273SNeil Armstrong vin-supply = <&dc_in>; 850262f273SNeil Armstrong regulator-always-on; 860262f273SNeil Armstrong }; 870262f273SNeil Armstrong 880262f273SNeil Armstrong vddcpu_a: regulator-vddcpu-a { 890262f273SNeil Armstrong /* 900262f273SNeil Armstrong * MP8756GD DC/DC Regulator. 910262f273SNeil Armstrong */ 920262f273SNeil Armstrong compatible = "pwm-regulator"; 930262f273SNeil Armstrong 940262f273SNeil Armstrong regulator-name = "VDDCPU_A"; 950262f273SNeil Armstrong regulator-min-microvolt = <680000>; 960262f273SNeil Armstrong regulator-max-microvolt = <1040000>; 970262f273SNeil Armstrong 980262f273SNeil Armstrong pwm-supply = <&dc_in>; 990262f273SNeil Armstrong 1000262f273SNeil Armstrong pwms = <&pwm_ab 0 1250 0>; 1010262f273SNeil Armstrong pwm-dutycycle-range = <100 0>; 1020262f273SNeil Armstrong 1030262f273SNeil Armstrong regulator-boot-on; 1040262f273SNeil Armstrong regulator-always-on; 1050262f273SNeil Armstrong }; 1060262f273SNeil Armstrong 1070262f273SNeil Armstrong vddcpu_b: regulator-vddcpu-b { 1080262f273SNeil Armstrong /* 1090262f273SNeil Armstrong * SY8120B1ABC DC/DC Regulator. 1100262f273SNeil Armstrong */ 1110262f273SNeil Armstrong compatible = "pwm-regulator"; 1120262f273SNeil Armstrong 1130262f273SNeil Armstrong regulator-name = "VDDCPU_B"; 1140262f273SNeil Armstrong regulator-min-microvolt = <680000>; 1150262f273SNeil Armstrong regulator-max-microvolt = <1040000>; 1160262f273SNeil Armstrong 1170262f273SNeil Armstrong pwm-supply = <&dc_in>; 1180262f273SNeil Armstrong 1190262f273SNeil Armstrong pwms = <&pwm_AO_cd 1 1250 0>; 1200262f273SNeil Armstrong pwm-dutycycle-range = <100 0>; 1210262f273SNeil Armstrong 1220262f273SNeil Armstrong regulator-boot-on; 1230262f273SNeil Armstrong regulator-always-on; 1240262f273SNeil Armstrong }; 1250262f273SNeil Armstrong 1260262f273SNeil Armstrong wifi32k: wifi32k { 1270262f273SNeil Armstrong compatible = "pwm-clock"; 1280262f273SNeil Armstrong #clock-cells = <0>; 1290262f273SNeil Armstrong clock-frequency = <32768>; 1300262f273SNeil Armstrong pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ 1310262f273SNeil Armstrong }; 1320262f273SNeil Armstrong}; 1330262f273SNeil Armstrong 1340262f273SNeil Armstrong&arb { 1350262f273SNeil Armstrong status = "okay"; 1360262f273SNeil Armstrong}; 1370262f273SNeil Armstrong 1380262f273SNeil Armstrong&clkc_audio { 1390262f273SNeil Armstrong status = "okay"; 1400262f273SNeil Armstrong}; 1410262f273SNeil Armstrong 1420262f273SNeil Armstrong&cec_AO { 1430262f273SNeil Armstrong pinctrl-0 = <&cec_ao_a_h_pins>; 1440262f273SNeil Armstrong pinctrl-names = "default"; 1450262f273SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 1460262f273SNeil Armstrong}; 1470262f273SNeil Armstrong 1480262f273SNeil Armstrong&cecb_AO { 1490262f273SNeil Armstrong pinctrl-0 = <&cec_ao_b_h_pins>; 1500262f273SNeil Armstrong pinctrl-names = "default"; 1510262f273SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 1520262f273SNeil Armstrong}; 1530262f273SNeil Armstrong 1540262f273SNeil Armstrong&cpu0 { 1550262f273SNeil Armstrong cpu-supply = <&vddcpu_b>; 1560262f273SNeil Armstrong operating-points-v2 = <&cpu_opp_table_0>; 1570262f273SNeil Armstrong clocks = <&clkc CLKID_CPU_CLK>; 1580262f273SNeil Armstrong clock-latency = <50000>; 1590262f273SNeil Armstrong}; 1600262f273SNeil Armstrong 1610262f273SNeil Armstrong&cpu1 { 1620262f273SNeil Armstrong cpu-supply = <&vddcpu_b>; 1630262f273SNeil Armstrong operating-points-v2 = <&cpu_opp_table_0>; 1640262f273SNeil Armstrong clocks = <&clkc CLKID_CPU_CLK>; 1650262f273SNeil Armstrong clock-latency = <50000>; 1660262f273SNeil Armstrong}; 1670262f273SNeil Armstrong 1680262f273SNeil Armstrong&cpu100 { 1690262f273SNeil Armstrong cpu-supply = <&vddcpu_a>; 1700262f273SNeil Armstrong operating-points-v2 = <&cpub_opp_table_1>; 1710262f273SNeil Armstrong clocks = <&clkc CLKID_CPUB_CLK>; 1720262f273SNeil Armstrong clock-latency = <50000>; 1730262f273SNeil Armstrong}; 1740262f273SNeil Armstrong 1750262f273SNeil Armstrong&cpu101 { 1760262f273SNeil Armstrong cpu-supply = <&vddcpu_a>; 1770262f273SNeil Armstrong operating-points-v2 = <&cpub_opp_table_1>; 1780262f273SNeil Armstrong clocks = <&clkc CLKID_CPUB_CLK>; 1790262f273SNeil Armstrong clock-latency = <50000>; 1800262f273SNeil Armstrong}; 1810262f273SNeil Armstrong 1820262f273SNeil Armstrong&cpu102 { 1830262f273SNeil Armstrong cpu-supply = <&vddcpu_a>; 1840262f273SNeil Armstrong operating-points-v2 = <&cpub_opp_table_1>; 1850262f273SNeil Armstrong clocks = <&clkc CLKID_CPUB_CLK>; 1860262f273SNeil Armstrong clock-latency = <50000>; 1870262f273SNeil Armstrong}; 1880262f273SNeil Armstrong 1890262f273SNeil Armstrong&cpu103 { 1900262f273SNeil Armstrong cpu-supply = <&vddcpu_a>; 1910262f273SNeil Armstrong operating-points-v2 = <&cpub_opp_table_1>; 1920262f273SNeil Armstrong clocks = <&clkc CLKID_CPUB_CLK>; 1930262f273SNeil Armstrong clock-latency = <50000>; 1940262f273SNeil Armstrong}; 1950262f273SNeil Armstrong 1960262f273SNeil Armstrong&ext_mdio { 1970262f273SNeil Armstrong external_phy: ethernet-phy@0 { 1980262f273SNeil Armstrong /* Realtek RTL8211F (0x001cc916) */ 1990262f273SNeil Armstrong reg = <0>; 2000262f273SNeil Armstrong max-speed = <1000>; 2010262f273SNeil Armstrong 2020262f273SNeil Armstrong interrupt-parent = <&gpio_intc>; 2030262f273SNeil Armstrong /* MAC_INTR on GPIOZ_14 */ 204*6387e0aaSHuqiang Qin interrupts = <IRQID_GPIOZ_14 IRQ_TYPE_LEVEL_LOW>; 2050262f273SNeil Armstrong }; 2060262f273SNeil Armstrong}; 2070262f273SNeil Armstrong 2080262f273SNeil Armstrong/* Ethernet to be enabled in baseboard DT */ 2090262f273SNeil Armstrongðmac { 2100262f273SNeil Armstrong pinctrl-0 = <ð_pins>, <ð_rgmii_pins>; 2110262f273SNeil Armstrong pinctrl-names = "default"; 2120262f273SNeil Armstrong phy-mode = "rgmii-txid"; 2130262f273SNeil Armstrong phy-handle = <&external_phy>; 2140262f273SNeil Armstrong}; 2150262f273SNeil Armstrong 2160262f273SNeil Armstrong&frddr_a { 2170262f273SNeil Armstrong status = "okay"; 2180262f273SNeil Armstrong}; 2190262f273SNeil Armstrong 2200262f273SNeil Armstrong&frddr_b { 2210262f273SNeil Armstrong status = "okay"; 2220262f273SNeil Armstrong}; 2230262f273SNeil Armstrong 2240262f273SNeil Armstrong&frddr_c { 2250262f273SNeil Armstrong status = "okay"; 2260262f273SNeil Armstrong}; 2270262f273SNeil Armstrong 2280262f273SNeil Armstrong/* HDMI to be enabled in baseboard DT */ 2290262f273SNeil Armstrong&hdmi_tx { 2300262f273SNeil Armstrong pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>; 2310262f273SNeil Armstrong pinctrl-names = "default"; 2320262f273SNeil Armstrong hdmi-supply = <&dc_in>; 2330262f273SNeil Armstrong}; 2340262f273SNeil Armstrong 2350262f273SNeil Armstrong/* "Camera" I2C bus */ 2360262f273SNeil Armstrong&i2c1 { 2370262f273SNeil Armstrong pinctrl-0 = <&i2c1_sda_h6_pins>, <&i2c1_sck_h7_pins>; 2380262f273SNeil Armstrong pinctrl-names = "default"; 2390262f273SNeil Armstrong}; 2400262f273SNeil Armstrong 2410262f273SNeil Armstrong/* Main I2C bus */ 2420262f273SNeil Armstrong&i2c2 { 2430262f273SNeil Armstrong pinctrl-0 = <&i2c2_sda_x_pins>, <&i2c2_sck_x_pins>; 2440262f273SNeil Armstrong pinctrl-names = "default"; 2450262f273SNeil Armstrong}; 2460262f273SNeil Armstrong 2470262f273SNeil Armstrong/* "ID" I2C bus */ 2480262f273SNeil Armstrong&i2c3 { 2490262f273SNeil Armstrong pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>; 2500262f273SNeil Armstrong pinctrl-names = "default"; 2510262f273SNeil Armstrong}; 2520262f273SNeil Armstrong 2530262f273SNeil Armstrong&pcie { 2540262f273SNeil Armstrong reset-gpios = <&gpio GPIOA_8 GPIO_ACTIVE_LOW>; 2550262f273SNeil Armstrong}; 2560262f273SNeil Armstrong 2570262f273SNeil Armstrong&pwm_ab { 2580262f273SNeil Armstrong pinctrl-0 = <&pwm_a_e_pins>; 2590262f273SNeil Armstrong pinctrl-names = "default"; 2600262f273SNeil Armstrong clocks = <&xtal>; 2610262f273SNeil Armstrong clock-names = "clkin0"; 2620262f273SNeil Armstrong 2630262f273SNeil Armstrong status = "okay"; 2640262f273SNeil Armstrong}; 2650262f273SNeil Armstrong 2660262f273SNeil Armstrong&pwm_ef { 2670262f273SNeil Armstrong pinctrl-0 = <&pwm_e_pins>; 2680262f273SNeil Armstrong pinctrl-names = "default"; 2690262f273SNeil Armstrong 2700262f273SNeil Armstrong status = "okay"; 2710262f273SNeil Armstrong}; 2720262f273SNeil Armstrong 2730262f273SNeil Armstrong&pwm_AO_cd { 2740262f273SNeil Armstrong pinctrl-0 = <&pwm_ao_d_e_pins>; 2750262f273SNeil Armstrong pinctrl-names = "default"; 2760262f273SNeil Armstrong clocks = <&xtal>; 2770262f273SNeil Armstrong clock-names = "clkin1"; 2780262f273SNeil Armstrong 2790262f273SNeil Armstrong status = "okay"; 2800262f273SNeil Armstrong}; 2810262f273SNeil Armstrong 2820262f273SNeil Armstrong&saradc { 2830262f273SNeil Armstrong vref-supply = <&vddao_1v8>; 2840262f273SNeil Armstrong 2850262f273SNeil Armstrong status = "okay"; 2860262f273SNeil Armstrong}; 2870262f273SNeil Armstrong 2880262f273SNeil Armstrong/* on-module SDIO WiFi */ 2890262f273SNeil Armstrong&sd_emmc_a { 2900262f273SNeil Armstrong pinctrl-0 = <&sdio_pins>; 2910262f273SNeil Armstrong pinctrl-1 = <&sdio_clk_gate_pins>; 2920262f273SNeil Armstrong pinctrl-names = "default", "clk-gate"; 2930262f273SNeil Armstrong #address-cells = <1>; 2940262f273SNeil Armstrong #size-cells = <0>; 2950262f273SNeil Armstrong 2960262f273SNeil Armstrong bus-width = <4>; 2970262f273SNeil Armstrong sd-uhs-sdr104; 2980262f273SNeil Armstrong max-frequency = <50000000>; 2990262f273SNeil Armstrong 3000262f273SNeil Armstrong non-removable; 3010262f273SNeil Armstrong disable-wp; 3020262f273SNeil Armstrong 3030262f273SNeil Armstrong /* WiFi firmware requires power in suspend */ 3040262f273SNeil Armstrong keep-power-in-suspend; 3050262f273SNeil Armstrong 3060262f273SNeil Armstrong mmc-pwrseq = <&sdio_pwrseq>; 3070262f273SNeil Armstrong 3080262f273SNeil Armstrong vmmc-supply = <&vddao_3v3>; 3090262f273SNeil Armstrong vqmmc-supply = <&vddao_3v3>; 3100262f273SNeil Armstrong 3110262f273SNeil Armstrong status = "okay"; 3120262f273SNeil Armstrong 3130262f273SNeil Armstrong rtl8822cs: wifi@1 { 3140262f273SNeil Armstrong reg = <1>; 3150262f273SNeil Armstrong }; 3160262f273SNeil Armstrong}; 3170262f273SNeil Armstrong 3180262f273SNeil Armstrong/* SD card to be enabled in baseboard DT */ 3190262f273SNeil Armstrong&sd_emmc_b { 3200262f273SNeil Armstrong pinctrl-0 = <&sdcard_c_pins>; 3210262f273SNeil Armstrong pinctrl-1 = <&sdcard_clk_gate_c_pins>; 3220262f273SNeil Armstrong pinctrl-names = "default", "clk-gate"; 3230262f273SNeil Armstrong 3240262f273SNeil Armstrong bus-width = <4>; 3250262f273SNeil Armstrong cap-sd-highspeed; 3260262f273SNeil Armstrong max-frequency = <50000000>; 3270262f273SNeil Armstrong disable-wp; 3280262f273SNeil Armstrong 3290262f273SNeil Armstrong cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; 3300262f273SNeil Armstrong vmmc-supply = <&vddao_3v3>; 3310262f273SNeil Armstrong vqmmc-supply = <&vddio_c>; 3320262f273SNeil Armstrong}; 3330262f273SNeil Armstrong 3340262f273SNeil Armstrong/* on-module eMMC */ 3350262f273SNeil Armstrong&sd_emmc_c { 3360262f273SNeil Armstrong pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>; 3370262f273SNeil Armstrong pinctrl-1 = <&emmc_clk_gate_pins>; 3380262f273SNeil Armstrong pinctrl-names = "default", "clk-gate"; 3390262f273SNeil Armstrong 3400262f273SNeil Armstrong bus-width = <8>; 3410262f273SNeil Armstrong cap-mmc-highspeed; 3420262f273SNeil Armstrong mmc-ddr-1_8v; 3430262f273SNeil Armstrong mmc-hs200-1_8v; 3440262f273SNeil Armstrong max-frequency = <200000000>; 3450262f273SNeil Armstrong disable-wp; 3460262f273SNeil Armstrong 3470262f273SNeil Armstrong mmc-pwrseq = <&emmc_pwrseq>; 3480262f273SNeil Armstrong vmmc-supply = <&vddao_3v3>; 3490262f273SNeil Armstrong vqmmc-supply = <&vddao_1v8>; 3500262f273SNeil Armstrong 3510262f273SNeil Armstrong status = "okay"; 3520262f273SNeil Armstrong}; 3530262f273SNeil Armstrong 3540262f273SNeil Armstrong&tdmif_b { 3550262f273SNeil Armstrong status = "okay"; 3560262f273SNeil Armstrong}; 3570262f273SNeil Armstrong 3580262f273SNeil Armstrong&tdmout_b { 3590262f273SNeil Armstrong status = "okay"; 3600262f273SNeil Armstrong}; 3610262f273SNeil Armstrong 3620262f273SNeil Armstrong/* on-module UART BT */ 3630262f273SNeil Armstrong&uart_A { 3640262f273SNeil Armstrong pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; 3650262f273SNeil Armstrong pinctrl-names = "default"; 3660262f273SNeil Armstrong uart-has-rtscts; 3670262f273SNeil Armstrong 3680262f273SNeil Armstrong status = "okay"; 3690262f273SNeil Armstrong 3700262f273SNeil Armstrong bluetooth { 3710262f273SNeil Armstrong compatible = "realtek,rtl8822cs-bt"; 3720262f273SNeil Armstrong enable-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; 3730262f273SNeil Armstrong host-wake-gpios = <&gpio GPIOX_19 GPIO_ACTIVE_HIGH>; 3740262f273SNeil Armstrong device-wake-gpios = <&gpio GPIOX_18 GPIO_ACTIVE_HIGH>; 3750262f273SNeil Armstrong }; 3760262f273SNeil Armstrong}; 3770262f273SNeil Armstrong 3780262f273SNeil Armstrong&uart_AO { 3790262f273SNeil Armstrong pinctrl-0 = <&uart_ao_a_pins>; 3800262f273SNeil Armstrong pinctrl-names = "default"; 3810262f273SNeil Armstrong 3820262f273SNeil Armstrong status = "okay"; 3830262f273SNeil Armstrong}; 3840262f273SNeil Armstrong 3850262f273SNeil Armstrong&usb { 3860262f273SNeil Armstrong phys = <&usb2_phy0>, <&usb2_phy1>; 3870262f273SNeil Armstrong phy-names = "usb2-phy0", "usb2-phy1"; 3880262f273SNeil Armstrong}; 389