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> 11d3aa4ce8SKevin Hilman 12d3aa4ce8SKevin Hilman/ { 13d3aa4ce8SKevin Hilman compatible = "amediatech,x96-max", "amlogic,u200", "amlogic,g12a"; 14d3aa4ce8SKevin Hilman model = "Shenzhen Amediatech Technology Co., Ltd X96 Max"; 15d3aa4ce8SKevin Hilman 16d3aa4ce8SKevin Hilman aliases { 17d3aa4ce8SKevin Hilman serial0 = &uart_AO; 18e8e7037cSNeil Armstrong ethernet0 = ðmac; 19d3aa4ce8SKevin Hilman }; 20d3aa4ce8SKevin Hilman chosen { 21d3aa4ce8SKevin Hilman stdout-path = "serial0:115200n8"; 22d3aa4ce8SKevin Hilman }; 23d3aa4ce8SKevin Hilman memory@0 { 24d3aa4ce8SKevin Hilman device_type = "memory"; 25d3aa4ce8SKevin Hilman reg = <0x0 0x0 0x0 0x40000000>; 26d3aa4ce8SKevin Hilman }; 27c9206b42SGuillaume La Roque 28b0be9616SNeil Armstrong cvbs-connector { 29b0be9616SNeil Armstrong compatible = "composite-video-connector"; 30b0be9616SNeil Armstrong 31b0be9616SNeil Armstrong port { 32b0be9616SNeil Armstrong cvbs_connector_in: endpoint { 33b0be9616SNeil Armstrong remote-endpoint = <&cvbs_vdac_out>; 34b0be9616SNeil Armstrong }; 35b0be9616SNeil Armstrong }; 36b0be9616SNeil Armstrong }; 37b0be9616SNeil Armstrong 38b0be9616SNeil Armstrong hdmi-connector { 39b0be9616SNeil Armstrong compatible = "hdmi-connector"; 40b0be9616SNeil Armstrong type = "a"; 41b0be9616SNeil Armstrong 42b0be9616SNeil Armstrong port { 43b0be9616SNeil Armstrong hdmi_connector_in: endpoint { 44b0be9616SNeil Armstrong remote-endpoint = <&hdmi_tx_tmds_out>; 45b0be9616SNeil Armstrong }; 46b0be9616SNeil Armstrong }; 47b0be9616SNeil Armstrong }; 48b0be9616SNeil Armstrong 4945380009SGuillaume La Roque emmc_pwrseq: emmc-pwrseq { 5045380009SGuillaume La Roque compatible = "mmc-pwrseq-emmc"; 5145380009SGuillaume La Roque reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>; 5245380009SGuillaume La Roque }; 5345380009SGuillaume La Roque 54b497ad38SNeil Armstrong sdio_pwrseq: sdio-pwrseq { 55b497ad38SNeil Armstrong compatible = "mmc-pwrseq-simple"; 56b497ad38SNeil Armstrong reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; 57b497ad38SNeil Armstrong clocks = <&wifi32k>; 58b497ad38SNeil Armstrong clock-names = "ext_clock"; 59b497ad38SNeil Armstrong }; 60b497ad38SNeil Armstrong 61c9206b42SGuillaume La Roque flash_1v8: regulator-flash_1v8 { 62c9206b42SGuillaume La Roque compatible = "regulator-fixed"; 63c9206b42SGuillaume La Roque regulator-name = "FLASH_1V8"; 64c9206b42SGuillaume La Roque regulator-min-microvolt = <1800000>; 65c9206b42SGuillaume La Roque regulator-max-microvolt = <1800000>; 66c9206b42SGuillaume La Roque vin-supply = <&vcc_3v3>; 67c9206b42SGuillaume La Roque regulator-always-on; 68c9206b42SGuillaume La Roque }; 69c9206b42SGuillaume La Roque 70c9206b42SGuillaume La Roque dc_in: regulator-dc_in { 71c9206b42SGuillaume La Roque compatible = "regulator-fixed"; 72c9206b42SGuillaume La Roque regulator-name = "DC_IN"; 73c9206b42SGuillaume La Roque regulator-min-microvolt = <5000000>; 74c9206b42SGuillaume La Roque regulator-max-microvolt = <5000000>; 75c9206b42SGuillaume La Roque regulator-always-on; 76c9206b42SGuillaume La Roque }; 77c9206b42SGuillaume La Roque 78c9206b42SGuillaume La Roque vcc_1v8: regulator-vcc_1v8 { 79c9206b42SGuillaume La Roque compatible = "regulator-fixed"; 80c9206b42SGuillaume La Roque regulator-name = "VCC_1V8"; 81c9206b42SGuillaume La Roque regulator-min-microvolt = <1800000>; 82c9206b42SGuillaume La Roque regulator-max-microvolt = <1800000>; 83c9206b42SGuillaume La Roque vin-supply = <&vcc_3v3>; 84c9206b42SGuillaume La Roque regulator-always-on; 85c9206b42SGuillaume La Roque }; 86c9206b42SGuillaume La Roque 87c9206b42SGuillaume La Roque vcc_3v3: regulator-vcc_3v3 { 88c9206b42SGuillaume La Roque compatible = "regulator-fixed"; 89c9206b42SGuillaume La Roque regulator-name = "VCC_3V3"; 90c9206b42SGuillaume La Roque regulator-min-microvolt = <3300000>; 91c9206b42SGuillaume La Roque regulator-max-microvolt = <3300000>; 92c9206b42SGuillaume La Roque vin-supply = <&vddao_3v3>; 93c9206b42SGuillaume La Roque regulator-always-on; 94c9206b42SGuillaume La Roque /* FIXME: actually controlled by VDDCPU_B_EN */ 95c9206b42SGuillaume La Roque }; 96c9206b42SGuillaume La Roque 97c9206b42SGuillaume La Roque vcc_5v: regulator-vcc_5v { 98c9206b42SGuillaume La Roque compatible = "regulator-fixed"; 99c9206b42SGuillaume La Roque regulator-name = "VCC_5V"; 100c9206b42SGuillaume La Roque regulator-min-microvolt = <5000000>; 101c9206b42SGuillaume La Roque regulator-max-microvolt = <5000000>; 102c9206b42SGuillaume La Roque vin-supply = <&dc_in>; 103c9206b42SGuillaume La Roque 104c9206b42SGuillaume La Roque gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>; 105c9206b42SGuillaume La Roque enable-active-low; 106c9206b42SGuillaume La Roque }; 107c9206b42SGuillaume La Roque 108c9206b42SGuillaume La Roque vddao_1v8: regulator-vddao_1v8 { 109c9206b42SGuillaume La Roque compatible = "regulator-fixed"; 110c9206b42SGuillaume La Roque regulator-name = "VDDAO_1V8"; 111c9206b42SGuillaume La Roque regulator-min-microvolt = <1800000>; 112c9206b42SGuillaume La Roque regulator-max-microvolt = <1800000>; 113c9206b42SGuillaume La Roque vin-supply = <&vddao_3v3>; 114c9206b42SGuillaume La Roque regulator-always-on; 115c9206b42SGuillaume La Roque }; 116c9206b42SGuillaume La Roque 117c9206b42SGuillaume La Roque vddao_3v3: regulator-vddao_3v3 { 118c9206b42SGuillaume La Roque compatible = "regulator-fixed"; 119c9206b42SGuillaume La Roque regulator-name = "VDDAO_3V3"; 120c9206b42SGuillaume La Roque regulator-min-microvolt = <3300000>; 121c9206b42SGuillaume La Roque regulator-max-microvolt = <3300000>; 122c9206b42SGuillaume La Roque vin-supply = <&dc_in>; 123c9206b42SGuillaume La Roque regulator-always-on; 124c9206b42SGuillaume La Roque }; 125b497ad38SNeil Armstrong 126b497ad38SNeil Armstrong wifi32k: wifi32k { 127b497ad38SNeil Armstrong compatible = "pwm-clock"; 128b497ad38SNeil Armstrong #clock-cells = <0>; 129b497ad38SNeil Armstrong clock-frequency = <32768>; 130b497ad38SNeil Armstrong pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ 131b497ad38SNeil Armstrong }; 132d3aa4ce8SKevin Hilman}; 133d3aa4ce8SKevin Hilman 134b0be9616SNeil Armstrong&cec_AO { 135b0be9616SNeil Armstrong pinctrl-0 = <&cec_ao_a_h_pins>; 136b0be9616SNeil Armstrong pinctrl-names = "default"; 137b0be9616SNeil Armstrong status = "disabled"; 138b0be9616SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 139b0be9616SNeil Armstrong}; 140b0be9616SNeil Armstrong 141b0be9616SNeil Armstrong&cecb_AO { 142b0be9616SNeil Armstrong pinctrl-0 = <&cec_ao_b_h_pins>; 143b0be9616SNeil Armstrong pinctrl-names = "default"; 144b0be9616SNeil Armstrong status = "okay"; 145b0be9616SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 146b0be9616SNeil Armstrong}; 147b0be9616SNeil Armstrong 148b0be9616SNeil Armstrong&cvbs_vdac_port { 149b0be9616SNeil Armstrong cvbs_vdac_out: endpoint { 150b0be9616SNeil Armstrong remote-endpoint = <&cvbs_connector_in>; 151b0be9616SNeil Armstrong }; 152b0be9616SNeil Armstrong}; 153b0be9616SNeil Armstrong 154b0be9616SNeil Armstrong&hdmi_tx { 155b0be9616SNeil Armstrong status = "okay"; 156b0be9616SNeil Armstrong pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>; 157b0be9616SNeil Armstrong pinctrl-names = "default"; 158b0be9616SNeil Armstrong hdmi-supply = <&vcc_5v>; 159b0be9616SNeil Armstrong}; 160b0be9616SNeil Armstrong 161b0be9616SNeil Armstrong&hdmi_tx_tmds_port { 162b0be9616SNeil Armstrong hdmi_tx_tmds_out: endpoint { 163b0be9616SNeil Armstrong remote-endpoint = <&hdmi_connector_in>; 164b0be9616SNeil Armstrong }; 165b0be9616SNeil Armstrong}; 166b0be9616SNeil Armstrong 167fff6e9d3SNeil Armstrong&ir { 168fff6e9d3SNeil Armstrong status = "okay"; 169fff6e9d3SNeil Armstrong pinctrl-0 = <&remote_input_ao_pins>; 170fff6e9d3SNeil Armstrong pinctrl-names = "default"; 171fff6e9d3SNeil Armstrong}; 172fff6e9d3SNeil Armstrong 173e8e7037cSNeil Armstrong&ext_mdio { 174e8e7037cSNeil Armstrong external_phy: ethernet-phy@0 { 175e8e7037cSNeil Armstrong /* Realtek RTL8211F (0x001cc916) */ 176e8e7037cSNeil Armstrong reg = <0>; 177e8e7037cSNeil Armstrong max-speed = <1000>; 178e8e7037cSNeil Armstrong eee-broken-1000t; 179e8e7037cSNeil Armstrong }; 180e8e7037cSNeil Armstrong}; 181e8e7037cSNeil Armstrong 182e8e7037cSNeil Armstrongðmac { 183e8e7037cSNeil Armstrong pinctrl-0 = <ð_pins>, <ð_rgmii_pins>; 184e8e7037cSNeil Armstrong pinctrl-names = "default"; 185e8e7037cSNeil Armstrong status = "okay"; 186e8e7037cSNeil Armstrong phy-mode = "rgmii"; 187e8e7037cSNeil Armstrong phy-handle = <&external_phy>; 188e8e7037cSNeil Armstrong amlogic,tx-delay-ns = <2>; 189e8e7037cSNeil Armstrong snps,reset-gpio = <&gpio GPIOZ_14 0>; 190e8e7037cSNeil Armstrong snps,reset-delays-us = <0 10000 1000000>; 191e8e7037cSNeil Armstrong snps,reset-active-low; 192e8e7037cSNeil Armstrong}; 193e8e7037cSNeil Armstrong 194b497ad38SNeil Armstrong&pwm_ef { 195b497ad38SNeil Armstrong status = "okay"; 196b497ad38SNeil Armstrong pinctrl-0 = <&pwm_e_pins>; 197b497ad38SNeil Armstrong pinctrl-names = "default"; 198b497ad38SNeil Armstrong clocks = <&xtal>; 199b497ad38SNeil Armstrong clock-names = "clkin0"; 200b497ad38SNeil Armstrong}; 201b497ad38SNeil Armstrong 202c5c9c7cfSNeil Armstrong&uart_A { 203c5c9c7cfSNeil Armstrong status = "okay"; 204c5c9c7cfSNeil Armstrong pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; 205c5c9c7cfSNeil Armstrong pinctrl-names = "default"; 206c5c9c7cfSNeil Armstrong uart-has-rtscts; 207c5c9c7cfSNeil Armstrong 208c5c9c7cfSNeil Armstrong bluetooth { 209c5c9c7cfSNeil Armstrong compatible = "brcm,bcm43438-bt"; 210c5c9c7cfSNeil Armstrong shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; 211524595ecSNeil Armstrong clocks = <&wifi32k>; 212524595ecSNeil Armstrong clock-names = "lpo"; 213c5c9c7cfSNeil Armstrong }; 214c5c9c7cfSNeil Armstrong}; 215c5c9c7cfSNeil Armstrong 216d3aa4ce8SKevin Hilman&uart_AO { 217d3aa4ce8SKevin Hilman status = "okay"; 2180b7aed33SNeil Armstrong pinctrl-0 = <&uart_ao_a_pins>; 2190b7aed33SNeil Armstrong pinctrl-names = "default"; 220d3aa4ce8SKevin Hilman}; 22145b72126SNeil Armstrong 22245b72126SNeil Armstrong&usb { 22345b72126SNeil Armstrong status = "okay"; 22445b72126SNeil Armstrong dr_mode = "host"; 22545b72126SNeil Armstrong}; 22645380009SGuillaume La Roque 227b497ad38SNeil Armstrong/* SDIO */ 228b497ad38SNeil Armstrong&sd_emmc_a { 229b497ad38SNeil Armstrong status = "okay"; 230b497ad38SNeil Armstrong pinctrl-0 = <&sdio_pins>; 231b497ad38SNeil Armstrong pinctrl-1 = <&sdio_clk_gate_pins>; 232b497ad38SNeil Armstrong pinctrl-names = "default", "clk-gate"; 233b497ad38SNeil Armstrong #address-cells = <1>; 234b497ad38SNeil Armstrong #size-cells = <0>; 235b497ad38SNeil Armstrong 236b497ad38SNeil Armstrong bus-width = <4>; 237b497ad38SNeil Armstrong cap-sd-highspeed; 238b497ad38SNeil Armstrong sd-uhs-sdr50; 239b497ad38SNeil Armstrong max-frequency = <100000000>; 240b497ad38SNeil Armstrong 241b497ad38SNeil Armstrong non-removable; 242b497ad38SNeil Armstrong disable-wp; 243b497ad38SNeil Armstrong 244b497ad38SNeil Armstrong mmc-pwrseq = <&sdio_pwrseq>; 245b497ad38SNeil Armstrong 246b497ad38SNeil Armstrong vmmc-supply = <&vddao_3v3>; 247b497ad38SNeil Armstrong vqmmc-supply = <&vddao_1v8>; 248b497ad38SNeil Armstrong 249b497ad38SNeil Armstrong brcmf: wifi@1 { 250b497ad38SNeil Armstrong reg = <1>; 251b497ad38SNeil Armstrong compatible = "brcm,bcm4329-fmac"; 252b497ad38SNeil Armstrong }; 253b497ad38SNeil Armstrong}; 254b497ad38SNeil Armstrong 25545380009SGuillaume La Roque/* SD card */ 25645380009SGuillaume La Roque&sd_emmc_b { 25745380009SGuillaume La Roque status = "okay"; 25845380009SGuillaume La Roque pinctrl-0 = <&sdcard_c_pins>; 25945380009SGuillaume La Roque pinctrl-1 = <&sdcard_clk_gate_c_pins>; 26045380009SGuillaume La Roque pinctrl-names = "default", "clk-gate"; 26145380009SGuillaume La Roque 26245380009SGuillaume La Roque bus-width = <4>; 26345380009SGuillaume La Roque cap-sd-highspeed; 26445380009SGuillaume La Roque max-frequency = <100000000>; 26545380009SGuillaume La Roque disable-wp; 26645380009SGuillaume La Roque 26745380009SGuillaume La Roque cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; 26845380009SGuillaume La Roque vmmc-supply = <&vddao_3v3>; 26945380009SGuillaume La Roque vqmmc-supply = <&vddao_3v3>; 27045380009SGuillaume La Roque}; 27145380009SGuillaume La Roque 27245380009SGuillaume La Roque/* eMMC */ 27345380009SGuillaume La Roque&sd_emmc_c { 27445380009SGuillaume La Roque status = "okay"; 27545380009SGuillaume La Roque pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; 27645380009SGuillaume La Roque pinctrl-1 = <&emmc_clk_gate_pins>; 27745380009SGuillaume La Roque pinctrl-names = "default", "clk-gate"; 27845380009SGuillaume La Roque 27945380009SGuillaume La Roque bus-width = <8>; 28045380009SGuillaume La Roque cap-mmc-highspeed; 28145380009SGuillaume La Roque max-frequency = <100000000>; 28245380009SGuillaume La Roque non-removable; 28345380009SGuillaume La Roque disable-wp; 28445380009SGuillaume La Roque 28545380009SGuillaume La Roque mmc-pwrseq = <&emmc_pwrseq>; 28645380009SGuillaume La Roque vmmc-supply = <&vcc_3v3>; 28745380009SGuillaume La Roque vqmmc-supply = <&flash_1v8>; 28845380009SGuillaume La Roque}; 289