Linux 6.9-rc1
[linux-2.6-microblaze.git] / arch / arm64 / boot / dts / amlogic / meson-gxm-nexbox-a1.dts
1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 /*
3  * Copyright (c) 2016 BayLibre, SAS.
4  * Author: Neil Armstrong <narmstrong@baylibre.com>
5  *
6  * Copyright (c) 2016 Endless Computers, Inc.
7  * Author: Carlo Caione <carlo@endlessm.com>
8  */
9
10 /dts-v1/;
11
12 #include "meson-gxm.dtsi"
13 #include <dt-bindings/sound/meson-aiu.h>
14
15 / {
16         compatible = "nexbox,a1", "amlogic,s912", "amlogic,meson-gxm";
17         model = "NEXBOX A1";
18
19         aliases {
20                 serial0 = &uart_AO;
21                 ethernet0 = &ethmac;
22         };
23
24         chosen {
25                 stdout-path = "serial0:115200n8";
26         };
27
28         spdif_dit: audio-codec-0 {
29                 #sound-dai-cells = <0>;
30                 compatible = "linux,spdif-dit";
31                 sound-name-prefix = "DIT";
32         };
33
34         memory@0 {
35                 device_type = "memory";
36                 reg = <0x0 0x0 0x0 0x80000000>;
37         };
38
39         vddio_boot: regulator-vddio-boot {
40                 compatible = "regulator-fixed";
41                 regulator-name = "VDDIO_BOOT";
42                 regulator-min-microvolt = <1800000>;
43                 regulator-max-microvolt = <1800000>;
44         };
45
46         vddao_3v3: regulator-vddao-3v3 {
47                 compatible = "regulator-fixed";
48                 regulator-name = "VDDAO_3V3";
49                 regulator-min-microvolt = <3300000>;
50                 regulator-max-microvolt = <3300000>;
51         };
52
53         vcc_3v3: regulator-vcc-3v3 {
54                 compatible = "regulator-fixed";
55                 regulator-name = "VCC_3V3";
56                 regulator-min-microvolt = <3300000>;
57                 regulator-max-microvolt = <3300000>;
58         };
59
60         emmc_pwrseq: emmc-pwrseq {
61                 compatible = "mmc-pwrseq-emmc";
62                 reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
63         };
64
65         cvbs-connector {
66                 compatible = "composite-video-connector";
67
68                 port {
69                         cvbs_connector_in: endpoint {
70                                 remote-endpoint = <&cvbs_vdac_out>;
71                         };
72                 };
73         };
74
75         hdmi-connector {
76                 compatible = "hdmi-connector";
77                 type = "a";
78
79                 port {
80                         hdmi_connector_in: endpoint {
81                                 remote-endpoint = <&hdmi_tx_tmds_out>;
82                         };
83                 };
84         };
85
86         sound {
87                 compatible = "amlogic,gx-sound-card";
88                 model = "NEXBOX-A1";
89                 assigned-clocks = <&clkc CLKID_MPLL0>,
90                                   <&clkc CLKID_MPLL1>,
91                                   <&clkc CLKID_MPLL2>;
92                 assigned-clock-parents = <0>, <0>, <0>;
93                 assigned-clock-rates = <294912000>,
94                                        <270950400>,
95                                        <393216000>;
96
97                 dai-link-0 {
98                         sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
99                 };
100
101                 dai-link-1 {
102                         sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>;
103                 };
104
105                 dai-link-2 {
106                         sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
107                         dai-format = "i2s";
108                         mclk-fs = <256>;
109
110                         codec-0 {
111                                 sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
112                         };
113                 };
114
115                 dai-link-3 {
116                         sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>;
117
118                         codec-0 {
119                                 sound-dai = <&spdif_dit>;
120                         };
121                 };
122
123                 dai-link-4 {
124                         sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
125
126                         codec-0 {
127                                 sound-dai = <&hdmi_tx>;
128                         };
129                 };
130         };
131 };
132
133 &aiu {
134         status = "okay";
135         pinctrl-0 = <&spdif_out_h_pins>;
136         pinctrl-names = "default";
137 };
138
139 &cec_AO {
140         status = "okay";
141         pinctrl-0 = <&ao_cec_pins>;
142         pinctrl-names = "default";
143         hdmi-phandle = <&hdmi_tx>;
144 };
145
146 &cvbs_vdac_port {
147         cvbs_vdac_out: endpoint {
148                 remote-endpoint = <&cvbs_connector_in>;
149         };
150 };
151
152 &ethmac {
153         status = "okay";
154
155         pinctrl-0 = <&eth_pins>;
156         pinctrl-names = "default";
157
158         /* Select external PHY by default */
159         phy-handle = <&external_phy>;
160
161         amlogic,tx-delay-ns = <2>;
162
163         /* External PHY is in RGMII */
164         phy-mode = "rgmii";
165 };
166
167 &external_mdio {
168         external_phy: ethernet-phy@0 {
169                 /* Realtek RTL8211F (0x001cc916) */
170                 reg = <0>;
171                 max-speed = <1000>;
172
173                 reset-assert-us = <10000>;
174                 reset-deassert-us = <80000>;
175                 reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
176         };
177 };
178
179 &hdmi_tx {
180         status = "okay";
181         pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
182         pinctrl-names = "default";
183 };
184
185 &hdmi_tx_tmds_port {
186         hdmi_tx_tmds_out: endpoint {
187                 remote-endpoint = <&hdmi_connector_in>;
188         };
189 };
190
191 &ir {
192         status = "okay";
193         pinctrl-0 = <&remote_input_ao_pins>;
194         pinctrl-names = "default";
195 };
196
197 /* SD card */
198 &sd_emmc_b {
199         status = "okay";
200         pinctrl-0 = <&sdcard_pins>;
201         pinctrl-1 = <&sdcard_clk_gate_pins>;
202         pinctrl-names = "default", "clk-gate";
203
204         bus-width = <4>;
205         cap-sd-highspeed;
206         max-frequency = <50000000>;
207         disable-wp;
208
209         cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
210
211         vmmc-supply = <&vddao_3v3>;
212         vqmmc-supply = <&vddio_boot>;
213 };
214
215 /* eMMC */
216 &sd_emmc_c {
217         status = "okay";
218         pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
219         pinctrl-1 = <&emmc_clk_gate_pins>;
220         pinctrl-names = "default", "clk-gate";
221
222         bus-width = <8>;
223         cap-mmc-highspeed;
224         max-frequency = <200000000>;
225         non-removable;
226         disable-wp;
227         mmc-ddr-1_8v;
228         mmc-hs200-1_8v;
229
230         mmc-pwrseq = <&emmc_pwrseq>;
231         vmmc-supply = <&vcc_3v3>;
232         vqmmc-supply = <&vddio_boot>;
233 };
234
235 &uart_AO {
236         status = "okay";
237         pinctrl-0 = <&uart_ao_a_pins>;
238         pinctrl-names = "default";
239 };
240
241 &usb {
242         status = "okay";
243         dr_mode = "host";
244 };