1114abfe1SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2cd84aff1SJerome Brunet/* 3cd84aff1SJerome Brunet * Copyright (c) 2017 BayLibre, SAS. 4cd84aff1SJerome Brunet * Author: Neil Armstrong <narmstrong@baylibre.com> 5cd84aff1SJerome Brunet * Author: Jerome Brunet <jbrunet@baylibre.com> 6cd84aff1SJerome Brunet */ 7cd84aff1SJerome Brunet 8cd84aff1SJerome Brunet/dts-v1/; 9cd84aff1SJerome Brunet 10cd84aff1SJerome Brunet#include <dt-bindings/input/input.h> 11a3ff86dcSJerome Brunet#include <dt-bindings/sound/meson-aiu.h> 12cd84aff1SJerome Brunet 1372fb2c85SJerome Brunet#include "meson-gxl-s905x.dtsi" 14cd84aff1SJerome Brunet 15cd84aff1SJerome Brunet/ { 160751c59fSChristian Hewitt compatible = "libretech,aml-s905x-cc", "amlogic,s905x", 170751c59fSChristian Hewitt "amlogic,meson-gxl"; 180751c59fSChristian Hewitt model = "Libre Computer AML-S905X-CC"; 19cd84aff1SJerome Brunet 2072fb2c85SJerome Brunet aliases { 2172fb2c85SJerome Brunet serial0 = &uart_AO; 22f7c36209SJorge Ramirez-Ortiz ethernet0 = ðmac; 2372fb2c85SJerome Brunet }; 2472fb2c85SJerome Brunet 25249ce377SJerome Brunet dio2133: analog-amplifier { 26249ce377SJerome Brunet compatible = "simple-audio-amplifier"; 27249ce377SJerome Brunet sound-name-prefix = "AU2"; 28249ce377SJerome Brunet VCC-supply = <&hdmi_5v>; 29249ce377SJerome Brunet enable-gpios = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>; 30249ce377SJerome Brunet }; 31249ce377SJerome Brunet 3272fb2c85SJerome Brunet chosen { 3372fb2c85SJerome Brunet stdout-path = "serial0:115200n8"; 3472fb2c85SJerome Brunet }; 3572fb2c85SJerome Brunet 36cd84aff1SJerome Brunet cvbs-connector { 37cd84aff1SJerome Brunet compatible = "composite-video-connector"; 38cd84aff1SJerome Brunet 39cd84aff1SJerome Brunet port { 40cd84aff1SJerome Brunet cvbs_connector_in: endpoint { 41cd84aff1SJerome Brunet remote-endpoint = <&cvbs_vdac_out>; 42cd84aff1SJerome Brunet }; 43cd84aff1SJerome Brunet }; 44cd84aff1SJerome Brunet }; 45cd84aff1SJerome Brunet 4672fb2c85SJerome Brunet emmc_pwrseq: emmc-pwrseq { 4772fb2c85SJerome Brunet compatible = "mmc-pwrseq-emmc"; 4872fb2c85SJerome Brunet reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; 4972fb2c85SJerome Brunet }; 5072fb2c85SJerome Brunet 51cd84aff1SJerome Brunet hdmi-connector { 52cd84aff1SJerome Brunet compatible = "hdmi-connector"; 53cd84aff1SJerome Brunet type = "a"; 54cd84aff1SJerome Brunet 55cd84aff1SJerome Brunet port { 56cd84aff1SJerome Brunet hdmi_connector_in: endpoint { 57cd84aff1SJerome Brunet remote-endpoint = <&hdmi_tx_tmds_out>; 58cd84aff1SJerome Brunet }; 59cd84aff1SJerome Brunet }; 60cd84aff1SJerome Brunet }; 61cd84aff1SJerome Brunet 62cd84aff1SJerome Brunet leds { 63cd84aff1SJerome Brunet compatible = "gpio-leds"; 64cd84aff1SJerome Brunet 6508dc0e5dSNeil Armstrong led-system { 66cd84aff1SJerome Brunet label = "librecomputer:system-status"; 67cd84aff1SJerome Brunet gpios = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>; 68cd84aff1SJerome Brunet default-state = "on"; 69cd84aff1SJerome Brunet panic-indicator; 70cd84aff1SJerome Brunet }; 71cd84aff1SJerome Brunet 7208dc0e5dSNeil Armstrong led-blue { 73cd84aff1SJerome Brunet label = "librecomputer:blue"; 74cd84aff1SJerome Brunet gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>; 75cd84aff1SJerome Brunet linux,default-trigger = "heartbeat"; 76cd84aff1SJerome Brunet }; 77cd84aff1SJerome Brunet }; 7872fb2c85SJerome Brunet 7972fb2c85SJerome Brunet memory@0 { 8072fb2c85SJerome Brunet device_type = "memory"; 8172fb2c85SJerome Brunet reg = <0x0 0x0 0x0 0x80000000>; 8272fb2c85SJerome Brunet }; 8372fb2c85SJerome Brunet 84b409f625SNeil Armstrong hdmi_5v: regulator-hdmi-5v { 85b409f625SNeil Armstrong compatible = "regulator-fixed"; 86b409f625SNeil Armstrong 87b409f625SNeil Armstrong regulator-name = "HDMI_5V"; 88b409f625SNeil Armstrong regulator-min-microvolt = <5000000>; 89b409f625SNeil Armstrong regulator-max-microvolt = <5000000>; 90b409f625SNeil Armstrong 91b409f625SNeil Armstrong gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>; 92b409f625SNeil Armstrong enable-active-high; 93b409f625SNeil Armstrong regulator-always-on; 94b409f625SNeil Armstrong }; 95b409f625SNeil Armstrong 9672fb2c85SJerome Brunet vcc_3v3: regulator-vcc_3v3 { 9772fb2c85SJerome Brunet compatible = "regulator-fixed"; 9872fb2c85SJerome Brunet regulator-name = "VCC_3V3"; 9972fb2c85SJerome Brunet regulator-min-microvolt = <3300000>; 10072fb2c85SJerome Brunet regulator-max-microvolt = <3300000>; 10172fb2c85SJerome Brunet }; 10272fb2c85SJerome Brunet 10372fb2c85SJerome Brunet vcc_card: regulator-vcc-card { 10472fb2c85SJerome Brunet compatible = "regulator-gpio"; 10572fb2c85SJerome Brunet 10672fb2c85SJerome Brunet regulator-name = "VCC_CARD"; 10772fb2c85SJerome Brunet regulator-min-microvolt = <1800000>; 10872fb2c85SJerome Brunet regulator-max-microvolt = <3300000>; 10972fb2c85SJerome Brunet 11072fb2c85SJerome Brunet gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>; 11172fb2c85SJerome Brunet gpios-states = <0>; 11272fb2c85SJerome Brunet 11372fb2c85SJerome Brunet states = <3300000 0>, 11472fb2c85SJerome Brunet <1800000 1>; 1158a5085c4SJerome Brunet 1168a5085c4SJerome Brunet regulator-settling-time-up-us = <200>; 1178a5085c4SJerome Brunet regulator-settling-time-down-us = <50000>; 11872fb2c85SJerome Brunet }; 11972fb2c85SJerome Brunet 120dd47e4a3SJerome Brunet vddio_ao18: regulator-vddio_ao18 { 121dd47e4a3SJerome Brunet compatible = "regulator-fixed"; 122dd47e4a3SJerome Brunet regulator-name = "VDDIO_AO18"; 123dd47e4a3SJerome Brunet regulator-min-microvolt = <1800000>; 124dd47e4a3SJerome Brunet regulator-max-microvolt = <1800000>; 125dd47e4a3SJerome Brunet }; 126dd47e4a3SJerome Brunet 127ffab3fd6SJerome Brunet /* This is provided by LDOs on the eMMC daugther card */ 12872fb2c85SJerome Brunet vddio_boot: regulator-vddio_boot { 12972fb2c85SJerome Brunet compatible = "regulator-fixed"; 13072fb2c85SJerome Brunet regulator-name = "VDDIO_BOOT"; 131ffab3fd6SJerome Brunet regulator-min-microvolt = <1800000>; 132ffab3fd6SJerome Brunet regulator-max-microvolt = <1800000>; 133ffab3fd6SJerome Brunet vin-supply = <&vcc_3v3>; 13472fb2c85SJerome Brunet }; 135a3ff86dcSJerome Brunet 136a3ff86dcSJerome Brunet sound { 137a3ff86dcSJerome Brunet compatible = "amlogic,gx-sound-card"; 138a3ff86dcSJerome Brunet model = "GXL-LIBRETECH-S905X-CC"; 139249ce377SJerome Brunet audio-aux-devs = <&dio2133>; 140249ce377SJerome Brunet audio-widgets = "Line", "Lineout"; 141249ce377SJerome Brunet audio-routing = "AU2 INL", "ACODEC LOLN", 142249ce377SJerome Brunet "AU2 INR", "ACODEC LORN", 143249ce377SJerome Brunet "Lineout", "AU2 OUTL", 144249ce377SJerome Brunet "Lineout", "AU2 OUTR"; 145a3ff86dcSJerome Brunet assigned-clocks = <&clkc CLKID_MPLL0>, 146a3ff86dcSJerome Brunet <&clkc CLKID_MPLL1>, 147a3ff86dcSJerome Brunet <&clkc CLKID_MPLL2>; 148a3ff86dcSJerome Brunet assigned-clock-parents = <0>, <0>, <0>; 149a3ff86dcSJerome Brunet assigned-clock-rates = <294912000>, 150a3ff86dcSJerome Brunet <270950400>, 151a3ff86dcSJerome Brunet <393216000>; 152a3ff86dcSJerome Brunet status = "okay"; 153a3ff86dcSJerome Brunet 154a3ff86dcSJerome Brunet dai-link-0 { 155a3ff86dcSJerome Brunet sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>; 156a3ff86dcSJerome Brunet }; 157a3ff86dcSJerome Brunet 158a3ff86dcSJerome Brunet dai-link-1 { 159a3ff86dcSJerome Brunet sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>; 160a3ff86dcSJerome Brunet dai-format = "i2s"; 161a3ff86dcSJerome Brunet mclk-fs = <256>; 162a3ff86dcSJerome Brunet 163a3ff86dcSJerome Brunet codec-0 { 164a3ff86dcSJerome Brunet sound-dai = <&aiu AIU_HDMI CTRL_I2S>; 165a3ff86dcSJerome Brunet }; 166249ce377SJerome Brunet 167249ce377SJerome Brunet codec-1 { 168249ce377SJerome Brunet sound-dai = <&aiu AIU_ACODEC CTRL_I2S>; 169249ce377SJerome Brunet }; 170a3ff86dcSJerome Brunet }; 171a3ff86dcSJerome Brunet 172a3ff86dcSJerome Brunet dai-link-2 { 173a3ff86dcSJerome Brunet sound-dai = <&aiu AIU_HDMI CTRL_OUT>; 174a3ff86dcSJerome Brunet 175a3ff86dcSJerome Brunet codec-0 { 176a3ff86dcSJerome Brunet sound-dai = <&hdmi_tx>; 177a3ff86dcSJerome Brunet }; 178a3ff86dcSJerome Brunet }; 179249ce377SJerome Brunet 180249ce377SJerome Brunet dai-link-3 { 181249ce377SJerome Brunet sound-dai = <&aiu AIU_ACODEC CTRL_OUT>; 182249ce377SJerome Brunet 183249ce377SJerome Brunet codec-0 { 184249ce377SJerome Brunet sound-dai = <&acodec>; 185a3ff86dcSJerome Brunet }; 186a3ff86dcSJerome Brunet }; 187249ce377SJerome Brunet }; 188249ce377SJerome Brunet}; 189249ce377SJerome Brunet 190249ce377SJerome Brunet&acodec { 191249ce377SJerome Brunet AVDD-supply = <&vddio_ao18>; 192249ce377SJerome Brunet status = "okay"; 193249ce377SJerome Brunet}; 194a3ff86dcSJerome Brunet 195a3ff86dcSJerome Brunet&aiu { 196a3ff86dcSJerome Brunet status = "okay"; 197cd84aff1SJerome Brunet}; 198cd84aff1SJerome Brunet 199b16c71c9SNeil Armstrong&cec_AO { 200b16c71c9SNeil Armstrong status = "okay"; 201b16c71c9SNeil Armstrong pinctrl-0 = <&ao_cec_pins>; 202b16c71c9SNeil Armstrong pinctrl-names = "default"; 203b16c71c9SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 204b16c71c9SNeil Armstrong}; 205b16c71c9SNeil Armstrong 206cd84aff1SJerome Brunet&cvbs_vdac_port { 207cd84aff1SJerome Brunet cvbs_vdac_out: endpoint { 208cd84aff1SJerome Brunet remote-endpoint = <&cvbs_connector_in>; 209cd84aff1SJerome Brunet }; 210cd84aff1SJerome Brunet}; 211cd84aff1SJerome Brunet 21272fb2c85SJerome Brunetðmac { 21372fb2c85SJerome Brunet status = "okay"; 21472fb2c85SJerome Brunet}; 21572fb2c85SJerome Brunet 216dac16187SJerome Brunet&internal_phy { 217dac16187SJerome Brunet pinctrl-0 = <ð_link_led_pins>, <ð_act_led_pins>; 218dac16187SJerome Brunet pinctrl-names = "default"; 219dac16187SJerome Brunet}; 220dac16187SJerome Brunet 22172fb2c85SJerome Brunet&ir { 22272fb2c85SJerome Brunet status = "okay"; 22372fb2c85SJerome Brunet pinctrl-0 = <&remote_input_ao_pins>; 22472fb2c85SJerome Brunet pinctrl-names = "default"; 22572fb2c85SJerome Brunet}; 22672fb2c85SJerome Brunet 227cd84aff1SJerome Brunet&hdmi_tx { 228cd84aff1SJerome Brunet status = "okay"; 229cd84aff1SJerome Brunet pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; 230cd84aff1SJerome Brunet pinctrl-names = "default"; 231e1f2163dSNeil Armstrong hdmi-supply = <&hdmi_5v>; 232cd84aff1SJerome Brunet}; 233cd84aff1SJerome Brunet 234cd84aff1SJerome Brunet&hdmi_tx_tmds_port { 235cd84aff1SJerome Brunet hdmi_tx_tmds_out: endpoint { 236cd84aff1SJerome Brunet remote-endpoint = <&hdmi_connector_in>; 237cd84aff1SJerome Brunet }; 238cd84aff1SJerome Brunet}; 239cd84aff1SJerome Brunet 24011fa9774SNeil Armstrong&gpio_ao { 24147884c5cSNeil Armstrong gpio-line-names = "UART TX", 24247884c5cSNeil Armstrong "UART RX", 24347884c5cSNeil Armstrong "Blue LED", 24447884c5cSNeil Armstrong "SDCard Voltage Switch", 24547884c5cSNeil Armstrong "7J1 Header Pin5", 24647884c5cSNeil Armstrong "7J1 Header Pin3", 24747884c5cSNeil Armstrong "7J1 Header Pin12", 24847884c5cSNeil Armstrong "IR In", 24947884c5cSNeil Armstrong "9J3 Switch HDMI CEC/7J1 Header Pin11", 2501d70eaadSJerome Brunet "7J1 Header Pin13", 2511d70eaadSJerome Brunet /* GPIO_TEST_N */ 2521d70eaadSJerome Brunet "7J1 Header Pin15"; 25347884c5cSNeil Armstrong}; 25447884c5cSNeil Armstrong 25511fa9774SNeil Armstrong&gpio { 25647884c5cSNeil Armstrong gpio-line-names = /* Bank GPIOZ */ 25747884c5cSNeil Armstrong "", "", "", "", "", "", "", 25847884c5cSNeil Armstrong "", "", "", "", "", "", "", 25947884c5cSNeil Armstrong "Eth Link LED", "Eth Activity LED", 26047884c5cSNeil Armstrong /* Bank GPIOH */ 26147884c5cSNeil Armstrong "HDMI HPD", "HDMI SDA", "HDMI SCL", 26247884c5cSNeil Armstrong "HDMI_5V_EN", "9J1 Header Pin2", 26347884c5cSNeil Armstrong "Analog Audio Mute", 26447884c5cSNeil Armstrong "2J3 Header Pin6", 26547884c5cSNeil Armstrong "2J3 Header Pin5", 26647884c5cSNeil Armstrong "2J3 Header Pin4", 26747884c5cSNeil Armstrong "2J3 Header Pin3", 26847884c5cSNeil Armstrong /* Bank BOOT */ 26947884c5cSNeil Armstrong "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3", 27047884c5cSNeil Armstrong "eMMC D4", "eMMC D5", "eMMC D6", "eMMC D7", 27147884c5cSNeil Armstrong "eMMC Clk", "eMMC Reset", "eMMC CMD", 27247884c5cSNeil Armstrong "ALT BOOT MODE", "", "", "", "eMMC Data Strobe", 27347884c5cSNeil Armstrong /* Bank CARD */ 27447884c5cSNeil Armstrong "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD", 27547884c5cSNeil Armstrong "SDCard D3", "SDCard D2", "SDCard Det", 27647884c5cSNeil Armstrong /* Bank GPIODV */ 27747884c5cSNeil Armstrong "", "", "", "", "", "", "", "", "", "", "", "", 27847884c5cSNeil Armstrong "", "", "", "", "", "", "", "", "", "", "", "", 27947884c5cSNeil Armstrong "Green LED", "VCCK Enable", 28047884c5cSNeil Armstrong "7J1 Header Pin27", "7J1 Header Pin28", 28147884c5cSNeil Armstrong "VCCK Regulator", "VDDEE Regulator", 28247884c5cSNeil Armstrong /* Bank GPIOX */ 28347884c5cSNeil Armstrong "7J1 Header Pin22", "7J1 Header Pin26", 28447884c5cSNeil Armstrong "7J1 Header Pin36", "7J1 Header Pin38", 28547884c5cSNeil Armstrong "7J1 Header Pin40", "7J1 Header Pin37", 28647884c5cSNeil Armstrong "7J1 Header Pin33", "7J1 Header Pin35", 28747884c5cSNeil Armstrong "7J1 Header Pin19", "7J1 Header Pin21", 28847884c5cSNeil Armstrong "7J1 Header Pin24", "7J1 Header Pin23", 28947884c5cSNeil Armstrong "7J1 Header Pin8", "7J1 Header Pin10", 29047884c5cSNeil Armstrong "7J1 Header Pin16", "7J1 Header Pin18", 29147884c5cSNeil Armstrong "7J1 Header Pin32", "7J1 Header Pin29", 29247884c5cSNeil Armstrong "7J1 Header Pin31", 29347884c5cSNeil Armstrong /* Bank GPIOCLK */ 2941d70eaadSJerome Brunet "7J1 Header Pin7", ""; 29547884c5cSNeil Armstrong}; 29647884c5cSNeil Armstrong 297dd47e4a3SJerome Brunet&saradc { 298dd47e4a3SJerome Brunet status = "okay"; 299dd47e4a3SJerome Brunet vref-supply = <&vddio_ao18>; 300dd47e4a3SJerome Brunet}; 301dd47e4a3SJerome Brunet 30272fb2c85SJerome Brunet/* SD card */ 30372fb2c85SJerome Brunet&sd_emmc_b { 30472fb2c85SJerome Brunet status = "okay"; 30572fb2c85SJerome Brunet pinctrl-0 = <&sdcard_pins>; 30667e7607fSJerome Brunet pinctrl-1 = <&sdcard_clk_gate_pins>; 30767e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 308cd84aff1SJerome Brunet 30972fb2c85SJerome Brunet bus-width = <4>; 31072fb2c85SJerome Brunet cap-sd-highspeed; 311adc52bf7SJerome Brunet max-frequency = <50000000>; 31272fb2c85SJerome Brunet disable-wp; 31372fb2c85SJerome Brunet 314f29200c8SLoys Ollivier cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; 31572fb2c85SJerome Brunet 31672fb2c85SJerome Brunet vmmc-supply = <&vcc_3v3>; 31772fb2c85SJerome Brunet vqmmc-supply = <&vcc_card>; 318cd84aff1SJerome Brunet}; 319cd84aff1SJerome Brunet 32072fb2c85SJerome Brunet/* eMMC */ 32172fb2c85SJerome Brunet&sd_emmc_c { 32272fb2c85SJerome Brunet status = "okay"; 323ab36be66SNeil Armstrong pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; 32467e7607fSJerome Brunet pinctrl-1 = <&emmc_clk_gate_pins>; 32567e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 32672fb2c85SJerome Brunet 32772fb2c85SJerome Brunet bus-width = <8>; 32872fb2c85SJerome Brunet cap-mmc-highspeed; 329ffab3fd6SJerome Brunet mmc-ddr-1_8v; 330ffab3fd6SJerome Brunet mmc-hs200-1_8v; 331ffab3fd6SJerome Brunet max-frequency = <200000000>; 33272fb2c85SJerome Brunet disable-wp; 33372fb2c85SJerome Brunet 33472fb2c85SJerome Brunet mmc-pwrseq = <&emmc_pwrseq>; 33572fb2c85SJerome Brunet vmmc-supply = <&vcc_3v3>; 33672fb2c85SJerome Brunet vqmmc-supply = <&vddio_boot>; 337cd84aff1SJerome Brunet}; 338cd84aff1SJerome Brunet 33972fb2c85SJerome Brunet&uart_AO { 34072fb2c85SJerome Brunet status = "okay"; 34172fb2c85SJerome Brunet pinctrl-0 = <&uart_ao_a_pins>; 34272fb2c85SJerome Brunet pinctrl-names = "default"; 343cd84aff1SJerome Brunet}; 344b83687f3SMartin Blumenstingl 3452f9139c2SMartin Blumenstingl&usb { 346b83687f3SMartin Blumenstingl status = "okay"; 3472f9139c2SMartin Blumenstingl dr_mode = "host"; 348b83687f3SMartin Blumenstingl}; 349b83687f3SMartin Blumenstingl 350b83687f3SMartin Blumenstingl&usb2_phy0 { 351b83687f3SMartin Blumenstingl /* 352b83687f3SMartin Blumenstingl * even though the schematics don't show it: 353b83687f3SMartin Blumenstingl * HDMI_5V is also used as supply for the USB VBUS. 354b83687f3SMartin Blumenstingl */ 355b83687f3SMartin Blumenstingl phy-supply = <&hdmi_5v>; 356b83687f3SMartin Blumenstingl}; 357