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>
11cd84aff1SJerome Brunet
1272fb2c85SJerome Brunet#include "meson-gxl-s905x.dtsi"
13cd84aff1SJerome Brunet
14cd84aff1SJerome Brunet/ {
150751c59fSChristian Hewitt	compatible = "libretech,aml-s905x-cc", "amlogic,s905x",
160751c59fSChristian Hewitt		     "amlogic,meson-gxl";
170751c59fSChristian Hewitt	model = "Libre Computer AML-S905X-CC";
18cd84aff1SJerome Brunet
1972fb2c85SJerome Brunet	aliases {
2072fb2c85SJerome Brunet		serial0 = &uart_AO;
21f7c36209SJorge Ramirez-Ortiz		ethernet0 = &ethmac;
2272fb2c85SJerome Brunet	};
2372fb2c85SJerome Brunet
2472fb2c85SJerome Brunet	chosen {
2572fb2c85SJerome Brunet		stdout-path = "serial0:115200n8";
2672fb2c85SJerome Brunet	};
2772fb2c85SJerome Brunet
28cd84aff1SJerome Brunet	cvbs-connector {
29cd84aff1SJerome Brunet		compatible = "composite-video-connector";
30cd84aff1SJerome Brunet
31cd84aff1SJerome Brunet		port {
32cd84aff1SJerome Brunet			cvbs_connector_in: endpoint {
33cd84aff1SJerome Brunet				remote-endpoint = <&cvbs_vdac_out>;
34cd84aff1SJerome Brunet			};
35cd84aff1SJerome Brunet		};
36cd84aff1SJerome Brunet	};
37cd84aff1SJerome Brunet
3872fb2c85SJerome Brunet	emmc_pwrseq: emmc-pwrseq {
3972fb2c85SJerome Brunet		compatible = "mmc-pwrseq-emmc";
4072fb2c85SJerome Brunet		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
4172fb2c85SJerome Brunet	};
4272fb2c85SJerome Brunet
43cd84aff1SJerome Brunet	hdmi-connector {
44cd84aff1SJerome Brunet		compatible = "hdmi-connector";
45cd84aff1SJerome Brunet		type = "a";
46cd84aff1SJerome Brunet
47cd84aff1SJerome Brunet		port {
48cd84aff1SJerome Brunet			hdmi_connector_in: endpoint {
49cd84aff1SJerome Brunet				remote-endpoint = <&hdmi_tx_tmds_out>;
50cd84aff1SJerome Brunet			};
51cd84aff1SJerome Brunet		};
52cd84aff1SJerome Brunet	};
53cd84aff1SJerome Brunet
54cd84aff1SJerome Brunet	leds {
55cd84aff1SJerome Brunet		compatible = "gpio-leds";
56cd84aff1SJerome Brunet
57cd84aff1SJerome Brunet		system {
58cd84aff1SJerome Brunet			label = "librecomputer:system-status";
59cd84aff1SJerome Brunet			gpios = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>;
60cd84aff1SJerome Brunet			default-state = "on";
61cd84aff1SJerome Brunet			panic-indicator;
62cd84aff1SJerome Brunet		};
63cd84aff1SJerome Brunet
64cd84aff1SJerome Brunet		blue {
65cd84aff1SJerome Brunet			label = "librecomputer:blue";
66cd84aff1SJerome Brunet			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
67cd84aff1SJerome Brunet			linux,default-trigger = "heartbeat";
68cd84aff1SJerome Brunet		};
69cd84aff1SJerome Brunet	};
7072fb2c85SJerome Brunet
7172fb2c85SJerome Brunet	memory@0 {
7272fb2c85SJerome Brunet		device_type = "memory";
7372fb2c85SJerome Brunet		reg = <0x0 0x0 0x0 0x80000000>;
7472fb2c85SJerome Brunet	};
7572fb2c85SJerome Brunet
76b409f625SNeil Armstrong	hdmi_5v: regulator-hdmi-5v {
77b409f625SNeil Armstrong		compatible = "regulator-fixed";
78b409f625SNeil Armstrong
79b409f625SNeil Armstrong		regulator-name = "HDMI_5V";
80b409f625SNeil Armstrong		regulator-min-microvolt = <5000000>;
81b409f625SNeil Armstrong		regulator-max-microvolt = <5000000>;
82b409f625SNeil Armstrong
83b409f625SNeil Armstrong		gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>;
84b409f625SNeil Armstrong		enable-active-high;
85b409f625SNeil Armstrong		regulator-always-on;
86b409f625SNeil Armstrong	};
87b409f625SNeil Armstrong
8872fb2c85SJerome Brunet	vcc_3v3: regulator-vcc_3v3 {
8972fb2c85SJerome Brunet		compatible = "regulator-fixed";
9072fb2c85SJerome Brunet		regulator-name = "VCC_3V3";
9172fb2c85SJerome Brunet		regulator-min-microvolt = <3300000>;
9272fb2c85SJerome Brunet		regulator-max-microvolt = <3300000>;
9372fb2c85SJerome Brunet	};
9472fb2c85SJerome Brunet
9572fb2c85SJerome Brunet	vcc_card: regulator-vcc-card {
9672fb2c85SJerome Brunet		compatible = "regulator-gpio";
9772fb2c85SJerome Brunet
9872fb2c85SJerome Brunet		regulator-name = "VCC_CARD";
9972fb2c85SJerome Brunet		regulator-min-microvolt = <1800000>;
10072fb2c85SJerome Brunet		regulator-max-microvolt = <3300000>;
10172fb2c85SJerome Brunet
10272fb2c85SJerome Brunet		gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
10372fb2c85SJerome Brunet		gpios-states = <0>;
10472fb2c85SJerome Brunet
10572fb2c85SJerome Brunet		states = <3300000 0>,
10672fb2c85SJerome Brunet			 <1800000 1>;
1078a5085c4SJerome Brunet
1088a5085c4SJerome Brunet		regulator-settling-time-up-us = <200>;
1098a5085c4SJerome Brunet		regulator-settling-time-down-us = <50000>;
11072fb2c85SJerome Brunet	};
11172fb2c85SJerome Brunet
112dd47e4a3SJerome Brunet	vddio_ao18: regulator-vddio_ao18 {
113dd47e4a3SJerome Brunet		compatible = "regulator-fixed";
114dd47e4a3SJerome Brunet		regulator-name = "VDDIO_AO18";
115dd47e4a3SJerome Brunet		regulator-min-microvolt = <1800000>;
116dd47e4a3SJerome Brunet		regulator-max-microvolt = <1800000>;
117dd47e4a3SJerome Brunet	};
118dd47e4a3SJerome Brunet
119ffab3fd6SJerome Brunet	/* This is provided by LDOs on the eMMC daugther card */
12072fb2c85SJerome Brunet	vddio_boot: regulator-vddio_boot {
12172fb2c85SJerome Brunet		compatible = "regulator-fixed";
12272fb2c85SJerome Brunet		regulator-name = "VDDIO_BOOT";
123ffab3fd6SJerome Brunet		regulator-min-microvolt = <1800000>;
124ffab3fd6SJerome Brunet		regulator-max-microvolt = <1800000>;
125ffab3fd6SJerome Brunet		vin-supply = <&vcc_3v3>;
12672fb2c85SJerome Brunet	};
127cd84aff1SJerome Brunet};
128cd84aff1SJerome Brunet
129b16c71c9SNeil Armstrong&cec_AO {
130b16c71c9SNeil Armstrong	status = "okay";
131b16c71c9SNeil Armstrong	pinctrl-0 = <&ao_cec_pins>;
132b16c71c9SNeil Armstrong	pinctrl-names = "default";
133b16c71c9SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
134b16c71c9SNeil Armstrong};
135b16c71c9SNeil Armstrong
136cd84aff1SJerome Brunet&cvbs_vdac_port {
137cd84aff1SJerome Brunet	cvbs_vdac_out: endpoint {
138cd84aff1SJerome Brunet		remote-endpoint = <&cvbs_connector_in>;
139cd84aff1SJerome Brunet	};
140cd84aff1SJerome Brunet};
141cd84aff1SJerome Brunet
14272fb2c85SJerome Brunet&ethmac {
14372fb2c85SJerome Brunet	status = "okay";
14472fb2c85SJerome Brunet};
14572fb2c85SJerome Brunet
146dac16187SJerome Brunet&internal_phy {
147dac16187SJerome Brunet	pinctrl-0 = <&eth_link_led_pins>, <&eth_act_led_pins>;
148dac16187SJerome Brunet	pinctrl-names = "default";
149dac16187SJerome Brunet};
150dac16187SJerome Brunet
15172fb2c85SJerome Brunet&ir {
15272fb2c85SJerome Brunet	status = "okay";
15372fb2c85SJerome Brunet	pinctrl-0 = <&remote_input_ao_pins>;
15472fb2c85SJerome Brunet	pinctrl-names = "default";
15572fb2c85SJerome Brunet};
15672fb2c85SJerome Brunet
157cd84aff1SJerome Brunet&hdmi_tx {
158cd84aff1SJerome Brunet	status = "okay";
159cd84aff1SJerome Brunet	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
160cd84aff1SJerome Brunet	pinctrl-names = "default";
161e1f2163dSNeil Armstrong	hdmi-supply = <&hdmi_5v>;
162cd84aff1SJerome Brunet};
163cd84aff1SJerome Brunet
164cd84aff1SJerome Brunet&hdmi_tx_tmds_port {
165cd84aff1SJerome Brunet	hdmi_tx_tmds_out: endpoint {
166cd84aff1SJerome Brunet		remote-endpoint = <&hdmi_connector_in>;
167cd84aff1SJerome Brunet	};
168cd84aff1SJerome Brunet};
169cd84aff1SJerome Brunet
17011fa9774SNeil Armstrong&gpio_ao {
17147884c5cSNeil Armstrong	gpio-line-names = "UART TX",
17247884c5cSNeil Armstrong			  "UART RX",
17347884c5cSNeil Armstrong			  "Blue LED",
17447884c5cSNeil Armstrong			  "SDCard Voltage Switch",
17547884c5cSNeil Armstrong			  "7J1 Header Pin5",
17647884c5cSNeil Armstrong			  "7J1 Header Pin3",
17747884c5cSNeil Armstrong			  "7J1 Header Pin12",
17847884c5cSNeil Armstrong			  "IR In",
17947884c5cSNeil Armstrong			  "9J3 Switch HDMI CEC/7J1 Header Pin11",
1801d70eaadSJerome Brunet			  "7J1 Header Pin13",
1811d70eaadSJerome Brunet			  /* GPIO_TEST_N */
1821d70eaadSJerome Brunet			  "7J1 Header Pin15";
18347884c5cSNeil Armstrong};
18447884c5cSNeil Armstrong
18511fa9774SNeil Armstrong&gpio {
18647884c5cSNeil Armstrong	gpio-line-names = /* Bank GPIOZ */
18747884c5cSNeil Armstrong			  "", "", "", "", "", "", "",
18847884c5cSNeil Armstrong			  "", "", "", "", "", "", "",
18947884c5cSNeil Armstrong			  "Eth Link LED", "Eth Activity LED",
19047884c5cSNeil Armstrong			  /* Bank GPIOH */
19147884c5cSNeil Armstrong			  "HDMI HPD", "HDMI SDA", "HDMI SCL",
19247884c5cSNeil Armstrong			  "HDMI_5V_EN", "9J1 Header Pin2",
19347884c5cSNeil Armstrong			  "Analog Audio Mute",
19447884c5cSNeil Armstrong			  "2J3 Header Pin6",
19547884c5cSNeil Armstrong			  "2J3 Header Pin5",
19647884c5cSNeil Armstrong			  "2J3 Header Pin4",
19747884c5cSNeil Armstrong			  "2J3 Header Pin3",
19847884c5cSNeil Armstrong			  /* Bank BOOT */
19947884c5cSNeil Armstrong			  "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3",
20047884c5cSNeil Armstrong			  "eMMC D4", "eMMC D5", "eMMC D6", "eMMC D7",
20147884c5cSNeil Armstrong			  "eMMC Clk", "eMMC Reset", "eMMC CMD",
20247884c5cSNeil Armstrong			  "ALT BOOT MODE", "", "", "", "eMMC Data Strobe",
20347884c5cSNeil Armstrong			  /* Bank CARD */
20447884c5cSNeil Armstrong			  "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD",
20547884c5cSNeil Armstrong			  "SDCard D3", "SDCard D2", "SDCard Det",
20647884c5cSNeil Armstrong			  /* Bank GPIODV */
20747884c5cSNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
20847884c5cSNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
20947884c5cSNeil Armstrong			  "Green LED", "VCCK Enable",
21047884c5cSNeil Armstrong			  "7J1 Header Pin27", "7J1 Header Pin28",
21147884c5cSNeil Armstrong			  "VCCK Regulator", "VDDEE Regulator",
21247884c5cSNeil Armstrong			  /* Bank GPIOX */
21347884c5cSNeil Armstrong			  "7J1 Header Pin22", "7J1 Header Pin26",
21447884c5cSNeil Armstrong			  "7J1 Header Pin36", "7J1 Header Pin38",
21547884c5cSNeil Armstrong			  "7J1 Header Pin40", "7J1 Header Pin37",
21647884c5cSNeil Armstrong			  "7J1 Header Pin33", "7J1 Header Pin35",
21747884c5cSNeil Armstrong			  "7J1 Header Pin19", "7J1 Header Pin21",
21847884c5cSNeil Armstrong			  "7J1 Header Pin24", "7J1 Header Pin23",
21947884c5cSNeil Armstrong			  "7J1 Header Pin8", "7J1 Header Pin10",
22047884c5cSNeil Armstrong			  "7J1 Header Pin16", "7J1 Header Pin18",
22147884c5cSNeil Armstrong			  "7J1 Header Pin32", "7J1 Header Pin29",
22247884c5cSNeil Armstrong			  "7J1 Header Pin31",
22347884c5cSNeil Armstrong			  /* Bank GPIOCLK */
2241d70eaadSJerome Brunet			  "7J1 Header Pin7", "";
22547884c5cSNeil Armstrong};
22647884c5cSNeil Armstrong
227dd47e4a3SJerome Brunet&saradc {
228dd47e4a3SJerome Brunet	status = "okay";
229dd47e4a3SJerome Brunet	vref-supply = <&vddio_ao18>;
230dd47e4a3SJerome Brunet};
231dd47e4a3SJerome Brunet
23272fb2c85SJerome Brunet/* SD card */
23372fb2c85SJerome Brunet&sd_emmc_b {
23472fb2c85SJerome Brunet	status = "okay";
23572fb2c85SJerome Brunet	pinctrl-0 = <&sdcard_pins>;
23667e7607fSJerome Brunet	pinctrl-1 = <&sdcard_clk_gate_pins>;
23767e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
238cd84aff1SJerome Brunet
23972fb2c85SJerome Brunet	bus-width = <4>;
24072fb2c85SJerome Brunet	cap-sd-highspeed;
241adc52bf7SJerome Brunet	max-frequency = <50000000>;
24272fb2c85SJerome Brunet	disable-wp;
24372fb2c85SJerome Brunet
244f29200c8SLoys Ollivier	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
24572fb2c85SJerome Brunet
24672fb2c85SJerome Brunet	vmmc-supply = <&vcc_3v3>;
24772fb2c85SJerome Brunet	vqmmc-supply = <&vcc_card>;
248cd84aff1SJerome Brunet};
249cd84aff1SJerome Brunet
25072fb2c85SJerome Brunet/* eMMC */
25172fb2c85SJerome Brunet&sd_emmc_c {
25272fb2c85SJerome Brunet	status = "okay";
253ab36be66SNeil Armstrong	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
25467e7607fSJerome Brunet	pinctrl-1 = <&emmc_clk_gate_pins>;
25567e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
25672fb2c85SJerome Brunet
25772fb2c85SJerome Brunet	bus-width = <8>;
25872fb2c85SJerome Brunet	cap-mmc-highspeed;
259ffab3fd6SJerome Brunet	mmc-ddr-1_8v;
260ffab3fd6SJerome Brunet	mmc-hs200-1_8v;
261ffab3fd6SJerome Brunet	max-frequency = <200000000>;
26272fb2c85SJerome Brunet	disable-wp;
26372fb2c85SJerome Brunet
26472fb2c85SJerome Brunet	mmc-pwrseq = <&emmc_pwrseq>;
26572fb2c85SJerome Brunet	vmmc-supply = <&vcc_3v3>;
26672fb2c85SJerome Brunet	vqmmc-supply = <&vddio_boot>;
267cd84aff1SJerome Brunet};
268cd84aff1SJerome Brunet
26972fb2c85SJerome Brunet&uart_AO {
27072fb2c85SJerome Brunet	status = "okay";
27172fb2c85SJerome Brunet	pinctrl-0 = <&uart_ao_a_pins>;
27272fb2c85SJerome Brunet	pinctrl-names = "default";
273cd84aff1SJerome Brunet};
274b83687f3SMartin Blumenstingl
2752f9139c2SMartin Blumenstingl&usb {
276b83687f3SMartin Blumenstingl	status = "okay";
2772f9139c2SMartin Blumenstingl	dr_mode = "host";
278b83687f3SMartin Blumenstingl};
279b83687f3SMartin Blumenstingl
280b83687f3SMartin Blumenstingl&usb2_phy0 {
281b83687f3SMartin Blumenstingl	/*
282b83687f3SMartin Blumenstingl	 * even though the schematics don't show it:
283b83687f3SMartin Blumenstingl	 * HDMI_5V is also used as supply for the USB VBUS.
284b83687f3SMartin Blumenstingl	 */
285b83687f3SMartin Blumenstingl	phy-supply = <&hdmi_5v>;
286b83687f3SMartin Blumenstingl};
287