xref: /OK3568_Linux_fs/kernel/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Copyright (c) 2016-2017 Andreas Färber
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun * Based on nexbox-a1:
6*4882a593Smuzhiyun *
7*4882a593Smuzhiyun * Copyright (c) 2016 BayLibre, SAS.
8*4882a593Smuzhiyun * Author: Neil Armstrong <narmstrong@baylibre.com>
9*4882a593Smuzhiyun *
10*4882a593Smuzhiyun * Copyright (c) 2016 Endless Computers, Inc.
11*4882a593Smuzhiyun * Author: Carlo Caione <carlo@endlessm.com>
12*4882a593Smuzhiyun */
13*4882a593Smuzhiyun
14*4882a593Smuzhiyun/dts-v1/;
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun#include "meson-gxm.dtsi"
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun/ {
19*4882a593Smuzhiyun	compatible = "kingnovel,r-box-pro", "amlogic,s912", "amlogic,meson-gxm";
20*4882a593Smuzhiyun	model = "R-Box Pro";
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun	aliases {
23*4882a593Smuzhiyun		serial0 = &uart_AO;
24*4882a593Smuzhiyun		ethernet0 = &ethmac;
25*4882a593Smuzhiyun	};
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun	chosen {
28*4882a593Smuzhiyun		stdout-path = "serial0:115200n8";
29*4882a593Smuzhiyun	};
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun	memory@0 {
32*4882a593Smuzhiyun		device_type = "memory";
33*4882a593Smuzhiyun		reg = <0x0 0x0 0x0 0x80000000>; /* 2 GiB or 3 GiB */
34*4882a593Smuzhiyun	};
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun	leds {
37*4882a593Smuzhiyun		compatible = "gpio-leds";
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun		led-blue {
40*4882a593Smuzhiyun			label = "rbox-pro:blue:on";
41*4882a593Smuzhiyun			gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>;
42*4882a593Smuzhiyun			default-state = "on";
43*4882a593Smuzhiyun		};
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun		led-red {
46*4882a593Smuzhiyun			label = "rbox-pro:red:standby";
47*4882a593Smuzhiyun			gpios = <&gpio GPIODV_28 GPIO_ACTIVE_HIGH>;
48*4882a593Smuzhiyun			default-state = "off";
49*4882a593Smuzhiyun			retain-state-suspended;
50*4882a593Smuzhiyun			panic-indicator;
51*4882a593Smuzhiyun		};
52*4882a593Smuzhiyun	};
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun	vddio_boot: regulator-vddio-boot {
55*4882a593Smuzhiyun		compatible = "regulator-fixed";
56*4882a593Smuzhiyun		regulator-name = "VDDIO_BOOT";
57*4882a593Smuzhiyun		regulator-min-microvolt = <1800000>;
58*4882a593Smuzhiyun		regulator-max-microvolt = <1800000>;
59*4882a593Smuzhiyun	};
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun	vddao_3v3: regulator-vddao-3v3 {
62*4882a593Smuzhiyun		compatible = "regulator-fixed";
63*4882a593Smuzhiyun		regulator-name = "VDDAO_3V3";
64*4882a593Smuzhiyun		regulator-min-microvolt = <3300000>;
65*4882a593Smuzhiyun		regulator-max-microvolt = <3300000>;
66*4882a593Smuzhiyun	};
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun	vcc_3v3: regulator-vcc-3v3 {
69*4882a593Smuzhiyun		compatible = "regulator-fixed";
70*4882a593Smuzhiyun		regulator-name = "VCC_3V3";
71*4882a593Smuzhiyun		regulator-min-microvolt = <3300000>;
72*4882a593Smuzhiyun		regulator-max-microvolt = <3300000>;
73*4882a593Smuzhiyun	};
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun	emmc_pwrseq: emmc-pwrseq {
76*4882a593Smuzhiyun		compatible = "mmc-pwrseq-emmc";
77*4882a593Smuzhiyun		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
78*4882a593Smuzhiyun	};
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun	wifi32k: wifi32k {
81*4882a593Smuzhiyun		compatible = "pwm-clock";
82*4882a593Smuzhiyun		#clock-cells = <0>;
83*4882a593Smuzhiyun		clock-frequency = <32768>;
84*4882a593Smuzhiyun		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
85*4882a593Smuzhiyun	};
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun	sdio_pwrseq: sdio-pwrseq {
88*4882a593Smuzhiyun		compatible = "mmc-pwrseq-simple";
89*4882a593Smuzhiyun		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
90*4882a593Smuzhiyun		clocks = <&wifi32k>;
91*4882a593Smuzhiyun		clock-names = "ext_clock";
92*4882a593Smuzhiyun	};
93*4882a593Smuzhiyun};
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun&ethmac {
96*4882a593Smuzhiyun	status = "okay";
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun	pinctrl-0 = <&eth_pins>;
99*4882a593Smuzhiyun	pinctrl-names = "default";
100*4882a593Smuzhiyun
101*4882a593Smuzhiyun	/* Select external PHY by default */
102*4882a593Smuzhiyun	phy-handle = <&external_phy>;
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun	amlogic,tx-delay-ns = <2>;
105*4882a593Smuzhiyun
106*4882a593Smuzhiyun	/* External PHY is in RGMII */
107*4882a593Smuzhiyun	phy-mode = "rgmii";
108*4882a593Smuzhiyun};
109*4882a593Smuzhiyun
110*4882a593Smuzhiyun&external_mdio {
111*4882a593Smuzhiyun	external_phy: ethernet-phy@0 {
112*4882a593Smuzhiyun		/* Realtek RTL8211F (0x001cc916) */
113*4882a593Smuzhiyun		reg = <0>;
114*4882a593Smuzhiyun		max-speed = <1000>;
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun		reset-assert-us = <10000>;
117*4882a593Smuzhiyun		reset-deassert-us = <80000>;
118*4882a593Smuzhiyun		reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
119*4882a593Smuzhiyun	};
120*4882a593Smuzhiyun};
121*4882a593Smuzhiyun
122*4882a593Smuzhiyun&ir {
123*4882a593Smuzhiyun	status = "okay";
124*4882a593Smuzhiyun	pinctrl-0 = <&remote_input_ao_pins>;
125*4882a593Smuzhiyun	pinctrl-names = "default";
126*4882a593Smuzhiyun};
127*4882a593Smuzhiyun
128*4882a593Smuzhiyun&pwm_ef {
129*4882a593Smuzhiyun	status = "okay";
130*4882a593Smuzhiyun	pinctrl-0 = <&pwm_e_pins>;
131*4882a593Smuzhiyun	pinctrl-names = "default";
132*4882a593Smuzhiyun	clocks = <&clkc CLKID_FCLK_DIV4>;
133*4882a593Smuzhiyun	clock-names = "clkin0";
134*4882a593Smuzhiyun};
135*4882a593Smuzhiyun
136*4882a593Smuzhiyun/* Wireless SDIO Module */
137*4882a593Smuzhiyun&sd_emmc_a {
138*4882a593Smuzhiyun	status = "okay";
139*4882a593Smuzhiyun	pinctrl-0 = <&sdio_pins>;
140*4882a593Smuzhiyun	pinctrl-names = "default";
141*4882a593Smuzhiyun	#address-cells = <1>;
142*4882a593Smuzhiyun	#size-cells = <0>;
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun	bus-width = <4>;
145*4882a593Smuzhiyun	cap-sd-highspeed;
146*4882a593Smuzhiyun	max-frequency = <50000000>;
147*4882a593Smuzhiyun
148*4882a593Smuzhiyun	non-removable;
149*4882a593Smuzhiyun	disable-wp;
150*4882a593Smuzhiyun
151*4882a593Smuzhiyun	/* WiFi firmware requires power to be kept while in suspend */
152*4882a593Smuzhiyun	keep-power-in-suspend;
153*4882a593Smuzhiyun
154*4882a593Smuzhiyun	mmc-pwrseq = <&sdio_pwrseq>;
155*4882a593Smuzhiyun
156*4882a593Smuzhiyun	vmmc-supply = <&vddao_3v3>;
157*4882a593Smuzhiyun	vqmmc-supply = <&vddio_boot>;
158*4882a593Smuzhiyun
159*4882a593Smuzhiyun	brcmf: brcmf@1 {
160*4882a593Smuzhiyun		reg = <1>;
161*4882a593Smuzhiyun		compatible = "brcm,bcm4329-fmac";
162*4882a593Smuzhiyun	};
163*4882a593Smuzhiyun};
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun/* SD card */
166*4882a593Smuzhiyun&sd_emmc_b {
167*4882a593Smuzhiyun	status = "okay";
168*4882a593Smuzhiyun	pinctrl-0 = <&sdcard_pins>;
169*4882a593Smuzhiyun	pinctrl-names = "default";
170*4882a593Smuzhiyun
171*4882a593Smuzhiyun	bus-width = <4>;
172*4882a593Smuzhiyun	cap-sd-highspeed;
173*4882a593Smuzhiyun	max-frequency = <50000000>;
174*4882a593Smuzhiyun	disable-wp;
175*4882a593Smuzhiyun
176*4882a593Smuzhiyun	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun	vmmc-supply = <&vddao_3v3>;
179*4882a593Smuzhiyun	vqmmc-supply = <&vddio_boot>;
180*4882a593Smuzhiyun};
181*4882a593Smuzhiyun
182*4882a593Smuzhiyun/* eMMC */
183*4882a593Smuzhiyun&sd_emmc_c {
184*4882a593Smuzhiyun	status = "okay";
185*4882a593Smuzhiyun	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
186*4882a593Smuzhiyun	pinctrl-names = "default";
187*4882a593Smuzhiyun
188*4882a593Smuzhiyun	bus-width = <8>;
189*4882a593Smuzhiyun	cap-mmc-highspeed;
190*4882a593Smuzhiyun	max-frequency = <200000000>;
191*4882a593Smuzhiyun	non-removable;
192*4882a593Smuzhiyun	disable-wp;
193*4882a593Smuzhiyun	mmc-ddr-1_8v;
194*4882a593Smuzhiyun	mmc-hs200-1_8v;
195*4882a593Smuzhiyun
196*4882a593Smuzhiyun	mmc-pwrseq = <&emmc_pwrseq>;
197*4882a593Smuzhiyun	vmmc-supply = <&vcc_3v3>;
198*4882a593Smuzhiyun	vqmmc-supply = <&vddio_boot>;
199*4882a593Smuzhiyun};
200*4882a593Smuzhiyun
201*4882a593Smuzhiyun&uart_AO {
202*4882a593Smuzhiyun	status = "okay";
203*4882a593Smuzhiyun	pinctrl-0 = <&uart_ao_a_pins>;
204*4882a593Smuzhiyun	pinctrl-names = "default";
205*4882a593Smuzhiyun};
206