Merge tag 'for-6.8-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave...
[sfrench/cifs-2.6.git] / arch / arm64 / boot / dts / amlogic / meson-g12a-sei510.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-g12a.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 #include <dt-bindings/sound/meson-g12a-tohdmitx.h>
13
14 / {
15         compatible = "seirobotics,sei510", "amlogic,g12a";
16         model = "SEI Robotics SEI510";
17
18         adc_keys {
19                 compatible = "adc-keys";
20                 io-channels = <&saradc 0>;
21                 io-channel-names = "buttons";
22                 keyup-threshold-microvolt = <1800000>;
23
24                 button-onoff {
25                         label = "On/Off";
26                         linux,code = <KEY_POWER>;
27                         press-threshold-microvolt = <1700000>;
28                 };
29         };
30
31         aliases {
32                 serial0 = &uart_AO;
33                 ethernet0 = &ethmac;
34         };
35
36         mono_dac: audio-codec-0 {
37                 compatible = "maxim,max98357a";
38                 #sound-dai-cells = <0>;
39                 sound-name-prefix = "U16";
40                 sdmode-gpios = <&gpio GPIOX_8 GPIO_ACTIVE_HIGH>;
41         };
42
43         dmics: audio-codec-1 {
44                 #sound-dai-cells = <0>;
45                 compatible = "dmic-codec";
46                 num-channels = <2>;
47                 wakeup-delay-ms = <50>;
48                 sound-name-prefix = "MIC";
49         };
50
51         chosen {
52                 stdout-path = "serial0:115200n8";
53         };
54
55         cvbs-connector {
56                 compatible = "composite-video-connector";
57
58                 port {
59                         cvbs_connector_in: endpoint {
60                                 remote-endpoint = <&cvbs_vdac_out>;
61                         };
62                 };
63         };
64
65         emmc_pwrseq: emmc-pwrseq {
66                 compatible = "mmc-pwrseq-emmc";
67                 reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
68         };
69
70         hdmi-connector {
71                 compatible = "hdmi-connector";
72                 type = "a";
73
74                 port {
75                         hdmi_connector_in: endpoint {
76                                 remote-endpoint = <&hdmi_tx_tmds_out>;
77                         };
78                 };
79         };
80
81         memory@0 {
82                 device_type = "memory";
83                 reg = <0x0 0x0 0x0 0x40000000>;
84         };
85
86         ao_5v: regulator-ao_5v {
87                 compatible = "regulator-fixed";
88                 regulator-name = "AO_5V";
89                 regulator-min-microvolt = <5000000>;
90                 regulator-max-microvolt = <5000000>;
91                 vin-supply = <&dc_in>;
92                 regulator-always-on;
93         };
94
95         dc_in: regulator-dc_in {
96                 compatible = "regulator-fixed";
97                 regulator-name = "DC_IN";
98                 regulator-min-microvolt = <5000000>;
99                 regulator-max-microvolt = <5000000>;
100                 regulator-always-on;
101         };
102
103         emmc_1v8: regulator-emmc_1v8 {
104                 compatible = "regulator-fixed";
105                 regulator-name = "EMMC_1V8";
106                 regulator-min-microvolt = <1800000>;
107                 regulator-max-microvolt = <1800000>;
108                 vin-supply = <&vddao_3v3>;
109                 regulator-always-on;
110         };
111
112         vddao_3v3: regulator-vddao_3v3 {
113                 compatible = "regulator-fixed";
114                 regulator-name = "VDDAO_3V3";
115                 regulator-min-microvolt = <3300000>;
116                 regulator-max-microvolt = <3300000>;
117                 vin-supply = <&dc_in>;
118                 regulator-always-on;
119         };
120
121         vddao_3v3_t: regultor-vddao_3v3_t {
122                 compatible = "regulator-fixed";
123                 regulator-name = "VDDAO_3V3_T";
124                 regulator-min-microvolt = <3300000>;
125                 regulator-max-microvolt = <3300000>;
126                 vin-supply = <&vddao_3v3>;
127                 gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
128                 enable-active-high;
129         };
130
131         vddcpu: regulator-vddcpu {
132                 /*
133                  * SY8120B1ABC DC/DC Regulator.
134                  */
135                 compatible = "pwm-regulator";
136
137                 regulator-name = "VDDCPU";
138                 regulator-min-microvolt = <721000>;
139                 regulator-max-microvolt = <1022000>;
140
141                 pwm-supply = <&dc_in>;
142
143                 pwms = <&pwm_AO_cd 1 1250 0>;
144                 pwm-dutycycle-range = <100 0>;
145
146                 regulator-boot-on;
147                 regulator-always-on;
148         };
149
150         vddio_ao1v8: regulator-vddio_ao1v8 {
151                 compatible = "regulator-fixed";
152                 regulator-name = "VDDIO_AO1V8";
153                 regulator-min-microvolt = <1800000>;
154                 regulator-max-microvolt = <1800000>;
155                 vin-supply = <&vddao_3v3>;
156                 regulator-always-on;
157         };
158
159         sdio_pwrseq: sdio-pwrseq {
160                 compatible = "mmc-pwrseq-simple";
161                 reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
162                 clocks = <&wifi32k>;
163                 clock-names = "ext_clock";
164         };
165
166         wifi32k: wifi32k {
167                 compatible = "pwm-clock";
168                 #clock-cells = <0>;
169                 clock-frequency = <32768>;
170                 pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
171         };
172
173         sound {
174                 compatible = "amlogic,axg-sound-card";
175                 model = "SEI510";
176                 audio-aux-devs = <&tdmout_a>, <&tdmout_b>,
177                                  <&tdmin_a>, <&tdmin_b>;
178                 audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
179                                 "TDMOUT_A IN 1", "FRDDR_B OUT 0",
180                                 "TDMOUT_A IN 2", "FRDDR_C OUT 0",
181                                 "TDM_A Playback", "TDMOUT_A OUT",
182                                 "TDMOUT_B IN 0", "FRDDR_A OUT 1",
183                                 "TDMOUT_B IN 1", "FRDDR_B OUT 1",
184                                 "TDMOUT_B IN 2", "FRDDR_C OUT 1",
185                                 "TDM_B Playback", "TDMOUT_B OUT",
186                                 "TODDR_A IN 4", "PDM Capture",
187                                 "TODDR_B IN 4", "PDM Capture",
188                                 "TODDR_C IN 4", "PDM Capture",
189                                 "TDMIN_A IN 0", "TDM_A Capture",
190                                 "TDMIN_A IN 3", "TDM_A Loopback",
191                                 "TDMIN_B IN 0", "TDM_A Capture",
192                                 "TDMIN_B IN 3", "TDM_A Loopback",
193                                 "TDMIN_A IN 1", "TDM_B Capture",
194                                 "TDMIN_A IN 4", "TDM_B Loopback",
195                                 "TDMIN_B IN 1", "TDM_B Capture",
196                                 "TDMIN_B IN 4", "TDM_B Loopback",
197                                 "TODDR_A IN 0", "TDMIN_A OUT",
198                                 "TODDR_B IN 0", "TDMIN_A OUT",
199                                 "TODDR_C IN 0", "TDMIN_A OUT",
200                                 "TODDR_A IN 1", "TDMIN_B OUT",
201                                 "TODDR_B IN 1", "TDMIN_B OUT",
202                                 "TODDR_C IN 1", "TDMIN_B OUT";
203
204                 assigned-clocks = <&clkc CLKID_MPLL2>,
205                                   <&clkc CLKID_MPLL0>,
206                                   <&clkc CLKID_MPLL1>;
207                 assigned-clock-parents = <0>, <0>, <0>;
208                 assigned-clock-rates = <294912000>,
209                                        <270950400>,
210                                        <393216000>;
211
212                 dai-link-0 {
213                         sound-dai = <&frddr_a>;
214                 };
215
216                 dai-link-1 {
217                         sound-dai = <&frddr_b>;
218                 };
219
220                 dai-link-2 {
221                         sound-dai = <&frddr_c>;
222                 };
223
224                 dai-link-3 {
225                         sound-dai = <&toddr_a>;
226                 };
227
228                 dai-link-4 {
229                         sound-dai = <&toddr_b>;
230                 };
231
232                 dai-link-5 {
233                         sound-dai = <&toddr_c>;
234                 };
235
236                 /* internal speaker interface */
237                 dai-link-6 {
238                         sound-dai = <&tdmif_a>;
239                         dai-format = "i2s";
240                         dai-tdm-slot-tx-mask-0 = <1 1>;
241                         mclk-fs = <256>;
242
243                         codec-0 {
244                                 sound-dai = <&mono_dac>;
245                         };
246
247                         codec-1 {
248                                 sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
249                         };
250                 };
251
252                 /* 8ch hdmi interface */
253                 dai-link-7 {
254                         sound-dai = <&tdmif_b>;
255                         dai-format = "i2s";
256                         dai-tdm-slot-tx-mask-0 = <1 1>;
257                         dai-tdm-slot-tx-mask-1 = <1 1>;
258                         dai-tdm-slot-tx-mask-2 = <1 1>;
259                         dai-tdm-slot-tx-mask-3 = <1 1>;
260                         mclk-fs = <256>;
261
262                         codec {
263                                 sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
264                         };
265                 };
266
267                 /* internal digital mics */
268                 dai-link-8 {
269                         sound-dai = <&pdm>;
270
271                         codec {
272                                 sound-dai = <&dmics>;
273                         };
274                 };
275
276                 /* hdmi glue */
277                 dai-link-9 {
278                         sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
279
280                         codec {
281                                 sound-dai = <&hdmi_tx>;
282                         };
283                 };
284         };
285 };
286
287 &arb {
288         status = "okay";
289 };
290
291 &cec_AO {
292         pinctrl-0 = <&cec_ao_a_h_pins>;
293         pinctrl-names = "default";
294         status = "disabled";
295         hdmi-phandle = <&hdmi_tx>;
296 };
297
298 &cecb_AO {
299         pinctrl-0 = <&cec_ao_b_h_pins>;
300         pinctrl-names = "default";
301         status = "okay";
302         hdmi-phandle = <&hdmi_tx>;
303 };
304
305 &clkc_audio {
306         status = "okay";
307 };
308
309 &cpu0 {
310         cpu-supply = <&vddcpu>;
311         operating-points-v2 = <&cpu_opp_table>;
312         clocks = <&clkc CLKID_CPU_CLK>;
313         clock-latency = <50000>;
314 };
315
316 &cpu1 {
317         cpu-supply = <&vddcpu>;
318         operating-points-v2 = <&cpu_opp_table>;
319         clocks = <&clkc CLKID_CPU_CLK>;
320         clock-latency = <50000>;
321 };
322
323 &cpu2 {
324         cpu-supply = <&vddcpu>;
325         operating-points-v2 = <&cpu_opp_table>;
326         clocks = <&clkc CLKID_CPU_CLK>;
327         clock-latency = <50000>;
328 };
329
330 &cpu3 {
331         cpu-supply = <&vddcpu>;
332         operating-points-v2 = <&cpu_opp_table>;
333         clocks = <&clkc CLKID_CPU_CLK>;
334         clock-latency = <50000>;
335 };
336
337 &cvbs_vdac_port {
338         cvbs_vdac_out: endpoint {
339                 remote-endpoint = <&cvbs_connector_in>;
340         };
341 };
342
343 &ethmac {
344         status = "okay";
345         phy-handle = <&internal_ephy>;
346         phy-mode = "rmii";
347 };
348
349 &frddr_a {
350         status = "okay";
351 };
352
353 &frddr_b {
354         status = "okay";
355 };
356
357 &frddr_c {
358         status = "okay";
359 };
360
361 &hdmi_tx {
362         status = "okay";
363         pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
364         pinctrl-names = "default";
365 };
366
367 &hdmi_tx_tmds_port {
368         hdmi_tx_tmds_out: endpoint {
369                 remote-endpoint = <&hdmi_connector_in>;
370         };
371 };
372
373 &i2c3 {
374         status = "okay";
375         pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
376         pinctrl-names = "default";
377 };
378
379 &ir {
380         status = "okay";
381         pinctrl-0 = <&remote_input_ao_pins>;
382         pinctrl-names = "default";
383 };
384
385 &pwm_AO_cd {
386         pinctrl-0 = <&pwm_ao_d_e_pins>;
387         pinctrl-names = "default";
388         clocks = <&xtal>;
389         clock-names = "clkin1";
390         status = "okay";
391 };
392
393 &pwm_ef {
394         status = "okay";
395         pinctrl-0 = <&pwm_e_pins>;
396         pinctrl-names = "default";
397         clocks = <&xtal>;
398         clock-names = "clkin0";
399 };
400
401 &pdm {
402         pinctrl-0 = <&pdm_din0_z_pins>, <&pdm_din1_z_pins>,
403                     <&pdm_din2_z_pins>, <&pdm_din3_z_pins>,
404                     <&pdm_dclk_z_pins>;
405         pinctrl-names = "default";
406         status = "okay";
407 };
408
409 &saradc {
410         status = "okay";
411         vref-supply = <&vddio_ao1v8>;
412 };
413
414 /* SDIO */
415 &sd_emmc_a {
416         status = "okay";
417         pinctrl-0 = <&sdio_pins>;
418         pinctrl-1 = <&sdio_clk_gate_pins>;
419         pinctrl-names = "default", "clk-gate";
420         #address-cells = <1>;
421         #size-cells = <0>;
422
423         bus-width = <4>;
424         cap-sd-highspeed;
425         sd-uhs-sdr50;
426         max-frequency = <100000000>;
427
428         non-removable;
429         disable-wp;
430
431         /* WiFi firmware requires power to be kept while in suspend */
432         keep-power-in-suspend;
433
434         mmc-pwrseq = <&sdio_pwrseq>;
435
436         vmmc-supply = <&vddao_3v3>;
437         vqmmc-supply = <&vddio_ao1v8>;
438
439         brcmf: wifi@1 {
440                 reg = <1>;
441                 compatible = "brcm,bcm4329-fmac";
442         };
443 };
444
445 /* SD card */
446 &sd_emmc_b {
447         status = "okay";
448         pinctrl-0 = <&sdcard_c_pins>;
449         pinctrl-1 = <&sdcard_clk_gate_c_pins>;
450         pinctrl-names = "default", "clk-gate";
451
452         bus-width = <4>;
453         cap-sd-highspeed;
454         max-frequency = <50000000>;
455         disable-wp;
456
457         cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
458         vmmc-supply = <&vddao_3v3>;
459         vqmmc-supply = <&vddao_3v3>;
460 };
461
462 /* eMMC */
463 &sd_emmc_c {
464         status = "okay";
465         pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
466         pinctrl-1 = <&emmc_clk_gate_pins>;
467         pinctrl-names = "default", "clk-gate";
468
469         bus-width = <8>;
470         cap-mmc-highspeed;
471         mmc-ddr-1_8v;
472         mmc-hs200-1_8v;
473         max-frequency = <200000000>;
474         non-removable;
475         disable-wp;
476
477         mmc-pwrseq = <&emmc_pwrseq>;
478         vmmc-supply = <&vddao_3v3>;
479         vqmmc-supply = <&emmc_1v8>;
480 };
481
482 &tdmif_a {
483         pinctrl-0 = <&tdm_a_dout0_pins>, <&tdm_a_fs_pins>, <&tdm_a_sclk_pins>;
484         pinctrl-names = "default";
485         status = "okay";
486
487         assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD0>,
488                           <&clkc_audio AUD_CLKID_TDM_LRCLK_PAD0>;
489         assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_A_SCLK>,
490                                  <&clkc_audio AUD_CLKID_MST_A_LRCLK>;
491         assigned-clock-rates = <0>, <0>;
492 };
493
494 &tdmif_b {
495         status = "okay";
496 };
497
498 &tdmin_a {
499         status = "okay";
500 };
501
502 &tdmin_b {
503         status = "okay";
504 };
505
506 &tdmout_a {
507         status = "okay";
508 };
509
510 &tdmout_b {
511         status = "okay";
512 };
513
514 &toddr_a {
515         status = "okay";
516 };
517
518 &toddr_b {
519         status = "okay";
520 };
521
522 &toddr_c {
523         status = "okay";
524 };
525
526 &tohdmitx {
527         status = "okay";
528 };
529
530 &uart_A {
531         status = "okay";
532         pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
533         pinctrl-names = "default";
534         uart-has-rtscts;
535
536         bluetooth {
537                 compatible = "brcm,bcm43438-bt";
538                 shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
539                 max-speed = <2000000>;
540                 clocks = <&wifi32k>;
541                 clock-names = "lpo";
542                 vbat-supply = <&vddao_3v3>;
543                 vddio-supply = <&vddio_ao1v8>;
544         };
545 };
546
547 &uart_AO {
548         status = "okay";
549         pinctrl-0 = <&uart_ao_a_pins>;
550         pinctrl-names = "default";
551 };
552
553 &usb {
554         status = "okay";
555         dr_mode = "host";
556 };