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
35b06c8c6eSMaxime Jourdan	mono_dac: audio-codec {
36b06c8c6eSMaxime Jourdan		compatible = "maxim,max98357a";
37b06c8c6eSMaxime Jourdan		#sound-dai-cells = <0>;
38b06c8c6eSMaxime Jourdan		sound-name-prefix = "U16";
39b06c8c6eSMaxime Jourdan		sdmode-gpios = <&gpio GPIOX_8 GPIO_ACTIVE_HIGH>;
40b06c8c6eSMaxime Jourdan	};
41b06c8c6eSMaxime Jourdan
42b7be1449SNeil Armstrong	chosen {
43b7be1449SNeil Armstrong		stdout-path = "serial0:115200n8";
44b7be1449SNeil Armstrong	};
45b7be1449SNeil Armstrong
46912a3395SNeil Armstrong	cvbs-connector {
47912a3395SNeil Armstrong		compatible = "composite-video-connector";
48912a3395SNeil Armstrong
49912a3395SNeil Armstrong		port {
50912a3395SNeil Armstrong			cvbs_connector_in: endpoint {
51912a3395SNeil Armstrong				remote-endpoint = <&cvbs_vdac_out>;
52912a3395SNeil Armstrong			};
53912a3395SNeil Armstrong		};
54912a3395SNeil Armstrong	};
55912a3395SNeil Armstrong
565a2ea2f7SJerome Brunet	emmc_pwrseq: emmc-pwrseq {
575a2ea2f7SJerome Brunet		compatible = "mmc-pwrseq-emmc";
585a2ea2f7SJerome Brunet		reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
595a2ea2f7SJerome Brunet	};
605a2ea2f7SJerome Brunet
61912a3395SNeil Armstrong	hdmi-connector {
62912a3395SNeil Armstrong		compatible = "hdmi-connector";
63912a3395SNeil Armstrong		type = "a";
64912a3395SNeil Armstrong
65912a3395SNeil Armstrong		port {
66912a3395SNeil Armstrong			hdmi_connector_in: endpoint {
67912a3395SNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
68912a3395SNeil Armstrong			};
69912a3395SNeil Armstrong		};
70912a3395SNeil Armstrong	};
71912a3395SNeil Armstrong
72b7be1449SNeil Armstrong	memory@0 {
73b7be1449SNeil Armstrong		device_type = "memory";
74b7be1449SNeil Armstrong		reg = <0x0 0x0 0x0 0x40000000>;
75b7be1449SNeil Armstrong	};
76b7be1449SNeil Armstrong
7773429cf2SJerome Brunet	ao_5v: regulator-ao_5v {
7873429cf2SJerome Brunet		compatible = "regulator-fixed";
7973429cf2SJerome Brunet		regulator-name = "AO_5V";
8073429cf2SJerome Brunet		regulator-min-microvolt = <5000000>;
8173429cf2SJerome Brunet		regulator-max-microvolt = <5000000>;
8273429cf2SJerome Brunet		vin-supply = <&dc_in>;
8373429cf2SJerome Brunet		regulator-always-on;
84b7be1449SNeil Armstrong	};
8573429cf2SJerome Brunet
8673429cf2SJerome Brunet	dc_in: regulator-dc_in {
8773429cf2SJerome Brunet		compatible = "regulator-fixed";
8873429cf2SJerome Brunet		regulator-name = "DC_IN";
8973429cf2SJerome Brunet		regulator-min-microvolt = <5000000>;
9073429cf2SJerome Brunet		regulator-max-microvolt = <5000000>;
9173429cf2SJerome Brunet		regulator-always-on;
9273429cf2SJerome Brunet	};
9373429cf2SJerome Brunet
9473429cf2SJerome Brunet	emmc_1v8: regulator-emmc_1v8 {
9573429cf2SJerome Brunet		compatible = "regulator-fixed";
9673429cf2SJerome Brunet		regulator-name = "EMMC_1V8";
9773429cf2SJerome Brunet		regulator-min-microvolt = <1800000>;
9873429cf2SJerome Brunet		regulator-max-microvolt = <1800000>;
9973429cf2SJerome Brunet		vin-supply = <&vddao_3v3>;
10073429cf2SJerome Brunet		regulator-always-on;
101b7be1449SNeil Armstrong	};
1022297c33cSJerome Brunet
1032297c33cSJerome Brunet	vddao_3v3: regulator-vddao_3v3 {
1042297c33cSJerome Brunet		compatible = "regulator-fixed";
1052297c33cSJerome Brunet		regulator-name = "VDDAO_3V3";
1062297c33cSJerome Brunet		regulator-min-microvolt = <3300000>;
1072297c33cSJerome Brunet		regulator-max-microvolt = <3300000>;
1082297c33cSJerome Brunet		vin-supply = <&dc_in>;
1092297c33cSJerome Brunet		regulator-always-on;
1102297c33cSJerome Brunet	};
1112297c33cSJerome Brunet
1122297c33cSJerome Brunet	vddao_3v3_t: regultor-vddao_3v3_t {
1132297c33cSJerome Brunet		compatible = "regulator-fixed";
1142297c33cSJerome Brunet		regulator-name = "VDDAO_3V3_T";
1152297c33cSJerome Brunet		regulator-min-microvolt = <3300000>;
1162297c33cSJerome Brunet		regulator-max-microvolt = <3300000>;
1172297c33cSJerome Brunet		vin-supply = <&vddao_3v3>;
1182297c33cSJerome Brunet		gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
1192297c33cSJerome Brunet		enable-active-high;
1202297c33cSJerome Brunet	};
1212297c33cSJerome Brunet
1222297c33cSJerome Brunet	vddio_ao1v8: regulator-vddio_ao1v8 {
1232297c33cSJerome Brunet		compatible = "regulator-fixed";
1242297c33cSJerome Brunet		regulator-name = "VDDIO_AO1V8";
1252297c33cSJerome Brunet		regulator-min-microvolt = <1800000>;
1262297c33cSJerome Brunet		regulator-max-microvolt = <1800000>;
1272297c33cSJerome Brunet		vin-supply = <&vddao_3v3>;
1282297c33cSJerome Brunet		regulator-always-on;
1292297c33cSJerome Brunet	};
13073429cf2SJerome Brunet
13173429cf2SJerome Brunet	reserved-memory {
13273429cf2SJerome Brunet		/* TEE Reserved Memory */
13373429cf2SJerome Brunet		bl32_reserved: bl32@5000000 {
13473429cf2SJerome Brunet			reg = <0x0 0x05300000 0x0 0x2000000>;
13573429cf2SJerome Brunet			no-map;
13673429cf2SJerome Brunet		};
13773429cf2SJerome Brunet	};
1385f57a09eSNeil Armstrong
1395f57a09eSNeil Armstrong	sdio_pwrseq: sdio-pwrseq {
1405f57a09eSNeil Armstrong		compatible = "mmc-pwrseq-simple";
1415f57a09eSNeil Armstrong		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
1425f57a09eSNeil Armstrong		clocks = <&wifi32k>;
1435f57a09eSNeil Armstrong		clock-names = "ext_clock";
1445f57a09eSNeil Armstrong	};
1455f57a09eSNeil Armstrong
1465f57a09eSNeil Armstrong	wifi32k: wifi32k {
1475f57a09eSNeil Armstrong		compatible = "pwm-clock";
1485f57a09eSNeil Armstrong		#clock-cells = <0>;
1495f57a09eSNeil Armstrong		clock-frequency = <32768>;
1505f57a09eSNeil Armstrong		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
1515f57a09eSNeil Armstrong	};
152d1c023afSNeil Armstrong};
1532297c33cSJerome Brunet
154912a3395SNeil Armstrong&cec_AO {
155912a3395SNeil Armstrong	pinctrl-0 = <&cec_ao_a_h_pins>;
156912a3395SNeil Armstrong	pinctrl-names = "default";
157912a3395SNeil Armstrong	status = "disabled";
158912a3395SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
159912a3395SNeil Armstrong};
160912a3395SNeil Armstrong
161912a3395SNeil Armstrong&cecb_AO {
162912a3395SNeil Armstrong	pinctrl-0 = <&cec_ao_b_h_pins>;
163912a3395SNeil Armstrong	pinctrl-names = "default";
164912a3395SNeil Armstrong	status = "okay";
165912a3395SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
166912a3395SNeil Armstrong};
167912a3395SNeil Armstrong
168912a3395SNeil Armstrong&cvbs_vdac_port {
169912a3395SNeil Armstrong	cvbs_vdac_out: endpoint {
170912a3395SNeil Armstrong		remote-endpoint = <&cvbs_connector_in>;
171912a3395SNeil Armstrong	};
172912a3395SNeil Armstrong};
173912a3395SNeil Armstrong
174a1abafb6SJerome Brunet&ethmac {
175a1abafb6SJerome Brunet	status = "okay";
176a1abafb6SJerome Brunet	phy-handle = <&internal_ephy>;
177a1abafb6SJerome Brunet	phy-mode = "rmii";
178a1abafb6SJerome Brunet};
179a1abafb6SJerome Brunet
18073429cf2SJerome Brunet&hdmi_tx {
18173429cf2SJerome Brunet	status = "okay";
18273429cf2SJerome Brunet	pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
18373429cf2SJerome Brunet	pinctrl-names = "default";
18473429cf2SJerome Brunet};
18573429cf2SJerome Brunet
18673429cf2SJerome Brunet&hdmi_tx_tmds_port {
18773429cf2SJerome Brunet	hdmi_tx_tmds_out: endpoint {
18873429cf2SJerome Brunet		remote-endpoint = <&hdmi_connector_in>;
18973429cf2SJerome Brunet	};
19073429cf2SJerome Brunet};
19173429cf2SJerome Brunet
19232232316SJerome Brunet&i2c3 {
19332232316SJerome Brunet	status = "okay";
19432232316SJerome Brunet	pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
19532232316SJerome Brunet	pinctrl-names = "default";
19632232316SJerome Brunet};
19732232316SJerome Brunet
1985f57a09eSNeil Armstrong&pwm_ef {
1995f57a09eSNeil Armstrong	status = "okay";
2005f57a09eSNeil Armstrong	pinctrl-0 = <&pwm_e_pins>;
2015f57a09eSNeil Armstrong	pinctrl-names = "default";
2025f57a09eSNeil Armstrong	clocks = <&xtal>;
2035f57a09eSNeil Armstrong	clock-names = "clkin0";
2045f57a09eSNeil Armstrong};
2055f57a09eSNeil Armstrong
206d1c023afSNeil Armstrong&saradc {
207d1c023afSNeil Armstrong	status = "okay";
208d1c023afSNeil Armstrong	vref-supply = <&vddio_ao1v8>;
209d1c023afSNeil Armstrong};
210d1c023afSNeil Armstrong
2115f57a09eSNeil Armstrong/* SDIO */
2125f57a09eSNeil Armstrong&sd_emmc_a {
2135f57a09eSNeil Armstrong	status = "okay";
2145f57a09eSNeil Armstrong	pinctrl-0 = <&sdio_pins>;
2155f57a09eSNeil Armstrong	pinctrl-1 = <&sdio_clk_gate_pins>;
2165f57a09eSNeil Armstrong	pinctrl-names = "default", "clk-gate";
2175f57a09eSNeil Armstrong	#address-cells = <1>;
2185f57a09eSNeil Armstrong	#size-cells = <0>;
2195f57a09eSNeil Armstrong
2205f57a09eSNeil Armstrong	bus-width = <4>;
2215f57a09eSNeil Armstrong	cap-sd-highspeed;
2225f57a09eSNeil Armstrong	sd-uhs-sdr50;
2235f57a09eSNeil Armstrong	max-frequency = <100000000>;
2245f57a09eSNeil Armstrong
2255f57a09eSNeil Armstrong	non-removable;
2265f57a09eSNeil Armstrong	disable-wp;
2275f57a09eSNeil Armstrong
2285f57a09eSNeil Armstrong	mmc-pwrseq = <&sdio_pwrseq>;
2295f57a09eSNeil Armstrong
2305f57a09eSNeil Armstrong	vmmc-supply = <&vddao_3v3>;
2315f57a09eSNeil Armstrong	vqmmc-supply = <&vddio_ao1v8>;
2325f57a09eSNeil Armstrong
2335f57a09eSNeil Armstrong	brcmf: wifi@1 {
2345f57a09eSNeil Armstrong		reg = <1>;
2355f57a09eSNeil Armstrong		compatible = "brcm,bcm4329-fmac";
2365f57a09eSNeil Armstrong	};
2375f57a09eSNeil Armstrong};
2385f57a09eSNeil Armstrong
2395a2ea2f7SJerome Brunet/* SD card */
2405a2ea2f7SJerome Brunet&sd_emmc_b {
2415a2ea2f7SJerome Brunet	status = "okay";
2425a2ea2f7SJerome Brunet	pinctrl-0 = <&sdcard_c_pins>;
2435a2ea2f7SJerome Brunet	pinctrl-1 = <&sdcard_clk_gate_c_pins>;
2445a2ea2f7SJerome Brunet	pinctrl-names = "default", "clk-gate";
2455a2ea2f7SJerome Brunet
2465a2ea2f7SJerome Brunet	bus-width = <4>;
2475a2ea2f7SJerome Brunet	cap-sd-highspeed;
2485a2ea2f7SJerome Brunet	max-frequency = <50000000>;
2495a2ea2f7SJerome Brunet	disable-wp;
2505a2ea2f7SJerome Brunet
2515a2ea2f7SJerome Brunet	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
2525a2ea2f7SJerome Brunet	vmmc-supply = <&vddao_3v3>;
2535a2ea2f7SJerome Brunet	vqmmc-supply = <&vddao_3v3>;
2545a2ea2f7SJerome Brunet};
2555a2ea2f7SJerome Brunet
2565a2ea2f7SJerome Brunet/* eMMC */
2575a2ea2f7SJerome Brunet&sd_emmc_c {
2585a2ea2f7SJerome Brunet	status = "okay";
2595a2ea2f7SJerome Brunet	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
2605a2ea2f7SJerome Brunet	pinctrl-1 = <&emmc_clk_gate_pins>;
2615a2ea2f7SJerome Brunet	pinctrl-names = "default", "clk-gate";
2625a2ea2f7SJerome Brunet
2635a2ea2f7SJerome Brunet	bus-width = <8>;
2645a2ea2f7SJerome Brunet	cap-mmc-highspeed;
2655a2ea2f7SJerome Brunet	mmc-ddr-1_8v;
2665a2ea2f7SJerome Brunet	mmc-hs200-1_8v;
2675a2ea2f7SJerome Brunet	max-frequency = <200000000>;
2685a2ea2f7SJerome Brunet	non-removable;
2695a2ea2f7SJerome Brunet	disable-wp;
2705a2ea2f7SJerome Brunet
2715a2ea2f7SJerome Brunet	mmc-pwrseq = <&emmc_pwrseq>;
2725a2ea2f7SJerome Brunet	vmmc-supply = <&vddao_3v3>;
2735a2ea2f7SJerome Brunet	vqmmc-supply = <&emmc_1v8>;
2745a2ea2f7SJerome Brunet};
2755a2ea2f7SJerome Brunet
276d1c023afSNeil Armstrong&uart_A {
277d1c023afSNeil Armstrong	status = "okay";
278d1c023afSNeil Armstrong	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
279d1c023afSNeil Armstrong	pinctrl-names = "default";
280d1c023afSNeil Armstrong	uart-has-rtscts;
281d1c023afSNeil Armstrong
282d1c023afSNeil Armstrong	bluetooth {
283d1c023afSNeil Armstrong		compatible = "brcm,bcm43438-bt";
284d1c023afSNeil Armstrong		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
285dff60019SNeil Armstrong		max-speed = <2000000>;
286faf438e0SNeil Armstrong		clocks = <&wifi32k>;
287faf438e0SNeil Armstrong		clock-names = "lpo";
288d272c534SJerome Brunet		vbat-supply = <&vddao_3v3>;
289d272c534SJerome Brunet		vddio-supply = <&vddio_ao1v8>;
290d1c023afSNeil Armstrong	};
291b7be1449SNeil Armstrong};
292b7be1449SNeil Armstrong
293b7be1449SNeil Armstrong&uart_AO {
294b7be1449SNeil Armstrong	status = "okay";
29551d215c1SNeil Armstrong	pinctrl-0 = <&uart_ao_a_pins>;
29651d215c1SNeil Armstrong	pinctrl-names = "default";
297b7be1449SNeil Armstrong};
29841cc4551SNeil Armstrong
29941cc4551SNeil Armstrong&usb {
30041cc4551SNeil Armstrong	status = "okay";
30141cc4551SNeil Armstrong	dr_mode = "host";
30241cc4551SNeil Armstrong};
303