14f26cc1cSNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 24f26cc1cSNeil Armstrong/* 34f26cc1cSNeil Armstrong * Copyright (c) 2019 BayLibre, SAS 44f26cc1cSNeil Armstrong * Author: Neil Armstrong <narmstrong@baylibre.com> 54f26cc1cSNeil Armstrong * Copyright (c) 2019 Christian Hewitt <christianshewitt@gmail.com> 64f26cc1cSNeil Armstrong */ 74f26cc1cSNeil Armstrong 84f26cc1cSNeil Armstrong#include <dt-bindings/input/input.h> 96714f281SChristian Hewitt#include <dt-bindings/leds/common.h> 104f26cc1cSNeil Armstrong#include <dt-bindings/gpio/meson-g12a-gpio.h> 117c9c0624SJerome Brunet#include <dt-bindings/sound/meson-g12a-tohdmitx.h> 124f26cc1cSNeil Armstrong 134f26cc1cSNeil Armstrong/ { 144f26cc1cSNeil Armstrong aliases { 154f26cc1cSNeil Armstrong serial0 = &uart_AO; 164f26cc1cSNeil Armstrong ethernet0 = ðmac; 17a6077652SChristian Hewitt rtc0 = &rtc; 18a6077652SChristian Hewitt rtc1 = &vrtc; 194f26cc1cSNeil Armstrong }; 204f26cc1cSNeil Armstrong 214f26cc1cSNeil Armstrong chosen { 224f26cc1cSNeil Armstrong stdout-path = "serial0:115200n8"; 234f26cc1cSNeil Armstrong }; 244f26cc1cSNeil Armstrong 254f26cc1cSNeil Armstrong memory@0 { 264f26cc1cSNeil Armstrong device_type = "memory"; 274f26cc1cSNeil Armstrong reg = <0x0 0x0 0x0 0x80000000>; 284f26cc1cSNeil Armstrong }; 294f26cc1cSNeil Armstrong 304f26cc1cSNeil Armstrong adc-keys { 314f26cc1cSNeil Armstrong compatible = "adc-keys"; 324f26cc1cSNeil Armstrong io-channels = <&saradc 2>; 334f26cc1cSNeil Armstrong io-channel-names = "buttons"; 344f26cc1cSNeil Armstrong keyup-threshold-microvolt = <1710000>; 354f26cc1cSNeil Armstrong 364f26cc1cSNeil Armstrong button-function { 374f26cc1cSNeil Armstrong label = "Function"; 384f26cc1cSNeil Armstrong linux,code = <KEY_FN>; 394f26cc1cSNeil Armstrong press-threshold-microvolt = <10000>; 404f26cc1cSNeil Armstrong }; 414f26cc1cSNeil Armstrong }; 424f26cc1cSNeil Armstrong 434f26cc1cSNeil Armstrong leds { 444f26cc1cSNeil Armstrong compatible = "gpio-leds"; 454f26cc1cSNeil Armstrong 46d9421d6cSKevin Hilman led-white { 476714f281SChristian Hewitt color = <LED_COLOR_ID_WHITE>; 486714f281SChristian Hewitt function = LED_FUNCTION_STATUS; 491f9d87d0SJerome Brunet gpios = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_HIGH>; 504f26cc1cSNeil Armstrong linux,default-trigger = "heartbeat"; 514f26cc1cSNeil Armstrong }; 524f26cc1cSNeil Armstrong 53d9421d6cSKevin Hilman led-red { 546714f281SChristian Hewitt color = <LED_COLOR_ID_RED>; 556714f281SChristian Hewitt function = LED_FUNCTION_STATUS; 561f9d87d0SJerome Brunet gpios = <&gpio_expander 5 GPIO_ACTIVE_HIGH>; 574f26cc1cSNeil Armstrong }; 584f26cc1cSNeil Armstrong }; 594f26cc1cSNeil Armstrong 604f26cc1cSNeil Armstrong emmc_pwrseq: emmc-pwrseq { 614f26cc1cSNeil Armstrong compatible = "mmc-pwrseq-emmc"; 624f26cc1cSNeil Armstrong reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>; 634f26cc1cSNeil Armstrong }; 644f26cc1cSNeil Armstrong 654f26cc1cSNeil Armstrong gpio-keys-polled { 664f26cc1cSNeil Armstrong compatible = "gpio-keys-polled"; 674f26cc1cSNeil Armstrong poll-interval = <100>; 684f26cc1cSNeil Armstrong 694f26cc1cSNeil Armstrong power-button { 704f26cc1cSNeil Armstrong label = "power"; 714f26cc1cSNeil Armstrong linux,code = <KEY_POWER>; 724f26cc1cSNeil Armstrong gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_LOW>; 734f26cc1cSNeil Armstrong }; 744f26cc1cSNeil Armstrong }; 754f26cc1cSNeil Armstrong 764f26cc1cSNeil Armstrong sdio_pwrseq: sdio-pwrseq { 774f26cc1cSNeil Armstrong compatible = "mmc-pwrseq-simple"; 784f26cc1cSNeil Armstrong reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; 794f26cc1cSNeil Armstrong clocks = <&wifi32k>; 804f26cc1cSNeil Armstrong clock-names = "ext_clock"; 814f26cc1cSNeil Armstrong }; 824f26cc1cSNeil Armstrong 834f26cc1cSNeil Armstrong dc_in: regulator-dc_in { 844f26cc1cSNeil Armstrong compatible = "regulator-fixed"; 854f26cc1cSNeil Armstrong regulator-name = "DC_IN"; 864f26cc1cSNeil Armstrong regulator-min-microvolt = <5000000>; 874f26cc1cSNeil Armstrong regulator-max-microvolt = <5000000>; 884f26cc1cSNeil Armstrong regulator-always-on; 894f26cc1cSNeil Armstrong }; 904f26cc1cSNeil Armstrong 914f26cc1cSNeil Armstrong vcc_5v: regulator-vcc_5v { 924f26cc1cSNeil Armstrong compatible = "regulator-fixed"; 934f26cc1cSNeil Armstrong regulator-name = "VCC_5V"; 944f26cc1cSNeil Armstrong regulator-min-microvolt = <5000000>; 954f26cc1cSNeil Armstrong regulator-max-microvolt = <5000000>; 964f26cc1cSNeil Armstrong vin-supply = <&dc_in>; 974f26cc1cSNeil Armstrong 984f26cc1cSNeil Armstrong gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>; 994f26cc1cSNeil Armstrong enable-active-high; 1004f26cc1cSNeil Armstrong }; 1014f26cc1cSNeil Armstrong 1024f26cc1cSNeil Armstrong vcc_1v8: regulator-vcc_1v8 { 1034f26cc1cSNeil Armstrong compatible = "regulator-fixed"; 1044f26cc1cSNeil Armstrong regulator-name = "VCC_1V8"; 1054f26cc1cSNeil Armstrong regulator-min-microvolt = <1800000>; 1064f26cc1cSNeil Armstrong regulator-max-microvolt = <1800000>; 1074f26cc1cSNeil Armstrong vin-supply = <&vcc_3v3>; 1084f26cc1cSNeil Armstrong regulator-always-on; 1094f26cc1cSNeil Armstrong }; 1104f26cc1cSNeil Armstrong 1114f26cc1cSNeil Armstrong vcc_3v3: regulator-vcc_3v3 { 1124f26cc1cSNeil Armstrong compatible = "regulator-fixed"; 1134f26cc1cSNeil Armstrong regulator-name = "VCC_3V3"; 1144f26cc1cSNeil Armstrong regulator-min-microvolt = <3300000>; 1154f26cc1cSNeil Armstrong regulator-max-microvolt = <3300000>; 1164f26cc1cSNeil Armstrong vin-supply = <&vsys_3v3>; 1174f26cc1cSNeil Armstrong regulator-always-on; 1184f26cc1cSNeil Armstrong /* FIXME: actually controlled by VDDCPU_B_EN */ 1194f26cc1cSNeil Armstrong }; 1204f26cc1cSNeil Armstrong 1214f26cc1cSNeil Armstrong vddao_1v8: regulator-vddao_1v8 { 1224f26cc1cSNeil Armstrong compatible = "regulator-fixed"; 1234f26cc1cSNeil Armstrong regulator-name = "VDDIO_AO1V8"; 1244f26cc1cSNeil Armstrong regulator-min-microvolt = <1800000>; 1254f26cc1cSNeil Armstrong regulator-max-microvolt = <1800000>; 1264f26cc1cSNeil Armstrong vin-supply = <&vsys_3v3>; 1274f26cc1cSNeil Armstrong regulator-always-on; 1284f26cc1cSNeil Armstrong }; 1294f26cc1cSNeil Armstrong 1304f26cc1cSNeil Armstrong emmc_1v8: regulator-emmc_1v8 { 1314f26cc1cSNeil Armstrong compatible = "regulator-fixed"; 1324f26cc1cSNeil Armstrong regulator-name = "EMMC_AO1V8"; 1334f26cc1cSNeil Armstrong regulator-min-microvolt = <1800000>; 1344f26cc1cSNeil Armstrong regulator-max-microvolt = <1800000>; 1354f26cc1cSNeil Armstrong vin-supply = <&vcc_3v3>; 1364f26cc1cSNeil Armstrong regulator-always-on; 1374f26cc1cSNeil Armstrong }; 1384f26cc1cSNeil Armstrong 1394f26cc1cSNeil Armstrong vsys_3v3: regulator-vsys_3v3 { 1404f26cc1cSNeil Armstrong compatible = "regulator-fixed"; 1414f26cc1cSNeil Armstrong regulator-name = "VSYS_3V3"; 1424f26cc1cSNeil Armstrong regulator-min-microvolt = <3300000>; 1434f26cc1cSNeil Armstrong regulator-max-microvolt = <3300000>; 1444f26cc1cSNeil Armstrong vin-supply = <&dc_in>; 1454f26cc1cSNeil Armstrong regulator-always-on; 1464f26cc1cSNeil Armstrong }; 1474f26cc1cSNeil Armstrong 1484f26cc1cSNeil Armstrong usb_pwr: regulator-usb_pwr { 1494f26cc1cSNeil Armstrong compatible = "regulator-fixed"; 1504f26cc1cSNeil Armstrong regulator-name = "USB_PWR"; 1514f26cc1cSNeil Armstrong regulator-min-microvolt = <5000000>; 1524f26cc1cSNeil Armstrong regulator-max-microvolt = <5000000>; 1534f26cc1cSNeil Armstrong vin-supply = <&vcc_5v>; 1544f26cc1cSNeil Armstrong 1554f26cc1cSNeil Armstrong gpio = <&gpio GPIOA_6 GPIO_ACTIVE_HIGH>; 1564f26cc1cSNeil Armstrong enable-active-high; 1574f26cc1cSNeil Armstrong }; 1584f26cc1cSNeil Armstrong 1594f26cc1cSNeil Armstrong hdmi-connector { 1604f26cc1cSNeil Armstrong compatible = "hdmi-connector"; 1614f26cc1cSNeil Armstrong type = "a"; 1624f26cc1cSNeil Armstrong 1634f26cc1cSNeil Armstrong port { 1644f26cc1cSNeil Armstrong hdmi_connector_in: endpoint { 1654f26cc1cSNeil Armstrong remote-endpoint = <&hdmi_tx_tmds_out>; 1664f26cc1cSNeil Armstrong }; 1674f26cc1cSNeil Armstrong }; 1684f26cc1cSNeil Armstrong }; 1694f26cc1cSNeil Armstrong 1707c9c0624SJerome Brunet 1717c9c0624SJerome Brunet sound { 1727c9c0624SJerome Brunet compatible = "amlogic,axg-sound-card"; 173933b80edSChristian Hewitt model = "KHADAS-VIM3"; 174*43ffb528SJerome Brunet audio-aux-devs = <&tdmin_a>, <&tdmout_a>; 1757c9c0624SJerome Brunet audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0", 1767c9c0624SJerome Brunet "TDMOUT_A IN 1", "FRDDR_B OUT 0", 1777c9c0624SJerome Brunet "TDMOUT_A IN 2", "FRDDR_C OUT 0", 178*43ffb528SJerome Brunet "TDM_A Playback", "TDMOUT_A OUT", 179*43ffb528SJerome Brunet "TDMIN_A IN 0", "TDM_A Capture", 180*43ffb528SJerome Brunet "TDMIN_A IN 3", "TDM_A Loopback", 181*43ffb528SJerome Brunet "TODDR_A IN 0", "TDMIN_A OUT", 182*43ffb528SJerome Brunet "TODDR_B IN 0", "TDMIN_A OUT", 183*43ffb528SJerome Brunet "TODDR_C IN 0", "TDMIN_A OUT"; 1847c9c0624SJerome Brunet 1857c9c0624SJerome Brunet assigned-clocks = <&clkc CLKID_MPLL2>, 1867c9c0624SJerome Brunet <&clkc CLKID_MPLL0>, 1877c9c0624SJerome Brunet <&clkc CLKID_MPLL1>; 1887c9c0624SJerome Brunet assigned-clock-parents = <0>, <0>, <0>; 1897c9c0624SJerome Brunet assigned-clock-rates = <294912000>, 1907c9c0624SJerome Brunet <270950400>, 1917c9c0624SJerome Brunet <393216000>; 1927c9c0624SJerome Brunet status = "okay"; 1937c9c0624SJerome Brunet 1947c9c0624SJerome Brunet dai-link-0 { 1957c9c0624SJerome Brunet sound-dai = <&frddr_a>; 1967c9c0624SJerome Brunet }; 1977c9c0624SJerome Brunet 1987c9c0624SJerome Brunet dai-link-1 { 1997c9c0624SJerome Brunet sound-dai = <&frddr_b>; 2007c9c0624SJerome Brunet }; 2017c9c0624SJerome Brunet 2027c9c0624SJerome Brunet dai-link-2 { 2037c9c0624SJerome Brunet sound-dai = <&frddr_c>; 2047c9c0624SJerome Brunet }; 2057c9c0624SJerome Brunet 2067c9c0624SJerome Brunet dai-link-3 { 207*43ffb528SJerome Brunet sound-dai = <&toddr_a>; 208*43ffb528SJerome Brunet }; 209*43ffb528SJerome Brunet 210*43ffb528SJerome Brunet dai-link-4 { 211*43ffb528SJerome Brunet sound-dai = <&toddr_b>; 212*43ffb528SJerome Brunet }; 213*43ffb528SJerome Brunet 214*43ffb528SJerome Brunet dai-link-5 { 215*43ffb528SJerome Brunet sound-dai = <&toddr_c>; 216*43ffb528SJerome Brunet }; 217*43ffb528SJerome Brunet 218*43ffb528SJerome Brunet /* 8ch hdmi interface */ 219*43ffb528SJerome Brunet dai-link-6 { 2207c9c0624SJerome Brunet sound-dai = <&tdmif_a>; 2217c9c0624SJerome Brunet dai-format = "i2s"; 2227c9c0624SJerome Brunet dai-tdm-slot-tx-mask-0 = <1 1>; 2237c9c0624SJerome Brunet dai-tdm-slot-tx-mask-1 = <1 1>; 2247c9c0624SJerome Brunet dai-tdm-slot-tx-mask-2 = <1 1>; 2257c9c0624SJerome Brunet dai-tdm-slot-tx-mask-3 = <1 1>; 2267c9c0624SJerome Brunet mclk-fs = <256>; 2277c9c0624SJerome Brunet 2287c9c0624SJerome Brunet codec { 2297c9c0624SJerome Brunet sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>; 2307c9c0624SJerome Brunet }; 2317c9c0624SJerome Brunet }; 2327c9c0624SJerome Brunet 2337c9c0624SJerome Brunet /* hdmi glue */ 234*43ffb528SJerome Brunet dai-link-7 { 2357c9c0624SJerome Brunet sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; 2367c9c0624SJerome Brunet 2377c9c0624SJerome Brunet codec { 2387c9c0624SJerome Brunet sound-dai = <&hdmi_tx>; 2397c9c0624SJerome Brunet }; 2407c9c0624SJerome Brunet }; 2417c9c0624SJerome Brunet }; 2427c9c0624SJerome Brunet 2434f26cc1cSNeil Armstrong wifi32k: wifi32k { 2444f26cc1cSNeil Armstrong compatible = "pwm-clock"; 2454f26cc1cSNeil Armstrong #clock-cells = <0>; 2464f26cc1cSNeil Armstrong clock-frequency = <32768>; 2474f26cc1cSNeil Armstrong pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ 2484f26cc1cSNeil Armstrong }; 2494f26cc1cSNeil Armstrong}; 2504f26cc1cSNeil Armstrong 2517c9c0624SJerome Brunet&arb { 2527c9c0624SJerome Brunet status = "okay"; 2537c9c0624SJerome Brunet}; 2547c9c0624SJerome Brunet 2557c9c0624SJerome Brunet&clkc_audio { 2567c9c0624SJerome Brunet status = "okay"; 2577c9c0624SJerome Brunet}; 2587c9c0624SJerome Brunet 2594f26cc1cSNeil Armstrong&cec_AO { 2604f26cc1cSNeil Armstrong pinctrl-0 = <&cec_ao_a_h_pins>; 2614f26cc1cSNeil Armstrong pinctrl-names = "default"; 2624f26cc1cSNeil Armstrong status = "disabled"; 2634f26cc1cSNeil Armstrong hdmi-phandle = <&hdmi_tx>; 2644f26cc1cSNeil Armstrong}; 2654f26cc1cSNeil Armstrong 2664f26cc1cSNeil Armstrong&cecb_AO { 2674f26cc1cSNeil Armstrong pinctrl-0 = <&cec_ao_b_h_pins>; 2684f26cc1cSNeil Armstrong pinctrl-names = "default"; 2694f26cc1cSNeil Armstrong status = "okay"; 2704f26cc1cSNeil Armstrong hdmi-phandle = <&hdmi_tx>; 2714f26cc1cSNeil Armstrong}; 2724f26cc1cSNeil Armstrong 273cabb1f38SNeil Armstrong&cpu_thermal { 274cabb1f38SNeil Armstrong trips { 275cabb1f38SNeil Armstrong cpu_active: cpu-active { 276cabb1f38SNeil Armstrong temperature = <80000>; /* millicelsius */ 277cabb1f38SNeil Armstrong hysteresis = <2000>; /* millicelsius */ 278cabb1f38SNeil Armstrong type = "active"; 279cabb1f38SNeil Armstrong }; 280cabb1f38SNeil Armstrong }; 281cabb1f38SNeil Armstrong 282cabb1f38SNeil Armstrong cooling-maps { 283cabb1f38SNeil Armstrong map { 284cabb1f38SNeil Armstrong trip = <&cpu_active>; 285cabb1f38SNeil Armstrong cooling-device = <&khadas_mcu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; 286cabb1f38SNeil Armstrong }; 287cabb1f38SNeil Armstrong }; 288cabb1f38SNeil Armstrong}; 289cabb1f38SNeil Armstrong 2904f26cc1cSNeil Armstrong&ext_mdio { 2914f26cc1cSNeil Armstrong external_phy: ethernet-phy@0 { 2924f26cc1cSNeil Armstrong /* Realtek RTL8211F (0x001cc916) */ 2934f26cc1cSNeil Armstrong reg = <0>; 2944f26cc1cSNeil Armstrong max-speed = <1000>; 2954f26cc1cSNeil Armstrong 2964f26cc1cSNeil Armstrong interrupt-parent = <&gpio_intc>; 2974f26cc1cSNeil Armstrong /* MAC_INTR on GPIOZ_14 */ 2984f26cc1cSNeil Armstrong interrupts = <26 IRQ_TYPE_LEVEL_LOW>; 2994f26cc1cSNeil Armstrong }; 3004f26cc1cSNeil Armstrong}; 3014f26cc1cSNeil Armstrong 3024f26cc1cSNeil Armstrongðmac { 3034f26cc1cSNeil Armstrong pinctrl-0 = <ð_pins>, <ð_rgmii_pins>; 3044f26cc1cSNeil Armstrong pinctrl-names = "default"; 3054f26cc1cSNeil Armstrong status = "okay"; 3064f26cc1cSNeil Armstrong phy-mode = "rgmii"; 3074f26cc1cSNeil Armstrong phy-handle = <&external_phy>; 3084f26cc1cSNeil Armstrong amlogic,tx-delay-ns = <2>; 3094f26cc1cSNeil Armstrong}; 3104f26cc1cSNeil Armstrong 3117c9c0624SJerome Brunet&frddr_a { 3127c9c0624SJerome Brunet status = "okay"; 3137c9c0624SJerome Brunet}; 3147c9c0624SJerome Brunet 3157c9c0624SJerome Brunet&frddr_b { 3167c9c0624SJerome Brunet status = "okay"; 3177c9c0624SJerome Brunet}; 3187c9c0624SJerome Brunet 3197c9c0624SJerome Brunet&frddr_c { 3207c9c0624SJerome Brunet status = "okay"; 3217c9c0624SJerome Brunet}; 3227c9c0624SJerome Brunet 3234f26cc1cSNeil Armstrong&hdmi_tx { 3244f26cc1cSNeil Armstrong status = "okay"; 3254f26cc1cSNeil Armstrong pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>; 3264f26cc1cSNeil Armstrong pinctrl-names = "default"; 3274f26cc1cSNeil Armstrong hdmi-supply = <&vcc_5v>; 3284f26cc1cSNeil Armstrong}; 3294f26cc1cSNeil Armstrong 3304f26cc1cSNeil Armstrong&hdmi_tx_tmds_port { 3314f26cc1cSNeil Armstrong hdmi_tx_tmds_out: endpoint { 3324f26cc1cSNeil Armstrong remote-endpoint = <&hdmi_connector_in>; 3334f26cc1cSNeil Armstrong }; 3344f26cc1cSNeil Armstrong}; 3354f26cc1cSNeil Armstrong 3364f26cc1cSNeil Armstrong&i2c_AO { 3374f26cc1cSNeil Armstrong status = "okay"; 3384f26cc1cSNeil Armstrong pinctrl-0 = <&i2c_ao_sck_pins>, <&i2c_ao_sda_pins>; 3394f26cc1cSNeil Armstrong pinctrl-names = "default"; 3404f26cc1cSNeil Armstrong 341cabb1f38SNeil Armstrong khadas_mcu: system-controller@18 { 342cabb1f38SNeil Armstrong compatible = "khadas,mcu"; 343cabb1f38SNeil Armstrong reg = <0x18>; 344cabb1f38SNeil Armstrong #cooling-cells = <2>; 345cabb1f38SNeil Armstrong }; 346cabb1f38SNeil Armstrong 3474f26cc1cSNeil Armstrong gpio_expander: gpio-controller@20 { 3484f26cc1cSNeil Armstrong compatible = "ti,tca6408"; 3494f26cc1cSNeil Armstrong reg = <0x20>; 3504f26cc1cSNeil Armstrong vcc-supply = <&vcc_3v3>; 3514f26cc1cSNeil Armstrong gpio-controller; 3524f26cc1cSNeil Armstrong #gpio-cells = <2>; 3534f26cc1cSNeil Armstrong }; 3544f26cc1cSNeil Armstrong 355a6077652SChristian Hewitt rtc: rtc@51 { 3564f26cc1cSNeil Armstrong compatible = "haoyu,hym8563"; 3574f26cc1cSNeil Armstrong reg = <0x51>; 3584f26cc1cSNeil Armstrong #clock-cells = <0>; 3594f26cc1cSNeil Armstrong }; 3604f26cc1cSNeil Armstrong}; 3614f26cc1cSNeil Armstrong 3624f26cc1cSNeil Armstrong&ir { 3634f26cc1cSNeil Armstrong status = "okay"; 3644f26cc1cSNeil Armstrong pinctrl-0 = <&remote_input_ao_pins>; 3654f26cc1cSNeil Armstrong pinctrl-names = "default"; 3664f26cc1cSNeil Armstrong linux,rc-map-name = "rc-khadas"; 3674f26cc1cSNeil Armstrong}; 3684f26cc1cSNeil Armstrong 36907a634bfSNeil Armstrong&pcie { 37007a634bfSNeil Armstrong reset-gpios = <&gpio GPIOA_8 GPIO_ACTIVE_LOW>; 37107a634bfSNeil Armstrong}; 37207a634bfSNeil Armstrong 3734f26cc1cSNeil Armstrong&pwm_ef { 3744f26cc1cSNeil Armstrong status = "okay"; 3754f26cc1cSNeil Armstrong pinctrl-0 = <&pwm_e_pins>; 3764f26cc1cSNeil Armstrong pinctrl-names = "default"; 3774f26cc1cSNeil Armstrong}; 3784f26cc1cSNeil Armstrong 3794f26cc1cSNeil Armstrong&saradc { 3804f26cc1cSNeil Armstrong status = "okay"; 3814f26cc1cSNeil Armstrong vref-supply = <&vddao_1v8>; 3824f26cc1cSNeil Armstrong}; 3834f26cc1cSNeil Armstrong 3844f26cc1cSNeil Armstrong/* SDIO */ 3854f26cc1cSNeil Armstrong&sd_emmc_a { 3864f26cc1cSNeil Armstrong status = "okay"; 3874f26cc1cSNeil Armstrong pinctrl-0 = <&sdio_pins>; 3884f26cc1cSNeil Armstrong pinctrl-1 = <&sdio_clk_gate_pins>; 3894f26cc1cSNeil Armstrong pinctrl-names = "default", "clk-gate"; 3904f26cc1cSNeil Armstrong #address-cells = <1>; 3914f26cc1cSNeil Armstrong #size-cells = <0>; 3924f26cc1cSNeil Armstrong 3934f26cc1cSNeil Armstrong bus-width = <4>; 3944f26cc1cSNeil Armstrong cap-sd-highspeed; 3954f26cc1cSNeil Armstrong max-frequency = <100000000>; 3964f26cc1cSNeil Armstrong 3974f26cc1cSNeil Armstrong non-removable; 3984f26cc1cSNeil Armstrong disable-wp; 3994f26cc1cSNeil Armstrong 400ec9037c0SNeil Armstrong /* WiFi firmware requires power to be kept while in suspend */ 401ec9037c0SNeil Armstrong keep-power-in-suspend; 402ec9037c0SNeil Armstrong 4034f26cc1cSNeil Armstrong mmc-pwrseq = <&sdio_pwrseq>; 4044f26cc1cSNeil Armstrong 4054f26cc1cSNeil Armstrong vmmc-supply = <&vsys_3v3>; 4064f26cc1cSNeil Armstrong vqmmc-supply = <&vddao_1v8>; 4074f26cc1cSNeil Armstrong 4084f26cc1cSNeil Armstrong brcmf: wifi@1 { 4094f26cc1cSNeil Armstrong reg = <1>; 4104f26cc1cSNeil Armstrong compatible = "brcm,bcm4329-fmac"; 4114f26cc1cSNeil Armstrong }; 4124f26cc1cSNeil Armstrong}; 4134f26cc1cSNeil Armstrong 4144f26cc1cSNeil Armstrong/* SD card */ 4154f26cc1cSNeil Armstrong&sd_emmc_b { 4164f26cc1cSNeil Armstrong status = "okay"; 4174f26cc1cSNeil Armstrong pinctrl-0 = <&sdcard_c_pins>; 4184f26cc1cSNeil Armstrong pinctrl-1 = <&sdcard_clk_gate_c_pins>; 4194f26cc1cSNeil Armstrong pinctrl-names = "default", "clk-gate"; 4204f26cc1cSNeil Armstrong 4214f26cc1cSNeil Armstrong bus-width = <4>; 4224f26cc1cSNeil Armstrong cap-sd-highspeed; 4234f26cc1cSNeil Armstrong max-frequency = <50000000>; 4244f26cc1cSNeil Armstrong disable-wp; 4254f26cc1cSNeil Armstrong 4264f26cc1cSNeil Armstrong cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; 4274f26cc1cSNeil Armstrong vmmc-supply = <&vsys_3v3>; 4284f26cc1cSNeil Armstrong vqmmc-supply = <&vsys_3v3>; 4294f26cc1cSNeil Armstrong}; 4304f26cc1cSNeil Armstrong 4314f26cc1cSNeil Armstrong/* eMMC */ 4324f26cc1cSNeil Armstrong&sd_emmc_c { 4334f26cc1cSNeil Armstrong status = "okay"; 4344d2cb376SNeil Armstrong pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>; 4354f26cc1cSNeil Armstrong pinctrl-1 = <&emmc_clk_gate_pins>; 4364f26cc1cSNeil Armstrong pinctrl-names = "default", "clk-gate"; 4374f26cc1cSNeil Armstrong 4384f26cc1cSNeil Armstrong bus-width = <8>; 4394f26cc1cSNeil Armstrong cap-mmc-highspeed; 4404f26cc1cSNeil Armstrong mmc-ddr-1_8v; 4414f26cc1cSNeil Armstrong mmc-hs200-1_8v; 4424f26cc1cSNeil Armstrong max-frequency = <200000000>; 4434f26cc1cSNeil Armstrong disable-wp; 4444f26cc1cSNeil Armstrong 4454f26cc1cSNeil Armstrong mmc-pwrseq = <&emmc_pwrseq>; 4464f26cc1cSNeil Armstrong vmmc-supply = <&vcc_3v3>; 4474f26cc1cSNeil Armstrong vqmmc-supply = <&emmc_1v8>; 4484f26cc1cSNeil Armstrong}; 4494f26cc1cSNeil Armstrong 4500e1610e7SNeil Armstrong/* 4510e1610e7SNeil Armstrong * EMMC_D4, EMMC_D5, EMMC_D6 and EMMC_D7 pins are shared between SPI NOR CS 4520e1610e7SNeil Armstrong * and eMMC Data 4 to 7 pins. 4530e1610e7SNeil Armstrong * Replace emmc_data_8b_pins to emmc_data_4b_pins from sd_emmc_c pinctrl-0, 4540e1610e7SNeil Armstrong * and change bus-width to 4 then spifc can be enabled. 4550e1610e7SNeil Armstrong */ 4560e1610e7SNeil Armstrong&spifc { 4570e1610e7SNeil Armstrong status = "disabled"; 4580e1610e7SNeil Armstrong pinctrl-0 = <&nor_pins>; 4590e1610e7SNeil Armstrong pinctrl-names = "default"; 4600e1610e7SNeil Armstrong 461d57c69caSChristian Hewitt w25q128: spi-flash@0 { 4620e1610e7SNeil Armstrong #address-cells = <1>; 4630e1610e7SNeil Armstrong #size-cells = <1>; 4640e1610e7SNeil Armstrong compatible = "winbond,w25q128fw", "jedec,spi-nor"; 4650e1610e7SNeil Armstrong reg = <0>; 4660e1610e7SNeil Armstrong spi-max-frequency = <104000000>; 4670e1610e7SNeil Armstrong }; 4680e1610e7SNeil Armstrong}; 4697c9c0624SJerome Brunet 4707c9c0624SJerome Brunet&tdmif_a { 4717c9c0624SJerome Brunet status = "okay"; 4727c9c0624SJerome Brunet}; 4737c9c0624SJerome Brunet 474*43ffb528SJerome Brunet&tdmin_a { 475*43ffb528SJerome Brunet status = "okay"; 476*43ffb528SJerome Brunet}; 477*43ffb528SJerome Brunet 4787c9c0624SJerome Brunet&tdmout_a { 4797c9c0624SJerome Brunet status = "okay"; 4807c9c0624SJerome Brunet}; 4817c9c0624SJerome Brunet 482*43ffb528SJerome Brunet&toddr_a { 483*43ffb528SJerome Brunet status = "okay"; 484*43ffb528SJerome Brunet}; 485*43ffb528SJerome Brunet 486*43ffb528SJerome Brunet&toddr_b { 487*43ffb528SJerome Brunet status = "okay"; 488*43ffb528SJerome Brunet}; 489*43ffb528SJerome Brunet 490*43ffb528SJerome Brunet&toddr_c { 491*43ffb528SJerome Brunet status = "okay"; 492*43ffb528SJerome Brunet}; 493*43ffb528SJerome Brunet 4947c9c0624SJerome Brunet&tohdmitx { 4957c9c0624SJerome Brunet status = "okay"; 4967c9c0624SJerome Brunet}; 4977c9c0624SJerome Brunet 4984f26cc1cSNeil Armstrong&uart_A { 4994f26cc1cSNeil Armstrong status = "okay"; 5004f26cc1cSNeil Armstrong pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; 5014f26cc1cSNeil Armstrong pinctrl-names = "default"; 5024f26cc1cSNeil Armstrong uart-has-rtscts; 5034f26cc1cSNeil Armstrong 5044f26cc1cSNeil Armstrong bluetooth { 5054f26cc1cSNeil Armstrong compatible = "brcm,bcm43438-bt"; 5064f26cc1cSNeil Armstrong shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; 5074f26cc1cSNeil Armstrong max-speed = <2000000>; 5084f26cc1cSNeil Armstrong clocks = <&wifi32k>; 5094f26cc1cSNeil Armstrong clock-names = "lpo"; 5104f26cc1cSNeil Armstrong }; 5114f26cc1cSNeil Armstrong}; 5124f26cc1cSNeil Armstrong 5134f26cc1cSNeil Armstrong&uart_AO { 5144f26cc1cSNeil Armstrong status = "okay"; 5154f26cc1cSNeil Armstrong pinctrl-0 = <&uart_ao_a_pins>; 5164f26cc1cSNeil Armstrong pinctrl-names = "default"; 5174f26cc1cSNeil Armstrong}; 5184f26cc1cSNeil Armstrong 5194f26cc1cSNeil Armstrong&usb2_phy0 { 5204f26cc1cSNeil Armstrong phy-supply = <&dc_in>; 5214f26cc1cSNeil Armstrong}; 5224f26cc1cSNeil Armstrong 5234f26cc1cSNeil Armstrong&usb2_phy1 { 5244f26cc1cSNeil Armstrong phy-supply = <&usb_pwr>; 5254f26cc1cSNeil Armstrong}; 5264f26cc1cSNeil Armstrong 5274f26cc1cSNeil Armstrong&usb3_pcie_phy { 5284f26cc1cSNeil Armstrong phy-supply = <&usb_pwr>; 5294f26cc1cSNeil Armstrong}; 5304f26cc1cSNeil Armstrong 5314f26cc1cSNeil Armstrong&usb { 5324f26cc1cSNeil Armstrong status = "okay"; 5334f26cc1cSNeil Armstrong dr_mode = "peripheral"; 5344f26cc1cSNeil Armstrong}; 535