14549e789STom Rini// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
296e7b5a1SNeil Armstrong/*
396e7b5a1SNeil Armstrong * Copyright (c) 2017 BayLibre, SAS.
496e7b5a1SNeil Armstrong * Author: Neil Armstrong <narmstrong@baylibre.com>
596e7b5a1SNeil Armstrong * Author: Jerome Brunet <jbrunet@baylibre.com>
696e7b5a1SNeil Armstrong */
796e7b5a1SNeil Armstrong
896e7b5a1SNeil Armstrong/dts-v1/;
996e7b5a1SNeil Armstrong
1096e7b5a1SNeil Armstrong#include <dt-bindings/input/input.h>
1196e7b5a1SNeil Armstrong
1296e7b5a1SNeil Armstrong#include "meson-gxl-s905x.dtsi"
1396e7b5a1SNeil Armstrong
1496e7b5a1SNeil Armstrong/ {
1596e7b5a1SNeil Armstrong	compatible = "libretech,cc", "amlogic,s905x", "amlogic,meson-gxl";
1696e7b5a1SNeil Armstrong	model = "Libre Technology CC";
1796e7b5a1SNeil Armstrong
1896e7b5a1SNeil Armstrong	aliases {
1996e7b5a1SNeil Armstrong		serial0 = &uart_AO;
2096e7b5a1SNeil Armstrong	};
2196e7b5a1SNeil Armstrong
2296e7b5a1SNeil Armstrong	chosen {
2396e7b5a1SNeil Armstrong		stdout-path = "serial0:115200n8";
2496e7b5a1SNeil Armstrong	};
2596e7b5a1SNeil Armstrong
2696e7b5a1SNeil Armstrong	cvbs-connector {
2796e7b5a1SNeil Armstrong		compatible = "composite-video-connector";
2896e7b5a1SNeil Armstrong
2996e7b5a1SNeil Armstrong		port {
3096e7b5a1SNeil Armstrong			cvbs_connector_in: endpoint {
3196e7b5a1SNeil Armstrong				remote-endpoint = <&cvbs_vdac_out>;
3296e7b5a1SNeil Armstrong			};
3396e7b5a1SNeil Armstrong		};
3496e7b5a1SNeil Armstrong	};
3596e7b5a1SNeil Armstrong
3696e7b5a1SNeil Armstrong	emmc_pwrseq: emmc-pwrseq {
3796e7b5a1SNeil Armstrong		compatible = "mmc-pwrseq-emmc";
3896e7b5a1SNeil Armstrong		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
3996e7b5a1SNeil Armstrong	};
4096e7b5a1SNeil Armstrong
4196e7b5a1SNeil Armstrong	hdmi-connector {
4296e7b5a1SNeil Armstrong		compatible = "hdmi-connector";
4396e7b5a1SNeil Armstrong		type = "a";
4496e7b5a1SNeil Armstrong
4596e7b5a1SNeil Armstrong		port {
4696e7b5a1SNeil Armstrong			hdmi_connector_in: endpoint {
4796e7b5a1SNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
4896e7b5a1SNeil Armstrong			};
4996e7b5a1SNeil Armstrong		};
5096e7b5a1SNeil Armstrong	};
5196e7b5a1SNeil Armstrong
5296e7b5a1SNeil Armstrong	leds {
5396e7b5a1SNeil Armstrong		compatible = "gpio-leds";
5496e7b5a1SNeil Armstrong
5596e7b5a1SNeil Armstrong		system {
5696e7b5a1SNeil Armstrong			label = "librecomputer:system-status";
5796e7b5a1SNeil Armstrong			gpios = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>;
5896e7b5a1SNeil Armstrong			default-state = "on";
5996e7b5a1SNeil Armstrong			panic-indicator;
6096e7b5a1SNeil Armstrong		};
6196e7b5a1SNeil Armstrong
6296e7b5a1SNeil Armstrong		blue {
6396e7b5a1SNeil Armstrong			label = "librecomputer:blue";
6496e7b5a1SNeil Armstrong			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
6596e7b5a1SNeil Armstrong			linux,default-trigger = "heartbeat";
6696e7b5a1SNeil Armstrong		};
6796e7b5a1SNeil Armstrong	};
6896e7b5a1SNeil Armstrong
6996e7b5a1SNeil Armstrong	memory@0 {
7096e7b5a1SNeil Armstrong		device_type = "memory";
7196e7b5a1SNeil Armstrong		reg = <0x0 0x0 0x0 0x80000000>;
7296e7b5a1SNeil Armstrong	};
7396e7b5a1SNeil Armstrong
74*7d750c35SNeil Armstrong	hdmi_5v: regulator-hdmi-5v {
75*7d750c35SNeil Armstrong		compatible = "regulator-fixed";
76*7d750c35SNeil Armstrong
77*7d750c35SNeil Armstrong		regulator-name = "HDMI_5V";
78*7d750c35SNeil Armstrong		regulator-min-microvolt = <5000000>;
79*7d750c35SNeil Armstrong		regulator-max-microvolt = <5000000>;
80*7d750c35SNeil Armstrong
81*7d750c35SNeil Armstrong		gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>;
82*7d750c35SNeil Armstrong		enable-active-high;
83*7d750c35SNeil Armstrong		regulator-always-on;
84*7d750c35SNeil Armstrong	};
85*7d750c35SNeil Armstrong
8696e7b5a1SNeil Armstrong	vcc_3v3: regulator-vcc_3v3 {
8796e7b5a1SNeil Armstrong		compatible = "regulator-fixed";
8896e7b5a1SNeil Armstrong		regulator-name = "VCC_3V3";
8996e7b5a1SNeil Armstrong		regulator-min-microvolt = <3300000>;
9096e7b5a1SNeil Armstrong		regulator-max-microvolt = <3300000>;
9196e7b5a1SNeil Armstrong	};
9296e7b5a1SNeil Armstrong
9396e7b5a1SNeil Armstrong	vcc_card: regulator-vcc-card {
9496e7b5a1SNeil Armstrong		compatible = "regulator-gpio";
9596e7b5a1SNeil Armstrong
9696e7b5a1SNeil Armstrong		regulator-name = "VCC_CARD";
9796e7b5a1SNeil Armstrong		regulator-min-microvolt = <1800000>;
9896e7b5a1SNeil Armstrong		regulator-max-microvolt = <3300000>;
9996e7b5a1SNeil Armstrong
10096e7b5a1SNeil Armstrong		gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
10196e7b5a1SNeil Armstrong		gpios-states = <0>;
10296e7b5a1SNeil Armstrong
10396e7b5a1SNeil Armstrong		states = <3300000 0>,
10496e7b5a1SNeil Armstrong			 <1800000 1>;
105*7d750c35SNeil Armstrong
106*7d750c35SNeil Armstrong		regulator-settling-time-up-us = <200>;
107*7d750c35SNeil Armstrong		regulator-settling-time-down-us = <50000>;
108*7d750c35SNeil Armstrong	};
109*7d750c35SNeil Armstrong
110*7d750c35SNeil Armstrong	vddio_ao18: regulator-vddio_ao18 {
111*7d750c35SNeil Armstrong		compatible = "regulator-fixed";
112*7d750c35SNeil Armstrong		regulator-name = "VDDIO_AO18";
113*7d750c35SNeil Armstrong		regulator-min-microvolt = <1800000>;
114*7d750c35SNeil Armstrong		regulator-max-microvolt = <1800000>;
11596e7b5a1SNeil Armstrong	};
11696e7b5a1SNeil Armstrong
11796e7b5a1SNeil Armstrong	vddio_boot: regulator-vddio_boot {
11896e7b5a1SNeil Armstrong		compatible = "regulator-fixed";
11996e7b5a1SNeil Armstrong		regulator-name = "VDDIO_BOOT";
12096e7b5a1SNeil Armstrong		regulator-min-microvolt = <3300000>;
12196e7b5a1SNeil Armstrong		regulator-max-microvolt = <3300000>;
12296e7b5a1SNeil Armstrong	};
12396e7b5a1SNeil Armstrong};
12496e7b5a1SNeil Armstrong
125*7d750c35SNeil Armstrong&cec_AO {
126*7d750c35SNeil Armstrong	status = "okay";
127*7d750c35SNeil Armstrong	pinctrl-0 = <&ao_cec_pins>;
128*7d750c35SNeil Armstrong	pinctrl-names = "default";
129*7d750c35SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
130*7d750c35SNeil Armstrong};
131*7d750c35SNeil Armstrong
13296e7b5a1SNeil Armstrong&cvbs_vdac_port {
13396e7b5a1SNeil Armstrong	cvbs_vdac_out: endpoint {
13496e7b5a1SNeil Armstrong		remote-endpoint = <&cvbs_connector_in>;
13596e7b5a1SNeil Armstrong	};
13696e7b5a1SNeil Armstrong};
13796e7b5a1SNeil Armstrong
13896e7b5a1SNeil Armstrong&ethmac {
13996e7b5a1SNeil Armstrong	status = "okay";
14096e7b5a1SNeil Armstrong};
14196e7b5a1SNeil Armstrong
142*7d750c35SNeil Armstrong&internal_phy {
143*7d750c35SNeil Armstrong	pinctrl-0 = <&eth_link_led_pins>, <&eth_act_led_pins>;
144*7d750c35SNeil Armstrong	pinctrl-names = "default";
145*7d750c35SNeil Armstrong};
146*7d750c35SNeil Armstrong
14796e7b5a1SNeil Armstrong&ir {
14896e7b5a1SNeil Armstrong	status = "okay";
14996e7b5a1SNeil Armstrong	pinctrl-0 = <&remote_input_ao_pins>;
15096e7b5a1SNeil Armstrong	pinctrl-names = "default";
15196e7b5a1SNeil Armstrong};
15296e7b5a1SNeil Armstrong
15396e7b5a1SNeil Armstrong&hdmi_tx {
15496e7b5a1SNeil Armstrong	status = "okay";
15596e7b5a1SNeil Armstrong	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
15696e7b5a1SNeil Armstrong	pinctrl-names = "default";
15796e7b5a1SNeil Armstrong};
15896e7b5a1SNeil Armstrong
15996e7b5a1SNeil Armstrong&hdmi_tx_tmds_port {
16096e7b5a1SNeil Armstrong	hdmi_tx_tmds_out: endpoint {
16196e7b5a1SNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
16296e7b5a1SNeil Armstrong	};
16396e7b5a1SNeil Armstrong};
16496e7b5a1SNeil Armstrong
165*7d750c35SNeil Armstrong&pinctrl_aobus {
166*7d750c35SNeil Armstrong	gpio-line-names = "UART TX",
167*7d750c35SNeil Armstrong			  "UART RX",
168*7d750c35SNeil Armstrong			  "Blue LED",
169*7d750c35SNeil Armstrong			  "SDCard Voltage Switch",
170*7d750c35SNeil Armstrong			  "7J1 Header Pin5",
171*7d750c35SNeil Armstrong			  "7J1 Header Pin3",
172*7d750c35SNeil Armstrong			  "7J1 Header Pin12",
173*7d750c35SNeil Armstrong			  "IR In",
174*7d750c35SNeil Armstrong			  "9J3 Switch HDMI CEC/7J1 Header Pin11",
175*7d750c35SNeil Armstrong			  "7J1 Header Pin13",
176*7d750c35SNeil Armstrong			  /* GPIO_TEST_N */
177*7d750c35SNeil Armstrong			  "7J1 Header Pin15";
178*7d750c35SNeil Armstrong};
179*7d750c35SNeil Armstrong
180*7d750c35SNeil Armstrong&pinctrl_periphs {
181*7d750c35SNeil Armstrong	gpio-line-names = /* Bank GPIOZ */
182*7d750c35SNeil Armstrong			  "", "", "", "", "", "", "",
183*7d750c35SNeil Armstrong			  "", "", "", "", "", "", "",
184*7d750c35SNeil Armstrong			  "Eth Link LED", "Eth Activity LED",
185*7d750c35SNeil Armstrong			  /* Bank GPIOH */
186*7d750c35SNeil Armstrong			  "HDMI HPD", "HDMI SDA", "HDMI SCL",
187*7d750c35SNeil Armstrong			  "HDMI_5V_EN", "9J1 Header Pin2",
188*7d750c35SNeil Armstrong			  "Analog Audio Mute",
189*7d750c35SNeil Armstrong			  "2J3 Header Pin6",
190*7d750c35SNeil Armstrong			  "2J3 Header Pin5",
191*7d750c35SNeil Armstrong			  "2J3 Header Pin4",
192*7d750c35SNeil Armstrong			  "2J3 Header Pin3",
193*7d750c35SNeil Armstrong			  /* Bank BOOT */
194*7d750c35SNeil Armstrong			  "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3",
195*7d750c35SNeil Armstrong			  "eMMC D4", "eMMC D5", "eMMC D6", "eMMC D7",
196*7d750c35SNeil Armstrong			  "eMMC Clk", "eMMC Reset", "eMMC CMD",
197*7d750c35SNeil Armstrong			  "ALT BOOT MODE", "", "", "", "eMMC Data Strobe",
198*7d750c35SNeil Armstrong			  /* Bank CARD */
199*7d750c35SNeil Armstrong			  "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD",
200*7d750c35SNeil Armstrong			  "SDCard D3", "SDCard D2", "SDCard Det",
201*7d750c35SNeil Armstrong			  /* Bank GPIODV */
202*7d750c35SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
203*7d750c35SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
204*7d750c35SNeil Armstrong			  "Green LED", "VCCK Enable",
205*7d750c35SNeil Armstrong			  "7J1 Header Pin27", "7J1 Header Pin28",
206*7d750c35SNeil Armstrong			  "VCCK Regulator", "VDDEE Regulator",
207*7d750c35SNeil Armstrong			  /* Bank GPIOX */
208*7d750c35SNeil Armstrong			  "7J1 Header Pin22", "7J1 Header Pin26",
209*7d750c35SNeil Armstrong			  "7J1 Header Pin36", "7J1 Header Pin38",
210*7d750c35SNeil Armstrong			  "7J1 Header Pin40", "7J1 Header Pin37",
211*7d750c35SNeil Armstrong			  "7J1 Header Pin33", "7J1 Header Pin35",
212*7d750c35SNeil Armstrong			  "7J1 Header Pin19", "7J1 Header Pin21",
213*7d750c35SNeil Armstrong			  "7J1 Header Pin24", "7J1 Header Pin23",
214*7d750c35SNeil Armstrong			  "7J1 Header Pin8", "7J1 Header Pin10",
215*7d750c35SNeil Armstrong			  "7J1 Header Pin16", "7J1 Header Pin18",
216*7d750c35SNeil Armstrong			  "7J1 Header Pin32", "7J1 Header Pin29",
217*7d750c35SNeil Armstrong			  "7J1 Header Pin31",
218*7d750c35SNeil Armstrong			  /* Bank GPIOCLK */
219*7d750c35SNeil Armstrong			  "7J1 Header Pin7", "";
220*7d750c35SNeil Armstrong};
221*7d750c35SNeil Armstrong
222*7d750c35SNeil Armstrong&saradc {
223*7d750c35SNeil Armstrong	status = "okay";
224*7d750c35SNeil Armstrong	vref-supply = <&vddio_ao18>;
225*7d750c35SNeil Armstrong};
226*7d750c35SNeil Armstrong
22796e7b5a1SNeil Armstrong/* SD card */
22896e7b5a1SNeil Armstrong&sd_emmc_b {
22996e7b5a1SNeil Armstrong	status = "okay";
23096e7b5a1SNeil Armstrong	pinctrl-0 = <&sdcard_pins>;
231*7d750c35SNeil Armstrong	pinctrl-1 = <&sdcard_clk_gate_pins>;
232*7d750c35SNeil Armstrong	pinctrl-names = "default", "clk-gate";
23396e7b5a1SNeil Armstrong
23496e7b5a1SNeil Armstrong	bus-width = <4>;
23596e7b5a1SNeil Armstrong	cap-sd-highspeed;
236*7d750c35SNeil Armstrong	sd-uhs-sdr12;
237*7d750c35SNeil Armstrong	sd-uhs-sdr25;
238*7d750c35SNeil Armstrong	sd-uhs-sdr50;
23996e7b5a1SNeil Armstrong	max-frequency = <100000000>;
24096e7b5a1SNeil Armstrong	disable-wp;
24196e7b5a1SNeil Armstrong
24296e7b5a1SNeil Armstrong	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
24396e7b5a1SNeil Armstrong	cd-inverted;
24496e7b5a1SNeil Armstrong
24596e7b5a1SNeil Armstrong	vmmc-supply = <&vcc_3v3>;
24696e7b5a1SNeil Armstrong	vqmmc-supply = <&vcc_card>;
24796e7b5a1SNeil Armstrong};
24896e7b5a1SNeil Armstrong
24996e7b5a1SNeil Armstrong/* eMMC */
25096e7b5a1SNeil Armstrong&sd_emmc_c {
25196e7b5a1SNeil Armstrong	status = "okay";
252*7d750c35SNeil Armstrong	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
253*7d750c35SNeil Armstrong	pinctrl-1 = <&emmc_clk_gate_pins>;
254*7d750c35SNeil Armstrong	pinctrl-names = "default", "clk-gate";
25596e7b5a1SNeil Armstrong
25696e7b5a1SNeil Armstrong	bus-width = <8>;
25796e7b5a1SNeil Armstrong	cap-mmc-highspeed;
258*7d750c35SNeil Armstrong	mmc-ddr-3_3v;
25996e7b5a1SNeil Armstrong	max-frequency = <50000000>;
26096e7b5a1SNeil Armstrong	non-removable;
26196e7b5a1SNeil Armstrong	disable-wp;
26296e7b5a1SNeil Armstrong
26396e7b5a1SNeil Armstrong	mmc-pwrseq = <&emmc_pwrseq>;
26496e7b5a1SNeil Armstrong	vmmc-supply = <&vcc_3v3>;
26596e7b5a1SNeil Armstrong	vqmmc-supply = <&vddio_boot>;
26696e7b5a1SNeil Armstrong};
26796e7b5a1SNeil Armstrong
26896e7b5a1SNeil Armstrong&uart_AO {
26996e7b5a1SNeil Armstrong	status = "okay";
27096e7b5a1SNeil Armstrong	pinctrl-0 = <&uart_ao_a_pins>;
27196e7b5a1SNeil Armstrong	pinctrl-names = "default";
27296e7b5a1SNeil Armstrong};
273