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