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"; 138*933b80edSChristian Hewitt model = "LIBRETECH-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 153a3ff86dcSJerome Brunet dai-link-0 { 154a3ff86dcSJerome Brunet sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>; 155a3ff86dcSJerome Brunet }; 156a3ff86dcSJerome Brunet 157a3ff86dcSJerome Brunet dai-link-1 { 158a3ff86dcSJerome Brunet sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>; 159a3ff86dcSJerome Brunet dai-format = "i2s"; 160a3ff86dcSJerome Brunet mclk-fs = <256>; 161a3ff86dcSJerome Brunet 162a3ff86dcSJerome Brunet codec-0 { 163a3ff86dcSJerome Brunet sound-dai = <&aiu AIU_HDMI CTRL_I2S>; 164a3ff86dcSJerome Brunet }; 165249ce377SJerome Brunet 166249ce377SJerome Brunet codec-1 { 167249ce377SJerome Brunet sound-dai = <&aiu AIU_ACODEC CTRL_I2S>; 168249ce377SJerome Brunet }; 169a3ff86dcSJerome Brunet }; 170a3ff86dcSJerome Brunet 171a3ff86dcSJerome Brunet dai-link-2 { 172a3ff86dcSJerome Brunet sound-dai = <&aiu AIU_HDMI CTRL_OUT>; 173a3ff86dcSJerome Brunet 174a3ff86dcSJerome Brunet codec-0 { 175a3ff86dcSJerome Brunet sound-dai = <&hdmi_tx>; 176a3ff86dcSJerome Brunet }; 177a3ff86dcSJerome Brunet }; 178249ce377SJerome Brunet 179249ce377SJerome Brunet dai-link-3 { 180249ce377SJerome Brunet sound-dai = <&aiu AIU_ACODEC CTRL_OUT>; 181249ce377SJerome Brunet 182249ce377SJerome Brunet codec-0 { 183249ce377SJerome Brunet sound-dai = <&acodec>; 184a3ff86dcSJerome Brunet }; 185a3ff86dcSJerome Brunet }; 186249ce377SJerome Brunet }; 187249ce377SJerome Brunet}; 188249ce377SJerome Brunet 189249ce377SJerome Brunet&acodec { 190249ce377SJerome Brunet AVDD-supply = <&vddio_ao18>; 191249ce377SJerome Brunet status = "okay"; 192249ce377SJerome Brunet}; 193a3ff86dcSJerome Brunet 194a3ff86dcSJerome Brunet&aiu { 195a3ff86dcSJerome Brunet status = "okay"; 196cd84aff1SJerome Brunet}; 197cd84aff1SJerome Brunet 198b16c71c9SNeil Armstrong&cec_AO { 199b16c71c9SNeil Armstrong status = "okay"; 200b16c71c9SNeil Armstrong pinctrl-0 = <&ao_cec_pins>; 201b16c71c9SNeil Armstrong pinctrl-names = "default"; 202b16c71c9SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 203b16c71c9SNeil Armstrong}; 204b16c71c9SNeil Armstrong 205cd84aff1SJerome Brunet&cvbs_vdac_port { 206cd84aff1SJerome Brunet cvbs_vdac_out: endpoint { 207cd84aff1SJerome Brunet remote-endpoint = <&cvbs_connector_in>; 208cd84aff1SJerome Brunet }; 209cd84aff1SJerome Brunet}; 210cd84aff1SJerome Brunet 21172fb2c85SJerome Brunetðmac { 21272fb2c85SJerome Brunet status = "okay"; 21372fb2c85SJerome Brunet}; 21472fb2c85SJerome Brunet 215dac16187SJerome Brunet&internal_phy { 216dac16187SJerome Brunet pinctrl-0 = <ð_link_led_pins>, <ð_act_led_pins>; 217dac16187SJerome Brunet pinctrl-names = "default"; 218dac16187SJerome Brunet}; 219dac16187SJerome Brunet 22072fb2c85SJerome Brunet&ir { 22172fb2c85SJerome Brunet status = "okay"; 22272fb2c85SJerome Brunet pinctrl-0 = <&remote_input_ao_pins>; 22372fb2c85SJerome Brunet pinctrl-names = "default"; 22472fb2c85SJerome Brunet}; 22572fb2c85SJerome Brunet 226cd84aff1SJerome Brunet&hdmi_tx { 227cd84aff1SJerome Brunet status = "okay"; 228cd84aff1SJerome Brunet pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; 229cd84aff1SJerome Brunet pinctrl-names = "default"; 230e1f2163dSNeil Armstrong hdmi-supply = <&hdmi_5v>; 231cd84aff1SJerome Brunet}; 232cd84aff1SJerome Brunet 233cd84aff1SJerome Brunet&hdmi_tx_tmds_port { 234cd84aff1SJerome Brunet hdmi_tx_tmds_out: endpoint { 235cd84aff1SJerome Brunet remote-endpoint = <&hdmi_connector_in>; 236cd84aff1SJerome Brunet }; 237cd84aff1SJerome Brunet}; 238cd84aff1SJerome Brunet 23911fa9774SNeil Armstrong&gpio_ao { 24047884c5cSNeil Armstrong gpio-line-names = "UART TX", 24147884c5cSNeil Armstrong "UART RX", 24247884c5cSNeil Armstrong "Blue LED", 24347884c5cSNeil Armstrong "SDCard Voltage Switch", 24447884c5cSNeil Armstrong "7J1 Header Pin5", 24547884c5cSNeil Armstrong "7J1 Header Pin3", 24647884c5cSNeil Armstrong "7J1 Header Pin12", 24747884c5cSNeil Armstrong "IR In", 24847884c5cSNeil Armstrong "9J3 Switch HDMI CEC/7J1 Header Pin11", 2491d70eaadSJerome Brunet "7J1 Header Pin13", 2501d70eaadSJerome Brunet /* GPIO_TEST_N */ 2511d70eaadSJerome Brunet "7J1 Header Pin15"; 25247884c5cSNeil Armstrong}; 25347884c5cSNeil Armstrong 25411fa9774SNeil Armstrong&gpio { 25547884c5cSNeil Armstrong gpio-line-names = /* Bank GPIOZ */ 25647884c5cSNeil Armstrong "", "", "", "", "", "", "", 25747884c5cSNeil Armstrong "", "", "", "", "", "", "", 25847884c5cSNeil Armstrong "Eth Link LED", "Eth Activity LED", 25947884c5cSNeil Armstrong /* Bank GPIOH */ 26047884c5cSNeil Armstrong "HDMI HPD", "HDMI SDA", "HDMI SCL", 26147884c5cSNeil Armstrong "HDMI_5V_EN", "9J1 Header Pin2", 26247884c5cSNeil Armstrong "Analog Audio Mute", 26347884c5cSNeil Armstrong "2J3 Header Pin6", 26447884c5cSNeil Armstrong "2J3 Header Pin5", 26547884c5cSNeil Armstrong "2J3 Header Pin4", 26647884c5cSNeil Armstrong "2J3 Header Pin3", 26747884c5cSNeil Armstrong /* Bank BOOT */ 26847884c5cSNeil Armstrong "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3", 26947884c5cSNeil Armstrong "eMMC D4", "eMMC D5", "eMMC D6", "eMMC D7", 27047884c5cSNeil Armstrong "eMMC Clk", "eMMC Reset", "eMMC CMD", 27147884c5cSNeil Armstrong "ALT BOOT MODE", "", "", "", "eMMC Data Strobe", 27247884c5cSNeil Armstrong /* Bank CARD */ 27347884c5cSNeil Armstrong "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD", 27447884c5cSNeil Armstrong "SDCard D3", "SDCard D2", "SDCard Det", 27547884c5cSNeil Armstrong /* Bank GPIODV */ 27647884c5cSNeil Armstrong "", "", "", "", "", "", "", "", "", "", "", "", 27747884c5cSNeil Armstrong "", "", "", "", "", "", "", "", "", "", "", "", 27847884c5cSNeil Armstrong "Green LED", "VCCK Enable", 27947884c5cSNeil Armstrong "7J1 Header Pin27", "7J1 Header Pin28", 28047884c5cSNeil Armstrong "VCCK Regulator", "VDDEE Regulator", 28147884c5cSNeil Armstrong /* Bank GPIOX */ 28247884c5cSNeil Armstrong "7J1 Header Pin22", "7J1 Header Pin26", 28347884c5cSNeil Armstrong "7J1 Header Pin36", "7J1 Header Pin38", 28447884c5cSNeil Armstrong "7J1 Header Pin40", "7J1 Header Pin37", 28547884c5cSNeil Armstrong "7J1 Header Pin33", "7J1 Header Pin35", 28647884c5cSNeil Armstrong "7J1 Header Pin19", "7J1 Header Pin21", 28747884c5cSNeil Armstrong "7J1 Header Pin24", "7J1 Header Pin23", 28847884c5cSNeil Armstrong "7J1 Header Pin8", "7J1 Header Pin10", 28947884c5cSNeil Armstrong "7J1 Header Pin16", "7J1 Header Pin18", 29047884c5cSNeil Armstrong "7J1 Header Pin32", "7J1 Header Pin29", 29147884c5cSNeil Armstrong "7J1 Header Pin31", 29247884c5cSNeil Armstrong /* Bank GPIOCLK */ 2931d70eaadSJerome Brunet "7J1 Header Pin7", ""; 29447884c5cSNeil Armstrong}; 29547884c5cSNeil Armstrong 296dd47e4a3SJerome Brunet&saradc { 297dd47e4a3SJerome Brunet status = "okay"; 298dd47e4a3SJerome Brunet vref-supply = <&vddio_ao18>; 299dd47e4a3SJerome Brunet}; 300dd47e4a3SJerome Brunet 30172fb2c85SJerome Brunet/* SD card */ 30272fb2c85SJerome Brunet&sd_emmc_b { 30372fb2c85SJerome Brunet status = "okay"; 30472fb2c85SJerome Brunet pinctrl-0 = <&sdcard_pins>; 30567e7607fSJerome Brunet pinctrl-1 = <&sdcard_clk_gate_pins>; 30667e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 307cd84aff1SJerome Brunet 30872fb2c85SJerome Brunet bus-width = <4>; 30972fb2c85SJerome Brunet cap-sd-highspeed; 310adc52bf7SJerome Brunet max-frequency = <50000000>; 31172fb2c85SJerome Brunet disable-wp; 31272fb2c85SJerome Brunet 313f29200c8SLoys Ollivier cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; 31472fb2c85SJerome Brunet 31572fb2c85SJerome Brunet vmmc-supply = <&vcc_3v3>; 31672fb2c85SJerome Brunet vqmmc-supply = <&vcc_card>; 317cd84aff1SJerome Brunet}; 318cd84aff1SJerome Brunet 31972fb2c85SJerome Brunet/* eMMC */ 32072fb2c85SJerome Brunet&sd_emmc_c { 32172fb2c85SJerome Brunet status = "okay"; 322ab36be66SNeil Armstrong pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; 32367e7607fSJerome Brunet pinctrl-1 = <&emmc_clk_gate_pins>; 32467e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 32572fb2c85SJerome Brunet 32672fb2c85SJerome Brunet bus-width = <8>; 32772fb2c85SJerome Brunet cap-mmc-highspeed; 328ffab3fd6SJerome Brunet mmc-ddr-1_8v; 329ffab3fd6SJerome Brunet mmc-hs200-1_8v; 330ffab3fd6SJerome Brunet max-frequency = <200000000>; 33172fb2c85SJerome Brunet disable-wp; 33272fb2c85SJerome Brunet 33372fb2c85SJerome Brunet mmc-pwrseq = <&emmc_pwrseq>; 33472fb2c85SJerome Brunet vmmc-supply = <&vcc_3v3>; 33572fb2c85SJerome Brunet vqmmc-supply = <&vddio_boot>; 336cd84aff1SJerome Brunet}; 337cd84aff1SJerome Brunet 33872fb2c85SJerome Brunet&uart_AO { 33972fb2c85SJerome Brunet status = "okay"; 34072fb2c85SJerome Brunet pinctrl-0 = <&uart_ao_a_pins>; 34172fb2c85SJerome Brunet pinctrl-names = "default"; 342cd84aff1SJerome Brunet}; 343b83687f3SMartin Blumenstingl 3442f9139c2SMartin Blumenstingl&usb { 345b83687f3SMartin Blumenstingl status = "okay"; 3462f9139c2SMartin Blumenstingl dr_mode = "host"; 347b83687f3SMartin Blumenstingl}; 348b83687f3SMartin Blumenstingl 349b83687f3SMartin Blumenstingl&usb2_phy0 { 350b83687f3SMartin Blumenstingl /* 351b83687f3SMartin Blumenstingl * even though the schematics don't show it: 352b83687f3SMartin Blumenstingl * HDMI_5V is also used as supply for the USB VBUS. 353b83687f3SMartin Blumenstingl */ 354b83687f3SMartin Blumenstingl phy-supply = <&hdmi_5v>; 355b83687f3SMartin Blumenstingl}; 356