xref: /OK3568_Linux_fs/kernel/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Copyright (c) 2016 Martin Blumenstingl <martin.blumenstingl@googlemail.com>.
4*4882a593Smuzhiyun * Based on meson-gx-p23x-q20x.dtsi:
5*4882a593Smuzhiyun * - Copyright (c) 2016 Endless Computers, Inc.
6*4882a593Smuzhiyun *   Author: Carlo Caione <carlo@endlessm.com>
7*4882a593Smuzhiyun * - Copyright (c) 2016 BayLibre, SAS.
8*4882a593Smuzhiyun *   Author: Neil Armstrong <narmstrong@baylibre.com>
9*4882a593Smuzhiyun */
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun/* Common DTSI for devices which are based on the P212 reference board. */
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun#include "meson-gxl-s905x.dtsi"
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun/ {
16*4882a593Smuzhiyun	aliases {
17*4882a593Smuzhiyun		serial0 = &uart_AO;
18*4882a593Smuzhiyun		ethernet0 = &ethmac;
19*4882a593Smuzhiyun	};
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun	chosen {
22*4882a593Smuzhiyun		stdout-path = "serial0:115200n8";
23*4882a593Smuzhiyun	};
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun	memory@0 {
26*4882a593Smuzhiyun		device_type = "memory";
27*4882a593Smuzhiyun		reg = <0x0 0x0 0x0 0x80000000>;
28*4882a593Smuzhiyun	};
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun	hdmi_5v: regulator-hdmi-5v {
31*4882a593Smuzhiyun		compatible = "regulator-fixed";
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun		regulator-name = "HDMI_5V";
34*4882a593Smuzhiyun		regulator-min-microvolt = <5000000>;
35*4882a593Smuzhiyun		regulator-max-microvolt = <5000000>;
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun		gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>;
38*4882a593Smuzhiyun		enable-active-high;
39*4882a593Smuzhiyun		regulator-always-on;
40*4882a593Smuzhiyun	};
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun	vddio_boot: regulator-vddio_boot {
43*4882a593Smuzhiyun		compatible = "regulator-fixed";
44*4882a593Smuzhiyun		regulator-name = "VDDIO_BOOT";
45*4882a593Smuzhiyun		regulator-min-microvolt = <1800000>;
46*4882a593Smuzhiyun		regulator-max-microvolt = <1800000>;
47*4882a593Smuzhiyun	};
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun	vddao_3v3: regulator-vddao_3v3 {
50*4882a593Smuzhiyun		compatible = "regulator-fixed";
51*4882a593Smuzhiyun		regulator-name = "VDDAO_3V3";
52*4882a593Smuzhiyun		regulator-min-microvolt = <3300000>;
53*4882a593Smuzhiyun		regulator-max-microvolt = <3300000>;
54*4882a593Smuzhiyun	};
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun	vddio_ao18: regulator-vddio_ao18 {
57*4882a593Smuzhiyun		compatible = "regulator-fixed";
58*4882a593Smuzhiyun		regulator-name = "VDDIO_AO18";
59*4882a593Smuzhiyun		regulator-min-microvolt = <1800000>;
60*4882a593Smuzhiyun		regulator-max-microvolt = <1800000>;
61*4882a593Smuzhiyun	};
62*4882a593Smuzhiyun
63*4882a593Smuzhiyun	vcc_3v3: regulator-vcc_3v3 {
64*4882a593Smuzhiyun		compatible = "regulator-fixed";
65*4882a593Smuzhiyun		regulator-name = "VCC_3V3";
66*4882a593Smuzhiyun		regulator-min-microvolt = <3300000>;
67*4882a593Smuzhiyun		regulator-max-microvolt = <3300000>;
68*4882a593Smuzhiyun	};
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun	emmc_pwrseq: emmc-pwrseq {
71*4882a593Smuzhiyun		compatible = "mmc-pwrseq-emmc";
72*4882a593Smuzhiyun		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
73*4882a593Smuzhiyun	};
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun	wifi32k: wifi32k {
76*4882a593Smuzhiyun		compatible = "pwm-clock";
77*4882a593Smuzhiyun		#clock-cells = <0>;
78*4882a593Smuzhiyun		clock-frequency = <32768>;
79*4882a593Smuzhiyun		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
80*4882a593Smuzhiyun	};
81*4882a593Smuzhiyun
82*4882a593Smuzhiyun	sdio_pwrseq: sdio-pwrseq {
83*4882a593Smuzhiyun		compatible = "mmc-pwrseq-simple";
84*4882a593Smuzhiyun		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
85*4882a593Smuzhiyun		clocks = <&wifi32k>;
86*4882a593Smuzhiyun		clock-names = "ext_clock";
87*4882a593Smuzhiyun	};
88*4882a593Smuzhiyun};
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun&ethmac {
91*4882a593Smuzhiyun	status = "okay";
92*4882a593Smuzhiyun};
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun&ir {
95*4882a593Smuzhiyun	status = "okay";
96*4882a593Smuzhiyun	pinctrl-0 = <&remote_input_ao_pins>;
97*4882a593Smuzhiyun	pinctrl-names = "default";
98*4882a593Smuzhiyun};
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun&saradc {
101*4882a593Smuzhiyun	status = "okay";
102*4882a593Smuzhiyun	vref-supply = <&vddio_ao18>;
103*4882a593Smuzhiyun};
104*4882a593Smuzhiyun
105*4882a593Smuzhiyun/* Wireless SDIO Module */
106*4882a593Smuzhiyun&sd_emmc_a {
107*4882a593Smuzhiyun	status = "okay";
108*4882a593Smuzhiyun	pinctrl-0 = <&sdio_pins>;
109*4882a593Smuzhiyun	pinctrl-1 = <&sdio_clk_gate_pins>;
110*4882a593Smuzhiyun	pinctrl-names = "default", "clk-gate";
111*4882a593Smuzhiyun	#address-cells = <1>;
112*4882a593Smuzhiyun	#size-cells = <0>;
113*4882a593Smuzhiyun
114*4882a593Smuzhiyun	bus-width = <4>;
115*4882a593Smuzhiyun	cap-sd-highspeed;
116*4882a593Smuzhiyun	max-frequency = <50000000>;
117*4882a593Smuzhiyun
118*4882a593Smuzhiyun	non-removable;
119*4882a593Smuzhiyun	disable-wp;
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun	/* WiFi firmware requires power to be kept while in suspend */
122*4882a593Smuzhiyun	keep-power-in-suspend;
123*4882a593Smuzhiyun
124*4882a593Smuzhiyun	mmc-pwrseq = <&sdio_pwrseq>;
125*4882a593Smuzhiyun
126*4882a593Smuzhiyun	vmmc-supply = <&vddao_3v3>;
127*4882a593Smuzhiyun	vqmmc-supply = <&vddio_boot>;
128*4882a593Smuzhiyun};
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun/* SD card */
131*4882a593Smuzhiyun&sd_emmc_b {
132*4882a593Smuzhiyun	status = "okay";
133*4882a593Smuzhiyun	pinctrl-0 = <&sdcard_pins>;
134*4882a593Smuzhiyun	pinctrl-1 = <&sdcard_clk_gate_pins>;
135*4882a593Smuzhiyun	pinctrl-names = "default", "clk-gate";
136*4882a593Smuzhiyun
137*4882a593Smuzhiyun	bus-width = <4>;
138*4882a593Smuzhiyun	cap-sd-highspeed;
139*4882a593Smuzhiyun	max-frequency = <50000000>;
140*4882a593Smuzhiyun	disable-wp;
141*4882a593Smuzhiyun
142*4882a593Smuzhiyun	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun	vmmc-supply = <&vddao_3v3>;
145*4882a593Smuzhiyun	vqmmc-supply = <&vddio_boot>;
146*4882a593Smuzhiyun};
147*4882a593Smuzhiyun
148*4882a593Smuzhiyun/* eMMC */
149*4882a593Smuzhiyun&sd_emmc_c {
150*4882a593Smuzhiyun	status = "okay";
151*4882a593Smuzhiyun	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
152*4882a593Smuzhiyun	pinctrl-1 = <&emmc_clk_gate_pins>;
153*4882a593Smuzhiyun	pinctrl-names = "default", "clk-gate";
154*4882a593Smuzhiyun
155*4882a593Smuzhiyun	bus-width = <8>;
156*4882a593Smuzhiyun	cap-mmc-highspeed;
157*4882a593Smuzhiyun	max-frequency = <200000000>;
158*4882a593Smuzhiyun	non-removable;
159*4882a593Smuzhiyun	disable-wp;
160*4882a593Smuzhiyun	mmc-ddr-1_8v;
161*4882a593Smuzhiyun	mmc-hs200-1_8v;
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun	mmc-pwrseq = <&emmc_pwrseq>;
164*4882a593Smuzhiyun	vmmc-supply = <&vcc_3v3>;
165*4882a593Smuzhiyun	vqmmc-supply = <&vddio_boot>;
166*4882a593Smuzhiyun};
167*4882a593Smuzhiyun
168*4882a593Smuzhiyun&pwm_ef {
169*4882a593Smuzhiyun	status = "okay";
170*4882a593Smuzhiyun	pinctrl-0 = <&pwm_e_pins>;
171*4882a593Smuzhiyun	pinctrl-names = "default";
172*4882a593Smuzhiyun	clocks = <&clkc CLKID_FCLK_DIV4>;
173*4882a593Smuzhiyun	clock-names = "clkin0";
174*4882a593Smuzhiyun};
175*4882a593Smuzhiyun
176*4882a593Smuzhiyun/* This is connected to the Bluetooth module: */
177*4882a593Smuzhiyun&uart_A {
178*4882a593Smuzhiyun	status = "okay";
179*4882a593Smuzhiyun	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
180*4882a593Smuzhiyun	pinctrl-names = "default";
181*4882a593Smuzhiyun	uart-has-rtscts;
182*4882a593Smuzhiyun
183*4882a593Smuzhiyun	bluetooth {
184*4882a593Smuzhiyun		compatible = "brcm,bcm43438-bt";
185*4882a593Smuzhiyun		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
186*4882a593Smuzhiyun		max-speed = <2000000>;
187*4882a593Smuzhiyun		clocks = <&wifi32k>;
188*4882a593Smuzhiyun		clock-names = "lpo";
189*4882a593Smuzhiyun	};
190*4882a593Smuzhiyun};
191*4882a593Smuzhiyun
192*4882a593Smuzhiyun&uart_AO {
193*4882a593Smuzhiyun	status = "okay";
194*4882a593Smuzhiyun	pinctrl-0 = <&uart_ao_a_pins>;
195*4882a593Smuzhiyun	pinctrl-names = "default";
196*4882a593Smuzhiyun};
197*4882a593Smuzhiyun
198*4882a593Smuzhiyun&usb {
199*4882a593Smuzhiyun	status = "okay";
200*4882a593Smuzhiyun	dr_mode = "host";
201*4882a593Smuzhiyun};
202*4882a593Smuzhiyun
203*4882a593Smuzhiyun&usb2_phy0 {
204*4882a593Smuzhiyun	/*
205*4882a593Smuzhiyun	 * HDMI_5V is also used as supply for the USB VBUS.
206*4882a593Smuzhiyun	 */
207*4882a593Smuzhiyun	phy-supply = <&hdmi_5v>;
208*4882a593Smuzhiyun};
209