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> 13c246e9d6SNeil Armstrong 14c246e9d6SNeil Armstrong/ { 15c246e9d6SNeil Armstrong compatible = "nexbox,a95x", "amlogic,meson-gxbb"; 16c246e9d6SNeil Armstrong model = "NEXBOX A95X"; 17c246e9d6SNeil Armstrong 18c246e9d6SNeil Armstrong aliases { 19c246e9d6SNeil Armstrong serial0 = &uart_AO; 20059a58fcSJorge Ramirez-Ortiz ethernet0 = ðmac; 21c246e9d6SNeil Armstrong }; 22c246e9d6SNeil Armstrong 23c246e9d6SNeil Armstrong chosen { 24c246e9d6SNeil Armstrong stdout-path = "serial0:115200n8"; 25c246e9d6SNeil Armstrong }; 26c246e9d6SNeil Armstrong 27c246e9d6SNeil Armstrong memory@0 { 28c246e9d6SNeil Armstrong device_type = "memory"; 29c246e9d6SNeil Armstrong reg = <0x0 0x0 0x0 0x40000000>; 30c246e9d6SNeil Armstrong }; 31c246e9d6SNeil Armstrong 32c246e9d6SNeil Armstrong leds { 33c246e9d6SNeil Armstrong compatible = "gpio-leds"; 3408dc0e5dSNeil Armstrong led-blue { 35c246e9d6SNeil Armstrong label = "a95x:system-status"; 36c246e9d6SNeil Armstrong gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_LOW>; 37c246e9d6SNeil Armstrong linux,default-trigger = "heartbeat"; 38c246e9d6SNeil Armstrong default-state = "off"; 39c246e9d6SNeil Armstrong }; 40c246e9d6SNeil Armstrong }; 41c246e9d6SNeil Armstrong 42c246e9d6SNeil Armstrong gpio-keys-polled { 43c246e9d6SNeil Armstrong compatible = "gpio-keys-polled"; 44c246e9d6SNeil Armstrong #address-cells = <1>; 45c246e9d6SNeil Armstrong #size-cells = <0>; 46c246e9d6SNeil Armstrong poll-interval = <100>; 47c246e9d6SNeil Armstrong 48c246e9d6SNeil Armstrong button@0 { 49c246e9d6SNeil Armstrong label = "reset"; 50c246e9d6SNeil Armstrong linux,code = <KEY_RESTART>; 51c246e9d6SNeil Armstrong gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_LOW>; 52c246e9d6SNeil Armstrong }; 53c246e9d6SNeil Armstrong }; 54a776e045SNeil Armstrong 55e2f4d749SPeter Korsgaard usb_pwr: regulator-usb-pwrs { 56e2f4d749SPeter Korsgaard compatible = "regulator-fixed"; 57e2f4d749SPeter Korsgaard 58e2f4d749SPeter Korsgaard regulator-name = "USB_PWR"; 59e2f4d749SPeter Korsgaard 60e2f4d749SPeter Korsgaard regulator-min-microvolt = <5000000>; 61e2f4d749SPeter Korsgaard regulator-max-microvolt = <5000000>; 62e2f4d749SPeter Korsgaard 63e2f4d749SPeter Korsgaard gpio = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>; 64e2f4d749SPeter Korsgaard enable-active-high; 65e2f4d749SPeter Korsgaard }; 66e2f4d749SPeter Korsgaard 67a776e045SNeil Armstrong vddio_card: gpio-regulator { 68a776e045SNeil Armstrong compatible = "regulator-gpio"; 69a776e045SNeil Armstrong 70a776e045SNeil Armstrong regulator-name = "VDDIO_CARD"; 71a776e045SNeil Armstrong regulator-min-microvolt = <1800000>; 72a776e045SNeil Armstrong regulator-max-microvolt = <3300000>; 73a776e045SNeil Armstrong 74a776e045SNeil Armstrong gpios = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>; 75a776e045SNeil Armstrong gpios-states = <1>; 76a776e045SNeil Armstrong 77a776e045SNeil Armstrong /* Based on P200 schematics, signal CARD_1.8V/3.3V_CTR */ 78f9717178SNeil Armstrong states = <1800000 0>, 79f9717178SNeil Armstrong <3300000 1>; 80a776e045SNeil Armstrong }; 81a776e045SNeil Armstrong 82a776e045SNeil Armstrong vddio_boot: regulator-vddio_boot { 83a776e045SNeil Armstrong compatible = "regulator-fixed"; 84a776e045SNeil Armstrong regulator-name = "VDDIO_BOOT"; 85a776e045SNeil Armstrong regulator-min-microvolt = <1800000>; 86a776e045SNeil Armstrong regulator-max-microvolt = <1800000>; 87a776e045SNeil Armstrong }; 88a776e045SNeil Armstrong 89a776e045SNeil Armstrong vddao_3v3: regulator-vddao_3v3 { 90a776e045SNeil Armstrong compatible = "regulator-fixed"; 91a776e045SNeil Armstrong regulator-name = "VDDAO_3V3"; 92a776e045SNeil Armstrong regulator-min-microvolt = <3300000>; 93a776e045SNeil Armstrong regulator-max-microvolt = <3300000>; 94a776e045SNeil Armstrong }; 95a776e045SNeil Armstrong 96a776e045SNeil Armstrong vcc_3v3: regulator-vcc_3v3 { 97a776e045SNeil Armstrong compatible = "regulator-fixed"; 98a776e045SNeil Armstrong regulator-name = "VCC_3V3"; 99a776e045SNeil Armstrong regulator-min-microvolt = <3300000>; 100a776e045SNeil Armstrong regulator-max-microvolt = <3300000>; 101a776e045SNeil Armstrong }; 102a776e045SNeil Armstrong 103a776e045SNeil Armstrong emmc_pwrseq: emmc-pwrseq { 104a776e045SNeil Armstrong compatible = "mmc-pwrseq-emmc"; 105a776e045SNeil Armstrong reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; 106a776e045SNeil Armstrong }; 107a776e045SNeil Armstrong 108a776e045SNeil Armstrong wifi32k: wifi32k { 109a776e045SNeil Armstrong compatible = "pwm-clock"; 110a776e045SNeil Armstrong #clock-cells = <0>; 111a776e045SNeil Armstrong clock-frequency = <32768>; 112a776e045SNeil Armstrong pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ 113a776e045SNeil Armstrong }; 114a776e045SNeil Armstrong 115a776e045SNeil Armstrong sdio_pwrseq: sdio-pwrseq { 116a776e045SNeil Armstrong compatible = "mmc-pwrseq-simple"; 117a776e045SNeil Armstrong reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; 118a776e045SNeil Armstrong clocks = <&wifi32k>; 119a776e045SNeil Armstrong clock-names = "ext_clock"; 120a776e045SNeil Armstrong }; 121fafdbdf7SNeil Armstrong 122fafdbdf7SNeil Armstrong cvbs-connector { 123fafdbdf7SNeil Armstrong compatible = "composite-video-connector"; 124fafdbdf7SNeil Armstrong 125fafdbdf7SNeil Armstrong port { 126fafdbdf7SNeil Armstrong cvbs_connector_in: endpoint { 127fafdbdf7SNeil Armstrong remote-endpoint = <&cvbs_vdac_out>; 128fafdbdf7SNeil Armstrong }; 129fafdbdf7SNeil Armstrong }; 130fafdbdf7SNeil Armstrong }; 1316939db7eSNeil Armstrong 1326939db7eSNeil Armstrong hdmi-connector { 1336939db7eSNeil Armstrong compatible = "hdmi-connector"; 1346939db7eSNeil Armstrong type = "a"; 1356939db7eSNeil Armstrong 1366939db7eSNeil Armstrong port { 1376939db7eSNeil Armstrong hdmi_connector_in: endpoint { 1386939db7eSNeil Armstrong remote-endpoint = <&hdmi_tx_tmds_out>; 1396939db7eSNeil Armstrong }; 1406939db7eSNeil Armstrong }; 1416939db7eSNeil Armstrong }; 142c246e9d6SNeil Armstrong}; 143c246e9d6SNeil Armstrong 14482f11345SAndreas Färber&cvbs_vdac_port { 14582f11345SAndreas Färber cvbs_vdac_out: endpoint { 14682f11345SAndreas Färber remote-endpoint = <&cvbs_connector_in>; 14782f11345SAndreas Färber }; 148c246e9d6SNeil Armstrong}; 149c246e9d6SNeil Armstrong 150b16c71c9SNeil Armstrong&cec_AO { 151b16c71c9SNeil Armstrong status = "okay"; 152b16c71c9SNeil Armstrong pinctrl-0 = <&ao_cec_pins>; 153b16c71c9SNeil Armstrong pinctrl-names = "default"; 154b16c71c9SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 155b16c71c9SNeil Armstrong}; 156b16c71c9SNeil Armstrong 157c246e9d6SNeil Armstrongðmac { 158c246e9d6SNeil Armstrong status = "okay"; 1593be2d9cfSNeil Armstrong pinctrl-0 = <ð_rmii_pins>; 160c246e9d6SNeil Armstrong pinctrl-names = "default"; 16167d49f30SMartin Blumenstingl 16267d49f30SMartin Blumenstingl phy-handle = <ð_phy0>; 1633be2d9cfSNeil Armstrong phy-mode = "rmii"; 16467d49f30SMartin Blumenstingl 16567d49f30SMartin Blumenstingl mdio { 16667d49f30SMartin Blumenstingl compatible = "snps,dwmac-mdio"; 16767d49f30SMartin Blumenstingl #address-cells = <1>; 16867d49f30SMartin Blumenstingl #size-cells = <0>; 16967d49f30SMartin Blumenstingl 17067d49f30SMartin Blumenstingl eth_phy0: ethernet-phy@0 { 17167d49f30SMartin Blumenstingl /* IC Plus IP101GR (0x02430c54) */ 17267d49f30SMartin Blumenstingl reg = <0>; 173f29cabf2SMartin Blumenstingl 174f29cabf2SMartin Blumenstingl reset-assert-us = <10000>; 175f29cabf2SMartin Blumenstingl reset-deassert-us = <10000>; 176f29cabf2SMartin Blumenstingl reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; 17767d49f30SMartin Blumenstingl }; 17867d49f30SMartin Blumenstingl }; 179c246e9d6SNeil Armstrong}; 180c246e9d6SNeil Armstrong 18182f11345SAndreas Färber&hdmi_tx { 18282f11345SAndreas Färber status = "okay"; 18382f11345SAndreas Färber pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; 18482f11345SAndreas Färber pinctrl-names = "default"; 18582f11345SAndreas Färber}; 18682f11345SAndreas Färber 18782f11345SAndreas Färber&hdmi_tx_tmds_port { 18882f11345SAndreas Färber hdmi_tx_tmds_out: endpoint { 18982f11345SAndreas Färber remote-endpoint = <&hdmi_connector_in>; 19082f11345SAndreas Färber }; 19182f11345SAndreas Färber}; 19282f11345SAndreas Färber 193c246e9d6SNeil Armstrong&ir { 194c246e9d6SNeil Armstrong status = "okay"; 195c246e9d6SNeil Armstrong pinctrl-0 = <&remote_input_ao_pins>; 196c246e9d6SNeil Armstrong pinctrl-names = "default"; 197c246e9d6SNeil Armstrong}; 198a776e045SNeil Armstrong 19982f11345SAndreas Färber&pwm_ef { 20082f11345SAndreas Färber status = "okay"; 20182f11345SAndreas Färber pinctrl-0 = <&pwm_e_pins>; 20282f11345SAndreas Färber pinctrl-names = "default"; 20382f11345SAndreas Färber clocks = <&clkc CLKID_FCLK_DIV4>; 20482f11345SAndreas Färber clock-names = "clkin0"; 20582f11345SAndreas Färber}; 20682f11345SAndreas Färber 207a776e045SNeil Armstrong/* Wireless SDIO Module */ 208a776e045SNeil Armstrong&sd_emmc_a { 209a776e045SNeil Armstrong status = "okay"; 210a776e045SNeil Armstrong pinctrl-0 = <&sdio_pins>; 21167e7607fSJerome Brunet pinctrl-1 = <&sdio_clk_gate_pins>; 21267e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 213a776e045SNeil Armstrong #address-cells = <1>; 214a776e045SNeil Armstrong #size-cells = <0>; 215a776e045SNeil Armstrong 216a776e045SNeil Armstrong bus-width = <4>; 217a776e045SNeil Armstrong cap-sd-highspeed; 218a776e045SNeil Armstrong max-frequency = <100000000>; 219a776e045SNeil Armstrong 220a776e045SNeil Armstrong non-removable; 221a776e045SNeil Armstrong disable-wp; 222a776e045SNeil Armstrong 22342d7815cSNeil Armstrong /* WiFi firmware requires power to be kept while in suspend */ 22442d7815cSNeil Armstrong keep-power-in-suspend; 22542d7815cSNeil Armstrong 226a776e045SNeil Armstrong mmc-pwrseq = <&sdio_pwrseq>; 227a776e045SNeil Armstrong 228a776e045SNeil Armstrong vmmc-supply = <&vddao_3v3>; 229a776e045SNeil Armstrong vqmmc-supply = <&vddio_boot>; 230a776e045SNeil Armstrong}; 231a776e045SNeil Armstrong 232a776e045SNeil Armstrong/* SD card */ 233a776e045SNeil Armstrong&sd_emmc_b { 234a776e045SNeil Armstrong status = "okay"; 235a776e045SNeil Armstrong pinctrl-0 = <&sdcard_pins>; 23667e7607fSJerome Brunet pinctrl-1 = <&sdcard_clk_gate_pins>; 23767e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 238a776e045SNeil Armstrong 239a776e045SNeil Armstrong bus-width = <4>; 240a776e045SNeil Armstrong cap-sd-highspeed; 241adc52bf7SJerome Brunet max-frequency = <50000000>; 242a776e045SNeil Armstrong disable-wp; 243a776e045SNeil Armstrong 244f29200c8SLoys Ollivier cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; 245a776e045SNeil Armstrong 246a776e045SNeil Armstrong vmmc-supply = <&vddao_3v3>; 247a776e045SNeil Armstrong vqmmc-supply = <&vddio_card>; 248a776e045SNeil Armstrong}; 249a776e045SNeil Armstrong 250a776e045SNeil Armstrong/* eMMC */ 251a776e045SNeil Armstrong&sd_emmc_c { 252a776e045SNeil Armstrong status = "okay"; 253ab36be66SNeil Armstrong pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; 25467e7607fSJerome Brunet pinctrl-1 = <&emmc_clk_gate_pins>; 25567e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 256a776e045SNeil Armstrong 257a776e045SNeil Armstrong bus-width = <8>; 258a776e045SNeil Armstrong cap-mmc-highspeed; 259a776e045SNeil Armstrong max-frequency = <200000000>; 260a776e045SNeil Armstrong non-removable; 261a776e045SNeil Armstrong disable-wp; 262a776e045SNeil Armstrong mmc-ddr-1_8v; 263a776e045SNeil Armstrong mmc-hs200-1_8v; 264a776e045SNeil Armstrong 265a776e045SNeil Armstrong mmc-pwrseq = <&emmc_pwrseq>; 266a776e045SNeil Armstrong vmmc-supply = <&vcc_3v3>; 267a776e045SNeil Armstrong vqmmc-supply = <&vddio_boot>; 268a776e045SNeil Armstrong}; 269a776e045SNeil Armstrong 27082f11345SAndreas Färber&uart_AO { 271a776e045SNeil Armstrong status = "okay"; 27282f11345SAndreas Färber pinctrl-0 = <&uart_ao_a_pins>; 273a776e045SNeil Armstrong pinctrl-names = "default"; 2746939db7eSNeil Armstrong}; 275e2f4d749SPeter Korsgaard 276e2f4d749SPeter Korsgaard&usb0_phy { 277e2f4d749SPeter Korsgaard status = "okay"; 278e2f4d749SPeter Korsgaard phy-supply = <&usb_pwr>; 279e2f4d749SPeter Korsgaard}; 280e2f4d749SPeter Korsgaard 281e2f4d749SPeter Korsgaard&usb1_phy { 282e2f4d749SPeter Korsgaard status = "okay"; 283e2f4d749SPeter Korsgaard}; 284e2f4d749SPeter Korsgaard 285e2f4d749SPeter Korsgaard&usb0 { 286e2f4d749SPeter Korsgaard status = "okay"; 287e2f4d749SPeter Korsgaard}; 288e2f4d749SPeter Korsgaard 289e2f4d749SPeter Korsgaard&usb1 { 290e2f4d749SPeter Korsgaard status = "okay"; 291e2f4d749SPeter Korsgaard}; 292