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 514fd9afd8SKrzysztof Kozlowski key-1 { 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>; 56*6387e0aaSHuqiang Qin interrupts = <IRQID_GPIOH_6 IRQ_TYPE_EDGE_BOTH>; 57e9a12e14SNeil Armstrong }; 58e9a12e14SNeil Armstrong 594fd9afd8SKrzysztof Kozlowski key-2 { 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>; 64*6387e0aaSHuqiang Qin interrupts = <IRQID_GPIOH_7 IRQ_TYPE_EDGE_BOTH>; 65e9a12e14SNeil Armstrong }; 66e9a12e14SNeil Armstrong 674fd9afd8SKrzysztof Kozlowski key-3 { 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>; 72*6387e0aaSHuqiang Qin interrupts = <IRQID_GPIOAO_2 IRQ_TYPE_EDGE_BOTH>; 73f424da7fSKevin Hilman }; 74f424da7fSKevin Hilman 754fd9afd8SKrzysztof Kozlowski key-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>; 81*6387e0aaSHuqiang Qin interrupts = <IRQID_GPIOE_2 IRQ_TYPE_EDGE_BOTH>; 82f424da7fSKevin Hilman }; 83f424da7fSKevin Hilman 844fd9afd8SKrzysztof Kozlowski key-power { 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>; 89*6387e0aaSHuqiang Qin interrupts = <IRQID_GPIOAO_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 regulator-always-on; 175e9a12e14SNeil Armstrong }; 176e9a12e14SNeil Armstrong 1773d9e7648SNeil Armstrong vddcpu: regulator-vddcpu { 1783d9e7648SNeil Armstrong /* 1793d9e7648SNeil Armstrong * SY8120B1ABC DC/DC Regulator. 1803d9e7648SNeil Armstrong */ 1813d9e7648SNeil Armstrong compatible = "pwm-regulator"; 1823d9e7648SNeil Armstrong 1833d9e7648SNeil Armstrong regulator-name = "VDDCPU"; 1843d9e7648SNeil Armstrong regulator-min-microvolt = <690000>; 1853d9e7648SNeil Armstrong regulator-max-microvolt = <1050000>; 1863d9e7648SNeil Armstrong 1870b26fa8aSAnand Moon pwm-supply = <&dc_in>; 1883d9e7648SNeil Armstrong 1893d9e7648SNeil Armstrong pwms = <&pwm_AO_cd 1 1500 0>; 1903d9e7648SNeil Armstrong pwm-dutycycle-range = <100 0>; 1913d9e7648SNeil Armstrong 1923d9e7648SNeil Armstrong regulator-boot-on; 1933d9e7648SNeil Armstrong regulator-always-on; 1943d9e7648SNeil Armstrong }; 1953d9e7648SNeil Armstrong 196e9a12e14SNeil Armstrong vddio_ao1v8: regulator-vddio_ao1v8 { 197e9a12e14SNeil Armstrong compatible = "regulator-fixed"; 198e9a12e14SNeil Armstrong regulator-name = "VDDIO_AO1V8"; 199e9a12e14SNeil Armstrong regulator-min-microvolt = <1800000>; 200e9a12e14SNeil Armstrong regulator-max-microvolt = <1800000>; 201e9a12e14SNeil Armstrong vin-supply = <&vddao_3v3>; 202e9a12e14SNeil Armstrong regulator-always-on; 203e9a12e14SNeil Armstrong }; 204e9a12e14SNeil Armstrong 205e9a12e14SNeil Armstrong sdio_pwrseq: sdio-pwrseq { 206e9a12e14SNeil Armstrong compatible = "mmc-pwrseq-simple"; 207e9a12e14SNeil Armstrong reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; 208e9a12e14SNeil Armstrong clocks = <&wifi32k>; 209e9a12e14SNeil Armstrong clock-names = "ext_clock"; 210e9a12e14SNeil Armstrong }; 211e9a12e14SNeil Armstrong 212af92a9e0SJerome Brunet sound { 213af92a9e0SJerome Brunet compatible = "amlogic,axg-sound-card"; 214933b80edSChristian Hewitt model = "SEI610"; 215af92a9e0SJerome Brunet audio-aux-devs = <&tdmout_a>, <&tdmout_b>, 216af92a9e0SJerome Brunet <&tdmin_a>, <&tdmin_b>; 217af92a9e0SJerome Brunet audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0", 218af92a9e0SJerome Brunet "TDMOUT_A IN 1", "FRDDR_B OUT 0", 219af92a9e0SJerome Brunet "TDMOUT_A IN 2", "FRDDR_C OUT 0", 220af92a9e0SJerome Brunet "TDM_A Playback", "TDMOUT_A OUT", 221af92a9e0SJerome Brunet "TDMOUT_B IN 0", "FRDDR_A OUT 1", 222af92a9e0SJerome Brunet "TDMOUT_B IN 1", "FRDDR_B OUT 1", 223af92a9e0SJerome Brunet "TDMOUT_B IN 2", "FRDDR_C OUT 1", 224af92a9e0SJerome Brunet "TDM_B Playback", "TDMOUT_B OUT", 225af92a9e0SJerome Brunet "TODDR_A IN 4", "PDM Capture", 226af92a9e0SJerome Brunet "TODDR_B IN 4", "PDM Capture", 227af92a9e0SJerome Brunet "TODDR_C IN 4", "PDM Capture", 228af92a9e0SJerome Brunet "TDMIN_A IN 0", "TDM_A Capture", 229af92a9e0SJerome Brunet "TDMIN_A IN 3", "TDM_A Loopback", 230af92a9e0SJerome Brunet "TDMIN_B IN 0", "TDM_A Capture", 231af92a9e0SJerome Brunet "TDMIN_B IN 3", "TDM_A Loopback", 232af92a9e0SJerome Brunet "TDMIN_A IN 1", "TDM_B Capture", 233af92a9e0SJerome Brunet "TDMIN_A IN 4", "TDM_B Loopback", 234af92a9e0SJerome Brunet "TDMIN_B IN 1", "TDM_B Capture", 235af92a9e0SJerome Brunet "TDMIN_B IN 4", "TDM_B Loopback", 236af92a9e0SJerome Brunet "TODDR_A IN 0", "TDMIN_A OUT", 237af92a9e0SJerome Brunet "TODDR_B IN 0", "TDMIN_A OUT", 238af92a9e0SJerome Brunet "TODDR_C IN 0", "TDMIN_A OUT", 239af92a9e0SJerome Brunet "TODDR_A IN 1", "TDMIN_B OUT", 240af92a9e0SJerome Brunet "TODDR_B IN 1", "TDMIN_B OUT", 241af92a9e0SJerome Brunet "TODDR_C IN 1", "TDMIN_B OUT"; 242af92a9e0SJerome Brunet 243af92a9e0SJerome Brunet assigned-clocks = <&clkc CLKID_MPLL2>, 244af92a9e0SJerome Brunet <&clkc CLKID_MPLL0>, 245af92a9e0SJerome Brunet <&clkc CLKID_MPLL1>; 246af92a9e0SJerome Brunet assigned-clock-parents = <0>, <0>, <0>; 247af92a9e0SJerome Brunet assigned-clock-rates = <294912000>, 248af92a9e0SJerome Brunet <270950400>, 249af92a9e0SJerome Brunet <393216000>; 250af92a9e0SJerome Brunet 251af92a9e0SJerome Brunet dai-link-0 { 252af92a9e0SJerome Brunet sound-dai = <&frddr_a>; 253af92a9e0SJerome Brunet }; 254af92a9e0SJerome Brunet 255af92a9e0SJerome Brunet dai-link-1 { 256af92a9e0SJerome Brunet sound-dai = <&frddr_b>; 257af92a9e0SJerome Brunet }; 258af92a9e0SJerome Brunet 259af92a9e0SJerome Brunet dai-link-2 { 260af92a9e0SJerome Brunet sound-dai = <&frddr_c>; 261af92a9e0SJerome Brunet }; 262af92a9e0SJerome Brunet 263af92a9e0SJerome Brunet dai-link-3 { 264af92a9e0SJerome Brunet sound-dai = <&toddr_a>; 265af92a9e0SJerome Brunet }; 266af92a9e0SJerome Brunet 267af92a9e0SJerome Brunet dai-link-4 { 268af92a9e0SJerome Brunet sound-dai = <&toddr_b>; 269af92a9e0SJerome Brunet }; 270af92a9e0SJerome Brunet 271af92a9e0SJerome Brunet dai-link-5 { 272af92a9e0SJerome Brunet sound-dai = <&toddr_c>; 273af92a9e0SJerome Brunet }; 274af92a9e0SJerome Brunet 275af92a9e0SJerome Brunet /* internal speaker interface */ 276af92a9e0SJerome Brunet dai-link-6 { 277af92a9e0SJerome Brunet sound-dai = <&tdmif_a>; 278af92a9e0SJerome Brunet dai-format = "i2s"; 279af92a9e0SJerome Brunet dai-tdm-slot-tx-mask-0 = <1 1>; 280af92a9e0SJerome Brunet mclk-fs = <256>; 281af92a9e0SJerome Brunet 282af92a9e0SJerome Brunet codec-0 { 283af92a9e0SJerome Brunet sound-dai = <&mono_dac>; 284af92a9e0SJerome Brunet }; 285af92a9e0SJerome Brunet 286af92a9e0SJerome Brunet codec-1 { 287af92a9e0SJerome Brunet sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>; 288af92a9e0SJerome Brunet }; 289af92a9e0SJerome Brunet }; 290af92a9e0SJerome Brunet 291af92a9e0SJerome Brunet /* 8ch hdmi interface */ 292af92a9e0SJerome Brunet dai-link-7 { 293af92a9e0SJerome Brunet sound-dai = <&tdmif_b>; 294af92a9e0SJerome Brunet dai-format = "i2s"; 295af92a9e0SJerome Brunet dai-tdm-slot-tx-mask-0 = <1 1>; 296af92a9e0SJerome Brunet dai-tdm-slot-tx-mask-1 = <1 1>; 297af92a9e0SJerome Brunet dai-tdm-slot-tx-mask-2 = <1 1>; 298af92a9e0SJerome Brunet dai-tdm-slot-tx-mask-3 = <1 1>; 299af92a9e0SJerome Brunet mclk-fs = <256>; 300af92a9e0SJerome Brunet 301af92a9e0SJerome Brunet codec { 302af92a9e0SJerome Brunet sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>; 303af92a9e0SJerome Brunet }; 304af92a9e0SJerome Brunet }; 305af92a9e0SJerome Brunet 306af92a9e0SJerome Brunet /* internal digital mics */ 307af92a9e0SJerome Brunet dai-link-8 { 308af92a9e0SJerome Brunet sound-dai = <&pdm>; 309af92a9e0SJerome Brunet 310af92a9e0SJerome Brunet codec { 311af92a9e0SJerome Brunet sound-dai = <&dmics>; 312af92a9e0SJerome Brunet }; 313af92a9e0SJerome Brunet }; 314af92a9e0SJerome Brunet 315af92a9e0SJerome Brunet /* hdmi glue */ 316af92a9e0SJerome Brunet dai-link-9 { 317af92a9e0SJerome Brunet sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; 318af92a9e0SJerome Brunet 319af92a9e0SJerome Brunet codec { 320af92a9e0SJerome Brunet sound-dai = <&hdmi_tx>; 321af92a9e0SJerome Brunet }; 322af92a9e0SJerome Brunet }; 323af92a9e0SJerome Brunet }; 324af92a9e0SJerome Brunet 325af92a9e0SJerome Brunet wifi32k: wifi32k { 326e9a12e14SNeil Armstrong compatible = "pwm-clock"; 327e9a12e14SNeil Armstrong #clock-cells = <0>; 328e9a12e14SNeil Armstrong clock-frequency = <32768>; 329e9a12e14SNeil Armstrong pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ 330e9a12e14SNeil Armstrong }; 331e9a12e14SNeil Armstrong}; 332e9a12e14SNeil Armstrong 333e9a12e14SNeil Armstrong&arb { 334af92a9e0SJerome Brunet status = "okay"; 335af92a9e0SJerome Brunet}; 336af92a9e0SJerome Brunet 337af92a9e0SJerome Brunet&cec_AO { 338e9a12e14SNeil Armstrong pinctrl-0 = <&cec_ao_a_h_pins>; 339e9a12e14SNeil Armstrong pinctrl-names = "default"; 340e9a12e14SNeil Armstrong status = "disabled"; 341e9a12e14SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 342e9a12e14SNeil Armstrong}; 343e9a12e14SNeil Armstrong 344e9a12e14SNeil Armstrong&cecb_AO { 345e9a12e14SNeil Armstrong pinctrl-0 = <&cec_ao_b_h_pins>; 346e9a12e14SNeil Armstrong pinctrl-names = "default"; 347e9a12e14SNeil Armstrong status = "okay"; 348e9a12e14SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 349e9a12e14SNeil Armstrong}; 350e9a12e14SNeil Armstrong 351e9a12e14SNeil Armstrong&clkc_audio { 352af92a9e0SJerome Brunet status = "okay"; 353af92a9e0SJerome Brunet}; 354af92a9e0SJerome Brunet 355af92a9e0SJerome Brunet&cpu0 { 3563d9e7648SNeil Armstrong cpu-supply = <&vddcpu>; 3573d9e7648SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 3583d9e7648SNeil Armstrong clocks = <&clkc CLKID_CPU_CLK>; 3593d9e7648SNeil Armstrong clock-latency = <50000>; 3603d9e7648SNeil Armstrong}; 3613d9e7648SNeil Armstrong 3623d9e7648SNeil Armstrong&cpu1 { 3633d9e7648SNeil Armstrong cpu-supply = <&vddcpu>; 3643d9e7648SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 3653d9e7648SNeil Armstrong clocks = <&clkc CLKID_CPU1_CLK>; 3663d9e7648SNeil Armstrong clock-latency = <50000>; 3673d9e7648SNeil Armstrong}; 3683d9e7648SNeil Armstrong 3693d9e7648SNeil Armstrong&cpu2 { 3703d9e7648SNeil Armstrong cpu-supply = <&vddcpu>; 3713d9e7648SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 3723d9e7648SNeil Armstrong clocks = <&clkc CLKID_CPU2_CLK>; 3733d9e7648SNeil Armstrong clock-latency = <50000>; 3743d9e7648SNeil Armstrong}; 3753d9e7648SNeil Armstrong 3763d9e7648SNeil Armstrong&cpu3 { 3773d9e7648SNeil Armstrong cpu-supply = <&vddcpu>; 3783d9e7648SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 3793d9e7648SNeil Armstrong clocks = <&clkc CLKID_CPU3_CLK>; 3803d9e7648SNeil Armstrong clock-latency = <50000>; 3813d9e7648SNeil Armstrong}; 3823d9e7648SNeil Armstrong 3833d9e7648SNeil Armstrongðmac { 384e9a12e14SNeil Armstrong status = "okay"; 385e9a12e14SNeil Armstrong phy-handle = <&internal_ephy>; 386e9a12e14SNeil Armstrong phy-mode = "rmii"; 387e9a12e14SNeil Armstrong}; 388e9a12e14SNeil Armstrong 389e9a12e14SNeil Armstrong&frddr_a { 390af92a9e0SJerome Brunet status = "okay"; 391af92a9e0SJerome Brunet}; 392af92a9e0SJerome Brunet 393af92a9e0SJerome Brunet&frddr_b { 394af92a9e0SJerome Brunet status = "okay"; 395af92a9e0SJerome Brunet}; 396af92a9e0SJerome Brunet 397af92a9e0SJerome Brunet&frddr_c { 398af92a9e0SJerome Brunet status = "okay"; 399af92a9e0SJerome Brunet}; 400af92a9e0SJerome Brunet 401af92a9e0SJerome Brunet&hdmi_tx { 40296a386b6SNeil Armstrong status = "okay"; 40396a386b6SNeil Armstrong pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>; 40496a386b6SNeil Armstrong pinctrl-names = "default"; 40596a386b6SNeil Armstrong}; 40696a386b6SNeil Armstrong 40796a386b6SNeil Armstrong&hdmi_tx_tmds_port { 40896a386b6SNeil Armstrong hdmi_tx_tmds_out: endpoint { 40996a386b6SNeil Armstrong remote-endpoint = <&hdmi_connector_in>; 41096a386b6SNeil Armstrong }; 41196a386b6SNeil Armstrong}; 41296a386b6SNeil Armstrong 41396a386b6SNeil Armstrong&i2c3 { 414e9a12e14SNeil Armstrong status = "okay"; 415e9a12e14SNeil Armstrong pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>; 416e9a12e14SNeil Armstrong pinctrl-names = "default"; 417e9a12e14SNeil Armstrong}; 418e9a12e14SNeil Armstrong 419e9a12e14SNeil Armstrong&ir { 420e9a12e14SNeil Armstrong status = "okay"; 421e9a12e14SNeil Armstrong pinctrl-0 = <&remote_input_ao_pins>; 422e9a12e14SNeil Armstrong pinctrl-names = "default"; 423e9a12e14SNeil Armstrong}; 424e9a12e14SNeil Armstrong 425e9a12e14SNeil Armstrong&pdm { 426af92a9e0SJerome Brunet pinctrl-0 = <&pdm_din0_z_pins>, <&pdm_dclk_z_pins>; 427af92a9e0SJerome Brunet pinctrl-names = "default"; 428af92a9e0SJerome Brunet status = "okay"; 429af92a9e0SJerome Brunet}; 430af92a9e0SJerome Brunet 431af92a9e0SJerome Brunet&pwm_AO_ab { 432e9a12e14SNeil Armstrong status = "okay"; 433e9a12e14SNeil Armstrong pinctrl-0 = <&pwm_ao_a_pins>; 434e9a12e14SNeil Armstrong pinctrl-names = "default"; 435e9a12e14SNeil Armstrong clocks = <&xtal>; 436e9a12e14SNeil Armstrong clock-names = "clkin0"; 437e9a12e14SNeil Armstrong}; 438e9a12e14SNeil Armstrong 439e9a12e14SNeil Armstrong&pwm_AO_cd { 4403d9e7648SNeil Armstrong pinctrl-0 = <&pwm_ao_d_e_pins>; 4413d9e7648SNeil Armstrong pinctrl-names = "default"; 4423d9e7648SNeil Armstrong clocks = <&xtal>; 4433d9e7648SNeil Armstrong clock-names = "clkin1"; 4443d9e7648SNeil Armstrong status = "okay"; 4453d9e7648SNeil Armstrong}; 4463d9e7648SNeil Armstrong 4473d9e7648SNeil Armstrong&pwm_ef { 448e9a12e14SNeil Armstrong status = "okay"; 449e9a12e14SNeil Armstrong pinctrl-0 = <&pwm_e_pins>; 450e9a12e14SNeil Armstrong pinctrl-names = "default"; 451e9a12e14SNeil Armstrong clocks = <&xtal>; 452e9a12e14SNeil Armstrong clock-names = "clkin0"; 453e9a12e14SNeil Armstrong}; 454e9a12e14SNeil Armstrong 455e9a12e14SNeil Armstrong&saradc { 456e9a12e14SNeil Armstrong status = "okay"; 457e9a12e14SNeil Armstrong vref-supply = <&vddio_ao1v8>; 458e9a12e14SNeil Armstrong}; 459e9a12e14SNeil Armstrong 460e9a12e14SNeil Armstrong/* SDIO */ 461e9a12e14SNeil Armstrong&sd_emmc_a { 462e9a12e14SNeil Armstrong status = "okay"; 463e9a12e14SNeil Armstrong pinctrl-0 = <&sdio_pins>; 464e9a12e14SNeil Armstrong pinctrl-1 = <&sdio_clk_gate_pins>; 465e9a12e14SNeil Armstrong pinctrl-names = "default", "clk-gate"; 466e9a12e14SNeil Armstrong #address-cells = <1>; 467e9a12e14SNeil Armstrong #size-cells = <0>; 468e9a12e14SNeil Armstrong 469e9a12e14SNeil Armstrong bus-width = <4>; 470e9a12e14SNeil Armstrong cap-sd-highspeed; 471e9a12e14SNeil Armstrong sd-uhs-sdr50; 472e9a12e14SNeil Armstrong max-frequency = <100000000>; 473e9a12e14SNeil Armstrong 474e9a12e14SNeil Armstrong non-removable; 475e9a12e14SNeil Armstrong disable-wp; 476e9a12e14SNeil Armstrong 477e9a12e14SNeil Armstrong /* WiFi firmware requires power to be kept while in suspend */ 4782e09574dSNeil Armstrong keep-power-in-suspend; 4792e09574dSNeil Armstrong 4802e09574dSNeil Armstrong mmc-pwrseq = <&sdio_pwrseq>; 481e9a12e14SNeil Armstrong 482e9a12e14SNeil Armstrong vmmc-supply = <&vddao_3v3>; 483e9a12e14SNeil Armstrong vqmmc-supply = <&vddio_ao1v8>; 484e9a12e14SNeil Armstrong 485e9a12e14SNeil Armstrong brcmf: wifi@1 { 486e9a12e14SNeil Armstrong reg = <1>; 487e9a12e14SNeil Armstrong compatible = "brcm,bcm4329-fmac"; 488e9a12e14SNeil Armstrong }; 489e9a12e14SNeil Armstrong}; 490e9a12e14SNeil Armstrong 491e9a12e14SNeil Armstrong/* SD card */ 492e9a12e14SNeil Armstrong&sd_emmc_b { 493e9a12e14SNeil Armstrong status = "okay"; 494e9a12e14SNeil Armstrong pinctrl-0 = <&sdcard_c_pins>; 495e9a12e14SNeil Armstrong pinctrl-1 = <&sdcard_clk_gate_c_pins>; 496e9a12e14SNeil Armstrong pinctrl-names = "default", "clk-gate"; 497e9a12e14SNeil Armstrong 498e9a12e14SNeil Armstrong bus-width = <4>; 499e9a12e14SNeil Armstrong cap-sd-highspeed; 500e9a12e14SNeil Armstrong max-frequency = <50000000>; 501e9a12e14SNeil Armstrong disable-wp; 502e9a12e14SNeil Armstrong 503e9a12e14SNeil Armstrong cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; 504e9a12e14SNeil Armstrong vmmc-supply = <&vddao_3v3>; 505e9a12e14SNeil Armstrong vqmmc-supply = <&vddao_3v3>; 506e9a12e14SNeil Armstrong}; 507e9a12e14SNeil Armstrong 508e9a12e14SNeil Armstrong/* eMMC */ 509e9a12e14SNeil Armstrong&sd_emmc_c { 510e9a12e14SNeil Armstrong status = "okay"; 511e9a12e14SNeil Armstrong pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>; 5124d2cb376SNeil Armstrong pinctrl-1 = <&emmc_clk_gate_pins>; 513e9a12e14SNeil Armstrong pinctrl-names = "default", "clk-gate"; 514e9a12e14SNeil Armstrong 515e9a12e14SNeil Armstrong bus-width = <8>; 516e9a12e14SNeil Armstrong cap-mmc-highspeed; 517e9a12e14SNeil Armstrong mmc-ddr-1_8v; 518e9a12e14SNeil Armstrong mmc-hs200-1_8v; 519e9a12e14SNeil Armstrong max-frequency = <200000000>; 520e9a12e14SNeil Armstrong non-removable; 521e9a12e14SNeil Armstrong disable-wp; 522e9a12e14SNeil Armstrong 523e9a12e14SNeil Armstrong mmc-pwrseq = <&emmc_pwrseq>; 524e9a12e14SNeil Armstrong vmmc-supply = <&vddao_3v3>; 525e9a12e14SNeil Armstrong vqmmc-supply = <&emmc_1v8>; 526e9a12e14SNeil Armstrong}; 527e9a12e14SNeil Armstrong 528e9a12e14SNeil Armstrong&tdmif_a { 529af92a9e0SJerome Brunet pinctrl-0 = <&tdm_a_dout0_pins>, <&tdm_a_fs_pins>, <&tdm_a_sclk_pins>; 530af92a9e0SJerome Brunet pinctrl-names = "default"; 531af92a9e0SJerome Brunet status = "okay"; 532af92a9e0SJerome Brunet 533af92a9e0SJerome Brunet assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD0>, 534af92a9e0SJerome Brunet <&clkc_audio AUD_CLKID_TDM_LRCLK_PAD0>; 535af92a9e0SJerome Brunet assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_A_SCLK>, 536af92a9e0SJerome Brunet <&clkc_audio AUD_CLKID_MST_A_LRCLK>; 537af92a9e0SJerome Brunet assigned-clock-rates = <0>, <0>; 538af92a9e0SJerome Brunet}; 539af92a9e0SJerome Brunet 540af92a9e0SJerome Brunet&tdmif_b { 541af92a9e0SJerome Brunet status = "okay"; 542af92a9e0SJerome Brunet}; 543af92a9e0SJerome Brunet 544af92a9e0SJerome Brunet&tdmin_a { 545af92a9e0SJerome Brunet status = "okay"; 546af92a9e0SJerome Brunet}; 547af92a9e0SJerome Brunet 548af92a9e0SJerome Brunet&tdmin_b { 549af92a9e0SJerome Brunet status = "okay"; 550af92a9e0SJerome Brunet}; 551af92a9e0SJerome Brunet 552af92a9e0SJerome Brunet&tdmout_a { 553af92a9e0SJerome Brunet status = "okay"; 554af92a9e0SJerome Brunet}; 555af92a9e0SJerome Brunet 556af92a9e0SJerome Brunet&tdmout_b { 557af92a9e0SJerome Brunet status = "okay"; 558af92a9e0SJerome Brunet}; 559af92a9e0SJerome Brunet 560af92a9e0SJerome Brunet&toddr_a { 561af92a9e0SJerome Brunet status = "okay"; 562af92a9e0SJerome Brunet}; 563af92a9e0SJerome Brunet 564af92a9e0SJerome Brunet&toddr_b { 565af92a9e0SJerome Brunet status = "okay"; 566af92a9e0SJerome Brunet}; 567af92a9e0SJerome Brunet 568af92a9e0SJerome Brunet&toddr_c { 569af92a9e0SJerome Brunet status = "okay"; 570af92a9e0SJerome Brunet}; 571af92a9e0SJerome Brunet 572af92a9e0SJerome Brunet&tohdmitx { 573af92a9e0SJerome Brunet status = "okay"; 574af92a9e0SJerome Brunet}; 575af92a9e0SJerome Brunet 576af92a9e0SJerome Brunet&uart_A { 577e9a12e14SNeil Armstrong status = "okay"; 578e9a12e14SNeil Armstrong pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; 579e9a12e14SNeil Armstrong pinctrl-names = "default"; 580e9a12e14SNeil Armstrong uart-has-rtscts; 581e9a12e14SNeil Armstrong 582e9a12e14SNeil Armstrong bluetooth { 583e9a12e14SNeil Armstrong compatible = "brcm,bcm43438-bt"; 584e9a12e14SNeil Armstrong interrupt-parent = <&gpio_intc>; 58530388cc0SGuillaume La Roque interrupts = <IRQID_GPIOX_18 IRQ_TYPE_LEVEL_HIGH>; 586*6387e0aaSHuqiang Qin interrupt-names = "host-wakeup"; 5875bea1336SGuillaume La Roque shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; 588e9a12e14SNeil Armstrong max-speed = <2000000>; 589e9a12e14SNeil Armstrong clocks = <&wifi32k>; 590e9a12e14SNeil Armstrong clock-names = "lpo"; 591e9a12e14SNeil Armstrong vbat-supply = <&vddao_3v3>; 592e9a12e14SNeil Armstrong vddio-supply = <&vddio_ao1v8>; 593e9a12e14SNeil Armstrong }; 594e9a12e14SNeil Armstrong}; 595e9a12e14SNeil Armstrong 596e9a12e14SNeil Armstrong/* Exposed via the on-board USB to Serial FT232RL IC */ 597e9a12e14SNeil Armstrong&uart_AO { 598e9a12e14SNeil Armstrong status = "okay"; 599e9a12e14SNeil Armstrong pinctrl-0 = <&uart_ao_a_pins>; 600e9a12e14SNeil Armstrong pinctrl-names = "default"; 601e9a12e14SNeil Armstrong}; 602e9a12e14SNeil Armstrong 60324fe3e98SNeil Armstrong&usb { 60424fe3e98SNeil Armstrong status = "okay"; 60524fe3e98SNeil Armstrong dr_mode = "otg"; 60624fe3e98SNeil Armstrong}; 60724fe3e98SNeil Armstrong