xref: /openbmc/linux/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi (revision 933b80eda017c64c15b7f0e63961109d85b426b7)
1114abfe1SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2bb51b535SNeil Armstrong/*
3bb51b535SNeil Armstrong * Copyright (c) 2016 Endless Computers, Inc.
4bb51b535SNeil Armstrong * Author: Carlo Caione <carlo@endlessm.com>
5bb51b535SNeil Armstrong */
6bb51b535SNeil Armstrong
7bb51b535SNeil Armstrong/* Common DTSI for same Amlogic Q200/Q201 and P230/P231 boards using either
8bb51b535SNeil Armstrong * the pin-compatible S912 (GXM) or S905D (GXL) SoCs.
9bb51b535SNeil Armstrong */
10bb51b535SNeil Armstrong
113ffeb953SJerome Brunet#include <dt-bindings/sound/meson-aiu.h>
123ffeb953SJerome Brunet
13bb51b535SNeil Armstrong/ {
14bb51b535SNeil Armstrong	aliases {
15bb51b535SNeil Armstrong		serial0 = &uart_AO;
16059a58fcSJorge Ramirez-Ortiz		ethernet0 = &ethmac;
17bb51b535SNeil Armstrong	};
18bb51b535SNeil Armstrong
19f3c35382SJerome Brunet	dio2133: analog-amplifier {
20f3c35382SJerome Brunet		compatible = "simple-audio-amplifier";
21f3c35382SJerome Brunet		sound-name-prefix = "AU2";
22f3c35382SJerome Brunet		VCC-supply = <&hdmi_5v>;
23f3c35382SJerome Brunet		enable-gpios = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
24f3c35382SJerome Brunet	};
25f3c35382SJerome Brunet
263ffeb953SJerome Brunet	spdif_dit: audio-codec-0 {
273ffeb953SJerome Brunet		#sound-dai-cells = <0>;
283ffeb953SJerome Brunet		compatible = "linux,spdif-dit";
293ffeb953SJerome Brunet		status = "okay";
303ffeb953SJerome Brunet		sound-name-prefix = "DIT";
313ffeb953SJerome Brunet	};
323ffeb953SJerome Brunet
33bb51b535SNeil Armstrong	chosen {
34bb51b535SNeil Armstrong		stdout-path = "serial0:115200n8";
35bb51b535SNeil Armstrong	};
36bb51b535SNeil Armstrong
37bb51b535SNeil Armstrong	memory@0 {
38bb51b535SNeil Armstrong		device_type = "memory";
39bb51b535SNeil Armstrong		reg = <0x0 0x0 0x0 0x80000000>;
40bb51b535SNeil Armstrong	};
41bb51b535SNeil Armstrong
42b409f625SNeil Armstrong	hdmi_5v: regulator-hdmi-5v {
43b409f625SNeil Armstrong		compatible = "regulator-fixed";
44b409f625SNeil Armstrong
45b409f625SNeil Armstrong		regulator-name = "HDMI_5V";
46b409f625SNeil Armstrong		regulator-min-microvolt = <5000000>;
47b409f625SNeil Armstrong		regulator-max-microvolt = <5000000>;
48b409f625SNeil Armstrong
49b409f625SNeil Armstrong		gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>;
50b409f625SNeil Armstrong		enable-active-high;
51b409f625SNeil Armstrong		regulator-always-on;
52b409f625SNeil Armstrong	};
53b409f625SNeil Armstrong
5441ed2e0dSMartin Blumenstingl	vddio_ao18: regulator-vddio_ao18 {
5541ed2e0dSMartin Blumenstingl		compatible = "regulator-fixed";
5641ed2e0dSMartin Blumenstingl		regulator-name = "VDDIO_AO18";
5741ed2e0dSMartin Blumenstingl		regulator-min-microvolt = <1800000>;
5841ed2e0dSMartin Blumenstingl		regulator-max-microvolt = <1800000>;
5941ed2e0dSMartin Blumenstingl	};
6041ed2e0dSMartin Blumenstingl
61bb51b535SNeil Armstrong	vddio_boot: regulator-vddio_boot {
62bb51b535SNeil Armstrong		compatible = "regulator-fixed";
63bb51b535SNeil Armstrong		regulator-name = "VDDIO_BOOT";
64bb51b535SNeil Armstrong		regulator-min-microvolt = <1800000>;
65bb51b535SNeil Armstrong		regulator-max-microvolt = <1800000>;
66bb51b535SNeil Armstrong	};
67bb51b535SNeil Armstrong
68bb51b535SNeil Armstrong	vddao_3v3: regulator-vddao_3v3 {
69bb51b535SNeil Armstrong		compatible = "regulator-fixed";
70bb51b535SNeil Armstrong		regulator-name = "VDDAO_3V3";
71bb51b535SNeil Armstrong		regulator-min-microvolt = <3300000>;
72bb51b535SNeil Armstrong		regulator-max-microvolt = <3300000>;
73bb51b535SNeil Armstrong	};
74bb51b535SNeil Armstrong
75bb51b535SNeil Armstrong	vcc_3v3: regulator-vcc_3v3 {
76bb51b535SNeil Armstrong		compatible = "regulator-fixed";
77bb51b535SNeil Armstrong		regulator-name = "VCC_3V3";
78bb51b535SNeil Armstrong		regulator-min-microvolt = <3300000>;
79bb51b535SNeil Armstrong		regulator-max-microvolt = <3300000>;
80bb51b535SNeil Armstrong	};
81bb51b535SNeil Armstrong
82bb51b535SNeil Armstrong	emmc_pwrseq: emmc-pwrseq {
83bb51b535SNeil Armstrong		compatible = "mmc-pwrseq-emmc";
84bb51b535SNeil Armstrong		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
85bb51b535SNeil Armstrong	};
86bb51b535SNeil Armstrong
87bb51b535SNeil Armstrong	wifi32k: wifi32k {
88bb51b535SNeil Armstrong		compatible = "pwm-clock";
89bb51b535SNeil Armstrong		#clock-cells = <0>;
90bb51b535SNeil Armstrong		clock-frequency = <32768>;
91bb51b535SNeil Armstrong		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
92bb51b535SNeil Armstrong	};
93bb51b535SNeil Armstrong
94bb51b535SNeil Armstrong	sdio_pwrseq: sdio-pwrseq {
95bb51b535SNeil Armstrong		compatible = "mmc-pwrseq-simple";
96bb51b535SNeil Armstrong		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
97bb51b535SNeil Armstrong		clocks = <&wifi32k>;
98bb51b535SNeil Armstrong		clock-names = "ext_clock";
99bb51b535SNeil Armstrong	};
1006939db7eSNeil Armstrong
1016939db7eSNeil Armstrong	cvbs-connector {
1026939db7eSNeil Armstrong		compatible = "composite-video-connector";
1036939db7eSNeil Armstrong
1046939db7eSNeil Armstrong		port {
1056939db7eSNeil Armstrong			cvbs_connector_in: endpoint {
1066939db7eSNeil Armstrong				remote-endpoint = <&cvbs_vdac_out>;
1076939db7eSNeil Armstrong			};
1086939db7eSNeil Armstrong		};
1096939db7eSNeil Armstrong	};
1106939db7eSNeil Armstrong
1116939db7eSNeil Armstrong	hdmi-connector {
1126939db7eSNeil Armstrong		compatible = "hdmi-connector";
1136939db7eSNeil Armstrong		type = "a";
1146939db7eSNeil Armstrong
1156939db7eSNeil Armstrong		port {
1166939db7eSNeil Armstrong			hdmi_connector_in: endpoint {
1176939db7eSNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
1186939db7eSNeil Armstrong			};
1196939db7eSNeil Armstrong		};
1206939db7eSNeil Armstrong	};
1213ffeb953SJerome Brunet
1223ffeb953SJerome Brunet	sound {
1233ffeb953SJerome Brunet		compatible = "amlogic,gx-sound-card";
124*933b80edSChristian Hewitt		model = "P230-Q200";
125f3c35382SJerome Brunet		audio-aux-devs = <&dio2133>;
126f3c35382SJerome Brunet		audio-widgets = "Line", "Lineout";
127f3c35382SJerome Brunet		audio-routing = "AU2 INL", "ACODEC LOLP",
128f3c35382SJerome Brunet				"AU2 INR", "ACODEC LORP",
129f3c35382SJerome Brunet				"AU2 INL", "ACODEC LOLN",
130f3c35382SJerome Brunet				"AU2 INR", "ACODEC LORN",
131f3c35382SJerome Brunet				"Lineout", "AU2 OUTL",
132f3c35382SJerome Brunet				"Lineout", "AU2 OUTR";
1333ffeb953SJerome Brunet		assigned-clocks = <&clkc CLKID_MPLL0>,
1343ffeb953SJerome Brunet				  <&clkc CLKID_MPLL1>,
1353ffeb953SJerome Brunet				  <&clkc CLKID_MPLL2>;
1363ffeb953SJerome Brunet		assigned-clock-parents = <0>, <0>, <0>;
1373ffeb953SJerome Brunet		assigned-clock-rates = <294912000>,
1383ffeb953SJerome Brunet				       <270950400>,
1393ffeb953SJerome Brunet				       <393216000>;
1403ffeb953SJerome Brunet		status = "okay";
1413ffeb953SJerome Brunet
1423ffeb953SJerome Brunet		dai-link-0 {
1433ffeb953SJerome Brunet			sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
1443ffeb953SJerome Brunet		};
1453ffeb953SJerome Brunet
1463ffeb953SJerome Brunet		dai-link-1 {
1473ffeb953SJerome Brunet			sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>;
1483ffeb953SJerome Brunet		};
1493ffeb953SJerome Brunet
1503ffeb953SJerome Brunet		dai-link-2 {
1513ffeb953SJerome Brunet			sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
1523ffeb953SJerome Brunet			dai-format = "i2s";
1533ffeb953SJerome Brunet			mclk-fs = <256>;
1543ffeb953SJerome Brunet
1553ffeb953SJerome Brunet			codec-0 {
1563ffeb953SJerome Brunet				sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
1573ffeb953SJerome Brunet			};
158f3c35382SJerome Brunet
159f3c35382SJerome Brunet			codec-1 {
160f3c35382SJerome Brunet				sound-dai = <&aiu AIU_ACODEC CTRL_I2S>;
161f3c35382SJerome Brunet			};
1623ffeb953SJerome Brunet		};
1633ffeb953SJerome Brunet
1643ffeb953SJerome Brunet		dai-link-3 {
1653ffeb953SJerome Brunet			sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>;
1663ffeb953SJerome Brunet
1673ffeb953SJerome Brunet			codec-0 {
1683ffeb953SJerome Brunet				sound-dai = <&spdif_dit>;
1693ffeb953SJerome Brunet			};
1703ffeb953SJerome Brunet		};
1713ffeb953SJerome Brunet
1723ffeb953SJerome Brunet		dai-link-4 {
1733ffeb953SJerome Brunet			sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
1743ffeb953SJerome Brunet
1753ffeb953SJerome Brunet			codec-0 {
1763ffeb953SJerome Brunet				sound-dai = <&hdmi_tx>;
1773ffeb953SJerome Brunet			};
1783ffeb953SJerome Brunet		};
179f3c35382SJerome Brunet
180f3c35382SJerome Brunet		dai-link-5 {
181f3c35382SJerome Brunet			sound-dai = <&aiu AIU_ACODEC CTRL_OUT>;
182f3c35382SJerome Brunet
183f3c35382SJerome Brunet			codec-0 {
184f3c35382SJerome Brunet				sound-dai = <&acodec>;
1853ffeb953SJerome Brunet			};
1863ffeb953SJerome Brunet		};
187f3c35382SJerome Brunet	};
188f3c35382SJerome Brunet};
189f3c35382SJerome Brunet
190f3c35382SJerome Brunet&acodec {
191f3c35382SJerome Brunet	AVDD-supply = <&vddio_ao18>;
192f3c35382SJerome Brunet	status = "okay";
193f3c35382SJerome Brunet};
1943ffeb953SJerome Brunet
1953ffeb953SJerome Brunet&aiu {
1963ffeb953SJerome Brunet	status = "okay";
1973ffeb953SJerome Brunet	pinctrl-0 = <&spdif_out_h_pins>;
1983ffeb953SJerome Brunet	pinctrl-names = "default";
1993ffeb953SJerome Brunet
200bb51b535SNeil Armstrong};
201bb51b535SNeil Armstrong
202b16c71c9SNeil Armstrong&cec_AO {
203b16c71c9SNeil Armstrong	status = "okay";
204b16c71c9SNeil Armstrong	pinctrl-0 = <&ao_cec_pins>;
205b16c71c9SNeil Armstrong	pinctrl-names = "default";
206b16c71c9SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
207b16c71c9SNeil Armstrong};
208b16c71c9SNeil Armstrong
209d5463d25SAndreas Färber&cvbs_vdac_port {
210d5463d25SAndreas Färber	cvbs_vdac_out: endpoint {
211d5463d25SAndreas Färber		remote-endpoint = <&cvbs_connector_in>;
212d5463d25SAndreas Färber	};
213d5463d25SAndreas Färber};
214d5463d25SAndreas Färber
215d5463d25SAndreas Färber&ethmac {
216bb51b535SNeil Armstrong	status = "okay";
217d5463d25SAndreas Färber};
218d5463d25SAndreas Färber
219d5463d25SAndreas Färber&hdmi_tx {
220d5463d25SAndreas Färber	status = "okay";
221d5463d25SAndreas Färber	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
222bb51b535SNeil Armstrong	pinctrl-names = "default";
223e1f2163dSNeil Armstrong	hdmi-supply = <&hdmi_5v>;
224bb51b535SNeil Armstrong};
225bb51b535SNeil Armstrong
226d5463d25SAndreas Färber&hdmi_tx_tmds_port {
227d5463d25SAndreas Färber	hdmi_tx_tmds_out: endpoint {
228d5463d25SAndreas Färber		remote-endpoint = <&hdmi_connector_in>;
229d5463d25SAndreas Färber	};
230d5463d25SAndreas Färber};
231d5463d25SAndreas Färber
232bb51b535SNeil Armstrong&ir {
233bb51b535SNeil Armstrong	status = "okay";
234bb51b535SNeil Armstrong	pinctrl-0 = <&remote_input_ao_pins>;
235bb51b535SNeil Armstrong	pinctrl-names = "default";
236bb51b535SNeil Armstrong};
237bb51b535SNeil Armstrong
238d5463d25SAndreas Färber&pwm_ef {
239d5463d25SAndreas Färber	status = "okay";
240d5463d25SAndreas Färber	pinctrl-0 = <&pwm_e_pins>;
241d5463d25SAndreas Färber	pinctrl-names = "default";
242d5463d25SAndreas Färber	clocks = <&clkc CLKID_FCLK_DIV4>;
243d5463d25SAndreas Färber	clock-names = "clkin0";
244d5463d25SAndreas Färber};
245d5463d25SAndreas Färber
24641ed2e0dSMartin Blumenstingl&saradc {
24741ed2e0dSMartin Blumenstingl	status = "okay";
24841ed2e0dSMartin Blumenstingl	vref-supply = <&vddio_ao18>;
24941ed2e0dSMartin Blumenstingl};
25041ed2e0dSMartin Blumenstingl
251bb51b535SNeil Armstrong/* Wireless SDIO Module */
252bb51b535SNeil Armstrong&sd_emmc_a {
253bb51b535SNeil Armstrong	status = "okay";
254bb51b535SNeil Armstrong	pinctrl-0 = <&sdio_pins>;
25567e7607fSJerome Brunet	pinctrl-1 = <&sdio_clk_gate_pins>;
25667e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
257bb51b535SNeil Armstrong	#address-cells = <1>;
258bb51b535SNeil Armstrong	#size-cells = <0>;
259bb51b535SNeil Armstrong
260bb51b535SNeil Armstrong	bus-width = <4>;
261bb51b535SNeil Armstrong	cap-sd-highspeed;
262adc52bf7SJerome Brunet	max-frequency = <50000000>;
263bb51b535SNeil Armstrong
264bb51b535SNeil Armstrong	non-removable;
265bb51b535SNeil Armstrong	disable-wp;
266bb51b535SNeil Armstrong
26786b8eaa2SNeil Armstrong	/* WiFi firmware requires power to be kept while in suspend */
26886b8eaa2SNeil Armstrong	keep-power-in-suspend;
26986b8eaa2SNeil Armstrong
270bb51b535SNeil Armstrong	mmc-pwrseq = <&sdio_pwrseq>;
271bb51b535SNeil Armstrong
272bb51b535SNeil Armstrong	vmmc-supply = <&vddao_3v3>;
273bb51b535SNeil Armstrong	vqmmc-supply = <&vddio_boot>;
274bb51b535SNeil Armstrong};
275bb51b535SNeil Armstrong
276bb51b535SNeil Armstrong/* SD card */
277bb51b535SNeil Armstrong&sd_emmc_b {
278bb51b535SNeil Armstrong	status = "okay";
279bb51b535SNeil Armstrong	pinctrl-0 = <&sdcard_pins>;
28067e7607fSJerome Brunet	pinctrl-1 = <&sdcard_clk_gate_pins>;
28167e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
282bb51b535SNeil Armstrong
283bb51b535SNeil Armstrong	bus-width = <4>;
284bb51b535SNeil Armstrong	cap-sd-highspeed;
285adc52bf7SJerome Brunet	max-frequency = <50000000>;
286bb51b535SNeil Armstrong	disable-wp;
287bb51b535SNeil Armstrong
288f29200c8SLoys Ollivier	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
289bb51b535SNeil Armstrong
290bb51b535SNeil Armstrong	vmmc-supply = <&vddao_3v3>;
291bb51b535SNeil Armstrong	vqmmc-supply = <&vddio_boot>;
292bb51b535SNeil Armstrong};
293bb51b535SNeil Armstrong
294bb51b535SNeil Armstrong/* eMMC */
295bb51b535SNeil Armstrong&sd_emmc_c {
296bb51b535SNeil Armstrong	status = "okay";
297ab36be66SNeil Armstrong	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
29867e7607fSJerome Brunet	pinctrl-1 = <&emmc_clk_gate_pins>;
29967e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
300bb51b535SNeil Armstrong
301bb51b535SNeil Armstrong	bus-width = <8>;
302bb51b535SNeil Armstrong	cap-mmc-highspeed;
303bb51b535SNeil Armstrong	max-frequency = <200000000>;
304bb51b535SNeil Armstrong	non-removable;
305bb51b535SNeil Armstrong	disable-wp;
306bb51b535SNeil Armstrong	mmc-ddr-1_8v;
307bb51b535SNeil Armstrong	mmc-hs200-1_8v;
308bb51b535SNeil Armstrong
309bb51b535SNeil Armstrong	mmc-pwrseq = <&emmc_pwrseq>;
310bb51b535SNeil Armstrong	vmmc-supply = <&vcc_3v3>;
311bb51b535SNeil Armstrong	vqmmc-supply = <&vddio_boot>;
312bb51b535SNeil Armstrong};
313bb51b535SNeil Armstrong
314d5463d25SAndreas Färber/* This UART is brought out to the DB9 connector */
315d5463d25SAndreas Färber&uart_AO {
316bb51b535SNeil Armstrong	status = "okay";
317d5463d25SAndreas Färber	pinctrl-0 = <&uart_ao_a_pins>;
318bb51b535SNeil Armstrong	pinctrl-names = "default";
3196939db7eSNeil Armstrong};
320972cd12aSMartin Blumenstingl
3212f9139c2SMartin Blumenstingl&usb {
322972cd12aSMartin Blumenstingl	status = "okay";
3232f9139c2SMartin Blumenstingl	dr_mode = "otg";
324972cd12aSMartin Blumenstingl};
325