xref: /freebsd/sys/contrib/device-tree/Bindings/arm/hisilicon/hisilicon.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotHisilicon Platforms Device Tree Bindings
2*c66ec88fSEmmanuel Vadot----------------------------------------------------
3*c66ec88fSEmmanuel VadotHi3660 SoC
4*c66ec88fSEmmanuel VadotRequired root node properties:
5*c66ec88fSEmmanuel Vadot	- compatible = "hisilicon,hi3660";
6*c66ec88fSEmmanuel Vadot
7*c66ec88fSEmmanuel VadotHiKey960 Board
8*c66ec88fSEmmanuel VadotRequired root node properties:
9*c66ec88fSEmmanuel Vadot	- compatible = "hisilicon,hi3660-hikey960", "hisilicon,hi3660";
10*c66ec88fSEmmanuel Vadot
11*c66ec88fSEmmanuel VadotHi3670 SoC
12*c66ec88fSEmmanuel VadotRequired root node properties:
13*c66ec88fSEmmanuel Vadot	- compatible = "hisilicon,hi3670";
14*c66ec88fSEmmanuel Vadot
15*c66ec88fSEmmanuel VadotHiKey970 Board
16*c66ec88fSEmmanuel VadotRequired root node properties:
17*c66ec88fSEmmanuel Vadot	- compatible = "hisilicon,hi3670-hikey970", "hisilicon,hi3670";
18*c66ec88fSEmmanuel Vadot
19*c66ec88fSEmmanuel VadotHi3798cv200 SoC
20*c66ec88fSEmmanuel VadotRequired root node properties:
21*c66ec88fSEmmanuel Vadot	- compatible = "hisilicon,hi3798cv200";
22*c66ec88fSEmmanuel Vadot
23*c66ec88fSEmmanuel VadotHi3798cv200 Poplar Board
24*c66ec88fSEmmanuel VadotRequired root node properties:
25*c66ec88fSEmmanuel Vadot	- compatible = "hisilicon,hi3798cv200-poplar", "hisilicon,hi3798cv200";
26*c66ec88fSEmmanuel Vadot
27*c66ec88fSEmmanuel VadotHi4511 Board
28*c66ec88fSEmmanuel VadotRequired root node properties:
29*c66ec88fSEmmanuel Vadot	- compatible = "hisilicon,hi3620-hi4511";
30*c66ec88fSEmmanuel Vadot
31*c66ec88fSEmmanuel VadotHi6220 SoC
32*c66ec88fSEmmanuel VadotRequired root node properties:
33*c66ec88fSEmmanuel Vadot	- compatible = "hisilicon,hi6220";
34*c66ec88fSEmmanuel Vadot
35*c66ec88fSEmmanuel VadotHiKey Board
36*c66ec88fSEmmanuel VadotRequired root node properties:
37*c66ec88fSEmmanuel Vadot	- compatible = "hisilicon,hi6220-hikey", "hisilicon,hi6220";
38*c66ec88fSEmmanuel Vadot
39*c66ec88fSEmmanuel VadotHiP01 ca9x2 Board
40*c66ec88fSEmmanuel VadotRequired root node properties:
41*c66ec88fSEmmanuel Vadot	- compatible = "hisilicon,hip01-ca9x2";
42*c66ec88fSEmmanuel Vadot
43*c66ec88fSEmmanuel VadotHiP04 D01 Board
44*c66ec88fSEmmanuel VadotRequired root node properties:
45*c66ec88fSEmmanuel Vadot	- compatible = "hisilicon,hip04-d01";
46*c66ec88fSEmmanuel Vadot
47*c66ec88fSEmmanuel VadotHiP05 D02 Board
48*c66ec88fSEmmanuel VadotRequired root node properties:
49*c66ec88fSEmmanuel Vadot	- compatible = "hisilicon,hip05-d02";
50*c66ec88fSEmmanuel Vadot
51*c66ec88fSEmmanuel VadotHiP06 D03 Board
52*c66ec88fSEmmanuel VadotRequired root node properties:
53*c66ec88fSEmmanuel Vadot	- compatible = "hisilicon,hip06-d03";
54*c66ec88fSEmmanuel Vadot
55*c66ec88fSEmmanuel VadotHiP07 D05 Board
56*c66ec88fSEmmanuel VadotRequired root node properties:
57*c66ec88fSEmmanuel Vadot	- compatible = "hisilicon,hip07-d05";
58*c66ec88fSEmmanuel Vadot
59*c66ec88fSEmmanuel VadotHisilicon system controller
60*c66ec88fSEmmanuel Vadot
61*c66ec88fSEmmanuel VadotRequired properties:
62*c66ec88fSEmmanuel Vadot- compatible : "hisilicon,sysctrl"
63*c66ec88fSEmmanuel Vadot- reg : Register address and size
64*c66ec88fSEmmanuel Vadot
65*c66ec88fSEmmanuel VadotOptional properties:
66*c66ec88fSEmmanuel Vadot- smp-offset : offset in sysctrl for notifying slave cpu booting
67*c66ec88fSEmmanuel Vadot		cpu 1, reg;
68*c66ec88fSEmmanuel Vadot		cpu 2, reg + 0x4;
69*c66ec88fSEmmanuel Vadot		cpu 3, reg + 0x8;
70*c66ec88fSEmmanuel Vadot		If reg value is not zero, cpun exit wfi and go
71*c66ec88fSEmmanuel Vadot- resume-offset : offset in sysctrl for notifying cpu0 when resume
72*c66ec88fSEmmanuel Vadot- reboot-offset : offset in sysctrl for system reboot
73*c66ec88fSEmmanuel Vadot
74*c66ec88fSEmmanuel VadotExample:
75*c66ec88fSEmmanuel Vadot
76*c66ec88fSEmmanuel Vadot	/* for Hi3620 */
77*c66ec88fSEmmanuel Vadot	sysctrl: system-controller@fc802000 {
78*c66ec88fSEmmanuel Vadot		compatible = "hisilicon,sysctrl";
79*c66ec88fSEmmanuel Vadot		reg = <0xfc802000 0x1000>;
80*c66ec88fSEmmanuel Vadot		smp-offset = <0x31c>;
81*c66ec88fSEmmanuel Vadot		resume-offset = <0x308>;
82*c66ec88fSEmmanuel Vadot		reboot-offset = <0x4>;
83*c66ec88fSEmmanuel Vadot	};
84*c66ec88fSEmmanuel Vadot
85*c66ec88fSEmmanuel Vadot-----------------------------------------------------------------------
86*c66ec88fSEmmanuel VadotHisilicon Hi3798CV200 Peripheral Controller
87*c66ec88fSEmmanuel Vadot
88*c66ec88fSEmmanuel VadotThe Hi3798CV200 Peripheral Controller controls peripherals, queries
89*c66ec88fSEmmanuel Vadottheir status, and configures some functions of peripherals.
90*c66ec88fSEmmanuel Vadot
91*c66ec88fSEmmanuel VadotRequired properties:
92*c66ec88fSEmmanuel Vadot- compatible: Should contain "hisilicon,hi3798cv200-perictrl", "syscon"
93*c66ec88fSEmmanuel Vadot  and "simple-mfd".
94*c66ec88fSEmmanuel Vadot- reg: Register address and size of Peripheral Controller.
95*c66ec88fSEmmanuel Vadot- #address-cells: Should be 1.
96*c66ec88fSEmmanuel Vadot- #size-cells: Should be 1.
97*c66ec88fSEmmanuel Vadot
98*c66ec88fSEmmanuel VadotExamples:
99*c66ec88fSEmmanuel Vadot
100*c66ec88fSEmmanuel Vadot	perictrl: peripheral-controller@8a20000 {
101*c66ec88fSEmmanuel Vadot		compatible = "hisilicon,hi3798cv200-perictrl", "syscon",
102*c66ec88fSEmmanuel Vadot			     "simple-mfd";
103*c66ec88fSEmmanuel Vadot		reg = <0x8a20000 0x1000>;
104*c66ec88fSEmmanuel Vadot		#address-cells = <1>;
105*c66ec88fSEmmanuel Vadot		#size-cells = <1>;
106*c66ec88fSEmmanuel Vadot	};
107*c66ec88fSEmmanuel Vadot
108*c66ec88fSEmmanuel Vadot-----------------------------------------------------------------------
109*c66ec88fSEmmanuel VadotHisilicon Hi6220 system controller
110*c66ec88fSEmmanuel Vadot
111*c66ec88fSEmmanuel VadotRequired properties:
112*c66ec88fSEmmanuel Vadot- compatible : "hisilicon,hi6220-sysctrl"
113*c66ec88fSEmmanuel Vadot- reg : Register address and size
114*c66ec88fSEmmanuel Vadot- #clock-cells: should be set to 1, many clock registers are defined
115*c66ec88fSEmmanuel Vadot  under this controller and this property must be present.
116*c66ec88fSEmmanuel Vadot
117*c66ec88fSEmmanuel VadotHisilicon designs this controller as one of the system controllers,
118*c66ec88fSEmmanuel Vadotits main functions are the same as Hisilicon system controller, but
119*c66ec88fSEmmanuel Vadotthe register offset of some core modules are different.
120*c66ec88fSEmmanuel Vadot
121*c66ec88fSEmmanuel VadotExample:
122*c66ec88fSEmmanuel Vadot	/*for Hi6220*/
123*c66ec88fSEmmanuel Vadot	sys_ctrl: sys_ctrl@f7030000 {
124*c66ec88fSEmmanuel Vadot		compatible = "hisilicon,hi6220-sysctrl", "syscon";
125*c66ec88fSEmmanuel Vadot		reg = <0x0 0xf7030000 0x0 0x2000>;
126*c66ec88fSEmmanuel Vadot		#clock-cells = <1>;
127*c66ec88fSEmmanuel Vadot	};
128*c66ec88fSEmmanuel Vadot
129*c66ec88fSEmmanuel Vadot
130*c66ec88fSEmmanuel VadotHisilicon Hi6220 Power Always ON domain controller
131*c66ec88fSEmmanuel Vadot
132*c66ec88fSEmmanuel VadotRequired properties:
133*c66ec88fSEmmanuel Vadot- compatible : "hisilicon,hi6220-aoctrl"
134*c66ec88fSEmmanuel Vadot- reg : Register address and size
135*c66ec88fSEmmanuel Vadot- #clock-cells: should be set to 1, many clock registers are defined
136*c66ec88fSEmmanuel Vadot  under this controller and this property must be present.
137*c66ec88fSEmmanuel Vadot
138*c66ec88fSEmmanuel VadotHisilicon designs this system controller to control the power always
139*c66ec88fSEmmanuel Vadoton domain for mobile platform.
140*c66ec88fSEmmanuel Vadot
141*c66ec88fSEmmanuel VadotExample:
142*c66ec88fSEmmanuel Vadot	/*for Hi6220*/
143*c66ec88fSEmmanuel Vadot	ao_ctrl: ao_ctrl@f7800000 {
144*c66ec88fSEmmanuel Vadot		compatible = "hisilicon,hi6220-aoctrl", "syscon";
145*c66ec88fSEmmanuel Vadot		reg = <0x0 0xf7800000 0x0 0x2000>;
146*c66ec88fSEmmanuel Vadot		#clock-cells = <1>;
147*c66ec88fSEmmanuel Vadot	};
148*c66ec88fSEmmanuel Vadot
149*c66ec88fSEmmanuel Vadot
150*c66ec88fSEmmanuel VadotHisilicon Hi6220 Media domain controller
151*c66ec88fSEmmanuel Vadot
152*c66ec88fSEmmanuel VadotRequired properties:
153*c66ec88fSEmmanuel Vadot- compatible : "hisilicon,hi6220-mediactrl"
154*c66ec88fSEmmanuel Vadot- reg : Register address and size
155*c66ec88fSEmmanuel Vadot- #clock-cells: should be set to 1, many clock registers are defined
156*c66ec88fSEmmanuel Vadot  under this controller and this property must be present.
157*c66ec88fSEmmanuel Vadot
158*c66ec88fSEmmanuel VadotHisilicon designs this system controller to control the multimedia
159*c66ec88fSEmmanuel Vadotdomain(e.g. codec, G3D ...) for mobile platform.
160*c66ec88fSEmmanuel Vadot
161*c66ec88fSEmmanuel VadotExample:
162*c66ec88fSEmmanuel Vadot	/*for Hi6220*/
163*c66ec88fSEmmanuel Vadot	media_ctrl: media_ctrl@f4410000 {
164*c66ec88fSEmmanuel Vadot		compatible = "hisilicon,hi6220-mediactrl", "syscon";
165*c66ec88fSEmmanuel Vadot		reg = <0x0 0xf4410000 0x0 0x1000>;
166*c66ec88fSEmmanuel Vadot		#clock-cells = <1>;
167*c66ec88fSEmmanuel Vadot	};
168*c66ec88fSEmmanuel Vadot
169*c66ec88fSEmmanuel Vadot
170*c66ec88fSEmmanuel VadotHisilicon Hi6220 Power Management domain controller
171*c66ec88fSEmmanuel Vadot
172*c66ec88fSEmmanuel VadotRequired properties:
173*c66ec88fSEmmanuel Vadot- compatible : "hisilicon,hi6220-pmctrl"
174*c66ec88fSEmmanuel Vadot- reg : Register address and size
175*c66ec88fSEmmanuel Vadot- #clock-cells: should be set to 1, some clock registers are define
176*c66ec88fSEmmanuel Vadot  under this controller and this property must be present.
177*c66ec88fSEmmanuel Vadot
178*c66ec88fSEmmanuel VadotHisilicon designs this system controller to control the power management
179*c66ec88fSEmmanuel Vadotdomain for mobile platform.
180*c66ec88fSEmmanuel Vadot
181*c66ec88fSEmmanuel VadotExample:
182*c66ec88fSEmmanuel Vadot	/*for Hi6220*/
183*c66ec88fSEmmanuel Vadot	pm_ctrl: pm_ctrl@f7032000 {
184*c66ec88fSEmmanuel Vadot		compatible = "hisilicon,hi6220-pmctrl", "syscon";
185*c66ec88fSEmmanuel Vadot		reg = <0x0 0xf7032000 0x0 0x1000>;
186*c66ec88fSEmmanuel Vadot		#clock-cells = <1>;
187*c66ec88fSEmmanuel Vadot	};
188*c66ec88fSEmmanuel Vadot
189*c66ec88fSEmmanuel Vadot
190*c66ec88fSEmmanuel VadotHisilicon Hi6220 SRAM controller
191*c66ec88fSEmmanuel Vadot
192*c66ec88fSEmmanuel VadotRequired properties:
193*c66ec88fSEmmanuel Vadot- compatible : "hisilicon,hi6220-sramctrl", "syscon"
194*c66ec88fSEmmanuel Vadot- reg : Register address and size
195*c66ec88fSEmmanuel Vadot
196*c66ec88fSEmmanuel VadotHisilicon's SoCs use sram for multiple purpose; on Hi6220 there have several
197*c66ec88fSEmmanuel VadotSRAM banks for power management, modem, security, etc. Further, use "syscon"
198*c66ec88fSEmmanuel Vadotmanaging the common sram which can be shared by multiple modules.
199*c66ec88fSEmmanuel Vadot
200*c66ec88fSEmmanuel VadotExample:
201*c66ec88fSEmmanuel Vadot	/*for Hi6220*/
202*c66ec88fSEmmanuel Vadot	sram: sram@fff80000 {
203*c66ec88fSEmmanuel Vadot		compatible = "hisilicon,hi6220-sramctrl", "syscon";
204*c66ec88fSEmmanuel Vadot		reg = <0x0 0xfff80000 0x0 0x12000>;
205*c66ec88fSEmmanuel Vadot	};
206*c66ec88fSEmmanuel Vadot
207*c66ec88fSEmmanuel Vadot-----------------------------------------------------------------------
208*c66ec88fSEmmanuel VadotHisilicon HiP01 system controller
209*c66ec88fSEmmanuel Vadot
210*c66ec88fSEmmanuel VadotRequired properties:
211*c66ec88fSEmmanuel Vadot- compatible : "hisilicon,hip01-sysctrl"
212*c66ec88fSEmmanuel Vadot- reg : Register address and size
213*c66ec88fSEmmanuel Vadot
214*c66ec88fSEmmanuel VadotThe HiP01 system controller is mostly compatible with hisilicon
215*c66ec88fSEmmanuel Vadotsystem controller,but it has some specific control registers for
216*c66ec88fSEmmanuel VadotHIP01 SoC family, such as slave core boot, and also some same
217*c66ec88fSEmmanuel Vadotregisters located at different offset.
218*c66ec88fSEmmanuel Vadot
219*c66ec88fSEmmanuel VadotExample:
220*c66ec88fSEmmanuel Vadot
221*c66ec88fSEmmanuel Vadot	/* for hip01-ca9x2 */
222*c66ec88fSEmmanuel Vadot	sysctrl: system-controller@10000000 {
223*c66ec88fSEmmanuel Vadot		compatible = "hisilicon,hip01-sysctrl", "hisilicon,sysctrl";
224*c66ec88fSEmmanuel Vadot		reg = <0x10000000 0x1000>;
225*c66ec88fSEmmanuel Vadot		reboot-offset = <0x4>;
226*c66ec88fSEmmanuel Vadot	};
227*c66ec88fSEmmanuel Vadot
228*c66ec88fSEmmanuel Vadot-----------------------------------------------------------------------
229*c66ec88fSEmmanuel VadotHisilicon HiP05/HiP06 PCIe-SAS sub system controller
230*c66ec88fSEmmanuel Vadot
231*c66ec88fSEmmanuel VadotRequired properties:
232*c66ec88fSEmmanuel Vadot- compatible : "hisilicon,pcie-sas-subctrl", "syscon";
233*c66ec88fSEmmanuel Vadot- reg : Register address and size
234*c66ec88fSEmmanuel Vadot
235*c66ec88fSEmmanuel VadotThe PCIe-SAS sub system controller is shared by PCIe and SAS controllers in
236*c66ec88fSEmmanuel VadotHiP05 or HiP06 Soc to implement some basic configurations.
237*c66ec88fSEmmanuel Vadot
238*c66ec88fSEmmanuel VadotExample:
239*c66ec88fSEmmanuel Vadot	/* for HiP05 PCIe-SAS sub system */
240*c66ec88fSEmmanuel Vadot	pcie_sas: system_controller@b0000000 {
241*c66ec88fSEmmanuel Vadot		compatible = "hisilicon,pcie-sas-subctrl", "syscon";
242*c66ec88fSEmmanuel Vadot		reg = <0xb0000000 0x10000>;
243*c66ec88fSEmmanuel Vadot	};
244*c66ec88fSEmmanuel Vadot
245*c66ec88fSEmmanuel VadotHisilicon HiP05/HiP06 PERI sub system controller
246*c66ec88fSEmmanuel Vadot
247*c66ec88fSEmmanuel VadotRequired properties:
248*c66ec88fSEmmanuel Vadot- compatible : "hisilicon,peri-subctrl", "syscon";
249*c66ec88fSEmmanuel Vadot- reg : Register address and size
250*c66ec88fSEmmanuel Vadot
251*c66ec88fSEmmanuel VadotThe PERI sub system controller is shared by peripheral controllers in
252*c66ec88fSEmmanuel VadotHiP05 or HiP06 Soc to implement some basic configurations. The peripheral
253*c66ec88fSEmmanuel Vadotcontrollers include mdio, ddr, iic, uart, timer and so on.
254*c66ec88fSEmmanuel Vadot
255*c66ec88fSEmmanuel VadotExample:
256*c66ec88fSEmmanuel Vadot	/* for HiP05 sub peri system */
257*c66ec88fSEmmanuel Vadot	peri_c_subctrl: syscon@80000000 {
258*c66ec88fSEmmanuel Vadot		compatible = "hisilicon,peri-subctrl", "syscon";
259*c66ec88fSEmmanuel Vadot		reg = <0x0 0x80000000 0x0 0x10000>;
260*c66ec88fSEmmanuel Vadot	};
261*c66ec88fSEmmanuel Vadot
262*c66ec88fSEmmanuel VadotHisilicon HiP05/HiP06 DSA sub system controller
263*c66ec88fSEmmanuel Vadot
264*c66ec88fSEmmanuel VadotRequired properties:
265*c66ec88fSEmmanuel Vadot- compatible : "hisilicon,dsa-subctrl", "syscon";
266*c66ec88fSEmmanuel Vadot- reg : Register address and size
267*c66ec88fSEmmanuel Vadot
268*c66ec88fSEmmanuel VadotThe DSA sub system controller is shared by peripheral controllers in
269*c66ec88fSEmmanuel VadotHiP05 or HiP06 Soc to implement some basic configurations.
270*c66ec88fSEmmanuel Vadot
271*c66ec88fSEmmanuel VadotExample:
272*c66ec88fSEmmanuel Vadot	/* for HiP05 dsa sub system */
273*c66ec88fSEmmanuel Vadot	pcie_sas: system_controller@a0000000 {
274*c66ec88fSEmmanuel Vadot		compatible = "hisilicon,dsa-subctrl", "syscon";
275*c66ec88fSEmmanuel Vadot		reg = <0xa0000000 0x10000>;
276*c66ec88fSEmmanuel Vadot	};
277*c66ec88fSEmmanuel Vadot
278*c66ec88fSEmmanuel Vadot-----------------------------------------------------------------------
279*c66ec88fSEmmanuel VadotHisilicon CPU controller
280*c66ec88fSEmmanuel Vadot
281*c66ec88fSEmmanuel VadotRequired properties:
282*c66ec88fSEmmanuel Vadot- compatible : "hisilicon,cpuctrl"
283*c66ec88fSEmmanuel Vadot- reg : Register address and size
284*c66ec88fSEmmanuel Vadot
285*c66ec88fSEmmanuel VadotThe clock registers and power registers of secondary cores are defined
286*c66ec88fSEmmanuel Vadotin CPU controller, especially in HIX5HD2 SoC.
287*c66ec88fSEmmanuel Vadot
288*c66ec88fSEmmanuel Vadot-----------------------------------------------------------------------
289*c66ec88fSEmmanuel VadotPCTRL: Peripheral misc control register
290*c66ec88fSEmmanuel Vadot
291*c66ec88fSEmmanuel VadotRequired Properties:
292*c66ec88fSEmmanuel Vadot- compatible: "hisilicon,pctrl"
293*c66ec88fSEmmanuel Vadot- reg: Address and size of pctrl.
294*c66ec88fSEmmanuel Vadot
295*c66ec88fSEmmanuel VadotExample:
296*c66ec88fSEmmanuel Vadot
297*c66ec88fSEmmanuel Vadot	/* for Hi3620 */
298*c66ec88fSEmmanuel Vadot	pctrl: pctrl@fca09000 {
299*c66ec88fSEmmanuel Vadot		compatible = "hisilicon,pctrl";
300*c66ec88fSEmmanuel Vadot		reg = <0xfca09000 0x1000>;
301*c66ec88fSEmmanuel Vadot	};
302*c66ec88fSEmmanuel Vadot
303*c66ec88fSEmmanuel Vadot-----------------------------------------------------------------------
304*c66ec88fSEmmanuel VadotFabric:
305*c66ec88fSEmmanuel Vadot
306*c66ec88fSEmmanuel VadotRequired Properties:
307*c66ec88fSEmmanuel Vadot- compatible: "hisilicon,hip04-fabric";
308*c66ec88fSEmmanuel Vadot- reg: Address and size of Fabric
309*c66ec88fSEmmanuel Vadot
310*c66ec88fSEmmanuel Vadot-----------------------------------------------------------------------
311*c66ec88fSEmmanuel VadotBootwrapper boot method (software protocol on SMP):
312*c66ec88fSEmmanuel Vadot
313*c66ec88fSEmmanuel VadotRequired Properties:
314*c66ec88fSEmmanuel Vadot- compatible: "hisilicon,hip04-bootwrapper";
315*c66ec88fSEmmanuel Vadot- boot-method: Address and size of boot method.
316*c66ec88fSEmmanuel Vadot  [0]: bootwrapper physical address
317*c66ec88fSEmmanuel Vadot  [1]: bootwrapper size
318*c66ec88fSEmmanuel Vadot  [2]: relocation physical address
319*c66ec88fSEmmanuel Vadot  [3]: relocation size
320