1b7be1449SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2b7be1449SNeil Armstrong/*
3b7be1449SNeil Armstrong * Copyright (c) 2019 BayLibre SAS. All rights reserved.
4b7be1449SNeil Armstrong */
5b7be1449SNeil Armstrong
6b7be1449SNeil Armstrong/dts-v1/;
7b7be1449SNeil Armstrong
8b7be1449SNeil Armstrong#include "meson-g12a.dtsi"
92297c33cSJerome Brunet#include <dt-bindings/gpio/gpio.h>
10d1c023afSNeil Armstrong#include <dt-bindings/input/input.h>
112297c33cSJerome Brunet#include <dt-bindings/gpio/meson-g12a-gpio.h>
12b7be1449SNeil Armstrong
13b7be1449SNeil Armstrong/ {
14b7be1449SNeil Armstrong	compatible = "seirobotics,sei510", "amlogic,g12a";
15b7be1449SNeil Armstrong	model = "SEI Robotics SEI510";
16b7be1449SNeil Armstrong
17d1c023afSNeil Armstrong	adc_keys {
18d1c023afSNeil Armstrong		compatible = "adc-keys";
19d1c023afSNeil Armstrong		io-channels = <&saradc 0>;
20d1c023afSNeil Armstrong		io-channel-names = "buttons";
21d1c023afSNeil Armstrong		keyup-threshold-microvolt = <1800000>;
22d1c023afSNeil Armstrong
23d1c023afSNeil Armstrong		button-onoff {
24d1c023afSNeil Armstrong			label = "On/Off";
25d1c023afSNeil Armstrong			linux,code = <KEY_POWER>;
26d1c023afSNeil Armstrong			press-threshold-microvolt = <1700000>;
27d1c023afSNeil Armstrong		};
28d1c023afSNeil Armstrong	};
29d1c023afSNeil Armstrong
3073429cf2SJerome Brunet	aliases {
3173429cf2SJerome Brunet		serial0 = &uart_AO;
322297c33cSJerome Brunet	};
332297c33cSJerome Brunet
34b7be1449SNeil Armstrong	chosen {
35b7be1449SNeil Armstrong		stdout-path = "serial0:115200n8";
36b7be1449SNeil Armstrong	};
37b7be1449SNeil Armstrong
38912a3395SNeil Armstrong	cvbs-connector {
39912a3395SNeil Armstrong		compatible = "composite-video-connector";
40912a3395SNeil Armstrong
41912a3395SNeil Armstrong		port {
42912a3395SNeil Armstrong			cvbs_connector_in: endpoint {
43912a3395SNeil Armstrong				remote-endpoint = <&cvbs_vdac_out>;
44912a3395SNeil Armstrong			};
45912a3395SNeil Armstrong		};
46912a3395SNeil Armstrong	};
47912a3395SNeil Armstrong
485a2ea2f7SJerome Brunet	emmc_pwrseq: emmc-pwrseq {
495a2ea2f7SJerome Brunet		compatible = "mmc-pwrseq-emmc";
505a2ea2f7SJerome Brunet		reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
515a2ea2f7SJerome Brunet	};
525a2ea2f7SJerome Brunet
53912a3395SNeil Armstrong	hdmi-connector {
54912a3395SNeil Armstrong		compatible = "hdmi-connector";
55912a3395SNeil Armstrong		type = "a";
56912a3395SNeil Armstrong
57912a3395SNeil Armstrong		port {
58912a3395SNeil Armstrong			hdmi_connector_in: endpoint {
59912a3395SNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
60912a3395SNeil Armstrong			};
61912a3395SNeil Armstrong		};
62912a3395SNeil Armstrong	};
63912a3395SNeil Armstrong
64b7be1449SNeil Armstrong	memory@0 {
65b7be1449SNeil Armstrong		device_type = "memory";
66b7be1449SNeil Armstrong		reg = <0x0 0x0 0x0 0x40000000>;
67b7be1449SNeil Armstrong	};
68b7be1449SNeil Armstrong
6973429cf2SJerome Brunet	ao_5v: regulator-ao_5v {
7073429cf2SJerome Brunet		compatible = "regulator-fixed";
7173429cf2SJerome Brunet		regulator-name = "AO_5V";
7273429cf2SJerome Brunet		regulator-min-microvolt = <5000000>;
7373429cf2SJerome Brunet		regulator-max-microvolt = <5000000>;
7473429cf2SJerome Brunet		vin-supply = <&dc_in>;
7573429cf2SJerome Brunet		regulator-always-on;
76b7be1449SNeil Armstrong	};
7773429cf2SJerome Brunet
7873429cf2SJerome Brunet	dc_in: regulator-dc_in {
7973429cf2SJerome Brunet		compatible = "regulator-fixed";
8073429cf2SJerome Brunet		regulator-name = "DC_IN";
8173429cf2SJerome Brunet		regulator-min-microvolt = <5000000>;
8273429cf2SJerome Brunet		regulator-max-microvolt = <5000000>;
8373429cf2SJerome Brunet		regulator-always-on;
8473429cf2SJerome Brunet	};
8573429cf2SJerome Brunet
8673429cf2SJerome Brunet	emmc_1v8: regulator-emmc_1v8 {
8773429cf2SJerome Brunet		compatible = "regulator-fixed";
8873429cf2SJerome Brunet		regulator-name = "EMMC_1V8";
8973429cf2SJerome Brunet		regulator-min-microvolt = <1800000>;
9073429cf2SJerome Brunet		regulator-max-microvolt = <1800000>;
9173429cf2SJerome Brunet		vin-supply = <&vddao_3v3>;
9273429cf2SJerome Brunet		regulator-always-on;
93b7be1449SNeil Armstrong	};
942297c33cSJerome Brunet
952297c33cSJerome Brunet	vddao_3v3: regulator-vddao_3v3 {
962297c33cSJerome Brunet		compatible = "regulator-fixed";
972297c33cSJerome Brunet		regulator-name = "VDDAO_3V3";
982297c33cSJerome Brunet		regulator-min-microvolt = <3300000>;
992297c33cSJerome Brunet		regulator-max-microvolt = <3300000>;
1002297c33cSJerome Brunet		vin-supply = <&dc_in>;
1012297c33cSJerome Brunet		regulator-always-on;
1022297c33cSJerome Brunet	};
1032297c33cSJerome Brunet
1042297c33cSJerome Brunet	vddao_3v3_t: regultor-vddao_3v3_t {
1052297c33cSJerome Brunet		compatible = "regulator-fixed";
1062297c33cSJerome Brunet		regulator-name = "VDDAO_3V3_T";
1072297c33cSJerome Brunet		regulator-min-microvolt = <3300000>;
1082297c33cSJerome Brunet		regulator-max-microvolt = <3300000>;
1092297c33cSJerome Brunet		vin-supply = <&vddao_3v3>;
1102297c33cSJerome Brunet		gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
1112297c33cSJerome Brunet		enable-active-high;
1122297c33cSJerome Brunet	};
1132297c33cSJerome Brunet
1142297c33cSJerome Brunet	vddio_ao1v8: regulator-vddio_ao1v8 {
1152297c33cSJerome Brunet		compatible = "regulator-fixed";
1162297c33cSJerome Brunet		regulator-name = "VDDIO_AO1V8";
1172297c33cSJerome Brunet		regulator-min-microvolt = <1800000>;
1182297c33cSJerome Brunet		regulator-max-microvolt = <1800000>;
1192297c33cSJerome Brunet		vin-supply = <&vddao_3v3>;
1202297c33cSJerome Brunet		regulator-always-on;
1212297c33cSJerome Brunet	};
12273429cf2SJerome Brunet
12373429cf2SJerome Brunet	reserved-memory {
12473429cf2SJerome Brunet		/* TEE Reserved Memory */
12573429cf2SJerome Brunet		bl32_reserved: bl32@5000000 {
12673429cf2SJerome Brunet			reg = <0x0 0x05300000 0x0 0x2000000>;
12773429cf2SJerome Brunet			no-map;
12873429cf2SJerome Brunet		};
12973429cf2SJerome Brunet	};
130d1c023afSNeil Armstrong};
1312297c33cSJerome Brunet
132912a3395SNeil Armstrong&cec_AO {
133912a3395SNeil Armstrong	pinctrl-0 = <&cec_ao_a_h_pins>;
134912a3395SNeil Armstrong	pinctrl-names = "default";
135912a3395SNeil Armstrong	status = "disabled";
136912a3395SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
137912a3395SNeil Armstrong};
138912a3395SNeil Armstrong
139912a3395SNeil Armstrong&cecb_AO {
140912a3395SNeil Armstrong	pinctrl-0 = <&cec_ao_b_h_pins>;
141912a3395SNeil Armstrong	pinctrl-names = "default";
142912a3395SNeil Armstrong	status = "okay";
143912a3395SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
144912a3395SNeil Armstrong};
145912a3395SNeil Armstrong
146912a3395SNeil Armstrong&cvbs_vdac_port {
147912a3395SNeil Armstrong	cvbs_vdac_out: endpoint {
148912a3395SNeil Armstrong		remote-endpoint = <&cvbs_connector_in>;
149912a3395SNeil Armstrong	};
150912a3395SNeil Armstrong};
151912a3395SNeil Armstrong
15273429cf2SJerome Brunet&hdmi_tx {
15373429cf2SJerome Brunet	status = "okay";
15473429cf2SJerome Brunet	pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
15573429cf2SJerome Brunet	pinctrl-names = "default";
15673429cf2SJerome Brunet};
15773429cf2SJerome Brunet
15873429cf2SJerome Brunet&hdmi_tx_tmds_port {
15973429cf2SJerome Brunet	hdmi_tx_tmds_out: endpoint {
16073429cf2SJerome Brunet		remote-endpoint = <&hdmi_connector_in>;
16173429cf2SJerome Brunet	};
16273429cf2SJerome Brunet};
16373429cf2SJerome Brunet
164d1c023afSNeil Armstrong&saradc {
165d1c023afSNeil Armstrong	status = "okay";
166d1c023afSNeil Armstrong	vref-supply = <&vddio_ao1v8>;
167d1c023afSNeil Armstrong};
168d1c023afSNeil Armstrong
1695a2ea2f7SJerome Brunet/* SD card */
1705a2ea2f7SJerome Brunet&sd_emmc_b {
1715a2ea2f7SJerome Brunet	status = "okay";
1725a2ea2f7SJerome Brunet	pinctrl-0 = <&sdcard_c_pins>;
1735a2ea2f7SJerome Brunet	pinctrl-1 = <&sdcard_clk_gate_c_pins>;
1745a2ea2f7SJerome Brunet	pinctrl-names = "default", "clk-gate";
1755a2ea2f7SJerome Brunet
1765a2ea2f7SJerome Brunet	bus-width = <4>;
1775a2ea2f7SJerome Brunet	cap-sd-highspeed;
1785a2ea2f7SJerome Brunet	max-frequency = <50000000>;
1795a2ea2f7SJerome Brunet	disable-wp;
1805a2ea2f7SJerome Brunet
1815a2ea2f7SJerome Brunet	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
1825a2ea2f7SJerome Brunet	vmmc-supply = <&vddao_3v3>;
1835a2ea2f7SJerome Brunet	vqmmc-supply = <&vddao_3v3>;
1845a2ea2f7SJerome Brunet};
1855a2ea2f7SJerome Brunet
1865a2ea2f7SJerome Brunet/* eMMC */
1875a2ea2f7SJerome Brunet&sd_emmc_c {
1885a2ea2f7SJerome Brunet	status = "okay";
1895a2ea2f7SJerome Brunet	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
1905a2ea2f7SJerome Brunet	pinctrl-1 = <&emmc_clk_gate_pins>;
1915a2ea2f7SJerome Brunet	pinctrl-names = "default", "clk-gate";
1925a2ea2f7SJerome Brunet
1935a2ea2f7SJerome Brunet	bus-width = <8>;
1945a2ea2f7SJerome Brunet	cap-mmc-highspeed;
1955a2ea2f7SJerome Brunet	mmc-ddr-1_8v;
1965a2ea2f7SJerome Brunet	mmc-hs200-1_8v;
1975a2ea2f7SJerome Brunet	max-frequency = <200000000>;
1985a2ea2f7SJerome Brunet	non-removable;
1995a2ea2f7SJerome Brunet	disable-wp;
2005a2ea2f7SJerome Brunet
2015a2ea2f7SJerome Brunet	mmc-pwrseq = <&emmc_pwrseq>;
2025a2ea2f7SJerome Brunet	vmmc-supply = <&vddao_3v3>;
2035a2ea2f7SJerome Brunet	vqmmc-supply = <&emmc_1v8>;
2045a2ea2f7SJerome Brunet};
2055a2ea2f7SJerome Brunet
206d1c023afSNeil Armstrong&uart_A {
207d1c023afSNeil Armstrong	status = "okay";
208d1c023afSNeil Armstrong	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
209d1c023afSNeil Armstrong	pinctrl-names = "default";
210d1c023afSNeil Armstrong	uart-has-rtscts;
211d1c023afSNeil Armstrong
212d1c023afSNeil Armstrong	bluetooth {
213d1c023afSNeil Armstrong		compatible = "brcm,bcm43438-bt";
214d1c023afSNeil Armstrong		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
215d1c023afSNeil Armstrong	};
216b7be1449SNeil Armstrong};
217b7be1449SNeil Armstrong
218b7be1449SNeil Armstrong&uart_AO {
219b7be1449SNeil Armstrong	status = "okay";
22051d215c1SNeil Armstrong	pinctrl-0 = <&uart_ao_a_pins>;
22151d215c1SNeil Armstrong	pinctrl-names = "default";
222b7be1449SNeil Armstrong};
22341cc4551SNeil Armstrong
22441cc4551SNeil Armstrong&usb {
22541cc4551SNeil Armstrong	status = "okay";
22641cc4551SNeil Armstrong	dr_mode = "host";
22741cc4551SNeil Armstrong};
228