blob: 773107cc47ddb57fdd4de3f89a1899d92500a634 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// 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";
Tom Rini53633a82024-02-29 12:33:36 -050031 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";
Tom Rini9c8af152024-12-24 12:03:04 -060089 clocks = <&clkc CLKID_MPLL0>,
90 <&clkc CLKID_MPLL1>,
91 <&clkc CLKID_MPLL2>;
92
Tom Rini53633a82024-02-29 12:33:36 -050093 assigned-clocks = <&clkc CLKID_MPLL0>,
94 <&clkc CLKID_MPLL1>,
95 <&clkc CLKID_MPLL2>;
96 assigned-clock-parents = <0>, <0>, <0>;
97 assigned-clock-rates = <294912000>,
98 <270950400>,
99 <393216000>;
100
101 dai-link-0 {
102 sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
103 };
104
105 dai-link-1 {
106 sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>;
107 };
108
109 dai-link-2 {
110 sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
111 dai-format = "i2s";
112 mclk-fs = <256>;
113
114 codec-0 {
115 sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
116 };
117 };
118
119 dai-link-3 {
120 sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>;
121
122 codec-0 {
123 sound-dai = <&spdif_dit>;
124 };
125 };
126
127 dai-link-4 {
128 sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
129
130 codec-0 {
131 sound-dai = <&hdmi_tx>;
132 };
133 };
134 };
135};
136
137&aiu {
138 status = "okay";
139 pinctrl-0 = <&spdif_out_h_pins>;
140 pinctrl-names = "default";
141};
142
143&cec_AO {
144 status = "okay";
145 pinctrl-0 = <&ao_cec_pins>;
146 pinctrl-names = "default";
147 hdmi-phandle = <&hdmi_tx>;
148};
149
150&cvbs_vdac_port {
151 cvbs_vdac_out: endpoint {
152 remote-endpoint = <&cvbs_connector_in>;
153 };
154};
155
156&ethmac {
157 status = "okay";
158
159 pinctrl-0 = <&eth_pins>;
160 pinctrl-names = "default";
161
162 /* Select external PHY by default */
163 phy-handle = <&external_phy>;
164
165 amlogic,tx-delay-ns = <2>;
166
167 /* External PHY is in RGMII */
168 phy-mode = "rgmii";
169};
170
171&external_mdio {
172 external_phy: ethernet-phy@0 {
173 /* Realtek RTL8211F (0x001cc916) */
174 reg = <0>;
175 max-speed = <1000>;
176
177 reset-assert-us = <10000>;
178 reset-deassert-us = <80000>;
179 reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
180 };
181};
182
183&hdmi_tx {
184 status = "okay";
185 pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
186 pinctrl-names = "default";
187};
188
189&hdmi_tx_tmds_port {
190 hdmi_tx_tmds_out: endpoint {
191 remote-endpoint = <&hdmi_connector_in>;
192 };
193};
194
195&ir {
196 status = "okay";
197 pinctrl-0 = <&remote_input_ao_pins>;
198 pinctrl-names = "default";
199};
200
201/* SD card */
202&sd_emmc_b {
203 status = "okay";
204 pinctrl-0 = <&sdcard_pins>;
205 pinctrl-1 = <&sdcard_clk_gate_pins>;
206 pinctrl-names = "default", "clk-gate";
207
208 bus-width = <4>;
209 cap-sd-highspeed;
210 max-frequency = <50000000>;
211 disable-wp;
212
213 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
214
215 vmmc-supply = <&vddao_3v3>;
216 vqmmc-supply = <&vddio_boot>;
217};
218
219/* eMMC */
220&sd_emmc_c {
221 status = "okay";
222 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
223 pinctrl-1 = <&emmc_clk_gate_pins>;
224 pinctrl-names = "default", "clk-gate";
225
226 bus-width = <8>;
227 cap-mmc-highspeed;
228 max-frequency = <200000000>;
229 non-removable;
230 disable-wp;
231 mmc-ddr-1_8v;
232 mmc-hs200-1_8v;
233
234 mmc-pwrseq = <&emmc_pwrseq>;
235 vmmc-supply = <&vcc_3v3>;
236 vqmmc-supply = <&vddio_boot>;
237};
238
239&uart_AO {
240 status = "okay";
241 pinctrl-0 = <&uart_ao_a_pins>;
242 pinctrl-names = "default";
243};
244
245&usb {
246 status = "okay";
247 dr_mode = "host";
248};