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;
32a1abafb6SJerome Brunet		ethernet0 = &ethmac;
332297c33cSJerome Brunet	};
342297c33cSJerome Brunet
35b7be1449SNeil Armstrong	chosen {
36b7be1449SNeil Armstrong		stdout-path = "serial0:115200n8";
37b7be1449SNeil Armstrong	};
38b7be1449SNeil Armstrong
39912a3395SNeil Armstrong	cvbs-connector {
40912a3395SNeil Armstrong		compatible = "composite-video-connector";
41912a3395SNeil Armstrong
42912a3395SNeil Armstrong		port {
43912a3395SNeil Armstrong			cvbs_connector_in: endpoint {
44912a3395SNeil Armstrong				remote-endpoint = <&cvbs_vdac_out>;
45912a3395SNeil Armstrong			};
46912a3395SNeil Armstrong		};
47912a3395SNeil Armstrong	};
48912a3395SNeil Armstrong
495a2ea2f7SJerome Brunet	emmc_pwrseq: emmc-pwrseq {
505a2ea2f7SJerome Brunet		compatible = "mmc-pwrseq-emmc";
515a2ea2f7SJerome Brunet		reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
525a2ea2f7SJerome Brunet	};
535a2ea2f7SJerome Brunet
54912a3395SNeil Armstrong	hdmi-connector {
55912a3395SNeil Armstrong		compatible = "hdmi-connector";
56912a3395SNeil Armstrong		type = "a";
57912a3395SNeil Armstrong
58912a3395SNeil Armstrong		port {
59912a3395SNeil Armstrong			hdmi_connector_in: endpoint {
60912a3395SNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
61912a3395SNeil Armstrong			};
62912a3395SNeil Armstrong		};
63912a3395SNeil Armstrong	};
64912a3395SNeil Armstrong
65b7be1449SNeil Armstrong	memory@0 {
66b7be1449SNeil Armstrong		device_type = "memory";
67b7be1449SNeil Armstrong		reg = <0x0 0x0 0x0 0x40000000>;
68b7be1449SNeil Armstrong	};
69b7be1449SNeil Armstrong
7073429cf2SJerome Brunet	ao_5v: regulator-ao_5v {
7173429cf2SJerome Brunet		compatible = "regulator-fixed";
7273429cf2SJerome Brunet		regulator-name = "AO_5V";
7373429cf2SJerome Brunet		regulator-min-microvolt = <5000000>;
7473429cf2SJerome Brunet		regulator-max-microvolt = <5000000>;
7573429cf2SJerome Brunet		vin-supply = <&dc_in>;
7673429cf2SJerome Brunet		regulator-always-on;
77b7be1449SNeil Armstrong	};
7873429cf2SJerome Brunet
7973429cf2SJerome Brunet	dc_in: regulator-dc_in {
8073429cf2SJerome Brunet		compatible = "regulator-fixed";
8173429cf2SJerome Brunet		regulator-name = "DC_IN";
8273429cf2SJerome Brunet		regulator-min-microvolt = <5000000>;
8373429cf2SJerome Brunet		regulator-max-microvolt = <5000000>;
8473429cf2SJerome Brunet		regulator-always-on;
8573429cf2SJerome Brunet	};
8673429cf2SJerome Brunet
8773429cf2SJerome Brunet	emmc_1v8: regulator-emmc_1v8 {
8873429cf2SJerome Brunet		compatible = "regulator-fixed";
8973429cf2SJerome Brunet		regulator-name = "EMMC_1V8";
9073429cf2SJerome Brunet		regulator-min-microvolt = <1800000>;
9173429cf2SJerome Brunet		regulator-max-microvolt = <1800000>;
9273429cf2SJerome Brunet		vin-supply = <&vddao_3v3>;
9373429cf2SJerome Brunet		regulator-always-on;
94b7be1449SNeil Armstrong	};
952297c33cSJerome Brunet
962297c33cSJerome Brunet	vddao_3v3: regulator-vddao_3v3 {
972297c33cSJerome Brunet		compatible = "regulator-fixed";
982297c33cSJerome Brunet		regulator-name = "VDDAO_3V3";
992297c33cSJerome Brunet		regulator-min-microvolt = <3300000>;
1002297c33cSJerome Brunet		regulator-max-microvolt = <3300000>;
1012297c33cSJerome Brunet		vin-supply = <&dc_in>;
1022297c33cSJerome Brunet		regulator-always-on;
1032297c33cSJerome Brunet	};
1042297c33cSJerome Brunet
1052297c33cSJerome Brunet	vddao_3v3_t: regultor-vddao_3v3_t {
1062297c33cSJerome Brunet		compatible = "regulator-fixed";
1072297c33cSJerome Brunet		regulator-name = "VDDAO_3V3_T";
1082297c33cSJerome Brunet		regulator-min-microvolt = <3300000>;
1092297c33cSJerome Brunet		regulator-max-microvolt = <3300000>;
1102297c33cSJerome Brunet		vin-supply = <&vddao_3v3>;
1112297c33cSJerome Brunet		gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
1122297c33cSJerome Brunet		enable-active-high;
1132297c33cSJerome Brunet	};
1142297c33cSJerome Brunet
1152297c33cSJerome Brunet	vddio_ao1v8: regulator-vddio_ao1v8 {
1162297c33cSJerome Brunet		compatible = "regulator-fixed";
1172297c33cSJerome Brunet		regulator-name = "VDDIO_AO1V8";
1182297c33cSJerome Brunet		regulator-min-microvolt = <1800000>;
1192297c33cSJerome Brunet		regulator-max-microvolt = <1800000>;
1202297c33cSJerome Brunet		vin-supply = <&vddao_3v3>;
1212297c33cSJerome Brunet		regulator-always-on;
1222297c33cSJerome Brunet	};
12373429cf2SJerome Brunet
12473429cf2SJerome Brunet	reserved-memory {
12573429cf2SJerome Brunet		/* TEE Reserved Memory */
12673429cf2SJerome Brunet		bl32_reserved: bl32@5000000 {
12773429cf2SJerome Brunet			reg = <0x0 0x05300000 0x0 0x2000000>;
12873429cf2SJerome Brunet			no-map;
12973429cf2SJerome Brunet		};
13073429cf2SJerome Brunet	};
1315f57a09eSNeil Armstrong
1325f57a09eSNeil Armstrong	sdio_pwrseq: sdio-pwrseq {
1335f57a09eSNeil Armstrong		compatible = "mmc-pwrseq-simple";
1345f57a09eSNeil Armstrong		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
1355f57a09eSNeil Armstrong		clocks = <&wifi32k>;
1365f57a09eSNeil Armstrong		clock-names = "ext_clock";
1375f57a09eSNeil Armstrong	};
1385f57a09eSNeil Armstrong
1395f57a09eSNeil Armstrong	wifi32k: wifi32k {
1405f57a09eSNeil Armstrong		compatible = "pwm-clock";
1415f57a09eSNeil Armstrong		#clock-cells = <0>;
1425f57a09eSNeil Armstrong		clock-frequency = <32768>;
1435f57a09eSNeil Armstrong		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
1445f57a09eSNeil Armstrong	};
145d1c023afSNeil Armstrong};
1462297c33cSJerome Brunet
147912a3395SNeil Armstrong&cec_AO {
148912a3395SNeil Armstrong	pinctrl-0 = <&cec_ao_a_h_pins>;
149912a3395SNeil Armstrong	pinctrl-names = "default";
150912a3395SNeil Armstrong	status = "disabled";
151912a3395SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
152912a3395SNeil Armstrong};
153912a3395SNeil Armstrong
154912a3395SNeil Armstrong&cecb_AO {
155912a3395SNeil Armstrong	pinctrl-0 = <&cec_ao_b_h_pins>;
156912a3395SNeil Armstrong	pinctrl-names = "default";
157912a3395SNeil Armstrong	status = "okay";
158912a3395SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
159912a3395SNeil Armstrong};
160912a3395SNeil Armstrong
161912a3395SNeil Armstrong&cvbs_vdac_port {
162912a3395SNeil Armstrong	cvbs_vdac_out: endpoint {
163912a3395SNeil Armstrong		remote-endpoint = <&cvbs_connector_in>;
164912a3395SNeil Armstrong	};
165912a3395SNeil Armstrong};
166912a3395SNeil Armstrong
167a1abafb6SJerome Brunet&ethmac {
168a1abafb6SJerome Brunet	status = "okay";
169a1abafb6SJerome Brunet	phy-handle = <&internal_ephy>;
170a1abafb6SJerome Brunet	phy-mode = "rmii";
171a1abafb6SJerome Brunet};
172a1abafb6SJerome Brunet
17373429cf2SJerome Brunet&hdmi_tx {
17473429cf2SJerome Brunet	status = "okay";
17573429cf2SJerome Brunet	pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
17673429cf2SJerome Brunet	pinctrl-names = "default";
17773429cf2SJerome Brunet};
17873429cf2SJerome Brunet
17973429cf2SJerome Brunet&hdmi_tx_tmds_port {
18073429cf2SJerome Brunet	hdmi_tx_tmds_out: endpoint {
18173429cf2SJerome Brunet		remote-endpoint = <&hdmi_connector_in>;
18273429cf2SJerome Brunet	};
18373429cf2SJerome Brunet};
18473429cf2SJerome Brunet
18532232316SJerome Brunet&i2c3 {
18632232316SJerome Brunet	status = "okay";
18732232316SJerome Brunet	pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
18832232316SJerome Brunet	pinctrl-names = "default";
18932232316SJerome Brunet};
19032232316SJerome Brunet
1915f57a09eSNeil Armstrong&pwm_ef {
1925f57a09eSNeil Armstrong	status = "okay";
1935f57a09eSNeil Armstrong	pinctrl-0 = <&pwm_e_pins>;
1945f57a09eSNeil Armstrong	pinctrl-names = "default";
1955f57a09eSNeil Armstrong	clocks = <&xtal>;
1965f57a09eSNeil Armstrong	clock-names = "clkin0";
1975f57a09eSNeil Armstrong};
1985f57a09eSNeil Armstrong
199d1c023afSNeil Armstrong&saradc {
200d1c023afSNeil Armstrong	status = "okay";
201d1c023afSNeil Armstrong	vref-supply = <&vddio_ao1v8>;
202d1c023afSNeil Armstrong};
203d1c023afSNeil Armstrong
2045f57a09eSNeil Armstrong/* SDIO */
2055f57a09eSNeil Armstrong&sd_emmc_a {
2065f57a09eSNeil Armstrong	status = "okay";
2075f57a09eSNeil Armstrong	pinctrl-0 = <&sdio_pins>;
2085f57a09eSNeil Armstrong	pinctrl-1 = <&sdio_clk_gate_pins>;
2095f57a09eSNeil Armstrong	pinctrl-names = "default", "clk-gate";
2105f57a09eSNeil Armstrong	#address-cells = <1>;
2115f57a09eSNeil Armstrong	#size-cells = <0>;
2125f57a09eSNeil Armstrong
2135f57a09eSNeil Armstrong	bus-width = <4>;
2145f57a09eSNeil Armstrong	cap-sd-highspeed;
2155f57a09eSNeil Armstrong	sd-uhs-sdr50;
2165f57a09eSNeil Armstrong	max-frequency = <100000000>;
2175f57a09eSNeil Armstrong
2185f57a09eSNeil Armstrong	non-removable;
2195f57a09eSNeil Armstrong	disable-wp;
2205f57a09eSNeil Armstrong
2215f57a09eSNeil Armstrong	mmc-pwrseq = <&sdio_pwrseq>;
2225f57a09eSNeil Armstrong
2235f57a09eSNeil Armstrong	vmmc-supply = <&vddao_3v3>;
2245f57a09eSNeil Armstrong	vqmmc-supply = <&vddio_ao1v8>;
2255f57a09eSNeil Armstrong
2265f57a09eSNeil Armstrong	brcmf: wifi@1 {
2275f57a09eSNeil Armstrong		reg = <1>;
2285f57a09eSNeil Armstrong		compatible = "brcm,bcm4329-fmac";
2295f57a09eSNeil Armstrong	};
2305f57a09eSNeil Armstrong};
2315f57a09eSNeil Armstrong
2325a2ea2f7SJerome Brunet/* SD card */
2335a2ea2f7SJerome Brunet&sd_emmc_b {
2345a2ea2f7SJerome Brunet	status = "okay";
2355a2ea2f7SJerome Brunet	pinctrl-0 = <&sdcard_c_pins>;
2365a2ea2f7SJerome Brunet	pinctrl-1 = <&sdcard_clk_gate_c_pins>;
2375a2ea2f7SJerome Brunet	pinctrl-names = "default", "clk-gate";
2385a2ea2f7SJerome Brunet
2395a2ea2f7SJerome Brunet	bus-width = <4>;
2405a2ea2f7SJerome Brunet	cap-sd-highspeed;
2415a2ea2f7SJerome Brunet	max-frequency = <50000000>;
2425a2ea2f7SJerome Brunet	disable-wp;
2435a2ea2f7SJerome Brunet
2445a2ea2f7SJerome Brunet	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
2455a2ea2f7SJerome Brunet	vmmc-supply = <&vddao_3v3>;
2465a2ea2f7SJerome Brunet	vqmmc-supply = <&vddao_3v3>;
2475a2ea2f7SJerome Brunet};
2485a2ea2f7SJerome Brunet
2495a2ea2f7SJerome Brunet/* eMMC */
2505a2ea2f7SJerome Brunet&sd_emmc_c {
2515a2ea2f7SJerome Brunet	status = "okay";
2525a2ea2f7SJerome Brunet	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
2535a2ea2f7SJerome Brunet	pinctrl-1 = <&emmc_clk_gate_pins>;
2545a2ea2f7SJerome Brunet	pinctrl-names = "default", "clk-gate";
2555a2ea2f7SJerome Brunet
2565a2ea2f7SJerome Brunet	bus-width = <8>;
2575a2ea2f7SJerome Brunet	cap-mmc-highspeed;
2585a2ea2f7SJerome Brunet	mmc-ddr-1_8v;
2595a2ea2f7SJerome Brunet	mmc-hs200-1_8v;
2605a2ea2f7SJerome Brunet	max-frequency = <200000000>;
2615a2ea2f7SJerome Brunet	non-removable;
2625a2ea2f7SJerome Brunet	disable-wp;
2635a2ea2f7SJerome Brunet
2645a2ea2f7SJerome Brunet	mmc-pwrseq = <&emmc_pwrseq>;
2655a2ea2f7SJerome Brunet	vmmc-supply = <&vddao_3v3>;
2665a2ea2f7SJerome Brunet	vqmmc-supply = <&emmc_1v8>;
2675a2ea2f7SJerome Brunet};
2685a2ea2f7SJerome Brunet
269d1c023afSNeil Armstrong&uart_A {
270d1c023afSNeil Armstrong	status = "okay";
271d1c023afSNeil Armstrong	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
272d1c023afSNeil Armstrong	pinctrl-names = "default";
273d1c023afSNeil Armstrong	uart-has-rtscts;
274d1c023afSNeil Armstrong
275d1c023afSNeil Armstrong	bluetooth {
276d1c023afSNeil Armstrong		compatible = "brcm,bcm43438-bt";
277d1c023afSNeil Armstrong		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
278d272c534SJerome Brunet		vbat-supply = <&vddao_3v3>;
279d272c534SJerome Brunet		vddio-supply = <&vddio_ao1v8>;
280d1c023afSNeil Armstrong	};
281b7be1449SNeil Armstrong};
282b7be1449SNeil Armstrong
283b7be1449SNeil Armstrong&uart_AO {
284b7be1449SNeil Armstrong	status = "okay";
28551d215c1SNeil Armstrong	pinctrl-0 = <&uart_ao_a_pins>;
28651d215c1SNeil Armstrong	pinctrl-names = "default";
287b7be1449SNeil Armstrong};
28841cc4551SNeil Armstrong
28941cc4551SNeil Armstrong&usb {
29041cc4551SNeil Armstrong	status = "okay";
29141cc4551SNeil Armstrong	dr_mode = "host";
29241cc4551SNeil Armstrong};
293