1// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2/* 3 * Copyright (c) 2016 Andreas Färber 4 * Copyright (c) 2016 BayLibre, Inc. 5 * Author: Neil Armstrong <narmstrong@kernel.org> 6 */ 7 8/dts-v1/; 9 10#include "meson-gxbb.dtsi" 11#include <dt-bindings/gpio/gpio.h> 12#include <dt-bindings/input/input.h> 13#include <dt-bindings/sound/meson-aiu.h> 14 15/ { 16 compatible = "nexbox,a95x", "amlogic,meson-gxbb"; 17 model = "NEXBOX A95X"; 18 19 aliases { 20 serial0 = &uart_AO; 21 ethernet0 = ðmac; 22 }; 23 24 chosen { 25 stdout-path = "serial0:115200n8"; 26 }; 27 28 memory@0 { 29 device_type = "memory"; 30 reg = <0x0 0x0 0x0 0x40000000>; 31 }; 32 33 leds { 34 compatible = "gpio-leds"; 35 led-blue { 36 label = "a95x:system-status"; 37 gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_LOW>; 38 linux,default-trigger = "heartbeat"; 39 default-state = "off"; 40 }; 41 }; 42 43 gpio-keys-polled { 44 compatible = "gpio-keys-polled"; 45 poll-interval = <100>; 46 47 button { 48 label = "reset"; 49 linux,code = <KEY_RESTART>; 50 gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_LOW>; 51 }; 52 }; 53 54 usb_pwr: regulator-usb-pwrs { 55 compatible = "regulator-fixed"; 56 57 regulator-name = "USB_PWR"; 58 59 regulator-min-microvolt = <5000000>; 60 regulator-max-microvolt = <5000000>; 61 62 gpio = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>; 63 enable-active-high; 64 }; 65 66 vddio_card: gpio-regulator { 67 compatible = "regulator-gpio"; 68 69 regulator-name = "VDDIO_CARD"; 70 regulator-min-microvolt = <1800000>; 71 regulator-max-microvolt = <3300000>; 72 73 gpios = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>; 74 gpios-states = <1>; 75 76 /* Based on P200 schematics, signal CARD_1.8V/3.3V_CTR */ 77 states = <1800000 0>, 78 <3300000 1>; 79 }; 80 81 vddio_boot: regulator-vddio-boot { 82 compatible = "regulator-fixed"; 83 regulator-name = "VDDIO_BOOT"; 84 regulator-min-microvolt = <1800000>; 85 regulator-max-microvolt = <1800000>; 86 }; 87 88 vddao_3v3: regulator-vddao-3v3 { 89 compatible = "regulator-fixed"; 90 regulator-name = "VDDAO_3V3"; 91 regulator-min-microvolt = <3300000>; 92 regulator-max-microvolt = <3300000>; 93 }; 94 95 vcc_3v3: regulator-vcc-3v3 { 96 compatible = "regulator-fixed"; 97 regulator-name = "VCC_3V3"; 98 regulator-min-microvolt = <3300000>; 99 regulator-max-microvolt = <3300000>; 100 }; 101 102 emmc_pwrseq: emmc-pwrseq { 103 compatible = "mmc-pwrseq-emmc"; 104 reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; 105 }; 106 107 wifi32k: wifi32k { 108 compatible = "pwm-clock"; 109 #clock-cells = <0>; 110 clock-frequency = <32768>; 111 pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ 112 }; 113 114 sdio_pwrseq: sdio-pwrseq { 115 compatible = "mmc-pwrseq-simple"; 116 reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; 117 clocks = <&wifi32k>; 118 clock-names = "ext_clock"; 119 }; 120 121 cvbs-connector { 122 compatible = "composite-video-connector"; 123 124 port { 125 cvbs_connector_in: endpoint { 126 remote-endpoint = <&cvbs_vdac_out>; 127 }; 128 }; 129 }; 130 131 hdmi-connector { 132 compatible = "hdmi-connector"; 133 type = "a"; 134 135 port { 136 hdmi_connector_in: endpoint { 137 remote-endpoint = <&hdmi_tx_tmds_out>; 138 }; 139 }; 140 }; 141 142 sound { 143 compatible = "amlogic,gx-sound-card"; 144 model = "NEXBOX-A95X"; 145 clocks = <&clkc CLKID_MPLL0>, 146 <&clkc CLKID_MPLL1>, 147 <&clkc CLKID_MPLL2>; 148 149 assigned-clocks = <&clkc CLKID_MPLL0>, 150 <&clkc CLKID_MPLL1>, 151 <&clkc CLKID_MPLL2>; 152 assigned-clock-parents = <0>, <0>, <0>; 153 assigned-clock-rates = <294912000>, 154 <270950400>, 155 <393216000>; 156 157 dai-link-0 { 158 sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>; 159 }; 160 161 dai-link-1 { 162 sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>; 163 dai-format = "i2s"; 164 mclk-fs = <256>; 165 166 codec-0 { 167 sound-dai = <&aiu AIU_HDMI CTRL_I2S>; 168 }; 169 }; 170 171 dai-link-2 { 172 sound-dai = <&aiu AIU_HDMI CTRL_OUT>; 173 174 codec-0 { 175 sound-dai = <&hdmi_tx>; 176 }; 177 }; 178 }; 179}; 180 181&aiu { 182 status = "okay"; 183}; 184 185&cvbs_vdac_port { 186 cvbs_vdac_out: endpoint { 187 remote-endpoint = <&cvbs_connector_in>; 188 }; 189}; 190 191&cec_AO { 192 status = "okay"; 193 pinctrl-0 = <&ao_cec_pins>; 194 pinctrl-names = "default"; 195 hdmi-phandle = <&hdmi_tx>; 196}; 197 198ðmac { 199 status = "okay"; 200 pinctrl-0 = <ð_rmii_pins>; 201 pinctrl-names = "default"; 202 203 phy-handle = <ð_phy0>; 204 phy-mode = "rmii"; 205 206 mdio { 207 compatible = "snps,dwmac-mdio"; 208 #address-cells = <1>; 209 #size-cells = <0>; 210 211 eth_phy0: ethernet-phy@0 { 212 /* IC Plus IP101GR (0x02430c54) */ 213 reg = <0>; 214 215 reset-assert-us = <10000>; 216 reset-deassert-us = <10000>; 217 reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; 218 }; 219 }; 220}; 221 222&hdmi_tx { 223 status = "okay"; 224 pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; 225 pinctrl-names = "default"; 226}; 227 228&hdmi_tx_tmds_port { 229 hdmi_tx_tmds_out: endpoint { 230 remote-endpoint = <&hdmi_connector_in>; 231 }; 232}; 233 234&ir { 235 status = "okay"; 236 pinctrl-0 = <&remote_input_ao_pins>; 237 pinctrl-names = "default"; 238}; 239 240&pwm_ef { 241 status = "okay"; 242 pinctrl-0 = <&pwm_e_pins>; 243 pinctrl-names = "default"; 244}; 245 246/* Wireless SDIO Module */ 247&sd_emmc_a { 248 status = "okay"; 249 pinctrl-0 = <&sdio_pins>; 250 pinctrl-1 = <&sdio_clk_gate_pins>; 251 pinctrl-names = "default", "clk-gate"; 252 #address-cells = <1>; 253 #size-cells = <0>; 254 255 bus-width = <4>; 256 cap-sd-highspeed; 257 max-frequency = <100000000>; 258 259 non-removable; 260 disable-wp; 261 262 /* WiFi firmware requires power to be kept while in suspend */ 263 keep-power-in-suspend; 264 265 mmc-pwrseq = <&sdio_pwrseq>; 266 267 vmmc-supply = <&vddao_3v3>; 268 vqmmc-supply = <&vddio_boot>; 269}; 270 271/* SD card */ 272&sd_emmc_b { 273 status = "okay"; 274 pinctrl-0 = <&sdcard_pins>; 275 pinctrl-1 = <&sdcard_clk_gate_pins>; 276 pinctrl-names = "default", "clk-gate"; 277 278 bus-width = <4>; 279 cap-sd-highspeed; 280 max-frequency = <50000000>; 281 disable-wp; 282 283 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; 284 285 vmmc-supply = <&vddao_3v3>; 286 vqmmc-supply = <&vddio_card>; 287}; 288 289/* eMMC */ 290&sd_emmc_c { 291 status = "okay"; 292 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; 293 pinctrl-1 = <&emmc_clk_gate_pins>; 294 pinctrl-names = "default", "clk-gate"; 295 296 bus-width = <8>; 297 cap-mmc-highspeed; 298 max-frequency = <200000000>; 299 non-removable; 300 disable-wp; 301 mmc-ddr-1_8v; 302 mmc-hs200-1_8v; 303 304 mmc-pwrseq = <&emmc_pwrseq>; 305 vmmc-supply = <&vcc_3v3>; 306 vqmmc-supply = <&vddio_boot>; 307}; 308 309&uart_AO { 310 status = "okay"; 311 pinctrl-0 = <&uart_ao_a_pins>; 312 pinctrl-names = "default"; 313}; 314 315&usb0_phy { 316 status = "okay"; 317 phy-supply = <&usb_pwr>; 318}; 319 320&usb1_phy { 321 status = "okay"; 322}; 323 324&usb0 { 325 status = "okay"; 326}; 327 328&usb1 { 329 status = "okay"; 330}; 331