xref: /openbmc/linux/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi (revision 3ffeb9532d42c0cf9d91ec60259177e04c7062aa)
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
11*3ffeb953SJerome Brunet#include <dt-bindings/sound/meson-aiu.h>
12*3ffeb953SJerome Brunet
13bb51b535SNeil Armstrong/ {
14bb51b535SNeil Armstrong	aliases {
15bb51b535SNeil Armstrong		serial0 = &uart_AO;
16059a58fcSJorge Ramirez-Ortiz		ethernet0 = &ethmac;
17bb51b535SNeil Armstrong	};
18bb51b535SNeil Armstrong
19*3ffeb953SJerome Brunet	spdif_dit: audio-codec-0 {
20*3ffeb953SJerome Brunet		#sound-dai-cells = <0>;
21*3ffeb953SJerome Brunet		compatible = "linux,spdif-dit";
22*3ffeb953SJerome Brunet		status = "okay";
23*3ffeb953SJerome Brunet		sound-name-prefix = "DIT";
24*3ffeb953SJerome Brunet	};
25*3ffeb953SJerome Brunet
26bb51b535SNeil Armstrong	chosen {
27bb51b535SNeil Armstrong		stdout-path = "serial0:115200n8";
28bb51b535SNeil Armstrong	};
29bb51b535SNeil Armstrong
30bb51b535SNeil Armstrong	memory@0 {
31bb51b535SNeil Armstrong		device_type = "memory";
32bb51b535SNeil Armstrong		reg = <0x0 0x0 0x0 0x80000000>;
33bb51b535SNeil Armstrong	};
34bb51b535SNeil Armstrong
35b409f625SNeil Armstrong	hdmi_5v: regulator-hdmi-5v {
36b409f625SNeil Armstrong		compatible = "regulator-fixed";
37b409f625SNeil Armstrong
38b409f625SNeil Armstrong		regulator-name = "HDMI_5V";
39b409f625SNeil Armstrong		regulator-min-microvolt = <5000000>;
40b409f625SNeil Armstrong		regulator-max-microvolt = <5000000>;
41b409f625SNeil Armstrong
42b409f625SNeil Armstrong		gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>;
43b409f625SNeil Armstrong		enable-active-high;
44b409f625SNeil Armstrong		regulator-always-on;
45b409f625SNeil Armstrong	};
46b409f625SNeil Armstrong
4741ed2e0dSMartin Blumenstingl	vddio_ao18: regulator-vddio_ao18 {
4841ed2e0dSMartin Blumenstingl		compatible = "regulator-fixed";
4941ed2e0dSMartin Blumenstingl		regulator-name = "VDDIO_AO18";
5041ed2e0dSMartin Blumenstingl		regulator-min-microvolt = <1800000>;
5141ed2e0dSMartin Blumenstingl		regulator-max-microvolt = <1800000>;
5241ed2e0dSMartin Blumenstingl	};
5341ed2e0dSMartin Blumenstingl
54bb51b535SNeil Armstrong	vddio_boot: regulator-vddio_boot {
55bb51b535SNeil Armstrong		compatible = "regulator-fixed";
56bb51b535SNeil Armstrong		regulator-name = "VDDIO_BOOT";
57bb51b535SNeil Armstrong		regulator-min-microvolt = <1800000>;
58bb51b535SNeil Armstrong		regulator-max-microvolt = <1800000>;
59bb51b535SNeil Armstrong	};
60bb51b535SNeil Armstrong
61bb51b535SNeil Armstrong	vddao_3v3: regulator-vddao_3v3 {
62bb51b535SNeil Armstrong		compatible = "regulator-fixed";
63bb51b535SNeil Armstrong		regulator-name = "VDDAO_3V3";
64bb51b535SNeil Armstrong		regulator-min-microvolt = <3300000>;
65bb51b535SNeil Armstrong		regulator-max-microvolt = <3300000>;
66bb51b535SNeil Armstrong	};
67bb51b535SNeil Armstrong
68bb51b535SNeil Armstrong	vcc_3v3: regulator-vcc_3v3 {
69bb51b535SNeil Armstrong		compatible = "regulator-fixed";
70bb51b535SNeil Armstrong		regulator-name = "VCC_3V3";
71bb51b535SNeil Armstrong		regulator-min-microvolt = <3300000>;
72bb51b535SNeil Armstrong		regulator-max-microvolt = <3300000>;
73bb51b535SNeil Armstrong	};
74bb51b535SNeil Armstrong
75bb51b535SNeil Armstrong	emmc_pwrseq: emmc-pwrseq {
76bb51b535SNeil Armstrong		compatible = "mmc-pwrseq-emmc";
77bb51b535SNeil Armstrong		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
78bb51b535SNeil Armstrong	};
79bb51b535SNeil Armstrong
80bb51b535SNeil Armstrong	wifi32k: wifi32k {
81bb51b535SNeil Armstrong		compatible = "pwm-clock";
82bb51b535SNeil Armstrong		#clock-cells = <0>;
83bb51b535SNeil Armstrong		clock-frequency = <32768>;
84bb51b535SNeil Armstrong		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
85bb51b535SNeil Armstrong	};
86bb51b535SNeil Armstrong
87bb51b535SNeil Armstrong	sdio_pwrseq: sdio-pwrseq {
88bb51b535SNeil Armstrong		compatible = "mmc-pwrseq-simple";
89bb51b535SNeil Armstrong		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
90bb51b535SNeil Armstrong		clocks = <&wifi32k>;
91bb51b535SNeil Armstrong		clock-names = "ext_clock";
92bb51b535SNeil Armstrong	};
936939db7eSNeil Armstrong
946939db7eSNeil Armstrong	cvbs-connector {
956939db7eSNeil Armstrong		compatible = "composite-video-connector";
966939db7eSNeil Armstrong
976939db7eSNeil Armstrong		port {
986939db7eSNeil Armstrong			cvbs_connector_in: endpoint {
996939db7eSNeil Armstrong				remote-endpoint = <&cvbs_vdac_out>;
1006939db7eSNeil Armstrong			};
1016939db7eSNeil Armstrong		};
1026939db7eSNeil Armstrong	};
1036939db7eSNeil Armstrong
1046939db7eSNeil Armstrong	hdmi-connector {
1056939db7eSNeil Armstrong		compatible = "hdmi-connector";
1066939db7eSNeil Armstrong		type = "a";
1076939db7eSNeil Armstrong
1086939db7eSNeil Armstrong		port {
1096939db7eSNeil Armstrong			hdmi_connector_in: endpoint {
1106939db7eSNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
1116939db7eSNeil Armstrong			};
1126939db7eSNeil Armstrong		};
1136939db7eSNeil Armstrong	};
114*3ffeb953SJerome Brunet
115*3ffeb953SJerome Brunet	sound {
116*3ffeb953SJerome Brunet		compatible = "amlogic,gx-sound-card";
117*3ffeb953SJerome Brunet		model = "GX-P230-Q200";
118*3ffeb953SJerome Brunet		assigned-clocks = <&clkc CLKID_MPLL0>,
119*3ffeb953SJerome Brunet				  <&clkc CLKID_MPLL1>,
120*3ffeb953SJerome Brunet				  <&clkc CLKID_MPLL2>;
121*3ffeb953SJerome Brunet		assigned-clock-parents = <0>, <0>, <0>;
122*3ffeb953SJerome Brunet		assigned-clock-rates = <294912000>,
123*3ffeb953SJerome Brunet				       <270950400>,
124*3ffeb953SJerome Brunet				       <393216000>;
125*3ffeb953SJerome Brunet		status = "okay";
126*3ffeb953SJerome Brunet
127*3ffeb953SJerome Brunet		dai-link-0 {
128*3ffeb953SJerome Brunet			sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
129*3ffeb953SJerome Brunet		};
130*3ffeb953SJerome Brunet
131*3ffeb953SJerome Brunet		dai-link-1 {
132*3ffeb953SJerome Brunet			sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>;
133*3ffeb953SJerome Brunet		};
134*3ffeb953SJerome Brunet
135*3ffeb953SJerome Brunet		dai-link-2 {
136*3ffeb953SJerome Brunet			sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
137*3ffeb953SJerome Brunet			dai-format = "i2s";
138*3ffeb953SJerome Brunet			mclk-fs = <256>;
139*3ffeb953SJerome Brunet
140*3ffeb953SJerome Brunet			codec-0 {
141*3ffeb953SJerome Brunet				sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
142*3ffeb953SJerome Brunet			};
143*3ffeb953SJerome Brunet		};
144*3ffeb953SJerome Brunet
145*3ffeb953SJerome Brunet		dai-link-3 {
146*3ffeb953SJerome Brunet			sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>;
147*3ffeb953SJerome Brunet
148*3ffeb953SJerome Brunet			codec-0 {
149*3ffeb953SJerome Brunet				sound-dai = <&spdif_dit>;
150*3ffeb953SJerome Brunet			};
151*3ffeb953SJerome Brunet		};
152*3ffeb953SJerome Brunet
153*3ffeb953SJerome Brunet		dai-link-4 {
154*3ffeb953SJerome Brunet			sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
155*3ffeb953SJerome Brunet
156*3ffeb953SJerome Brunet			codec-0 {
157*3ffeb953SJerome Brunet				sound-dai = <&hdmi_tx>;
158*3ffeb953SJerome Brunet			};
159*3ffeb953SJerome Brunet		};
160*3ffeb953SJerome Brunet	};
161*3ffeb953SJerome Brunet};
162*3ffeb953SJerome Brunet
163*3ffeb953SJerome Brunet&aiu {
164*3ffeb953SJerome Brunet	status = "okay";
165*3ffeb953SJerome Brunet	pinctrl-0 = <&spdif_out_h_pins>;
166*3ffeb953SJerome Brunet	pinctrl-names = "default";
167*3ffeb953SJerome Brunet
168bb51b535SNeil Armstrong};
169bb51b535SNeil Armstrong
170b16c71c9SNeil Armstrong&cec_AO {
171b16c71c9SNeil Armstrong	status = "okay";
172b16c71c9SNeil Armstrong	pinctrl-0 = <&ao_cec_pins>;
173b16c71c9SNeil Armstrong	pinctrl-names = "default";
174b16c71c9SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
175b16c71c9SNeil Armstrong};
176b16c71c9SNeil Armstrong
177d5463d25SAndreas Färber&cvbs_vdac_port {
178d5463d25SAndreas Färber	cvbs_vdac_out: endpoint {
179d5463d25SAndreas Färber		remote-endpoint = <&cvbs_connector_in>;
180d5463d25SAndreas Färber	};
181d5463d25SAndreas Färber};
182d5463d25SAndreas Färber
183d5463d25SAndreas Färber&ethmac {
184bb51b535SNeil Armstrong	status = "okay";
185d5463d25SAndreas Färber};
186d5463d25SAndreas Färber
187d5463d25SAndreas Färber&hdmi_tx {
188d5463d25SAndreas Färber	status = "okay";
189d5463d25SAndreas Färber	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
190bb51b535SNeil Armstrong	pinctrl-names = "default";
191e1f2163dSNeil Armstrong	hdmi-supply = <&hdmi_5v>;
192bb51b535SNeil Armstrong};
193bb51b535SNeil Armstrong
194d5463d25SAndreas Färber&hdmi_tx_tmds_port {
195d5463d25SAndreas Färber	hdmi_tx_tmds_out: endpoint {
196d5463d25SAndreas Färber		remote-endpoint = <&hdmi_connector_in>;
197d5463d25SAndreas Färber	};
198d5463d25SAndreas Färber};
199d5463d25SAndreas Färber
200bb51b535SNeil Armstrong&ir {
201bb51b535SNeil Armstrong	status = "okay";
202bb51b535SNeil Armstrong	pinctrl-0 = <&remote_input_ao_pins>;
203bb51b535SNeil Armstrong	pinctrl-names = "default";
204bb51b535SNeil Armstrong};
205bb51b535SNeil Armstrong
206d5463d25SAndreas Färber&pwm_ef {
207d5463d25SAndreas Färber	status = "okay";
208d5463d25SAndreas Färber	pinctrl-0 = <&pwm_e_pins>;
209d5463d25SAndreas Färber	pinctrl-names = "default";
210d5463d25SAndreas Färber	clocks = <&clkc CLKID_FCLK_DIV4>;
211d5463d25SAndreas Färber	clock-names = "clkin0";
212d5463d25SAndreas Färber};
213d5463d25SAndreas Färber
21441ed2e0dSMartin Blumenstingl&saradc {
21541ed2e0dSMartin Blumenstingl	status = "okay";
21641ed2e0dSMartin Blumenstingl	vref-supply = <&vddio_ao18>;
21741ed2e0dSMartin Blumenstingl};
21841ed2e0dSMartin Blumenstingl
219bb51b535SNeil Armstrong/* Wireless SDIO Module */
220bb51b535SNeil Armstrong&sd_emmc_a {
221bb51b535SNeil Armstrong	status = "okay";
222bb51b535SNeil Armstrong	pinctrl-0 = <&sdio_pins>;
22367e7607fSJerome Brunet	pinctrl-1 = <&sdio_clk_gate_pins>;
22467e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
225bb51b535SNeil Armstrong	#address-cells = <1>;
226bb51b535SNeil Armstrong	#size-cells = <0>;
227bb51b535SNeil Armstrong
228bb51b535SNeil Armstrong	bus-width = <4>;
229bb51b535SNeil Armstrong	cap-sd-highspeed;
230adc52bf7SJerome Brunet	max-frequency = <50000000>;
231bb51b535SNeil Armstrong
232bb51b535SNeil Armstrong	non-removable;
233bb51b535SNeil Armstrong	disable-wp;
234bb51b535SNeil Armstrong
23586b8eaa2SNeil Armstrong	/* WiFi firmware requires power to be kept while in suspend */
23686b8eaa2SNeil Armstrong	keep-power-in-suspend;
23786b8eaa2SNeil Armstrong
238bb51b535SNeil Armstrong	mmc-pwrseq = <&sdio_pwrseq>;
239bb51b535SNeil Armstrong
240bb51b535SNeil Armstrong	vmmc-supply = <&vddao_3v3>;
241bb51b535SNeil Armstrong	vqmmc-supply = <&vddio_boot>;
242bb51b535SNeil Armstrong};
243bb51b535SNeil Armstrong
244bb51b535SNeil Armstrong/* SD card */
245bb51b535SNeil Armstrong&sd_emmc_b {
246bb51b535SNeil Armstrong	status = "okay";
247bb51b535SNeil Armstrong	pinctrl-0 = <&sdcard_pins>;
24867e7607fSJerome Brunet	pinctrl-1 = <&sdcard_clk_gate_pins>;
24967e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
250bb51b535SNeil Armstrong
251bb51b535SNeil Armstrong	bus-width = <4>;
252bb51b535SNeil Armstrong	cap-sd-highspeed;
253adc52bf7SJerome Brunet	max-frequency = <50000000>;
254bb51b535SNeil Armstrong	disable-wp;
255bb51b535SNeil Armstrong
256f29200c8SLoys Ollivier	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
257bb51b535SNeil Armstrong
258bb51b535SNeil Armstrong	vmmc-supply = <&vddao_3v3>;
259bb51b535SNeil Armstrong	vqmmc-supply = <&vddio_boot>;
260bb51b535SNeil Armstrong};
261bb51b535SNeil Armstrong
262bb51b535SNeil Armstrong/* eMMC */
263bb51b535SNeil Armstrong&sd_emmc_c {
264bb51b535SNeil Armstrong	status = "okay";
265ab36be66SNeil Armstrong	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
26667e7607fSJerome Brunet	pinctrl-1 = <&emmc_clk_gate_pins>;
26767e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
268bb51b535SNeil Armstrong
269bb51b535SNeil Armstrong	bus-width = <8>;
270bb51b535SNeil Armstrong	cap-mmc-highspeed;
271bb51b535SNeil Armstrong	max-frequency = <200000000>;
272bb51b535SNeil Armstrong	non-removable;
273bb51b535SNeil Armstrong	disable-wp;
274bb51b535SNeil Armstrong	mmc-ddr-1_8v;
275bb51b535SNeil Armstrong	mmc-hs200-1_8v;
276bb51b535SNeil Armstrong
277bb51b535SNeil Armstrong	mmc-pwrseq = <&emmc_pwrseq>;
278bb51b535SNeil Armstrong	vmmc-supply = <&vcc_3v3>;
279bb51b535SNeil Armstrong	vqmmc-supply = <&vddio_boot>;
280bb51b535SNeil Armstrong};
281bb51b535SNeil Armstrong
282d5463d25SAndreas Färber/* This UART is brought out to the DB9 connector */
283d5463d25SAndreas Färber&uart_AO {
284bb51b535SNeil Armstrong	status = "okay";
285d5463d25SAndreas Färber	pinctrl-0 = <&uart_ao_a_pins>;
286bb51b535SNeil Armstrong	pinctrl-names = "default";
2876939db7eSNeil Armstrong};
288972cd12aSMartin Blumenstingl
2892f9139c2SMartin Blumenstingl&usb {
290972cd12aSMartin Blumenstingl	status = "okay";
2912f9139c2SMartin Blumenstingl	dr_mode = "otg";
292972cd12aSMartin Blumenstingl};
293