1e9a12e14SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2e9a12e14SNeil Armstrong/* 3e9a12e14SNeil Armstrong * Copyright (c) 2019 BayLibre SAS. All rights reserved. 4e9a12e14SNeil Armstrong */ 5e9a12e14SNeil Armstrong 6e9a12e14SNeil Armstrong/dts-v1/; 7e9a12e14SNeil Armstrong 8e9a12e14SNeil Armstrong#include "meson-sm1.dtsi" 9e9a12e14SNeil Armstrong#include <dt-bindings/gpio/gpio.h> 10e9a12e14SNeil Armstrong#include <dt-bindings/input/input.h> 11e9a12e14SNeil Armstrong#include <dt-bindings/gpio/meson-g12a-gpio.h> 12af92a9e0SJerome Brunet#include <dt-bindings/sound/meson-g12a-tohdmitx.h> 13e9a12e14SNeil Armstrong 14e9a12e14SNeil Armstrong/ { 15e9a12e14SNeil Armstrong compatible = "seirobotics,sei610", "amlogic,sm1"; 16e9a12e14SNeil Armstrong model = "SEI Robotics SEI610"; 17e9a12e14SNeil Armstrong 18e9a12e14SNeil Armstrong aliases { 19e9a12e14SNeil Armstrong serial0 = &uart_AO; 20e9a12e14SNeil Armstrong ethernet0 = ðmac; 21e9a12e14SNeil Armstrong }; 22e9a12e14SNeil Armstrong 23af92a9e0SJerome Brunet mono_dac: audio-codec-0 { 24af92a9e0SJerome Brunet compatible = "maxim,max98357a"; 25af92a9e0SJerome Brunet #sound-dai-cells = <0>; 26af92a9e0SJerome Brunet sound-name-prefix = "U16"; 27af92a9e0SJerome Brunet sdmode-gpios = <&gpio GPIOX_8 GPIO_ACTIVE_HIGH>; 28af92a9e0SJerome Brunet }; 29af92a9e0SJerome Brunet 30af92a9e0SJerome Brunet dmics: audio-codec-1 { 31af92a9e0SJerome Brunet #sound-dai-cells = <0>; 32af92a9e0SJerome Brunet compatible = "dmic-codec"; 33af92a9e0SJerome Brunet num-channels = <2>; 34af92a9e0SJerome Brunet wakeup-delay-ms = <50>; 35af92a9e0SJerome Brunet status = "okay"; 36af92a9e0SJerome Brunet sound-name-prefix = "MIC"; 37af92a9e0SJerome Brunet }; 38af92a9e0SJerome Brunet 39b09d116bSNeil Armstrong chosen { 40b09d116bSNeil Armstrong stdout-path = "serial0:115200n8"; 41b09d116bSNeil Armstrong }; 42b09d116bSNeil Armstrong 43e9a12e14SNeil Armstrong emmc_pwrseq: emmc-pwrseq { 44e9a12e14SNeil Armstrong compatible = "mmc-pwrseq-emmc"; 45e9a12e14SNeil Armstrong reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>; 46e9a12e14SNeil Armstrong }; 47e9a12e14SNeil Armstrong 48e9a12e14SNeil Armstrong gpio-keys { 49e9a12e14SNeil Armstrong compatible = "gpio-keys-polled"; 50e9a12e14SNeil Armstrong poll-interval = <100>; 51e9a12e14SNeil Armstrong 52e9a12e14SNeil Armstrong key1 { 53e9a12e14SNeil Armstrong label = "A"; 54e9a12e14SNeil Armstrong linux,code = <BTN_0>; 55e9a12e14SNeil Armstrong gpios = <&gpio GPIOH_6 GPIO_ACTIVE_LOW>; 56e9a12e14SNeil Armstrong }; 57e9a12e14SNeil Armstrong 58e9a12e14SNeil Armstrong key2 { 59e9a12e14SNeil Armstrong label = "B"; 60e9a12e14SNeil Armstrong linux,code = <BTN_1>; 61e9a12e14SNeil Armstrong gpios = <&gpio GPIOH_7 GPIO_ACTIVE_LOW>; 62e9a12e14SNeil Armstrong }; 63e9a12e14SNeil Armstrong 64e9a12e14SNeil Armstrong key3 { 65e9a12e14SNeil Armstrong label = "C"; 66e9a12e14SNeil Armstrong linux,code = <BTN_2>; 67e9a12e14SNeil Armstrong gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>; 68e9a12e14SNeil Armstrong }; 69e9a12e14SNeil Armstrong }; 70e9a12e14SNeil Armstrong 7196a386b6SNeil Armstrong hdmi-connector { 7296a386b6SNeil Armstrong compatible = "hdmi-connector"; 7396a386b6SNeil Armstrong type = "a"; 7496a386b6SNeil Armstrong 7596a386b6SNeil Armstrong port { 7696a386b6SNeil Armstrong hdmi_connector_in: endpoint { 7796a386b6SNeil Armstrong remote-endpoint = <&hdmi_tx_tmds_out>; 7896a386b6SNeil Armstrong }; 7996a386b6SNeil Armstrong }; 8096a386b6SNeil Armstrong }; 8196a386b6SNeil Armstrong 82e9a12e14SNeil Armstrong leds { 83e9a12e14SNeil Armstrong compatible = "gpio-leds"; 84e9a12e14SNeil Armstrong 85e9a12e14SNeil Armstrong bluetooth { 86e9a12e14SNeil Armstrong label = "sei610:blue:bt"; 87e9a12e14SNeil Armstrong gpios = <&gpio GPIOC_7 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; 88e9a12e14SNeil Armstrong default-state = "off"; 89e9a12e14SNeil Armstrong }; 90e9a12e14SNeil Armstrong }; 91e9a12e14SNeil Armstrong 92e9a12e14SNeil Armstrong pwmleds { 93e9a12e14SNeil Armstrong compatible = "pwm-leds"; 94e9a12e14SNeil Armstrong 95e9a12e14SNeil Armstrong power { 96e9a12e14SNeil Armstrong label = "sei610:red:power"; 97e9a12e14SNeil Armstrong pwms = <&pwm_AO_ab 0 30518 0>; 98e9a12e14SNeil Armstrong max-brightness = <255>; 99e9a12e14SNeil Armstrong linux,default-trigger = "default-on"; 100e9a12e14SNeil Armstrong active-low; 101e9a12e14SNeil Armstrong }; 102e9a12e14SNeil Armstrong }; 103e9a12e14SNeil Armstrong 104e9a12e14SNeil Armstrong memory@0 { 105e9a12e14SNeil Armstrong device_type = "memory"; 106e9a12e14SNeil Armstrong reg = <0x0 0x0 0x0 0x40000000>; 107e9a12e14SNeil Armstrong }; 108e9a12e14SNeil Armstrong 109e9a12e14SNeil Armstrong ao_5v: regulator-ao_5v { 110e9a12e14SNeil Armstrong compatible = "regulator-fixed"; 111e9a12e14SNeil Armstrong regulator-name = "AO_5V"; 112e9a12e14SNeil Armstrong regulator-min-microvolt = <5000000>; 113e9a12e14SNeil Armstrong regulator-max-microvolt = <5000000>; 114e9a12e14SNeil Armstrong vin-supply = <&dc_in>; 115e9a12e14SNeil Armstrong regulator-always-on; 116e9a12e14SNeil Armstrong }; 117e9a12e14SNeil Armstrong 118e9a12e14SNeil Armstrong dc_in: regulator-dc_in { 119e9a12e14SNeil Armstrong compatible = "regulator-fixed"; 120e9a12e14SNeil Armstrong regulator-name = "DC_IN"; 121e9a12e14SNeil Armstrong regulator-min-microvolt = <5000000>; 122e9a12e14SNeil Armstrong regulator-max-microvolt = <5000000>; 123e9a12e14SNeil Armstrong regulator-always-on; 124e9a12e14SNeil Armstrong }; 125e9a12e14SNeil Armstrong 126e9a12e14SNeil Armstrong emmc_1v8: regulator-emmc_1v8 { 127e9a12e14SNeil Armstrong compatible = "regulator-fixed"; 128e9a12e14SNeil Armstrong regulator-name = "EMMC_1V8"; 129e9a12e14SNeil Armstrong regulator-min-microvolt = <1800000>; 130e9a12e14SNeil Armstrong regulator-max-microvolt = <1800000>; 131e9a12e14SNeil Armstrong vin-supply = <&vddao_3v3>; 132e9a12e14SNeil Armstrong regulator-always-on; 133e9a12e14SNeil Armstrong }; 134e9a12e14SNeil Armstrong 135e9a12e14SNeil Armstrong vddao_3v3: regulator-vddao_3v3 { 136e9a12e14SNeil Armstrong compatible = "regulator-fixed"; 137e9a12e14SNeil Armstrong regulator-name = "VDDAO_3V3"; 138e9a12e14SNeil Armstrong regulator-min-microvolt = <3300000>; 139e9a12e14SNeil Armstrong regulator-max-microvolt = <3300000>; 140e9a12e14SNeil Armstrong vin-supply = <&dc_in>; 141e9a12e14SNeil Armstrong regulator-always-on; 142e9a12e14SNeil Armstrong }; 143e9a12e14SNeil Armstrong 144e9a12e14SNeil Armstrong /* Used by Tuner, RGB Led & IR Emitter LED array */ 145e9a12e14SNeil Armstrong vddao_3v3_t: regulator-vddao_3v3_t { 146e9a12e14SNeil Armstrong compatible = "regulator-fixed"; 147e9a12e14SNeil Armstrong regulator-name = "VDDAO_3V3_T"; 148e9a12e14SNeil Armstrong regulator-min-microvolt = <3300000>; 149e9a12e14SNeil Armstrong regulator-max-microvolt = <3300000>; 150e9a12e14SNeil Armstrong vin-supply = <&vddao_3v3>; 151e9a12e14SNeil Armstrong gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>; 152e9a12e14SNeil Armstrong enable-active-low; 153e9a12e14SNeil Armstrong regulator-always-on; 154e9a12e14SNeil Armstrong }; 155e9a12e14SNeil Armstrong 1563d9e7648SNeil Armstrong vddcpu: regulator-vddcpu { 1573d9e7648SNeil Armstrong /* 1583d9e7648SNeil Armstrong * SY8120B1ABC DC/DC Regulator. 1593d9e7648SNeil Armstrong */ 1603d9e7648SNeil Armstrong compatible = "pwm-regulator"; 1613d9e7648SNeil Armstrong 1623d9e7648SNeil Armstrong regulator-name = "VDDCPU"; 1633d9e7648SNeil Armstrong regulator-min-microvolt = <690000>; 1643d9e7648SNeil Armstrong regulator-max-microvolt = <1050000>; 1653d9e7648SNeil Armstrong 1663d9e7648SNeil Armstrong vin-supply = <&dc_in>; 1673d9e7648SNeil Armstrong 1683d9e7648SNeil Armstrong pwms = <&pwm_AO_cd 1 1500 0>; 1693d9e7648SNeil Armstrong pwm-dutycycle-range = <100 0>; 1703d9e7648SNeil Armstrong 1713d9e7648SNeil Armstrong regulator-boot-on; 1723d9e7648SNeil Armstrong regulator-always-on; 1733d9e7648SNeil Armstrong }; 1743d9e7648SNeil Armstrong 175e9a12e14SNeil Armstrong vddio_ao1v8: regulator-vddio_ao1v8 { 176e9a12e14SNeil Armstrong compatible = "regulator-fixed"; 177e9a12e14SNeil Armstrong regulator-name = "VDDIO_AO1V8"; 178e9a12e14SNeil Armstrong regulator-min-microvolt = <1800000>; 179e9a12e14SNeil Armstrong regulator-max-microvolt = <1800000>; 180e9a12e14SNeil Armstrong vin-supply = <&vddao_3v3>; 181e9a12e14SNeil Armstrong regulator-always-on; 182e9a12e14SNeil Armstrong }; 183e9a12e14SNeil Armstrong 184e9a12e14SNeil Armstrong reserved-memory { 185e9a12e14SNeil Armstrong /* TEE Reserved Memory */ 186e9a12e14SNeil Armstrong bl32_reserved: bl32@5000000 { 187e9a12e14SNeil Armstrong reg = <0x0 0x05300000 0x0 0x2000000>; 188e9a12e14SNeil Armstrong no-map; 189e9a12e14SNeil Armstrong }; 190e9a12e14SNeil Armstrong }; 191e9a12e14SNeil Armstrong 192e9a12e14SNeil Armstrong sdio_pwrseq: sdio-pwrseq { 193e9a12e14SNeil Armstrong compatible = "mmc-pwrseq-simple"; 194e9a12e14SNeil Armstrong reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; 195e9a12e14SNeil Armstrong clocks = <&wifi32k>; 196e9a12e14SNeil Armstrong clock-names = "ext_clock"; 197e9a12e14SNeil Armstrong }; 198e9a12e14SNeil Armstrong 199af92a9e0SJerome Brunet sound { 200af92a9e0SJerome Brunet compatible = "amlogic,axg-sound-card"; 201af92a9e0SJerome Brunet model = "SM1-SEI610"; 202af92a9e0SJerome Brunet audio-aux-devs = <&tdmout_a>, <&tdmout_b>, 203af92a9e0SJerome Brunet <&tdmin_a>, <&tdmin_b>; 204af92a9e0SJerome Brunet audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0", 205af92a9e0SJerome Brunet "TDMOUT_A IN 1", "FRDDR_B OUT 0", 206af92a9e0SJerome Brunet "TDMOUT_A IN 2", "FRDDR_C OUT 0", 207af92a9e0SJerome Brunet "TDM_A Playback", "TDMOUT_A OUT", 208af92a9e0SJerome Brunet "TDMOUT_B IN 0", "FRDDR_A OUT 1", 209af92a9e0SJerome Brunet "TDMOUT_B IN 1", "FRDDR_B OUT 1", 210af92a9e0SJerome Brunet "TDMOUT_B IN 2", "FRDDR_C OUT 1", 211af92a9e0SJerome Brunet "TDM_B Playback", "TDMOUT_B OUT", 212af92a9e0SJerome Brunet "TODDR_A IN 4", "PDM Capture", 213af92a9e0SJerome Brunet "TODDR_B IN 4", "PDM Capture", 214af92a9e0SJerome Brunet "TODDR_C IN 4", "PDM Capture", 215af92a9e0SJerome Brunet "TDMIN_A IN 0", "TDM_A Capture", 216af92a9e0SJerome Brunet "TDMIN_A IN 3", "TDM_A Loopback", 217af92a9e0SJerome Brunet "TDMIN_B IN 0", "TDM_A Capture", 218af92a9e0SJerome Brunet "TDMIN_B IN 3", "TDM_A Loopback", 219af92a9e0SJerome Brunet "TDMIN_A IN 1", "TDM_B Capture", 220af92a9e0SJerome Brunet "TDMIN_A IN 4", "TDM_B Loopback", 221af92a9e0SJerome Brunet "TDMIN_B IN 1", "TDM_B Capture", 222af92a9e0SJerome Brunet "TDMIN_B IN 4", "TDM_B Loopback", 223af92a9e0SJerome Brunet "TODDR_A IN 0", "TDMIN_A OUT", 224af92a9e0SJerome Brunet "TODDR_B IN 0", "TDMIN_A OUT", 225af92a9e0SJerome Brunet "TODDR_C IN 0", "TDMIN_A OUT", 226af92a9e0SJerome Brunet "TODDR_A IN 1", "TDMIN_B OUT", 227af92a9e0SJerome Brunet "TODDR_B IN 1", "TDMIN_B OUT", 228af92a9e0SJerome Brunet "TODDR_C IN 1", "TDMIN_B OUT"; 229af92a9e0SJerome Brunet 230af92a9e0SJerome Brunet assigned-clocks = <&clkc CLKID_MPLL2>, 231af92a9e0SJerome Brunet <&clkc CLKID_MPLL0>, 232af92a9e0SJerome Brunet <&clkc CLKID_MPLL1>; 233af92a9e0SJerome Brunet assigned-clock-parents = <0>, <0>, <0>; 234af92a9e0SJerome Brunet assigned-clock-rates = <294912000>, 235af92a9e0SJerome Brunet <270950400>, 236af92a9e0SJerome Brunet <393216000>; 237af92a9e0SJerome Brunet status = "okay"; 238af92a9e0SJerome Brunet 239af92a9e0SJerome Brunet dai-link-0 { 240af92a9e0SJerome Brunet sound-dai = <&frddr_a>; 241af92a9e0SJerome Brunet }; 242af92a9e0SJerome Brunet 243af92a9e0SJerome Brunet dai-link-1 { 244af92a9e0SJerome Brunet sound-dai = <&frddr_b>; 245af92a9e0SJerome Brunet }; 246af92a9e0SJerome Brunet 247af92a9e0SJerome Brunet dai-link-2 { 248af92a9e0SJerome Brunet sound-dai = <&frddr_c>; 249af92a9e0SJerome Brunet }; 250af92a9e0SJerome Brunet 251af92a9e0SJerome Brunet dai-link-3 { 252af92a9e0SJerome Brunet sound-dai = <&toddr_a>; 253af92a9e0SJerome Brunet }; 254af92a9e0SJerome Brunet 255af92a9e0SJerome Brunet dai-link-4 { 256af92a9e0SJerome Brunet sound-dai = <&toddr_b>; 257af92a9e0SJerome Brunet }; 258af92a9e0SJerome Brunet 259af92a9e0SJerome Brunet dai-link-5 { 260af92a9e0SJerome Brunet sound-dai = <&toddr_c>; 261af92a9e0SJerome Brunet }; 262af92a9e0SJerome Brunet 263af92a9e0SJerome Brunet /* internal speaker interface */ 264af92a9e0SJerome Brunet dai-link-6 { 265af92a9e0SJerome Brunet sound-dai = <&tdmif_a>; 266af92a9e0SJerome Brunet dai-format = "i2s"; 267af92a9e0SJerome Brunet dai-tdm-slot-tx-mask-0 = <1 1>; 268af92a9e0SJerome Brunet mclk-fs = <256>; 269af92a9e0SJerome Brunet 270af92a9e0SJerome Brunet codec-0 { 271af92a9e0SJerome Brunet sound-dai = <&mono_dac>; 272af92a9e0SJerome Brunet }; 273af92a9e0SJerome Brunet 274af92a9e0SJerome Brunet codec-1 { 275af92a9e0SJerome Brunet sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>; 276af92a9e0SJerome Brunet }; 277af92a9e0SJerome Brunet }; 278af92a9e0SJerome Brunet 279af92a9e0SJerome Brunet /* 8ch hdmi interface */ 280af92a9e0SJerome Brunet dai-link-7 { 281af92a9e0SJerome Brunet sound-dai = <&tdmif_b>; 282af92a9e0SJerome Brunet dai-format = "i2s"; 283af92a9e0SJerome Brunet dai-tdm-slot-tx-mask-0 = <1 1>; 284af92a9e0SJerome Brunet dai-tdm-slot-tx-mask-1 = <1 1>; 285af92a9e0SJerome Brunet dai-tdm-slot-tx-mask-2 = <1 1>; 286af92a9e0SJerome Brunet dai-tdm-slot-tx-mask-3 = <1 1>; 287af92a9e0SJerome Brunet mclk-fs = <256>; 288af92a9e0SJerome Brunet 289af92a9e0SJerome Brunet codec { 290af92a9e0SJerome Brunet sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>; 291af92a9e0SJerome Brunet }; 292af92a9e0SJerome Brunet }; 293af92a9e0SJerome Brunet 294af92a9e0SJerome Brunet /* internal digital mics */ 295af92a9e0SJerome Brunet dai-link-8 { 296af92a9e0SJerome Brunet sound-dai = <&pdm>; 297af92a9e0SJerome Brunet 298af92a9e0SJerome Brunet codec { 299af92a9e0SJerome Brunet sound-dai = <&dmics>; 300af92a9e0SJerome Brunet }; 301af92a9e0SJerome Brunet }; 302af92a9e0SJerome Brunet 303af92a9e0SJerome Brunet /* hdmi glue */ 304af92a9e0SJerome Brunet dai-link-9 { 305af92a9e0SJerome Brunet sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; 306af92a9e0SJerome Brunet 307af92a9e0SJerome Brunet codec { 308af92a9e0SJerome Brunet sound-dai = <&hdmi_tx>; 309af92a9e0SJerome Brunet }; 310af92a9e0SJerome Brunet }; 311af92a9e0SJerome Brunet }; 312af92a9e0SJerome Brunet 313e9a12e14SNeil Armstrong wifi32k: wifi32k { 314e9a12e14SNeil Armstrong compatible = "pwm-clock"; 315e9a12e14SNeil Armstrong #clock-cells = <0>; 316e9a12e14SNeil Armstrong clock-frequency = <32768>; 317e9a12e14SNeil Armstrong pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ 318e9a12e14SNeil Armstrong }; 319e9a12e14SNeil Armstrong}; 320e9a12e14SNeil Armstrong 321af92a9e0SJerome Brunet&arb { 322af92a9e0SJerome Brunet status = "okay"; 323af92a9e0SJerome Brunet}; 324af92a9e0SJerome Brunet 325e9a12e14SNeil Armstrong&cec_AO { 326e9a12e14SNeil Armstrong pinctrl-0 = <&cec_ao_a_h_pins>; 327e9a12e14SNeil Armstrong pinctrl-names = "default"; 328e9a12e14SNeil Armstrong status = "disabled"; 329e9a12e14SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 330e9a12e14SNeil Armstrong}; 331e9a12e14SNeil Armstrong 332e9a12e14SNeil Armstrong&cecb_AO { 333e9a12e14SNeil Armstrong pinctrl-0 = <&cec_ao_b_h_pins>; 334e9a12e14SNeil Armstrong pinctrl-names = "default"; 335e9a12e14SNeil Armstrong status = "okay"; 336e9a12e14SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 337e9a12e14SNeil Armstrong}; 338e9a12e14SNeil Armstrong 339af92a9e0SJerome Brunet&clkc_audio { 340af92a9e0SJerome Brunet status = "okay"; 341af92a9e0SJerome Brunet}; 342af92a9e0SJerome Brunet 3433d9e7648SNeil Armstrong&cpu0 { 3443d9e7648SNeil Armstrong cpu-supply = <&vddcpu>; 3453d9e7648SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 3463d9e7648SNeil Armstrong clocks = <&clkc CLKID_CPU_CLK>; 3473d9e7648SNeil Armstrong clock-latency = <50000>; 3483d9e7648SNeil Armstrong}; 3493d9e7648SNeil Armstrong 3503d9e7648SNeil Armstrong&cpu1 { 3513d9e7648SNeil Armstrong cpu-supply = <&vddcpu>; 3523d9e7648SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 3533d9e7648SNeil Armstrong clocks = <&clkc CLKID_CPU1_CLK>; 3543d9e7648SNeil Armstrong clock-latency = <50000>; 3553d9e7648SNeil Armstrong}; 3563d9e7648SNeil Armstrong 3573d9e7648SNeil Armstrong&cpu2 { 3583d9e7648SNeil Armstrong cpu-supply = <&vddcpu>; 3593d9e7648SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 3603d9e7648SNeil Armstrong clocks = <&clkc CLKID_CPU2_CLK>; 3613d9e7648SNeil Armstrong clock-latency = <50000>; 3623d9e7648SNeil Armstrong}; 3633d9e7648SNeil Armstrong 3643d9e7648SNeil Armstrong&cpu3 { 3653d9e7648SNeil Armstrong cpu-supply = <&vddcpu>; 3663d9e7648SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 3673d9e7648SNeil Armstrong clocks = <&clkc CLKID_CPU3_CLK>; 3683d9e7648SNeil Armstrong clock-latency = <50000>; 3693d9e7648SNeil Armstrong}; 3703d9e7648SNeil Armstrong 371e9a12e14SNeil Armstrongðmac { 372e9a12e14SNeil Armstrong status = "okay"; 373e9a12e14SNeil Armstrong phy-handle = <&internal_ephy>; 374e9a12e14SNeil Armstrong phy-mode = "rmii"; 375e9a12e14SNeil Armstrong}; 376e9a12e14SNeil Armstrong 377af92a9e0SJerome Brunet&frddr_a { 378af92a9e0SJerome Brunet status = "okay"; 379af92a9e0SJerome Brunet}; 380af92a9e0SJerome Brunet 381af92a9e0SJerome Brunet&frddr_b { 382af92a9e0SJerome Brunet status = "okay"; 383af92a9e0SJerome Brunet}; 384af92a9e0SJerome Brunet 385af92a9e0SJerome Brunet&frddr_c { 386af92a9e0SJerome Brunet status = "okay"; 387af92a9e0SJerome Brunet}; 388af92a9e0SJerome Brunet 38996a386b6SNeil Armstrong&hdmi_tx { 39096a386b6SNeil Armstrong status = "okay"; 39196a386b6SNeil Armstrong pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>; 39296a386b6SNeil Armstrong pinctrl-names = "default"; 39396a386b6SNeil Armstrong}; 39496a386b6SNeil Armstrong 39596a386b6SNeil Armstrong&hdmi_tx_tmds_port { 39696a386b6SNeil Armstrong hdmi_tx_tmds_out: endpoint { 39796a386b6SNeil Armstrong remote-endpoint = <&hdmi_connector_in>; 39896a386b6SNeil Armstrong }; 39996a386b6SNeil Armstrong}; 40096a386b6SNeil Armstrong 401e9a12e14SNeil Armstrong&i2c3 { 402e9a12e14SNeil Armstrong status = "okay"; 403e9a12e14SNeil Armstrong pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>; 404e9a12e14SNeil Armstrong pinctrl-names = "default"; 405e9a12e14SNeil Armstrong}; 406e9a12e14SNeil Armstrong 407e9a12e14SNeil Armstrong&ir { 408e9a12e14SNeil Armstrong status = "okay"; 409e9a12e14SNeil Armstrong pinctrl-0 = <&remote_input_ao_pins>; 410e9a12e14SNeil Armstrong pinctrl-names = "default"; 411e9a12e14SNeil Armstrong}; 412e9a12e14SNeil Armstrong 413af92a9e0SJerome Brunet&pdm { 414af92a9e0SJerome Brunet pinctrl-0 = <&pdm_din0_z_pins>, <&pdm_dclk_z_pins>; 415af92a9e0SJerome Brunet pinctrl-names = "default"; 416af92a9e0SJerome Brunet status = "okay"; 417af92a9e0SJerome Brunet}; 418af92a9e0SJerome Brunet 419e9a12e14SNeil Armstrong&pwm_AO_ab { 420e9a12e14SNeil Armstrong status = "okay"; 421e9a12e14SNeil Armstrong pinctrl-0 = <&pwm_ao_a_pins>; 422e9a12e14SNeil Armstrong pinctrl-names = "default"; 423e9a12e14SNeil Armstrong clocks = <&xtal>; 424e9a12e14SNeil Armstrong clock-names = "clkin0"; 425e9a12e14SNeil Armstrong}; 426e9a12e14SNeil Armstrong 4273d9e7648SNeil Armstrong&pwm_AO_cd { 4283d9e7648SNeil Armstrong pinctrl-0 = <&pwm_ao_d_e_pins>; 4293d9e7648SNeil Armstrong pinctrl-names = "default"; 4303d9e7648SNeil Armstrong clocks = <&xtal>; 4313d9e7648SNeil Armstrong clock-names = "clkin1"; 4323d9e7648SNeil Armstrong status = "okay"; 4333d9e7648SNeil Armstrong}; 4343d9e7648SNeil Armstrong 435e9a12e14SNeil Armstrong&pwm_ef { 436e9a12e14SNeil Armstrong status = "okay"; 437e9a12e14SNeil Armstrong pinctrl-0 = <&pwm_e_pins>; 438e9a12e14SNeil Armstrong pinctrl-names = "default"; 439e9a12e14SNeil Armstrong clocks = <&xtal>; 440e9a12e14SNeil Armstrong clock-names = "clkin0"; 441e9a12e14SNeil Armstrong}; 442e9a12e14SNeil Armstrong 443e9a12e14SNeil Armstrong&saradc { 444e9a12e14SNeil Armstrong status = "okay"; 445e9a12e14SNeil Armstrong vref-supply = <&vddio_ao1v8>; 446e9a12e14SNeil Armstrong}; 447e9a12e14SNeil Armstrong 448e9a12e14SNeil Armstrong/* SDIO */ 449e9a12e14SNeil Armstrong&sd_emmc_a { 450e9a12e14SNeil Armstrong status = "okay"; 451e9a12e14SNeil Armstrong pinctrl-0 = <&sdio_pins>; 452e9a12e14SNeil Armstrong pinctrl-1 = <&sdio_clk_gate_pins>; 453e9a12e14SNeil Armstrong pinctrl-names = "default", "clk-gate"; 454e9a12e14SNeil Armstrong #address-cells = <1>; 455e9a12e14SNeil Armstrong #size-cells = <0>; 456e9a12e14SNeil Armstrong 457e9a12e14SNeil Armstrong bus-width = <4>; 458e9a12e14SNeil Armstrong cap-sd-highspeed; 459e9a12e14SNeil Armstrong sd-uhs-sdr50; 460e9a12e14SNeil Armstrong max-frequency = <100000000>; 461e9a12e14SNeil Armstrong 462e9a12e14SNeil Armstrong non-removable; 463e9a12e14SNeil Armstrong disable-wp; 464e9a12e14SNeil Armstrong 4652e09574dSNeil Armstrong /* WiFi firmware requires power to be kept while in suspend */ 4662e09574dSNeil Armstrong keep-power-in-suspend; 4672e09574dSNeil Armstrong 468e9a12e14SNeil Armstrong mmc-pwrseq = <&sdio_pwrseq>; 469e9a12e14SNeil Armstrong 470e9a12e14SNeil Armstrong vmmc-supply = <&vddao_3v3>; 471e9a12e14SNeil Armstrong vqmmc-supply = <&vddio_ao1v8>; 472e9a12e14SNeil Armstrong 473e9a12e14SNeil Armstrong brcmf: wifi@1 { 474e9a12e14SNeil Armstrong reg = <1>; 475e9a12e14SNeil Armstrong compatible = "brcm,bcm4329-fmac"; 476e9a12e14SNeil Armstrong }; 477e9a12e14SNeil Armstrong}; 478e9a12e14SNeil Armstrong 479e9a12e14SNeil Armstrong/* SD card */ 480e9a12e14SNeil Armstrong&sd_emmc_b { 481e9a12e14SNeil Armstrong status = "okay"; 482e9a12e14SNeil Armstrong pinctrl-0 = <&sdcard_c_pins>; 483e9a12e14SNeil Armstrong pinctrl-1 = <&sdcard_clk_gate_c_pins>; 484e9a12e14SNeil Armstrong pinctrl-names = "default", "clk-gate"; 485e9a12e14SNeil Armstrong 486e9a12e14SNeil Armstrong bus-width = <4>; 487e9a12e14SNeil Armstrong cap-sd-highspeed; 488e9a12e14SNeil Armstrong max-frequency = <50000000>; 489e9a12e14SNeil Armstrong disable-wp; 490e9a12e14SNeil Armstrong 491e9a12e14SNeil Armstrong cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; 492e9a12e14SNeil Armstrong vmmc-supply = <&vddao_3v3>; 493e9a12e14SNeil Armstrong vqmmc-supply = <&vddao_3v3>; 494e9a12e14SNeil Armstrong}; 495e9a12e14SNeil Armstrong 496e9a12e14SNeil Armstrong/* eMMC */ 497e9a12e14SNeil Armstrong&sd_emmc_c { 498e9a12e14SNeil Armstrong status = "okay"; 499e9a12e14SNeil Armstrong pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; 500e9a12e14SNeil Armstrong pinctrl-1 = <&emmc_clk_gate_pins>; 501e9a12e14SNeil Armstrong pinctrl-names = "default", "clk-gate"; 502e9a12e14SNeil Armstrong 503e9a12e14SNeil Armstrong bus-width = <8>; 504e9a12e14SNeil Armstrong cap-mmc-highspeed; 505e9a12e14SNeil Armstrong mmc-ddr-1_8v; 506e9a12e14SNeil Armstrong mmc-hs200-1_8v; 507e9a12e14SNeil Armstrong max-frequency = <200000000>; 508e9a12e14SNeil Armstrong non-removable; 509e9a12e14SNeil Armstrong disable-wp; 510e9a12e14SNeil Armstrong 511e9a12e14SNeil Armstrong mmc-pwrseq = <&emmc_pwrseq>; 512e9a12e14SNeil Armstrong vmmc-supply = <&vddao_3v3>; 513e9a12e14SNeil Armstrong vqmmc-supply = <&emmc_1v8>; 514e9a12e14SNeil Armstrong}; 515e9a12e14SNeil Armstrong 516af92a9e0SJerome Brunet&tdmif_a { 517af92a9e0SJerome Brunet pinctrl-0 = <&tdm_a_dout0_pins>, <&tdm_a_fs_pins>, <&tdm_a_sclk_pins>; 518af92a9e0SJerome Brunet pinctrl-names = "default"; 519af92a9e0SJerome Brunet status = "okay"; 520af92a9e0SJerome Brunet 521af92a9e0SJerome Brunet assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD0>, 522af92a9e0SJerome Brunet <&clkc_audio AUD_CLKID_TDM_LRCLK_PAD0>; 523af92a9e0SJerome Brunet assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_A_SCLK>, 524af92a9e0SJerome Brunet <&clkc_audio AUD_CLKID_MST_A_LRCLK>; 525af92a9e0SJerome Brunet assigned-clock-rates = <0>, <0>; 526af92a9e0SJerome Brunet}; 527af92a9e0SJerome Brunet 528af92a9e0SJerome Brunet&tdmif_b { 529af92a9e0SJerome Brunet status = "okay"; 530af92a9e0SJerome Brunet}; 531af92a9e0SJerome Brunet 532af92a9e0SJerome Brunet&tdmin_a { 533af92a9e0SJerome Brunet status = "okay"; 534af92a9e0SJerome Brunet}; 535af92a9e0SJerome Brunet 536af92a9e0SJerome Brunet&tdmin_b { 537af92a9e0SJerome Brunet status = "okay"; 538af92a9e0SJerome Brunet}; 539af92a9e0SJerome Brunet 540af92a9e0SJerome Brunet&tdmout_a { 541af92a9e0SJerome Brunet status = "okay"; 542af92a9e0SJerome Brunet}; 543af92a9e0SJerome Brunet 544af92a9e0SJerome Brunet&tdmout_b { 545af92a9e0SJerome Brunet status = "okay"; 546af92a9e0SJerome Brunet}; 547af92a9e0SJerome Brunet 548af92a9e0SJerome Brunet&toddr_a { 549af92a9e0SJerome Brunet status = "okay"; 550af92a9e0SJerome Brunet}; 551af92a9e0SJerome Brunet 552af92a9e0SJerome Brunet&toddr_b { 553af92a9e0SJerome Brunet status = "okay"; 554af92a9e0SJerome Brunet}; 555af92a9e0SJerome Brunet 556af92a9e0SJerome Brunet&toddr_c { 557af92a9e0SJerome Brunet status = "okay"; 558af92a9e0SJerome Brunet}; 559af92a9e0SJerome Brunet 560af92a9e0SJerome Brunet&tohdmitx { 561af92a9e0SJerome Brunet status = "okay"; 562af92a9e0SJerome Brunet}; 563af92a9e0SJerome Brunet 564e9a12e14SNeil Armstrong&uart_A { 565e9a12e14SNeil Armstrong status = "okay"; 566e9a12e14SNeil Armstrong pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; 567e9a12e14SNeil Armstrong pinctrl-names = "default"; 568e9a12e14SNeil Armstrong uart-has-rtscts; 569e9a12e14SNeil Armstrong 570e9a12e14SNeil Armstrong bluetooth { 571e9a12e14SNeil Armstrong compatible = "brcm,bcm43438-bt"; 572e9a12e14SNeil Armstrong shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; 573e9a12e14SNeil Armstrong max-speed = <2000000>; 574e9a12e14SNeil Armstrong clocks = <&wifi32k>; 575e9a12e14SNeil Armstrong clock-names = "lpo"; 576e9a12e14SNeil Armstrong vbat-supply = <&vddao_3v3>; 577e9a12e14SNeil Armstrong vddio-supply = <&vddio_ao1v8>; 578e9a12e14SNeil Armstrong }; 579e9a12e14SNeil Armstrong}; 580e9a12e14SNeil Armstrong 581e9a12e14SNeil Armstrong/* Exposed via the on-board USB to Serial FT232RL IC */ 582e9a12e14SNeil Armstrong&uart_AO { 583e9a12e14SNeil Armstrong status = "okay"; 584e9a12e14SNeil Armstrong pinctrl-0 = <&uart_ao_a_pins>; 585e9a12e14SNeil Armstrong pinctrl-names = "default"; 586e9a12e14SNeil Armstrong}; 58724fe3e98SNeil Armstrong 58824fe3e98SNeil Armstrong&usb { 58924fe3e98SNeil Armstrong status = "okay"; 59024fe3e98SNeil Armstrong dr_mode = "otg"; 59124fe3e98SNeil Armstrong}; 592