1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2016 Andreas Färber
4 * Copyright (c) 2016 BayLibre, Inc.
5 * Author: Neil Armstrong <narmstrong@kernel.org>
6 */
7
8/dts-v1/;
9
10#include "meson-gxl-s905x.dtsi"
11
12/ {
13	compatible = "nexbox,a95x", "amlogic,s905x", "amlogic,meson-gxl";
14	model = "NEXBOX A95X (S905X)";
15
16	aliases {
17		serial0 = &uart_AO;
18		ethernet0 = &ethmac;
19	};
20
21	chosen {
22		stdout-path = "serial0:115200n8";
23	};
24
25	memory@0 {
26		device_type = "memory";
27		reg = <0x0 0x0 0x0 0x80000000>;
28	};
29
30	vddio_card: gpio-regulator {
31		compatible = "regulator-gpio";
32
33		regulator-name = "VDDIO_CARD";
34		regulator-min-microvolt = <1800000>;
35		regulator-max-microvolt = <3300000>;
36
37		gpios = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>;
38		gpios-states = <1>;
39
40		/* Based on P200 schematics, signal CARD_1.8V/3.3V_CTR */
41		states = <1800000 0>,
42			 <3300000 1>;
43	};
44
45	vddio_boot: regulator-vddio_boot {
46		compatible = "regulator-fixed";
47		regulator-name = "VDDIO_BOOT";
48		regulator-min-microvolt = <1800000>;
49		regulator-max-microvolt = <1800000>;
50	};
51
52	vddao_3v3: regulator-vddao_3v3 {
53		compatible = "regulator-fixed";
54		regulator-name = "VDDAO_3V3";
55		regulator-min-microvolt = <3300000>;
56		regulator-max-microvolt = <3300000>;
57	};
58
59	vcc_3v3: regulator-vcc_3v3 {
60		compatible = "regulator-fixed";
61		regulator-name = "VCC_3V3";
62		regulator-min-microvolt = <3300000>;
63		regulator-max-microvolt = <3300000>;
64	};
65
66	emmc_pwrseq: emmc-pwrseq {
67		compatible = "mmc-pwrseq-emmc";
68		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
69	};
70
71	wifi32k: wifi32k {
72		compatible = "pwm-clock";
73		#clock-cells = <0>;
74		clock-frequency = <32768>;
75		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
76	};
77
78	sdio_pwrseq: sdio-pwrseq {
79		compatible = "mmc-pwrseq-simple";
80		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
81		clocks = <&wifi32k>;
82		clock-names = "ext_clock";
83	};
84
85	cvbs-connector {
86		compatible = "composite-video-connector";
87
88		port {
89			cvbs_connector_in: endpoint {
90				remote-endpoint = <&cvbs_vdac_out>;
91			};
92		};
93	};
94
95	hdmi-connector {
96		compatible = "hdmi-connector";
97		type = "a";
98
99		port {
100			hdmi_connector_in: endpoint {
101				remote-endpoint = <&hdmi_tx_tmds_out>;
102			};
103		};
104	};
105};
106
107&cec_AO {
108	status = "okay";
109	pinctrl-0 = <&ao_cec_pins>;
110	pinctrl-names = "default";
111	hdmi-phandle = <&hdmi_tx>;
112};
113
114&cvbs_vdac_port {
115	cvbs_vdac_out: endpoint {
116		remote-endpoint = <&cvbs_connector_in>;
117	};
118};
119
120&ethmac {
121	status = "okay";
122	phy-mode = "rmii";
123	phy-handle = <&internal_phy>;
124};
125
126&hdmi_tx {
127	status = "okay";
128	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
129	pinctrl-names = "default";
130};
131
132&hdmi_tx_tmds_port {
133	hdmi_tx_tmds_out: endpoint {
134		remote-endpoint = <&hdmi_connector_in>;
135	};
136};
137
138&ir {
139	status = "okay";
140	pinctrl-0 = <&remote_input_ao_pins>;
141	pinctrl-names = "default";
142};
143
144&pwm_ef {
145	status = "okay";
146	pinctrl-0 = <&pwm_e_pins>;
147	pinctrl-names = "default";
148	clocks = <&clkc CLKID_FCLK_DIV4>;
149	clock-names = "clkin0";
150};
151
152/* Wireless SDIO Module */
153&sd_emmc_a {
154	status = "okay";
155	pinctrl-0 = <&sdio_pins>;
156	pinctrl-1 = <&sdio_clk_gate_pins>;
157	pinctrl-names = "default", "clk-gate";
158	#address-cells = <1>;
159	#size-cells = <0>;
160
161	bus-width = <4>;
162	cap-sd-highspeed;
163	max-frequency = <100000000>;
164
165	non-removable;
166	disable-wp;
167
168	/* WiFi firmware requires power to be kept while in suspend */
169	keep-power-in-suspend;
170
171	mmc-pwrseq = <&sdio_pwrseq>;
172
173	vmmc-supply = <&vddao_3v3>;
174	vqmmc-supply = <&vddio_boot>;
175};
176
177/* SD card */
178&sd_emmc_b {
179	status = "okay";
180	pinctrl-0 = <&sdcard_pins>;
181	pinctrl-1 = <&sdcard_clk_gate_pins>;
182	pinctrl-names = "default", "clk-gate";
183
184	bus-width = <4>;
185	cap-sd-highspeed;
186	max-frequency = <50000000>;
187	disable-wp;
188
189	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
190
191	vmmc-supply = <&vddao_3v3>;
192	vqmmc-supply = <&vddio_card>;
193};
194
195/* eMMC */
196&sd_emmc_c {
197	status = "okay";
198	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
199	pinctrl-1 = <&emmc_clk_gate_pins>;
200	pinctrl-names = "default", "clk-gate";
201
202	bus-width = <8>;
203	cap-mmc-highspeed;
204	max-frequency = <200000000>;
205	non-removable;
206	disable-wp;
207	mmc-ddr-1_8v;
208	mmc-hs200-1_8v;
209
210	mmc-pwrseq = <&emmc_pwrseq>;
211	vmmc-supply = <&vcc_3v3>;
212	vqmmc-supply = <&vddio_boot>;
213};
214
215&uart_AO {
216	status = "okay";
217	pinctrl-0 = <&uart_ao_a_pins>;
218	pinctrl-names = "default";
219};
220
221&usb0 {
222	status = "okay";
223};
224