WIP FPC-III support
[linux/fpc-iii.git] / arch / arm64 / boot / dts / amlogic / meson-gx-libretech-pc.dtsi
blobc2480bab8d3374f13a90368d9671044d0da1d229
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2019 BayLibre SAS.
4  * Author: Jerome Brunet <jbrunet@baylibre.com>
5  */
7 /* Libretech Amlogic GX PC form factor - AKA: Tartiflette */
9 #include <dt-bindings/input/input.h>
10 #include <dt-bindings/leds/common.h>
11 #include <dt-bindings/sound/meson-aiu.h>
13 / {
14         adc-keys {
15                 compatible = "adc-keys";
16                 io-channels = <&saradc 0>;
17                 io-channel-names = "buttons";
18                 keyup-threshold-microvolt = <1800000>;
20                 update-button {
21                         label = "update";
22                         linux,code = <KEY_VENDOR>;
23                         press-threshold-microvolt = <1300000>;
24                 };
25         };
27         aliases {
28                 serial0 = &uart_AO;
29                 ethernet0 = &ethmac;
30                 spi0 = &spifc;
31         };
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         };
40         chosen {
41                 stdout-path = "serial0:115200n8";
42         };
44         cvbs-connector {
45                 compatible = "composite-video-connector";
46                 status = "disabled";
48                 port {
49                         cvbs_connector_in: endpoint {
50                                 remote-endpoint = <&cvbs_vdac_out>;
51                         };
52                 };
53         };
55         emmc_pwrseq: emmc-pwrseq {
56                 compatible = "mmc-pwrseq-emmc";
57                 reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
58         };
60         hdmi-connector {
61                 compatible = "hdmi-connector";
62                 type = "a";
64                 port {
65                         hdmi_connector_in: endpoint {
66                                 remote-endpoint = <&hdmi_tx_tmds_out>;
67                         };
68                 };
69         };
71         gpio-keys-polled {
72                 compatible = "gpio-keys-polled";
73                 poll-interval = <100>;
75                 power-button {
76                         label = "power";
77                         linux,code = <KEY_POWER>;
78                         gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
79                 };
80         };
82         memory@0 {
83                 device_type = "memory";
84                 reg = <0x0 0x0 0x0 0x80000000>;
85         };
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         };
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         };
104         leds {
105                 compatible = "gpio-leds";
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                 };
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         };
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>;
130                 gpio = <&gpio GPIODV_4 GPIO_ACTIVE_HIGH>;
131                 enable-active-high;
132         };
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>;
141                 gpio = <&gpio GPIOH_3 GPIO_OPEN_DRAIN>;
142         };
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         };
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         };
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         };
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>;
177                 gpios = <&gpio GPIODV_5 GPIO_ACTIVE_HIGH>;
178                 gpios-states = <0>;
180                 states = <3300000 0>,
181                          <1800000 1>;
183                 regulator-settling-time-up-us = <200>;
184                 regulator-settling-time-down-us = <50000>;
185         };
187         sound {
188                 compatible = "amlogic,gx-sound-card";
189                 model = "GXL-LIBRETECH-S9XX-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                 status = "okay";
206                 dai-link-0 {
207                         sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
208                 };
210                 dai-link-1 {
211                         sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
212                         dai-format = "i2s";
213                         mclk-fs = <256>;
215                         codec-0 {
216                                 sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
217                         };
219                         codec-1 {
220                                 sound-dai = <&aiu AIU_ACODEC CTRL_I2S>;
221                         };
222                 };
224                 dai-link-2 {
225                         sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
227                         codec-0 {
228                                 sound-dai = <&hdmi_tx>;
229                         };
230                 };
232                 dai-link-3 {
233                         sound-dai = <&aiu AIU_ACODEC CTRL_OUT>;
235                         codec-0 {
236                                 sound-dai = <&acodec>;
237                         };
238                 };
239         };
242 &acodec {
243         AVDD-supply = <&vddio_ao18>;
244         status = "okay";
247 &aiu {
248         status = "okay";
251 &cec_AO {
252         pinctrl-0 = <&ao_cec_pins>;
253         pinctrl-names = "default";
254         hdmi-phandle = <&hdmi_tx>;
255         status = "okay";
258 &cvbs_vdac_port {
259         cvbs_vdac_out: endpoint {
260                 remote-endpoint = <&cvbs_connector_in>;
261         };
264 &ethmac {
265         pinctrl-0 = <&eth_pins>, <&eth_phy_irq_pins>;
266         pinctrl-names = "default";
267         phy-handle = <&external_phy>;
268         amlogic,tx-delay-ns = <2>;
269         phy-mode = "rgmii";
270         status = "okay";
273 &external_mdio {
274         external_phy: ethernet-phy@0 {
275                 reg = <0>;
276                 max-speed = <1000>;
277                 reset-assert-us = <10000>;
278                 reset-deassert-us = <30000>;
279                 reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
280                 interrupt-parent = <&gpio_intc>;
281                 interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
282         };
285 &pinctrl_periphs {
286         /*
287          * Make sure the reset pin of the usb HUB is driven high to take
288          * it out of reset.
289          */
290         usb1_rst_pins: usb1_rst_irq {
291                 mux {
292                         groups = "GPIODV_3";
293                         function = "gpio_periphs";
294                         bias-disable;
295                         output-high;
296                 };
297         };
299         /* Make sure the phy irq pin is properly configured as input */
300         eth_phy_irq_pins: eth_phy_irq {
301                 mux {
302                         groups = "GPIOZ_15";
303                         function = "gpio_periphs";
304                         bias-disable;
305                         output-disable;
306                 };
307         };
310 &hdmi_tx {
311         pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
312         pinctrl-names = "default";
313         hdmi-supply = <&vcc5v>;
314         status = "okay";
317 &hdmi_tx_tmds_port {
318         hdmi_tx_tmds_out: endpoint {
319                 remote-endpoint = <&hdmi_connector_in>;
320         };
323 &ir {
324         pinctrl-0 = <&remote_input_ao_pins>;
325         pinctrl-names = "default";
326         status = "okay";
329 &i2c_C {
330         pinctrl-0 = <&i2c_c_dv18_pins>;
331         pinctrl-names = "default";
332         status = "okay";
334         rtc: rtc@51 {
335                 reg = <0x51>;
336                 compatible = "nxp,pcf8563";
337                 #clock-cells = <0>;
338                 clock-output-names = "rtc_clkout";
339         };
342 &pwm_AO_ab {
343         pinctrl-0 = <&pwm_ao_a_3_pins>;
344         pinctrl-names = "default";
345         clocks = <&clkc CLKID_FCLK_DIV4>;
346         clock-names = "clkin0";
347         status = "okay";
350 &pwm_ab {
351         pinctrl-0 = <&pwm_b_pins>;
352         pinctrl-names = "default";
353         clocks = <&clkc CLKID_FCLK_DIV4>;
354         clock-names = "clkin0";
355         status = "okay";
358 &pwm_ef {
359         pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>;
360         pinctrl-names = "default";
361         clocks = <&clkc CLKID_FCLK_DIV4>;
362         clock-names = "clkin0";
363         status = "okay";
366 &saradc {
367         vref-supply = <&vddio_ao18>;
368         status = "okay";
371 /* SD card */
372 &sd_emmc_b {
373         pinctrl-0 = <&sdcard_pins>;
374         pinctrl-1 = <&sdcard_clk_gate_pins>;
375         pinctrl-names = "default", "clk-gate";
377         bus-width = <4>;
378         cap-sd-highspeed;
379         sd-uhs-sdr12;
380         sd-uhs-sdr25;
381         sd-uhs-sdr50;
382         sd-uhs-ddr50;
383         max-frequency = <200000000>;
384         disable-wp;
386         cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
388         vmmc-supply = <&vcc_card>;
389         vqmmc-supply = <&vddio_card>;
391         status = "okay";
394 /* eMMC */
395 &sd_emmc_c {
396         pinctrl-0 = <&emmc_pins>;
397         pinctrl-1 = <&emmc_clk_gate_pins>;
398         pinctrl-names = "default", "clk-gate";
400         bus-width = <8>;
401         cap-mmc-highspeed;
402         mmc-ddr-1_8v;
403         mmc-hs200-1_8v;
404         max-frequency = <200000000>;
405         disable-wp;
407         mmc-pwrseq = <&emmc_pwrseq>;
408         vmmc-supply = <&vddio_ao3v3>;
409         vqmmc-supply = <&vddio_boot>;
411         status = "okay";
414 &spifc {
415         pinctrl-0 = <&nor_pins>;
416         pinctrl-names = "default";
417         status = "okay";
419         gd25lq128: spi-flash@0 {
420                 compatible = "jedec,spi-nor";
421                 #address-cells = <1>;
422                 #size-cells = <1>;
423                 reg = <0>;
424                 spi-max-frequency = <12000000>;
425         };
428 &uart_AO {
429         pinctrl-0 = <&uart_ao_a_pins>;
430         pinctrl-names = "default";
431         status = "okay";
434 &usb {
435         status = "okay";
436         dr_mode = "host";
439 &usb2_phy0 {
440         pinctrl-0 = <&usb1_rst_pins>;
441         pinctrl-names = "default";
442         phy-supply = <&vcc5v>;
445 &usb2_phy1 {
446         phy-supply = <&vcc5v>;