1114abfe1SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2c246e9d6SNeil Armstrong/* 3c246e9d6SNeil Armstrong * Copyright (c) 2016 Andreas Färber 4c246e9d6SNeil Armstrong * Copyright (c) 2016 BayLibre, Inc. 5c246e9d6SNeil Armstrong * Author: Neil Armstrong <narmstrong@kernel.org> 6c246e9d6SNeil Armstrong */ 7c246e9d6SNeil Armstrong 8c246e9d6SNeil Armstrong/dts-v1/; 9c246e9d6SNeil Armstrong 10c246e9d6SNeil Armstrong#include "meson-gxbb.dtsi" 11c246e9d6SNeil Armstrong#include <dt-bindings/gpio/gpio.h> 12c246e9d6SNeil Armstrong#include <dt-bindings/input/input.h> 13ec78dc89SChristian Hewitt#include <dt-bindings/sound/meson-aiu.h> 14c246e9d6SNeil Armstrong 15c246e9d6SNeil Armstrong/ { 16c246e9d6SNeil Armstrong compatible = "nexbox,a95x", "amlogic,meson-gxbb"; 17c246e9d6SNeil Armstrong model = "NEXBOX A95X"; 18c246e9d6SNeil Armstrong 19c246e9d6SNeil Armstrong aliases { 20c246e9d6SNeil Armstrong serial0 = &uart_AO; 21059a58fcSJorge Ramirez-Ortiz ethernet0 = ðmac; 22c246e9d6SNeil Armstrong }; 23c246e9d6SNeil Armstrong 24c246e9d6SNeil Armstrong chosen { 25c246e9d6SNeil Armstrong stdout-path = "serial0:115200n8"; 26c246e9d6SNeil Armstrong }; 27c246e9d6SNeil Armstrong 28c246e9d6SNeil Armstrong memory@0 { 29c246e9d6SNeil Armstrong device_type = "memory"; 30c246e9d6SNeil Armstrong reg = <0x0 0x0 0x0 0x40000000>; 31c246e9d6SNeil Armstrong }; 32c246e9d6SNeil Armstrong 33c246e9d6SNeil Armstrong leds { 34c246e9d6SNeil Armstrong compatible = "gpio-leds"; 3508dc0e5dSNeil Armstrong led-blue { 36c246e9d6SNeil Armstrong label = "a95x:system-status"; 37c246e9d6SNeil Armstrong gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_LOW>; 38c246e9d6SNeil Armstrong linux,default-trigger = "heartbeat"; 39c246e9d6SNeil Armstrong default-state = "off"; 40c246e9d6SNeil Armstrong }; 41c246e9d6SNeil Armstrong }; 42c246e9d6SNeil Armstrong 43c246e9d6SNeil Armstrong gpio-keys-polled { 44c246e9d6SNeil Armstrong compatible = "gpio-keys-polled"; 45c246e9d6SNeil Armstrong #address-cells = <1>; 46c246e9d6SNeil Armstrong #size-cells = <0>; 47c246e9d6SNeil Armstrong poll-interval = <100>; 48c246e9d6SNeil Armstrong 49c246e9d6SNeil Armstrong button@0 { 50c246e9d6SNeil Armstrong label = "reset"; 51c246e9d6SNeil Armstrong linux,code = <KEY_RESTART>; 52c246e9d6SNeil Armstrong gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_LOW>; 53c246e9d6SNeil Armstrong }; 54c246e9d6SNeil Armstrong }; 55a776e045SNeil Armstrong 56e2f4d749SPeter Korsgaard usb_pwr: regulator-usb-pwrs { 57e2f4d749SPeter Korsgaard compatible = "regulator-fixed"; 58e2f4d749SPeter Korsgaard 59e2f4d749SPeter Korsgaard regulator-name = "USB_PWR"; 60e2f4d749SPeter Korsgaard 61e2f4d749SPeter Korsgaard regulator-min-microvolt = <5000000>; 62e2f4d749SPeter Korsgaard regulator-max-microvolt = <5000000>; 63e2f4d749SPeter Korsgaard 64e2f4d749SPeter Korsgaard gpio = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>; 65e2f4d749SPeter Korsgaard enable-active-high; 66e2f4d749SPeter Korsgaard }; 67e2f4d749SPeter Korsgaard 68a776e045SNeil Armstrong vddio_card: gpio-regulator { 69a776e045SNeil Armstrong compatible = "regulator-gpio"; 70a776e045SNeil Armstrong 71a776e045SNeil Armstrong regulator-name = "VDDIO_CARD"; 72a776e045SNeil Armstrong regulator-min-microvolt = <1800000>; 73a776e045SNeil Armstrong regulator-max-microvolt = <3300000>; 74a776e045SNeil Armstrong 75a776e045SNeil Armstrong gpios = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>; 76a776e045SNeil Armstrong gpios-states = <1>; 77a776e045SNeil Armstrong 78a776e045SNeil Armstrong /* Based on P200 schematics, signal CARD_1.8V/3.3V_CTR */ 79f9717178SNeil Armstrong states = <1800000 0>, 80f9717178SNeil Armstrong <3300000 1>; 81a776e045SNeil Armstrong }; 82a776e045SNeil Armstrong 83a776e045SNeil Armstrong vddio_boot: regulator-vddio_boot { 84a776e045SNeil Armstrong compatible = "regulator-fixed"; 85a776e045SNeil Armstrong regulator-name = "VDDIO_BOOT"; 86a776e045SNeil Armstrong regulator-min-microvolt = <1800000>; 87a776e045SNeil Armstrong regulator-max-microvolt = <1800000>; 88a776e045SNeil Armstrong }; 89a776e045SNeil Armstrong 90a776e045SNeil Armstrong vddao_3v3: regulator-vddao_3v3 { 91a776e045SNeil Armstrong compatible = "regulator-fixed"; 92a776e045SNeil Armstrong regulator-name = "VDDAO_3V3"; 93a776e045SNeil Armstrong regulator-min-microvolt = <3300000>; 94a776e045SNeil Armstrong regulator-max-microvolt = <3300000>; 95a776e045SNeil Armstrong }; 96a776e045SNeil Armstrong 97a776e045SNeil Armstrong vcc_3v3: regulator-vcc_3v3 { 98a776e045SNeil Armstrong compatible = "regulator-fixed"; 99a776e045SNeil Armstrong regulator-name = "VCC_3V3"; 100a776e045SNeil Armstrong regulator-min-microvolt = <3300000>; 101a776e045SNeil Armstrong regulator-max-microvolt = <3300000>; 102a776e045SNeil Armstrong }; 103a776e045SNeil Armstrong 104a776e045SNeil Armstrong emmc_pwrseq: emmc-pwrseq { 105a776e045SNeil Armstrong compatible = "mmc-pwrseq-emmc"; 106a776e045SNeil Armstrong reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; 107a776e045SNeil Armstrong }; 108a776e045SNeil Armstrong 109a776e045SNeil Armstrong wifi32k: wifi32k { 110a776e045SNeil Armstrong compatible = "pwm-clock"; 111a776e045SNeil Armstrong #clock-cells = <0>; 112a776e045SNeil Armstrong clock-frequency = <32768>; 113a776e045SNeil Armstrong pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ 114a776e045SNeil Armstrong }; 115a776e045SNeil Armstrong 116a776e045SNeil Armstrong sdio_pwrseq: sdio-pwrseq { 117a776e045SNeil Armstrong compatible = "mmc-pwrseq-simple"; 118a776e045SNeil Armstrong reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; 119a776e045SNeil Armstrong clocks = <&wifi32k>; 120a776e045SNeil Armstrong clock-names = "ext_clock"; 121a776e045SNeil Armstrong }; 122fafdbdf7SNeil Armstrong 123fafdbdf7SNeil Armstrong cvbs-connector { 124fafdbdf7SNeil Armstrong compatible = "composite-video-connector"; 125fafdbdf7SNeil Armstrong 126fafdbdf7SNeil Armstrong port { 127fafdbdf7SNeil Armstrong cvbs_connector_in: endpoint { 128fafdbdf7SNeil Armstrong remote-endpoint = <&cvbs_vdac_out>; 129fafdbdf7SNeil Armstrong }; 130fafdbdf7SNeil Armstrong }; 131fafdbdf7SNeil Armstrong }; 1326939db7eSNeil Armstrong 1336939db7eSNeil Armstrong hdmi-connector { 1346939db7eSNeil Armstrong compatible = "hdmi-connector"; 1356939db7eSNeil Armstrong type = "a"; 1366939db7eSNeil Armstrong 1376939db7eSNeil Armstrong port { 1386939db7eSNeil Armstrong hdmi_connector_in: endpoint { 1396939db7eSNeil Armstrong remote-endpoint = <&hdmi_tx_tmds_out>; 1406939db7eSNeil Armstrong }; 1416939db7eSNeil Armstrong }; 1426939db7eSNeil Armstrong }; 143ec78dc89SChristian Hewitt 144ec78dc89SChristian Hewitt sound { 145ec78dc89SChristian Hewitt compatible = "amlogic,gx-sound-card"; 146*933b80edSChristian Hewitt model = "NEXBOX-A95X"; 147ec78dc89SChristian Hewitt assigned-clocks = <&clkc CLKID_MPLL0>, 148ec78dc89SChristian Hewitt <&clkc CLKID_MPLL1>, 149ec78dc89SChristian Hewitt <&clkc CLKID_MPLL2>; 150ec78dc89SChristian Hewitt assigned-clock-parents = <0>, <0>, <0>; 151ec78dc89SChristian Hewitt assigned-clock-rates = <294912000>, 152ec78dc89SChristian Hewitt <270950400>, 153ec78dc89SChristian Hewitt <393216000>; 154ec78dc89SChristian Hewitt status = "okay"; 155ec78dc89SChristian Hewitt 156ec78dc89SChristian Hewitt dai-link-0 { 157ec78dc89SChristian Hewitt sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>; 158ec78dc89SChristian Hewitt }; 159ec78dc89SChristian Hewitt 160ec78dc89SChristian Hewitt dai-link-1 { 161ec78dc89SChristian Hewitt sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>; 162ec78dc89SChristian Hewitt dai-format = "i2s"; 163ec78dc89SChristian Hewitt mclk-fs = <256>; 164ec78dc89SChristian Hewitt 165ec78dc89SChristian Hewitt codec-0 { 166ec78dc89SChristian Hewitt sound-dai = <&aiu AIU_HDMI CTRL_I2S>; 167ec78dc89SChristian Hewitt }; 168ec78dc89SChristian Hewitt }; 169ec78dc89SChristian Hewitt 170ec78dc89SChristian Hewitt dai-link-2 { 171ec78dc89SChristian Hewitt sound-dai = <&aiu AIU_HDMI CTRL_OUT>; 172ec78dc89SChristian Hewitt 173ec78dc89SChristian Hewitt codec-0 { 174ec78dc89SChristian Hewitt sound-dai = <&hdmi_tx>; 175ec78dc89SChristian Hewitt }; 176ec78dc89SChristian Hewitt }; 177ec78dc89SChristian Hewitt }; 178ec78dc89SChristian Hewitt}; 179ec78dc89SChristian Hewitt 180ec78dc89SChristian Hewitt&aiu { 181ec78dc89SChristian Hewitt status = "okay"; 182c246e9d6SNeil Armstrong}; 183c246e9d6SNeil Armstrong 18482f11345SAndreas Färber&cvbs_vdac_port { 18582f11345SAndreas Färber cvbs_vdac_out: endpoint { 18682f11345SAndreas Färber remote-endpoint = <&cvbs_connector_in>; 18782f11345SAndreas Färber }; 188c246e9d6SNeil Armstrong}; 189c246e9d6SNeil Armstrong 190b16c71c9SNeil Armstrong&cec_AO { 191b16c71c9SNeil Armstrong status = "okay"; 192b16c71c9SNeil Armstrong pinctrl-0 = <&ao_cec_pins>; 193b16c71c9SNeil Armstrong pinctrl-names = "default"; 194b16c71c9SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 195b16c71c9SNeil Armstrong}; 196b16c71c9SNeil Armstrong 197c246e9d6SNeil Armstrongðmac { 198c246e9d6SNeil Armstrong status = "okay"; 1993be2d9cfSNeil Armstrong pinctrl-0 = <ð_rmii_pins>; 200c246e9d6SNeil Armstrong pinctrl-names = "default"; 20167d49f30SMartin Blumenstingl 20267d49f30SMartin Blumenstingl phy-handle = <ð_phy0>; 2033be2d9cfSNeil Armstrong phy-mode = "rmii"; 20467d49f30SMartin Blumenstingl 20567d49f30SMartin Blumenstingl mdio { 20667d49f30SMartin Blumenstingl compatible = "snps,dwmac-mdio"; 20767d49f30SMartin Blumenstingl #address-cells = <1>; 20867d49f30SMartin Blumenstingl #size-cells = <0>; 20967d49f30SMartin Blumenstingl 21067d49f30SMartin Blumenstingl eth_phy0: ethernet-phy@0 { 21167d49f30SMartin Blumenstingl /* IC Plus IP101GR (0x02430c54) */ 21267d49f30SMartin Blumenstingl reg = <0>; 213f29cabf2SMartin Blumenstingl 214f29cabf2SMartin Blumenstingl reset-assert-us = <10000>; 215f29cabf2SMartin Blumenstingl reset-deassert-us = <10000>; 216f29cabf2SMartin Blumenstingl reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; 21767d49f30SMartin Blumenstingl }; 21867d49f30SMartin Blumenstingl }; 219c246e9d6SNeil Armstrong}; 220c246e9d6SNeil Armstrong 22182f11345SAndreas Färber&hdmi_tx { 22282f11345SAndreas Färber status = "okay"; 22382f11345SAndreas Färber pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; 22482f11345SAndreas Färber pinctrl-names = "default"; 22582f11345SAndreas Färber}; 22682f11345SAndreas Färber 22782f11345SAndreas Färber&hdmi_tx_tmds_port { 22882f11345SAndreas Färber hdmi_tx_tmds_out: endpoint { 22982f11345SAndreas Färber remote-endpoint = <&hdmi_connector_in>; 23082f11345SAndreas Färber }; 23182f11345SAndreas Färber}; 23282f11345SAndreas Färber 233c246e9d6SNeil Armstrong&ir { 234c246e9d6SNeil Armstrong status = "okay"; 235c246e9d6SNeil Armstrong pinctrl-0 = <&remote_input_ao_pins>; 236c246e9d6SNeil Armstrong pinctrl-names = "default"; 237c246e9d6SNeil Armstrong}; 238a776e045SNeil Armstrong 23982f11345SAndreas Färber&pwm_ef { 24082f11345SAndreas Färber status = "okay"; 24182f11345SAndreas Färber pinctrl-0 = <&pwm_e_pins>; 24282f11345SAndreas Färber pinctrl-names = "default"; 24382f11345SAndreas Färber clocks = <&clkc CLKID_FCLK_DIV4>; 24482f11345SAndreas Färber clock-names = "clkin0"; 24582f11345SAndreas Färber}; 24682f11345SAndreas Färber 247a776e045SNeil Armstrong/* Wireless SDIO Module */ 248a776e045SNeil Armstrong&sd_emmc_a { 249a776e045SNeil Armstrong status = "okay"; 250a776e045SNeil Armstrong pinctrl-0 = <&sdio_pins>; 25167e7607fSJerome Brunet pinctrl-1 = <&sdio_clk_gate_pins>; 25267e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 253a776e045SNeil Armstrong #address-cells = <1>; 254a776e045SNeil Armstrong #size-cells = <0>; 255a776e045SNeil Armstrong 256a776e045SNeil Armstrong bus-width = <4>; 257a776e045SNeil Armstrong cap-sd-highspeed; 258a776e045SNeil Armstrong max-frequency = <100000000>; 259a776e045SNeil Armstrong 260a776e045SNeil Armstrong non-removable; 261a776e045SNeil Armstrong disable-wp; 262a776e045SNeil Armstrong 26342d7815cSNeil Armstrong /* WiFi firmware requires power to be kept while in suspend */ 26442d7815cSNeil Armstrong keep-power-in-suspend; 26542d7815cSNeil Armstrong 266a776e045SNeil Armstrong mmc-pwrseq = <&sdio_pwrseq>; 267a776e045SNeil Armstrong 268a776e045SNeil Armstrong vmmc-supply = <&vddao_3v3>; 269a776e045SNeil Armstrong vqmmc-supply = <&vddio_boot>; 270a776e045SNeil Armstrong}; 271a776e045SNeil Armstrong 272a776e045SNeil Armstrong/* SD card */ 273a776e045SNeil Armstrong&sd_emmc_b { 274a776e045SNeil Armstrong status = "okay"; 275a776e045SNeil Armstrong pinctrl-0 = <&sdcard_pins>; 27667e7607fSJerome Brunet pinctrl-1 = <&sdcard_clk_gate_pins>; 27767e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 278a776e045SNeil Armstrong 279a776e045SNeil Armstrong bus-width = <4>; 280a776e045SNeil Armstrong cap-sd-highspeed; 281adc52bf7SJerome Brunet max-frequency = <50000000>; 282a776e045SNeil Armstrong disable-wp; 283a776e045SNeil Armstrong 284f29200c8SLoys Ollivier cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; 285a776e045SNeil Armstrong 286a776e045SNeil Armstrong vmmc-supply = <&vddao_3v3>; 287a776e045SNeil Armstrong vqmmc-supply = <&vddio_card>; 288a776e045SNeil Armstrong}; 289a776e045SNeil Armstrong 290a776e045SNeil Armstrong/* eMMC */ 291a776e045SNeil Armstrong&sd_emmc_c { 292a776e045SNeil Armstrong status = "okay"; 293ab36be66SNeil Armstrong pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; 29467e7607fSJerome Brunet pinctrl-1 = <&emmc_clk_gate_pins>; 29567e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 296a776e045SNeil Armstrong 297a776e045SNeil Armstrong bus-width = <8>; 298a776e045SNeil Armstrong cap-mmc-highspeed; 299a776e045SNeil Armstrong max-frequency = <200000000>; 300a776e045SNeil Armstrong non-removable; 301a776e045SNeil Armstrong disable-wp; 302a776e045SNeil Armstrong mmc-ddr-1_8v; 303a776e045SNeil Armstrong mmc-hs200-1_8v; 304a776e045SNeil Armstrong 305a776e045SNeil Armstrong mmc-pwrseq = <&emmc_pwrseq>; 306a776e045SNeil Armstrong vmmc-supply = <&vcc_3v3>; 307a776e045SNeil Armstrong vqmmc-supply = <&vddio_boot>; 308a776e045SNeil Armstrong}; 309a776e045SNeil Armstrong 31082f11345SAndreas Färber&uart_AO { 311a776e045SNeil Armstrong status = "okay"; 31282f11345SAndreas Färber pinctrl-0 = <&uart_ao_a_pins>; 313a776e045SNeil Armstrong pinctrl-names = "default"; 3146939db7eSNeil Armstrong}; 315e2f4d749SPeter Korsgaard 316e2f4d749SPeter Korsgaard&usb0_phy { 317e2f4d749SPeter Korsgaard status = "okay"; 318e2f4d749SPeter Korsgaard phy-supply = <&usb_pwr>; 319e2f4d749SPeter Korsgaard}; 320e2f4d749SPeter Korsgaard 321e2f4d749SPeter Korsgaard&usb1_phy { 322e2f4d749SPeter Korsgaard status = "okay"; 323e2f4d749SPeter Korsgaard}; 324e2f4d749SPeter Korsgaard 325e2f4d749SPeter Korsgaard&usb0 { 326e2f4d749SPeter Korsgaard status = "okay"; 327e2f4d749SPeter Korsgaard}; 328e2f4d749SPeter Korsgaard 329e2f4d749SPeter Korsgaard&usb1 { 330e2f4d749SPeter Korsgaard status = "okay"; 331e2f4d749SPeter Korsgaard}; 332