1*96e7b5a1SNeil Armstrong/*
2*96e7b5a1SNeil Armstrong * Copyright (c) 2017 BayLibre, SAS.
3*96e7b5a1SNeil Armstrong * Author: Neil Armstrong <narmstrong@baylibre.com>
4*96e7b5a1SNeil Armstrong * Author: Jerome Brunet <jbrunet@baylibre.com>
5*96e7b5a1SNeil Armstrong *
6*96e7b5a1SNeil Armstrong * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
7*96e7b5a1SNeil Armstrong */
8*96e7b5a1SNeil Armstrong
9*96e7b5a1SNeil Armstrong/dts-v1/;
10*96e7b5a1SNeil Armstrong
11*96e7b5a1SNeil Armstrong#include <dt-bindings/input/input.h>
12*96e7b5a1SNeil Armstrong
13*96e7b5a1SNeil Armstrong#include "meson-gxl-s905x.dtsi"
14*96e7b5a1SNeil Armstrong
15*96e7b5a1SNeil Armstrong/ {
16*96e7b5a1SNeil Armstrong	compatible = "libretech,cc", "amlogic,s905x", "amlogic,meson-gxl";
17*96e7b5a1SNeil Armstrong	model = "Libre Technology CC";
18*96e7b5a1SNeil Armstrong
19*96e7b5a1SNeil Armstrong	aliases {
20*96e7b5a1SNeil Armstrong		serial0 = &uart_AO;
21*96e7b5a1SNeil Armstrong	};
22*96e7b5a1SNeil Armstrong
23*96e7b5a1SNeil Armstrong	chosen {
24*96e7b5a1SNeil Armstrong		stdout-path = "serial0:115200n8";
25*96e7b5a1SNeil Armstrong	};
26*96e7b5a1SNeil Armstrong
27*96e7b5a1SNeil Armstrong	cvbs-connector {
28*96e7b5a1SNeil Armstrong		compatible = "composite-video-connector";
29*96e7b5a1SNeil Armstrong
30*96e7b5a1SNeil Armstrong		port {
31*96e7b5a1SNeil Armstrong			cvbs_connector_in: endpoint {
32*96e7b5a1SNeil Armstrong				remote-endpoint = <&cvbs_vdac_out>;
33*96e7b5a1SNeil Armstrong			};
34*96e7b5a1SNeil Armstrong		};
35*96e7b5a1SNeil Armstrong	};
36*96e7b5a1SNeil Armstrong
37*96e7b5a1SNeil Armstrong	emmc_pwrseq: emmc-pwrseq {
38*96e7b5a1SNeil Armstrong		compatible = "mmc-pwrseq-emmc";
39*96e7b5a1SNeil Armstrong		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
40*96e7b5a1SNeil Armstrong	};
41*96e7b5a1SNeil Armstrong
42*96e7b5a1SNeil Armstrong	hdmi-connector {
43*96e7b5a1SNeil Armstrong		compatible = "hdmi-connector";
44*96e7b5a1SNeil Armstrong		type = "a";
45*96e7b5a1SNeil Armstrong
46*96e7b5a1SNeil Armstrong		port {
47*96e7b5a1SNeil Armstrong			hdmi_connector_in: endpoint {
48*96e7b5a1SNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
49*96e7b5a1SNeil Armstrong			};
50*96e7b5a1SNeil Armstrong		};
51*96e7b5a1SNeil Armstrong	};
52*96e7b5a1SNeil Armstrong
53*96e7b5a1SNeil Armstrong	leds {
54*96e7b5a1SNeil Armstrong		compatible = "gpio-leds";
55*96e7b5a1SNeil Armstrong
56*96e7b5a1SNeil Armstrong		system {
57*96e7b5a1SNeil Armstrong			label = "librecomputer:system-status";
58*96e7b5a1SNeil Armstrong			gpios = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>;
59*96e7b5a1SNeil Armstrong			default-state = "on";
60*96e7b5a1SNeil Armstrong			panic-indicator;
61*96e7b5a1SNeil Armstrong		};
62*96e7b5a1SNeil Armstrong
63*96e7b5a1SNeil Armstrong		blue {
64*96e7b5a1SNeil Armstrong			label = "librecomputer:blue";
65*96e7b5a1SNeil Armstrong			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
66*96e7b5a1SNeil Armstrong			linux,default-trigger = "heartbeat";
67*96e7b5a1SNeil Armstrong		};
68*96e7b5a1SNeil Armstrong	};
69*96e7b5a1SNeil Armstrong
70*96e7b5a1SNeil Armstrong	memory@0 {
71*96e7b5a1SNeil Armstrong		device_type = "memory";
72*96e7b5a1SNeil Armstrong		reg = <0x0 0x0 0x0 0x80000000>;
73*96e7b5a1SNeil Armstrong	};
74*96e7b5a1SNeil Armstrong
75*96e7b5a1SNeil Armstrong	vcc_3v3: regulator-vcc_3v3 {
76*96e7b5a1SNeil Armstrong		compatible = "regulator-fixed";
77*96e7b5a1SNeil Armstrong		regulator-name = "VCC_3V3";
78*96e7b5a1SNeil Armstrong		regulator-min-microvolt = <3300000>;
79*96e7b5a1SNeil Armstrong		regulator-max-microvolt = <3300000>;
80*96e7b5a1SNeil Armstrong	};
81*96e7b5a1SNeil Armstrong
82*96e7b5a1SNeil Armstrong	vcc_card: regulator-vcc-card {
83*96e7b5a1SNeil Armstrong		compatible = "regulator-gpio";
84*96e7b5a1SNeil Armstrong
85*96e7b5a1SNeil Armstrong		regulator-name = "VCC_CARD";
86*96e7b5a1SNeil Armstrong		regulator-min-microvolt = <1800000>;
87*96e7b5a1SNeil Armstrong		regulator-max-microvolt = <3300000>;
88*96e7b5a1SNeil Armstrong
89*96e7b5a1SNeil Armstrong		gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
90*96e7b5a1SNeil Armstrong		gpios-states = <0>;
91*96e7b5a1SNeil Armstrong
92*96e7b5a1SNeil Armstrong		states = <3300000 0>,
93*96e7b5a1SNeil Armstrong			 <1800000 1>;
94*96e7b5a1SNeil Armstrong	};
95*96e7b5a1SNeil Armstrong
96*96e7b5a1SNeil Armstrong	vddio_boot: regulator-vddio_boot {
97*96e7b5a1SNeil Armstrong		compatible = "regulator-fixed";
98*96e7b5a1SNeil Armstrong		regulator-name = "VDDIO_BOOT";
99*96e7b5a1SNeil Armstrong		regulator-min-microvolt = <3300000>;
100*96e7b5a1SNeil Armstrong		regulator-max-microvolt = <3300000>;
101*96e7b5a1SNeil Armstrong	};
102*96e7b5a1SNeil Armstrong};
103*96e7b5a1SNeil Armstrong
104*96e7b5a1SNeil Armstrong&cvbs_vdac_port {
105*96e7b5a1SNeil Armstrong	cvbs_vdac_out: endpoint {
106*96e7b5a1SNeil Armstrong		remote-endpoint = <&cvbs_connector_in>;
107*96e7b5a1SNeil Armstrong	};
108*96e7b5a1SNeil Armstrong};
109*96e7b5a1SNeil Armstrong
110*96e7b5a1SNeil Armstrong&ethmac {
111*96e7b5a1SNeil Armstrong	status = "okay";
112*96e7b5a1SNeil Armstrong};
113*96e7b5a1SNeil Armstrong
114*96e7b5a1SNeil Armstrong&ir {
115*96e7b5a1SNeil Armstrong	status = "okay";
116*96e7b5a1SNeil Armstrong	pinctrl-0 = <&remote_input_ao_pins>;
117*96e7b5a1SNeil Armstrong	pinctrl-names = "default";
118*96e7b5a1SNeil Armstrong};
119*96e7b5a1SNeil Armstrong
120*96e7b5a1SNeil Armstrong&hdmi_tx {
121*96e7b5a1SNeil Armstrong	status = "okay";
122*96e7b5a1SNeil Armstrong	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
123*96e7b5a1SNeil Armstrong	pinctrl-names = "default";
124*96e7b5a1SNeil Armstrong};
125*96e7b5a1SNeil Armstrong
126*96e7b5a1SNeil Armstrong&hdmi_tx_tmds_port {
127*96e7b5a1SNeil Armstrong	hdmi_tx_tmds_out: endpoint {
128*96e7b5a1SNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
129*96e7b5a1SNeil Armstrong	};
130*96e7b5a1SNeil Armstrong};
131*96e7b5a1SNeil Armstrong
132*96e7b5a1SNeil Armstrong/* SD card */
133*96e7b5a1SNeil Armstrong&sd_emmc_b {
134*96e7b5a1SNeil Armstrong	status = "okay";
135*96e7b5a1SNeil Armstrong	pinctrl-0 = <&sdcard_pins>;
136*96e7b5a1SNeil Armstrong	pinctrl-names = "default";
137*96e7b5a1SNeil Armstrong
138*96e7b5a1SNeil Armstrong	bus-width = <4>;
139*96e7b5a1SNeil Armstrong	cap-sd-highspeed;
140*96e7b5a1SNeil Armstrong	max-frequency = <100000000>;
141*96e7b5a1SNeil Armstrong	disable-wp;
142*96e7b5a1SNeil Armstrong
143*96e7b5a1SNeil Armstrong	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
144*96e7b5a1SNeil Armstrong	cd-inverted;
145*96e7b5a1SNeil Armstrong
146*96e7b5a1SNeil Armstrong	vmmc-supply = <&vcc_3v3>;
147*96e7b5a1SNeil Armstrong	vqmmc-supply = <&vcc_card>;
148*96e7b5a1SNeil Armstrong};
149*96e7b5a1SNeil Armstrong
150*96e7b5a1SNeil Armstrong/* eMMC */
151*96e7b5a1SNeil Armstrong&sd_emmc_c {
152*96e7b5a1SNeil Armstrong	status = "okay";
153*96e7b5a1SNeil Armstrong	pinctrl-0 = <&emmc_pins>;
154*96e7b5a1SNeil Armstrong	pinctrl-names = "default";
155*96e7b5a1SNeil Armstrong
156*96e7b5a1SNeil Armstrong	bus-width = <8>;
157*96e7b5a1SNeil Armstrong	cap-mmc-highspeed;
158*96e7b5a1SNeil Armstrong	max-frequency = <50000000>;
159*96e7b5a1SNeil Armstrong	non-removable;
160*96e7b5a1SNeil Armstrong	disable-wp;
161*96e7b5a1SNeil Armstrong
162*96e7b5a1SNeil Armstrong	mmc-pwrseq = <&emmc_pwrseq>;
163*96e7b5a1SNeil Armstrong	vmmc-supply = <&vcc_3v3>;
164*96e7b5a1SNeil Armstrong	vqmmc-supply = <&vddio_boot>;
165*96e7b5a1SNeil Armstrong};
166*96e7b5a1SNeil Armstrong
167*96e7b5a1SNeil Armstrong&uart_AO {
168*96e7b5a1SNeil Armstrong	status = "okay";
169*96e7b5a1SNeil Armstrong	pinctrl-0 = <&uart_ao_a_pins>;
170*96e7b5a1SNeil Armstrong	pinctrl-names = "default";
171*96e7b5a1SNeil Armstrong};
172