blob: 94dafb955301b19b976d7c09b2dcf831489ad873 [file] [log] [blame]
Christian Hewitt67d51282023-03-23 14:31:40 +00001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2016 Andreas Färber
4 * Copyright (c) 2016 BayLibre, Inc.
5 * Author: Kevin Hilman <khilman@kernel.org>
6 */
7
8#include "meson-gxbb.dtsi"
9#include <dt-bindings/gpio/gpio.h>
10#include <dt-bindings/leds/common.h>
11
12/ {
13 aliases {
14 serial0 = &uart_AO;
15 ethernet0 = &ethmac;
16 };
17
18 chosen {
19 stdout-path = "serial0:115200n8";
20 };
21
22 memory@0 {
23 device_type = "memory";
24 reg = <0x0 0x0 0x0 0x40000000>;
25 };
26
27 leds {
28 compatible = "gpio-leds";
29
30 led-power {
31 /* red in suspend or power-off */
32 color = <LED_COLOR_ID_BLUE>;
33 function = LED_FUNCTION_POWER;
34 gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_HIGH>;
35 default-state = "on";
36 panic-indicator;
37 };
38 };
39
40 usb_pwr: regulator-usb-pwrs {
41 compatible = "regulator-fixed";
42
43 regulator-name = "USB_PWR";
44
45 regulator-min-microvolt = <5000000>;
46 regulator-max-microvolt = <5000000>;
47
48 gpio = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>;
49 enable-active-high;
50 };
51
52 vddio_boot: regulator-vddio_boot {
53 compatible = "regulator-fixed";
54 regulator-name = "VDDIO_BOOT";
55 regulator-min-microvolt = <1800000>;
56 regulator-max-microvolt = <1800000>;
57 };
58
59 vddao_3v3: regulator-vddao_3v3 {
60 compatible = "regulator-fixed";
61 regulator-name = "VDDAO_3V3";
62 regulator-min-microvolt = <3300000>;
63 regulator-max-microvolt = <3300000>;
64 };
65
66 vddio_ao18: regulator-vddio_ao18 {
67 compatible = "regulator-fixed";
68 regulator-name = "VDDIO_AO18";
69 regulator-min-microvolt = <1800000>;
70 regulator-max-microvolt = <1800000>;
71 regulator-always-on;
72 };
73
74 vcc_3v3: regulator-vcc_3v3 {
75 compatible = "regulator-fixed";
76 regulator-name = "VCC_3V3";
77 regulator-min-microvolt = <3300000>;
78 regulator-max-microvolt = <3300000>;
79 };
80
81 emmc_pwrseq: emmc-pwrseq {
82 compatible = "mmc-pwrseq-emmc";
83 reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
84 };
85
86 wifi32k: wifi32k {
87 compatible = "pwm-clock";
88 #clock-cells = <0>;
89 clock-frequency = <32768>;
90 pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
91 };
92
93 sdio_pwrseq: sdio-pwrseq {
94 compatible = "mmc-pwrseq-simple";
95 reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
96 clocks = <&wifi32k>;
97 clock-names = "ext_clock";
98 };
99
100 cvbs-connector {
101 compatible = "composite-video-connector";
102
103 port {
104 cvbs_connector_in: endpoint {
105 remote-endpoint = <&cvbs_vdac_out>;
106 };
107 };
108 };
109
110 hdmi-connector {
111 compatible = "hdmi-connector";
112 type = "a";
113
114 port {
115 hdmi_connector_in: endpoint {
116 remote-endpoint = <&hdmi_tx_tmds_out>;
117 };
118 };
119 };
120};
121
122&cec_AO {
123 status = "okay";
124 pinctrl-0 = <&ao_cec_pins>;
125 pinctrl-names = "default";
126 hdmi-phandle = <&hdmi_tx>;
127};
128
129&cvbs_vdac_port {
130 cvbs_vdac_out: endpoint {
131 remote-endpoint = <&cvbs_connector_in>;
132 };
133};
134
135&ethmac {
136 status = "okay";
137 pinctrl-0 = <&eth_rgmii_pins>;
138 pinctrl-names = "default";
139
140 phy-handle = <&eth_phy0>;
141 phy-mode = "rgmii";
142
143 amlogic,tx-delay-ns = <2>;
144
145 mdio {
146 compatible = "snps,dwmac-mdio";
147 #address-cells = <1>;
148 #size-cells = <0>;
149
150 eth_phy0: ethernet-phy@0 {
151 /* Realtek RTL8211F (0x001cc916) */
152 reg = <0>;
153
154 reset-assert-us = <10000>;
155 reset-deassert-us = <80000>;
156 reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
157
158 interrupt-parent = <&gpio_intc>;
159 /* MAC_INTR on GPIOZ_15 */
160 interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
161 };
162 };
163};
164
165&hdmi_tx {
166 status = "okay";
167 pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
168 pinctrl-names = "default";
169 hdmi-supply = <&vddio_ao18>;
170};
171
172&hdmi_tx_tmds_port {
173 hdmi_tx_tmds_out: endpoint {
174 remote-endpoint = <&hdmi_connector_in>;
175 };
176};
177
178&ir {
179 status = "okay";
180 pinctrl-0 = <&remote_input_ao_pins>;
181 pinctrl-names = "default";
182};
183
184&pwm_ef {
185 status = "okay";
186 pinctrl-0 = <&pwm_e_pins>;
187 pinctrl-names = "default";
188 clocks = <&clkc CLKID_FCLK_DIV4>;
189 clock-names = "clkin0";
190};
191
192&saradc {
193 status = "okay";
194 vref-supply = <&vddio_ao18>;
195};
196
197/* Wireless SDIO Module */
198&sd_emmc_a {
199 status = "okay";
200 pinctrl-0 = <&sdio_pins>;
201 pinctrl-1 = <&sdio_clk_gate_pins>;
202 pinctrl-names = "default", "clk-gate";
203 #address-cells = <1>;
204 #size-cells = <0>;
205
206 bus-width = <4>;
207 cap-sd-highspeed;
208 max-frequency = <50000000>;
209
210 non-removable;
211 disable-wp;
212
213 /* WiFi firmware requires power to be kept while in suspend */
214 keep-power-in-suspend;
215
216 mmc-pwrseq = <&sdio_pwrseq>;
217
218 vmmc-supply = <&vddao_3v3>;
219 vqmmc-supply = <&vddio_boot>;
220
221 brcmf: wifi@1 {
222 reg = <1>;
223 compatible = "brcm,bcm4329-fmac";
224 };
225};
226
227/* SD card */
228&sd_emmc_b {
229 status = "okay";
230 pinctrl-0 = <&sdcard_pins>;
231 pinctrl-1 = <&sdcard_clk_gate_pins>;
232 pinctrl-names = "default", "clk-gate";
233
234 bus-width = <4>;
235 cap-sd-highspeed;
236 max-frequency = <50000000>;
237 disable-wp;
238
239 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
240
241 vmmc-supply = <&vddao_3v3>;
242 vqmmc-supply = <&vcc_3v3>;
243};
244
245/* eMMC */
246&sd_emmc_c {
247 status = "okay";
248 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
249 pinctrl-1 = <&emmc_clk_gate_pins>;
250 pinctrl-names = "default", "clk-gate";
251
252 bus-width = <8>;
253 cap-mmc-highspeed;
254 max-frequency = <200000000>;
255 non-removable;
256 disable-wp;
257 mmc-ddr-1_8v;
258 mmc-hs200-1_8v;
259
260 mmc-pwrseq = <&emmc_pwrseq>;
261 vmmc-supply = <&vcc_3v3>;
262 vqmmc-supply = <&vddio_boot>;
263};
264
265/* This is connected to the Bluetooth module: */
266&uart_A {
267 status = "okay";
268 pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
269 pinctrl-names = "default";
270 uart-has-rtscts;
271
272 bluetooth {
273 compatible = "brcm,bcm43438-bt";
274 shutdown-gpios = <&gpio GPIOX_20 GPIO_ACTIVE_HIGH>;
275 };
276};
277
278/* This UART is brought out to the DB9 connector */
279&uart_AO {
280 status = "okay";
281 pinctrl-0 = <&uart_ao_a_pins>;
282 pinctrl-names = "default";
283};
284
285&usb0_phy {
286 status = "okay";
287 phy-supply = <&usb_pwr>;
288};
289
290&usb0 {
291 status = "okay";
292};