xref: /OK3568_Linux_fs/u-boot/arch/arm/dts/meson-gxbb.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/*
2*4882a593Smuzhiyun * Copyright (c) 2016 Andreas Färber
3*4882a593Smuzhiyun *
4*4882a593Smuzhiyun * This file is dual-licensed: you can use it either under the terms
5*4882a593Smuzhiyun * of the GPL or the X11 license, at your option. Note that this dual
6*4882a593Smuzhiyun * licensing only applies to this file, and not this project as a
7*4882a593Smuzhiyun * whole.
8*4882a593Smuzhiyun *
9*4882a593Smuzhiyun *  a) This library is free software; you can redistribute it and/or
10*4882a593Smuzhiyun *     modify it under the terms of the GNU General Public License as
11*4882a593Smuzhiyun *     published by the Free Software Foundation; either version 2 of the
12*4882a593Smuzhiyun *     License, or (at your option) any later version.
13*4882a593Smuzhiyun *
14*4882a593Smuzhiyun *     This library is distributed in the hope that it will be useful,
15*4882a593Smuzhiyun *     but WITHOUT ANY WARRANTY; without even the implied warranty of
16*4882a593Smuzhiyun *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17*4882a593Smuzhiyun *     GNU General Public License for more details.
18*4882a593Smuzhiyun *
19*4882a593Smuzhiyun * Or, alternatively,
20*4882a593Smuzhiyun *
21*4882a593Smuzhiyun *  b) Permission is hereby granted, free of charge, to any person
22*4882a593Smuzhiyun *     obtaining a copy of this software and associated documentation
23*4882a593Smuzhiyun *     files (the "Software"), to deal in the Software without
24*4882a593Smuzhiyun *     restriction, including without limitation the rights to use,
25*4882a593Smuzhiyun *     copy, modify, merge, publish, distribute, sublicense, and/or
26*4882a593Smuzhiyun *     sell copies of the Software, and to permit persons to whom the
27*4882a593Smuzhiyun *     Software is furnished to do so, subject to the following
28*4882a593Smuzhiyun *     conditions:
29*4882a593Smuzhiyun *
30*4882a593Smuzhiyun *     The above copyright notice and this permission notice shall be
31*4882a593Smuzhiyun *     included in all copies or substantial portions of the Software.
32*4882a593Smuzhiyun *
33*4882a593Smuzhiyun *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
34*4882a593Smuzhiyun *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
35*4882a593Smuzhiyun *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
36*4882a593Smuzhiyun *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
37*4882a593Smuzhiyun *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
38*4882a593Smuzhiyun *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
39*4882a593Smuzhiyun *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
40*4882a593Smuzhiyun *     OTHER DEALINGS IN THE SOFTWARE.
41*4882a593Smuzhiyun */
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun#include "meson-gx.dtsi"
44*4882a593Smuzhiyun#include <dt-bindings/gpio/meson-gxbb-gpio.h>
45*4882a593Smuzhiyun#include <dt-bindings/reset/amlogic,meson-gxbb-reset.h>
46*4882a593Smuzhiyun#include <dt-bindings/clock/gxbb-clkc.h>
47*4882a593Smuzhiyun#include <dt-bindings/clock/gxbb-aoclkc.h>
48*4882a593Smuzhiyun#include <dt-bindings/reset/gxbb-aoclkc.h>
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun/ {
51*4882a593Smuzhiyun	compatible = "amlogic,meson-gxbb";
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun	soc {
54*4882a593Smuzhiyun		usb0_phy: phy@c0000000 {
55*4882a593Smuzhiyun			compatible = "amlogic,meson-gxbb-usb2-phy";
56*4882a593Smuzhiyun			#phy-cells = <0>;
57*4882a593Smuzhiyun			reg = <0x0 0xc0000000 0x0 0x20>;
58*4882a593Smuzhiyun			resets = <&reset RESET_USB_OTG>;
59*4882a593Smuzhiyun			clocks = <&clkc CLKID_USB>, <&clkc CLKID_USB0>;
60*4882a593Smuzhiyun			clock-names = "usb_general", "usb";
61*4882a593Smuzhiyun			status = "disabled";
62*4882a593Smuzhiyun		};
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun		usb1_phy: phy@c0000020 {
65*4882a593Smuzhiyun			compatible = "amlogic,meson-gxbb-usb2-phy";
66*4882a593Smuzhiyun			#phy-cells = <0>;
67*4882a593Smuzhiyun			reg = <0x0 0xc0000020 0x0 0x20>;
68*4882a593Smuzhiyun			resets = <&reset RESET_USB_OTG>;
69*4882a593Smuzhiyun			clocks = <&clkc CLKID_USB>, <&clkc CLKID_USB1>;
70*4882a593Smuzhiyun			clock-names = "usb_general", "usb";
71*4882a593Smuzhiyun			status = "disabled";
72*4882a593Smuzhiyun		};
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun		usb0: usb@c9000000 {
75*4882a593Smuzhiyun			compatible = "amlogic,meson-gxbb-usb", "snps,dwc2";
76*4882a593Smuzhiyun			reg = <0x0 0xc9000000 0x0 0x40000>;
77*4882a593Smuzhiyun			interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
78*4882a593Smuzhiyun			clocks = <&clkc CLKID_USB0_DDR_BRIDGE>;
79*4882a593Smuzhiyun			clock-names = "otg";
80*4882a593Smuzhiyun			phys = <&usb0_phy>;
81*4882a593Smuzhiyun			phy-names = "usb2-phy";
82*4882a593Smuzhiyun			dr_mode = "host";
83*4882a593Smuzhiyun			status = "disabled";
84*4882a593Smuzhiyun		};
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun		usb1: usb@c9100000 {
87*4882a593Smuzhiyun			compatible = "amlogic,meson-gxbb-usb", "snps,dwc2";
88*4882a593Smuzhiyun			reg = <0x0 0xc9100000 0x0 0x40000>;
89*4882a593Smuzhiyun			interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
90*4882a593Smuzhiyun			clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;
91*4882a593Smuzhiyun			clock-names = "otg";
92*4882a593Smuzhiyun			phys = <&usb1_phy>;
93*4882a593Smuzhiyun			phy-names = "usb2-phy";
94*4882a593Smuzhiyun			dr_mode = "host";
95*4882a593Smuzhiyun			status = "disabled";
96*4882a593Smuzhiyun		};
97*4882a593Smuzhiyun	};
98*4882a593Smuzhiyun};
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun&ethmac {
101*4882a593Smuzhiyun	clocks = <&clkc CLKID_ETH>,
102*4882a593Smuzhiyun		 <&clkc CLKID_FCLK_DIV2>,
103*4882a593Smuzhiyun		 <&clkc CLKID_MPLL2>;
104*4882a593Smuzhiyun	clock-names = "stmmaceth", "clkin0", "clkin1";
105*4882a593Smuzhiyun};
106*4882a593Smuzhiyun
107*4882a593Smuzhiyun&aobus {
108*4882a593Smuzhiyun	pinctrl_aobus: pinctrl@14 {
109*4882a593Smuzhiyun		compatible = "amlogic,meson-gxbb-aobus-pinctrl";
110*4882a593Smuzhiyun		#address-cells = <2>;
111*4882a593Smuzhiyun		#size-cells = <2>;
112*4882a593Smuzhiyun		ranges;
113*4882a593Smuzhiyun
114*4882a593Smuzhiyun		gpio_ao: bank@14 {
115*4882a593Smuzhiyun			reg = <0x0 0x00014 0x0 0x8>,
116*4882a593Smuzhiyun			      <0x0 0x0002c 0x0 0x4>,
117*4882a593Smuzhiyun			      <0x0 0x00024 0x0 0x8>;
118*4882a593Smuzhiyun			reg-names = "mux", "pull", "gpio";
119*4882a593Smuzhiyun			gpio-controller;
120*4882a593Smuzhiyun			#gpio-cells = <2>;
121*4882a593Smuzhiyun			gpio-ranges = <&pinctrl_aobus 0 0 14>;
122*4882a593Smuzhiyun		};
123*4882a593Smuzhiyun
124*4882a593Smuzhiyun		uart_ao_a_pins: uart_ao_a {
125*4882a593Smuzhiyun			mux {
126*4882a593Smuzhiyun				groups = "uart_tx_ao_a", "uart_rx_ao_a";
127*4882a593Smuzhiyun				function = "uart_ao";
128*4882a593Smuzhiyun			};
129*4882a593Smuzhiyun		};
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun		uart_ao_a_cts_rts_pins: uart_ao_a_cts_rts {
132*4882a593Smuzhiyun			mux {
133*4882a593Smuzhiyun				groups = "uart_cts_ao_a",
134*4882a593Smuzhiyun				       "uart_rts_ao_a";
135*4882a593Smuzhiyun				function = "uart_ao";
136*4882a593Smuzhiyun			};
137*4882a593Smuzhiyun		};
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun		uart_ao_b_pins: uart_ao_b {
140*4882a593Smuzhiyun			mux {
141*4882a593Smuzhiyun				groups = "uart_tx_ao_b", "uart_rx_ao_b";
142*4882a593Smuzhiyun				function = "uart_ao_b";
143*4882a593Smuzhiyun			};
144*4882a593Smuzhiyun		};
145*4882a593Smuzhiyun
146*4882a593Smuzhiyun		uart_ao_b_cts_rts_pins: uart_ao_b_cts_rts {
147*4882a593Smuzhiyun			mux {
148*4882a593Smuzhiyun				groups = "uart_cts_ao_b",
149*4882a593Smuzhiyun				       "uart_rts_ao_b";
150*4882a593Smuzhiyun				function = "uart_ao_b";
151*4882a593Smuzhiyun			};
152*4882a593Smuzhiyun		};
153*4882a593Smuzhiyun
154*4882a593Smuzhiyun		remote_input_ao_pins: remote_input_ao {
155*4882a593Smuzhiyun			mux {
156*4882a593Smuzhiyun				groups = "remote_input_ao";
157*4882a593Smuzhiyun				function = "remote_input_ao";
158*4882a593Smuzhiyun			};
159*4882a593Smuzhiyun		};
160*4882a593Smuzhiyun
161*4882a593Smuzhiyun		i2c_ao_pins: i2c_ao {
162*4882a593Smuzhiyun			mux {
163*4882a593Smuzhiyun				groups = "i2c_sck_ao",
164*4882a593Smuzhiyun				       "i2c_sda_ao";
165*4882a593Smuzhiyun				function = "i2c_ao";
166*4882a593Smuzhiyun			};
167*4882a593Smuzhiyun		};
168*4882a593Smuzhiyun
169*4882a593Smuzhiyun		pwm_ao_a_3_pins: pwm_ao_a_3 {
170*4882a593Smuzhiyun			mux {
171*4882a593Smuzhiyun				groups = "pwm_ao_a_3";
172*4882a593Smuzhiyun				function = "pwm_ao_a_3";
173*4882a593Smuzhiyun			};
174*4882a593Smuzhiyun		};
175*4882a593Smuzhiyun
176*4882a593Smuzhiyun		pwm_ao_a_6_pins: pwm_ao_a_6 {
177*4882a593Smuzhiyun			mux {
178*4882a593Smuzhiyun				groups = "pwm_ao_a_6";
179*4882a593Smuzhiyun				function = "pwm_ao_a_6";
180*4882a593Smuzhiyun			};
181*4882a593Smuzhiyun		};
182*4882a593Smuzhiyun
183*4882a593Smuzhiyun		pwm_ao_a_12_pins: pwm_ao_a_12 {
184*4882a593Smuzhiyun			mux {
185*4882a593Smuzhiyun				groups = "pwm_ao_a_12";
186*4882a593Smuzhiyun				function = "pwm_ao_a_12";
187*4882a593Smuzhiyun			};
188*4882a593Smuzhiyun		};
189*4882a593Smuzhiyun
190*4882a593Smuzhiyun		pwm_ao_b_pins: pwm_ao_b {
191*4882a593Smuzhiyun			mux {
192*4882a593Smuzhiyun				groups = "pwm_ao_b";
193*4882a593Smuzhiyun				function = "pwm_ao_b";
194*4882a593Smuzhiyun			};
195*4882a593Smuzhiyun		};
196*4882a593Smuzhiyun
197*4882a593Smuzhiyun		i2s_am_clk_pins: i2s_am_clk {
198*4882a593Smuzhiyun			mux {
199*4882a593Smuzhiyun				groups = "i2s_am_clk";
200*4882a593Smuzhiyun				function = "i2s_out_ao";
201*4882a593Smuzhiyun			};
202*4882a593Smuzhiyun		};
203*4882a593Smuzhiyun
204*4882a593Smuzhiyun		i2s_out_ao_clk_pins: i2s_out_ao_clk {
205*4882a593Smuzhiyun			mux {
206*4882a593Smuzhiyun				groups = "i2s_out_ao_clk";
207*4882a593Smuzhiyun				function = "i2s_out_ao";
208*4882a593Smuzhiyun			};
209*4882a593Smuzhiyun		};
210*4882a593Smuzhiyun
211*4882a593Smuzhiyun		i2s_out_lr_clk_pins: i2s_out_lr_clk {
212*4882a593Smuzhiyun			mux {
213*4882a593Smuzhiyun				groups = "i2s_out_lr_clk";
214*4882a593Smuzhiyun				function = "i2s_out_ao";
215*4882a593Smuzhiyun			};
216*4882a593Smuzhiyun		};
217*4882a593Smuzhiyun
218*4882a593Smuzhiyun		i2s_out_ch01_ao_pins: i2s_out_ch01_ao {
219*4882a593Smuzhiyun			mux {
220*4882a593Smuzhiyun				groups = "i2s_out_ch01_ao";
221*4882a593Smuzhiyun				function = "i2s_out_ao";
222*4882a593Smuzhiyun			};
223*4882a593Smuzhiyun		};
224*4882a593Smuzhiyun
225*4882a593Smuzhiyun		i2s_out_ch23_ao_pins: i2s_out_ch23_ao {
226*4882a593Smuzhiyun			mux {
227*4882a593Smuzhiyun				groups = "i2s_out_ch23_ao";
228*4882a593Smuzhiyun				function = "i2s_out_ao";
229*4882a593Smuzhiyun			};
230*4882a593Smuzhiyun		};
231*4882a593Smuzhiyun
232*4882a593Smuzhiyun		i2s_out_ch45_ao_pins: i2s_out_ch45_ao {
233*4882a593Smuzhiyun			mux {
234*4882a593Smuzhiyun				groups = "i2s_out_ch45_ao";
235*4882a593Smuzhiyun				function = "i2s_out_ao";
236*4882a593Smuzhiyun			};
237*4882a593Smuzhiyun		};
238*4882a593Smuzhiyun
239*4882a593Smuzhiyun		spdif_out_ao_6_pins: spdif_out_ao_6 {
240*4882a593Smuzhiyun			mux {
241*4882a593Smuzhiyun				groups = "spdif_out_ao_6";
242*4882a593Smuzhiyun				function = "spdif_out_ao";
243*4882a593Smuzhiyun			};
244*4882a593Smuzhiyun		};
245*4882a593Smuzhiyun
246*4882a593Smuzhiyun		spdif_out_ao_13_pins: spdif_out_ao_13 {
247*4882a593Smuzhiyun			mux {
248*4882a593Smuzhiyun				groups = "spdif_out_ao_13";
249*4882a593Smuzhiyun				function = "spdif_out_ao";
250*4882a593Smuzhiyun			};
251*4882a593Smuzhiyun		};
252*4882a593Smuzhiyun	};
253*4882a593Smuzhiyun};
254*4882a593Smuzhiyun
255*4882a593Smuzhiyun&periphs {
256*4882a593Smuzhiyun	pinctrl_periphs: pinctrl@4b0 {
257*4882a593Smuzhiyun		compatible = "amlogic,meson-gxbb-periphs-pinctrl";
258*4882a593Smuzhiyun		#address-cells = <2>;
259*4882a593Smuzhiyun		#size-cells = <2>;
260*4882a593Smuzhiyun		ranges;
261*4882a593Smuzhiyun
262*4882a593Smuzhiyun		gpio: bank@4b0 {
263*4882a593Smuzhiyun			reg = <0x0 0x004b0 0x0 0x28>,
264*4882a593Smuzhiyun			      <0x0 0x004e8 0x0 0x14>,
265*4882a593Smuzhiyun			      <0x0 0x00120 0x0 0x14>,
266*4882a593Smuzhiyun			      <0x0 0x00430 0x0 0x40>;
267*4882a593Smuzhiyun			reg-names = "mux", "pull", "pull-enable", "gpio";
268*4882a593Smuzhiyun			gpio-controller;
269*4882a593Smuzhiyun			#gpio-cells = <2>;
270*4882a593Smuzhiyun			gpio-ranges = <&pinctrl_periphs 0 14 120>;
271*4882a593Smuzhiyun		};
272*4882a593Smuzhiyun
273*4882a593Smuzhiyun		emmc_pins: emmc {
274*4882a593Smuzhiyun			mux {
275*4882a593Smuzhiyun				groups = "emmc_nand_d07",
276*4882a593Smuzhiyun				       "emmc_cmd",
277*4882a593Smuzhiyun				       "emmc_clk",
278*4882a593Smuzhiyun				       "emmc_ds";
279*4882a593Smuzhiyun				function = "emmc";
280*4882a593Smuzhiyun			};
281*4882a593Smuzhiyun		};
282*4882a593Smuzhiyun
283*4882a593Smuzhiyun		nor_pins: nor {
284*4882a593Smuzhiyun			mux {
285*4882a593Smuzhiyun				groups = "nor_d",
286*4882a593Smuzhiyun				       "nor_q",
287*4882a593Smuzhiyun				       "nor_c",
288*4882a593Smuzhiyun				       "nor_cs";
289*4882a593Smuzhiyun				function = "nor";
290*4882a593Smuzhiyun			};
291*4882a593Smuzhiyun		};
292*4882a593Smuzhiyun
293*4882a593Smuzhiyun		sdcard_pins: sdcard {
294*4882a593Smuzhiyun			mux {
295*4882a593Smuzhiyun				groups = "sdcard_d0",
296*4882a593Smuzhiyun				       "sdcard_d1",
297*4882a593Smuzhiyun				       "sdcard_d2",
298*4882a593Smuzhiyun				       "sdcard_d3",
299*4882a593Smuzhiyun				       "sdcard_cmd",
300*4882a593Smuzhiyun				       "sdcard_clk";
301*4882a593Smuzhiyun				function = "sdcard";
302*4882a593Smuzhiyun			};
303*4882a593Smuzhiyun		};
304*4882a593Smuzhiyun
305*4882a593Smuzhiyun		sdio_pins: sdio {
306*4882a593Smuzhiyun			mux {
307*4882a593Smuzhiyun				groups = "sdio_d0",
308*4882a593Smuzhiyun				       "sdio_d1",
309*4882a593Smuzhiyun				       "sdio_d2",
310*4882a593Smuzhiyun				       "sdio_d3",
311*4882a593Smuzhiyun				       "sdio_cmd",
312*4882a593Smuzhiyun				       "sdio_clk";
313*4882a593Smuzhiyun				function = "sdio";
314*4882a593Smuzhiyun			};
315*4882a593Smuzhiyun		};
316*4882a593Smuzhiyun
317*4882a593Smuzhiyun		sdio_irq_pins: sdio_irq {
318*4882a593Smuzhiyun			mux {
319*4882a593Smuzhiyun				groups = "sdio_irq";
320*4882a593Smuzhiyun				function = "sdio";
321*4882a593Smuzhiyun			};
322*4882a593Smuzhiyun		};
323*4882a593Smuzhiyun
324*4882a593Smuzhiyun		uart_a_pins: uart_a {
325*4882a593Smuzhiyun			mux {
326*4882a593Smuzhiyun				groups = "uart_tx_a",
327*4882a593Smuzhiyun				       "uart_rx_a";
328*4882a593Smuzhiyun				function = "uart_a";
329*4882a593Smuzhiyun			};
330*4882a593Smuzhiyun		};
331*4882a593Smuzhiyun
332*4882a593Smuzhiyun		uart_a_cts_rts_pins: uart_a_cts_rts {
333*4882a593Smuzhiyun			mux {
334*4882a593Smuzhiyun				groups = "uart_cts_a",
335*4882a593Smuzhiyun				       "uart_rts_a";
336*4882a593Smuzhiyun				function = "uart_a";
337*4882a593Smuzhiyun			};
338*4882a593Smuzhiyun		};
339*4882a593Smuzhiyun
340*4882a593Smuzhiyun		uart_b_pins: uart_b {
341*4882a593Smuzhiyun			mux {
342*4882a593Smuzhiyun				groups = "uart_tx_b",
343*4882a593Smuzhiyun				       "uart_rx_b";
344*4882a593Smuzhiyun				function = "uart_b";
345*4882a593Smuzhiyun			};
346*4882a593Smuzhiyun		};
347*4882a593Smuzhiyun
348*4882a593Smuzhiyun		uart_b_cts_rts_pins: uart_b_cts_rts {
349*4882a593Smuzhiyun			mux {
350*4882a593Smuzhiyun				groups = "uart_cts_b",
351*4882a593Smuzhiyun				       "uart_rts_b";
352*4882a593Smuzhiyun				function = "uart_b";
353*4882a593Smuzhiyun			};
354*4882a593Smuzhiyun		};
355*4882a593Smuzhiyun
356*4882a593Smuzhiyun		uart_c_pins: uart_c {
357*4882a593Smuzhiyun			mux {
358*4882a593Smuzhiyun				groups = "uart_tx_c",
359*4882a593Smuzhiyun				       "uart_rx_c";
360*4882a593Smuzhiyun				function = "uart_c";
361*4882a593Smuzhiyun			};
362*4882a593Smuzhiyun		};
363*4882a593Smuzhiyun
364*4882a593Smuzhiyun		uart_c_cts_rts_pins: uart_c_cts_rts {
365*4882a593Smuzhiyun			mux {
366*4882a593Smuzhiyun				groups = "uart_cts_c",
367*4882a593Smuzhiyun				       "uart_rts_c";
368*4882a593Smuzhiyun				function = "uart_c";
369*4882a593Smuzhiyun			};
370*4882a593Smuzhiyun		};
371*4882a593Smuzhiyun
372*4882a593Smuzhiyun		i2c_a_pins: i2c_a {
373*4882a593Smuzhiyun			mux {
374*4882a593Smuzhiyun				groups = "i2c_sck_a",
375*4882a593Smuzhiyun				       "i2c_sda_a";
376*4882a593Smuzhiyun				function = "i2c_a";
377*4882a593Smuzhiyun			};
378*4882a593Smuzhiyun		};
379*4882a593Smuzhiyun
380*4882a593Smuzhiyun		i2c_b_pins: i2c_b {
381*4882a593Smuzhiyun			mux {
382*4882a593Smuzhiyun				groups = "i2c_sck_b",
383*4882a593Smuzhiyun				       "i2c_sda_b";
384*4882a593Smuzhiyun				function = "i2c_b";
385*4882a593Smuzhiyun			};
386*4882a593Smuzhiyun		};
387*4882a593Smuzhiyun
388*4882a593Smuzhiyun		i2c_c_pins: i2c_c {
389*4882a593Smuzhiyun			mux {
390*4882a593Smuzhiyun				groups = "i2c_sck_c",
391*4882a593Smuzhiyun				       "i2c_sda_c";
392*4882a593Smuzhiyun				function = "i2c_c";
393*4882a593Smuzhiyun			};
394*4882a593Smuzhiyun		};
395*4882a593Smuzhiyun
396*4882a593Smuzhiyun		eth_rgmii_pins: eth-rgmii {
397*4882a593Smuzhiyun			mux {
398*4882a593Smuzhiyun				groups = "eth_mdio",
399*4882a593Smuzhiyun				       "eth_mdc",
400*4882a593Smuzhiyun				       "eth_clk_rx_clk",
401*4882a593Smuzhiyun				       "eth_rx_dv",
402*4882a593Smuzhiyun				       "eth_rxd0",
403*4882a593Smuzhiyun				       "eth_rxd1",
404*4882a593Smuzhiyun				       "eth_rxd2",
405*4882a593Smuzhiyun				       "eth_rxd3",
406*4882a593Smuzhiyun				       "eth_rgmii_tx_clk",
407*4882a593Smuzhiyun				       "eth_tx_en",
408*4882a593Smuzhiyun				       "eth_txd0",
409*4882a593Smuzhiyun				       "eth_txd1",
410*4882a593Smuzhiyun				       "eth_txd2",
411*4882a593Smuzhiyun				       "eth_txd3";
412*4882a593Smuzhiyun				function = "eth";
413*4882a593Smuzhiyun			};
414*4882a593Smuzhiyun		};
415*4882a593Smuzhiyun
416*4882a593Smuzhiyun		eth_rmii_pins: eth-rmii {
417*4882a593Smuzhiyun			mux {
418*4882a593Smuzhiyun				groups = "eth_mdio",
419*4882a593Smuzhiyun				       "eth_mdc",
420*4882a593Smuzhiyun				       "eth_clk_rx_clk",
421*4882a593Smuzhiyun				       "eth_rx_dv",
422*4882a593Smuzhiyun				       "eth_rxd0",
423*4882a593Smuzhiyun				       "eth_rxd1",
424*4882a593Smuzhiyun				       "eth_tx_en",
425*4882a593Smuzhiyun				       "eth_txd0",
426*4882a593Smuzhiyun				       "eth_txd1";
427*4882a593Smuzhiyun				function = "eth";
428*4882a593Smuzhiyun			};
429*4882a593Smuzhiyun		};
430*4882a593Smuzhiyun
431*4882a593Smuzhiyun		pwm_a_x_pins: pwm_a_x {
432*4882a593Smuzhiyun			mux {
433*4882a593Smuzhiyun				groups = "pwm_a_x";
434*4882a593Smuzhiyun				function = "pwm_a_x";
435*4882a593Smuzhiyun			};
436*4882a593Smuzhiyun		};
437*4882a593Smuzhiyun
438*4882a593Smuzhiyun		pwm_a_y_pins: pwm_a_y {
439*4882a593Smuzhiyun			mux {
440*4882a593Smuzhiyun				groups = "pwm_a_y";
441*4882a593Smuzhiyun				function = "pwm_a_y";
442*4882a593Smuzhiyun			};
443*4882a593Smuzhiyun		};
444*4882a593Smuzhiyun
445*4882a593Smuzhiyun		pwm_b_pins: pwm_b {
446*4882a593Smuzhiyun			mux {
447*4882a593Smuzhiyun				groups = "pwm_b";
448*4882a593Smuzhiyun				function = "pwm_b";
449*4882a593Smuzhiyun			};
450*4882a593Smuzhiyun		};
451*4882a593Smuzhiyun
452*4882a593Smuzhiyun		pwm_d_pins: pwm_d {
453*4882a593Smuzhiyun			mux {
454*4882a593Smuzhiyun				groups = "pwm_d";
455*4882a593Smuzhiyun				function = "pwm_d";
456*4882a593Smuzhiyun			};
457*4882a593Smuzhiyun		};
458*4882a593Smuzhiyun
459*4882a593Smuzhiyun		pwm_e_pins: pwm_e {
460*4882a593Smuzhiyun			mux {
461*4882a593Smuzhiyun				groups = "pwm_e";
462*4882a593Smuzhiyun				function = "pwm_e";
463*4882a593Smuzhiyun			};
464*4882a593Smuzhiyun		};
465*4882a593Smuzhiyun
466*4882a593Smuzhiyun		pwm_f_x_pins: pwm_f_x {
467*4882a593Smuzhiyun			mux {
468*4882a593Smuzhiyun				groups = "pwm_f_x";
469*4882a593Smuzhiyun				function = "pwm_f_x";
470*4882a593Smuzhiyun			};
471*4882a593Smuzhiyun		};
472*4882a593Smuzhiyun
473*4882a593Smuzhiyun		pwm_f_y_pins: pwm_f_y {
474*4882a593Smuzhiyun			mux {
475*4882a593Smuzhiyun				groups = "pwm_f_y";
476*4882a593Smuzhiyun				function = "pwm_f_y";
477*4882a593Smuzhiyun			};
478*4882a593Smuzhiyun		};
479*4882a593Smuzhiyun
480*4882a593Smuzhiyun		hdmi_hpd_pins: hdmi_hpd {
481*4882a593Smuzhiyun			mux {
482*4882a593Smuzhiyun				groups = "hdmi_hpd";
483*4882a593Smuzhiyun				function = "hdmi_hpd";
484*4882a593Smuzhiyun			};
485*4882a593Smuzhiyun		};
486*4882a593Smuzhiyun
487*4882a593Smuzhiyun		hdmi_i2c_pins: hdmi_i2c {
488*4882a593Smuzhiyun			mux {
489*4882a593Smuzhiyun				groups = "hdmi_sda", "hdmi_scl";
490*4882a593Smuzhiyun				function = "hdmi_i2c";
491*4882a593Smuzhiyun			};
492*4882a593Smuzhiyun		};
493*4882a593Smuzhiyun
494*4882a593Smuzhiyun		i2sout_ch23_y_pins: i2sout_ch23_y {
495*4882a593Smuzhiyun			mux {
496*4882a593Smuzhiyun				groups = "i2sout_ch23_y";
497*4882a593Smuzhiyun				function = "i2s_out";
498*4882a593Smuzhiyun			};
499*4882a593Smuzhiyun		};
500*4882a593Smuzhiyun
501*4882a593Smuzhiyun		i2sout_ch45_y_pins: i2sout_ch45_y {
502*4882a593Smuzhiyun			mux {
503*4882a593Smuzhiyun				groups = "i2sout_ch45_y";
504*4882a593Smuzhiyun				function = "i2s_out";
505*4882a593Smuzhiyun			};
506*4882a593Smuzhiyun		};
507*4882a593Smuzhiyun
508*4882a593Smuzhiyun		i2sout_ch67_y_pins: i2sout_ch67_y {
509*4882a593Smuzhiyun			mux {
510*4882a593Smuzhiyun				groups = "i2sout_ch67_y";
511*4882a593Smuzhiyun				function = "i2s_out";
512*4882a593Smuzhiyun			};
513*4882a593Smuzhiyun		};
514*4882a593Smuzhiyun
515*4882a593Smuzhiyun		spdif_out_y_pins: spdif_out_y {
516*4882a593Smuzhiyun			mux {
517*4882a593Smuzhiyun				groups = "spdif_out_y";
518*4882a593Smuzhiyun				function = "spdif_out";
519*4882a593Smuzhiyun			};
520*4882a593Smuzhiyun		};
521*4882a593Smuzhiyun	};
522*4882a593Smuzhiyun};
523*4882a593Smuzhiyun
524*4882a593Smuzhiyun&hiubus {
525*4882a593Smuzhiyun	clkc: clock-controller@0 {
526*4882a593Smuzhiyun		compatible = "amlogic,gxbb-clkc";
527*4882a593Smuzhiyun		#clock-cells = <1>;
528*4882a593Smuzhiyun		reg = <0x0 0x0 0x0 0x3db>;
529*4882a593Smuzhiyun	};
530*4882a593Smuzhiyun};
531*4882a593Smuzhiyun
532*4882a593Smuzhiyun&apb {
533*4882a593Smuzhiyun	mali: gpu@c0000 {
534*4882a593Smuzhiyun		compatible = "amlogic,meson-gxbb-mali", "arm,mali-450";
535*4882a593Smuzhiyun		reg = <0x0 0xc0000 0x0 0x40000>;
536*4882a593Smuzhiyun		interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
537*4882a593Smuzhiyun			     <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
538*4882a593Smuzhiyun			     <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
539*4882a593Smuzhiyun			     <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
540*4882a593Smuzhiyun			     <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
541*4882a593Smuzhiyun			     <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>,
542*4882a593Smuzhiyun			     <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>,
543*4882a593Smuzhiyun			     <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>,
544*4882a593Smuzhiyun			     <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
545*4882a593Smuzhiyun			     <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
546*4882a593Smuzhiyun		interrupt-names = "gp", "gpmmu", "pp", "pmu",
547*4882a593Smuzhiyun			"pp0", "ppmmu0", "pp1", "ppmmu1",
548*4882a593Smuzhiyun			"pp2", "ppmmu2";
549*4882a593Smuzhiyun		clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;
550*4882a593Smuzhiyun		clock-names = "bus", "core";
551*4882a593Smuzhiyun
552*4882a593Smuzhiyun		/*
553*4882a593Smuzhiyun		 * Mali clocking is provided by two identical clock paths
554*4882a593Smuzhiyun		 * MALI_0 and MALI_1 muxed to a single clock by a glitch
555*4882a593Smuzhiyun		 * free mux to safely change frequency while running.
556*4882a593Smuzhiyun		 */
557*4882a593Smuzhiyun		assigned-clocks = <&clkc CLKID_MALI_0_SEL>,
558*4882a593Smuzhiyun				  <&clkc CLKID_MALI_0>,
559*4882a593Smuzhiyun				  <&clkc CLKID_MALI>; /* Glitch free mux */
560*4882a593Smuzhiyun		assigned-clock-parents = <&clkc CLKID_FCLK_DIV3>,
561*4882a593Smuzhiyun					 <0>, /* Do Nothing */
562*4882a593Smuzhiyun					 <&clkc CLKID_MALI_0>;
563*4882a593Smuzhiyun		assigned-clock-rates = <0>, /* Do Nothing */
564*4882a593Smuzhiyun				       <666666666>,
565*4882a593Smuzhiyun				       <0>; /* Do Nothing */
566*4882a593Smuzhiyun	};
567*4882a593Smuzhiyun};
568*4882a593Smuzhiyun
569*4882a593Smuzhiyun&i2c_A {
570*4882a593Smuzhiyun	clocks = <&clkc CLKID_I2C>;
571*4882a593Smuzhiyun};
572*4882a593Smuzhiyun
573*4882a593Smuzhiyun&i2c_AO {
574*4882a593Smuzhiyun	clocks = <&clkc CLKID_AO_I2C>;
575*4882a593Smuzhiyun};
576*4882a593Smuzhiyun
577*4882a593Smuzhiyun&i2c_B {
578*4882a593Smuzhiyun	clocks = <&clkc CLKID_I2C>;
579*4882a593Smuzhiyun};
580*4882a593Smuzhiyun
581*4882a593Smuzhiyun&i2c_C {
582*4882a593Smuzhiyun	clocks = <&clkc CLKID_I2C>;
583*4882a593Smuzhiyun};
584*4882a593Smuzhiyun
585*4882a593Smuzhiyun&saradc {
586*4882a593Smuzhiyun	compatible = "amlogic,meson-gxbb-saradc", "amlogic,meson-saradc";
587*4882a593Smuzhiyun	clocks = <&xtal>,
588*4882a593Smuzhiyun		 <&clkc CLKID_SAR_ADC>,
589*4882a593Smuzhiyun		 <&clkc CLKID_SANA>,
590*4882a593Smuzhiyun		 <&clkc CLKID_SAR_ADC_CLK>,
591*4882a593Smuzhiyun		 <&clkc CLKID_SAR_ADC_SEL>;
592*4882a593Smuzhiyun	clock-names = "clkin", "core", "sana", "adc_clk", "adc_sel";
593*4882a593Smuzhiyun};
594*4882a593Smuzhiyun
595*4882a593Smuzhiyun&sd_emmc_a {
596*4882a593Smuzhiyun	clocks = <&clkc CLKID_SD_EMMC_A>,
597*4882a593Smuzhiyun		 <&xtal>,
598*4882a593Smuzhiyun		 <&clkc CLKID_FCLK_DIV2>;
599*4882a593Smuzhiyun	clock-names = "core", "clkin0", "clkin1";
600*4882a593Smuzhiyun};
601*4882a593Smuzhiyun
602*4882a593Smuzhiyun&sd_emmc_b {
603*4882a593Smuzhiyun	clocks = <&clkc CLKID_SD_EMMC_B>,
604*4882a593Smuzhiyun		 <&xtal>,
605*4882a593Smuzhiyun		 <&clkc CLKID_FCLK_DIV2>;
606*4882a593Smuzhiyun	clock-names = "core", "clkin0", "clkin1";
607*4882a593Smuzhiyun};
608*4882a593Smuzhiyun
609*4882a593Smuzhiyun&sd_emmc_c {
610*4882a593Smuzhiyun	clocks = <&clkc CLKID_SD_EMMC_C>,
611*4882a593Smuzhiyun		 <&xtal>,
612*4882a593Smuzhiyun		 <&clkc CLKID_FCLK_DIV2>;
613*4882a593Smuzhiyun	clock-names = "core", "clkin0", "clkin1";
614*4882a593Smuzhiyun};
615*4882a593Smuzhiyun
616*4882a593Smuzhiyun&spifc {
617*4882a593Smuzhiyun	clocks = <&clkc CLKID_SPI>;
618*4882a593Smuzhiyun};
619*4882a593Smuzhiyun
620*4882a593Smuzhiyun&vpu {
621*4882a593Smuzhiyun	compatible = "amlogic,meson-gxbb-vpu", "amlogic,meson-gx-vpu";
622*4882a593Smuzhiyun};
623*4882a593Smuzhiyun
624*4882a593Smuzhiyun&hwrng {
625*4882a593Smuzhiyun	clocks = <&clkc CLKID_RNG0>;
626*4882a593Smuzhiyun	clock-names = "core";
627*4882a593Smuzhiyun};
628*4882a593Smuzhiyun
629*4882a593Smuzhiyun&hdmi_tx {
630*4882a593Smuzhiyun	compatible = "amlogic,meson-gxbb-dw-hdmi", "amlogic,meson-gx-dw-hdmi";
631*4882a593Smuzhiyun	resets = <&reset RESET_HDMITX_CAPB3>,
632*4882a593Smuzhiyun		 <&reset RESET_HDMI_SYSTEM_RESET>,
633*4882a593Smuzhiyun		 <&reset RESET_HDMI_TX>;
634*4882a593Smuzhiyun	reset-names = "hdmitx_apb", "hdmitx", "hdmitx_phy";
635*4882a593Smuzhiyun	clocks = <&clkc CLKID_HDMI_PCLK>,
636*4882a593Smuzhiyun		 <&clkc CLKID_CLK81>,
637*4882a593Smuzhiyun		 <&clkc CLKID_GCLK_VENCI_INT0>;
638*4882a593Smuzhiyun	clock-names = "isfr", "iahb", "venci";
639*4882a593Smuzhiyun};
640