xref: /openbmc/linux/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi (revision f3c35382259f67c2ae878de2142fb58b94df0525)
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
19*f3c35382SJerome Brunet	dio2133: analog-amplifier {
20*f3c35382SJerome Brunet		compatible = "simple-audio-amplifier";
21*f3c35382SJerome Brunet		sound-name-prefix = "AU2";
22*f3c35382SJerome Brunet		VCC-supply = <&hdmi_5v>;
23*f3c35382SJerome Brunet		enable-gpios = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
24*f3c35382SJerome Brunet	};
25*f3c35382SJerome 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";
1243ffeb953SJerome Brunet		model = "GX-P230-Q200";
125*f3c35382SJerome Brunet		audio-aux-devs = <&dio2133>;
126*f3c35382SJerome Brunet		audio-widgets = "Line", "Lineout";
127*f3c35382SJerome Brunet		audio-routing = "AU2 INL", "ACODEC LOLP",
128*f3c35382SJerome Brunet				"AU2 INR", "ACODEC LORP",
129*f3c35382SJerome Brunet				"AU2 INL", "ACODEC LOLN",
130*f3c35382SJerome Brunet				"AU2 INR", "ACODEC LORN",
131*f3c35382SJerome Brunet				"Lineout", "AU2 OUTL",
132*f3c35382SJerome 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			};
158*f3c35382SJerome Brunet
159*f3c35382SJerome Brunet			codec-1 {
160*f3c35382SJerome Brunet				sound-dai = <&aiu AIU_ACODEC CTRL_I2S>;
161*f3c35382SJerome 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		};
179*f3c35382SJerome Brunet
180*f3c35382SJerome Brunet		dai-link-5 {
181*f3c35382SJerome Brunet			sound-dai = <&aiu AIU_ACODEC CTRL_OUT>;
182*f3c35382SJerome Brunet
183*f3c35382SJerome Brunet			codec-0 {
184*f3c35382SJerome Brunet				sound-dai = <&acodec>;
1853ffeb953SJerome Brunet			};
1863ffeb953SJerome Brunet		};
187*f3c35382SJerome Brunet	};
188*f3c35382SJerome Brunet};
189*f3c35382SJerome Brunet
190*f3c35382SJerome Brunet&acodec {
191*f3c35382SJerome Brunet	AVDD-supply = <&vddio_ao18>;
192*f3c35382SJerome Brunet	status = "okay";
193*f3c35382SJerome 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