1 // SPDX-License-Identifier: GPL-2.0
4 #include <dt-bindings/interrupt-controller/irq.h>
5 #include <dt-bindings/interrupt-controller/arm-gic.h>
6 #include <dt-bindings/clock/qcom,gcc-msm8660.h>
7 #include <dt-bindings/soc/qcom,gsbi.h>
12 model = "Qualcomm MSM8660";
13 compatible = "qcom,msm8660";
14 interrupt-parent = <&intc>;
21 compatible = "qcom,scorpion";
22 enable-method = "qcom,gcc-msm8660";
25 next-level-cache = <&L2>;
29 compatible = "qcom,scorpion";
30 enable-method = "qcom,gcc-msm8660";
33 next-level-cache = <&L2>;
44 device_type = "memory";
49 compatible = "qcom,scorpion-mp-pmu";
50 interrupts = <1 9 0x304>;
54 cxo_board: cxo-board-clk {
55 compatible = "fixed-clock";
57 clock-frequency = <19200000>;
58 clock-output-names = "cxo_board";
61 pxo_board: pxo-board-clk {
62 compatible = "fixed-clock";
64 clock-frequency = <27000000>;
65 clock-output-names = "pxo_board";
69 compatible = "fixed-clock";
71 clock-frequency = <32768>;
72 clock-output-names = "sleep_clk";
77 * These channels from the ADC are simply hardware monitors.
78 * That is why the ADC is referred to as "HKADC" - HouseKeeping
82 compatible = "iio-hwmon";
83 io-channels = <&xoadc 0x00 0x01>, /* Battery */
84 <&xoadc 0x00 0x02>, /* DC in (charger) */
85 <&xoadc 0x00 0x04>, /* VPH the main system voltage */
86 <&xoadc 0x00 0x0b>, /* Die temperature */
87 <&xoadc 0x00 0x0c>, /* Reference voltage 1.25V */
88 <&xoadc 0x00 0x0d>, /* Reference voltage 0.625V */
89 <&xoadc 0x00 0x0e>; /* Reference voltage 0.325V */
96 compatible = "simple-bus";
98 intc: interrupt-controller@2080000 {
99 compatible = "qcom,msm-8660-qgic";
100 interrupt-controller;
101 #interrupt-cells = <3>;
102 reg = < 0x02080000 0x1000 >,
103 < 0x02081000 0x1000 >;
107 compatible = "qcom,scss-timer", "qcom,msm-timer";
108 interrupts = <1 0 0x301>,
111 reg = <0x02000000 0x100>;
112 clock-frequency = <27000000>,
114 cpu-offset = <0x40000>;
117 tlmm: pinctrl@800000 {
118 compatible = "qcom,msm8660-pinctrl";
119 reg = <0x800000 0x4000>;
122 gpio-ranges = <&tlmm 0 0 173>;
124 interrupts = <0 16 0x4>;
125 interrupt-controller;
126 #interrupt-cells = <2>;
130 gcc: clock-controller@900000 {
131 compatible = "qcom,gcc-msm8660";
133 #power-domain-cells = <1>;
135 reg = <0x900000 0x4000>;
136 clocks = <&pxo_board>, <&cxo_board>;
137 clock-names = "pxo", "cxo";
140 gsbi1: gsbi@16000000 {
141 compatible = "qcom,gsbi-v1.0.0";
143 reg = <0x16000000 0x100>;
144 clocks = <&gcc GSBI1_H_CLK>;
145 clock-names = "iface";
146 #address-cells = <1>;
150 syscon-tcsr = <&tcsr>;
154 gsbi1_spi: spi@16080000 {
155 compatible = "qcom,spi-qup-v1.1.1";
156 reg = <0x16080000 0x1000>;
157 interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
158 clocks = <&gcc GSBI1_QUP_CLK>, <&gcc GSBI1_H_CLK>;
159 clock-names = "core", "iface";
160 #address-cells = <1>;
166 gsbi3: gsbi@16200000 {
167 compatible = "qcom,gsbi-v1.0.0";
169 reg = <0x16200000 0x100>;
170 clocks = <&gcc GSBI3_H_CLK>;
171 clock-names = "iface";
172 #address-cells = <1>;
176 syscon-tcsr = <&tcsr>;
179 gsbi3_i2c: i2c@16280000 {
180 compatible = "qcom,i2c-qup-v1.1.1";
181 reg = <0x16280000 0x1000>;
182 interrupts = <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>;
183 clocks = <&gcc GSBI3_QUP_CLK>, <&gcc GSBI3_H_CLK>;
184 clock-names = "core", "iface";
185 #address-cells = <1>;
191 gsbi6: gsbi@16500000 {
192 compatible = "qcom,gsbi-v1.0.0";
194 reg = <0x16500000 0x100>;
195 clocks = <&gcc GSBI6_H_CLK>;
196 clock-names = "iface";
197 #address-cells = <1>;
202 syscon-tcsr = <&tcsr>;
204 gsbi6_serial: serial@16540000 {
205 compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
206 reg = <0x16540000 0x1000>,
208 interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
209 clocks = <&gcc GSBI6_UART_CLK>, <&gcc GSBI6_H_CLK>;
210 clock-names = "core", "iface";
214 gsbi6_i2c: i2c@16580000 {
215 compatible = "qcom,i2c-qup-v1.1.1";
216 reg = <0x16580000 0x1000>;
217 interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
218 clocks = <&gcc GSBI6_QUP_CLK>, <&gcc GSBI6_H_CLK>;
219 clock-names = "core", "iface";
220 #address-cells = <1>;
226 gsbi7: gsbi@16600000 {
227 compatible = "qcom,gsbi-v1.0.0";
229 reg = <0x16600000 0x100>;
230 clocks = <&gcc GSBI7_H_CLK>;
231 clock-names = "iface";
232 #address-cells = <1>;
237 syscon-tcsr = <&tcsr>;
239 gsbi7_serial: serial@16640000 {
240 compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
241 reg = <0x16640000 0x1000>,
243 interrupts = <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
244 clocks = <&gcc GSBI7_UART_CLK>, <&gcc GSBI7_H_CLK>;
245 clock-names = "core", "iface";
249 gsbi7_i2c: i2c@16680000 {
250 compatible = "qcom,i2c-qup-v1.1.1";
251 reg = <0x16680000 0x1000>;
252 interrupts = <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>;
253 clocks = <&gcc GSBI7_QUP_CLK>, <&gcc GSBI7_H_CLK>;
254 clock-names = "core", "iface";
255 #address-cells = <1>;
261 gsbi8: gsbi@19800000 {
262 compatible = "qcom,gsbi-v1.0.0";
264 reg = <0x19800000 0x100>;
265 clocks = <&gcc GSBI8_H_CLK>;
266 clock-names = "iface";
267 #address-cells = <1>;
271 syscon-tcsr = <&tcsr>;
274 gsbi8_i2c: i2c@19880000 {
275 compatible = "qcom,i2c-qup-v1.1.1";
276 reg = <0x19880000 0x1000>;
277 interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>;
278 clocks = <&gcc GSBI8_QUP_CLK>, <&gcc GSBI8_H_CLK>;
279 clock-names = "core", "iface";
280 #address-cells = <1>;
286 gsbi12: gsbi@19c00000 {
287 compatible = "qcom,gsbi-v1.0.0";
289 reg = <0x19c00000 0x100>;
290 clocks = <&gcc GSBI12_H_CLK>;
291 clock-names = "iface";
292 #address-cells = <1>;
296 syscon-tcsr = <&tcsr>;
298 gsbi12_serial: serial@19c40000 {
299 compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
300 reg = <0x19c40000 0x1000>,
302 interrupts = <0 195 IRQ_TYPE_LEVEL_HIGH>;
303 clocks = <&gcc GSBI12_UART_CLK>, <&gcc GSBI12_H_CLK>;
304 clock-names = "core", "iface";
308 gsbi12_i2c: i2c@19c80000 {
309 compatible = "qcom,i2c-qup-v1.1.1";
310 reg = <0x19c80000 0x1000>;
311 interrupts = <0 196 IRQ_TYPE_LEVEL_HIGH>;
312 clocks = <&gcc GSBI12_QUP_CLK>, <&gcc GSBI12_H_CLK>;
313 clock-names = "core", "iface";
314 #address-cells = <1>;
320 ebi2: external-bus@1a100000 {
321 compatible = "qcom,msm8660-ebi2";
322 #address-cells = <2>;
324 ranges = <0 0x0 0x1a800000 0x00800000>,
325 <1 0x0 0x1b000000 0x00800000>,
326 <2 0x0 0x1b800000 0x00800000>,
327 <3 0x0 0x1d000000 0x08000000>,
328 <4 0x0 0x1c800000 0x00800000>,
329 <5 0x0 0x1c000000 0x00800000>;
330 reg = <0x1a100000 0x1000>, <0x1a110000 0x1000>;
331 reg-names = "ebi2", "xmem";
332 clocks = <&gcc EBI2_2X_CLK>, <&gcc EBI2_CLK>;
333 clock-names = "ebi2x", "ebi2";
338 compatible = "qcom,ssbi";
339 reg = <0x500000 0x1000>;
340 qcom,controller-type = "pmic-arbiter";
343 compatible = "qcom,pm8058";
344 interrupt-parent = <&tlmm>;
346 #interrupt-cells = <2>;
347 interrupt-controller;
348 #address-cells = <1>;
351 pm8058_gpio: gpio@150 {
352 compatible = "qcom,pm8058-gpio",
355 interrupt-controller;
356 #interrupt-cells = <2>;
358 gpio-ranges = <&pm8058_gpio 0 0 44>;
363 pm8058_mpps: mpps@50 {
364 compatible = "qcom,pm8058-mpp",
369 gpio-ranges = <&pm8058_mpps 0 0 12>;
370 interrupt-controller;
371 #interrupt-cells = <2>;
375 compatible = "qcom,pm8058-pwrkey";
377 interrupt-parent = <&pm8058>;
378 interrupts = <50 1>, <51 1>;
383 pm8058_keypad: keypad@148 {
384 compatible = "qcom,pm8058-keypad";
386 interrupt-parent = <&pm8058>;
387 interrupts = <74 1>, <75 1>;
394 compatible = "qcom,pm8058-adc";
396 interrupts-extended = <&pm8058 76 IRQ_TYPE_EDGE_RISING>;
397 #address-cells = <2>;
399 #io-channel-cells = <2>;
401 vcoin: adc-channel@0 {
404 vbat: adc-channel@1 {
407 dcin: adc-channel@2 {
410 ichg: adc-channel@3 {
413 vph_pwr: adc-channel@4 {
416 usb_vbus: adc-channel@a {
419 die_temp: adc-channel@b {
422 ref_625mv: adc-channel@c {
425 ref_1250mv: adc-channel@d {
428 ref_325mv: adc-channel@e {
431 ref_muxoff: adc-channel@f {
437 compatible = "qcom,pm8058-rtc";
439 interrupt-parent = <&pm8058>;
445 compatible = "qcom,pm8058-vib";
449 pm8058_led48: led@48 {
450 compatible = "qcom,pm8058-keypad-led";
455 pm8058_led131: led@131 {
456 compatible = "qcom,pm8058-led";
461 pm8058_led132: led@132 {
462 compatible = "qcom,pm8058-led";
467 pm8058_led133: led@133 {
468 compatible = "qcom,pm8058-led";
476 l2cc: clock-controller@2082000 {
477 compatible = "qcom,kpss-gcc-msm8660", "qcom,kpss-gcc", "syscon";
478 reg = <0x02082000 0x1000>;
482 compatible = "qcom,rpm-msm8660";
483 reg = <0x00104000 0x1000>;
484 qcom,ipc = <&l2cc 0x8 2>;
486 interrupts = <GIC_SPI 19 IRQ_TYPE_EDGE_RISING>,
487 <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>,
488 <GIC_SPI 22 IRQ_TYPE_EDGE_RISING>;
489 interrupt-names = "ack", "err", "wakeup";
490 clocks = <&gcc RPM_MSG_RAM_H_CLK>;
493 rpmcc: clock-controller {
494 compatible = "qcom,rpmcc-msm8660", "qcom,rpmcc";
496 clocks = <&pxo_board>;
501 compatible = "qcom,rpm-pm8901-regulators";
511 /* S0 and S1 Handled as SAW regulators by SPM */
516 pm8901_lvs0: lvs0 {};
517 pm8901_lvs1: lvs1 {};
518 pm8901_lvs2: lvs2 {};
519 pm8901_lvs3: lvs3 {};
525 compatible = "qcom,rpm-pm8058-regulators";
560 pm8058_lvs0: lvs0 {};
561 pm8058_lvs1: lvs1 {};
568 compatible = "simple-bus";
569 #address-cells = <1>;
572 sdcc1: mmc@12400000 {
574 compatible = "arm,pl18x", "arm,primecell";
575 arm,primecell-periphid = <0x00051180>;
576 reg = <0x12400000 0x8000>;
577 interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
578 clocks = <&gcc SDC1_CLK>, <&gcc SDC1_H_CLK>;
579 clock-names = "mclk", "apb_pclk";
581 max-frequency = <48000000>;
587 sdcc2: mmc@12140000 {
589 compatible = "arm,pl18x", "arm,primecell";
590 arm,primecell-periphid = <0x00051180>;
591 reg = <0x12140000 0x8000>;
592 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
593 clocks = <&gcc SDC2_CLK>, <&gcc SDC2_H_CLK>;
594 clock-names = "mclk", "apb_pclk";
596 max-frequency = <48000000>;
601 sdcc3: mmc@12180000 {
602 compatible = "arm,pl18x", "arm,primecell";
603 arm,primecell-periphid = <0x00051180>;
605 reg = <0x12180000 0x8000>;
606 interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
607 clocks = <&gcc SDC3_CLK>, <&gcc SDC3_H_CLK>;
608 clock-names = "mclk", "apb_pclk";
612 max-frequency = <48000000>;
616 sdcc4: mmc@121c0000 {
617 compatible = "arm,pl18x", "arm,primecell";
618 arm,primecell-periphid = <0x00051180>;
620 reg = <0x121c0000 0x8000>;
621 interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
622 clocks = <&gcc SDC4_CLK>, <&gcc SDC4_H_CLK>;
623 clock-names = "mclk", "apb_pclk";
625 max-frequency = <48000000>;
630 sdcc5: mmc@12200000 {
631 compatible = "arm,pl18x", "arm,primecell";
632 arm,primecell-periphid = <0x00051180>;
634 reg = <0x12200000 0x8000>;
635 interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
636 clocks = <&gcc SDC5_CLK>, <&gcc SDC5_H_CLK>;
637 clock-names = "mclk", "apb_pclk";
641 max-frequency = <48000000>;
645 tcsr: syscon@1a400000 {
646 compatible = "qcom,tcsr-msm8660", "syscon";
647 reg = <0x1a400000 0x100>;