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 { 49f424da7fSKevin Hilman compatible = "gpio-keys"; 50e9a12e14SNeil Armstrong 51e9a12e14SNeil Armstrong key1 { 52e9a12e14SNeil Armstrong label = "A"; 53e9a12e14SNeil Armstrong linux,code = <BTN_0>; 54e9a12e14SNeil Armstrong gpios = <&gpio GPIOH_6 GPIO_ACTIVE_LOW>; 55f424da7fSKevin Hilman interrupt-parent = <&gpio_intc>; 56f424da7fSKevin Hilman interrupts = <34 IRQ_TYPE_EDGE_BOTH>; 57e9a12e14SNeil Armstrong }; 58e9a12e14SNeil Armstrong 59e9a12e14SNeil Armstrong key2 { 60e9a12e14SNeil Armstrong label = "B"; 61e9a12e14SNeil Armstrong linux,code = <BTN_1>; 62e9a12e14SNeil Armstrong gpios = <&gpio GPIOH_7 GPIO_ACTIVE_LOW>; 63f424da7fSKevin Hilman interrupt-parent = <&gpio_intc>; 64f424da7fSKevin Hilman interrupts = <35 IRQ_TYPE_EDGE_BOTH>; 65e9a12e14SNeil Armstrong }; 66e9a12e14SNeil Armstrong 67e9a12e14SNeil Armstrong key3 { 68e9a12e14SNeil Armstrong label = "C"; 69e9a12e14SNeil Armstrong linux,code = <BTN_2>; 70e9a12e14SNeil Armstrong gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>; 71f424da7fSKevin Hilman interrupt-parent = <&gpio_intc>; 72f424da7fSKevin Hilman interrupts = <2 IRQ_TYPE_EDGE_BOTH>; 73f424da7fSKevin Hilman }; 74f424da7fSKevin Hilman 75f424da7fSKevin Hilman mic_mute { 76f424da7fSKevin Hilman label = "MicMute"; 77f424da7fSKevin Hilman linux,code = <SW_MUTE_DEVICE>; 78f424da7fSKevin Hilman linux,input-type = <EV_SW>; 79f424da7fSKevin Hilman gpios = <&gpio_ao GPIOE_2 GPIO_ACTIVE_LOW>; 80f424da7fSKevin Hilman interrupt-parent = <&gpio_intc>; 81f424da7fSKevin Hilman interrupts = <99 IRQ_TYPE_EDGE_BOTH>; 82f424da7fSKevin Hilman }; 83f424da7fSKevin Hilman 84f424da7fSKevin Hilman power_key { 85f424da7fSKevin Hilman label = "PowerKey"; 86f424da7fSKevin Hilman linux,code = <KEY_POWER>; 87f424da7fSKevin Hilman gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_LOW>; 88f424da7fSKevin Hilman interrupt-parent = <&gpio_intc>; 89f424da7fSKevin Hilman interrupts = <3 IRQ_TYPE_EDGE_BOTH>; 90e9a12e14SNeil Armstrong }; 91e9a12e14SNeil Armstrong }; 92e9a12e14SNeil Armstrong 9396a386b6SNeil Armstrong hdmi-connector { 9496a386b6SNeil Armstrong compatible = "hdmi-connector"; 9596a386b6SNeil Armstrong type = "a"; 9696a386b6SNeil Armstrong 9796a386b6SNeil Armstrong port { 9896a386b6SNeil Armstrong hdmi_connector_in: endpoint { 9996a386b6SNeil Armstrong remote-endpoint = <&hdmi_tx_tmds_out>; 10096a386b6SNeil Armstrong }; 10196a386b6SNeil Armstrong }; 10296a386b6SNeil Armstrong }; 10396a386b6SNeil Armstrong 104a74978f3SAlexander Dahl led-controller-1 { 105e9a12e14SNeil Armstrong compatible = "gpio-leds"; 106e9a12e14SNeil Armstrong 107a74978f3SAlexander Dahl led-1 { 108e9a12e14SNeil Armstrong label = "sei610:blue:bt"; 109e9a12e14SNeil Armstrong gpios = <&gpio GPIOC_7 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; 110e9a12e14SNeil Armstrong default-state = "off"; 111e9a12e14SNeil Armstrong }; 112e9a12e14SNeil Armstrong }; 113e9a12e14SNeil Armstrong 114a74978f3SAlexander Dahl led-controller-2 { 115e9a12e14SNeil Armstrong compatible = "pwm-leds"; 116e9a12e14SNeil Armstrong 117a74978f3SAlexander Dahl led-2 { 118e9a12e14SNeil Armstrong label = "sei610:red:power"; 119e9a12e14SNeil Armstrong pwms = <&pwm_AO_ab 0 30518 0>; 120e9a12e14SNeil Armstrong max-brightness = <255>; 121e9a12e14SNeil Armstrong linux,default-trigger = "default-on"; 122e9a12e14SNeil Armstrong active-low; 123e9a12e14SNeil Armstrong }; 124e9a12e14SNeil Armstrong }; 125e9a12e14SNeil Armstrong 126e9a12e14SNeil Armstrong memory@0 { 127e9a12e14SNeil Armstrong device_type = "memory"; 128e9a12e14SNeil Armstrong reg = <0x0 0x0 0x0 0x40000000>; 129e9a12e14SNeil Armstrong }; 130e9a12e14SNeil Armstrong 131e9a12e14SNeil Armstrong ao_5v: regulator-ao_5v { 132e9a12e14SNeil Armstrong compatible = "regulator-fixed"; 133e9a12e14SNeil Armstrong regulator-name = "AO_5V"; 134e9a12e14SNeil Armstrong regulator-min-microvolt = <5000000>; 135e9a12e14SNeil Armstrong regulator-max-microvolt = <5000000>; 136e9a12e14SNeil Armstrong vin-supply = <&dc_in>; 137e9a12e14SNeil Armstrong regulator-always-on; 138e9a12e14SNeil Armstrong }; 139e9a12e14SNeil Armstrong 140e9a12e14SNeil Armstrong dc_in: regulator-dc_in { 141e9a12e14SNeil Armstrong compatible = "regulator-fixed"; 142e9a12e14SNeil Armstrong regulator-name = "DC_IN"; 143e9a12e14SNeil Armstrong regulator-min-microvolt = <5000000>; 144e9a12e14SNeil Armstrong regulator-max-microvolt = <5000000>; 145e9a12e14SNeil Armstrong regulator-always-on; 146e9a12e14SNeil Armstrong }; 147e9a12e14SNeil Armstrong 148e9a12e14SNeil Armstrong emmc_1v8: regulator-emmc_1v8 { 149e9a12e14SNeil Armstrong compatible = "regulator-fixed"; 150e9a12e14SNeil Armstrong regulator-name = "EMMC_1V8"; 151e9a12e14SNeil Armstrong regulator-min-microvolt = <1800000>; 152e9a12e14SNeil Armstrong regulator-max-microvolt = <1800000>; 153e9a12e14SNeil Armstrong vin-supply = <&vddao_3v3>; 154e9a12e14SNeil Armstrong regulator-always-on; 155e9a12e14SNeil Armstrong }; 156e9a12e14SNeil Armstrong 157e9a12e14SNeil Armstrong vddao_3v3: regulator-vddao_3v3 { 158e9a12e14SNeil Armstrong compatible = "regulator-fixed"; 159e9a12e14SNeil Armstrong regulator-name = "VDDAO_3V3"; 160e9a12e14SNeil Armstrong regulator-min-microvolt = <3300000>; 161e9a12e14SNeil Armstrong regulator-max-microvolt = <3300000>; 162e9a12e14SNeil Armstrong vin-supply = <&dc_in>; 163e9a12e14SNeil Armstrong regulator-always-on; 164e9a12e14SNeil Armstrong }; 165e9a12e14SNeil Armstrong 166e9a12e14SNeil Armstrong /* Used by Tuner, RGB Led & IR Emitter LED array */ 167e9a12e14SNeil Armstrong vddao_3v3_t: regulator-vddao_3v3_t { 168e9a12e14SNeil Armstrong compatible = "regulator-fixed"; 169e9a12e14SNeil Armstrong regulator-name = "VDDAO_3V3_T"; 170e9a12e14SNeil Armstrong regulator-min-microvolt = <3300000>; 171e9a12e14SNeil Armstrong regulator-max-microvolt = <3300000>; 172e9a12e14SNeil Armstrong vin-supply = <&vddao_3v3>; 173e9a12e14SNeil Armstrong gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>; 174e9a12e14SNeil Armstrong enable-active-low; 175e9a12e14SNeil Armstrong regulator-always-on; 176e9a12e14SNeil Armstrong }; 177e9a12e14SNeil Armstrong 1783d9e7648SNeil Armstrong vddcpu: regulator-vddcpu { 1793d9e7648SNeil Armstrong /* 1803d9e7648SNeil Armstrong * SY8120B1ABC DC/DC Regulator. 1813d9e7648SNeil Armstrong */ 1823d9e7648SNeil Armstrong compatible = "pwm-regulator"; 1833d9e7648SNeil Armstrong 1843d9e7648SNeil Armstrong regulator-name = "VDDCPU"; 1853d9e7648SNeil Armstrong regulator-min-microvolt = <690000>; 1863d9e7648SNeil Armstrong regulator-max-microvolt = <1050000>; 1873d9e7648SNeil Armstrong 188*0b26fa8aSAnand Moon pwm-supply = <&dc_in>; 1893d9e7648SNeil Armstrong 1903d9e7648SNeil Armstrong pwms = <&pwm_AO_cd 1 1500 0>; 1913d9e7648SNeil Armstrong pwm-dutycycle-range = <100 0>; 1923d9e7648SNeil Armstrong 1933d9e7648SNeil Armstrong regulator-boot-on; 1943d9e7648SNeil Armstrong regulator-always-on; 1953d9e7648SNeil Armstrong }; 1963d9e7648SNeil Armstrong 197e9a12e14SNeil Armstrong vddio_ao1v8: regulator-vddio_ao1v8 { 198e9a12e14SNeil Armstrong compatible = "regulator-fixed"; 199e9a12e14SNeil Armstrong regulator-name = "VDDIO_AO1V8"; 200e9a12e14SNeil Armstrong regulator-min-microvolt = <1800000>; 201e9a12e14SNeil Armstrong regulator-max-microvolt = <1800000>; 202e9a12e14SNeil Armstrong vin-supply = <&vddao_3v3>; 203e9a12e14SNeil Armstrong regulator-always-on; 204e9a12e14SNeil Armstrong }; 205e9a12e14SNeil Armstrong 206e9a12e14SNeil Armstrong reserved-memory { 207e9a12e14SNeil Armstrong /* TEE Reserved Memory */ 208e9a12e14SNeil Armstrong bl32_reserved: bl32@5000000 { 209e9a12e14SNeil Armstrong reg = <0x0 0x05300000 0x0 0x2000000>; 210e9a12e14SNeil Armstrong no-map; 211e9a12e14SNeil Armstrong }; 212e9a12e14SNeil Armstrong }; 213e9a12e14SNeil Armstrong 214e9a12e14SNeil Armstrong sdio_pwrseq: sdio-pwrseq { 215e9a12e14SNeil Armstrong compatible = "mmc-pwrseq-simple"; 216e9a12e14SNeil Armstrong reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; 217e9a12e14SNeil Armstrong clocks = <&wifi32k>; 218e9a12e14SNeil Armstrong clock-names = "ext_clock"; 219e9a12e14SNeil Armstrong }; 220e9a12e14SNeil Armstrong 221af92a9e0SJerome Brunet sound { 222af92a9e0SJerome Brunet compatible = "amlogic,axg-sound-card"; 223933b80edSChristian Hewitt model = "SEI610"; 224af92a9e0SJerome Brunet audio-aux-devs = <&tdmout_a>, <&tdmout_b>, 225af92a9e0SJerome Brunet <&tdmin_a>, <&tdmin_b>; 226af92a9e0SJerome Brunet audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0", 227af92a9e0SJerome Brunet "TDMOUT_A IN 1", "FRDDR_B OUT 0", 228af92a9e0SJerome Brunet "TDMOUT_A IN 2", "FRDDR_C OUT 0", 229af92a9e0SJerome Brunet "TDM_A Playback", "TDMOUT_A OUT", 230af92a9e0SJerome Brunet "TDMOUT_B IN 0", "FRDDR_A OUT 1", 231af92a9e0SJerome Brunet "TDMOUT_B IN 1", "FRDDR_B OUT 1", 232af92a9e0SJerome Brunet "TDMOUT_B IN 2", "FRDDR_C OUT 1", 233af92a9e0SJerome Brunet "TDM_B Playback", "TDMOUT_B OUT", 234af92a9e0SJerome Brunet "TODDR_A IN 4", "PDM Capture", 235af92a9e0SJerome Brunet "TODDR_B IN 4", "PDM Capture", 236af92a9e0SJerome Brunet "TODDR_C IN 4", "PDM Capture", 237af92a9e0SJerome Brunet "TDMIN_A IN 0", "TDM_A Capture", 238af92a9e0SJerome Brunet "TDMIN_A IN 3", "TDM_A Loopback", 239af92a9e0SJerome Brunet "TDMIN_B IN 0", "TDM_A Capture", 240af92a9e0SJerome Brunet "TDMIN_B IN 3", "TDM_A Loopback", 241af92a9e0SJerome Brunet "TDMIN_A IN 1", "TDM_B Capture", 242af92a9e0SJerome Brunet "TDMIN_A IN 4", "TDM_B Loopback", 243af92a9e0SJerome Brunet "TDMIN_B IN 1", "TDM_B Capture", 244af92a9e0SJerome Brunet "TDMIN_B IN 4", "TDM_B Loopback", 245af92a9e0SJerome Brunet "TODDR_A IN 0", "TDMIN_A OUT", 246af92a9e0SJerome Brunet "TODDR_B IN 0", "TDMIN_A OUT", 247af92a9e0SJerome Brunet "TODDR_C IN 0", "TDMIN_A OUT", 248af92a9e0SJerome Brunet "TODDR_A IN 1", "TDMIN_B OUT", 249af92a9e0SJerome Brunet "TODDR_B IN 1", "TDMIN_B OUT", 250af92a9e0SJerome Brunet "TODDR_C IN 1", "TDMIN_B OUT"; 251af92a9e0SJerome Brunet 252af92a9e0SJerome Brunet assigned-clocks = <&clkc CLKID_MPLL2>, 253af92a9e0SJerome Brunet <&clkc CLKID_MPLL0>, 254af92a9e0SJerome Brunet <&clkc CLKID_MPLL1>; 255af92a9e0SJerome Brunet assigned-clock-parents = <0>, <0>, <0>; 256af92a9e0SJerome Brunet assigned-clock-rates = <294912000>, 257af92a9e0SJerome Brunet <270950400>, 258af92a9e0SJerome Brunet <393216000>; 259af92a9e0SJerome Brunet status = "okay"; 260af92a9e0SJerome Brunet 261af92a9e0SJerome Brunet dai-link-0 { 262af92a9e0SJerome Brunet sound-dai = <&frddr_a>; 263af92a9e0SJerome Brunet }; 264af92a9e0SJerome Brunet 265af92a9e0SJerome Brunet dai-link-1 { 266af92a9e0SJerome Brunet sound-dai = <&frddr_b>; 267af92a9e0SJerome Brunet }; 268af92a9e0SJerome Brunet 269af92a9e0SJerome Brunet dai-link-2 { 270af92a9e0SJerome Brunet sound-dai = <&frddr_c>; 271af92a9e0SJerome Brunet }; 272af92a9e0SJerome Brunet 273af92a9e0SJerome Brunet dai-link-3 { 274af92a9e0SJerome Brunet sound-dai = <&toddr_a>; 275af92a9e0SJerome Brunet }; 276af92a9e0SJerome Brunet 277af92a9e0SJerome Brunet dai-link-4 { 278af92a9e0SJerome Brunet sound-dai = <&toddr_b>; 279af92a9e0SJerome Brunet }; 280af92a9e0SJerome Brunet 281af92a9e0SJerome Brunet dai-link-5 { 282af92a9e0SJerome Brunet sound-dai = <&toddr_c>; 283af92a9e0SJerome Brunet }; 284af92a9e0SJerome Brunet 285af92a9e0SJerome Brunet /* internal speaker interface */ 286af92a9e0SJerome Brunet dai-link-6 { 287af92a9e0SJerome Brunet sound-dai = <&tdmif_a>; 288af92a9e0SJerome Brunet dai-format = "i2s"; 289af92a9e0SJerome Brunet dai-tdm-slot-tx-mask-0 = <1 1>; 290af92a9e0SJerome Brunet mclk-fs = <256>; 291af92a9e0SJerome Brunet 292af92a9e0SJerome Brunet codec-0 { 293af92a9e0SJerome Brunet sound-dai = <&mono_dac>; 294af92a9e0SJerome Brunet }; 295af92a9e0SJerome Brunet 296af92a9e0SJerome Brunet codec-1 { 297af92a9e0SJerome Brunet sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>; 298af92a9e0SJerome Brunet }; 299af92a9e0SJerome Brunet }; 300af92a9e0SJerome Brunet 301af92a9e0SJerome Brunet /* 8ch hdmi interface */ 302af92a9e0SJerome Brunet dai-link-7 { 303af92a9e0SJerome Brunet sound-dai = <&tdmif_b>; 304af92a9e0SJerome Brunet dai-format = "i2s"; 305af92a9e0SJerome Brunet dai-tdm-slot-tx-mask-0 = <1 1>; 306af92a9e0SJerome Brunet dai-tdm-slot-tx-mask-1 = <1 1>; 307af92a9e0SJerome Brunet dai-tdm-slot-tx-mask-2 = <1 1>; 308af92a9e0SJerome Brunet dai-tdm-slot-tx-mask-3 = <1 1>; 309af92a9e0SJerome Brunet mclk-fs = <256>; 310af92a9e0SJerome Brunet 311af92a9e0SJerome Brunet codec { 312af92a9e0SJerome Brunet sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>; 313af92a9e0SJerome Brunet }; 314af92a9e0SJerome Brunet }; 315af92a9e0SJerome Brunet 316af92a9e0SJerome Brunet /* internal digital mics */ 317af92a9e0SJerome Brunet dai-link-8 { 318af92a9e0SJerome Brunet sound-dai = <&pdm>; 319af92a9e0SJerome Brunet 320af92a9e0SJerome Brunet codec { 321af92a9e0SJerome Brunet sound-dai = <&dmics>; 322af92a9e0SJerome Brunet }; 323af92a9e0SJerome Brunet }; 324af92a9e0SJerome Brunet 325af92a9e0SJerome Brunet /* hdmi glue */ 326af92a9e0SJerome Brunet dai-link-9 { 327af92a9e0SJerome Brunet sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; 328af92a9e0SJerome Brunet 329af92a9e0SJerome Brunet codec { 330af92a9e0SJerome Brunet sound-dai = <&hdmi_tx>; 331af92a9e0SJerome Brunet }; 332af92a9e0SJerome Brunet }; 333af92a9e0SJerome Brunet }; 334af92a9e0SJerome Brunet 335e9a12e14SNeil Armstrong wifi32k: wifi32k { 336e9a12e14SNeil Armstrong compatible = "pwm-clock"; 337e9a12e14SNeil Armstrong #clock-cells = <0>; 338e9a12e14SNeil Armstrong clock-frequency = <32768>; 339e9a12e14SNeil Armstrong pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ 340e9a12e14SNeil Armstrong }; 341e9a12e14SNeil Armstrong}; 342e9a12e14SNeil Armstrong 343af92a9e0SJerome Brunet&arb { 344af92a9e0SJerome Brunet status = "okay"; 345af92a9e0SJerome Brunet}; 346af92a9e0SJerome Brunet 347e9a12e14SNeil Armstrong&cec_AO { 348e9a12e14SNeil Armstrong pinctrl-0 = <&cec_ao_a_h_pins>; 349e9a12e14SNeil Armstrong pinctrl-names = "default"; 350e9a12e14SNeil Armstrong status = "disabled"; 351e9a12e14SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 352e9a12e14SNeil Armstrong}; 353e9a12e14SNeil Armstrong 354e9a12e14SNeil Armstrong&cecb_AO { 355e9a12e14SNeil Armstrong pinctrl-0 = <&cec_ao_b_h_pins>; 356e9a12e14SNeil Armstrong pinctrl-names = "default"; 357e9a12e14SNeil Armstrong status = "okay"; 358e9a12e14SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 359e9a12e14SNeil Armstrong}; 360e9a12e14SNeil Armstrong 361af92a9e0SJerome Brunet&clkc_audio { 362af92a9e0SJerome Brunet status = "okay"; 363af92a9e0SJerome Brunet}; 364af92a9e0SJerome Brunet 3653d9e7648SNeil Armstrong&cpu0 { 3663d9e7648SNeil Armstrong cpu-supply = <&vddcpu>; 3673d9e7648SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 3683d9e7648SNeil Armstrong clocks = <&clkc CLKID_CPU_CLK>; 3693d9e7648SNeil Armstrong clock-latency = <50000>; 3703d9e7648SNeil Armstrong}; 3713d9e7648SNeil Armstrong 3723d9e7648SNeil Armstrong&cpu1 { 3733d9e7648SNeil Armstrong cpu-supply = <&vddcpu>; 3743d9e7648SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 3753d9e7648SNeil Armstrong clocks = <&clkc CLKID_CPU1_CLK>; 3763d9e7648SNeil Armstrong clock-latency = <50000>; 3773d9e7648SNeil Armstrong}; 3783d9e7648SNeil Armstrong 3793d9e7648SNeil Armstrong&cpu2 { 3803d9e7648SNeil Armstrong cpu-supply = <&vddcpu>; 3813d9e7648SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 3823d9e7648SNeil Armstrong clocks = <&clkc CLKID_CPU2_CLK>; 3833d9e7648SNeil Armstrong clock-latency = <50000>; 3843d9e7648SNeil Armstrong}; 3853d9e7648SNeil Armstrong 3863d9e7648SNeil Armstrong&cpu3 { 3873d9e7648SNeil Armstrong cpu-supply = <&vddcpu>; 3883d9e7648SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 3893d9e7648SNeil Armstrong clocks = <&clkc CLKID_CPU3_CLK>; 3903d9e7648SNeil Armstrong clock-latency = <50000>; 3913d9e7648SNeil Armstrong}; 3923d9e7648SNeil Armstrong 393e9a12e14SNeil Armstrongðmac { 394e9a12e14SNeil Armstrong status = "okay"; 395e9a12e14SNeil Armstrong phy-handle = <&internal_ephy>; 396e9a12e14SNeil Armstrong phy-mode = "rmii"; 397e9a12e14SNeil Armstrong}; 398e9a12e14SNeil Armstrong 399af92a9e0SJerome Brunet&frddr_a { 400af92a9e0SJerome Brunet status = "okay"; 401af92a9e0SJerome Brunet}; 402af92a9e0SJerome Brunet 403af92a9e0SJerome Brunet&frddr_b { 404af92a9e0SJerome Brunet status = "okay"; 405af92a9e0SJerome Brunet}; 406af92a9e0SJerome Brunet 407af92a9e0SJerome Brunet&frddr_c { 408af92a9e0SJerome Brunet status = "okay"; 409af92a9e0SJerome Brunet}; 410af92a9e0SJerome Brunet 41196a386b6SNeil Armstrong&hdmi_tx { 41296a386b6SNeil Armstrong status = "okay"; 41396a386b6SNeil Armstrong pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>; 41496a386b6SNeil Armstrong pinctrl-names = "default"; 41596a386b6SNeil Armstrong}; 41696a386b6SNeil Armstrong 41796a386b6SNeil Armstrong&hdmi_tx_tmds_port { 41896a386b6SNeil Armstrong hdmi_tx_tmds_out: endpoint { 41996a386b6SNeil Armstrong remote-endpoint = <&hdmi_connector_in>; 42096a386b6SNeil Armstrong }; 42196a386b6SNeil Armstrong}; 42296a386b6SNeil Armstrong 423e9a12e14SNeil Armstrong&i2c3 { 424e9a12e14SNeil Armstrong status = "okay"; 425e9a12e14SNeil Armstrong pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>; 426e9a12e14SNeil Armstrong pinctrl-names = "default"; 427e9a12e14SNeil Armstrong}; 428e9a12e14SNeil Armstrong 429e9a12e14SNeil Armstrong&ir { 430e9a12e14SNeil Armstrong status = "okay"; 431e9a12e14SNeil Armstrong pinctrl-0 = <&remote_input_ao_pins>; 432e9a12e14SNeil Armstrong pinctrl-names = "default"; 433e9a12e14SNeil Armstrong}; 434e9a12e14SNeil Armstrong 435af92a9e0SJerome Brunet&pdm { 436af92a9e0SJerome Brunet pinctrl-0 = <&pdm_din0_z_pins>, <&pdm_dclk_z_pins>; 437af92a9e0SJerome Brunet pinctrl-names = "default"; 438af92a9e0SJerome Brunet status = "okay"; 439af92a9e0SJerome Brunet}; 440af92a9e0SJerome Brunet 441e9a12e14SNeil Armstrong&pwm_AO_ab { 442e9a12e14SNeil Armstrong status = "okay"; 443e9a12e14SNeil Armstrong pinctrl-0 = <&pwm_ao_a_pins>; 444e9a12e14SNeil Armstrong pinctrl-names = "default"; 445e9a12e14SNeil Armstrong clocks = <&xtal>; 446e9a12e14SNeil Armstrong clock-names = "clkin0"; 447e9a12e14SNeil Armstrong}; 448e9a12e14SNeil Armstrong 4493d9e7648SNeil Armstrong&pwm_AO_cd { 4503d9e7648SNeil Armstrong pinctrl-0 = <&pwm_ao_d_e_pins>; 4513d9e7648SNeil Armstrong pinctrl-names = "default"; 4523d9e7648SNeil Armstrong clocks = <&xtal>; 4533d9e7648SNeil Armstrong clock-names = "clkin1"; 4543d9e7648SNeil Armstrong status = "okay"; 4553d9e7648SNeil Armstrong}; 4563d9e7648SNeil Armstrong 457e9a12e14SNeil Armstrong&pwm_ef { 458e9a12e14SNeil Armstrong status = "okay"; 459e9a12e14SNeil Armstrong pinctrl-0 = <&pwm_e_pins>; 460e9a12e14SNeil Armstrong pinctrl-names = "default"; 461e9a12e14SNeil Armstrong clocks = <&xtal>; 462e9a12e14SNeil Armstrong clock-names = "clkin0"; 463e9a12e14SNeil Armstrong}; 464e9a12e14SNeil Armstrong 465e9a12e14SNeil Armstrong&saradc { 466e9a12e14SNeil Armstrong status = "okay"; 467e9a12e14SNeil Armstrong vref-supply = <&vddio_ao1v8>; 468e9a12e14SNeil Armstrong}; 469e9a12e14SNeil Armstrong 470e9a12e14SNeil Armstrong/* SDIO */ 471e9a12e14SNeil Armstrong&sd_emmc_a { 472e9a12e14SNeil Armstrong status = "okay"; 473e9a12e14SNeil Armstrong pinctrl-0 = <&sdio_pins>; 474e9a12e14SNeil Armstrong pinctrl-1 = <&sdio_clk_gate_pins>; 475e9a12e14SNeil Armstrong pinctrl-names = "default", "clk-gate"; 476e9a12e14SNeil Armstrong #address-cells = <1>; 477e9a12e14SNeil Armstrong #size-cells = <0>; 478e9a12e14SNeil Armstrong 479e9a12e14SNeil Armstrong bus-width = <4>; 480e9a12e14SNeil Armstrong cap-sd-highspeed; 481e9a12e14SNeil Armstrong sd-uhs-sdr50; 482e9a12e14SNeil Armstrong max-frequency = <100000000>; 483e9a12e14SNeil Armstrong 484e9a12e14SNeil Armstrong non-removable; 485e9a12e14SNeil Armstrong disable-wp; 486e9a12e14SNeil Armstrong 4872e09574dSNeil Armstrong /* WiFi firmware requires power to be kept while in suspend */ 4882e09574dSNeil Armstrong keep-power-in-suspend; 4892e09574dSNeil Armstrong 490e9a12e14SNeil Armstrong mmc-pwrseq = <&sdio_pwrseq>; 491e9a12e14SNeil Armstrong 492e9a12e14SNeil Armstrong vmmc-supply = <&vddao_3v3>; 493e9a12e14SNeil Armstrong vqmmc-supply = <&vddio_ao1v8>; 494e9a12e14SNeil Armstrong 495e9a12e14SNeil Armstrong brcmf: wifi@1 { 496e9a12e14SNeil Armstrong reg = <1>; 497e9a12e14SNeil Armstrong compatible = "brcm,bcm4329-fmac"; 498e9a12e14SNeil Armstrong }; 499e9a12e14SNeil Armstrong}; 500e9a12e14SNeil Armstrong 501e9a12e14SNeil Armstrong/* SD card */ 502e9a12e14SNeil Armstrong&sd_emmc_b { 503e9a12e14SNeil Armstrong status = "okay"; 504e9a12e14SNeil Armstrong pinctrl-0 = <&sdcard_c_pins>; 505e9a12e14SNeil Armstrong pinctrl-1 = <&sdcard_clk_gate_c_pins>; 506e9a12e14SNeil Armstrong pinctrl-names = "default", "clk-gate"; 507e9a12e14SNeil Armstrong 508e9a12e14SNeil Armstrong bus-width = <4>; 509e9a12e14SNeil Armstrong cap-sd-highspeed; 510e9a12e14SNeil Armstrong max-frequency = <50000000>; 511e9a12e14SNeil Armstrong disable-wp; 512e9a12e14SNeil Armstrong 513e9a12e14SNeil Armstrong cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; 514e9a12e14SNeil Armstrong vmmc-supply = <&vddao_3v3>; 515e9a12e14SNeil Armstrong vqmmc-supply = <&vddao_3v3>; 516e9a12e14SNeil Armstrong}; 517e9a12e14SNeil Armstrong 518e9a12e14SNeil Armstrong/* eMMC */ 519e9a12e14SNeil Armstrong&sd_emmc_c { 520e9a12e14SNeil Armstrong status = "okay"; 5214d2cb376SNeil Armstrong pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>; 522e9a12e14SNeil Armstrong pinctrl-1 = <&emmc_clk_gate_pins>; 523e9a12e14SNeil Armstrong pinctrl-names = "default", "clk-gate"; 524e9a12e14SNeil Armstrong 525e9a12e14SNeil Armstrong bus-width = <8>; 526e9a12e14SNeil Armstrong cap-mmc-highspeed; 527e9a12e14SNeil Armstrong mmc-ddr-1_8v; 528e9a12e14SNeil Armstrong mmc-hs200-1_8v; 529e9a12e14SNeil Armstrong max-frequency = <200000000>; 530e9a12e14SNeil Armstrong non-removable; 531e9a12e14SNeil Armstrong disable-wp; 532e9a12e14SNeil Armstrong 533e9a12e14SNeil Armstrong mmc-pwrseq = <&emmc_pwrseq>; 534e9a12e14SNeil Armstrong vmmc-supply = <&vddao_3v3>; 535e9a12e14SNeil Armstrong vqmmc-supply = <&emmc_1v8>; 536e9a12e14SNeil Armstrong}; 537e9a12e14SNeil Armstrong 538af92a9e0SJerome Brunet&tdmif_a { 539af92a9e0SJerome Brunet pinctrl-0 = <&tdm_a_dout0_pins>, <&tdm_a_fs_pins>, <&tdm_a_sclk_pins>; 540af92a9e0SJerome Brunet pinctrl-names = "default"; 541af92a9e0SJerome Brunet status = "okay"; 542af92a9e0SJerome Brunet 543af92a9e0SJerome Brunet assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD0>, 544af92a9e0SJerome Brunet <&clkc_audio AUD_CLKID_TDM_LRCLK_PAD0>; 545af92a9e0SJerome Brunet assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_A_SCLK>, 546af92a9e0SJerome Brunet <&clkc_audio AUD_CLKID_MST_A_LRCLK>; 547af92a9e0SJerome Brunet assigned-clock-rates = <0>, <0>; 548af92a9e0SJerome Brunet}; 549af92a9e0SJerome Brunet 550af92a9e0SJerome Brunet&tdmif_b { 551af92a9e0SJerome Brunet status = "okay"; 552af92a9e0SJerome Brunet}; 553af92a9e0SJerome Brunet 554af92a9e0SJerome Brunet&tdmin_a { 555af92a9e0SJerome Brunet status = "okay"; 556af92a9e0SJerome Brunet}; 557af92a9e0SJerome Brunet 558af92a9e0SJerome Brunet&tdmin_b { 559af92a9e0SJerome Brunet status = "okay"; 560af92a9e0SJerome Brunet}; 561af92a9e0SJerome Brunet 562af92a9e0SJerome Brunet&tdmout_a { 563af92a9e0SJerome Brunet status = "okay"; 564af92a9e0SJerome Brunet}; 565af92a9e0SJerome Brunet 566af92a9e0SJerome Brunet&tdmout_b { 567af92a9e0SJerome Brunet status = "okay"; 568af92a9e0SJerome Brunet}; 569af92a9e0SJerome Brunet 570af92a9e0SJerome Brunet&toddr_a { 571af92a9e0SJerome Brunet status = "okay"; 572af92a9e0SJerome Brunet}; 573af92a9e0SJerome Brunet 574af92a9e0SJerome Brunet&toddr_b { 575af92a9e0SJerome Brunet status = "okay"; 576af92a9e0SJerome Brunet}; 577af92a9e0SJerome Brunet 578af92a9e0SJerome Brunet&toddr_c { 579af92a9e0SJerome Brunet status = "okay"; 580af92a9e0SJerome Brunet}; 581af92a9e0SJerome Brunet 582af92a9e0SJerome Brunet&tohdmitx { 583af92a9e0SJerome Brunet status = "okay"; 584af92a9e0SJerome Brunet}; 585af92a9e0SJerome Brunet 586e9a12e14SNeil Armstrong&uart_A { 587e9a12e14SNeil Armstrong status = "okay"; 588e9a12e14SNeil Armstrong pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; 589e9a12e14SNeil Armstrong pinctrl-names = "default"; 590e9a12e14SNeil Armstrong uart-has-rtscts; 591e9a12e14SNeil Armstrong 592e9a12e14SNeil Armstrong bluetooth { 593e9a12e14SNeil Armstrong compatible = "brcm,bcm43438-bt"; 59430388cc0SGuillaume La Roque interrupt-parent = <&gpio_intc>; 59530388cc0SGuillaume La Roque interrupts = <95 IRQ_TYPE_LEVEL_HIGH>; 5965bea1336SGuillaume La Roque interrupt-names = "host-wakeup"; 597e9a12e14SNeil Armstrong shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; 598e9a12e14SNeil Armstrong max-speed = <2000000>; 599e9a12e14SNeil Armstrong clocks = <&wifi32k>; 600e9a12e14SNeil Armstrong clock-names = "lpo"; 601e9a12e14SNeil Armstrong vbat-supply = <&vddao_3v3>; 602e9a12e14SNeil Armstrong vddio-supply = <&vddio_ao1v8>; 603e9a12e14SNeil Armstrong }; 604e9a12e14SNeil Armstrong}; 605e9a12e14SNeil Armstrong 606e9a12e14SNeil Armstrong/* Exposed via the on-board USB to Serial FT232RL IC */ 607e9a12e14SNeil Armstrong&uart_AO { 608e9a12e14SNeil Armstrong status = "okay"; 609e9a12e14SNeil Armstrong pinctrl-0 = <&uart_ao_a_pins>; 610e9a12e14SNeil Armstrong pinctrl-names = "default"; 611e9a12e14SNeil Armstrong}; 61224fe3e98SNeil Armstrong 61324fe3e98SNeil Armstrong&usb { 61424fe3e98SNeil Armstrong status = "okay"; 61524fe3e98SNeil Armstrong dr_mode = "otg"; 61624fe3e98SNeil Armstrong}; 617