1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2017 Andreas Färber
4 */
5
6/dts-v1/;
7
8#include "meson-gxbb.dtsi"
9#include <dt-bindings/gpio/gpio.h>
10
11/ {
12	compatible = "friendlyarm,nanopi-k2", "amlogic,meson-gxbb";
13
14	aliases {
15		serial0 = &uart_AO;
16		ethernet0 = &ethmac;
17	};
18
19	chosen {
20		stdout-path = "serial0:115200n8";
21	};
22
23	memory@0 {
24		device_type = "memory";
25		reg = <0x0 0x0 0x0 0x80000000>;
26	};
27
28	leds {
29		compatible = "gpio-leds";
30
31		stat {
32			label = "nanopi-k2:blue:stat";
33			gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_HIGH>;
34			default-state = "on";
35			panic-indicator;
36		};
37	};
38
39	vdd_5v: regulator-vdd-5v {
40		compatible = "regulator-fixed";
41		regulator-name = "VDD_5V";
42		regulator-min-microvolt = <5000000>;
43		regulator-max-microvolt = <5000000>;
44	};
45
46	vddio_ao18: regulator-vddio-ao18 {
47		compatible = "regulator-fixed";
48		regulator-name = "VDDIO_AO18";
49		regulator-min-microvolt = <1800000>;
50		regulator-max-microvolt = <1800000>;
51	};
52
53	vddio_ao3v3: regulator-vddio-ao3v3 {
54		compatible = "regulator-fixed";
55		regulator-name = "VDDIO_AO3.3V";
56		regulator-min-microvolt = <3300000>;
57		regulator-max-microvolt = <3300000>;
58	};
59
60	vddio_tf: regulator-vddio-tf {
61		compatible = "regulator-gpio";
62
63		regulator-name = "VDDIO_TF";
64		regulator-min-microvolt = <1800000>;
65		regulator-max-microvolt = <3300000>;
66
67		gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
68		gpios-states = <0>;
69
70		states = <3300000 0>,
71		         <1800000 1>;
72
73		regulator-settling-time-up-us = <100>;
74		regulator-settling-time-down-us = <5000>;
75	};
76
77	wifi_32k: wifi-32k {
78		compatible = "pwm-clock";
79		#clock-cells = <0>;
80		clock-frequency = <32768>;
81		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
82	};
83
84	sdio_pwrseq: sdio-pwrseq {
85		compatible = "mmc-pwrseq-simple";
86		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
87		clocks = <&wifi_32k>;
88		clock-names = "ext_clock";
89	};
90
91	vcc1v8: regulator-vcc1v8 {
92		compatible = "regulator-fixed";
93		regulator-name = "VCC1.8V";
94		regulator-min-microvolt = <1800000>;
95		regulator-max-microvolt = <1800000>;
96	};
97
98	vcc3v3: regulator-vcc3v3 {
99		compatible = "regulator-fixed";
100		regulator-name = "VCC3.3V";
101		regulator-min-microvolt = <3300000>;
102		regulator-max-microvolt = <3300000>;
103	};
104
105	emmc_pwrseq: emmc-pwrseq {
106		compatible = "mmc-pwrseq-emmc";
107		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
108	};
109
110	/* CVBS is available on CON1 pin 36, disabled by default */
111	cvbs-connector {
112		compatible = "composite-video-connector";
113		status = "disabled";
114
115		port {
116			cvbs_connector_in: endpoint {
117				remote-endpoint = <&cvbs_vdac_out>;
118			};
119		};
120	};
121
122	hdmi-connector {
123		compatible = "hdmi-connector";
124		type = "a";
125
126		port {
127			hdmi_connector_in: endpoint {
128				remote-endpoint = <&hdmi_tx_tmds_out>;
129			};
130		};
131	};
132};
133
134&cec_AO {
135	status = "okay";
136	pinctrl-0 = <&ao_cec_pins>;
137	pinctrl-names = "default";
138	hdmi-phandle = <&hdmi_tx>;
139};
140
141&cvbs_vdac_port {
142	cvbs_vdac_out: endpoint {
143		remote-endpoint = <&cvbs_connector_in>;
144	};
145};
146
147&ethmac {
148	status = "okay";
149	pinctrl-0 = <&eth_rgmii_pins>;
150	pinctrl-names = "default";
151
152	phy-handle = <&eth_phy0>;
153	phy-mode = "rgmii";
154
155	amlogic,tx-delay-ns = <2>;
156
157	mdio {
158		compatible = "snps,dwmac-mdio";
159		#address-cells = <1>;
160		#size-cells = <0>;
161
162		eth_phy0: ethernet-phy@0 {
163			/* Realtek RTL8211F (0x001cc916) */
164			reg = <0>;
165
166			reset-assert-us = <10000>;
167			reset-deassert-us = <30000>;
168			reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
169
170			interrupt-parent = <&gpio_intc>;
171			/* MAC_INTR on GPIOZ_15 */
172			interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
173		};
174	};
175};
176
177&hdmi_tx {
178	status = "okay";
179	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
180	pinctrl-names = "default";
181};
182
183&hdmi_tx_tmds_port {
184	hdmi_tx_tmds_out: endpoint {
185		remote-endpoint = <&hdmi_connector_in>;
186	};
187};
188
189&ir {
190	status = "okay";
191	pinctrl-0 = <&remote_input_ao_pins>;
192	pinctrl-names = "default";
193};
194
195&gpio_ao {
196	gpio-line-names = "UART TX", "UART RX", "Power Control", "Power Key In",
197			  "VCCK En", "CON1 Header Pin31",
198			  "I2S Header Pin6", "IR In", "I2S Header Pin7",
199			  "I2S Header Pin3", "I2S Header Pin4",
200			  "I2S Header Pin5", "HDMI CEC", "SYS LED",
201			  /* GPIO_TEST_N */
202			  "";
203};
204
205&gpio {
206	gpio-line-names = /* Bank GPIOZ */
207			  "Eth MDIO", "Eth MDC", "Eth RGMII RX Clk",
208			  "Eth RX DV", "Eth RX D0", "Eth RX D1", "Eth RX D2",
209			  "Eth RX D3", "Eth RGMII TX Clk", "Eth TX En",
210			  "Eth TX D0", "Eth TX D1", "Eth TX D2", "Eth TX D3",
211			  "Eth PHY nRESET", "Eth PHY Intc",
212			  /* Bank GPIOH */
213			  "HDMI HPD", "HDMI DDC SDA", "HDMI DDC SCL",
214			  "CON1 Header Pin33",
215			  /* Bank BOOT */
216			  "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3", "eMMC D4",
217			  "eMMC D5", "eMMC D6", "eMMC D7", "eMMC Clk",
218			  "eMMC Reset", "eMMC CMD",
219			  "", "", "", "", "eMMC DS",
220			  "", "",
221			  /* Bank CARD */
222			  "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD",
223			  "SDCard D3", "SDCard D2", "SDCard Det",
224			  /* Bank GPIODV */
225			  "", "", "", "", "", "", "", "", "", "", "", "", "",
226			  "", "", "", "", "", "", "", "", "", "", "",
227			  "I2C A SDA", "I2C A SCK", "I2C B SDA", "I2C B SCK",
228			  "VDDEE Regulator", "VCCK Regulator",
229			  /* Bank GPIOY */
230			  "CON1 Header Pin7", "CON1 Header Pin11",
231			  "CON1 Header Pin13", "CON1 Header Pin15",
232			  "CON1 Header Pin18", "CON1 Header Pin19",
233			  "CON1 Header Pin22", "CON1 Header Pin21",
234			  "CON1 Header Pin24", "CON1 Header Pin23",
235			  "CON1 Header Pin26", "CON1 Header Pin29",
236			  "CON1 Header Pin32", "CON1 Header Pin8",
237			  "CON1 Header Pin10", "CON1 Header Pin16",
238			  "CON1 Header Pin12",
239			  /* Bank GPIOX */
240			  "WIFI SDIO D0", "WIFI SDIO D1", "WIFI SDIO D2",
241			  "WIFI SDIO D3", "WIFI SDIO CLK", "WIFI SDIO CMD",
242			  "WIFI Power Enable", "WIFI WAKE HOST",
243			  "Bluetooth PCM DOUT", "Bluetooth PCM DIN",
244			  "Bluetooth PCM SYNC", "Bluetooth PCM CLK",
245			  "Bluetooth UART TX", "Bluetooth UART RX",
246			  "Bluetooth UART CTS", "Bluetooth UART RTS",
247			  "", "", "", "WIFI 32K", "Bluetooth Enable",
248			  "Bluetooth WAKE HOST", "",
249			  /* Bank GPIOCLK */
250			  "", "CON1 Header Pin35", "", "";
251};
252
253&pwm_ef {
254	status = "okay";
255	pinctrl-0 = <&pwm_e_pins>;
256	pinctrl-names = "default";
257	clocks = <&clkc CLKID_FCLK_DIV4>;
258	clock-names = "clkin0";
259};
260
261&saradc {
262	status = "okay";
263	vref-supply = <&vddio_ao18>;
264};
265
266/* SDIO */
267&sd_emmc_a {
268	status = "okay";
269	pinctrl-0 = <&sdio_pins>, <&sdio_irq_pins>;
270	pinctrl-1 = <&sdio_clk_gate_pins>;
271	pinctrl-names = "default", "clk-gate";
272	#address-cells = <1>;
273	#size-cells = <0>;
274
275	bus-width = <4>;
276	cap-sd-highspeed;
277	max-frequency = <50000000>;
278
279	non-removable;
280	disable-wp;
281
282	mmc-pwrseq = <&sdio_pwrseq>;
283
284	vmmc-supply = <&vddio_ao3v3>;
285	vqmmc-supply = <&vddio_ao18>;
286
287	brcmf: wifi@1 {
288		compatible = "brcm,bcm4329-fmac";
289		reg = <1>;
290	};
291};
292
293/* SD */
294&sd_emmc_b {
295	status = "okay";
296	pinctrl-0 = <&sdcard_pins>;
297	pinctrl-1 = <&sdcard_clk_gate_pins>;
298	pinctrl-names = "default", "clk-gate";
299
300	bus-width = <4>;
301	cap-sd-highspeed;
302	sd-uhs-sdr12;
303	sd-uhs-sdr25;
304	sd-uhs-sdr50;
305	sd-uhs-ddr50;
306	max-frequency = <100000000>;
307	disable-wp;
308
309	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
310
311	vmmc-supply = <&vddio_ao3v3>;
312	vqmmc-supply = <&vddio_tf>;
313};
314
315/* eMMC */
316&sd_emmc_c {
317	status = "disabled";
318	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
319	pinctrl-1 = <&emmc_clk_gate_pins>;
320	pinctrl-names = "default", "clk-gate";
321
322	bus-width = <8>;
323	max-frequency = <200000000>;
324	non-removable;
325	disable-wp;
326	cap-mmc-highspeed;
327	mmc-ddr-1_8v;
328	mmc-hs200-1_8v;
329
330	mmc-pwrseq = <&emmc_pwrseq>;
331	vmmc-supply = <&vcc3v3>;
332	vqmmc-supply = <&vcc1v8>;
333};
334
335/* DBG_UART */
336&uart_AO {
337	status = "okay";
338	pinctrl-0 = <&uart_ao_a_pins>;
339	pinctrl-names = "default";
340};
341
342/* Bluetooth on AP6212 */
343&uart_A {
344	status = "disabled";
345	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
346	pinctrl-names = "default";
347};
348
349/* 40-pin CON1 */
350&uart_C {
351	status = "disabled";
352	pinctrl-0 = <&uart_c_pins>;
353	pinctrl-names = "default";
354};
355
356&usb0_phy {
357	status = "okay";
358	phy-supply = <&vdd_5v>;
359};
360
361&usb1_phy {
362	status = "okay";
363};
364
365&usb0 {
366	status = "okay";
367};
368
369&usb1 {
370	status = "okay";
371};
372