Linux 6.7-rc7
[linux-modified.git] / arch / arm64 / boot / dts / amlogic / meson-gx-libretech-pc.dtsi
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2019 BayLibre SAS.
4  * Author: Jerome Brunet <jbrunet@baylibre.com>
5  */
6
7 /* Libretech Amlogic GX PC form factor - AKA: Tartiflette */
8
9 #include <dt-bindings/input/input.h>
10 #include <dt-bindings/leds/common.h>
11 #include <dt-bindings/sound/meson-aiu.h>
12
13 / {
14         adc-keys {
15                 compatible = "adc-keys";
16                 io-channels = <&saradc 0>;
17                 io-channel-names = "buttons";
18                 keyup-threshold-microvolt = <1800000>;
19
20                 button-update {
21                         label = "update";
22                         linux,code = <KEY_VENDOR>;
23                         press-threshold-microvolt = <1300000>;
24                 };
25         };
26
27         aliases {
28                 serial0 = &uart_AO;
29                 ethernet0 = &ethmac;
30                 spi0 = &spifc;
31         };
32
33         dio2133: analog-amplifier {
34                 compatible = "simple-audio-amplifier";
35                 sound-name-prefix = "AU2";
36                 VCC-supply = <&vcc5v>;
37                 enable-gpios = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
38         };
39
40         chosen {
41                 stdout-path = "serial0:115200n8";
42         };
43
44         cvbs-connector {
45                 compatible = "composite-video-connector";
46                 status = "disabled";
47
48                 port {
49                         cvbs_connector_in: endpoint {
50                                 remote-endpoint = <&cvbs_vdac_out>;
51                         };
52                 };
53         };
54
55         emmc_pwrseq: emmc-pwrseq {
56                 compatible = "mmc-pwrseq-emmc";
57                 reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
58         };
59
60         hdmi-connector {
61                 compatible = "hdmi-connector";
62                 type = "a";
63
64                 port {
65                         hdmi_connector_in: endpoint {
66                                 remote-endpoint = <&hdmi_tx_tmds_out>;
67                         };
68                 };
69         };
70
71         gpio-keys-polled {
72                 compatible = "gpio-keys-polled";
73                 poll-interval = <100>;
74
75                 power-button {
76                         label = "power";
77                         linux,code = <KEY_POWER>;
78                         gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
79                 };
80         };
81
82         memory@0 {
83                 device_type = "memory";
84                 reg = <0x0 0x0 0x0 0x80000000>;
85         };
86
87         ao_5v: regulator-ao_5v {
88                 compatible = "regulator-fixed";
89                 regulator-name = "AO_5V";
90                 regulator-min-microvolt = <5000000>;
91                 regulator-max-microvolt = <5000000>;
92                 vin-supply = <&dc_in>;
93                 regulator-always-on;
94         };
95
96         dc_in: regulator-dc_in {
97                 compatible = "regulator-fixed";
98                 regulator-name = "DC_IN";
99                 regulator-min-microvolt = <5000000>;
100                 regulator-max-microvolt = <5000000>;
101                 regulator-always-on;
102         };
103
104         leds {
105                 compatible = "gpio-leds";
106
107                 led-green {
108                         color = <LED_COLOR_ID_GREEN>;
109                         function = LED_FUNCTION_DISK_ACTIVITY;
110                         gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>;
111                         linux,default-trigger = "disk-activity";
112                 };
113
114                 led-blue {
115                         color = <LED_COLOR_ID_BLUE>;
116                         function = LED_FUNCTION_STATUS;
117                         gpios = <&gpio GPIODV_28 GPIO_ACTIVE_HIGH>;
118                         linux,default-trigger = "heartbeat";
119                         panic-indicator;
120                 };
121         };
122
123         vcc_card: regulator-vcc_card {
124                 compatible = "regulator-fixed";
125                 regulator-name = "VCC_CARD";
126                 regulator-min-microvolt = <3300000>;
127                 regulator-max-microvolt = <3300000>;
128                 vin-supply = <&vddio_ao3v3>;
129
130                 gpio = <&gpio GPIODV_4 GPIO_ACTIVE_HIGH>;
131                 enable-active-high;
132         };
133
134         vcc5v: regulator-vcc5v {
135                 compatible = "regulator-fixed";
136                 regulator-name = "VCC5V";
137                 regulator-min-microvolt = <5000000>;
138                 regulator-max-microvolt = <5000000>;
139                 vin-supply = <&ao_5v>;
140
141                 gpio = <&gpio GPIOH_3 GPIO_OPEN_DRAIN>;
142         };
143
144         vddio_ao18: regulator-vddio_ao18 {
145                 compatible = "regulator-fixed";
146                 regulator-name = "VDDIO_AO18";
147                 regulator-min-microvolt = <1800000>;
148                 regulator-max-microvolt = <1800000>;
149                 vin-supply = <&ao_5v>;
150                 regulator-always-on;
151         };
152
153         vddio_ao3v3: regulator-vddio_ao3v3 {
154                 compatible = "regulator-fixed";
155                 regulator-name = "VDDIO_AO3V3";
156                 regulator-min-microvolt = <3300000>;
157                 regulator-max-microvolt = <3300000>;
158                 vin-supply = <&ao_5v>;
159                 regulator-always-on;
160         };
161
162         vddio_boot: regulator-vddio_boot {
163                 compatible = "regulator-fixed";
164                 regulator-name = "VDDIO_BOOT";
165                 regulator-min-microvolt = <1800000>;
166                 regulator-max-microvolt = <1800000>;
167                 vin-supply = <&vddio_ao3v3>;
168                 regulator-always-on;
169         };
170
171         vddio_card: regulator-vddio-card {
172                 compatible = "regulator-gpio";
173                 regulator-name = "VDDIO_CARD";
174                 regulator-min-microvolt = <1800000>;
175                 regulator-max-microvolt = <3300000>;
176
177                 gpios = <&gpio GPIODV_5 GPIO_ACTIVE_HIGH>;
178                 gpios-states = <0>;
179
180                 states = <3300000 0>,
181                          <1800000 1>;
182
183                 regulator-settling-time-up-us = <200>;
184                 regulator-settling-time-down-us = <50000>;
185         };
186
187         sound {
188                 compatible = "amlogic,gx-sound-card";
189                 model = "LIBRETECH-PC";
190                 audio-aux-devs = <&dio2133>;
191                 audio-widgets = "Speaker", "7J4-14 LEFT",
192                                 "Speaker", "7J4-11 RIGHT";
193                 audio-routing = "AU2 INL", "ACODEC LOLN",
194                                 "AU2 INR", "ACODEC LORN",
195                                 "7J4-14 LEFT", "AU2 OUTL",
196                                 "7J4-11 RIGHT", "AU2 OUTR";
197                 assigned-clocks = <&clkc CLKID_MPLL0>,
198                                   <&clkc CLKID_MPLL1>,
199                                   <&clkc CLKID_MPLL2>;
200                 assigned-clock-parents = <0>, <0>, <0>;
201                 assigned-clock-rates = <294912000>,
202                                        <270950400>,
203                                        <393216000>;
204
205                 dai-link-0 {
206                         sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
207                 };
208
209                 dai-link-1 {
210                         sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
211                         dai-format = "i2s";
212                         mclk-fs = <256>;
213
214                         codec-0 {
215                                 sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
216                         };
217
218                         codec-1 {
219                                 sound-dai = <&aiu AIU_ACODEC CTRL_I2S>;
220                         };
221                 };
222
223                 dai-link-2 {
224                         sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
225
226                         codec-0 {
227                                 sound-dai = <&hdmi_tx>;
228                         };
229                 };
230
231                 dai-link-3 {
232                         sound-dai = <&aiu AIU_ACODEC CTRL_OUT>;
233
234                         codec-0 {
235                                 sound-dai = <&acodec>;
236                         };
237                 };
238         };
239 };
240
241 &acodec {
242         AVDD-supply = <&vddio_ao18>;
243         status = "okay";
244 };
245
246 &aiu {
247         status = "okay";
248 };
249
250 &cec_AO {
251         pinctrl-0 = <&ao_cec_pins>;
252         pinctrl-names = "default";
253         hdmi-phandle = <&hdmi_tx>;
254         status = "okay";
255 };
256
257 &cvbs_vdac_port {
258         cvbs_vdac_out: endpoint {
259                 remote-endpoint = <&cvbs_connector_in>;
260         };
261 };
262
263 &ethmac {
264         pinctrl-0 = <&eth_pins>, <&eth_phy_irq_pins>;
265         pinctrl-names = "default";
266         phy-handle = <&external_phy>;
267         amlogic,tx-delay-ns = <2>;
268         phy-mode = "rgmii";
269         status = "okay";
270 };
271
272 &external_mdio {
273         external_phy: ethernet-phy@0 {
274                 reg = <0>;
275                 max-speed = <1000>;
276                 reset-assert-us = <10000>;
277                 reset-deassert-us = <30000>;
278                 reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
279                 interrupt-parent = <&gpio_intc>;
280                 interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
281         };
282 };
283
284 &pinctrl_periphs {
285         /*
286          * Make sure the reset pin of the usb HUB is driven high to take
287          * it out of reset.
288          */
289         usb1_rst_pins: usb1_rst_irq {
290                 mux {
291                         groups = "GPIODV_3";
292                         function = "gpio_periphs";
293                         bias-disable;
294                         output-high;
295                 };
296         };
297
298         /* Make sure the phy irq pin is properly configured as input */
299         eth_phy_irq_pins: eth_phy_irq {
300                 mux {
301                         groups = "GPIOZ_15";
302                         function = "gpio_periphs";
303                         bias-disable;
304                         output-disable;
305                 };
306         };
307 };
308
309 &hdmi_tx {
310         pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
311         pinctrl-names = "default";
312         hdmi-supply = <&vcc5v>;
313         status = "okay";
314 };
315
316 &hdmi_tx_tmds_port {
317         hdmi_tx_tmds_out: endpoint {
318                 remote-endpoint = <&hdmi_connector_in>;
319         };
320 };
321
322 &ir {
323         pinctrl-0 = <&remote_input_ao_pins>;
324         pinctrl-names = "default";
325         status = "okay";
326 };
327
328 &i2c_C {
329         pinctrl-0 = <&i2c_c_dv18_pins>;
330         pinctrl-names = "default";
331         status = "okay";
332
333         rtc: rtc@51 {
334                 reg = <0x51>;
335                 compatible = "nxp,pcf8563";
336                 #clock-cells = <0>;
337                 clock-output-names = "rtc_clkout";
338         };
339 };
340
341 &pwm_AO_ab {
342         pinctrl-0 = <&pwm_ao_a_3_pins>;
343         pinctrl-names = "default";
344         clocks = <&clkc CLKID_FCLK_DIV4>;
345         clock-names = "clkin0";
346         status = "okay";
347 };
348
349 &pwm_ab {
350         pinctrl-0 = <&pwm_b_pins>;
351         pinctrl-names = "default";
352         clocks = <&clkc CLKID_FCLK_DIV4>;
353         clock-names = "clkin0";
354         status = "okay";
355 };
356
357 &pwm_ef {
358         pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>;
359         pinctrl-names = "default";
360         clocks = <&clkc CLKID_FCLK_DIV4>;
361         clock-names = "clkin0";
362         status = "okay";
363 };
364
365 &saradc {
366         vref-supply = <&vddio_ao18>;
367         status = "okay";
368 };
369
370 /* SD card */
371 &sd_emmc_b {
372         pinctrl-0 = <&sdcard_pins>;
373         pinctrl-1 = <&sdcard_clk_gate_pins>;
374         pinctrl-names = "default", "clk-gate";
375
376         bus-width = <4>;
377         cap-sd-highspeed;
378         sd-uhs-sdr12;
379         sd-uhs-sdr25;
380         sd-uhs-sdr50;
381         sd-uhs-ddr50;
382         max-frequency = <200000000>;
383         disable-wp;
384
385         cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
386
387         vmmc-supply = <&vcc_card>;
388         vqmmc-supply = <&vddio_card>;
389
390         status = "okay";
391 };
392
393 /* eMMC */
394 &sd_emmc_c {
395         pinctrl-0 = <&emmc_pins>;
396         pinctrl-1 = <&emmc_clk_gate_pins>;
397         pinctrl-names = "default", "clk-gate";
398
399         bus-width = <8>;
400         cap-mmc-highspeed;
401         mmc-ddr-1_8v;
402         mmc-hs200-1_8v;
403         max-frequency = <200000000>;
404         disable-wp;
405
406         mmc-pwrseq = <&emmc_pwrseq>;
407         vmmc-supply = <&vddio_ao3v3>;
408         vqmmc-supply = <&vddio_boot>;
409
410         status = "okay";
411 };
412
413 &spifc {
414         pinctrl-0 = <&nor_pins>;
415         pinctrl-names = "default";
416         status = "okay";
417
418         gd25lq128: flash@0 {
419                 compatible = "jedec,spi-nor";
420                 #address-cells = <1>;
421                 #size-cells = <1>;
422                 reg = <0>;
423                 spi-max-frequency = <12000000>;
424         };
425 };
426
427 &uart_AO {
428         pinctrl-0 = <&uart_ao_a_pins>;
429         pinctrl-names = "default";
430         status = "okay";
431 };
432
433 &usb {
434         status = "okay";
435         dr_mode = "host";
436 };
437
438 &usb2_phy0 {
439         pinctrl-0 = <&usb1_rst_pins>;
440         pinctrl-names = "default";
441         phy-supply = <&vcc5v>;
442 };
443
444 &usb2_phy1 {
445         phy-supply = <&vcc5v>;
446 };