1d3aa4ce8SKevin Hilman// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2d3aa4ce8SKevin Hilman/* 3d3aa4ce8SKevin Hilman * Copyright (c) 2018 BayLibre SAS. All rights reserved. 4d3aa4ce8SKevin Hilman */ 5d3aa4ce8SKevin Hilman 6d3aa4ce8SKevin Hilman/dts-v1/; 7d3aa4ce8SKevin Hilman 8d3aa4ce8SKevin Hilman#include "meson-g12a.dtsi" 9c9206b42SGuillaume La Roque#include <dt-bindings/gpio/gpio.h> 10c9206b42SGuillaume La Roque#include <dt-bindings/gpio/meson-g12a-gpio.h> 11cd0727aaSNeil Armstrong#include <dt-bindings/sound/meson-g12a-tohdmitx.h> 12d3aa4ce8SKevin Hilman 13d3aa4ce8SKevin Hilman/ { 14b167b473SNeil Armstrong compatible = "amediatech,x96-max", "amlogic,g12a"; 15d3aa4ce8SKevin Hilman model = "Shenzhen Amediatech Technology Co., Ltd X96 Max"; 16d3aa4ce8SKevin Hilman 17d3aa4ce8SKevin Hilman aliases { 18d3aa4ce8SKevin Hilman serial0 = &uart_AO; 19e8e7037cSNeil Armstrong ethernet0 = ðmac; 20d3aa4ce8SKevin Hilman }; 21cd0727aaSNeil Armstrong 22cd0727aaSNeil Armstrong spdif_dit: audio-codec-1 { 23cd0727aaSNeil Armstrong #sound-dai-cells = <0>; 24cd0727aaSNeil Armstrong compatible = "linux,spdif-dit"; 25cd0727aaSNeil Armstrong status = "okay"; 26cd0727aaSNeil Armstrong sound-name-prefix = "DIT"; 27cd0727aaSNeil Armstrong }; 28cd0727aaSNeil Armstrong 29d3aa4ce8SKevin Hilman chosen { 30d3aa4ce8SKevin Hilman stdout-path = "serial0:115200n8"; 31d3aa4ce8SKevin Hilman }; 32d3aa4ce8SKevin Hilman memory@0 { 33d3aa4ce8SKevin Hilman device_type = "memory"; 34d3aa4ce8SKevin Hilman reg = <0x0 0x0 0x0 0x40000000>; 35d3aa4ce8SKevin Hilman }; 36c9206b42SGuillaume La Roque 37b0be9616SNeil Armstrong cvbs-connector { 38b0be9616SNeil Armstrong compatible = "composite-video-connector"; 39b0be9616SNeil Armstrong 40b0be9616SNeil Armstrong port { 41b0be9616SNeil Armstrong cvbs_connector_in: endpoint { 42b0be9616SNeil Armstrong remote-endpoint = <&cvbs_vdac_out>; 43b0be9616SNeil Armstrong }; 44b0be9616SNeil Armstrong }; 45b0be9616SNeil Armstrong }; 46b0be9616SNeil Armstrong 47b0be9616SNeil Armstrong hdmi-connector { 48b0be9616SNeil Armstrong compatible = "hdmi-connector"; 49b0be9616SNeil Armstrong type = "a"; 50b0be9616SNeil Armstrong 51b0be9616SNeil Armstrong port { 52b0be9616SNeil Armstrong hdmi_connector_in: endpoint { 53b0be9616SNeil Armstrong remote-endpoint = <&hdmi_tx_tmds_out>; 54b0be9616SNeil Armstrong }; 55b0be9616SNeil Armstrong }; 56b0be9616SNeil Armstrong }; 57b0be9616SNeil Armstrong 5845380009SGuillaume La Roque emmc_pwrseq: emmc-pwrseq { 5945380009SGuillaume La Roque compatible = "mmc-pwrseq-emmc"; 6045380009SGuillaume La Roque reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>; 6145380009SGuillaume La Roque }; 6245380009SGuillaume La Roque 63b497ad38SNeil Armstrong sdio_pwrseq: sdio-pwrseq { 64b497ad38SNeil Armstrong compatible = "mmc-pwrseq-simple"; 65b497ad38SNeil Armstrong reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; 66b497ad38SNeil Armstrong clocks = <&wifi32k>; 67b497ad38SNeil Armstrong clock-names = "ext_clock"; 68b497ad38SNeil Armstrong }; 69b497ad38SNeil Armstrong 70c9206b42SGuillaume La Roque flash_1v8: regulator-flash_1v8 { 71c9206b42SGuillaume La Roque compatible = "regulator-fixed"; 72c9206b42SGuillaume La Roque regulator-name = "FLASH_1V8"; 73c9206b42SGuillaume La Roque regulator-min-microvolt = <1800000>; 74c9206b42SGuillaume La Roque regulator-max-microvolt = <1800000>; 75c9206b42SGuillaume La Roque vin-supply = <&vcc_3v3>; 76c9206b42SGuillaume La Roque regulator-always-on; 77c9206b42SGuillaume La Roque }; 78c9206b42SGuillaume La Roque 79c9206b42SGuillaume La Roque dc_in: regulator-dc_in { 80c9206b42SGuillaume La Roque compatible = "regulator-fixed"; 81c9206b42SGuillaume La Roque regulator-name = "DC_IN"; 82c9206b42SGuillaume La Roque regulator-min-microvolt = <5000000>; 83c9206b42SGuillaume La Roque regulator-max-microvolt = <5000000>; 84c9206b42SGuillaume La Roque regulator-always-on; 85c9206b42SGuillaume La Roque }; 86c9206b42SGuillaume La Roque 87c9206b42SGuillaume La Roque vcc_1v8: regulator-vcc_1v8 { 88c9206b42SGuillaume La Roque compatible = "regulator-fixed"; 89c9206b42SGuillaume La Roque regulator-name = "VCC_1V8"; 90c9206b42SGuillaume La Roque regulator-min-microvolt = <1800000>; 91c9206b42SGuillaume La Roque regulator-max-microvolt = <1800000>; 92c9206b42SGuillaume La Roque vin-supply = <&vcc_3v3>; 93c9206b42SGuillaume La Roque regulator-always-on; 94c9206b42SGuillaume La Roque }; 95c9206b42SGuillaume La Roque 96c9206b42SGuillaume La Roque vcc_3v3: regulator-vcc_3v3 { 97c9206b42SGuillaume La Roque compatible = "regulator-fixed"; 98c9206b42SGuillaume La Roque regulator-name = "VCC_3V3"; 99c9206b42SGuillaume La Roque regulator-min-microvolt = <3300000>; 100c9206b42SGuillaume La Roque regulator-max-microvolt = <3300000>; 101c9206b42SGuillaume La Roque vin-supply = <&vddao_3v3>; 102c9206b42SGuillaume La Roque regulator-always-on; 103c9206b42SGuillaume La Roque /* FIXME: actually controlled by VDDCPU_B_EN */ 104c9206b42SGuillaume La Roque }; 105c9206b42SGuillaume La Roque 106c9206b42SGuillaume La Roque vcc_5v: regulator-vcc_5v { 107c9206b42SGuillaume La Roque compatible = "regulator-fixed"; 108c9206b42SGuillaume La Roque regulator-name = "VCC_5V"; 109c9206b42SGuillaume La Roque regulator-min-microvolt = <5000000>; 110c9206b42SGuillaume La Roque regulator-max-microvolt = <5000000>; 111c9206b42SGuillaume La Roque vin-supply = <&dc_in>; 112c9206b42SGuillaume La Roque 113c9206b42SGuillaume La Roque gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>; 114c9206b42SGuillaume La Roque enable-active-low; 115c9206b42SGuillaume La Roque }; 116c9206b42SGuillaume La Roque 117c9206b42SGuillaume La Roque vddao_1v8: regulator-vddao_1v8 { 118c9206b42SGuillaume La Roque compatible = "regulator-fixed"; 119c9206b42SGuillaume La Roque regulator-name = "VDDAO_1V8"; 120c9206b42SGuillaume La Roque regulator-min-microvolt = <1800000>; 121c9206b42SGuillaume La Roque regulator-max-microvolt = <1800000>; 122c9206b42SGuillaume La Roque vin-supply = <&vddao_3v3>; 123c9206b42SGuillaume La Roque regulator-always-on; 124c9206b42SGuillaume La Roque }; 125c9206b42SGuillaume La Roque 126c9206b42SGuillaume La Roque vddao_3v3: regulator-vddao_3v3 { 127c9206b42SGuillaume La Roque compatible = "regulator-fixed"; 128c9206b42SGuillaume La Roque regulator-name = "VDDAO_3V3"; 129c9206b42SGuillaume La Roque regulator-min-microvolt = <3300000>; 130c9206b42SGuillaume La Roque regulator-max-microvolt = <3300000>; 131c9206b42SGuillaume La Roque vin-supply = <&dc_in>; 132c9206b42SGuillaume La Roque regulator-always-on; 133c9206b42SGuillaume La Roque }; 134b497ad38SNeil Armstrong 135e9bc0765SNeil Armstrong vddcpu: regulator-vddcpu { 136e9bc0765SNeil Armstrong compatible = "pwm-regulator"; 137e9bc0765SNeil Armstrong 138e9bc0765SNeil Armstrong regulator-name = "VDDCPU"; 139e9bc0765SNeil Armstrong regulator-min-microvolt = <721000>; 140e9bc0765SNeil Armstrong regulator-max-microvolt = <1022000>; 141e9bc0765SNeil Armstrong 142*08567511SAnand Moon pwm-supply = <&dc_in>; 143e9bc0765SNeil Armstrong 144e9bc0765SNeil Armstrong pwms = <&pwm_AO_cd 1 1250 0>; 145e9bc0765SNeil Armstrong pwm-dutycycle-range = <100 0>; 146e9bc0765SNeil Armstrong 147e9bc0765SNeil Armstrong regulator-boot-on; 148e9bc0765SNeil Armstrong regulator-always-on; 149e9bc0765SNeil Armstrong }; 150e9bc0765SNeil Armstrong 151cd0727aaSNeil Armstrong sound { 152cd0727aaSNeil Armstrong compatible = "amlogic,axg-sound-card"; 153933b80edSChristian Hewitt model = "X96-MAX"; 154cd0727aaSNeil Armstrong audio-aux-devs = <&tdmout_b>; 155cd0727aaSNeil Armstrong audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1", 156cd0727aaSNeil Armstrong "TDMOUT_B IN 1", "FRDDR_B OUT 1", 157cd0727aaSNeil Armstrong "TDMOUT_B IN 2", "FRDDR_C OUT 1", 158cd0727aaSNeil Armstrong "TDM_B Playback", "TDMOUT_B OUT", 159cd0727aaSNeil Armstrong "SPDIFOUT IN 0", "FRDDR_A OUT 3", 160cd0727aaSNeil Armstrong "SPDIFOUT IN 1", "FRDDR_B OUT 3", 161cd0727aaSNeil Armstrong "SPDIFOUT IN 2", "FRDDR_C OUT 3"; 162cd0727aaSNeil Armstrong 163cd0727aaSNeil Armstrong assigned-clocks = <&clkc CLKID_MPLL2>, 164cd0727aaSNeil Armstrong <&clkc CLKID_MPLL0>, 165cd0727aaSNeil Armstrong <&clkc CLKID_MPLL1>; 166cd0727aaSNeil Armstrong assigned-clock-parents = <0>, <0>, <0>; 167cd0727aaSNeil Armstrong assigned-clock-rates = <294912000>, 168cd0727aaSNeil Armstrong <270950400>, 169cd0727aaSNeil Armstrong <393216000>; 170cd0727aaSNeil Armstrong status = "okay"; 171cd0727aaSNeil Armstrong 172cd0727aaSNeil Armstrong dai-link-0 { 173cd0727aaSNeil Armstrong sound-dai = <&frddr_a>; 174cd0727aaSNeil Armstrong }; 175cd0727aaSNeil Armstrong 176cd0727aaSNeil Armstrong dai-link-1 { 177cd0727aaSNeil Armstrong sound-dai = <&frddr_b>; 178cd0727aaSNeil Armstrong }; 179cd0727aaSNeil Armstrong 180cd0727aaSNeil Armstrong dai-link-2 { 181cd0727aaSNeil Armstrong sound-dai = <&frddr_c>; 182cd0727aaSNeil Armstrong }; 183cd0727aaSNeil Armstrong 184cd0727aaSNeil Armstrong /* 8ch hdmi interface */ 185cd0727aaSNeil Armstrong dai-link-3 { 186cd0727aaSNeil Armstrong sound-dai = <&tdmif_b>; 187cd0727aaSNeil Armstrong dai-format = "i2s"; 188cd0727aaSNeil Armstrong dai-tdm-slot-tx-mask-0 = <1 1>; 189cd0727aaSNeil Armstrong dai-tdm-slot-tx-mask-1 = <1 1>; 190cd0727aaSNeil Armstrong dai-tdm-slot-tx-mask-2 = <1 1>; 191cd0727aaSNeil Armstrong dai-tdm-slot-tx-mask-3 = <1 1>; 192cd0727aaSNeil Armstrong mclk-fs = <256>; 193cd0727aaSNeil Armstrong 194cd0727aaSNeil Armstrong codec { 195cd0727aaSNeil Armstrong sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>; 196cd0727aaSNeil Armstrong }; 197cd0727aaSNeil Armstrong }; 198cd0727aaSNeil Armstrong 199cd0727aaSNeil Armstrong /* spdif hdmi or toslink interface */ 200cd0727aaSNeil Armstrong dai-link-4 { 201cd0727aaSNeil Armstrong sound-dai = <&spdifout>; 202cd0727aaSNeil Armstrong 203cd0727aaSNeil Armstrong codec-0 { 204cd0727aaSNeil Armstrong sound-dai = <&spdif_dit>; 205cd0727aaSNeil Armstrong }; 206cd0727aaSNeil Armstrong 207cd0727aaSNeil Armstrong codec-1 { 208cd0727aaSNeil Armstrong sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_A>; 209cd0727aaSNeil Armstrong }; 210cd0727aaSNeil Armstrong }; 211cd0727aaSNeil Armstrong 212cd0727aaSNeil Armstrong /* spdif hdmi interface */ 213cd0727aaSNeil Armstrong dai-link-5 { 214cd0727aaSNeil Armstrong sound-dai = <&spdifout_b>; 215cd0727aaSNeil Armstrong 216cd0727aaSNeil Armstrong codec { 217cd0727aaSNeil Armstrong sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_B>; 218cd0727aaSNeil Armstrong }; 219cd0727aaSNeil Armstrong }; 220cd0727aaSNeil Armstrong 221cd0727aaSNeil Armstrong /* hdmi glue */ 222cd0727aaSNeil Armstrong dai-link-6 { 223cd0727aaSNeil Armstrong sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; 224cd0727aaSNeil Armstrong 225cd0727aaSNeil Armstrong codec { 226cd0727aaSNeil Armstrong sound-dai = <&hdmi_tx>; 227cd0727aaSNeil Armstrong }; 228cd0727aaSNeil Armstrong }; 229cd0727aaSNeil Armstrong }; 230cd0727aaSNeil Armstrong 231b497ad38SNeil Armstrong wifi32k: wifi32k { 232b497ad38SNeil Armstrong compatible = "pwm-clock"; 233b497ad38SNeil Armstrong #clock-cells = <0>; 234b497ad38SNeil Armstrong clock-frequency = <32768>; 235b497ad38SNeil Armstrong pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ 236b497ad38SNeil Armstrong }; 237d3aa4ce8SKevin Hilman}; 238d3aa4ce8SKevin Hilman 239cd0727aaSNeil Armstrong&arb { 240cd0727aaSNeil Armstrong status = "okay"; 241cd0727aaSNeil Armstrong}; 242cd0727aaSNeil Armstrong 243b0be9616SNeil Armstrong&cec_AO { 244b0be9616SNeil Armstrong pinctrl-0 = <&cec_ao_a_h_pins>; 245b0be9616SNeil Armstrong pinctrl-names = "default"; 246b0be9616SNeil Armstrong status = "disabled"; 247b0be9616SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 248b0be9616SNeil Armstrong}; 249b0be9616SNeil Armstrong 250b0be9616SNeil Armstrong&cecb_AO { 251b0be9616SNeil Armstrong pinctrl-0 = <&cec_ao_b_h_pins>; 252b0be9616SNeil Armstrong pinctrl-names = "default"; 253b0be9616SNeil Armstrong status = "okay"; 254b0be9616SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 255b0be9616SNeil Armstrong}; 256b0be9616SNeil Armstrong 257cd0727aaSNeil Armstrong&clkc_audio { 258cd0727aaSNeil Armstrong status = "okay"; 259cd0727aaSNeil Armstrong}; 260cd0727aaSNeil Armstrong 261e9bc0765SNeil Armstrong&cpu0 { 262e9bc0765SNeil Armstrong cpu-supply = <&vddcpu>; 263e9bc0765SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 264e9bc0765SNeil Armstrong clocks = <&clkc CLKID_CPU_CLK>; 265e9bc0765SNeil Armstrong clock-latency = <50000>; 266e9bc0765SNeil Armstrong}; 267e9bc0765SNeil Armstrong 268e9bc0765SNeil Armstrong&cpu1 { 269e9bc0765SNeil Armstrong cpu-supply = <&vddcpu>; 270e9bc0765SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 271e9bc0765SNeil Armstrong clocks = <&clkc CLKID_CPU_CLK>; 272e9bc0765SNeil Armstrong clock-latency = <50000>; 273e9bc0765SNeil Armstrong}; 274e9bc0765SNeil Armstrong 275e9bc0765SNeil Armstrong&cpu2 { 276e9bc0765SNeil Armstrong cpu-supply = <&vddcpu>; 277e9bc0765SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 278e9bc0765SNeil Armstrong clocks = <&clkc CLKID_CPU_CLK>; 279e9bc0765SNeil Armstrong clock-latency = <50000>; 280e9bc0765SNeil Armstrong}; 281e9bc0765SNeil Armstrong 282e9bc0765SNeil Armstrong&cpu3 { 283e9bc0765SNeil Armstrong cpu-supply = <&vddcpu>; 284e9bc0765SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 285e9bc0765SNeil Armstrong clocks = <&clkc CLKID_CPU_CLK>; 286e9bc0765SNeil Armstrong clock-latency = <50000>; 287e9bc0765SNeil Armstrong}; 288e9bc0765SNeil Armstrong 289b0be9616SNeil Armstrong&cvbs_vdac_port { 290b0be9616SNeil Armstrong cvbs_vdac_out: endpoint { 291b0be9616SNeil Armstrong remote-endpoint = <&cvbs_connector_in>; 292b0be9616SNeil Armstrong }; 293b0be9616SNeil Armstrong}; 294b0be9616SNeil Armstrong 295cd0727aaSNeil Armstrong&frddr_a { 296cd0727aaSNeil Armstrong status = "okay"; 297cd0727aaSNeil Armstrong}; 298cd0727aaSNeil Armstrong 299cd0727aaSNeil Armstrong&frddr_b { 300cd0727aaSNeil Armstrong status = "okay"; 301cd0727aaSNeil Armstrong}; 302cd0727aaSNeil Armstrong 303cd0727aaSNeil Armstrong&frddr_c { 304cd0727aaSNeil Armstrong status = "okay"; 305cd0727aaSNeil Armstrong}; 306cd0727aaSNeil Armstrong 307b0be9616SNeil Armstrong&hdmi_tx { 308b0be9616SNeil Armstrong status = "okay"; 309b0be9616SNeil Armstrong pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>; 310b0be9616SNeil Armstrong pinctrl-names = "default"; 311b0be9616SNeil Armstrong hdmi-supply = <&vcc_5v>; 312b0be9616SNeil Armstrong}; 313b0be9616SNeil Armstrong 314b0be9616SNeil Armstrong&hdmi_tx_tmds_port { 315b0be9616SNeil Armstrong hdmi_tx_tmds_out: endpoint { 316b0be9616SNeil Armstrong remote-endpoint = <&hdmi_connector_in>; 317b0be9616SNeil Armstrong }; 318b0be9616SNeil Armstrong}; 319b0be9616SNeil Armstrong 320fff6e9d3SNeil Armstrong&ir { 321fff6e9d3SNeil Armstrong status = "okay"; 322fff6e9d3SNeil Armstrong pinctrl-0 = <&remote_input_ao_pins>; 323fff6e9d3SNeil Armstrong pinctrl-names = "default"; 3243e14618bSChristian Hewitt linux,rc-map-name = "rc-x96max"; 325fff6e9d3SNeil Armstrong}; 326fff6e9d3SNeil Armstrong 327e9bc0765SNeil Armstrong&pwm_AO_cd { 328e9bc0765SNeil Armstrong pinctrl-0 = <&pwm_ao_d_e_pins>; 329e9bc0765SNeil Armstrong pinctrl-names = "default"; 330e9bc0765SNeil Armstrong clocks = <&xtal>; 331e9bc0765SNeil Armstrong clock-names = "clkin1"; 332e9bc0765SNeil Armstrong status = "okay"; 333e9bc0765SNeil Armstrong}; 334e9bc0765SNeil Armstrong 335e8e7037cSNeil Armstrong&ext_mdio { 336e8e7037cSNeil Armstrong external_phy: ethernet-phy@0 { 337e8e7037cSNeil Armstrong /* Realtek RTL8211F (0x001cc916) */ 338e8e7037cSNeil Armstrong reg = <0>; 339e8e7037cSNeil Armstrong max-speed = <1000>; 340e8e7037cSNeil Armstrong eee-broken-1000t; 341ed5e8f68SMartin Blumenstingl 342ed5e8f68SMartin Blumenstingl reset-assert-us = <10000>; 3433d07c3b3SStefan Agner reset-deassert-us = <80000>; 344ed5e8f68SMartin Blumenstingl reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; 34550b617a6SMartin Blumenstingl 34650b617a6SMartin Blumenstingl interrupt-parent = <&gpio_intc>; 34750b617a6SMartin Blumenstingl /* MAC_INTR on GPIOZ_14 */ 34850b617a6SMartin Blumenstingl interrupts = <26 IRQ_TYPE_LEVEL_LOW>; 349e8e7037cSNeil Armstrong }; 350e8e7037cSNeil Armstrong}; 351e8e7037cSNeil Armstrong 352e8e7037cSNeil Armstrongðmac { 353e8e7037cSNeil Armstrong pinctrl-0 = <ð_pins>, <ð_rgmii_pins>; 354e8e7037cSNeil Armstrong pinctrl-names = "default"; 355e8e7037cSNeil Armstrong status = "okay"; 356e8e7037cSNeil Armstrong phy-mode = "rgmii"; 357e8e7037cSNeil Armstrong phy-handle = <&external_phy>; 358e8e7037cSNeil Armstrong amlogic,tx-delay-ns = <2>; 359e8e7037cSNeil Armstrong}; 360e8e7037cSNeil Armstrong 361b497ad38SNeil Armstrong&pwm_ef { 362b497ad38SNeil Armstrong status = "okay"; 363b497ad38SNeil Armstrong pinctrl-0 = <&pwm_e_pins>; 364b497ad38SNeil Armstrong pinctrl-names = "default"; 365b497ad38SNeil Armstrong clocks = <&xtal>; 366b497ad38SNeil Armstrong clock-names = "clkin0"; 367b497ad38SNeil Armstrong}; 368b497ad38SNeil Armstrong 369c5c9c7cfSNeil Armstrong&uart_A { 370c5c9c7cfSNeil Armstrong status = "okay"; 371c5c9c7cfSNeil Armstrong pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; 372c5c9c7cfSNeil Armstrong pinctrl-names = "default"; 373c5c9c7cfSNeil Armstrong uart-has-rtscts; 374c5c9c7cfSNeil Armstrong 375c5c9c7cfSNeil Armstrong bluetooth { 376c5c9c7cfSNeil Armstrong compatible = "brcm,bcm43438-bt"; 377c5c9c7cfSNeil Armstrong shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; 378e4998f48SNeil Armstrong max-speed = <2000000>; 379524595ecSNeil Armstrong clocks = <&wifi32k>; 380524595ecSNeil Armstrong clock-names = "lpo"; 381c5c9c7cfSNeil Armstrong }; 382c5c9c7cfSNeil Armstrong}; 383c5c9c7cfSNeil Armstrong 384d3aa4ce8SKevin Hilman&uart_AO { 385d3aa4ce8SKevin Hilman status = "okay"; 3860b7aed33SNeil Armstrong pinctrl-0 = <&uart_ao_a_pins>; 3870b7aed33SNeil Armstrong pinctrl-names = "default"; 388d3aa4ce8SKevin Hilman}; 38945b72126SNeil Armstrong 39045b72126SNeil Armstrong&usb { 39145b72126SNeil Armstrong status = "okay"; 39245b72126SNeil Armstrong dr_mode = "host"; 39345b72126SNeil Armstrong}; 39445380009SGuillaume La Roque 395b497ad38SNeil Armstrong/* SDIO */ 396b497ad38SNeil Armstrong&sd_emmc_a { 397b497ad38SNeil Armstrong status = "okay"; 398b497ad38SNeil Armstrong pinctrl-0 = <&sdio_pins>; 399b497ad38SNeil Armstrong pinctrl-1 = <&sdio_clk_gate_pins>; 400b497ad38SNeil Armstrong pinctrl-names = "default", "clk-gate"; 401b497ad38SNeil Armstrong #address-cells = <1>; 402b497ad38SNeil Armstrong #size-cells = <0>; 403b497ad38SNeil Armstrong 404b497ad38SNeil Armstrong bus-width = <4>; 405b497ad38SNeil Armstrong cap-sd-highspeed; 406b497ad38SNeil Armstrong sd-uhs-sdr50; 407b497ad38SNeil Armstrong max-frequency = <100000000>; 408b497ad38SNeil Armstrong 409b497ad38SNeil Armstrong non-removable; 410b497ad38SNeil Armstrong disable-wp; 411b497ad38SNeil Armstrong 4129a9ffc69SNeil Armstrong /* WiFi firmware requires power to be kept while in suspend */ 4139a9ffc69SNeil Armstrong keep-power-in-suspend; 4149a9ffc69SNeil Armstrong 415b497ad38SNeil Armstrong mmc-pwrseq = <&sdio_pwrseq>; 416b497ad38SNeil Armstrong 417b497ad38SNeil Armstrong vmmc-supply = <&vddao_3v3>; 418b497ad38SNeil Armstrong vqmmc-supply = <&vddao_1v8>; 419b497ad38SNeil Armstrong 420b497ad38SNeil Armstrong brcmf: wifi@1 { 421b497ad38SNeil Armstrong reg = <1>; 422b497ad38SNeil Armstrong compatible = "brcm,bcm4329-fmac"; 423b497ad38SNeil Armstrong }; 424b497ad38SNeil Armstrong}; 425b497ad38SNeil Armstrong 42645380009SGuillaume La Roque/* SD card */ 42745380009SGuillaume La Roque&sd_emmc_b { 42845380009SGuillaume La Roque status = "okay"; 42945380009SGuillaume La Roque pinctrl-0 = <&sdcard_c_pins>; 43045380009SGuillaume La Roque pinctrl-1 = <&sdcard_clk_gate_c_pins>; 43145380009SGuillaume La Roque pinctrl-names = "default", "clk-gate"; 43245380009SGuillaume La Roque 43345380009SGuillaume La Roque bus-width = <4>; 43445380009SGuillaume La Roque cap-sd-highspeed; 43545380009SGuillaume La Roque max-frequency = <100000000>; 43645380009SGuillaume La Roque disable-wp; 43745380009SGuillaume La Roque 43845380009SGuillaume La Roque cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; 43945380009SGuillaume La Roque vmmc-supply = <&vddao_3v3>; 44045380009SGuillaume La Roque vqmmc-supply = <&vddao_3v3>; 44145380009SGuillaume La Roque}; 44245380009SGuillaume La Roque 44345380009SGuillaume La Roque/* eMMC */ 44445380009SGuillaume La Roque&sd_emmc_c { 44545380009SGuillaume La Roque status = "okay"; 4464d2cb376SNeil Armstrong pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>; 44745380009SGuillaume La Roque pinctrl-1 = <&emmc_clk_gate_pins>; 44845380009SGuillaume La Roque pinctrl-names = "default", "clk-gate"; 44945380009SGuillaume La Roque 45045380009SGuillaume La Roque bus-width = <8>; 45145380009SGuillaume La Roque cap-mmc-highspeed; 45245380009SGuillaume La Roque max-frequency = <100000000>; 45345380009SGuillaume La Roque non-removable; 45445380009SGuillaume La Roque disable-wp; 45545380009SGuillaume La Roque 45645380009SGuillaume La Roque mmc-pwrseq = <&emmc_pwrseq>; 45745380009SGuillaume La Roque vmmc-supply = <&vcc_3v3>; 45845380009SGuillaume La Roque vqmmc-supply = <&flash_1v8>; 45945380009SGuillaume La Roque}; 460cd0727aaSNeil Armstrong 461cd0727aaSNeil Armstrong&spdifout { 462cd0727aaSNeil Armstrong pinctrl-0 = <&spdif_out_h_pins>; 463cd0727aaSNeil Armstrong pinctrl-names = "default"; 464cd0727aaSNeil Armstrong status = "okay"; 465cd0727aaSNeil Armstrong}; 466cd0727aaSNeil Armstrong 467cd0727aaSNeil Armstrong&spdifout_b { 468cd0727aaSNeil Armstrong status = "okay"; 469cd0727aaSNeil Armstrong}; 470cd0727aaSNeil Armstrong 471cd0727aaSNeil Armstrong&tdmif_b { 472cd0727aaSNeil Armstrong status = "okay"; 473cd0727aaSNeil Armstrong}; 474cd0727aaSNeil Armstrong 475cd0727aaSNeil Armstrong&tdmout_b { 476cd0727aaSNeil Armstrong status = "okay"; 477cd0727aaSNeil Armstrong}; 478cd0727aaSNeil Armstrong 479cd0727aaSNeil Armstrong&tohdmitx { 480cd0727aaSNeil Armstrong status = "okay"; 481cd0727aaSNeil Armstrong}; 482