18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci/dts-v1/;
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ci#include <dt-bindings/interrupt-controller/arm-gic.h>
58c2ecf20Sopenharmony_ci#include <dt-bindings/clock/qcom,gcc-msm8960.h>
68c2ecf20Sopenharmony_ci#include <dt-bindings/mfd/qcom-rpm.h>
78c2ecf20Sopenharmony_ci#include <dt-bindings/soc/qcom,gsbi.h>
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci/ {
108c2ecf20Sopenharmony_ci	#address-cells = <1>;
118c2ecf20Sopenharmony_ci	#size-cells = <1>;
128c2ecf20Sopenharmony_ci	model = "Qualcomm MSM8960";
138c2ecf20Sopenharmony_ci	compatible = "qcom,msm8960";
148c2ecf20Sopenharmony_ci	interrupt-parent = <&intc>;
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci	cpus {
178c2ecf20Sopenharmony_ci		#address-cells = <1>;
188c2ecf20Sopenharmony_ci		#size-cells = <0>;
198c2ecf20Sopenharmony_ci		interrupts = <1 14 0x304>;
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci		cpu@0 {
228c2ecf20Sopenharmony_ci			compatible = "qcom,krait";
238c2ecf20Sopenharmony_ci			enable-method = "qcom,kpss-acc-v1";
248c2ecf20Sopenharmony_ci			device_type = "cpu";
258c2ecf20Sopenharmony_ci			reg = <0>;
268c2ecf20Sopenharmony_ci			next-level-cache = <&L2>;
278c2ecf20Sopenharmony_ci			qcom,acc = <&acc0>;
288c2ecf20Sopenharmony_ci			qcom,saw = <&saw0>;
298c2ecf20Sopenharmony_ci		};
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ci		cpu@1 {
328c2ecf20Sopenharmony_ci			compatible = "qcom,krait";
338c2ecf20Sopenharmony_ci			enable-method = "qcom,kpss-acc-v1";
348c2ecf20Sopenharmony_ci			device_type = "cpu";
358c2ecf20Sopenharmony_ci			reg = <1>;
368c2ecf20Sopenharmony_ci			next-level-cache = <&L2>;
378c2ecf20Sopenharmony_ci			qcom,acc = <&acc1>;
388c2ecf20Sopenharmony_ci			qcom,saw = <&saw1>;
398c2ecf20Sopenharmony_ci		};
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci		L2: l2-cache {
428c2ecf20Sopenharmony_ci			compatible = "cache";
438c2ecf20Sopenharmony_ci			cache-level = <2>;
448c2ecf20Sopenharmony_ci		};
458c2ecf20Sopenharmony_ci	};
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci	memory {
488c2ecf20Sopenharmony_ci		device_type = "memory";
498c2ecf20Sopenharmony_ci		reg = <0x0 0x0>;
508c2ecf20Sopenharmony_ci	};
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci	cpu-pmu {
538c2ecf20Sopenharmony_ci		compatible = "qcom,krait-pmu";
548c2ecf20Sopenharmony_ci		interrupts = <1 10 0x304>;
558c2ecf20Sopenharmony_ci		qcom,no-pc-write;
568c2ecf20Sopenharmony_ci	};
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci	clocks {
598c2ecf20Sopenharmony_ci		cxo_board {
608c2ecf20Sopenharmony_ci			compatible = "fixed-clock";
618c2ecf20Sopenharmony_ci			#clock-cells = <0>;
628c2ecf20Sopenharmony_ci			clock-frequency = <19200000>;
638c2ecf20Sopenharmony_ci			clock-output-names = "cxo_board";
648c2ecf20Sopenharmony_ci		};
658c2ecf20Sopenharmony_ci
668c2ecf20Sopenharmony_ci		pxo_board {
678c2ecf20Sopenharmony_ci			compatible = "fixed-clock";
688c2ecf20Sopenharmony_ci			#clock-cells = <0>;
698c2ecf20Sopenharmony_ci			clock-frequency = <27000000>;
708c2ecf20Sopenharmony_ci			clock-output-names = "pxo_board";
718c2ecf20Sopenharmony_ci		};
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ci		sleep_clk {
748c2ecf20Sopenharmony_ci			compatible = "fixed-clock";
758c2ecf20Sopenharmony_ci			#clock-cells = <0>;
768c2ecf20Sopenharmony_ci			clock-frequency = <32768>;
778c2ecf20Sopenharmony_ci			clock-output-names = "sleep_clk";
788c2ecf20Sopenharmony_ci		};
798c2ecf20Sopenharmony_ci	};
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ci	soc: soc {
828c2ecf20Sopenharmony_ci		#address-cells = <1>;
838c2ecf20Sopenharmony_ci		#size-cells = <1>;
848c2ecf20Sopenharmony_ci		ranges;
858c2ecf20Sopenharmony_ci		compatible = "simple-bus";
868c2ecf20Sopenharmony_ci
878c2ecf20Sopenharmony_ci		intc: interrupt-controller@2000000 {
888c2ecf20Sopenharmony_ci			compatible = "qcom,msm-qgic2";
898c2ecf20Sopenharmony_ci			interrupt-controller;
908c2ecf20Sopenharmony_ci			#interrupt-cells = <3>;
918c2ecf20Sopenharmony_ci			reg = <0x02000000 0x1000>,
928c2ecf20Sopenharmony_ci			      <0x02002000 0x1000>;
938c2ecf20Sopenharmony_ci		};
948c2ecf20Sopenharmony_ci
958c2ecf20Sopenharmony_ci		timer@200a000 {
968c2ecf20Sopenharmony_ci			compatible = "qcom,kpss-timer",
978c2ecf20Sopenharmony_ci				     "qcom,kpss-wdt-msm8960", "qcom,msm-timer";
988c2ecf20Sopenharmony_ci			interrupts = <1 1 0x301>,
998c2ecf20Sopenharmony_ci				     <1 2 0x301>,
1008c2ecf20Sopenharmony_ci				     <1 3 0x301>;
1018c2ecf20Sopenharmony_ci			reg = <0x0200a000 0x100>;
1028c2ecf20Sopenharmony_ci			clock-frequency = <27000000>,
1038c2ecf20Sopenharmony_ci					  <32768>;
1048c2ecf20Sopenharmony_ci			cpu-offset = <0x80000>;
1058c2ecf20Sopenharmony_ci		};
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_ci		msmgpio: pinctrl@800000 {
1088c2ecf20Sopenharmony_ci			compatible = "qcom,msm8960-pinctrl";
1098c2ecf20Sopenharmony_ci			gpio-controller;
1108c2ecf20Sopenharmony_ci			gpio-ranges = <&msmgpio 0 0 152>;
1118c2ecf20Sopenharmony_ci			#gpio-cells = <2>;
1128c2ecf20Sopenharmony_ci			interrupts = <0 16 0x4>;
1138c2ecf20Sopenharmony_ci			interrupt-controller;
1148c2ecf20Sopenharmony_ci			#interrupt-cells = <2>;
1158c2ecf20Sopenharmony_ci			reg = <0x800000 0x4000>;
1168c2ecf20Sopenharmony_ci		};
1178c2ecf20Sopenharmony_ci
1188c2ecf20Sopenharmony_ci		gcc: clock-controller@900000 {
1198c2ecf20Sopenharmony_ci			compatible = "qcom,gcc-msm8960";
1208c2ecf20Sopenharmony_ci			#clock-cells = <1>;
1218c2ecf20Sopenharmony_ci			#reset-cells = <1>;
1228c2ecf20Sopenharmony_ci			reg = <0x900000 0x4000>;
1238c2ecf20Sopenharmony_ci		};
1248c2ecf20Sopenharmony_ci
1258c2ecf20Sopenharmony_ci		lcc: clock-controller@28000000 {
1268c2ecf20Sopenharmony_ci			compatible = "qcom,lcc-msm8960";
1278c2ecf20Sopenharmony_ci			reg = <0x28000000 0x1000>;
1288c2ecf20Sopenharmony_ci			#clock-cells = <1>;
1298c2ecf20Sopenharmony_ci			#reset-cells = <1>;
1308c2ecf20Sopenharmony_ci		};
1318c2ecf20Sopenharmony_ci
1328c2ecf20Sopenharmony_ci		clock-controller@4000000 {
1338c2ecf20Sopenharmony_ci			compatible = "qcom,mmcc-msm8960";
1348c2ecf20Sopenharmony_ci			reg = <0x4000000 0x1000>;
1358c2ecf20Sopenharmony_ci			#clock-cells = <1>;
1368c2ecf20Sopenharmony_ci			#reset-cells = <1>;
1378c2ecf20Sopenharmony_ci		};
1388c2ecf20Sopenharmony_ci
1398c2ecf20Sopenharmony_ci		l2cc: clock-controller@2011000 {
1408c2ecf20Sopenharmony_ci			compatible	= "syscon";
1418c2ecf20Sopenharmony_ci			reg		= <0x2011000 0x1000>;
1428c2ecf20Sopenharmony_ci		};
1438c2ecf20Sopenharmony_ci
1448c2ecf20Sopenharmony_ci		rpm@108000 {
1458c2ecf20Sopenharmony_ci			compatible	= "qcom,rpm-msm8960";
1468c2ecf20Sopenharmony_ci			reg		= <0x108000 0x1000>;
1478c2ecf20Sopenharmony_ci			qcom,ipc	= <&l2cc 0x8 2>;
1488c2ecf20Sopenharmony_ci
1498c2ecf20Sopenharmony_ci			interrupts	= <GIC_SPI 19 IRQ_TYPE_EDGE_RISING>,
1508c2ecf20Sopenharmony_ci					  <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>,
1518c2ecf20Sopenharmony_ci					  <GIC_SPI 22 IRQ_TYPE_EDGE_RISING>;
1528c2ecf20Sopenharmony_ci			interrupt-names	= "ack", "err", "wakeup";
1538c2ecf20Sopenharmony_ci
1548c2ecf20Sopenharmony_ci			regulators {
1558c2ecf20Sopenharmony_ci				compatible = "qcom,rpm-pm8921-regulators";
1568c2ecf20Sopenharmony_ci			};
1578c2ecf20Sopenharmony_ci		};
1588c2ecf20Sopenharmony_ci
1598c2ecf20Sopenharmony_ci		acc0: clock-controller@2088000 {
1608c2ecf20Sopenharmony_ci			compatible = "qcom,kpss-acc-v1";
1618c2ecf20Sopenharmony_ci			reg = <0x02088000 0x1000>, <0x02008000 0x1000>;
1628c2ecf20Sopenharmony_ci		};
1638c2ecf20Sopenharmony_ci
1648c2ecf20Sopenharmony_ci		acc1: clock-controller@2098000 {
1658c2ecf20Sopenharmony_ci			compatible = "qcom,kpss-acc-v1";
1668c2ecf20Sopenharmony_ci			reg = <0x02098000 0x1000>, <0x02008000 0x1000>;
1678c2ecf20Sopenharmony_ci		};
1688c2ecf20Sopenharmony_ci
1698c2ecf20Sopenharmony_ci		saw0: regulator@2089000 {
1708c2ecf20Sopenharmony_ci			compatible = "qcom,saw2";
1718c2ecf20Sopenharmony_ci			reg = <0x02089000 0x1000>, <0x02009000 0x1000>;
1728c2ecf20Sopenharmony_ci			regulator;
1738c2ecf20Sopenharmony_ci		};
1748c2ecf20Sopenharmony_ci
1758c2ecf20Sopenharmony_ci		saw1: regulator@2099000 {
1768c2ecf20Sopenharmony_ci			compatible = "qcom,saw2";
1778c2ecf20Sopenharmony_ci			reg = <0x02099000 0x1000>, <0x02009000 0x1000>;
1788c2ecf20Sopenharmony_ci			regulator;
1798c2ecf20Sopenharmony_ci		};
1808c2ecf20Sopenharmony_ci
1818c2ecf20Sopenharmony_ci		gsbi5: gsbi@16400000 {
1828c2ecf20Sopenharmony_ci			compatible = "qcom,gsbi-v1.0.0";
1838c2ecf20Sopenharmony_ci			cell-index = <5>;
1848c2ecf20Sopenharmony_ci			reg = <0x16400000 0x100>;
1858c2ecf20Sopenharmony_ci			clocks = <&gcc GSBI5_H_CLK>;
1868c2ecf20Sopenharmony_ci			clock-names = "iface";
1878c2ecf20Sopenharmony_ci			#address-cells = <1>;
1888c2ecf20Sopenharmony_ci			#size-cells = <1>;
1898c2ecf20Sopenharmony_ci			ranges;
1908c2ecf20Sopenharmony_ci
1918c2ecf20Sopenharmony_ci			syscon-tcsr = <&tcsr>;
1928c2ecf20Sopenharmony_ci
1938c2ecf20Sopenharmony_ci			gsbi5_serial: serial@16440000 {
1948c2ecf20Sopenharmony_ci				compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
1958c2ecf20Sopenharmony_ci				reg = <0x16440000 0x1000>,
1968c2ecf20Sopenharmony_ci				      <0x16400000 0x1000>;
1978c2ecf20Sopenharmony_ci				interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
1988c2ecf20Sopenharmony_ci				clocks = <&gcc GSBI5_UART_CLK>, <&gcc GSBI5_H_CLK>;
1998c2ecf20Sopenharmony_ci				clock-names = "core", "iface";
2008c2ecf20Sopenharmony_ci				status = "disabled";
2018c2ecf20Sopenharmony_ci			};
2028c2ecf20Sopenharmony_ci		};
2038c2ecf20Sopenharmony_ci
2048c2ecf20Sopenharmony_ci		qcom,ssbi@500000 {
2058c2ecf20Sopenharmony_ci			compatible = "qcom,ssbi";
2068c2ecf20Sopenharmony_ci			reg = <0x500000 0x1000>;
2078c2ecf20Sopenharmony_ci			qcom,controller-type = "pmic-arbiter";
2088c2ecf20Sopenharmony_ci
2098c2ecf20Sopenharmony_ci			pmicintc: pmic@0 {
2108c2ecf20Sopenharmony_ci				compatible = "qcom,pm8921";
2118c2ecf20Sopenharmony_ci				interrupt-parent = <&msmgpio>;
2128c2ecf20Sopenharmony_ci				interrupts = <104 8>;
2138c2ecf20Sopenharmony_ci				#interrupt-cells = <2>;
2148c2ecf20Sopenharmony_ci				interrupt-controller;
2158c2ecf20Sopenharmony_ci				#address-cells = <1>;
2168c2ecf20Sopenharmony_ci				#size-cells = <0>;
2178c2ecf20Sopenharmony_ci
2188c2ecf20Sopenharmony_ci				pwrkey@1c {
2198c2ecf20Sopenharmony_ci					compatible = "qcom,pm8921-pwrkey";
2208c2ecf20Sopenharmony_ci					reg = <0x1c>;
2218c2ecf20Sopenharmony_ci					interrupt-parent = <&pmicintc>;
2228c2ecf20Sopenharmony_ci					interrupts = <50 1>, <51 1>;
2238c2ecf20Sopenharmony_ci					debounce = <15625>;
2248c2ecf20Sopenharmony_ci					pull-up;
2258c2ecf20Sopenharmony_ci				};
2268c2ecf20Sopenharmony_ci
2278c2ecf20Sopenharmony_ci				keypad@148 {
2288c2ecf20Sopenharmony_ci					compatible = "qcom,pm8921-keypad";
2298c2ecf20Sopenharmony_ci					reg = <0x148>;
2308c2ecf20Sopenharmony_ci					interrupt-parent = <&pmicintc>;
2318c2ecf20Sopenharmony_ci					interrupts = <74 1>, <75 1>;
2328c2ecf20Sopenharmony_ci					debounce = <15>;
2338c2ecf20Sopenharmony_ci					scan-delay = <32>;
2348c2ecf20Sopenharmony_ci					row-hold = <91500>;
2358c2ecf20Sopenharmony_ci				};
2368c2ecf20Sopenharmony_ci
2378c2ecf20Sopenharmony_ci				rtc@11d {
2388c2ecf20Sopenharmony_ci					compatible = "qcom,pm8921-rtc";
2398c2ecf20Sopenharmony_ci					interrupt-parent = <&pmicintc>;
2408c2ecf20Sopenharmony_ci					interrupts = <39 1>;
2418c2ecf20Sopenharmony_ci					reg = <0x11d>;
2428c2ecf20Sopenharmony_ci					allow-set-time;
2438c2ecf20Sopenharmony_ci				};
2448c2ecf20Sopenharmony_ci			};
2458c2ecf20Sopenharmony_ci		};
2468c2ecf20Sopenharmony_ci
2478c2ecf20Sopenharmony_ci		rng@1a500000 {
2488c2ecf20Sopenharmony_ci			compatible = "qcom,prng";
2498c2ecf20Sopenharmony_ci			reg = <0x1a500000 0x200>;
2508c2ecf20Sopenharmony_ci			clocks = <&gcc PRNG_CLK>;
2518c2ecf20Sopenharmony_ci			clock-names = "core";
2528c2ecf20Sopenharmony_ci		};
2538c2ecf20Sopenharmony_ci
2548c2ecf20Sopenharmony_ci		/* Temporary fixed regulator */
2558c2ecf20Sopenharmony_ci		vsdcc_fixed: vsdcc-regulator {
2568c2ecf20Sopenharmony_ci			compatible = "regulator-fixed";
2578c2ecf20Sopenharmony_ci			regulator-name = "SDCC Power";
2588c2ecf20Sopenharmony_ci			regulator-min-microvolt = <2700000>;
2598c2ecf20Sopenharmony_ci			regulator-max-microvolt = <2700000>;
2608c2ecf20Sopenharmony_ci			regulator-always-on;
2618c2ecf20Sopenharmony_ci		};
2628c2ecf20Sopenharmony_ci
2638c2ecf20Sopenharmony_ci		amba {
2648c2ecf20Sopenharmony_ci			compatible = "simple-bus";
2658c2ecf20Sopenharmony_ci			#address-cells = <1>;
2668c2ecf20Sopenharmony_ci			#size-cells = <1>;
2678c2ecf20Sopenharmony_ci			ranges;
2688c2ecf20Sopenharmony_ci			sdcc1: sdcc@12400000 {
2698c2ecf20Sopenharmony_ci				status		= "disabled";
2708c2ecf20Sopenharmony_ci				compatible	= "arm,pl18x", "arm,primecell";
2718c2ecf20Sopenharmony_ci				arm,primecell-periphid = <0x00051180>;
2728c2ecf20Sopenharmony_ci				reg		= <0x12400000 0x8000>;
2738c2ecf20Sopenharmony_ci				interrupts	= <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
2748c2ecf20Sopenharmony_ci				interrupt-names	= "cmd_irq";
2758c2ecf20Sopenharmony_ci				clocks		= <&gcc SDC1_CLK>, <&gcc SDC1_H_CLK>;
2768c2ecf20Sopenharmony_ci				clock-names	= "mclk", "apb_pclk";
2778c2ecf20Sopenharmony_ci				bus-width	= <8>;
2788c2ecf20Sopenharmony_ci				max-frequency	= <96000000>;
2798c2ecf20Sopenharmony_ci				non-removable;
2808c2ecf20Sopenharmony_ci				cap-sd-highspeed;
2818c2ecf20Sopenharmony_ci				cap-mmc-highspeed;
2828c2ecf20Sopenharmony_ci				vmmc-supply = <&vsdcc_fixed>;
2838c2ecf20Sopenharmony_ci			};
2848c2ecf20Sopenharmony_ci
2858c2ecf20Sopenharmony_ci			sdcc3: sdcc@12180000 {
2868c2ecf20Sopenharmony_ci				compatible	= "arm,pl18x", "arm,primecell";
2878c2ecf20Sopenharmony_ci				arm,primecell-periphid = <0x00051180>;
2888c2ecf20Sopenharmony_ci				status		= "disabled";
2898c2ecf20Sopenharmony_ci				reg		= <0x12180000 0x8000>;
2908c2ecf20Sopenharmony_ci				interrupts	= <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
2918c2ecf20Sopenharmony_ci				interrupt-names	= "cmd_irq";
2928c2ecf20Sopenharmony_ci				clocks		= <&gcc SDC3_CLK>, <&gcc SDC3_H_CLK>;
2938c2ecf20Sopenharmony_ci				clock-names	= "mclk", "apb_pclk";
2948c2ecf20Sopenharmony_ci				bus-width	= <4>;
2958c2ecf20Sopenharmony_ci				cap-sd-highspeed;
2968c2ecf20Sopenharmony_ci				cap-mmc-highspeed;
2978c2ecf20Sopenharmony_ci				max-frequency	= <192000000>;
2988c2ecf20Sopenharmony_ci				no-1-8-v;
2998c2ecf20Sopenharmony_ci				vmmc-supply = <&vsdcc_fixed>;
3008c2ecf20Sopenharmony_ci			};
3018c2ecf20Sopenharmony_ci		};
3028c2ecf20Sopenharmony_ci
3038c2ecf20Sopenharmony_ci		tcsr: syscon@1a400000 {
3048c2ecf20Sopenharmony_ci			compatible = "qcom,tcsr-msm8960", "syscon";
3058c2ecf20Sopenharmony_ci			reg = <0x1a400000 0x100>;
3068c2ecf20Sopenharmony_ci		};
3078c2ecf20Sopenharmony_ci
3088c2ecf20Sopenharmony_ci		gsbi@16000000 {
3098c2ecf20Sopenharmony_ci			compatible = "qcom,gsbi-v1.0.0";
3108c2ecf20Sopenharmony_ci			cell-index = <1>;
3118c2ecf20Sopenharmony_ci			reg = <0x16000000 0x100>;
3128c2ecf20Sopenharmony_ci			clocks = <&gcc GSBI1_H_CLK>;
3138c2ecf20Sopenharmony_ci			clock-names = "iface";
3148c2ecf20Sopenharmony_ci			#address-cells = <1>;
3158c2ecf20Sopenharmony_ci			#size-cells = <1>;
3168c2ecf20Sopenharmony_ci			ranges;
3178c2ecf20Sopenharmony_ci
3188c2ecf20Sopenharmony_ci			spi@16080000 {
3198c2ecf20Sopenharmony_ci				compatible = "qcom,spi-qup-v1.1.1";
3208c2ecf20Sopenharmony_ci				#address-cells = <1>;
3218c2ecf20Sopenharmony_ci				#size-cells = <0>;
3228c2ecf20Sopenharmony_ci				reg = <0x16080000 0x1000>;
3238c2ecf20Sopenharmony_ci				interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
3248c2ecf20Sopenharmony_ci				spi-max-frequency = <24000000>;
3258c2ecf20Sopenharmony_ci				cs-gpios = <&msmgpio 8 0>;
3268c2ecf20Sopenharmony_ci
3278c2ecf20Sopenharmony_ci				clocks = <&gcc GSBI1_QUP_CLK>, <&gcc GSBI1_H_CLK>;
3288c2ecf20Sopenharmony_ci				clock-names = "core", "iface";
3298c2ecf20Sopenharmony_ci				status = "disabled";
3308c2ecf20Sopenharmony_ci			};
3318c2ecf20Sopenharmony_ci		};
3328c2ecf20Sopenharmony_ci	};
3338c2ecf20Sopenharmony_ci};
334