GNU Linux-libre 5.4.274-gnu1
[releases.git] / arch / arm64 / boot / dts / amlogic / meson-sm1-sei610.dts
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         vddcpu: regulator-vddcpu {
140                 /*
141                  * SY8120B1ABC DC/DC Regulator.
142                  */
143                 compatible = "pwm-regulator";
144
145                 regulator-name = "VDDCPU";
146                 regulator-min-microvolt = <690000>;
147                 regulator-max-microvolt = <1050000>;
148
149                 vin-supply = <&dc_in>;
150
151                 pwms = <&pwm_AO_cd 1 1500 0>;
152                 pwm-dutycycle-range = <100 0>;
153
154                 regulator-boot-on;
155                 regulator-always-on;
156         };
157
158         vddio_ao1v8: regulator-vddio_ao1v8 {
159                 compatible = "regulator-fixed";
160                 regulator-name = "VDDIO_AO1V8";
161                 regulator-min-microvolt = <1800000>;
162                 regulator-max-microvolt = <1800000>;
163                 vin-supply = <&vddao_3v3>;
164                 regulator-always-on;
165         };
166
167         sdio_pwrseq: sdio-pwrseq {
168                 compatible = "mmc-pwrseq-simple";
169                 reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
170                 clocks = <&wifi32k>;
171                 clock-names = "ext_clock";
172         };
173
174         wifi32k: wifi32k {
175                 compatible = "pwm-clock";
176                 #clock-cells = <0>;
177                 clock-frequency = <32768>;
178                 pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
179         };
180 };
181
182 &cec_AO {
183         pinctrl-0 = <&cec_ao_a_h_pins>;
184         pinctrl-names = "default";
185         status = "disabled";
186         hdmi-phandle = <&hdmi_tx>;
187 };
188
189 &cecb_AO {
190         pinctrl-0 = <&cec_ao_b_h_pins>;
191         pinctrl-names = "default";
192         status = "okay";
193         hdmi-phandle = <&hdmi_tx>;
194 };
195
196 &cpu0 {
197         cpu-supply = <&vddcpu>;
198         operating-points-v2 = <&cpu_opp_table>;
199         clocks = <&clkc CLKID_CPU_CLK>;
200         clock-latency = <50000>;
201 };
202
203 &cpu1 {
204         cpu-supply = <&vddcpu>;
205         operating-points-v2 = <&cpu_opp_table>;
206         clocks = <&clkc CLKID_CPU1_CLK>;
207         clock-latency = <50000>;
208 };
209
210 &cpu2 {
211         cpu-supply = <&vddcpu>;
212         operating-points-v2 = <&cpu_opp_table>;
213         clocks = <&clkc CLKID_CPU2_CLK>;
214         clock-latency = <50000>;
215 };
216
217 &cpu3 {
218         cpu-supply = <&vddcpu>;
219         operating-points-v2 = <&cpu_opp_table>;
220         clocks = <&clkc CLKID_CPU3_CLK>;
221         clock-latency = <50000>;
222 };
223
224 &ethmac {
225         status = "okay";
226         phy-handle = <&internal_ephy>;
227         phy-mode = "rmii";
228 };
229
230 &hdmi_tx {
231         status = "okay";
232         pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
233         pinctrl-names = "default";
234 };
235
236 &hdmi_tx_tmds_port {
237         hdmi_tx_tmds_out: endpoint {
238                 remote-endpoint = <&hdmi_connector_in>;
239         };
240 };
241
242 &i2c3 {
243         status = "okay";
244         pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
245         pinctrl-names = "default";
246 };
247
248 &ir {
249         status = "okay";
250         pinctrl-0 = <&remote_input_ao_pins>;
251         pinctrl-names = "default";
252 };
253
254 &pwm_AO_ab {
255         status = "okay";
256         pinctrl-0 = <&pwm_ao_a_pins>;
257         pinctrl-names = "default";
258         clocks = <&xtal>;
259         clock-names = "clkin0";
260 };
261
262 &pwm_AO_cd {
263         pinctrl-0 = <&pwm_ao_d_e_pins>;
264         pinctrl-names = "default";
265         clocks = <&xtal>;
266         clock-names = "clkin1";
267         status = "okay";
268 };
269
270 &pwm_ef {
271         status = "okay";
272         pinctrl-0 = <&pwm_e_pins>;
273         pinctrl-names = "default";
274         clocks = <&xtal>;
275         clock-names = "clkin0";
276 };
277
278 &saradc {
279         status = "okay";
280         vref-supply = <&vddio_ao1v8>;
281 };
282
283 /* SDIO */
284 &sd_emmc_a {
285         status = "okay";
286         pinctrl-0 = <&sdio_pins>;
287         pinctrl-1 = <&sdio_clk_gate_pins>;
288         pinctrl-names = "default", "clk-gate";
289         #address-cells = <1>;
290         #size-cells = <0>;
291
292         bus-width = <4>;
293         cap-sd-highspeed;
294         sd-uhs-sdr50;
295         max-frequency = <100000000>;
296
297         non-removable;
298         disable-wp;
299
300         mmc-pwrseq = <&sdio_pwrseq>;
301
302         vmmc-supply = <&vddao_3v3>;
303         vqmmc-supply = <&vddio_ao1v8>;
304
305         brcmf: wifi@1 {
306                 reg = <1>;
307                 compatible = "brcm,bcm4329-fmac";
308         };
309 };
310
311 /* SD card */
312 &sd_emmc_b {
313         status = "okay";
314         pinctrl-0 = <&sdcard_c_pins>;
315         pinctrl-1 = <&sdcard_clk_gate_c_pins>;
316         pinctrl-names = "default", "clk-gate";
317
318         bus-width = <4>;
319         cap-sd-highspeed;
320         max-frequency = <50000000>;
321         disable-wp;
322
323         cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
324         vmmc-supply = <&vddao_3v3>;
325         vqmmc-supply = <&vddao_3v3>;
326 };
327
328 /* eMMC */
329 &sd_emmc_c {
330         status = "okay";
331         pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
332         pinctrl-1 = <&emmc_clk_gate_pins>;
333         pinctrl-names = "default", "clk-gate";
334
335         bus-width = <8>;
336         cap-mmc-highspeed;
337         mmc-ddr-1_8v;
338         mmc-hs200-1_8v;
339         max-frequency = <200000000>;
340         non-removable;
341         disable-wp;
342
343         mmc-pwrseq = <&emmc_pwrseq>;
344         vmmc-supply = <&vddao_3v3>;
345         vqmmc-supply = <&emmc_1v8>;
346 };
347
348 &uart_A {
349         status = "okay";
350         pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
351         pinctrl-names = "default";
352         uart-has-rtscts;
353
354         bluetooth {
355                 compatible = "brcm,bcm43438-bt";
356                 interrupt-parent = <&gpio_intc>;
357                 interrupts = <95 IRQ_TYPE_LEVEL_HIGH>;
358                 interrupt-names = "host-wakeup";
359                 shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
360                 max-speed = <2000000>;
361                 clocks = <&wifi32k>;
362                 clock-names = "lpo";
363                 vbat-supply = <&vddao_3v3>;
364                 vddio-supply = <&vddio_ao1v8>;
365         };
366 };
367
368 /* Exposed via the on-board USB to Serial FT232RL IC */
369 &uart_AO {
370         status = "okay";
371         pinctrl-0 = <&uart_ao_a_pins>;
372         pinctrl-names = "default";
373 };
374
375 &usb {
376         status = "okay";
377         dr_mode = "otg";
378 };