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