xref: /OK3568_Linux_fs/kernel/scripts/dtc/include-prefixes/arm64/sprd/sc9836.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/*
2*4882a593Smuzhiyun * Spreadtrum SC9836 SoC DTS file
3*4882a593Smuzhiyun *
4*4882a593Smuzhiyun * Copyright (C) 2014, Spreadtrum Communications Inc.
5*4882a593Smuzhiyun *
6*4882a593Smuzhiyun * This file is licensed under a dual GPLv2 or X11 license.
7*4882a593Smuzhiyun */
8*4882a593Smuzhiyun
9*4882a593Smuzhiyun#include "sharkl64.dtsi"
10*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h>
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun/ {
13*4882a593Smuzhiyun	compatible = "sprd,sc9836";
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun	cpus {
16*4882a593Smuzhiyun		#address-cells = <2>;
17*4882a593Smuzhiyun		#size-cells = <0>;
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun		cpu0: cpu@0 {
20*4882a593Smuzhiyun			device_type = "cpu";
21*4882a593Smuzhiyun			compatible = "arm,cortex-a53";
22*4882a593Smuzhiyun			reg = <0x0 0x0>;
23*4882a593Smuzhiyun			enable-method = "psci";
24*4882a593Smuzhiyun		};
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun		cpu1: cpu@1 {
27*4882a593Smuzhiyun			device_type = "cpu";
28*4882a593Smuzhiyun			compatible = "arm,cortex-a53";
29*4882a593Smuzhiyun			reg = <0x0 0x1>;
30*4882a593Smuzhiyun			enable-method = "psci";
31*4882a593Smuzhiyun		};
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun		cpu2: cpu@2 {
34*4882a593Smuzhiyun			device_type = "cpu";
35*4882a593Smuzhiyun			compatible = "arm,cortex-a53";
36*4882a593Smuzhiyun			reg = <0x0 0x2>;
37*4882a593Smuzhiyun			enable-method = "psci";
38*4882a593Smuzhiyun		};
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun		cpu3: cpu@3 {
41*4882a593Smuzhiyun			device_type = "cpu";
42*4882a593Smuzhiyun			compatible = "arm,cortex-a53";
43*4882a593Smuzhiyun			reg = <0x0 0x3>;
44*4882a593Smuzhiyun			enable-method = "psci";
45*4882a593Smuzhiyun		};
46*4882a593Smuzhiyun	};
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun	etf@10003000 {
49*4882a593Smuzhiyun		compatible = "arm,coresight-tmc", "arm,primecell";
50*4882a593Smuzhiyun		reg = <0 0x10003000 0 0x1000>;
51*4882a593Smuzhiyun		clocks = <&clk26mhz>;
52*4882a593Smuzhiyun		clock-names = "apb_pclk";
53*4882a593Smuzhiyun		in-ports {
54*4882a593Smuzhiyun			port {
55*4882a593Smuzhiyun				etf_in: endpoint {
56*4882a593Smuzhiyun					remote-endpoint = <&funnel_out_port0>;
57*4882a593Smuzhiyun				};
58*4882a593Smuzhiyun			};
59*4882a593Smuzhiyun		};
60*4882a593Smuzhiyun	};
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun	funnel@10001000 {
63*4882a593Smuzhiyun		compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
64*4882a593Smuzhiyun		reg = <0 0x10001000 0 0x1000>;
65*4882a593Smuzhiyun		clocks = <&clk26mhz>;
66*4882a593Smuzhiyun		clock-names = "apb_pclk";
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun		out-ports {
69*4882a593Smuzhiyun			port {
70*4882a593Smuzhiyun				funnel_out_port0: endpoint {
71*4882a593Smuzhiyun					remote-endpoint = <&etf_in>;
72*4882a593Smuzhiyun				};
73*4882a593Smuzhiyun			};
74*4882a593Smuzhiyun		};
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun		in-ports {
77*4882a593Smuzhiyun			#address-cells = <1>;
78*4882a593Smuzhiyun			#size-cells = <0>;
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun			port@0 {
81*4882a593Smuzhiyun				reg = <0>;
82*4882a593Smuzhiyun				funnel_in_port0: endpoint {
83*4882a593Smuzhiyun					remote-endpoint = <&etm0_out>;
84*4882a593Smuzhiyun				};
85*4882a593Smuzhiyun			};
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun			port@1 {
88*4882a593Smuzhiyun				reg = <1>;
89*4882a593Smuzhiyun				funnel_in_port1: endpoint {
90*4882a593Smuzhiyun					remote-endpoint = <&etm1_out>;
91*4882a593Smuzhiyun				};
92*4882a593Smuzhiyun			};
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun			port@2 {
95*4882a593Smuzhiyun				reg = <2>;
96*4882a593Smuzhiyun				funnel_in_port2: endpoint {
97*4882a593Smuzhiyun					remote-endpoint = <&etm2_out>;
98*4882a593Smuzhiyun				};
99*4882a593Smuzhiyun			};
100*4882a593Smuzhiyun
101*4882a593Smuzhiyun			port@3 {
102*4882a593Smuzhiyun				reg = <3>;
103*4882a593Smuzhiyun				funnel_in_port3: endpoint {
104*4882a593Smuzhiyun					remote-endpoint = <&etm3_out>;
105*4882a593Smuzhiyun				};
106*4882a593Smuzhiyun			};
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun			port@4 {
109*4882a593Smuzhiyun				reg = <4>;
110*4882a593Smuzhiyun				funnel_in_port4: endpoint {
111*4882a593Smuzhiyun					remote-endpoint = <&stm_out>;
112*4882a593Smuzhiyun				};
113*4882a593Smuzhiyun			};
114*4882a593Smuzhiyun			/* Other input ports aren't connected to anyone */
115*4882a593Smuzhiyun		};
116*4882a593Smuzhiyun	};
117*4882a593Smuzhiyun
118*4882a593Smuzhiyun	etm@10440000 {
119*4882a593Smuzhiyun		compatible = "arm,coresight-etm4x", "arm,primecell";
120*4882a593Smuzhiyun		reg = <0 0x10440000 0 0x1000>;
121*4882a593Smuzhiyun
122*4882a593Smuzhiyun		cpu = <&cpu0>;
123*4882a593Smuzhiyun		clocks = <&clk26mhz>;
124*4882a593Smuzhiyun		clock-names = "apb_pclk";
125*4882a593Smuzhiyun		out-ports {
126*4882a593Smuzhiyun			port {
127*4882a593Smuzhiyun				etm0_out: endpoint {
128*4882a593Smuzhiyun					remote-endpoint = <&funnel_in_port0>;
129*4882a593Smuzhiyun				};
130*4882a593Smuzhiyun			};
131*4882a593Smuzhiyun		};
132*4882a593Smuzhiyun	};
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun	etm@10540000 {
135*4882a593Smuzhiyun		compatible = "arm,coresight-etm4x", "arm,primecell";
136*4882a593Smuzhiyun		reg = <0 0x10540000 0 0x1000>;
137*4882a593Smuzhiyun
138*4882a593Smuzhiyun		cpu = <&cpu1>;
139*4882a593Smuzhiyun		clocks = <&clk26mhz>;
140*4882a593Smuzhiyun		clock-names = "apb_pclk";
141*4882a593Smuzhiyun		out-ports {
142*4882a593Smuzhiyun			port {
143*4882a593Smuzhiyun				etm1_out: endpoint {
144*4882a593Smuzhiyun					remote-endpoint = <&funnel_in_port1>;
145*4882a593Smuzhiyun				};
146*4882a593Smuzhiyun			};
147*4882a593Smuzhiyun		};
148*4882a593Smuzhiyun	};
149*4882a593Smuzhiyun
150*4882a593Smuzhiyun	etm@10640000 {
151*4882a593Smuzhiyun		compatible = "arm,coresight-etm4x", "arm,primecell";
152*4882a593Smuzhiyun		reg = <0 0x10640000 0 0x1000>;
153*4882a593Smuzhiyun
154*4882a593Smuzhiyun		cpu = <&cpu2>;
155*4882a593Smuzhiyun		clocks = <&clk26mhz>;
156*4882a593Smuzhiyun		clock-names = "apb_pclk";
157*4882a593Smuzhiyun		out-ports {
158*4882a593Smuzhiyun			port {
159*4882a593Smuzhiyun				etm2_out: endpoint {
160*4882a593Smuzhiyun					remote-endpoint = <&funnel_in_port2>;
161*4882a593Smuzhiyun				};
162*4882a593Smuzhiyun			};
163*4882a593Smuzhiyun		};
164*4882a593Smuzhiyun	};
165*4882a593Smuzhiyun
166*4882a593Smuzhiyun	etm@10740000 {
167*4882a593Smuzhiyun		compatible = "arm,coresight-etm4x", "arm,primecell";
168*4882a593Smuzhiyun		reg = <0 0x10740000 0 0x1000>;
169*4882a593Smuzhiyun
170*4882a593Smuzhiyun		cpu = <&cpu3>;
171*4882a593Smuzhiyun		clocks = <&clk26mhz>;
172*4882a593Smuzhiyun		clock-names = "apb_pclk";
173*4882a593Smuzhiyun		out-ports {
174*4882a593Smuzhiyun			port {
175*4882a593Smuzhiyun				etm3_out: endpoint {
176*4882a593Smuzhiyun					remote-endpoint = <&funnel_in_port3>;
177*4882a593Smuzhiyun				};
178*4882a593Smuzhiyun			};
179*4882a593Smuzhiyun		};
180*4882a593Smuzhiyun	};
181*4882a593Smuzhiyun
182*4882a593Smuzhiyun	stm@10006000 {
183*4882a593Smuzhiyun		compatible = "arm,coresight-stm", "arm,primecell";
184*4882a593Smuzhiyun		reg = <0 0x10006000 0 0x1000>,
185*4882a593Smuzhiyun		      <0 0x01000000 0 0x180000>;
186*4882a593Smuzhiyun		reg-names = "stm-base", "stm-stimulus-base";
187*4882a593Smuzhiyun		clocks = <&clk26mhz>;
188*4882a593Smuzhiyun		clock-names = "apb_pclk";
189*4882a593Smuzhiyun		out-ports {
190*4882a593Smuzhiyun			port {
191*4882a593Smuzhiyun				stm_out: endpoint {
192*4882a593Smuzhiyun					remote-endpoint = <&funnel_in_port4>;
193*4882a593Smuzhiyun				};
194*4882a593Smuzhiyun			};
195*4882a593Smuzhiyun		};
196*4882a593Smuzhiyun	};
197*4882a593Smuzhiyun
198*4882a593Smuzhiyun	gic: interrupt-controller@12001000 {
199*4882a593Smuzhiyun		compatible = "arm,gic-400";
200*4882a593Smuzhiyun		reg = <0 0x12001000 0 0x1000>,
201*4882a593Smuzhiyun		      <0 0x12002000 0 0x2000>,
202*4882a593Smuzhiyun		      <0 0x12004000 0 0x2000>,
203*4882a593Smuzhiyun		      <0 0x12006000 0 0x2000>;
204*4882a593Smuzhiyun		#interrupt-cells = <3>;
205*4882a593Smuzhiyun		interrupt-controller;
206*4882a593Smuzhiyun		interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
207*4882a593Smuzhiyun	};
208*4882a593Smuzhiyun
209*4882a593Smuzhiyun	psci {
210*4882a593Smuzhiyun		compatible	= "arm,psci";
211*4882a593Smuzhiyun		method		= "smc";
212*4882a593Smuzhiyun		cpu_on		= <0xc4000003>;
213*4882a593Smuzhiyun		cpu_off		= <0x84000002>;
214*4882a593Smuzhiyun		cpu_suspend	= <0xc4000001>;
215*4882a593Smuzhiyun	};
216*4882a593Smuzhiyun
217*4882a593Smuzhiyun	timer {
218*4882a593Smuzhiyun		compatible = "arm,armv8-timer";
219*4882a593Smuzhiyun		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
220*4882a593Smuzhiyun			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
221*4882a593Smuzhiyun			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
222*4882a593Smuzhiyun			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
223*4882a593Smuzhiyun	};
224*4882a593Smuzhiyun};
225