1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2019 BayLibre SAS. All rights reserved.
4 */
5
6/dts-v1/;
7
8#include "meson-sm1.dtsi"
9#include <dt-bindings/gpio/gpio.h>
10#include <dt-bindings/input/input.h>
11#include <dt-bindings/gpio/meson-g12a-gpio.h>
12
13/ {
14	compatible = "seirobotics,sei610", "amlogic,sm1";
15	model = "SEI Robotics SEI610";
16
17	aliases {
18		serial0 = &uart_AO;
19		ethernet0 = &ethmac;
20	};
21
22	chosen {
23		stdout-path = "serial0:115200n8";
24	};
25
26	emmc_pwrseq: emmc-pwrseq {
27		compatible = "mmc-pwrseq-emmc";
28		reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
29	};
30
31	gpio-keys {
32		compatible = "gpio-keys-polled";
33		poll-interval = <100>;
34
35		key1 {
36			label = "A";
37			linux,code = <BTN_0>;
38			gpios = <&gpio GPIOH_6 GPIO_ACTIVE_LOW>;
39		};
40
41		key2 {
42			label = "B";
43			linux,code = <BTN_1>;
44			gpios = <&gpio GPIOH_7 GPIO_ACTIVE_LOW>;
45		};
46
47		key3 {
48			label = "C";
49			linux,code = <BTN_2>;
50			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
51		};
52	};
53
54	hdmi-connector {
55		compatible = "hdmi-connector";
56		type = "a";
57
58		port {
59			hdmi_connector_in: endpoint {
60				remote-endpoint = <&hdmi_tx_tmds_out>;
61			};
62		};
63	};
64
65	leds {
66		compatible = "gpio-leds";
67
68		bluetooth {
69			label = "sei610:blue:bt";
70			gpios = <&gpio GPIOC_7 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
71			default-state = "off";
72		};
73	};
74
75	pwmleds {
76		compatible = "pwm-leds";
77
78		power {
79			label = "sei610:red:power";
80			pwms = <&pwm_AO_ab 0 30518 0>;
81			max-brightness = <255>;
82			linux,default-trigger = "default-on";
83			active-low;
84		};
85	};
86
87	memory@0 {
88		device_type = "memory";
89		reg = <0x0 0x0 0x0 0x40000000>;
90	};
91
92	ao_5v: regulator-ao_5v {
93		compatible = "regulator-fixed";
94		regulator-name = "AO_5V";
95		regulator-min-microvolt = <5000000>;
96		regulator-max-microvolt = <5000000>;
97		vin-supply = <&dc_in>;
98		regulator-always-on;
99	};
100
101	dc_in: regulator-dc_in {
102		compatible = "regulator-fixed";
103		regulator-name = "DC_IN";
104		regulator-min-microvolt = <5000000>;
105		regulator-max-microvolt = <5000000>;
106		regulator-always-on;
107	};
108
109	emmc_1v8: regulator-emmc_1v8 {
110		compatible = "regulator-fixed";
111		regulator-name = "EMMC_1V8";
112		regulator-min-microvolt = <1800000>;
113		regulator-max-microvolt = <1800000>;
114		vin-supply = <&vddao_3v3>;
115		regulator-always-on;
116	};
117
118	vddao_3v3: regulator-vddao_3v3 {
119		compatible = "regulator-fixed";
120		regulator-name = "VDDAO_3V3";
121		regulator-min-microvolt = <3300000>;
122		regulator-max-microvolt = <3300000>;
123		vin-supply = <&dc_in>;
124		regulator-always-on;
125	};
126
127	/* Used by Tuner, RGB Led & IR Emitter LED array */
128	vddao_3v3_t: regulator-vddao_3v3_t {
129		compatible = "regulator-fixed";
130		regulator-name = "VDDAO_3V3_T";
131		regulator-min-microvolt = <3300000>;
132		regulator-max-microvolt = <3300000>;
133		vin-supply = <&vddao_3v3>;
134		gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
135		enable-active-low;
136		regulator-always-on;
137	};
138
139	vddio_ao1v8: regulator-vddio_ao1v8 {
140		compatible = "regulator-fixed";
141		regulator-name = "VDDIO_AO1V8";
142		regulator-min-microvolt = <1800000>;
143		regulator-max-microvolt = <1800000>;
144		vin-supply = <&vddao_3v3>;
145		regulator-always-on;
146	};
147
148	reserved-memory {
149		/* TEE Reserved Memory */
150		bl32_reserved: bl32@5000000 {
151			reg = <0x0 0x05300000 0x0 0x2000000>;
152			no-map;
153		};
154	};
155
156	sdio_pwrseq: sdio-pwrseq {
157		compatible = "mmc-pwrseq-simple";
158		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
159		clocks = <&wifi32k>;
160		clock-names = "ext_clock";
161	};
162
163	wifi32k: wifi32k {
164		compatible = "pwm-clock";
165		#clock-cells = <0>;
166		clock-frequency = <32768>;
167		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
168	};
169};
170
171&cec_AO {
172	pinctrl-0 = <&cec_ao_a_h_pins>;
173	pinctrl-names = "default";
174	status = "disabled";
175	hdmi-phandle = <&hdmi_tx>;
176};
177
178&cecb_AO {
179	pinctrl-0 = <&cec_ao_b_h_pins>;
180	pinctrl-names = "default";
181	status = "okay";
182	hdmi-phandle = <&hdmi_tx>;
183};
184
185&ethmac {
186	status = "okay";
187	phy-handle = <&internal_ephy>;
188	phy-mode = "rmii";
189};
190
191&hdmi_tx {
192	status = "okay";
193	pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
194	pinctrl-names = "default";
195};
196
197&hdmi_tx_tmds_port {
198	hdmi_tx_tmds_out: endpoint {
199		remote-endpoint = <&hdmi_connector_in>;
200	};
201};
202
203&i2c3 {
204	status = "okay";
205	pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
206	pinctrl-names = "default";
207};
208
209&ir {
210	status = "okay";
211	pinctrl-0 = <&remote_input_ao_pins>;
212	pinctrl-names = "default";
213};
214
215&pwm_AO_ab {
216	status = "okay";
217	pinctrl-0 = <&pwm_ao_a_pins>;
218	pinctrl-names = "default";
219	clocks = <&xtal>;
220	clock-names = "clkin0";
221};
222
223&pwm_ef {
224	status = "okay";
225	pinctrl-0 = <&pwm_e_pins>;
226	pinctrl-names = "default";
227	clocks = <&xtal>;
228	clock-names = "clkin0";
229};
230
231&saradc {
232	status = "okay";
233	vref-supply = <&vddio_ao1v8>;
234};
235
236/* SDIO */
237&sd_emmc_a {
238	status = "okay";
239	pinctrl-0 = <&sdio_pins>;
240	pinctrl-1 = <&sdio_clk_gate_pins>;
241	pinctrl-names = "default", "clk-gate";
242	#address-cells = <1>;
243	#size-cells = <0>;
244
245	bus-width = <4>;
246	cap-sd-highspeed;
247	sd-uhs-sdr50;
248	max-frequency = <100000000>;
249
250	non-removable;
251	disable-wp;
252
253	mmc-pwrseq = <&sdio_pwrseq>;
254
255	vmmc-supply = <&vddao_3v3>;
256	vqmmc-supply = <&vddio_ao1v8>;
257
258	brcmf: wifi@1 {
259		reg = <1>;
260		compatible = "brcm,bcm4329-fmac";
261	};
262};
263
264/* SD card */
265&sd_emmc_b {
266	status = "okay";
267	pinctrl-0 = <&sdcard_c_pins>;
268	pinctrl-1 = <&sdcard_clk_gate_c_pins>;
269	pinctrl-names = "default", "clk-gate";
270
271	bus-width = <4>;
272	cap-sd-highspeed;
273	max-frequency = <50000000>;
274	disable-wp;
275
276	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
277	vmmc-supply = <&vddao_3v3>;
278	vqmmc-supply = <&vddao_3v3>;
279};
280
281/* eMMC */
282&sd_emmc_c {
283	status = "okay";
284	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
285	pinctrl-1 = <&emmc_clk_gate_pins>;
286	pinctrl-names = "default", "clk-gate";
287
288	bus-width = <8>;
289	cap-mmc-highspeed;
290	mmc-ddr-1_8v;
291	mmc-hs200-1_8v;
292	max-frequency = <200000000>;
293	non-removable;
294	disable-wp;
295
296	mmc-pwrseq = <&emmc_pwrseq>;
297	vmmc-supply = <&vddao_3v3>;
298	vqmmc-supply = <&emmc_1v8>;
299};
300
301&uart_A {
302	status = "okay";
303	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
304	pinctrl-names = "default";
305	uart-has-rtscts;
306
307	bluetooth {
308		compatible = "brcm,bcm43438-bt";
309		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
310		max-speed = <2000000>;
311		clocks = <&wifi32k>;
312		clock-names = "lpo";
313		vbat-supply = <&vddao_3v3>;
314		vddio-supply = <&vddio_ao1v8>;
315	};
316};
317
318/* Exposed via the on-board USB to Serial FT232RL IC */
319&uart_AO {
320	status = "okay";
321	pinctrl-0 = <&uart_ao_a_pins>;
322	pinctrl-names = "default";
323};
324
325&usb {
326	status = "okay";
327	dr_mode = "otg";
328};
329