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"; 17443ffb528SJerome 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", 17843ffb528SJerome Brunet "TDM_A Playback", "TDMOUT_A OUT", 17943ffb528SJerome Brunet "TDMIN_A IN 0", "TDM_A Capture", 18043ffb528SJerome Brunet "TDMIN_A IN 3", "TDM_A Loopback", 18143ffb528SJerome Brunet "TODDR_A IN 0", "TDMIN_A OUT", 18243ffb528SJerome Brunet "TODDR_B IN 0", "TDMIN_A OUT", 18343ffb528SJerome 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 1937c9c0624SJerome Brunet dai-link-0 { 1947c9c0624SJerome Brunet sound-dai = <&frddr_a>; 1957c9c0624SJerome Brunet }; 1967c9c0624SJerome Brunet 1977c9c0624SJerome Brunet dai-link-1 { 1987c9c0624SJerome Brunet sound-dai = <&frddr_b>; 1997c9c0624SJerome Brunet }; 2007c9c0624SJerome Brunet 2017c9c0624SJerome Brunet dai-link-2 { 2027c9c0624SJerome Brunet sound-dai = <&frddr_c>; 2037c9c0624SJerome Brunet }; 2047c9c0624SJerome Brunet 2057c9c0624SJerome Brunet dai-link-3 { 20643ffb528SJerome Brunet sound-dai = <&toddr_a>; 20743ffb528SJerome Brunet }; 20843ffb528SJerome Brunet 20943ffb528SJerome Brunet dai-link-4 { 21043ffb528SJerome Brunet sound-dai = <&toddr_b>; 21143ffb528SJerome Brunet }; 21243ffb528SJerome Brunet 21343ffb528SJerome Brunet dai-link-5 { 21443ffb528SJerome Brunet sound-dai = <&toddr_c>; 21543ffb528SJerome Brunet }; 21643ffb528SJerome Brunet 21743ffb528SJerome Brunet /* 8ch hdmi interface */ 21843ffb528SJerome Brunet dai-link-6 { 2197c9c0624SJerome Brunet sound-dai = <&tdmif_a>; 2207c9c0624SJerome Brunet dai-format = "i2s"; 2217c9c0624SJerome Brunet dai-tdm-slot-tx-mask-0 = <1 1>; 2227c9c0624SJerome Brunet dai-tdm-slot-tx-mask-1 = <1 1>; 2237c9c0624SJerome Brunet dai-tdm-slot-tx-mask-2 = <1 1>; 2247c9c0624SJerome Brunet dai-tdm-slot-tx-mask-3 = <1 1>; 2257c9c0624SJerome Brunet mclk-fs = <256>; 2267c9c0624SJerome Brunet 2277c9c0624SJerome Brunet codec { 2287c9c0624SJerome Brunet sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>; 2297c9c0624SJerome Brunet }; 2307c9c0624SJerome Brunet }; 2317c9c0624SJerome Brunet 2327c9c0624SJerome Brunet /* hdmi glue */ 23343ffb528SJerome Brunet dai-link-7 { 2347c9c0624SJerome Brunet sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; 2357c9c0624SJerome Brunet 2367c9c0624SJerome Brunet codec { 2377c9c0624SJerome Brunet sound-dai = <&hdmi_tx>; 2387c9c0624SJerome Brunet }; 2397c9c0624SJerome Brunet }; 2407c9c0624SJerome Brunet }; 2417c9c0624SJerome Brunet 2424f26cc1cSNeil Armstrong wifi32k: wifi32k { 2434f26cc1cSNeil Armstrong compatible = "pwm-clock"; 2444f26cc1cSNeil Armstrong #clock-cells = <0>; 2454f26cc1cSNeil Armstrong clock-frequency = <32768>; 2464f26cc1cSNeil Armstrong pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ 2474f26cc1cSNeil Armstrong }; 2484f26cc1cSNeil Armstrong}; 2494f26cc1cSNeil Armstrong 2507c9c0624SJerome Brunet&arb { 2517c9c0624SJerome Brunet status = "okay"; 2527c9c0624SJerome Brunet}; 2537c9c0624SJerome Brunet 2547c9c0624SJerome Brunet&clkc_audio { 2557c9c0624SJerome Brunet status = "okay"; 2567c9c0624SJerome Brunet}; 2577c9c0624SJerome Brunet 2584f26cc1cSNeil Armstrong&cec_AO { 2594f26cc1cSNeil Armstrong pinctrl-0 = <&cec_ao_a_h_pins>; 2604f26cc1cSNeil Armstrong pinctrl-names = "default"; 2614f26cc1cSNeil Armstrong status = "disabled"; 2624f26cc1cSNeil Armstrong hdmi-phandle = <&hdmi_tx>; 2634f26cc1cSNeil Armstrong}; 2644f26cc1cSNeil Armstrong 2654f26cc1cSNeil Armstrong&cecb_AO { 2664f26cc1cSNeil Armstrong pinctrl-0 = <&cec_ao_b_h_pins>; 2674f26cc1cSNeil Armstrong pinctrl-names = "default"; 2684f26cc1cSNeil Armstrong status = "okay"; 2694f26cc1cSNeil Armstrong hdmi-phandle = <&hdmi_tx>; 2704f26cc1cSNeil Armstrong}; 2714f26cc1cSNeil Armstrong 272cabb1f38SNeil Armstrong&cpu_thermal { 273cabb1f38SNeil Armstrong trips { 274cabb1f38SNeil Armstrong cpu_active: cpu-active { 275cabb1f38SNeil Armstrong temperature = <80000>; /* millicelsius */ 276cabb1f38SNeil Armstrong hysteresis = <2000>; /* millicelsius */ 277cabb1f38SNeil Armstrong type = "active"; 278cabb1f38SNeil Armstrong }; 279cabb1f38SNeil Armstrong }; 280cabb1f38SNeil Armstrong 281cabb1f38SNeil Armstrong cooling-maps { 282cabb1f38SNeil Armstrong map { 283cabb1f38SNeil Armstrong trip = <&cpu_active>; 284cabb1f38SNeil Armstrong cooling-device = <&khadas_mcu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; 285cabb1f38SNeil Armstrong }; 286cabb1f38SNeil Armstrong }; 287cabb1f38SNeil Armstrong}; 288cabb1f38SNeil Armstrong 2894f26cc1cSNeil Armstrong&ext_mdio { 2904f26cc1cSNeil Armstrong external_phy: ethernet-phy@0 { 2914f26cc1cSNeil Armstrong /* Realtek RTL8211F (0x001cc916) */ 2924f26cc1cSNeil Armstrong reg = <0>; 2934f26cc1cSNeil Armstrong max-speed = <1000>; 2944f26cc1cSNeil Armstrong 2954f26cc1cSNeil Armstrong interrupt-parent = <&gpio_intc>; 2964f26cc1cSNeil Armstrong /* MAC_INTR on GPIOZ_14 */ 2974f26cc1cSNeil Armstrong interrupts = <26 IRQ_TYPE_LEVEL_LOW>; 2984f26cc1cSNeil Armstrong }; 2994f26cc1cSNeil Armstrong}; 3004f26cc1cSNeil Armstrong 3014f26cc1cSNeil Armstrongðmac { 3024f26cc1cSNeil Armstrong pinctrl-0 = <ð_pins>, <ð_rgmii_pins>; 3034f26cc1cSNeil Armstrong pinctrl-names = "default"; 3044f26cc1cSNeil Armstrong status = "okay"; 3054f26cc1cSNeil Armstrong phy-mode = "rgmii"; 3064f26cc1cSNeil Armstrong phy-handle = <&external_phy>; 3074f26cc1cSNeil Armstrong amlogic,tx-delay-ns = <2>; 3084f26cc1cSNeil Armstrong}; 3094f26cc1cSNeil Armstrong 3107c9c0624SJerome Brunet&frddr_a { 3117c9c0624SJerome Brunet status = "okay"; 3127c9c0624SJerome Brunet}; 3137c9c0624SJerome Brunet 3147c9c0624SJerome Brunet&frddr_b { 3157c9c0624SJerome Brunet status = "okay"; 3167c9c0624SJerome Brunet}; 3177c9c0624SJerome Brunet 3187c9c0624SJerome Brunet&frddr_c { 3197c9c0624SJerome Brunet status = "okay"; 3207c9c0624SJerome Brunet}; 3217c9c0624SJerome Brunet 3224f26cc1cSNeil Armstrong&hdmi_tx { 3234f26cc1cSNeil Armstrong status = "okay"; 3244f26cc1cSNeil Armstrong pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>; 3254f26cc1cSNeil Armstrong pinctrl-names = "default"; 3264f26cc1cSNeil Armstrong hdmi-supply = <&vcc_5v>; 3274f26cc1cSNeil Armstrong}; 3284f26cc1cSNeil Armstrong 3294f26cc1cSNeil Armstrong&hdmi_tx_tmds_port { 3304f26cc1cSNeil Armstrong hdmi_tx_tmds_out: endpoint { 3314f26cc1cSNeil Armstrong remote-endpoint = <&hdmi_connector_in>; 3324f26cc1cSNeil Armstrong }; 3334f26cc1cSNeil Armstrong}; 3344f26cc1cSNeil Armstrong 3354f26cc1cSNeil Armstrong&i2c_AO { 3364f26cc1cSNeil Armstrong status = "okay"; 3374f26cc1cSNeil Armstrong pinctrl-0 = <&i2c_ao_sck_pins>, <&i2c_ao_sda_pins>; 3384f26cc1cSNeil Armstrong pinctrl-names = "default"; 3394f26cc1cSNeil Armstrong 340cabb1f38SNeil Armstrong khadas_mcu: system-controller@18 { 341cabb1f38SNeil Armstrong compatible = "khadas,mcu"; 342cabb1f38SNeil Armstrong reg = <0x18>; 343cabb1f38SNeil Armstrong #cooling-cells = <2>; 344cabb1f38SNeil Armstrong }; 345cabb1f38SNeil Armstrong 3464f26cc1cSNeil Armstrong gpio_expander: gpio-controller@20 { 3474f26cc1cSNeil Armstrong compatible = "ti,tca6408"; 3484f26cc1cSNeil Armstrong reg = <0x20>; 3494f26cc1cSNeil Armstrong vcc-supply = <&vcc_3v3>; 3504f26cc1cSNeil Armstrong gpio-controller; 3514f26cc1cSNeil Armstrong #gpio-cells = <2>; 3524f26cc1cSNeil Armstrong }; 3534f26cc1cSNeil Armstrong 354a6077652SChristian Hewitt rtc: rtc@51 { 3554f26cc1cSNeil Armstrong compatible = "haoyu,hym8563"; 3564f26cc1cSNeil Armstrong reg = <0x51>; 3574f26cc1cSNeil Armstrong #clock-cells = <0>; 3584f26cc1cSNeil Armstrong }; 3594f26cc1cSNeil Armstrong}; 3604f26cc1cSNeil Armstrong 3614f26cc1cSNeil Armstrong&ir { 3624f26cc1cSNeil Armstrong status = "okay"; 3634f26cc1cSNeil Armstrong pinctrl-0 = <&remote_input_ao_pins>; 3644f26cc1cSNeil Armstrong pinctrl-names = "default"; 3654f26cc1cSNeil Armstrong linux,rc-map-name = "rc-khadas"; 3664f26cc1cSNeil Armstrong}; 3674f26cc1cSNeil Armstrong 36807a634bfSNeil Armstrong&pcie { 36907a634bfSNeil Armstrong reset-gpios = <&gpio GPIOA_8 GPIO_ACTIVE_LOW>; 37007a634bfSNeil Armstrong}; 37107a634bfSNeil Armstrong 3724f26cc1cSNeil Armstrong&pwm_ef { 3734f26cc1cSNeil Armstrong status = "okay"; 3744f26cc1cSNeil Armstrong pinctrl-0 = <&pwm_e_pins>; 3754f26cc1cSNeil Armstrong pinctrl-names = "default"; 3764f26cc1cSNeil Armstrong}; 3774f26cc1cSNeil Armstrong 3784f26cc1cSNeil Armstrong&saradc { 3794f26cc1cSNeil Armstrong status = "okay"; 3804f26cc1cSNeil Armstrong vref-supply = <&vddao_1v8>; 3814f26cc1cSNeil Armstrong}; 3824f26cc1cSNeil Armstrong 3834f26cc1cSNeil Armstrong/* SDIO */ 3844f26cc1cSNeil Armstrong&sd_emmc_a { 3854f26cc1cSNeil Armstrong status = "okay"; 3864f26cc1cSNeil Armstrong pinctrl-0 = <&sdio_pins>; 3874f26cc1cSNeil Armstrong pinctrl-1 = <&sdio_clk_gate_pins>; 3884f26cc1cSNeil Armstrong pinctrl-names = "default", "clk-gate"; 3894f26cc1cSNeil Armstrong #address-cells = <1>; 3904f26cc1cSNeil Armstrong #size-cells = <0>; 3914f26cc1cSNeil Armstrong 3924f26cc1cSNeil Armstrong bus-width = <4>; 3934f26cc1cSNeil Armstrong cap-sd-highspeed; 3944f26cc1cSNeil Armstrong max-frequency = <100000000>; 3954f26cc1cSNeil Armstrong 3964f26cc1cSNeil Armstrong non-removable; 3974f26cc1cSNeil Armstrong disable-wp; 3984f26cc1cSNeil Armstrong 399ec9037c0SNeil Armstrong /* WiFi firmware requires power to be kept while in suspend */ 400ec9037c0SNeil Armstrong keep-power-in-suspend; 401ec9037c0SNeil Armstrong 4024f26cc1cSNeil Armstrong mmc-pwrseq = <&sdio_pwrseq>; 4034f26cc1cSNeil Armstrong 4044f26cc1cSNeil Armstrong vmmc-supply = <&vsys_3v3>; 4054f26cc1cSNeil Armstrong vqmmc-supply = <&vddao_1v8>; 4064f26cc1cSNeil Armstrong 4074f26cc1cSNeil Armstrong brcmf: wifi@1 { 4084f26cc1cSNeil Armstrong reg = <1>; 4094f26cc1cSNeil Armstrong compatible = "brcm,bcm4329-fmac"; 4104f26cc1cSNeil Armstrong }; 4114f26cc1cSNeil Armstrong}; 4124f26cc1cSNeil Armstrong 4134f26cc1cSNeil Armstrong/* SD card */ 4144f26cc1cSNeil Armstrong&sd_emmc_b { 4154f26cc1cSNeil Armstrong status = "okay"; 4164f26cc1cSNeil Armstrong pinctrl-0 = <&sdcard_c_pins>; 4174f26cc1cSNeil Armstrong pinctrl-1 = <&sdcard_clk_gate_c_pins>; 4184f26cc1cSNeil Armstrong pinctrl-names = "default", "clk-gate"; 4194f26cc1cSNeil Armstrong 4204f26cc1cSNeil Armstrong bus-width = <4>; 4214f26cc1cSNeil Armstrong cap-sd-highspeed; 4224f26cc1cSNeil Armstrong max-frequency = <50000000>; 4234f26cc1cSNeil Armstrong disable-wp; 4244f26cc1cSNeil Armstrong 4254f26cc1cSNeil Armstrong cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; 4264f26cc1cSNeil Armstrong vmmc-supply = <&vsys_3v3>; 4274f26cc1cSNeil Armstrong vqmmc-supply = <&vsys_3v3>; 4284f26cc1cSNeil Armstrong}; 4294f26cc1cSNeil Armstrong 4304f26cc1cSNeil Armstrong/* eMMC */ 4314f26cc1cSNeil Armstrong&sd_emmc_c { 4324f26cc1cSNeil Armstrong status = "okay"; 4334d2cb376SNeil Armstrong pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>; 4344f26cc1cSNeil Armstrong pinctrl-1 = <&emmc_clk_gate_pins>; 4354f26cc1cSNeil Armstrong pinctrl-names = "default", "clk-gate"; 4364f26cc1cSNeil Armstrong 4374f26cc1cSNeil Armstrong bus-width = <8>; 4384f26cc1cSNeil Armstrong cap-mmc-highspeed; 4394f26cc1cSNeil Armstrong mmc-ddr-1_8v; 4404f26cc1cSNeil Armstrong mmc-hs200-1_8v; 4414f26cc1cSNeil Armstrong max-frequency = <200000000>; 4424f26cc1cSNeil Armstrong disable-wp; 4434f26cc1cSNeil Armstrong 4444f26cc1cSNeil Armstrong mmc-pwrseq = <&emmc_pwrseq>; 4454f26cc1cSNeil Armstrong vmmc-supply = <&vcc_3v3>; 4464f26cc1cSNeil Armstrong vqmmc-supply = <&emmc_1v8>; 4474f26cc1cSNeil Armstrong}; 4484f26cc1cSNeil Armstrong 4490e1610e7SNeil Armstrong/* 4500e1610e7SNeil Armstrong * EMMC_D4, EMMC_D5, EMMC_D6 and EMMC_D7 pins are shared between SPI NOR CS 4510e1610e7SNeil Armstrong * and eMMC Data 4 to 7 pins. 4520e1610e7SNeil Armstrong * Replace emmc_data_8b_pins to emmc_data_4b_pins from sd_emmc_c pinctrl-0, 4530e1610e7SNeil Armstrong * and change bus-width to 4 then spifc can be enabled. 4540e1610e7SNeil Armstrong */ 4550e1610e7SNeil Armstrong&spifc { 4560e1610e7SNeil Armstrong status = "disabled"; 4570e1610e7SNeil Armstrong pinctrl-0 = <&nor_pins>; 4580e1610e7SNeil Armstrong pinctrl-names = "default"; 4590e1610e7SNeil Armstrong 460*8771ce5eSKrzysztof Kozlowski w25q128: flash@0 { 4610e1610e7SNeil Armstrong #address-cells = <1>; 4620e1610e7SNeil Armstrong #size-cells = <1>; 4630e1610e7SNeil Armstrong compatible = "winbond,w25q128fw", "jedec,spi-nor"; 4640e1610e7SNeil Armstrong reg = <0>; 4650e1610e7SNeil Armstrong spi-max-frequency = <104000000>; 4660e1610e7SNeil Armstrong }; 4670e1610e7SNeil Armstrong}; 4687c9c0624SJerome Brunet 4697c9c0624SJerome Brunet&tdmif_a { 4707c9c0624SJerome Brunet status = "okay"; 4717c9c0624SJerome Brunet}; 4727c9c0624SJerome Brunet 47343ffb528SJerome Brunet&tdmin_a { 47443ffb528SJerome Brunet status = "okay"; 47543ffb528SJerome Brunet}; 47643ffb528SJerome Brunet 4777c9c0624SJerome Brunet&tdmout_a { 4787c9c0624SJerome Brunet status = "okay"; 4797c9c0624SJerome Brunet}; 4807c9c0624SJerome Brunet 48143ffb528SJerome Brunet&toddr_a { 48243ffb528SJerome Brunet status = "okay"; 48343ffb528SJerome Brunet}; 48443ffb528SJerome Brunet 48543ffb528SJerome Brunet&toddr_b { 48643ffb528SJerome Brunet status = "okay"; 48743ffb528SJerome Brunet}; 48843ffb528SJerome Brunet 48943ffb528SJerome Brunet&toddr_c { 49043ffb528SJerome Brunet status = "okay"; 49143ffb528SJerome Brunet}; 49243ffb528SJerome Brunet 4937c9c0624SJerome Brunet&tohdmitx { 4947c9c0624SJerome Brunet status = "okay"; 4957c9c0624SJerome Brunet}; 4967c9c0624SJerome Brunet 4974f26cc1cSNeil Armstrong&uart_A { 4984f26cc1cSNeil Armstrong status = "okay"; 4994f26cc1cSNeil Armstrong pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; 5004f26cc1cSNeil Armstrong pinctrl-names = "default"; 5014f26cc1cSNeil Armstrong uart-has-rtscts; 5024f26cc1cSNeil Armstrong 5034f26cc1cSNeil Armstrong bluetooth { 5044f26cc1cSNeil Armstrong compatible = "brcm,bcm43438-bt"; 5054f26cc1cSNeil Armstrong shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; 5064f26cc1cSNeil Armstrong max-speed = <2000000>; 5074f26cc1cSNeil Armstrong clocks = <&wifi32k>; 5084f26cc1cSNeil Armstrong clock-names = "lpo"; 5094f26cc1cSNeil Armstrong }; 5104f26cc1cSNeil Armstrong}; 5114f26cc1cSNeil Armstrong 5124f26cc1cSNeil Armstrong&uart_AO { 5134f26cc1cSNeil Armstrong status = "okay"; 5144f26cc1cSNeil Armstrong pinctrl-0 = <&uart_ao_a_pins>; 5154f26cc1cSNeil Armstrong pinctrl-names = "default"; 5164f26cc1cSNeil Armstrong}; 5174f26cc1cSNeil Armstrong 5184f26cc1cSNeil Armstrong&usb2_phy0 { 5194f26cc1cSNeil Armstrong phy-supply = <&dc_in>; 5204f26cc1cSNeil Armstrong}; 5214f26cc1cSNeil Armstrong 5224f26cc1cSNeil Armstrong&usb2_phy1 { 5234f26cc1cSNeil Armstrong phy-supply = <&usb_pwr>; 5244f26cc1cSNeil Armstrong}; 5254f26cc1cSNeil Armstrong 5264f26cc1cSNeil Armstrong&usb3_pcie_phy { 5274f26cc1cSNeil Armstrong phy-supply = <&usb_pwr>; 5284f26cc1cSNeil Armstrong}; 5294f26cc1cSNeil Armstrong 5304f26cc1cSNeil Armstrong&usb { 5314f26cc1cSNeil Armstrong status = "okay"; 5324f26cc1cSNeil Armstrong dr_mode = "peripheral"; 5334f26cc1cSNeil Armstrong}; 534