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	leds {
55		compatible = "gpio-leds";
56
57		bluetooth {
58			label = "sei610:blue:bt";
59			gpios = <&gpio GPIOC_7 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
60			default-state = "off";
61		};
62	};
63
64	pwmleds {
65		compatible = "pwm-leds";
66
67		power {
68			label = "sei610:red:power";
69			pwms = <&pwm_AO_ab 0 30518 0>;
70			max-brightness = <255>;
71			linux,default-trigger = "default-on";
72			active-low;
73		};
74	};
75
76	memory@0 {
77		device_type = "memory";
78		reg = <0x0 0x0 0x0 0x40000000>;
79	};
80
81	ao_5v: regulator-ao_5v {
82		compatible = "regulator-fixed";
83		regulator-name = "AO_5V";
84		regulator-min-microvolt = <5000000>;
85		regulator-max-microvolt = <5000000>;
86		vin-supply = <&dc_in>;
87		regulator-always-on;
88	};
89
90	dc_in: regulator-dc_in {
91		compatible = "regulator-fixed";
92		regulator-name = "DC_IN";
93		regulator-min-microvolt = <5000000>;
94		regulator-max-microvolt = <5000000>;
95		regulator-always-on;
96	};
97
98	emmc_1v8: regulator-emmc_1v8 {
99		compatible = "regulator-fixed";
100		regulator-name = "EMMC_1V8";
101		regulator-min-microvolt = <1800000>;
102		regulator-max-microvolt = <1800000>;
103		vin-supply = <&vddao_3v3>;
104		regulator-always-on;
105	};
106
107	vddao_3v3: regulator-vddao_3v3 {
108		compatible = "regulator-fixed";
109		regulator-name = "VDDAO_3V3";
110		regulator-min-microvolt = <3300000>;
111		regulator-max-microvolt = <3300000>;
112		vin-supply = <&dc_in>;
113		regulator-always-on;
114	};
115
116	/* Used by Tuner, RGB Led & IR Emitter LED array */
117	vddao_3v3_t: regulator-vddao_3v3_t {
118		compatible = "regulator-fixed";
119		regulator-name = "VDDAO_3V3_T";
120		regulator-min-microvolt = <3300000>;
121		regulator-max-microvolt = <3300000>;
122		vin-supply = <&vddao_3v3>;
123		gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
124		enable-active-low;
125		regulator-always-on;
126	};
127
128	vddio_ao1v8: regulator-vddio_ao1v8 {
129		compatible = "regulator-fixed";
130		regulator-name = "VDDIO_AO1V8";
131		regulator-min-microvolt = <1800000>;
132		regulator-max-microvolt = <1800000>;
133		vin-supply = <&vddao_3v3>;
134		regulator-always-on;
135	};
136
137	reserved-memory {
138		/* TEE Reserved Memory */
139		bl32_reserved: bl32@5000000 {
140			reg = <0x0 0x05300000 0x0 0x2000000>;
141			no-map;
142		};
143	};
144
145	sdio_pwrseq: sdio-pwrseq {
146		compatible = "mmc-pwrseq-simple";
147		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
148		clocks = <&wifi32k>;
149		clock-names = "ext_clock";
150	};
151
152	wifi32k: wifi32k {
153		compatible = "pwm-clock";
154		#clock-cells = <0>;
155		clock-frequency = <32768>;
156		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
157	};
158};
159
160&cec_AO {
161	pinctrl-0 = <&cec_ao_a_h_pins>;
162	pinctrl-names = "default";
163	status = "disabled";
164	hdmi-phandle = <&hdmi_tx>;
165};
166
167&cecb_AO {
168	pinctrl-0 = <&cec_ao_b_h_pins>;
169	pinctrl-names = "default";
170	status = "okay";
171	hdmi-phandle = <&hdmi_tx>;
172};
173
174&ethmac {
175	status = "okay";
176	phy-handle = <&internal_ephy>;
177	phy-mode = "rmii";
178};
179
180&i2c3 {
181	status = "okay";
182	pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
183	pinctrl-names = "default";
184};
185
186&ir {
187	status = "okay";
188	pinctrl-0 = <&remote_input_ao_pins>;
189	pinctrl-names = "default";
190};
191
192&pwm_AO_ab {
193	status = "okay";
194	pinctrl-0 = <&pwm_ao_a_pins>;
195	pinctrl-names = "default";
196	clocks = <&xtal>;
197	clock-names = "clkin0";
198};
199
200&pwm_ef {
201	status = "okay";
202	pinctrl-0 = <&pwm_e_pins>;
203	pinctrl-names = "default";
204	clocks = <&xtal>;
205	clock-names = "clkin0";
206};
207
208&saradc {
209	status = "okay";
210	vref-supply = <&vddio_ao1v8>;
211};
212
213/* SDIO */
214&sd_emmc_a {
215	status = "okay";
216	pinctrl-0 = <&sdio_pins>;
217	pinctrl-1 = <&sdio_clk_gate_pins>;
218	pinctrl-names = "default", "clk-gate";
219	#address-cells = <1>;
220	#size-cells = <0>;
221
222	bus-width = <4>;
223	cap-sd-highspeed;
224	sd-uhs-sdr50;
225	max-frequency = <100000000>;
226
227	non-removable;
228	disable-wp;
229
230	mmc-pwrseq = <&sdio_pwrseq>;
231
232	vmmc-supply = <&vddao_3v3>;
233	vqmmc-supply = <&vddio_ao1v8>;
234
235	brcmf: wifi@1 {
236		reg = <1>;
237		compatible = "brcm,bcm4329-fmac";
238	};
239};
240
241/* SD card */
242&sd_emmc_b {
243	status = "okay";
244	pinctrl-0 = <&sdcard_c_pins>;
245	pinctrl-1 = <&sdcard_clk_gate_c_pins>;
246	pinctrl-names = "default", "clk-gate";
247
248	bus-width = <4>;
249	cap-sd-highspeed;
250	max-frequency = <50000000>;
251	disable-wp;
252
253	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
254	vmmc-supply = <&vddao_3v3>;
255	vqmmc-supply = <&vddao_3v3>;
256};
257
258/* eMMC */
259&sd_emmc_c {
260	status = "okay";
261	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
262	pinctrl-1 = <&emmc_clk_gate_pins>;
263	pinctrl-names = "default", "clk-gate";
264
265	bus-width = <8>;
266	cap-mmc-highspeed;
267	mmc-ddr-1_8v;
268	mmc-hs200-1_8v;
269	max-frequency = <200000000>;
270	non-removable;
271	disable-wp;
272
273	mmc-pwrseq = <&emmc_pwrseq>;
274	vmmc-supply = <&vddao_3v3>;
275	vqmmc-supply = <&emmc_1v8>;
276};
277
278&uart_A {
279	status = "okay";
280	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
281	pinctrl-names = "default";
282	uart-has-rtscts;
283
284	bluetooth {
285		compatible = "brcm,bcm43438-bt";
286		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
287		max-speed = <2000000>;
288		clocks = <&wifi32k>;
289		clock-names = "lpo";
290		vbat-supply = <&vddao_3v3>;
291		vddio-supply = <&vddio_ao1v8>;
292	};
293};
294
295/* Exposed via the on-board USB to Serial FT232RL IC */
296&uart_AO {
297	status = "okay";
298	pinctrl-0 = <&uart_ao_a_pins>;
299	pinctrl-names = "default";
300};
301