1/dts-v1/;
2
3#include <dt-bindings/interrupt-controller/irq.h>
4#include <dt-bindings/clock/qcom,gcc-msm8974.h>
5#include "skeleton.dtsi"
6
7/ {
8	model = "Qualcomm MSM8974";
9	compatible = "qcom,msm8974";
10	interrupt-parent = <&intc>;
11
12	cpus {
13		#address-cells = <1>;
14		#size-cells = <0>;
15		interrupts = <1 9 0xf04>;
16
17		cpu@0 {
18			compatible = "qcom,krait";
19			enable-method = "qcom,kpss-acc-v2";
20			device_type = "cpu";
21			reg = <0>;
22			next-level-cache = <&L2>;
23			qcom,acc = <&acc0>;
24			qcom,saw = <&saw0>;
25			cpu-idle-states = <&CPU_SPC>;
26		};
27
28		cpu@1 {
29			compatible = "qcom,krait";
30			enable-method = "qcom,kpss-acc-v2";
31			device_type = "cpu";
32			reg = <1>;
33			next-level-cache = <&L2>;
34			qcom,acc = <&acc1>;
35			qcom,saw = <&saw1>;
36			cpu-idle-states = <&CPU_SPC>;
37		};
38
39		cpu@2 {
40			compatible = "qcom,krait";
41			enable-method = "qcom,kpss-acc-v2";
42			device_type = "cpu";
43			reg = <2>;
44			next-level-cache = <&L2>;
45			qcom,acc = <&acc2>;
46			qcom,saw = <&saw2>;
47			cpu-idle-states = <&CPU_SPC>;
48		};
49
50		cpu@3 {
51			compatible = "qcom,krait";
52			enable-method = "qcom,kpss-acc-v2";
53			device_type = "cpu";
54			reg = <3>;
55			next-level-cache = <&L2>;
56			qcom,acc = <&acc3>;
57			qcom,saw = <&saw3>;
58			cpu-idle-states = <&CPU_SPC>;
59		};
60
61		L2: l2-cache {
62			compatible = "cache";
63			cache-level = <2>;
64			qcom,saw = <&saw_l2>;
65		};
66
67		idle-states {
68			CPU_SPC: spc {
69				compatible = "qcom,idle-state-spc",
70						"arm,idle-state";
71				entry-latency-us = <150>;
72				exit-latency-us = <200>;
73				min-residency-us = <2000>;
74			};
75		};
76	};
77
78	cpu-pmu {
79		compatible = "qcom,krait-pmu";
80		interrupts = <1 7 0xf04>;
81	};
82
83	timer {
84		compatible = "arm,armv7-timer";
85		interrupts = <1 2 0xf08>,
86			     <1 3 0xf08>,
87			     <1 4 0xf08>,
88			     <1 1 0xf08>;
89		clock-frequency = <19200000>;
90	};
91
92	soc: soc {
93		#address-cells = <1>;
94		#size-cells = <1>;
95		ranges;
96		compatible = "simple-bus";
97
98		intc: interrupt-controller@f9000000 {
99			compatible = "qcom,msm-qgic2";
100			interrupt-controller;
101			#interrupt-cells = <3>;
102			reg = <0xf9000000 0x1000>,
103			      <0xf9002000 0x1000>;
104		};
105
106		timer@f9020000 {
107			#address-cells = <1>;
108			#size-cells = <1>;
109			ranges;
110			compatible = "arm,armv7-timer-mem";
111			reg = <0xf9020000 0x1000>;
112			clock-frequency = <19200000>;
113
114			frame@f9021000 {
115				frame-number = <0>;
116				interrupts = <0 8 0x4>,
117					     <0 7 0x4>;
118				reg = <0xf9021000 0x1000>,
119				      <0xf9022000 0x1000>;
120			};
121
122			frame@f9023000 {
123				frame-number = <1>;
124				interrupts = <0 9 0x4>;
125				reg = <0xf9023000 0x1000>;
126				status = "disabled";
127			};
128
129			frame@f9024000 {
130				frame-number = <2>;
131				interrupts = <0 10 0x4>;
132				reg = <0xf9024000 0x1000>;
133				status = "disabled";
134			};
135
136			frame@f9025000 {
137				frame-number = <3>;
138				interrupts = <0 11 0x4>;
139				reg = <0xf9025000 0x1000>;
140				status = "disabled";
141			};
142
143			frame@f9026000 {
144				frame-number = <4>;
145				interrupts = <0 12 0x4>;
146				reg = <0xf9026000 0x1000>;
147				status = "disabled";
148			};
149
150			frame@f9027000 {
151				frame-number = <5>;
152				interrupts = <0 13 0x4>;
153				reg = <0xf9027000 0x1000>;
154				status = "disabled";
155			};
156
157			frame@f9028000 {
158				frame-number = <6>;
159				interrupts = <0 14 0x4>;
160				reg = <0xf9028000 0x1000>;
161				status = "disabled";
162			};
163		};
164
165		saw0: power-controller@f9089000 {
166			compatible = "qcom,msm8974-saw2-v2.1-cpu", "qcom,saw2";
167			reg = <0xf9089000 0x1000>, <0xf9009000 0x1000>;
168		};
169
170		saw1: power-controller@f9099000 {
171			compatible = "qcom,msm8974-saw2-v2.1-cpu", "qcom,saw2";
172			reg = <0xf9099000 0x1000>, <0xf9009000 0x1000>;
173		};
174
175		saw2: power-controller@f90a9000 {
176			compatible = "qcom,msm8974-saw2-v2.1-cpu", "qcom,saw2";
177			reg = <0xf90a9000 0x1000>, <0xf9009000 0x1000>;
178		};
179
180		saw3: power-controller@f90b9000 {
181			compatible = "qcom,msm8974-saw2-v2.1-cpu", "qcom,saw2";
182			reg = <0xf90b9000 0x1000>, <0xf9009000 0x1000>;
183		};
184
185		saw_l2: power-controller@f9012000 {
186			compatible = "qcom,saw2";
187			reg = <0xf9012000 0x1000>;
188			regulator;
189		};
190
191		acc0: clock-controller@f9088000 {
192			compatible = "qcom,kpss-acc-v2";
193			reg = <0xf9088000 0x1000>, <0xf9008000 0x1000>;
194		};
195
196		acc1: clock-controller@f9098000 {
197			compatible = "qcom,kpss-acc-v2";
198			reg = <0xf9098000 0x1000>, <0xf9008000 0x1000>;
199		};
200
201		acc2: clock-controller@f90a8000 {
202			compatible = "qcom,kpss-acc-v2";
203			reg = <0xf90a8000 0x1000>, <0xf9008000 0x1000>;
204		};
205
206		acc3: clock-controller@f90b8000 {
207			compatible = "qcom,kpss-acc-v2";
208			reg = <0xf90b8000 0x1000>, <0xf9008000 0x1000>;
209		};
210
211		restart@fc4ab000 {
212			compatible = "qcom,pshold";
213			reg = <0xfc4ab000 0x4>;
214		};
215
216		gcc: clock-controller@fc400000 {
217			compatible = "qcom,gcc-msm8974";
218			#clock-cells = <1>;
219			#reset-cells = <1>;
220			reg = <0xfc400000 0x4000>;
221		};
222
223		mmcc: clock-controller@fd8c0000 {
224			compatible = "qcom,mmcc-msm8974";
225			#clock-cells = <1>;
226			#reset-cells = <1>;
227			reg = <0xfd8c0000 0x6000>;
228		};
229
230		serial@f991e000 {
231			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
232			reg = <0xf991e000 0x1000>;
233			interrupts = <0 108 0x0>;
234			clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
235			clock-names = "core", "iface";
236			status = "disabled";
237		};
238
239		sdhci@f9824900 {
240			compatible = "qcom,sdhci-msm-v4";
241			reg = <0xf9824900 0x11c>, <0xf9824000 0x800>;
242			reg-names = "hc_mem", "core_mem";
243			interrupts = <0 123 0>, <0 138 0>;
244			interrupt-names = "hc_irq", "pwr_irq";
245			clocks = <&gcc GCC_SDCC1_APPS_CLK>, <&gcc GCC_SDCC1_AHB_CLK>;
246			clock-names = "core", "iface";
247			status = "disabled";
248		};
249
250		sdhci@f98a4900 {
251			compatible = "qcom,sdhci-msm-v4";
252			reg = <0xf98a4900 0x11c>, <0xf98a4000 0x800>;
253			reg-names = "hc_mem", "core_mem";
254			interrupts = <0 125 0>, <0 221 0>;
255			interrupt-names = "hc_irq", "pwr_irq";
256			clocks = <&gcc GCC_SDCC2_APPS_CLK>, <&gcc GCC_SDCC2_AHB_CLK>;
257			clock-names = "core", "iface";
258			status = "disabled";
259		};
260
261		rng@f9bff000 {
262			compatible = "qcom,prng";
263			reg = <0xf9bff000 0x200>;
264			clocks = <&gcc GCC_PRNG_AHB_CLK>;
265			clock-names = "core";
266		};
267
268		msmgpio: pinctrl@fd510000 {
269			compatible = "qcom,msm8974-pinctrl";
270			reg = <0xfd510000 0x4000>;
271			gpio-controller;
272			#gpio-cells = <2>;
273			interrupt-controller;
274			#interrupt-cells = <2>;
275			interrupts = <0 208 0>;
276		};
277
278		blsp_i2c11: i2c@f9967000 {
279			status = "disable";
280			compatible = "qcom,i2c-qup-v2.1.1";
281			reg = <0xf9967000 0x1000>;
282			interrupts = <0 105 IRQ_TYPE_NONE>;
283			clocks = <&gcc GCC_BLSP2_QUP5_I2C_APPS_CLK>, <&gcc GCC_BLSP2_AHB_CLK>;
284			clock-names = "core", "iface";
285			#address-cells = <1>;
286			#size-cells = <0>;
287		};
288
289		spmi_bus: spmi@fc4cf000 {
290			compatible = "qcom,spmi-pmic-arb";
291			reg-names = "core", "intr", "cnfg";
292			reg = <0xfc4cf000 0x1000>,
293			      <0xfc4cb000 0x1000>,
294			      <0xfc4ca000 0x1000>;
295			interrupt-names = "periph_irq";
296			interrupts = <0 190 0>;
297			qcom,ee = <0>;
298			qcom,channel = <0>;
299			#address-cells = <2>;
300			#size-cells = <0>;
301			interrupt-controller;
302			#interrupt-cells = <4>;
303		};
304	};
305};
306