1*b5a03eceSChristian Hewitt// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2*b5a03eceSChristian Hewitt/* 3*b5a03eceSChristian Hewitt * Copyright (c) 2019 BayLibre SAS. All rights reserved. 4*b5a03eceSChristian Hewitt * Copyright (c) 2020 Christian Hewitt <christianshewitt@gmail.com> 5*b5a03eceSChristian Hewitt * 6*b5a03eceSChristian Hewitt * AC200/AC202 = S905D3 7*b5a03eceSChristian Hewitt * AC213/AC214 = S905X3 8*b5a03eceSChristian Hewitt * 9*b5a03eceSChristian Hewitt */ 10*b5a03eceSChristian Hewitt 11*b5a03eceSChristian Hewitt#include "meson-sm1.dtsi" 12*b5a03eceSChristian Hewitt#include <dt-bindings/gpio/gpio.h> 13*b5a03eceSChristian Hewitt#include <dt-bindings/gpio/meson-g12a-gpio.h> 14*b5a03eceSChristian Hewitt#include <dt-bindings/input/input.h> 15*b5a03eceSChristian Hewitt 16*b5a03eceSChristian Hewitt/ { 17*b5a03eceSChristian Hewitt aliases { 18*b5a03eceSChristian Hewitt serial0 = &uart_AO; 19*b5a03eceSChristian Hewitt ethernet0 = ðmac; 20*b5a03eceSChristian Hewitt }; 21*b5a03eceSChristian Hewitt 22*b5a03eceSChristian Hewitt chosen { 23*b5a03eceSChristian Hewitt stdout-path = "serial0:115200n8"; 24*b5a03eceSChristian Hewitt }; 25*b5a03eceSChristian Hewitt 26*b5a03eceSChristian Hewitt emmc_pwrseq: emmc-pwrseq { 27*b5a03eceSChristian Hewitt compatible = "mmc-pwrseq-emmc"; 28*b5a03eceSChristian Hewitt reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>; 29*b5a03eceSChristian Hewitt }; 30*b5a03eceSChristian Hewitt 31*b5a03eceSChristian Hewitt cvbs-connector { 32*b5a03eceSChristian Hewitt compatible = "composite-video-connector"; 33*b5a03eceSChristian Hewitt 34*b5a03eceSChristian Hewitt port { 35*b5a03eceSChristian Hewitt cvbs_connector_in: endpoint { 36*b5a03eceSChristian Hewitt remote-endpoint = <&cvbs_vdac_out>; 37*b5a03eceSChristian Hewitt }; 38*b5a03eceSChristian Hewitt }; 39*b5a03eceSChristian Hewitt }; 40*b5a03eceSChristian Hewitt 41*b5a03eceSChristian Hewitt hdmi-connector { 42*b5a03eceSChristian Hewitt compatible = "hdmi-connector"; 43*b5a03eceSChristian Hewitt type = "a"; 44*b5a03eceSChristian Hewitt 45*b5a03eceSChristian Hewitt port { 46*b5a03eceSChristian Hewitt hdmi_connector_in: endpoint { 47*b5a03eceSChristian Hewitt remote-endpoint = <&hdmi_tx_tmds_out>; 48*b5a03eceSChristian Hewitt }; 49*b5a03eceSChristian Hewitt }; 50*b5a03eceSChristian Hewitt }; 51*b5a03eceSChristian Hewitt 52*b5a03eceSChristian Hewitt memory@0 { 53*b5a03eceSChristian Hewitt device_type = "memory"; 54*b5a03eceSChristian Hewitt reg = <0x0 0x0 0x0 0x40000000>; 55*b5a03eceSChristian Hewitt }; 56*b5a03eceSChristian Hewitt 57*b5a03eceSChristian Hewitt ao_5v: regulator-ao_5v { 58*b5a03eceSChristian Hewitt compatible = "regulator-fixed"; 59*b5a03eceSChristian Hewitt regulator-name = "AO_5V"; 60*b5a03eceSChristian Hewitt regulator-min-microvolt = <5000000>; 61*b5a03eceSChristian Hewitt regulator-max-microvolt = <5000000>; 62*b5a03eceSChristian Hewitt vin-supply = <&dc_in>; 63*b5a03eceSChristian Hewitt regulator-always-on; 64*b5a03eceSChristian Hewitt }; 65*b5a03eceSChristian Hewitt 66*b5a03eceSChristian Hewitt dc_in: regulator-dc_in { 67*b5a03eceSChristian Hewitt compatible = "regulator-fixed"; 68*b5a03eceSChristian Hewitt regulator-name = "DC_IN"; 69*b5a03eceSChristian Hewitt regulator-min-microvolt = <5000000>; 70*b5a03eceSChristian Hewitt regulator-max-microvolt = <5000000>; 71*b5a03eceSChristian Hewitt regulator-always-on; 72*b5a03eceSChristian Hewitt }; 73*b5a03eceSChristian Hewitt 74*b5a03eceSChristian Hewitt emmc_1v8: regulator-emmc_1v8 { 75*b5a03eceSChristian Hewitt compatible = "regulator-fixed"; 76*b5a03eceSChristian Hewitt regulator-name = "EMMC_1V8"; 77*b5a03eceSChristian Hewitt regulator-min-microvolt = <1800000>; 78*b5a03eceSChristian Hewitt regulator-max-microvolt = <1800000>; 79*b5a03eceSChristian Hewitt vin-supply = <&vddao_3v3>; 80*b5a03eceSChristian Hewitt regulator-always-on; 81*b5a03eceSChristian Hewitt }; 82*b5a03eceSChristian Hewitt 83*b5a03eceSChristian Hewitt vddao_3v3: regulator-vddao_3v3 { 84*b5a03eceSChristian Hewitt compatible = "regulator-fixed"; 85*b5a03eceSChristian Hewitt regulator-name = "VDDAO_3V3"; 86*b5a03eceSChristian Hewitt regulator-min-microvolt = <3300000>; 87*b5a03eceSChristian Hewitt regulator-max-microvolt = <3300000>; 88*b5a03eceSChristian Hewitt vin-supply = <&dc_in>; 89*b5a03eceSChristian Hewitt regulator-always-on; 90*b5a03eceSChristian Hewitt }; 91*b5a03eceSChristian Hewitt 92*b5a03eceSChristian Hewitt vddcpu: regulator-vddcpu { 93*b5a03eceSChristian Hewitt compatible = "pwm-regulator"; 94*b5a03eceSChristian Hewitt 95*b5a03eceSChristian Hewitt regulator-name = "VDDCPU"; 96*b5a03eceSChristian Hewitt regulator-min-microvolt = <690000>; 97*b5a03eceSChristian Hewitt regulator-max-microvolt = <1050000>; 98*b5a03eceSChristian Hewitt 99*b5a03eceSChristian Hewitt vin-supply = <&dc_in>; 100*b5a03eceSChristian Hewitt 101*b5a03eceSChristian Hewitt pwms = <&pwm_AO_cd 1 1500 0>; 102*b5a03eceSChristian Hewitt pwm-dutycycle-range = <100 0>; 103*b5a03eceSChristian Hewitt 104*b5a03eceSChristian Hewitt regulator-boot-on; 105*b5a03eceSChristian Hewitt regulator-always-on; 106*b5a03eceSChristian Hewitt }; 107*b5a03eceSChristian Hewitt 108*b5a03eceSChristian Hewitt vddio_ao1v8: regulator-vddio_ao1v8 { 109*b5a03eceSChristian Hewitt compatible = "regulator-fixed"; 110*b5a03eceSChristian Hewitt regulator-name = "VDDIO_AO1V8"; 111*b5a03eceSChristian Hewitt regulator-min-microvolt = <1800000>; 112*b5a03eceSChristian Hewitt regulator-max-microvolt = <1800000>; 113*b5a03eceSChristian Hewitt vin-supply = <&vddao_3v3>; 114*b5a03eceSChristian Hewitt regulator-always-on; 115*b5a03eceSChristian Hewitt }; 116*b5a03eceSChristian Hewitt 117*b5a03eceSChristian Hewitt sdio_pwrseq: sdio-pwrseq { 118*b5a03eceSChristian Hewitt compatible = "mmc-pwrseq-simple"; 119*b5a03eceSChristian Hewitt reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; 120*b5a03eceSChristian Hewitt clocks = <&wifi32k>; 121*b5a03eceSChristian Hewitt clock-names = "ext_clock"; 122*b5a03eceSChristian Hewitt }; 123*b5a03eceSChristian Hewitt 124*b5a03eceSChristian Hewitt wifi32k: wifi32k { 125*b5a03eceSChristian Hewitt compatible = "pwm-clock"; 126*b5a03eceSChristian Hewitt #clock-cells = <0>; 127*b5a03eceSChristian Hewitt clock-frequency = <32768>; 128*b5a03eceSChristian Hewitt pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ 129*b5a03eceSChristian Hewitt }; 130*b5a03eceSChristian Hewitt}; 131*b5a03eceSChristian Hewitt 132*b5a03eceSChristian Hewitt&cec_AO { 133*b5a03eceSChristian Hewitt pinctrl-0 = <&cec_ao_a_h_pins>; 134*b5a03eceSChristian Hewitt pinctrl-names = "default"; 135*b5a03eceSChristian Hewitt status = "disabled"; 136*b5a03eceSChristian Hewitt hdmi-phandle = <&hdmi_tx>; 137*b5a03eceSChristian Hewitt}; 138*b5a03eceSChristian Hewitt 139*b5a03eceSChristian Hewitt&cecb_AO { 140*b5a03eceSChristian Hewitt pinctrl-0 = <&cec_ao_b_h_pins>; 141*b5a03eceSChristian Hewitt pinctrl-names = "default"; 142*b5a03eceSChristian Hewitt status = "okay"; 143*b5a03eceSChristian Hewitt hdmi-phandle = <&hdmi_tx>; 144*b5a03eceSChristian Hewitt}; 145*b5a03eceSChristian Hewitt 146*b5a03eceSChristian Hewitt&cpu0 { 147*b5a03eceSChristian Hewitt cpu-supply = <&vddcpu>; 148*b5a03eceSChristian Hewitt operating-points-v2 = <&cpu_opp_table>; 149*b5a03eceSChristian Hewitt clocks = <&clkc CLKID_CPU_CLK>; 150*b5a03eceSChristian Hewitt clock-latency = <50000>; 151*b5a03eceSChristian Hewitt}; 152*b5a03eceSChristian Hewitt 153*b5a03eceSChristian Hewitt&cpu1 { 154*b5a03eceSChristian Hewitt cpu-supply = <&vddcpu>; 155*b5a03eceSChristian Hewitt operating-points-v2 = <&cpu_opp_table>; 156*b5a03eceSChristian Hewitt clocks = <&clkc CLKID_CPU1_CLK>; 157*b5a03eceSChristian Hewitt clock-latency = <50000>; 158*b5a03eceSChristian Hewitt}; 159*b5a03eceSChristian Hewitt 160*b5a03eceSChristian Hewitt&cpu2 { 161*b5a03eceSChristian Hewitt cpu-supply = <&vddcpu>; 162*b5a03eceSChristian Hewitt operating-points-v2 = <&cpu_opp_table>; 163*b5a03eceSChristian Hewitt clocks = <&clkc CLKID_CPU2_CLK>; 164*b5a03eceSChristian Hewitt clock-latency = <50000>; 165*b5a03eceSChristian Hewitt}; 166*b5a03eceSChristian Hewitt 167*b5a03eceSChristian Hewitt&cpu3 { 168*b5a03eceSChristian Hewitt cpu-supply = <&vddcpu>; 169*b5a03eceSChristian Hewitt operating-points-v2 = <&cpu_opp_table>; 170*b5a03eceSChristian Hewitt clocks = <&clkc CLKID_CPU3_CLK>; 171*b5a03eceSChristian Hewitt clock-latency = <50000>; 172*b5a03eceSChristian Hewitt}; 173*b5a03eceSChristian Hewitt 174*b5a03eceSChristian Hewitt&cvbs_vdac_port { 175*b5a03eceSChristian Hewitt cvbs_vdac_out: endpoint { 176*b5a03eceSChristian Hewitt remote-endpoint = <&cvbs_connector_in>; 177*b5a03eceSChristian Hewitt }; 178*b5a03eceSChristian Hewitt}; 179*b5a03eceSChristian Hewitt 180*b5a03eceSChristian Hewitt&hdmi_tx { 181*b5a03eceSChristian Hewitt status = "okay"; 182*b5a03eceSChristian Hewitt pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>; 183*b5a03eceSChristian Hewitt pinctrl-names = "default"; 184*b5a03eceSChristian Hewitt}; 185*b5a03eceSChristian Hewitt 186*b5a03eceSChristian Hewitt&hdmi_tx_tmds_port { 187*b5a03eceSChristian Hewitt hdmi_tx_tmds_out: endpoint { 188*b5a03eceSChristian Hewitt remote-endpoint = <&hdmi_connector_in>; 189*b5a03eceSChristian Hewitt }; 190*b5a03eceSChristian Hewitt}; 191*b5a03eceSChristian Hewitt 192*b5a03eceSChristian Hewitt&ir { 193*b5a03eceSChristian Hewitt status = "okay"; 194*b5a03eceSChristian Hewitt pinctrl-0 = <&remote_input_ao_pins>; 195*b5a03eceSChristian Hewitt pinctrl-names = "default"; 196*b5a03eceSChristian Hewitt}; 197*b5a03eceSChristian Hewitt 198*b5a03eceSChristian Hewitt&pwm_AO_ab { 199*b5a03eceSChristian Hewitt status = "okay"; 200*b5a03eceSChristian Hewitt pinctrl-0 = <&pwm_ao_a_pins>; 201*b5a03eceSChristian Hewitt pinctrl-names = "default"; 202*b5a03eceSChristian Hewitt clocks = <&xtal>; 203*b5a03eceSChristian Hewitt clock-names = "clkin0"; 204*b5a03eceSChristian Hewitt}; 205*b5a03eceSChristian Hewitt 206*b5a03eceSChristian Hewitt&pwm_AO_cd { 207*b5a03eceSChristian Hewitt pinctrl-0 = <&pwm_ao_d_e_pins>; 208*b5a03eceSChristian Hewitt pinctrl-names = "default"; 209*b5a03eceSChristian Hewitt clocks = <&xtal>; 210*b5a03eceSChristian Hewitt clock-names = "clkin1"; 211*b5a03eceSChristian Hewitt status = "okay"; 212*b5a03eceSChristian Hewitt}; 213*b5a03eceSChristian Hewitt 214*b5a03eceSChristian Hewitt&pwm_ef { 215*b5a03eceSChristian Hewitt status = "okay"; 216*b5a03eceSChristian Hewitt pinctrl-0 = <&pwm_e_pins>; 217*b5a03eceSChristian Hewitt pinctrl-names = "default"; 218*b5a03eceSChristian Hewitt clocks = <&xtal>; 219*b5a03eceSChristian Hewitt clock-names = "clkin0"; 220*b5a03eceSChristian Hewitt}; 221*b5a03eceSChristian Hewitt 222*b5a03eceSChristian Hewitt&saradc { 223*b5a03eceSChristian Hewitt status = "okay"; 224*b5a03eceSChristian Hewitt vref-supply = <&vddio_ao1v8>; 225*b5a03eceSChristian Hewitt}; 226*b5a03eceSChristian Hewitt 227*b5a03eceSChristian Hewitt/* SDIO */ 228*b5a03eceSChristian Hewitt&sd_emmc_a { 229*b5a03eceSChristian Hewitt status = "okay"; 230*b5a03eceSChristian Hewitt pinctrl-0 = <&sdio_pins>; 231*b5a03eceSChristian Hewitt pinctrl-1 = <&sdio_clk_gate_pins>; 232*b5a03eceSChristian Hewitt pinctrl-names = "default", "clk-gate"; 233*b5a03eceSChristian Hewitt #address-cells = <1>; 234*b5a03eceSChristian Hewitt #size-cells = <0>; 235*b5a03eceSChristian Hewitt 236*b5a03eceSChristian Hewitt bus-width = <4>; 237*b5a03eceSChristian Hewitt cap-sd-highspeed; 238*b5a03eceSChristian Hewitt sd-uhs-sdr104; 239*b5a03eceSChristian Hewitt max-frequency = <200000000>; 240*b5a03eceSChristian Hewitt 241*b5a03eceSChristian Hewitt non-removable; 242*b5a03eceSChristian Hewitt disable-wp; 243*b5a03eceSChristian Hewitt 244*b5a03eceSChristian Hewitt /* WiFi firmware requires power to be kept while in suspend */ 245*b5a03eceSChristian Hewitt keep-power-in-suspend; 246*b5a03eceSChristian Hewitt 247*b5a03eceSChristian Hewitt mmc-pwrseq = <&sdio_pwrseq>; 248*b5a03eceSChristian Hewitt 249*b5a03eceSChristian Hewitt vmmc-supply = <&vddao_3v3>; 250*b5a03eceSChristian Hewitt vqmmc-supply = <&vddio_ao1v8>; 251*b5a03eceSChristian Hewitt}; 252*b5a03eceSChristian Hewitt 253*b5a03eceSChristian Hewitt/* SD Card */ 254*b5a03eceSChristian Hewitt&sd_emmc_b { 255*b5a03eceSChristian Hewitt status = "okay"; 256*b5a03eceSChristian Hewitt pinctrl-0 = <&sdcard_c_pins>; 257*b5a03eceSChristian Hewitt pinctrl-1 = <&sdcard_clk_gate_c_pins>; 258*b5a03eceSChristian Hewitt pinctrl-names = "default", "clk-gate"; 259*b5a03eceSChristian Hewitt 260*b5a03eceSChristian Hewitt bus-width = <4>; 261*b5a03eceSChristian Hewitt cap-sd-highspeed; 262*b5a03eceSChristian Hewitt /* CRC errors are observed at 50MHz */ 263*b5a03eceSChristian Hewitt max-frequency = <35000000>; 264*b5a03eceSChristian Hewitt disable-wp; 265*b5a03eceSChristian Hewitt 266*b5a03eceSChristian Hewitt cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; 267*b5a03eceSChristian Hewitt vmmc-supply = <&vddao_3v3>; 268*b5a03eceSChristian Hewitt vqmmc-supply = <&vddao_3v3>; 269*b5a03eceSChristian Hewitt}; 270*b5a03eceSChristian Hewitt 271*b5a03eceSChristian Hewitt/* eMMC */ 272*b5a03eceSChristian Hewitt&sd_emmc_c { 273*b5a03eceSChristian Hewitt status = "okay"; 274*b5a03eceSChristian Hewitt pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>; 275*b5a03eceSChristian Hewitt pinctrl-1 = <&emmc_clk_gate_pins>; 276*b5a03eceSChristian Hewitt pinctrl-names = "default", "clk-gate"; 277*b5a03eceSChristian Hewitt 278*b5a03eceSChristian Hewitt bus-width = <8>; 279*b5a03eceSChristian Hewitt cap-mmc-highspeed; 280*b5a03eceSChristian Hewitt mmc-ddr-1_8v; 281*b5a03eceSChristian Hewitt mmc-hs200-1_8v; 282*b5a03eceSChristian Hewitt max-frequency = <200000000>; 283*b5a03eceSChristian Hewitt non-removable; 284*b5a03eceSChristian Hewitt disable-wp; 285*b5a03eceSChristian Hewitt 286*b5a03eceSChristian Hewitt mmc-pwrseq = <&emmc_pwrseq>; 287*b5a03eceSChristian Hewitt vmmc-supply = <&vddao_3v3>; 288*b5a03eceSChristian Hewitt vqmmc-supply = <&emmc_1v8>; 289*b5a03eceSChristian Hewitt}; 290*b5a03eceSChristian Hewitt 291*b5a03eceSChristian Hewitt&uart_AO { 292*b5a03eceSChristian Hewitt status = "okay"; 293*b5a03eceSChristian Hewitt pinctrl-0 = <&uart_ao_a_pins>; 294*b5a03eceSChristian Hewitt pinctrl-names = "default"; 295*b5a03eceSChristian Hewitt}; 296*b5a03eceSChristian Hewitt 297*b5a03eceSChristian Hewitt&usb { 298*b5a03eceSChristian Hewitt status = "okay"; 299*b5a03eceSChristian Hewitt dr_mode = "otg"; 300*b5a03eceSChristian Hewitt}; 301