summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorgi Djakov <georgi.djakov@linaro.org>2015-02-06 12:55:47 +0200
committerGeorgi Djakov <georgi.djakov@linaro.org>2015-02-19 10:50:54 +0200
commit4d298831abf3c8264458dcae89296c25a7aaa820 (patch)
treebd7aab032e08d620cffb8bd79e9a1366708ae9bd
parent1f9fc0ead9fef663407dfaf71318c9bdadcd4796 (diff)
ARM: dts: Add snapshot of MSM DT files
Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
-rw-r--r--arch/arm64/boot/dts/Makefile1
-rw-r--r--arch/arm64/boot/dts/qcom/Makefile20
-rw-r--r--arch/arm64/boot/dts/qcom/apq8094-mtp.dts20
-rw-r--r--arch/arm64/boot/dts/qcom/apq8094.dtsi23
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-mtp-3000mah.dtsi142
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-palladium.dtsi121
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-qrd-skuh-4v35-2000mah.dtsi115
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-hx8394d-720p-video.dtsi84
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-innolux-720p-video.dtsi196
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-jdi-1080p-video.dtsi72
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-jdi-4k-dualmipi0-video.dtsi82
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-jdi-4k-dualmipi1-video.dtsi83
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi0-cmd.dtsi93
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi0-video.dtsi92
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi1-cmd.dtsi93
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi1-video.dtsi93
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-nt35590-720p-cmd.dtsi539
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-nt35590-720p-video.dtsi540
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-nt35596-1080p-skuk-video.dtsi541
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-otm1283a-720p-video.dtsi191
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-otm8019a-fwvga-video.dtsi170
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-sharp-dualmipi0-wqxga-video.dtsi63
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-sharp-dualmipi1-wqxga-video.dtsi60
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-sim-cmd.dtsi94
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-sim-video.dtsi62
-rw-r--r--arch/arm64/boot/dts/qcom/msm-gdsc-8916.dtsi63
-rw-r--r--arch/arm64/boot/dts/qcom/msm-gdsc.dtsi168
-rw-r--r--arch/arm64/boot/dts/qcom/msm-iommu-v1.dtsi1513
-rw-r--r--arch/arm64/boot/dts/qcom/msm-iommu-v2.dtsi238
-rw-r--r--arch/arm64/boot/dts/qcom/msm-pm8916-rpm-regulator.dtsi365
-rw-r--r--arch/arm64/boot/dts/qcom/msm-pm8916.dtsi636
-rw-r--r--arch/arm64/boot/dts/qcom/msm-pm8994-rpm-regulator.dtsi681
-rw-r--r--arch/arm64/boot/dts/qcom/msm-pm8994.dtsi407
-rw-r--r--arch/arm64/boot/dts/qcom/msm-pmi8994.dtsi499
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-512mb-ion.dtsi57
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-512mb-memory.dtsi58
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-512mb-mtp-smb1360.dts61
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-512mb-mtp.dts32
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-512mb-qrd-skuh.dts41
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-512mb-qrd-skui.dts107
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-512mb-qrd-skuid.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-bus.dtsi879
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-camera-sensor-cdp.dtsi153
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-camera-sensor-mtp.dtsi303
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-camera-sensor-qrd-skui.dtsi189
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-camera-sensor-qrd.dtsi108
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-camera.dtsi335
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-cdp-smb1360.dts51
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-cdp.dts22
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-cdp.dtsi582
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-coresight.dtsi595
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-gpu.dtsi109
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-iommu-domains.dtsi59
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-iommu.dtsi21
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-ion.dtsi64
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-ipcrouter.dtsi37
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-mdss-pll.dtsi53
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-mdss.dtsi210
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-memory.dtsi65
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-mtp-smb1360.dts62
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-mtp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-mtp.dtsi464
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-pinctrl.dtsi1568
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-pm.dtsi354
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-qrd-skuh.dts41
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-qrd-skuh.dtsi371
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-qrd-skuhf.dts63
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-qrd-skui.dts108
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-qrd-skui.dtsi214
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-qrd-skuic.dts22
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-qrd-skuic.dtsi101
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-qrd-skuid.dts22
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-qrd-skuid.dtsi100
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-qrd.dtsi205
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-regulator.dtsi377
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916-smp2p.dtsi163
-rw-r--r--arch/arm64/boot/dts/qcom/msm8916.dtsi1977
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-camera-sensor-cdp.dtsi165
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-camera-sensor-liquid.dtsi153
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-camera-sensor-mtp.dtsi165
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-camera.dtsi493
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-cdp.dts24
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-cdp.dtsi675
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-coresight.dtsi778
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-gpu.dtsi117
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-iommu-domains.dtsi45
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-iommu.dtsi429
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-ion.dtsi63
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-ipcrouter.dtsi36
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-liquid.dts25
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-liquid.dtsi801
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-mdss-pll.dtsi112
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-mdss.dtsi404
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-mtp.dts24
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-mtp.dtsi669
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-pinctrl.dtsi1223
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-pm.dtsi588
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-regulator.dtsi647
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994-smp2p.dtsi169
-rw-r--r--arch/arm64/boot/dts/qcom/msm8994.dtsi2790
100 files changed, 29204 insertions, 0 deletions
diff --git a/arch/arm64/boot/dts/Makefile b/arch/arm64/boot/dts/Makefile
index e0350caf049..8517f15870b 100644
--- a/arch/arm64/boot/dts/Makefile
+++ b/arch/arm64/boot/dts/Makefile
@@ -5,5 +5,6 @@ dts-dirs += cavium
dts-dirs += exynos
dts-dirs += freescale
dts-dirs += mediatek
+dts-dirs += qcom
subdir-y := $(dts-dirs)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
new file mode 100644
index 00000000000..fdc676339d3
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -0,0 +1,20 @@
+dtb-$(CONFIG_ARCH_MSM8916) += msm8916-cdp.dtb \
+ msm8916-cdp-smb1360.dtb \
+ msm8916-mtp.dtb \
+ msm8916-512mb-mtp.dtb \
+ msm8916-mtp-smb1360.dtb \
+ msm8916-512mb-mtp-smb1360.dtb \
+ msm8916-512mb-qrd-skui.dtb \
+ msm8916-qrd-skuh.dtb \
+ msm8916-qrd-skuhf.dtb \
+ msm8916-qrd-skui.dtb \
+ msm8916-512mb-qrd-skuh.dtb \
+
+dtb-$(CONFIG_ARCH_MSM8994) += msm8994-cdp.dtb \
+ msm8994-mtp.dtb \
+ msm8994-liquid.dtb \
+ apq8094-mtp.dtb
+
+always := $(dtb-y)
+subdir-y := $(dts-dirs)
+clean-files := *.dtb
diff --git a/arch/arm64/boot/dts/qcom/apq8094-mtp.dts b/arch/arm64/boot/dts/qcom/apq8094-mtp.dts
new file mode 100644
index 00000000000..95120da7ee3
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8094-mtp.dts
@@ -0,0 +1,20 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "apq8094.dtsi"
+#include "msm8994-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8094 MTP";
+ compatible = "qcom,apq8094-mtp", "qcom,apq8094", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8094.dtsi b/arch/arm64/boot/dts/qcom/apq8094.dtsi
new file mode 100644
index 00000000000..d228814d8f5
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8094.dtsi
@@ -0,0 +1,23 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+
+/dts-v1/;
+
+#include "msm8994.dtsi"
+#include "msm8994-pinctrl.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8094";
+ compatible = "qcom,apq8094";
+ qcom,msm-id = <253 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-mtp-3000mah.dtsi b/arch/arm64/boot/dts/qcom/batterydata-mtp-3000mah.dtsi
new file mode 100644
index 00000000000..a01a2f0dd91
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-mtp-3000mah.dtsi
@@ -0,0 +1,142 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+qcom,mtp-3000mah {
+ qcom,fcc-mah = <3000>;
+ qcom,default-rbatt-mohm = <113>;
+ qcom,max-voltage-uv = <4200000>;
+ qcom,rbatt-capacitive-mohm = <50>;
+ qcom,v-cutoff-uv = <3400000>;
+ qcom,chg-term-ua = <200000>;
+ qcom,batt-id-kohm = <300>;
+ qcom,battery-type = "mtp_3000mah";
+ qcom,fg-profile-data = [
+ 07 88 73 7E
+ 31 82 CB 7C
+ 6D 83 E6 76
+ 74 89 E1 8E
+ F3 81 7A 93
+ 72 AE 1A B3
+ 67 1B 07 88
+ 03 7E DB 81
+ 7B 7C 6F 83
+ D7 75 DE 89
+ 4C 94 34 82
+ 0F 99 41 B7
+ F7 C2 60 14
+ 07 0B 2C 5B
+ 28 6E 5C FF
+ 9A 3E 49 4E
+ 78 49 18 28
+ 82 46 19 34
+ C5 4F 18 28
+ 66 72 66 62
+ 66 72 66 62
+ 2D 6B 8F 69
+ 2F 88 65 91
+ F5 6E 0C 48
+ 51 75 67 83
+ DF 6D 01 3E
+ 66 4E 00 82
+ 0A 32 58 8A
+ 5C A0 71 0C
+ 28 00 FF 37
+ F0 51 30 03
+ 01 00 00 00];
+
+ qcom,fcc-temp-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-data = <3030 3033 3037 3035 3031>;
+ };
+
+ qcom,pc-temp-ocv-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-row-legend = <100 95 90 85 80>,
+ <75 70 65 60 55>,
+ <50 45 40 35 30>,
+ <25 20 16 13 11>,
+ <10 9 8 7 6>,
+ <5 4 3 2 1>,
+ <0>;
+ qcom,lut-data = <4191 4188 4183 4179 4174>,
+ <4106 4125 4127 4125 4121>,
+ <4046 4082 4082 4080 4077>,
+ <3966 4038 4044 4040 4035>,
+ <3922 3983 3994 3998 3997>,
+ <3886 3949 3966 3966 3962>,
+ <3856 3908 3937 3935 3931>,
+ <3832 3875 3908 3907 3903>,
+ <3814 3847 3874 3878 3875>,
+ <3799 3826 3831 3832 3830>,
+ <3787 3807 3811 3811 3809>,
+ <3775 3793 3795 3795 3793>,
+ <3764 3782 3783 3783 3781>,
+ <3752 3775 3773 3772 3769>,
+ <3739 3768 3766 3762 3755>,
+ <3725 3756 3756 3747 3733>,
+ <3710 3732 3734 3725 3711>,
+ <3696 3707 3705 3697 3684>,
+ <3681 3695 3686 3678 3667>,
+ <3667 3690 3684 3676 3665>,
+ <3658 3688 3683 3675 3664>,
+ <3646 3685 3681 3674 3663>,
+ <3631 3682 3679 3673 3660>,
+ <3612 3677 3676 3669 3655>,
+ <3589 3667 3666 3660 3639>,
+ <3560 3643 3636 3630 3599>,
+ <3523 3600 3586 3581 3546>,
+ <3474 3537 3518 3516 3477>,
+ <3394 3446 3425 3427 3379>,
+ <3257 3306 3273 3283 3213>,
+ <3000 3000 3000 3000 3000>;
+ };
+
+ qcom,rbatt-sf-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-row-legend = <100 95 90 85 80>,
+ <75 70 65 60 55>,
+ <50 45 40 35 30>,
+ <25 20 16 13 11>,
+ <10 9 8 7 6>,
+ <5 4 3 2 1>;
+ qcom,lut-data = <1025 208 100 85 80>,
+ <1025 208 100 85 80>,
+ <1032 225 103 87 81>,
+ <959 249 107 91 82>,
+ <954 249 109 92 84>,
+ <953 255 117 94 84>,
+ <957 230 123 98 87>,
+ <968 216 134 102 91>,
+ <983 212 138 112 95>,
+ <1002 213 103 89 82>,
+ <1030 215 100 86 81>,
+ <1066 219 101 89 83>,
+ <1115 224 104 92 85>,
+ <1182 234 106 94 86>,
+ <1263 246 108 92 84>,
+ <1357 257 107 87 81>,
+ <1464 261 102 85 80>,
+ <1564 256 101 84 80>,
+ <1637 268 100 84 80>,
+ <1580 276 102 87 81>,
+ <1617 285 104 87 82>,
+ <1670 298 107 91 82>,
+ <1725 315 108 92 83>,
+ <1785 338 112 92 83>,
+ <1850 361 111 91 82>,
+ <1921 378 108 89 84>,
+ <2000 394 112 92 87>,
+ <2119 430 121 99 94>,
+ <2795 497 144 114 104>,
+ <8769 1035 672 322 234>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-palladium.dtsi b/arch/arm64/boot/dts/qcom/batterydata-palladium.dtsi
new file mode 100644
index 00000000000..4730fc83b01
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-palladium.dtsi
@@ -0,0 +1,121 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+qcom,palladium-batterydata {
+ qcom,fcc-mah = <1500>;
+ qcom,default-rbatt-mohm = <210>;
+ qcom,rbatt-capacitive-mohm = <50>;
+ qcom,flat-ocv-threshold-uv = <3800000>;
+ qcom,max-voltage-uv = <4200000>;
+ qcom,v-cutoff-uv = <3400000>;
+ qcom,chg-term-ua = <100000>;
+ qcom,batt-id-kohm = <75>;
+ qcom,battery-type = "palladium_1500mah";
+
+ qcom,fcc-temp-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-data = <1467 1470 1473 1473 1470>;
+ };
+
+ qcom,pc-temp-ocv-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-row-legend = <100 95 90 85 80>,
+ <75 70 65 60 55>,
+ <50 45 40 35 30>,
+ <25 20 16 13 11>,
+ <10 9 8 7 6>,
+ <5 4 3 2 1>,
+ <0>;
+ qcom,lut-data = <4175 4173 4167 4162 4157>,
+ <4097 4111 4112 4110 4107>,
+ <4039 4075 4072 4068 4064>,
+ <3963 4017 4025 4026 4025>,
+ <3920 3969 3984 3989 3988>,
+ <3887 3932 3957 3958 3955>,
+ <3856 3898 3929 3928 3925>,
+ <3830 3868 3900 3901 3898>,
+ <3808 3843 3858 3863 3862>,
+ <3793 3821 3827 3827 3827>,
+ <3779 3803 3807 3808 3807>,
+ <3768 3788 3792 3793 3792>,
+ <3757 3779 3780 3780 3779>,
+ <3746 3771 3772 3768 3768>,
+ <3734 3762 3765 3759 3749>,
+ <3722 3747 3753 3744 3730>,
+ <3707 3721 3731 3722 3709>,
+ <3693 3705 3704 3696 3683>,
+ <3678 3698 3687 3678 3667>,
+ <3664 3693 3683 3676 3665>,
+ <3656 3690 3682 3675 3664>,
+ <3646 3687 3681 3674 3662>,
+ <3634 3683 3680 3672 3661>,
+ <3618 3677 3676 3668 3656>,
+ <3599 3667 3667 3655 3639>,
+ <3573 3645 3638 3623 3603>,
+ <3541 3607 3591 3575 3554>,
+ <3496 3550 3528 3511 3490>,
+ <3428 3469 3445 3423 3400>,
+ <3312 3342 3308 3280 3250>,
+ <3000 3000 3000 3000 3000>;
+ };
+
+ qcom,rbatt-sf-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-row-legend = <100 95 90 85 80>,
+ <75 70 65 60 55>,
+ <50 45 40 35 30>,
+ <25 20 16 13 11>,
+ <10 9 8 7 6>,
+ <5 4 3 2 1>,
+ <0>;
+ qcom,lut-data = <909 216 100 85 84>,
+ <859 238 106 88 86>,
+ <860 237 105 88 86>,
+ <808 239 107 90 88>,
+ <801 234 111 94 90>,
+ <801 230 118 97 92>,
+ <801 224 123 100 95>,
+ <807 221 128 106 99>,
+ <818 221 111 101 97>,
+ <841 225 101 88 87>,
+ <870 229 101 88 87>,
+ <906 235 103 91 90>,
+ <950 243 106 93 93>,
+ <998 253 110 93 96>,
+ <1051 263 113 94 90>,
+ <1116 272 113 91 88>,
+ <1200 275 111 91 88>,
+ <1312 298 108 90 87>,
+ <1430 329 104 88 87>,
+ <1484 351 107 91 89>,
+ <1446 345 110 93 90>,
+ <1398 344 112 94 90>,
+ <1466 358 115 96 91>,
+ <1490 357 117 96 90>,
+ <1589 365 117 94 89>,
+ <1828 379 111 91 88>,
+ <2151 399 111 93 91>,
+ <2621 436 117 98 95>,
+ <3404 496 130 106 100>,
+ <8212 616 150 1906 134>,
+ <135251 124940 59087 49820 29672>;
+ };
+
+ qcom,ibat-acc-lut {
+ qcom,lut-col-legend = <(-20) 0 25>;
+ qcom,lut-row-legend = <0 250 500 1000>;
+ qcom,lut-data = <1470 1470 1473>,
+ <1406 1406 1430>,
+ <1247 1247 1414>,
+ <764 764 1338>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-qrd-skuh-4v35-2000mah.dtsi b/arch/arm64/boot/dts/qcom/batterydata-qrd-skuh-4v35-2000mah.dtsi
new file mode 100644
index 00000000000..9be634b713b
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-qrd-skuh-4v35-2000mah.dtsi
@@ -0,0 +1,115 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+qcom,qrd-skuh-4v35-2000mah-data {
+ qcom,default-rbatt-mohm = <188>;
+ qcom,max-voltage-uv = <4350000>;
+ qcom,fcc-mah = <2000>;
+ qcom,rbatt-capacitive-mohm = <50>;
+ qcom,v-cutoff-uv = <3400000>;
+ qcom,chg-term-ua = <100000>;
+ qcom,batt-id-kohm = <110>;
+ qcom,flat-ocv-threshold-uv = <3800000>;
+ qcom,battery-type = "qrd_skuh_4v35_2000mah";
+
+ qcom,fcc-temp-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-data = <1985 2000 2008 1983 1968>;
+ };
+
+ qcom,pc-temp-ocv-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-row-legend = <100 95 90 85 80>,
+ <75 70 65 60 55>,
+ <50 45 40 35 30>,
+ <25 20 15 10 9>,
+ <8 7 6 5 4>,
+ <3 2 1 0>;
+ qcom,lut-data = <4328 4324 4319 4314 4307>,
+ <4226 4246 4249 4249 4245>,
+ <4156 4187 4193 4194 4191>,
+ <4095 4133 4140 4143 4140>,
+ <4037 4080 4089 4093 4091>,
+ <3985 4028 4041 4046 4044>,
+ <3936 3976 3997 4002 4002>,
+ <3895 3932 3952 3960 3960>,
+ <3856 3893 3906 3913 3914>,
+ <3822 3861 3869 3875 3876>,
+ <3793 3831 3841 3847 3848>,
+ <3768 3808 3819 3824 3824>,
+ <3747 3787 3799 3805 3805>,
+ <3727 3772 3783 3788 3787>,
+ <3709 3759 3766 3765 3757>,
+ <3693 3744 3746 3740 3730>,
+ <3674 3724 3727 3720 3708>,
+ <3651 3691 3700 3692 3680>,
+ <3610 3659 3673 3672 3660>,
+ <3601 3654 3670 3668 3657>,
+ <3589 3648 3664 3663 3651>,
+ <3572 3638 3654 3650 3635>,
+ <3549 3619 3631 3623 3605>,
+ <3520 3585 3592 3582 3564>,
+ <3482 3537 3540 3531 3512>,
+ <3429 3473 3473 3464 3445>,
+ <3355 3388 3381 3373 3353>,
+ <3239 3259 3231 3235 3216>,
+ <3000 3000 3000 3000 3000>;
+ };
+
+ qcom,rbatt-sf-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-row-legend = <100 95 90 85 80>,
+ <75 70 65 60 55>,
+ <50 45 40 35 30>,
+ <25 20 15 10 9>,
+ <8 7 6 5 4>,
+ <3 2 1 0>;
+ qcom,lut-data = <1002 268 100 87 81>,
+ <999 271 100 88 82>,
+ <999 271 102 88 82>,
+ <988 274 106 91 84>,
+ <975 275 110 94 85>,
+ <967 271 115 97 86>,
+ <969 261 121 101 89>,
+ <974 256 120 105 91>,
+ <978 254 107 96 86>,
+ <988 257 101 89 83>,
+ <1017 260 102 89 82>,
+ <1046 267 105 92 83>,
+ <1085 275 108 94 85>,
+ <1128 286 112 97 87>,
+ <1187 298 112 94 84>,
+ <1268 310 108 90 83>,
+ <1359 322 109 92 83>,
+ <1505 328 110 91 82>,
+ <1785 371 111 94 84>,
+ <1651 331 112 94 84>,
+ <1305 342 113 93 84>,
+ <1366 351 114 93 83>,
+ <1450 364 113 92 82>,
+ <1582 373 112 92 84>,
+ <1900 398 113 94 85>,
+ <2611 443 117 95 86>,
+ <4080 519 123 102 93>,
+ <8074 696 153 171 149>,
+ <30656 4547 9542 7331 6138>;
+ };
+
+ qcom,ibat-acc-lut {
+ qcom,lut-col-legend = <(-20) 0 25>;
+ qcom,lut-row-legend = <0 250 500 1000>;
+ qcom,lut-data = <1937 1937 1933>,
+ <600 1866 1920>,
+ <107 1602 1898>,
+ <11 878 1841>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-hx8394d-720p-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-hx8394d-720p-video.dtsi
new file mode 100644
index 00000000000..cdc81cd452a
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-hx8394d-720p-video.dtsi
@@ -0,0 +1,84 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/*---------------------------------------------------------------------------
+ * This file is autogenerated file using gcdb parser. Please do not edit it.
+ * Update input XML file to add a new entry or update variable in this file
+ * VERSION = "1.0"
+ *---------------------------------------------------------------------------*/
+&mdss_mdp {
+ dsi_hx8394d_720_vid: qcom,mdss_dsi_hx8394d_720p_video {
+ qcom,mdss-dsi-panel-name = "hx8394d 720p video mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-destination = "display_1";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <720>;
+ qcom,mdss-dsi-panel-height = <1280>;
+ qcom,mdss-dsi-h-front-porch = <52>;
+ qcom,mdss-dsi-h-back-porch = <100>;
+ qcom,mdss-dsi-h-pulse-width = <24>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <20>;
+ qcom,mdss-dsi-v-front-porch = <8>;
+ qcom,mdss-dsi-v-pulse-width = <4>;
+ qcom,mdss-dsi-h-left-border = <0>;
+ qcom,mdss-dsi-h-right-border = <0>;
+ qcom,mdss-dsi-v-top-border = <0>;
+ qcom,mdss-dsi-v-bottom-border = <0>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-underflow-color = <0xff>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-on-command = [39 01 00 00 00 00 04 b9 ff 83 94
+ 39 01 00 00 00 00 03 ba 33 83
+ 39 01 00 00 00 00 10 b1 6c 12 12 37 04 11 f1 80 ec 94 23 80 c0 d2 18
+ 39 01 00 00 00 00 0c b2 00 64 0e 0d 32 23 08 08 1c 4d 00
+ 39 01 00 00 00 00 0d b4 00 ff 03 50 03 50 03 50 01 6a 01 6a
+ 39 01 00 00 00 00 02 bc 07
+ 39 01 00 00 00 00 04 bf 41 0e 01
+ 39 01 00 00 00 00 1f d3 00 07 00 00 00 10 00 32 10 05 00 00 32 10 00 00 00 32 10 00 00 00 36 03 09 09 37 00 00 37
+ 39 01 00 00 00 00 2d d5 02 03 00 01 06 07 04 05 20 21 22 23 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 24 25 18 18 19 19
+ 39 01 00 00 00 00 2d d6 05 04 07 06 01 00 03 02 23 22 21 20 18 18 18 18 18 18 58 58 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 25 24 19 19 18 18
+ 39 01 00 00 00 00 02 cc 09
+ 39 01 00 00 00 00 03 c0 30 14
+ 39 01 00 00 00 00 05 c7 00 c0 40 c0
+ 39 01 00 00 00 00 03 b6 43 43
+ 05 01 00 00 c8 00 02 11 00
+ 05 01 00 00 0a 00 02 29 00];
+ qcom,mdss-dsi-off-command = [05 01 00 00 00 00 02 28 00
+ 05 01 00 00 00 00 02 10 00];
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ qcom,mdss-dsi-h-sync-pulse = <1>;
+ qcom,mdss-dsi-traffic-mode = "burst_mode";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,mdss-dsi-panel-timings = [79 1a 12 00 3e 42 16 1e 15 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x04>;
+ qcom,mdss-dsi-t-clk-pre = <0x1b>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-reset-sequence = <1 20>, <0 1>, <1 20>;
+ qcom,mdss-pan-physical-width-dimension = <59>;
+ qcom,mdss-pan-physical-height-dimension = <104>;
+
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-innolux-720p-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-innolux-720p-video.dtsi
new file mode 100644
index 00000000000..581a701ce7b
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-innolux-720p-video.dtsi
@@ -0,0 +1,196 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/*---------------------------------------------------------------------------
+ * This file is autogenerated file using gcdb parser. Please do not edit it.
+ * Update input XML file to add a new entry or update variable in this file
+ * VERSION = "1.0"
+ *---------------------------------------------------------------------------*/
+&mdss_mdp {
+ dsi_innolux_720p_video: qcom,mdss_dsi_innolux_720p_video {
+ qcom,mdss-dsi-panel-name = "innolux(otm1283a) 720p video mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-destination = "display_1";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <720>;
+ qcom,mdss-dsi-panel-height = <1280>;
+ qcom,mdss-dsi-h-front-porch = <52>;
+ qcom,mdss-dsi-h-back-porch = <100>;
+ qcom,mdss-dsi-h-pulse-width = <24>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <20>;
+ qcom,mdss-dsi-v-front-porch = <8>;
+ qcom,mdss-dsi-v-pulse-width = <4>;
+ qcom,mdss-dsi-h-left-border = <0>;
+ qcom,mdss-dsi-h-right-border = <0>;
+ qcom,mdss-dsi-v-top-border = <0>;
+ qcom,mdss-dsi-v-bottom-border = <0>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-color-order = "rgb_swap_rgb";
+ qcom,mdss-dsi-underflow-color = <0xff>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-on-command = [29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 04 ff 12 83 01
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 03 ff 12 83
+ 29 01 00 00 00 00 02 00 92
+ 29 01 00 00 00 00 02 ff 30
+ 29 01 00 00 00 00 02 00 93
+ 29 01 00 00 00 00 02 ff 02
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0a c0 00 64 00 10 10 00 64 10 10
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 07 c0 00 5c 00 01 00 04
+ 29 01 00 00 00 00 02 00 b3
+ 29 01 00 00 00 00 03 c0 00 50
+ 29 01 00 00 00 00 02 00 81
+ 29 01 00 00 00 00 02 c1 55
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 02 c4 49
+ 29 01 00 00 00 00 02 00 e0
+ 29 01 00 00 00 00 02 c0 c8
+ 29 01 00 00 00 00 02 00 a0
+ 29 01 00 00 00 00 0f c4 05 10 04 02 05 15 11 05 10 07 02 05 15 11
+ 29 01 00 00 00 00 02 00 b0
+ 29 01 00 00 00 00 03 c4 00 00
+ 29 01 00 00 00 00 02 00 91
+ 29 01 00 00 00 00 03 c5 a6 d0
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 03 d8 c7 c7
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 02 d9 87
+ 29 01 00 00 00 00 02 00 b0
+ 29 01 00 00 00 00 03 c5 04 38
+ 29 01 00 00 00 00 02 00 bb
+ 29 01 00 00 00 00 02 c5 80
+ 29 01 00 00 00 00 02 00 82
+ 29 01 00 00 00 00 02 c4 02
+ 29 01 00 00 00 00 02 00 c6
+ 29 01 00 00 00 00 02 b0 03
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 02 d0 40
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 03 d1 00 00
+ 29 01 00 00 00 00 02 00 b2
+ 29 01 00 00 00 00 03 f5 00 00
+ 29 01 00 00 00 00 02 00 b4
+ 29 01 00 00 00 00 03 f5 00 00
+ 29 01 00 00 00 00 02 00 b6
+ 29 01 00 00 00 00 03 f5 00 00
+ 29 01 00 00 00 00 02 00 b8
+ 29 01 00 00 00 00 03 f5 00 00
+ 29 01 00 00 00 00 02 00 94
+ 29 01 00 00 00 00 02 f5 02
+ 29 01 00 00 00 00 02 00 ba
+ 29 01 00 00 00 00 02 f5 03
+ 29 01 00 00 00 00 02 00 b4
+ 29 01 00 00 00 00 02 c5 c0
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 05 f5 02 11 02 11
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 02 c5 50
+ 29 01 00 00 00 00 02 00 94
+ 29 01 00 00 00 00 02 c5 66
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0c cb 00 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 10 cb 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 a0
+ 29 01 00 00 00 00 10 cb 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 b0
+ 29 01 00 00 00 00 10 cb 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 c0
+ 29 01 00 00 00 00 10 cb 05 05 05 05 05 05 05 05 05 00 05 00 00 00 00
+ 29 01 00 00 00 00 02 00 d0
+ 29 01 00 00 00 00 10 cb 00 00 00 00 05 00 00 05 05 05 05 05 05 05 05
+ 29 01 00 00 00 00 02 00 e0
+ 29 01 00 00 00 00 0f cb 05 00 05 00 00 00 00 00 00 00 00 05 00 00
+ 29 01 00 00 00 00 02 00 f0
+ 29 01 00 00 00 00 0c cb ff ff ff ff ff ff ff ff ff ff ff
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 10 cc 29 2a 0a 0c 0e 10 12 14 06 00 08 00 00 00 00
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 10 cc 00 00 00 00 02 00 00 29 2a 09 0b 0d 0f 11 13
+ 29 01 00 00 00 00 02 00 a0
+ 29 01 00 00 00 00 0f cc 05 00 07 00 00 00 00 00 00 00 00 01 00 00
+ 29 01 00 00 00 00 02 00 b0
+ 29 01 00 00 00 00 10 cc 29 2a 13 11 0f 0d 0b 09 01 00 07 00 00 00 00
+ 29 01 00 00 00 00 02 00 c0
+ 29 01 00 00 00 00 10 cc 00 00 00 00 05 00 00 29 2a 14 12 10 0e 0c 0a
+ 29 01 00 00 00 00 02 00 d0
+ 29 01 00 00 00 00 0f cc 02 00 08 00 00 00 00 00 00 00 00 06 00 00
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0d ce 89 05 10 88 05 10 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 0f ce 54 fc 10 54 fd 10 55 00 10 55 01 10 00 00
+ 29 01 00 00 00 00 02 00 a0
+ 29 01 00 00 00 00 0f ce 58 07 04 fc 00 10 00 58 06 04 fd 00 10 00
+ 29 01 00 00 00 00 02 00 b0
+ 29 01 00 00 00 00 0f ce 58 05 04 fe 00 10 00 58 04 04 ff 00 10 00
+ 29 01 00 00 00 00 02 00 c0
+ 29 01 00 00 00 00 0f ce 58 03 05 00 00 10 00 58 02 05 01 00 10 00
+ 29 01 00 00 00 00 02 00 d0
+ 29 01 00 00 00 00 0f ce 58 01 05 02 00 10 00 58 00 05 03 00 10 00
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0f cf 50 00 05 04 00 10 00 50 01 05 05 00 10 00
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 0f cf 50 02 05 06 00 10 00 50 03 05 07 00 10 00
+ 29 01 00 00 00 00 02 00 a0
+ 29 01 00 00 00 00 0f cf 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 b0
+ 29 01 00 00 00 00 0f cf 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 c0
+ 29 01 00 00 00 00 0c cf 39 39 20 20 00 00 01 01 20 00 00
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 11 e1 02 12 18 0e 07 0f 0b 09 04 07 0e 08 0f 12 0c 08
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 11 e2 02 12 18 0e 07 10 0b 0a 04 08 0e 08 0f 12 0c 08
+ 29 01 00 00 00 00 02 00 b5
+ 29 01 00 00 00 00 07 c5 0b 95 ff 0b 95 ff
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 04 ff ff ff ff
+ 29 01 00 00 78 00 02 11 00
+ 29 01 00 00 00 00 02 29 00
+ 29 01 00 00 00 00 02 35 00
+ 29 01 00 00 00 00 02 51 7f
+ 29 01 00 00 00 00 02 53 2c];
+ qcom,mdss-dsi-off-command = [05 01 00 00 00 00 02 28 00
+ 05 01 00 00 78 00 02 10 00];
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ qcom,mdss-dsi-panel-status-command = [06 01 00 01 05 00 02 0A 08];
+ qcom,mdss-dsi-panel-status-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-panel-status-check-mode = "reg_read";
+ qcom,mdss-dsi-panel-status-value = <0x9c>;
+ qcom,mdss-dsi-h-sync-pulse = <1>;
+ qcom,mdss-dsi-traffic-mode = "burst_mode";
+ qcom,mdss-dsi-lane-map = "lane_map_0123";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,mdss-dsi-panel-timings = [92 1A 12 00 3E 42 16 1E 14 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x04>;
+ qcom,mdss-dsi-t-clk-pre = <0x1C>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <255>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs";
+ qcom,mdss-dsi-reset-sequence = <1 1>, <0 50>, <1 50>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-jdi-1080p-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-1080p-video.dtsi
new file mode 100644
index 00000000000..d4edb95bdcd
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-1080p-video.dtsi
@@ -0,0 +1,72 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/*---------------------------------------------------------------------------
+ * This file is autogenerated file using gcdb parser. Please do not edit it.
+ * Update input XML file to add a new entry or update variable in this file
+ * VERSION = "1.0"
+ *---------------------------------------------------------------------------*/
+&mdss_mdp {
+ dsi_jdi_1080_vid: qcom,mdss_dsi_jdi_1080p_video {
+ qcom,mdss-dsi-panel-name = "jdi 1080p video mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-destination = "display_1";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <1080>;
+ qcom,mdss-dsi-panel-height = <1920>;
+ qcom,mdss-dsi-h-front-porch = <96>;
+ qcom,mdss-dsi-h-back-porch = <64>;
+ qcom,mdss-dsi-h-pulse-width = <16>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <16>;
+ qcom,mdss-dsi-v-front-porch = <4>;
+ qcom,mdss-dsi-v-pulse-width = <1>;
+ qcom,mdss-dsi-h-left-border = <0>;
+ qcom,mdss-dsi-h-right-border = <0>;
+ qcom,mdss-dsi-v-top-border = <0>;
+ qcom,mdss-dsi-v-bottom-border = <0>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-underflow-color = <0xff>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-on-command = [15 01 00 00 00 00 02 55 00
+ 15 01 00 00 00 00 02 53 2C
+ 15 01 00 00 00 00 02 35 00
+ 05 01 00 00 78 00 02 29 00
+ 05 01 00 00 78 00 02 11 00];
+ qcom,mdss-dsi-off-command = [05 01 00 00 02 00 02 28 00
+ 05 01 00 00 79 00 02 10 00];
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ qcom,mdss-dsi-h-sync-pulse = <0>;
+ qcom,mdss-dsi-traffic-mode = "burst_mode";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,mdss-dsi-panel-timings = [e7 36 24 00 66 6a 2a 3a 2d 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x04>;
+ qcom,mdss-dsi-t-clk-pre = <0x1b>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-reset-sequence = <1 10>, <0 10>, <1 10>;
+ qcom,mdss-pan-physical-width-dimension = <61>;
+ qcom,mdss-pan-physical-height-dimension = <110>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-jdi-4k-dualmipi0-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-4k-dualmipi0-video.dtsi
new file mode 100644
index 00000000000..753dcfa7f70
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-4k-dualmipi0-video.dtsi
@@ -0,0 +1,82 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&mdss_mdp {
+ dsi_dual_jdi_4k_video_0: qcom,dsi_jdi_4k_video_0 {
+ qcom,mdss-dsi-panel-name = "JDI 4K Dual 0 video mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-destination = "display_1";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <1920>;
+ qcom,mdss-dsi-panel-height = <2160>;
+ qcom,mdss-dsi-h-front-porch = <100>;
+ qcom,mdss-dsi-h-back-porch = <80>;
+ qcom,mdss-dsi-h-pulse-width = <12>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <16>;
+ qcom,mdss-dsi-v-front-porch = <16>;
+ qcom,mdss-dsi-v-pulse-width = <4>;
+ qcom,mdss-dsi-h-left-border = <0>;
+ qcom,mdss-dsi-h-right-border = <0>;
+ qcom,mdss-dsi-v-top-border = <0>;
+ qcom,mdss-dsi-v-bottom-border = <0>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-underflow-color = <0x1eaaaa>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-h-sync-pulse = <0>;
+ qcom,mdss-dsi-traffic-mode = "non_burst_sync_event";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,cmd-sync-wait-broadcast;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,mdss-dsi-panel-timings = [3e 38 26 00 68 6e 2a 3c 2c 03
+ 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x03>;
+ qcom,mdss-dsi-t-clk-pre = <0x27>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-on-command = [15 01 00 00 0a 00 02 51 FF
+ 15 01 00 00 0a 00 02 53 24
+ 05 01 00 00 78 00 01 11
+ 05 01 00 00 10 00 01 29];
+ /* Set display on, wait 16ms */
+ qcom,mdss-dsi-on-command-state = "dsi_hs_mode";
+ qcom,mdss-dsi-off-command = [05 01 00 00 32 00 02 28 00
+ 05 01 00 00 78 00 02 10 00];
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ qcom,mdss-dsi-reset-sequence = <1 200>, <0 200>, <1 200>;
+
+ qcom,mdss-dsi-fbc-enable;
+ qcom,mdss-dsi-fbc-bpp = <12>;
+ qcom,mdss-dsi-fbc-packing = <1>;
+ qcom,mdss-dsi-fbc-quant-error;
+ qcom,mdss-dsi-fbc-bias = <2>;
+ qcom,mdss-dsi-fbc-vlc-mode;
+ qcom,mdss-dsi-fbc-bflc-mode;
+ qcom,mdss-dsi-fbc-lossy-mode-idx = <3>;
+ qcom,mdss-dsi-fbc-pat-mode;
+ qcom,mdss-dsi-fbc-budget-ctrl = <5>;
+ qcom,mdss-dsi-fbc-block-budget = <91>;
+ qcom,mdss-dsi-fbc-h-line-budget = <1200>;
+ qcom,mdss-dsi-fbc-lossless-threshold = <0x200>;
+ qcom,mdss-dsi-fbc-lossy-threshold = <192>;
+ qcom,mdss-dsi-fbc-rgb-threshold = <4>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-jdi-4k-dualmipi1-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-4k-dualmipi1-video.dtsi
new file mode 100644
index 00000000000..b6f534c4608
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-4k-dualmipi1-video.dtsi
@@ -0,0 +1,83 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&mdss_mdp {
+ dsi_dual_jdi_4k_video_1: qcom,dsi_jdi_4k_video_1 {
+ qcom,mdss-dsi-panel-name = "JDI 4K Dual 1 video mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi1>;
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-destination = "display_2";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <1920>;
+ qcom,mdss-dsi-panel-height = <2160>;
+ qcom,mdss-dsi-h-front-porch = <100>;
+ qcom,mdss-dsi-h-back-porch = <80>;
+ qcom,mdss-dsi-h-pulse-width = <12>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <16>;
+ qcom,mdss-dsi-v-front-porch = <16>;
+ qcom,mdss-dsi-v-pulse-width = <4>;
+ qcom,mdss-dsi-h-left-border = <0>;
+ qcom,mdss-dsi-h-right-border = <0>;
+ qcom,mdss-dsi-v-top-border = <0>;
+ qcom,mdss-dsi-v-bottom-border = <0>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-underflow-color = <0x1eaaaa>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-h-sync-pulse = <0>;
+ qcom,mdss-dsi-traffic-mode = "non_burst_sync_event";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,cmd-sync-wait-broadcast;
+ qcom,cmd-sync-wait-trigger;
+ qcom,mdss-dsi-panel-timings = [3e 38 26 00 68 6e 2a 3c 2c 03
+ 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x03>;
+ qcom,mdss-dsi-t-clk-pre = <0x27>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-on-command = [15 01 00 00 0a 00 02 51 FF
+ 15 01 00 00 0a 00 02 53 24
+ 05 01 00 00 78 00 01 11
+ 05 01 00 00 10 00 01 29];
+ /* Set display on, wait 16ms */
+ qcom,mdss-dsi-on-command-state = "dsi_hs_mode";
+ qcom,mdss-dsi-off-command = [05 01 00 00 32 00 02 28 00
+ 05 01 00 00 78 00 02 10 00];
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ qcom,mdss-dsi-reset-sequence = <1 200>, <0 200>, <1 200>;
+
+ qcom,mdss-dsi-fbc-enable;
+ qcom,mdss-dsi-fbc-bpp = <12>;
+ qcom,mdss-dsi-fbc-packing = <1>;
+ qcom,mdss-dsi-fbc-quant-error;
+ qcom,mdss-dsi-fbc-bias = <2>;
+ qcom,mdss-dsi-fbc-vlc-mode;
+ qcom,mdss-dsi-fbc-bflc-mode;
+ qcom,mdss-dsi-fbc-lossy-mode-idx = <3>;
+ qcom,mdss-dsi-fbc-pat-mode;
+ qcom,mdss-dsi-fbc-budget-ctrl = <5>;
+ qcom,mdss-dsi-fbc-block-budget = <91>;
+ qcom,mdss-dsi-fbc-h-line-budget = <1200>;
+ qcom,mdss-dsi-fbc-lossless-threshold = <0x200>;
+ qcom,mdss-dsi-fbc-lossy-threshold = <192>;
+ qcom,mdss-dsi-fbc-rgb-threshold = <4>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi0-cmd.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi0-cmd.dtsi
new file mode 100644
index 00000000000..fc9e2fa72c7
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi0-cmd.dtsi
@@ -0,0 +1,93 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&mdss_mdp {
+ dsi_dual_jdi_cmd_0: qcom,mdss_dsi_jdi_qhd_dualmipi0_cmd{
+ qcom,mdss-dsi-panel-name = "Dual 0 cmd mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
+ qcom,mdss-dsi-panel-type = "dsi_cmd_mode";
+ qcom,mdss-dsi-panel-destination = "display_1";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <1280>;
+ qcom,mdss-dsi-panel-height = <1440>;
+ qcom,mdss-dsi-h-front-porch = <120>;
+ qcom,mdss-dsi-h-back-porch = <44>;
+ qcom,mdss-dsi-h-pulse-width = <16>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <4>;
+ qcom,mdss-dsi-v-front-porch = <8>;
+ qcom,mdss-dsi-v-pulse-width = <4>;
+ qcom,mdss-dsi-h-left-border = <0>;
+ qcom,mdss-dsi-h-right-border = <0>;
+ qcom,mdss-dsi-v-top-border = <0>;
+ qcom,mdss-dsi-v-bottom-border = <0>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-color-order = "rgb_swap_rgb";
+ qcom,mdss-dsi-underflow-color = <0xff>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-h-sync-pulse = <0>;
+ qcom,mdss-dsi-traffic-mode = "non_burst_sync_event";
+ qcom,mdss-dsi-lane-map = "lane_map_0123";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,mdss-dsi-hor-line-idle = <0 40 256>,
+ <40 120 128>,
+ <120 240 64>;
+ qcom,mdss-dsi-panel-timings = [cd 32 22 00 60 64 26 34 29 03
+ 04 00];
+ qcom,mdss-dsi-reset-sequence = <1 10>, <0 10>, <1 10>;
+ qcom,mdss-dsi-t-clk-post = <0x03>;
+ qcom,mdss-dsi-t-clk-pre = <0x27>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-te-pin-select = <1>;
+ qcom,mdss-dsi-wr-mem-start = <0x2c>;
+ qcom,mdss-dsi-wr-mem-continue = <0x3c>;
+ qcom,mdss-dsi-te-dcs-command = <1>;
+ qcom,mdss-dsi-te-check-enable;
+ qcom,mdss-dsi-te-using-te-pin;
+ qcom,mdss-dsi-on-command = [29 01 00 00 00 00 02 b0 03
+ 05 01 00 00 0a 00 01 00
+ /* Soft reset, wait 10ms */
+ 15 01 00 00 0a 00 02 3a 77
+ /* Set Pixel format (24 bpp) */
+ 39 01 00 00 0a 00 05 2a 00 00 04 ff
+ /* Set Column address */
+ 39 01 00 00 0a 00 05 2b 00 00 05 9f
+ /* Set page address */
+ 15 01 00 00 0a 00 02 35 00
+ /* Set tear on */
+ 39 01 00 00 0a 00 03 44 00 00
+ /* Set tear scan line */
+ 15 01 00 00 0a 00 02 51 ff
+ /* write display brightness */
+ 15 01 00 00 0a 00 02 53 24
+ /* write control brightness */
+ 15 01 00 00 0a 00 02 55 00
+ /* CABC brightness */
+ 05 01 00 00 78 00 01 11
+ /* exit sleep mode, wait 120ms */
+ 05 01 00 00 10 00 01 29];
+ /* Set display on, wait 16ms */
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command = [05 01 00 00 32 00 02 28 00
+ 05 01 00 00 78 00 02 10 00];
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi0-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi0-video.dtsi
new file mode 100644
index 00000000000..5aba3e52115
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi0-video.dtsi
@@ -0,0 +1,92 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&mdss_mdp {
+ dsi_dual_jdi_video_0: qcom,dsi_jdi_qhd_video_0 {
+ qcom,mdss-dsi-panel-name = "Dual 0 video mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-destination = "display_1";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <1280>;
+ qcom,mdss-dsi-panel-height = <1440>;
+ qcom,mdss-dsi-h-front-porch = <120>;
+ qcom,mdss-dsi-h-back-porch = <44>;
+ qcom,mdss-dsi-h-pulse-width = <16>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <4>;
+ qcom,mdss-dsi-v-front-porch = <8>;
+ qcom,mdss-dsi-v-pulse-width = <4>;
+ qcom,mdss-dsi-h-left-border = <0>;
+ qcom,mdss-dsi-h-right-border = <0>;
+ qcom,mdss-dsi-v-top-border = <0>;
+ qcom,mdss-dsi-v-bottom-border = <0>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-underflow-color = <0xff>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-h-sync-pulse = <0>;
+ qcom,mdss-dsi-traffic-mode = "non_burst_sync_event";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,cmd-sync-wait-broadcast;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,mdss-dsi-panel-timings = [cd 32 22 00 60 64 26 34 29 03
+ 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x03>;
+ qcom,mdss-dsi-t-clk-pre = <0x27>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-on-command = [05 01 00 00 0a 00 01 00
+ /* Soft reset, wait 10ms */
+ 15 01 00 00 0a 00 02 3a 77
+ /* Set Pixel format (24 bpp) */
+ 39 01 00 00 0a 00 05 2a 00 00 04 ff
+ /* Set Column address */
+ 39 01 00 00 0a 00 05 2b 00 00 05 9f
+ /* Set page address */
+ 15 01 00 00 0a 00 02 35 00
+ /* Set tear on */
+ 39 01 00 00 0a 00 03 44 00 00
+ /* Set tear scan line */
+ 15 01 00 00 0a 00 02 51 ff
+ /* write display brightness */
+ 15 01 00 00 0a 00 02 53 24
+ /* write control brightness */
+ 15 01 00 00 0a 00 02 55 00
+ /* CABC brightness */
+ 05 01 00 00 78 00 01 11
+ /* exit sleep mode, wait 120ms */
+ 23 01 00 00 0a 00 02 b0 00
+ /* MCAP */
+ 29 01 00 00 0a 00 02 b3 14
+ /* Interface setting */
+ 29 01 00 00 0a 00 14 ce 7d 40 48 56 67
+ 78 88 98 a7 b5 c3 d1 de e9 f2 fa ff 04
+ 00 /* Backlight control 4 */
+ 23 01 00 00 0a 00 02 b0 03
+ /* MCAP */
+ 05 01 00 00 10 00 01 29];
+ /* Set display on, wait 16ms */
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command = [05 01 00 00 32 00 02 28 00
+ 05 01 00 00 78 00 02 10 00];
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ qcom,mdss-dsi-reset-sequence = <1 10>, <0 10>, <1 10>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi1-cmd.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi1-cmd.dtsi
new file mode 100644
index 00000000000..46b46c2608a
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi1-cmd.dtsi
@@ -0,0 +1,93 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&mdss_mdp {
+ dsi_dual_jdi_cmd_1: qcom,mdss_dsi_jdi_qhd_dualmipi1_cmd{
+ qcom,mdss-dsi-panel-name = "Dual 1 cmd mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi1>;
+ qcom,mdss-dsi-panel-type = "dsi_cmd_mode";
+ qcom,mdss-dsi-panel-destination = "display_2";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <1280>;
+ qcom,mdss-dsi-panel-height = <1440>;
+ qcom,mdss-dsi-h-front-porch = <120>;
+ qcom,mdss-dsi-h-back-porch = <44>;
+ qcom,mdss-dsi-h-pulse-width = <16>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <4>;
+ qcom,mdss-dsi-v-front-porch = <8>;
+ qcom,mdss-dsi-v-pulse-width = <4>;
+ qcom,mdss-dsi-h-left-border = <0>;
+ qcom,mdss-dsi-h-right-border = <0>;
+ qcom,mdss-dsi-v-top-border = <0>;
+ qcom,mdss-dsi-v-bottom-border = <0>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-color-order = "rgb_swap_rgb";
+ qcom,mdss-dsi-underflow-color = <0xff>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-h-sync-pulse = <0>;
+ qcom,mdss-dsi-traffic-mode = "non_burst_sync_event";
+ qcom,mdss-dsi-lane-map = "lane_map_0123";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,mdss-dsi-hor-line-idle = <0 40 256>,
+ <40 120 128>,
+ <120 240 64>;
+ qcom,mdss-dsi-panel-timings = [cd 32 22 00 60 64 26 34 29 03
+ 04 00];
+ qcom,mdss-dsi-reset-sequence = <1 10>, <0 10>, <1 10>;
+ qcom,mdss-dsi-t-clk-post = <0x03>;
+ qcom,mdss-dsi-t-clk-pre = <0x27>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-te-pin-select = <1>;
+ qcom,mdss-dsi-wr-mem-start = <0x2c>;
+ qcom,mdss-dsi-wr-mem-continue = <0x3c>;
+ qcom,mdss-dsi-te-dcs-command = <1>;
+ qcom,mdss-dsi-te-check-enable;
+ qcom,mdss-dsi-te-using-te-pin;
+ qcom,mdss-dsi-on-command = [29 01 00 00 00 00 02 b0 03
+ 05 01 00 00 0a 00 01 00
+ /* Soft reset, wait 10ms */
+ 15 01 00 00 0a 00 02 3a 77
+ /* Set Pixel format (24 bpp) */
+ 39 01 00 00 0a 00 05 2a 00 00 04 ff
+ /* Set Column address */
+ 39 01 00 00 0a 00 05 2b 00 00 05 9f
+ /* Set page address */
+ 15 01 00 00 0a 00 02 35 00
+ /* Set tear on */
+ 39 01 00 00 0a 00 03 44 00 00
+ /* Set tear scan line */
+ 15 01 00 00 0a 00 02 51 ff
+ /* write display brightness */
+ 15 01 00 00 0a 00 02 53 24
+ /* write control brightness */
+ 15 01 00 00 0a 00 02 55 00
+ /* CABC brightness */
+ 05 01 00 00 78 00 01 11
+ /* exit sleep mode, wait 120ms */
+ 05 01 00 00 10 00 01 29];
+ /* Set display on, wait 16ms */
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command = [05 01 00 00 32 00 02 28 00
+ 05 01 00 00 78 00 02 10 00];
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi1-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi1-video.dtsi
new file mode 100644
index 00000000000..11e5f05809a
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi1-video.dtsi
@@ -0,0 +1,93 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&mdss_mdp {
+ dsi_dual_jdi_video_1: qcom,dsi_jdi_qhd_video_1 {
+ qcom,mdss-dsi-panel-name = "Dual 1 video mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi1>;
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-destination = "display_2";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <1280>;
+ qcom,mdss-dsi-panel-height = <1440>;
+ qcom,mdss-dsi-h-front-porch = <120>;
+ qcom,mdss-dsi-h-back-porch = <44>;
+ qcom,mdss-dsi-h-pulse-width = <16>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <4>;
+ qcom,mdss-dsi-v-front-porch = <8>;
+ qcom,mdss-dsi-v-pulse-width = <4>;
+ qcom,mdss-dsi-h-left-border = <0>;
+ qcom,mdss-dsi-h-right-border = <0>;
+ qcom,mdss-dsi-v-top-border = <0>;
+ qcom,mdss-dsi-v-bottom-border = <0>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-underflow-color = <0xff>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-h-sync-pulse = <0>;
+ qcom,mdss-dsi-traffic-mode = "non_burst_sync_event";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,cmd-sync-wait-broadcast;
+ qcom,cmd-sync-wait-trigger;
+ qcom,mdss-dsi-panel-timings = [cd 32 22 00 60 64 26 34 29 03
+ 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x03>;
+ qcom,mdss-dsi-t-clk-pre = <0x27>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-on-command = [05 01 00 00 0a 00 01 00
+ /* Soft reset, wait 10ms */
+ 15 01 00 00 0a 00 02 3a 77
+ /* Set Pixel format (24 bpp) */
+ 39 01 00 00 0a 00 05 2a 00 00 04 ff
+ /* Set Column address */
+ 39 01 00 00 0a 00 05 2b 00 00 05 9f
+ /* Set page address */
+ 15 01 00 00 0a 00 02 35 00
+ /* Set tear on */
+ 39 01 00 00 0a 00 03 44 00 00
+ /* Set tear scan line */
+ 15 01 00 00 0a 00 02 51 ff
+ /* write display brightness */
+ 15 01 00 00 0a 00 02 53 24
+ /* write control brightness */
+ 15 01 00 00 0a 00 02 55 00
+ /* CABC brightness */
+ 05 01 00 00 78 00 01 11
+ /* exit sleep mode, wait 120ms */
+ 23 01 00 00 0a 00 02 b0 00
+ /* MCAP */
+ 29 01 00 00 0a 00 02 b3 14
+ /* Interface setting */
+ 29 01 00 00 0a 00 14 ce 7d 40 48 56 67
+ 78 88 98 a7 b5 c3 d1 de e9 f2 fa ff 04
+ 00 /* Backlight control 4 */
+ 23 01 00 00 0a 00 02 b0 03
+ /* MCAP */
+ 05 01 00 00 10 00 01 29];
+ /* Set display on, wait 16ms */
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command = [05 01 00 00 32 00 02 28 00
+ 05 01 00 00 78 00 02 10 00];
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ qcom,mdss-dsi-reset-sequence = <1 10>, <0 10>, <1 10>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-nt35590-720p-cmd.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-nt35590-720p-cmd.dtsi
new file mode 100644
index 00000000000..271d0c9349c
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-nt35590-720p-cmd.dtsi
@@ -0,0 +1,539 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/*---------------------------------------------------------------------------
+ * This file is autogenerated file using gcdb parser. Please do not edit it.
+ * Update input XML file to add a new entry or update variable in this file
+ * VERSION = "1.0"
+ *---------------------------------------------------------------------------*/
+&mdss_mdp {
+ dsi_nt35590_720_cmd: qcom,mdss_dsi_nt35590_720p_cmd {
+ qcom,mdss-dsi-panel-name = "nt35590 720p command mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
+ qcom,mdss-dsi-panel-type = "dsi_cmd_mode";
+ qcom,mdss-dsi-panel-destination = "display_1";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <720>;
+ qcom,mdss-dsi-panel-height = <1280>;
+ qcom,mdss-dsi-h-front-porch = <140>;
+ qcom,mdss-dsi-h-back-porch = <164>;
+ qcom,mdss-dsi-h-pulse-width = <8>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <1>;
+ qcom,mdss-dsi-v-front-porch = <6>;
+ qcom,mdss-dsi-v-pulse-width = <1>;
+ qcom,mdss-dsi-h-left-border = <0>;
+ qcom,mdss-dsi-h-right-border = <0>;
+ qcom,mdss-dsi-v-top-border = <0>;
+ qcom,mdss-dsi-v-bottom-border = <0>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-underflow-color = <0xff>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-on-command = [29 01 00 00 00 00 02 FF EE
+ 29 01 00 00 00 00 02 26 08
+ 29 01 00 00 00 00 02 26 00
+ 29 01 00 00 10 00 02 FF 00
+ 29 01 00 00 00 00 02 BA 03
+ 29 01 00 00 00 00 02 C2 08
+ 29 01 00 00 00 00 02 FF 01
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 00 00 02 00 4A
+ 29 01 00 00 00 00 02 01 33
+ 29 01 00 00 00 00 02 02 53
+ 29 01 00 00 00 00 02 03 55
+ 29 01 00 00 00 00 02 04 55
+ 29 01 00 00 00 00 02 05 33
+ 29 01 00 00 00 00 02 06 22
+ 29 01 00 00 00 00 02 08 56
+ 29 01 00 00 00 00 02 09 8F
+ 29 01 00 00 00 00 02 36 73
+ 29 01 00 00 00 00 02 0B 9F
+ 29 01 00 00 00 00 02 0C 9F
+ 29 01 00 00 00 00 02 0D 2F
+ 29 01 00 00 00 00 02 0E 24
+ 29 01 00 00 00 00 02 11 83
+ 29 01 00 00 00 00 02 12 03
+ 29 01 00 00 00 00 02 71 2C
+ 29 01 00 00 00 00 02 6F 03
+ 29 01 00 00 00 00 02 0F 0A
+ 29 01 00 00 00 00 02 FF 05
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 00 00 02 01 00
+ 29 01 00 00 00 00 02 02 8B
+ 29 01 00 00 00 00 02 03 82
+ 29 01 00 00 00 00 02 04 82
+ 29 01 00 00 00 00 02 05 30
+ 29 01 00 00 00 00 02 06 33
+ 29 01 00 00 00 00 02 07 01
+ 29 01 00 00 00 00 02 08 00
+ 29 01 00 00 00 00 02 09 46
+ 29 01 00 00 00 00 02 0A 46
+ 29 01 00 00 00 00 02 0D 0B
+ 29 01 00 00 00 00 02 0E 1D
+ 29 01 00 00 00 00 02 0F 08
+ 29 01 00 00 00 00 02 10 53
+ 29 01 00 00 00 00 02 11 00
+ 29 01 00 00 00 00 02 12 00
+ 29 01 00 00 00 00 02 14 01
+ 29 01 00 00 00 00 02 15 00
+ 29 01 00 00 00 00 02 16 05
+ 29 01 00 00 00 00 02 17 00
+ 29 01 00 00 00 00 02 19 7F
+ 29 01 00 00 00 00 02 1A FF
+ 29 01 00 00 00 00 02 1B 0F
+ 29 01 00 00 00 00 02 1C 00
+ 29 01 00 00 00 00 02 1D 00
+ 29 01 00 00 00 00 02 1E 00
+ 29 01 00 00 00 00 02 1F 07
+ 29 01 00 00 00 00 02 20 00
+ 29 01 00 00 00 00 02 21 06
+ 29 01 00 00 00 00 02 22 55
+ 29 01 00 00 00 00 02 23 4D
+ 29 01 00 00 00 00 02 2D 02
+ 29 01 00 00 00 00 02 28 01
+ 29 01 00 00 00 00 02 2F 02
+ 29 01 00 00 00 00 02 83 01
+ 29 01 00 00 00 00 02 9E 58
+ 29 01 00 00 00 00 02 9F 6A
+ 29 01 00 00 00 00 02 A0 01
+ 29 01 00 00 00 00 02 A2 10
+ 29 01 00 00 00 00 02 BB 0A
+ 29 01 00 00 00 00 02 BC 0A
+ 29 01 00 00 00 00 02 32 08
+ 29 01 00 00 00 00 02 33 B8
+ 29 01 00 00 00 00 02 36 01
+ 29 01 00 00 00 00 02 37 00
+ 29 01 00 00 00 00 02 43 00
+ 29 01 00 00 00 00 02 4B 21
+ 29 01 00 00 00 00 02 4C 03
+ 29 01 00 00 00 00 02 50 21
+ 29 01 00 00 00 00 02 51 03
+ 29 01 00 00 00 00 02 58 21
+ 29 01 00 00 00 00 02 59 03
+ 29 01 00 00 00 00 02 5D 21
+ 29 01 00 00 00 00 02 5E 03
+ 29 01 00 00 00 00 02 6C 00
+ 29 01 00 00 00 00 02 6D 00
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 00 00 02 FF 01
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 00 00 02 75 00
+ 29 01 00 00 00 00 02 76 7D
+ 29 01 00 00 00 00 02 77 00
+ 29 01 00 00 00 00 02 78 8A
+ 29 01 00 00 00 00 02 79 00
+ 29 01 00 00 00 00 02 7A 9C
+ 29 01 00 00 00 00 02 7B 00
+ 29 01 00 00 00 00 02 7C B1
+ 29 01 00 00 00 00 02 7D 00
+ 29 01 00 00 00 00 02 7E BF
+ 29 01 00 00 00 00 02 7F 00
+ 29 01 00 00 00 00 02 80 CF
+ 29 01 00 00 00 00 02 81 00
+ 29 01 00 00 00 00 02 82 DD
+ 29 01 00 00 00 00 02 83 00
+ 29 01 00 00 00 00 02 84 E8
+ 29 01 00 00 00 00 02 85 00
+ 29 01 00 00 00 00 02 86 F2
+ 29 01 00 00 00 00 02 87 01
+ 29 01 00 00 00 00 02 88 1F
+ 29 01 00 00 00 00 02 89 01
+ 29 01 00 00 00 00 02 8A 41
+ 29 01 00 00 00 00 02 8B 01
+ 29 01 00 00 00 00 02 8C 78
+ 29 01 00 00 00 00 02 8D 01
+ 29 01 00 00 00 00 02 8E A5
+ 29 01 00 00 00 00 02 8F 01
+ 29 01 00 00 00 00 02 90 EE
+ 29 01 00 00 00 00 02 91 02
+ 29 01 00 00 00 00 02 92 29
+ 29 01 00 00 00 00 02 93 02
+ 29 01 00 00 00 00 02 94 2A
+ 29 01 00 00 00 00 02 95 02
+ 29 01 00 00 00 00 02 96 5D
+ 29 01 00 00 00 00 02 97 02
+ 29 01 00 00 00 00 02 98 93
+ 29 01 00 00 00 00 02 99 02
+ 29 01 00 00 00 00 02 9A B8
+ 29 01 00 00 00 00 02 9B 02
+ 29 01 00 00 00 00 02 9C E7
+ 29 01 00 00 00 00 02 9D 03
+ 29 01 00 00 00 00 02 9E 07
+ 29 01 00 00 00 00 02 9F 03
+ 29 01 00 00 00 00 02 A0 37
+ 29 01 00 00 00 00 02 A2 03
+ 29 01 00 00 00 00 02 A3 46
+ 29 01 00 00 00 00 02 A4 03
+ 29 01 00 00 00 00 02 A5 56
+ 29 01 00 00 00 00 02 A6 03
+ 29 01 00 00 00 00 02 A7 66
+ 29 01 00 00 00 00 02 A9 03
+ 29 01 00 00 00 00 02 AA 7A
+ 29 01 00 00 00 00 02 AB 03
+ 29 01 00 00 00 00 02 AC 93
+ 29 01 00 00 00 00 02 AD 03
+ 29 01 00 00 00 00 02 AE A3
+ 29 01 00 00 00 00 02 AF 03
+ 29 01 00 00 00 00 02 B0 B4
+ 29 01 00 00 00 00 02 B1 03
+ 29 01 00 00 00 00 02 B2 CB
+ 29 01 00 00 00 00 02 B3 00
+ 29 01 00 00 00 00 02 B4 7D
+ 29 01 00 00 00 00 02 B5 00
+ 29 01 00 00 00 00 02 B6 8A
+ 29 01 00 00 00 00 02 B7 00
+ 29 01 00 00 00 00 02 B8 9C
+ 29 01 00 00 00 00 02 B9 00
+ 29 01 00 00 00 00 02 BA B1
+ 29 01 00 00 00 00 02 BB 00
+ 29 01 00 00 00 00 02 BC BF
+ 29 01 00 00 00 00 02 BD 00
+ 29 01 00 00 00 00 02 BE CF
+ 29 01 00 00 00 00 02 BF 00
+ 29 01 00 00 00 00 02 C0 DD
+ 29 01 00 00 00 00 02 C1 00
+ 29 01 00 00 00 00 02 C2 E8
+ 29 01 00 00 00 00 02 C3 00
+ 29 01 00 00 00 00 02 C4 F2
+ 29 01 00 00 00 00 02 C5 01
+ 29 01 00 00 00 00 02 C6 1F
+ 29 01 00 00 00 00 02 C7 01
+ 29 01 00 00 00 00 02 C8 41
+ 29 01 00 00 00 00 02 C9 01
+ 29 01 00 00 00 00 02 CA 78
+ 29 01 00 00 00 00 02 CB 01
+ 29 01 00 00 00 00 02 CC A5
+ 29 01 00 00 00 00 02 CD 01
+ 29 01 00 00 00 00 02 CE EE
+ 29 01 00 00 00 00 02 CF 02
+ 29 01 00 00 00 00 02 D0 29
+ 29 01 00 00 00 00 02 D1 02
+ 29 01 00 00 00 00 02 D2 2A
+ 29 01 00 00 00 00 02 D3 02
+ 29 01 00 00 00 00 02 D4 5D
+ 29 01 00 00 00 00 02 D5 02
+ 29 01 00 00 00 00 02 D6 93
+ 29 01 00 00 00 00 02 D7 02
+ 29 01 00 00 00 00 02 D8 B8
+ 29 01 00 00 00 00 02 D9 02
+ 29 01 00 00 00 00 02 DA E7
+ 29 01 00 00 00 00 02 DB 03
+ 29 01 00 00 00 00 02 DC 07
+ 29 01 00 00 00 00 02 DD 03
+ 29 01 00 00 00 00 02 DE 37
+ 29 01 00 00 00 00 02 DF 03
+ 29 01 00 00 00 00 02 E0 46
+ 29 01 00 00 00 00 02 E1 03
+ 29 01 00 00 00 00 02 E2 56
+ 29 01 00 00 00 00 02 E3 03
+ 29 01 00 00 00 00 02 E4 66
+ 29 01 00 00 00 00 02 E5 03
+ 29 01 00 00 00 00 02 E6 7A
+ 29 01 00 00 00 00 02 E7 03
+ 29 01 00 00 00 00 02 E8 93
+ 29 01 00 00 00 00 02 E9 03
+ 29 01 00 00 00 00 02 EA A3
+ 29 01 00 00 00 00 02 EB 03
+ 29 01 00 00 00 00 02 EC B4
+ 29 01 00 00 00 00 02 ED 03
+ 29 01 00 00 00 00 02 EE CB
+ 29 01 00 00 00 00 02 EF 00
+ 29 01 00 00 00 00 02 F0 ED
+ 29 01 00 00 00 00 02 F1 00
+ 29 01 00 00 00 00 02 F2 F3
+ 29 01 00 00 00 00 02 F3 00
+ 29 01 00 00 00 00 02 F4 FE
+ 29 01 00 00 00 00 02 F5 01
+ 29 01 00 00 00 00 02 F6 09
+ 29 01 00 00 00 00 02 F7 01
+ 29 01 00 00 00 00 02 F8 13
+ 29 01 00 00 00 00 02 F9 01
+ 29 01 00 00 00 00 02 FA 1D
+ 29 01 00 00 00 00 02 FF 02
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 00 00 02 00 01
+ 29 01 00 00 00 00 02 01 26
+ 29 01 00 00 00 00 02 02 01
+ 29 01 00 00 00 00 02 03 2F
+ 29 01 00 00 00 00 02 04 01
+ 29 01 00 00 00 00 02 05 37
+ 29 01 00 00 00 00 02 06 01
+ 29 01 00 00 00 00 02 07 56
+ 29 01 00 00 00 00 02 08 01
+ 29 01 00 00 00 00 02 09 70
+ 29 01 00 00 00 00 02 0A 01
+ 29 01 00 00 00 00 02 0B 9D
+ 29 01 00 00 00 00 02 0C 01
+ 29 01 00 00 00 00 02 0D C2
+ 29 01 00 00 00 00 02 0E 01
+ 29 01 00 00 00 00 02 0F FF
+ 29 01 00 00 00 00 02 10 02
+ 29 01 00 00 00 00 02 11 31
+ 29 01 00 00 00 00 02 12 02
+ 29 01 00 00 00 00 02 13 32
+ 29 01 00 00 00 00 02 14 02
+ 29 01 00 00 00 00 02 15 60
+ 29 01 00 00 00 00 02 16 02
+ 29 01 00 00 00 00 02 17 94
+ 29 01 00 00 00 00 02 18 02
+ 29 01 00 00 00 00 02 19 B5
+ 29 01 00 00 00 00 02 1A 02
+ 29 01 00 00 00 00 02 1B E3
+ 29 01 00 00 00 00 02 1C 03
+ 29 01 00 00 00 00 02 1D 03
+ 29 01 00 00 00 00 02 1E 03
+ 29 01 00 00 00 00 02 1F 2D
+ 29 01 00 00 00 00 02 20 03
+ 29 01 00 00 00 00 02 21 3A
+ 29 01 00 00 00 00 02 22 03
+ 29 01 00 00 00 00 02 23 48
+ 29 01 00 00 00 00 02 24 03
+ 29 01 00 00 00 00 02 25 57
+ 29 01 00 00 00 00 02 26 03
+ 29 01 00 00 00 00 02 27 68
+ 29 01 00 00 00 00 02 28 03
+ 29 01 00 00 00 00 02 29 7B
+ 29 01 00 00 00 00 02 2A 03
+ 29 01 00 00 00 00 02 2B 90
+ 29 01 00 00 00 00 02 2D 03
+ 29 01 00 00 00 00 02 2F A0
+ 29 01 00 00 00 00 02 30 03
+ 29 01 00 00 00 00 02 31 CB
+ 29 01 00 00 00 00 02 32 00
+ 29 01 00 00 00 00 02 33 ED
+ 29 01 00 00 00 00 02 34 00
+ 29 01 00 00 00 00 02 35 F3
+ 29 01 00 00 00 00 02 36 00
+ 29 01 00 00 00 00 02 37 FE
+ 29 01 00 00 00 00 02 38 01
+ 29 01 00 00 00 00 02 39 09
+ 29 01 00 00 00 00 02 3A 01
+ 29 01 00 00 00 00 02 3B 13
+ 29 01 00 00 00 00 02 3D 01
+ 29 01 00 00 00 00 02 3F 1D
+ 29 01 00 00 00 00 02 40 01
+ 29 01 00 00 00 00 02 41 26
+ 29 01 00 00 00 00 02 42 01
+ 29 01 00 00 00 00 02 43 2F
+ 29 01 00 00 00 00 02 44 01
+ 29 01 00 00 00 00 02 45 37
+ 29 01 00 00 00 00 02 46 01
+ 29 01 00 00 00 00 02 47 56
+ 29 01 00 00 00 00 02 48 01
+ 29 01 00 00 00 00 02 49 70
+ 29 01 00 00 00 00 02 4A 01
+ 29 01 00 00 00 00 02 4B 9D
+ 29 01 00 00 00 00 02 4C 01
+ 29 01 00 00 00 00 02 4D C2
+ 29 01 00 00 00 00 02 4E 01
+ 29 01 00 00 00 00 02 4F FF
+ 29 01 00 00 00 00 02 50 02
+ 29 01 00 00 00 00 02 51 31
+ 29 01 00 00 00 00 02 52 02
+ 29 01 00 00 00 00 02 53 32
+ 29 01 00 00 00 00 02 54 02
+ 29 01 00 00 00 00 02 55 60
+ 29 01 00 00 00 00 02 56 02
+ 29 01 00 00 00 00 02 58 94
+ 29 01 00 00 00 00 02 59 02
+ 29 01 00 00 00 00 02 5A B5
+ 29 01 00 00 00 00 02 5B 02
+ 29 01 00 00 00 00 02 5C E3
+ 29 01 00 00 00 00 02 5D 03
+ 29 01 00 00 00 00 02 5E 03
+ 29 01 00 00 00 00 02 5F 03
+ 29 01 00 00 00 00 02 60 2D
+ 29 01 00 00 00 00 02 61 03
+ 29 01 00 00 00 00 02 62 3A
+ 29 01 00 00 00 00 02 63 03
+ 29 01 00 00 00 00 02 64 48
+ 29 01 00 00 00 00 02 65 03
+ 29 01 00 00 00 00 02 66 57
+ 29 01 00 00 00 00 02 67 03
+ 29 01 00 00 00 00 02 68 68
+ 29 01 00 00 00 00 02 69 03
+ 29 01 00 00 00 00 02 6A 7B
+ 29 01 00 00 00 00 02 6B 03
+ 29 01 00 00 00 00 02 6C 90
+ 29 01 00 00 00 00 02 6D 03
+ 29 01 00 00 00 00 02 6E A0
+ 29 01 00 00 00 00 02 6F 03
+ 29 01 00 00 00 00 02 70 CB
+ 29 01 00 00 00 00 02 71 00
+ 29 01 00 00 00 00 02 72 19
+ 29 01 00 00 00 00 02 73 00
+ 29 01 00 00 00 00 02 74 36
+ 29 01 00 00 00 00 02 75 00
+ 29 01 00 00 00 00 02 76 55
+ 29 01 00 00 00 00 02 77 00
+ 29 01 00 00 00 00 02 78 70
+ 29 01 00 00 00 00 02 79 00
+ 29 01 00 00 00 00 02 7A 83
+ 29 01 00 00 00 00 02 7B 00
+ 29 01 00 00 00 00 02 7C 99
+ 29 01 00 00 00 00 02 7D 00
+ 29 01 00 00 00 00 02 7E A8
+ 29 01 00 00 00 00 02 7F 00
+ 29 01 00 00 00 00 02 80 B7
+ 29 01 00 00 00 00 02 81 00
+ 29 01 00 00 00 00 02 82 C5
+ 29 01 00 00 00 00 02 83 00
+ 29 01 00 00 00 00 02 84 F7
+ 29 01 00 00 00 00 02 85 01
+ 29 01 00 00 00 00 02 86 1E
+ 29 01 00 00 00 00 02 87 01
+ 29 01 00 00 00 00 02 88 60
+ 29 01 00 00 00 00 02 89 01
+ 29 01 00 00 00 00 02 8A 95
+ 29 01 00 00 00 00 02 8B 01
+ 29 01 00 00 00 00 02 8C E1
+ 29 01 00 00 00 00 02 8D 02
+ 29 01 00 00 00 00 02 8E 20
+ 29 01 00 00 00 00 02 8F 02
+ 29 01 00 00 00 00 02 90 23
+ 29 01 00 00 00 00 02 91 02
+ 29 01 00 00 00 00 02 92 59
+ 29 01 00 00 00 00 02 93 02
+ 29 01 00 00 00 00 02 94 94
+ 29 01 00 00 00 00 02 95 02
+ 29 01 00 00 00 00 02 96 B4
+ 29 01 00 00 00 00 02 97 02
+ 29 01 00 00 00 00 02 98 E1
+ 29 01 00 00 00 00 02 99 03
+ 29 01 00 00 00 00 02 9A 01
+ 29 01 00 00 00 00 02 9B 03
+ 29 01 00 00 00 00 02 9C 28
+ 29 01 00 00 00 00 02 9D 03
+ 29 01 00 00 00 00 02 9E 30
+ 29 01 00 00 00 00 02 9F 03
+ 29 01 00 00 00 00 02 A0 37
+ 29 01 00 00 00 00 02 A2 03
+ 29 01 00 00 00 00 02 A3 3B
+ 29 01 00 00 00 00 02 A4 03
+ 29 01 00 00 00 00 02 A5 40
+ 29 01 00 00 00 00 02 A6 03
+ 29 01 00 00 00 00 02 A7 50
+ 29 01 00 00 00 00 02 A9 03
+ 29 01 00 00 00 00 02 AA 6D
+ 29 01 00 00 00 00 02 AB 03
+ 29 01 00 00 00 00 02 AC 80
+ 29 01 00 00 00 00 02 AD 03
+ 29 01 00 00 00 00 02 AE CB
+ 29 01 00 00 00 00 02 AF 00
+ 29 01 00 00 00 00 02 B0 19
+ 29 01 00 00 00 00 02 B1 00
+ 29 01 00 00 00 00 02 B2 36
+ 29 01 00 00 00 00 02 B3 00
+ 29 01 00 00 00 00 02 B4 55
+ 29 01 00 00 00 00 02 B5 00
+ 29 01 00 00 00 00 02 B6 70
+ 29 01 00 00 00 00 02 B7 00
+ 29 01 00 00 00 00 02 B8 83
+ 29 01 00 00 00 00 02 B9 00
+ 29 01 00 00 00 00 02 BA 99
+ 29 01 00 00 00 00 02 BB 00
+ 29 01 00 00 00 00 02 BC A8
+ 29 01 00 00 00 00 02 BD 00
+ 29 01 00 00 00 00 02 BE B7
+ 29 01 00 00 00 00 02 BF 00
+ 29 01 00 00 00 00 02 C0 C5
+ 29 01 00 00 00 00 02 C1 00
+ 29 01 00 00 00 00 02 C2 F7
+ 29 01 00 00 00 00 02 C3 01
+ 29 01 00 00 00 00 02 C4 1E
+ 29 01 00 00 00 00 02 C5 01
+ 29 01 00 00 00 00 02 C6 60
+ 29 01 00 00 00 00 02 C7 01
+ 29 01 00 00 00 00 02 C8 95
+ 29 01 00 00 00 00 02 C9 01
+ 29 01 00 00 00 00 02 CA E1
+ 29 01 00 00 00 00 02 CB 02
+ 29 01 00 00 00 00 02 CC 20
+ 29 01 00 00 00 00 02 CD 02
+ 29 01 00 00 00 00 02 CE 23
+ 29 01 00 00 00 00 02 CF 02
+ 29 01 00 00 00 00 02 D0 59
+ 29 01 00 00 00 00 02 D1 02
+ 29 01 00 00 00 00 02 D2 94
+ 29 01 00 00 00 00 02 D3 02
+ 29 01 00 00 00 00 02 D4 B4
+ 29 01 00 00 00 00 02 D5 02
+ 29 01 00 00 00 00 02 D6 E1
+ 29 01 00 00 00 00 02 D7 03
+ 29 01 00 00 00 00 02 D8 01
+ 29 01 00 00 00 00 02 D9 03
+ 29 01 00 00 00 00 02 DA 28
+ 29 01 00 00 00 00 02 DB 03
+ 29 01 00 00 00 00 02 DC 30
+ 29 01 00 00 00 00 02 DD 03
+ 29 01 00 00 00 00 02 DE 37
+ 29 01 00 00 00 00 02 DF 03
+ 29 01 00 00 00 00 02 E0 3B
+ 29 01 00 00 00 00 02 E1 03
+ 29 01 00 00 00 00 02 E2 40
+ 29 01 00 00 00 00 02 E3 03
+ 29 01 00 00 00 00 02 E4 50
+ 29 01 00 00 00 00 02 E5 03
+ 29 01 00 00 00 00 02 E6 6D
+ 29 01 00 00 00 00 02 E7 03
+ 29 01 00 00 00 00 02 E8 80
+ 29 01 00 00 00 00 02 E9 03
+ 29 01 00 00 00 00 02 EA CB
+ 29 01 00 00 00 00 02 FF 01
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 00 00 02 FF 02
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 00 00 02 FF 04
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 00 00 02 FF 00
+ 29 01 00 00 64 00 02 11 00
+ 29 01 00 00 00 00 02 FF EE
+ 29 01 00 00 00 00 02 12 50
+ 29 01 00 00 00 00 02 13 02
+ 29 01 00 00 00 00 02 6A 60
+ 29 01 00 00 00 00 02 FF 00
+ 29 01 00 00 78 00 02 29 00];
+ qcom,mdss-dsi-off-command = [05 01 00 00 32 00 02 28 00
+ 05 01 00 00 78 00 02 10 00];
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ qcom,mdss-dsi-panel-status-check-mode = "bta_check";
+ qcom,mdss-dsi-h-sync-pulse = <1>;
+ qcom,mdss-dsi-traffic-mode = "burst_mode";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,mdss-dsi-te-pin-select = <1>;
+ qcom,mdss-dsi-wr-mem-start = <0x2c>;
+ qcom,mdss-dsi-te-dcs-command = <1>;
+ qcom,mdss-dsi-te-check-enable;
+ qcom,mdss-dsi-te-using-te-pin;
+ qcom,mdss-dsi-panel-timings = [7d 25 1d 00 37 33 22 27 1e 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x20>;
+ qcom,mdss-dsi-t-clk-pre = <0x2c>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-reset-sequence = <1 20>, <0 1>, <1 20>;
+ qcom,mdss-pan-physical-width-dimension = <59>;
+ qcom,mdss-pan-physical-height-dimension = <104>;
+ qcom,partial-update-enabled;
+ qcom,panel-roi-alignment = <2 2 2 2 0 0>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-nt35590-720p-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-nt35590-720p-video.dtsi
new file mode 100644
index 00000000000..59065db95f6
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-nt35590-720p-video.dtsi
@@ -0,0 +1,540 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/*---------------------------------------------------------------------------
+ * This file is autogenerated file using gcdb parser. Please do not edit it.
+ * Update input XML file to add a new entry or update variable in this file
+ * VERSION = "1.0"
+ *---------------------------------------------------------------------------*/
+&mdss_mdp {
+ dsi_nt35590_720_vid: qcom,mdss_dsi_nt35590_720p_video {
+ qcom,mdss-dsi-panel-name = "nt35590 720p video mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-destination = "display_1";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <720>;
+ qcom,mdss-dsi-panel-height = <1280>;
+ qcom,mdss-dsi-h-front-porch = <140>;
+ qcom,mdss-dsi-h-back-porch = <164>;
+ qcom,mdss-dsi-h-pulse-width = <8>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <11>;
+ qcom,mdss-dsi-v-front-porch = <6>;
+ qcom,mdss-dsi-v-pulse-width = <1>;
+ qcom,mdss-dsi-h-left-border = <0>;
+ qcom,mdss-dsi-h-right-border = <0>;
+ qcom,mdss-dsi-v-top-border = <0>;
+ qcom,mdss-dsi-v-bottom-border = <0>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-underflow-color = <0xff>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-on-command = [29 01 00 00 00 00 02 FF EE
+ 29 01 00 00 00 00 02 26 08
+ 29 01 00 00 00 00 02 26 00
+ 29 01 00 00 10 00 02 FF 00
+ 29 01 00 00 00 00 02 BA 03
+ 29 01 00 00 00 00 02 C2 03
+ 29 01 00 00 00 00 02 FF 01
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 00 00 02 00 4A
+ 29 01 00 00 00 00 02 01 33
+ 29 01 00 00 00 00 02 02 53
+ 29 01 00 00 00 00 02 03 55
+ 29 01 00 00 00 00 02 04 55
+ 29 01 00 00 00 00 02 05 33
+ 29 01 00 00 00 00 02 06 22
+ 29 01 00 00 00 00 02 08 56
+ 29 01 00 00 00 00 02 09 8F
+ 29 01 00 00 00 00 02 36 73
+ 29 01 00 00 00 00 02 0B 9F
+ 29 01 00 00 00 00 02 0C 9F
+ 29 01 00 00 00 00 02 0D 2F
+ 29 01 00 00 00 00 02 0E 24
+ 29 01 00 00 00 00 02 11 83
+ 29 01 00 00 00 00 02 12 03
+ 29 01 00 00 00 00 02 71 2C
+ 29 01 00 00 00 00 02 6F 03
+ 29 01 00 00 00 00 02 0F 0A
+ 29 01 00 00 00 00 02 FF 05
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 00 00 02 01 00
+ 29 01 00 00 00 00 02 02 8B
+ 29 01 00 00 00 00 02 03 82
+ 29 01 00 00 00 00 02 04 82
+ 29 01 00 00 00 00 02 05 30
+ 29 01 00 00 00 00 02 06 33
+ 29 01 00 00 00 00 02 07 01
+ 29 01 00 00 00 00 02 08 00
+ 29 01 00 00 00 00 02 09 46
+ 29 01 00 00 00 00 02 0A 46
+ 29 01 00 00 00 00 02 0D 0B
+ 29 01 00 00 00 00 02 0E 1D
+ 29 01 00 00 00 00 02 0F 08
+ 29 01 00 00 00 00 02 10 53
+ 29 01 00 00 00 00 02 11 00
+ 29 01 00 00 00 00 02 12 00
+ 29 01 00 00 00 00 02 14 01
+ 29 01 00 00 00 00 02 15 00
+ 29 01 00 00 00 00 02 16 05
+ 29 01 00 00 00 00 02 17 00
+ 29 01 00 00 00 00 02 19 7F
+ 29 01 00 00 00 00 02 1A FF
+ 29 01 00 00 00 00 02 1B 0F
+ 29 01 00 00 00 00 02 1C 00
+ 29 01 00 00 00 00 02 1D 00
+ 29 01 00 00 00 00 02 1E 00
+ 29 01 00 00 00 00 02 1F 07
+ 29 01 00 00 00 00 02 20 00
+ 29 01 00 00 00 00 02 21 06
+ 29 01 00 00 00 00 02 22 55
+ 29 01 00 00 00 00 02 23 4D
+ 29 01 00 00 00 00 02 2D 02
+ 29 01 00 00 00 00 02 28 01
+ 29 01 00 00 00 00 02 2F 02
+ 29 01 00 00 00 00 02 83 01
+ 29 01 00 00 00 00 02 9E 58
+ 29 01 00 00 00 00 02 9F 6A
+ 29 01 00 00 00 00 02 A0 01
+ 29 01 00 00 00 00 02 A2 10
+ 29 01 00 00 00 00 02 BB 0A
+ 29 01 00 00 00 00 02 BC 0A
+ 29 01 00 00 00 00 02 32 08
+ 29 01 00 00 00 00 02 33 B8
+ 29 01 00 00 00 00 02 36 01
+ 29 01 00 00 00 00 02 37 00
+ 29 01 00 00 00 00 02 43 00
+ 29 01 00 00 00 00 02 4B 21
+ 29 01 00 00 00 00 02 4C 03
+ 29 01 00 00 00 00 02 50 21
+ 29 01 00 00 00 00 02 51 03
+ 29 01 00 00 00 00 02 58 21
+ 29 01 00 00 00 00 02 59 03
+ 29 01 00 00 00 00 02 5D 21
+ 29 01 00 00 00 00 02 5E 03
+ 29 01 00 00 00 00 02 6C 00
+ 29 01 00 00 00 00 02 6D 00
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 00 00 02 FF 01
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 00 00 02 75 00
+ 29 01 00 00 00 00 02 76 7D
+ 29 01 00 00 00 00 02 77 00
+ 29 01 00 00 00 00 02 78 8A
+ 29 01 00 00 00 00 02 79 00
+ 29 01 00 00 00 00 02 7A 9C
+ 29 01 00 00 00 00 02 7B 00
+ 29 01 00 00 00 00 02 7C B1
+ 29 01 00 00 00 00 02 7D 00
+ 29 01 00 00 00 00 02 7E BF
+ 29 01 00 00 00 00 02 7F 00
+ 29 01 00 00 00 00 02 80 CF
+ 29 01 00 00 00 00 02 81 00
+ 29 01 00 00 00 00 02 82 DD
+ 29 01 00 00 00 00 02 83 00
+ 29 01 00 00 00 00 02 84 E8
+ 29 01 00 00 00 00 02 85 00
+ 29 01 00 00 00 00 02 86 F2
+ 29 01 00 00 00 00 02 87 01
+ 29 01 00 00 00 00 02 88 1F
+ 29 01 00 00 00 00 02 89 01
+ 29 01 00 00 00 00 02 8A 41
+ 29 01 00 00 00 00 02 8B 01
+ 29 01 00 00 00 00 02 8C 78
+ 29 01 00 00 00 00 02 8D 01
+ 29 01 00 00 00 00 02 8E A5
+ 29 01 00 00 00 00 02 8F 01
+ 29 01 00 00 00 00 02 90 EE
+ 29 01 00 00 00 00 02 91 02
+ 29 01 00 00 00 00 02 92 29
+ 29 01 00 00 00 00 02 93 02
+ 29 01 00 00 00 00 02 94 2A
+ 29 01 00 00 00 00 02 95 02
+ 29 01 00 00 00 00 02 96 5D
+ 29 01 00 00 00 00 02 97 02
+ 29 01 00 00 00 00 02 98 93
+ 29 01 00 00 00 00 02 99 02
+ 29 01 00 00 00 00 02 9A B8
+ 29 01 00 00 00 00 02 9B 02
+ 29 01 00 00 00 00 02 9C E7
+ 29 01 00 00 00 00 02 9D 03
+ 29 01 00 00 00 00 02 9E 07
+ 29 01 00 00 00 00 02 9F 03
+ 29 01 00 00 00 00 02 A0 37
+ 29 01 00 00 00 00 02 A2 03
+ 29 01 00 00 00 00 02 A3 46
+ 29 01 00 00 00 00 02 A4 03
+ 29 01 00 00 00 00 02 A5 56
+ 29 01 00 00 00 00 02 A6 03
+ 29 01 00 00 00 00 02 A7 66
+ 29 01 00 00 00 00 02 A9 03
+ 29 01 00 00 00 00 02 AA 7A
+ 29 01 00 00 00 00 02 AB 03
+ 29 01 00 00 00 00 02 AC 93
+ 29 01 00 00 00 00 02 AD 03
+ 29 01 00 00 00 00 02 AE A3
+ 29 01 00 00 00 00 02 AF 03
+ 29 01 00 00 00 00 02 B0 B4
+ 29 01 00 00 00 00 02 B1 03
+ 29 01 00 00 00 00 02 B2 CB
+ 29 01 00 00 00 00 02 B3 00
+ 29 01 00 00 00 00 02 B4 7D
+ 29 01 00 00 00 00 02 B5 00
+ 29 01 00 00 00 00 02 B6 8A
+ 29 01 00 00 00 00 02 B7 00
+ 29 01 00 00 00 00 02 B8 9C
+ 29 01 00 00 00 00 02 B9 00
+ 29 01 00 00 00 00 02 BA B1
+ 29 01 00 00 00 00 02 BB 00
+ 29 01 00 00 00 00 02 BC BF
+ 29 01 00 00 00 00 02 BD 00
+ 29 01 00 00 00 00 02 BE CF
+ 29 01 00 00 00 00 02 BF 00
+ 29 01 00 00 00 00 02 C0 DD
+ 29 01 00 00 00 00 02 C1 00
+ 29 01 00 00 00 00 02 C2 E8
+ 29 01 00 00 00 00 02 C3 00
+ 29 01 00 00 00 00 02 C4 F2
+ 29 01 00 00 00 00 02 C5 01
+ 29 01 00 00 00 00 02 C6 1F
+ 29 01 00 00 00 00 02 C7 01
+ 29 01 00 00 00 00 02 C8 41
+ 29 01 00 00 00 00 02 C9 01
+ 29 01 00 00 00 00 02 CA 78
+ 29 01 00 00 00 00 02 CB 01
+ 29 01 00 00 00 00 02 CC A5
+ 29 01 00 00 00 00 02 CD 01
+ 29 01 00 00 00 00 02 CE EE
+ 29 01 00 00 00 00 02 CF 02
+ 29 01 00 00 00 00 02 D0 29
+ 29 01 00 00 00 00 02 D1 02
+ 29 01 00 00 00 00 02 D2 2A
+ 29 01 00 00 00 00 02 D3 02
+ 29 01 00 00 00 00 02 D4 5D
+ 29 01 00 00 00 00 02 D5 02
+ 29 01 00 00 00 00 02 D6 93
+ 29 01 00 00 00 00 02 D7 02
+ 29 01 00 00 00 00 02 D8 B8
+ 29 01 00 00 00 00 02 D9 02
+ 29 01 00 00 00 00 02 DA E7
+ 29 01 00 00 00 00 02 DB 03
+ 29 01 00 00 00 00 02 DC 07
+ 29 01 00 00 00 00 02 DD 03
+ 29 01 00 00 00 00 02 DE 37
+ 29 01 00 00 00 00 02 DF 03
+ 29 01 00 00 00 00 02 E0 46
+ 29 01 00 00 00 00 02 E1 03
+ 29 01 00 00 00 00 02 E2 56
+ 29 01 00 00 00 00 02 E3 03
+ 29 01 00 00 00 00 02 E4 66
+ 29 01 00 00 00 00 02 E5 03
+ 29 01 00 00 00 00 02 E6 7A
+ 29 01 00 00 00 00 02 E7 03
+ 29 01 00 00 00 00 02 E8 93
+ 29 01 00 00 00 00 02 E9 03
+ 29 01 00 00 00 00 02 EA A3
+ 29 01 00 00 00 00 02 EB 03
+ 29 01 00 00 00 00 02 EC B4
+ 29 01 00 00 00 00 02 ED 03
+ 29 01 00 00 00 00 02 EE CB
+ 29 01 00 00 00 00 02 EF 00
+ 29 01 00 00 00 00 02 F0 ED
+ 29 01 00 00 00 00 02 F1 00
+ 29 01 00 00 00 00 02 F2 F3
+ 29 01 00 00 00 00 02 F3 00
+ 29 01 00 00 00 00 02 F4 FE
+ 29 01 00 00 00 00 02 F5 01
+ 29 01 00 00 00 00 02 F6 09
+ 29 01 00 00 00 00 02 F7 01
+ 29 01 00 00 00 00 02 F8 13
+ 29 01 00 00 00 00 02 F9 01
+ 29 01 00 00 00 00 02 FA 1D
+ 29 01 00 00 00 00 02 FF 02
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 00 00 02 00 01
+ 29 01 00 00 00 00 02 01 26
+ 29 01 00 00 00 00 02 02 01
+ 29 01 00 00 00 00 02 03 2F
+ 29 01 00 00 00 00 02 04 01
+ 29 01 00 00 00 00 02 05 37
+ 29 01 00 00 00 00 02 06 01
+ 29 01 00 00 00 00 02 07 56
+ 29 01 00 00 00 00 02 08 01
+ 29 01 00 00 00 00 02 09 70
+ 29 01 00 00 00 00 02 0A 01
+ 29 01 00 00 00 00 02 0B 9D
+ 29 01 00 00 00 00 02 0C 01
+ 29 01 00 00 00 00 02 0D C2
+ 29 01 00 00 00 00 02 0E 01
+ 29 01 00 00 00 00 02 0F FF
+ 29 01 00 00 00 00 02 10 02
+ 29 01 00 00 00 00 02 11 31
+ 29 01 00 00 00 00 02 12 02
+ 29 01 00 00 00 00 02 13 32
+ 29 01 00 00 00 00 02 14 02
+ 29 01 00 00 00 00 02 15 60
+ 29 01 00 00 00 00 02 16 02
+ 29 01 00 00 00 00 02 17 94
+ 29 01 00 00 00 00 02 18 02
+ 29 01 00 00 00 00 02 19 B5
+ 29 01 00 00 00 00 02 1A 02
+ 29 01 00 00 00 00 02 1B E3
+ 29 01 00 00 00 00 02 1C 03
+ 29 01 00 00 00 00 02 1D 03
+ 29 01 00 00 00 00 02 1E 03
+ 29 01 00 00 00 00 02 1F 2D
+ 29 01 00 00 00 00 02 20 03
+ 29 01 00 00 00 00 02 21 3A
+ 29 01 00 00 00 00 02 22 03
+ 29 01 00 00 00 00 02 23 48
+ 29 01 00 00 00 00 02 24 03
+ 29 01 00 00 00 00 02 25 57
+ 29 01 00 00 00 00 02 26 03
+ 29 01 00 00 00 00 02 27 68
+ 29 01 00 00 00 00 02 28 03
+ 29 01 00 00 00 00 02 29 7B
+ 29 01 00 00 00 00 02 2A 03
+ 29 01 00 00 00 00 02 2B 90
+ 29 01 00 00 00 00 02 2D 03
+ 29 01 00 00 00 00 02 2F A0
+ 29 01 00 00 00 00 02 30 03
+ 29 01 00 00 00 00 02 31 CB
+ 29 01 00 00 00 00 02 32 00
+ 29 01 00 00 00 00 02 33 ED
+ 29 01 00 00 00 00 02 34 00
+ 29 01 00 00 00 00 02 35 F3
+ 29 01 00 00 00 00 02 36 00
+ 29 01 00 00 00 00 02 37 FE
+ 29 01 00 00 00 00 02 38 01
+ 29 01 00 00 00 00 02 39 09
+ 29 01 00 00 00 00 02 3A 01
+ 29 01 00 00 00 00 02 3B 13
+ 29 01 00 00 00 00 02 3D 01
+ 29 01 00 00 00 00 02 3F 1D
+ 29 01 00 00 00 00 02 40 01
+ 29 01 00 00 00 00 02 41 26
+ 29 01 00 00 00 00 02 42 01
+ 29 01 00 00 00 00 02 43 2F
+ 29 01 00 00 00 00 02 44 01
+ 29 01 00 00 00 00 02 45 37
+ 29 01 00 00 00 00 02 46 01
+ 29 01 00 00 00 00 02 47 56
+ 29 01 00 00 00 00 02 48 01
+ 29 01 00 00 00 00 02 49 70
+ 29 01 00 00 00 00 02 4A 01
+ 29 01 00 00 00 00 02 4B 9D
+ 29 01 00 00 00 00 02 4C 01
+ 29 01 00 00 00 00 02 4D C2
+ 29 01 00 00 00 00 02 4E 01
+ 29 01 00 00 00 00 02 4F FF
+ 29 01 00 00 00 00 02 50 02
+ 29 01 00 00 00 00 02 51 31
+ 29 01 00 00 00 00 02 52 02
+ 29 01 00 00 00 00 02 53 32
+ 29 01 00 00 00 00 02 54 02
+ 29 01 00 00 00 00 02 55 60
+ 29 01 00 00 00 00 02 56 02
+ 29 01 00 00 00 00 02 58 94
+ 29 01 00 00 00 00 02 59 02
+ 29 01 00 00 00 00 02 5A B5
+ 29 01 00 00 00 00 02 5B 02
+ 29 01 00 00 00 00 02 5C E3
+ 29 01 00 00 00 00 02 5D 03
+ 29 01 00 00 00 00 02 5E 03
+ 29 01 00 00 00 00 02 5F 03
+ 29 01 00 00 00 00 02 60 2D
+ 29 01 00 00 00 00 02 61 03
+ 29 01 00 00 00 00 02 62 3A
+ 29 01 00 00 00 00 02 63 03
+ 29 01 00 00 00 00 02 64 48
+ 29 01 00 00 00 00 02 65 03
+ 29 01 00 00 00 00 02 66 57
+ 29 01 00 00 00 00 02 67 03
+ 29 01 00 00 00 00 02 68 68
+ 29 01 00 00 00 00 02 69 03
+ 29 01 00 00 00 00 02 6A 7B
+ 29 01 00 00 00 00 02 6B 03
+ 29 01 00 00 00 00 02 6C 90
+ 29 01 00 00 00 00 02 6D 03
+ 29 01 00 00 00 00 02 6E A0
+ 29 01 00 00 00 00 02 6F 03
+ 29 01 00 00 00 00 02 70 CB
+ 29 01 00 00 00 00 02 71 00
+ 29 01 00 00 00 00 02 72 19
+ 29 01 00 00 00 00 02 73 00
+ 29 01 00 00 00 00 02 74 36
+ 29 01 00 00 00 00 02 75 00
+ 29 01 00 00 00 00 02 76 55
+ 29 01 00 00 00 00 02 77 00
+ 29 01 00 00 00 00 02 78 70
+ 29 01 00 00 00 00 02 79 00
+ 29 01 00 00 00 00 02 7A 83
+ 29 01 00 00 00 00 02 7B 00
+ 29 01 00 00 00 00 02 7C 99
+ 29 01 00 00 00 00 02 7D 00
+ 29 01 00 00 00 00 02 7E A8
+ 29 01 00 00 00 00 02 7F 00
+ 29 01 00 00 00 00 02 80 B7
+ 29 01 00 00 00 00 02 81 00
+ 29 01 00 00 00 00 02 82 C5
+ 29 01 00 00 00 00 02 83 00
+ 29 01 00 00 00 00 02 84 F7
+ 29 01 00 00 00 00 02 85 01
+ 29 01 00 00 00 00 02 86 1E
+ 29 01 00 00 00 00 02 87 01
+ 29 01 00 00 00 00 02 88 60
+ 29 01 00 00 00 00 02 89 01
+ 29 01 00 00 00 00 02 8A 95
+ 29 01 00 00 00 00 02 8B 01
+ 29 01 00 00 00 00 02 8C E1
+ 29 01 00 00 00 00 02 8D 02
+ 29 01 00 00 00 00 02 8E 20
+ 29 01 00 00 00 00 02 8F 02
+ 29 01 00 00 00 00 02 90 23
+ 29 01 00 00 00 00 02 91 02
+ 29 01 00 00 00 00 02 92 59
+ 29 01 00 00 00 00 02 93 02
+ 29 01 00 00 00 00 02 94 94
+ 29 01 00 00 00 00 02 95 02
+ 29 01 00 00 00 00 02 96 B4
+ 29 01 00 00 00 00 02 97 02
+ 29 01 00 00 00 00 02 98 E1
+ 29 01 00 00 00 00 02 99 03
+ 29 01 00 00 00 00 02 9A 01
+ 29 01 00 00 00 00 02 9B 03
+ 29 01 00 00 00 00 02 9C 28
+ 29 01 00 00 00 00 02 9D 03
+ 29 01 00 00 00 00 02 9E 30
+ 29 01 00 00 00 00 02 9F 03
+ 29 01 00 00 00 00 02 A0 37
+ 29 01 00 00 00 00 02 A2 03
+ 29 01 00 00 00 00 02 A3 3B
+ 29 01 00 00 00 00 02 A4 03
+ 29 01 00 00 00 00 02 A5 40
+ 29 01 00 00 00 00 02 A6 03
+ 29 01 00 00 00 00 02 A7 50
+ 29 01 00 00 00 00 02 A9 03
+ 29 01 00 00 00 00 02 AA 6D
+ 29 01 00 00 00 00 02 AB 03
+ 29 01 00 00 00 00 02 AC 80
+ 29 01 00 00 00 00 02 AD 03
+ 29 01 00 00 00 00 02 AE CB
+ 29 01 00 00 00 00 02 AF 00
+ 29 01 00 00 00 00 02 B0 19
+ 29 01 00 00 00 00 02 B1 00
+ 29 01 00 00 00 00 02 B2 36
+ 29 01 00 00 00 00 02 B3 00
+ 29 01 00 00 00 00 02 B4 55
+ 29 01 00 00 00 00 02 B5 00
+ 29 01 00 00 00 00 02 B6 70
+ 29 01 00 00 00 00 02 B7 00
+ 29 01 00 00 00 00 02 B8 83
+ 29 01 00 00 00 00 02 B9 00
+ 29 01 00 00 00 00 02 BA 99
+ 29 01 00 00 00 00 02 BB 00
+ 29 01 00 00 00 00 02 BC A8
+ 29 01 00 00 00 00 02 BD 00
+ 29 01 00 00 00 00 02 BE B7
+ 29 01 00 00 00 00 02 BF 00
+ 29 01 00 00 00 00 02 C0 C5
+ 29 01 00 00 00 00 02 C1 00
+ 29 01 00 00 00 00 02 C2 F7
+ 29 01 00 00 00 00 02 C3 01
+ 29 01 00 00 00 00 02 C4 1E
+ 29 01 00 00 00 00 02 C5 01
+ 29 01 00 00 00 00 02 C6 60
+ 29 01 00 00 00 00 02 C7 01
+ 29 01 00 00 00 00 02 C8 95
+ 29 01 00 00 00 00 02 C9 01
+ 29 01 00 00 00 00 02 CA E1
+ 29 01 00 00 00 00 02 CB 02
+ 29 01 00 00 00 00 02 CC 20
+ 29 01 00 00 00 00 02 CD 02
+ 29 01 00 00 00 00 02 CE 23
+ 29 01 00 00 00 00 02 CF 02
+ 29 01 00 00 00 00 02 D0 59
+ 29 01 00 00 00 00 02 D1 02
+ 29 01 00 00 00 00 02 D2 94
+ 29 01 00 00 00 00 02 D3 02
+ 29 01 00 00 00 00 02 D4 B4
+ 29 01 00 00 00 00 02 D5 02
+ 29 01 00 00 00 00 02 D6 E1
+ 29 01 00 00 00 00 02 D7 03
+ 29 01 00 00 00 00 02 D8 01
+ 29 01 00 00 00 00 02 D9 03
+ 29 01 00 00 00 00 02 DA 28
+ 29 01 00 00 00 00 02 DB 03
+ 29 01 00 00 00 00 02 DC 30
+ 29 01 00 00 00 00 02 DD 03
+ 29 01 00 00 00 00 02 DE 37
+ 29 01 00 00 00 00 02 DF 03
+ 29 01 00 00 00 00 02 E0 3B
+ 29 01 00 00 00 00 02 E1 03
+ 29 01 00 00 00 00 02 E2 40
+ 29 01 00 00 00 00 02 E3 03
+ 29 01 00 00 00 00 02 E4 50
+ 29 01 00 00 00 00 02 E5 03
+ 29 01 00 00 00 00 02 E6 6D
+ 29 01 00 00 00 00 02 E7 03
+ 29 01 00 00 00 00 02 E8 80
+ 29 01 00 00 00 00 02 E9 03
+ 29 01 00 00 00 00 02 EA CB
+ 29 01 00 00 00 00 02 FF 01
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 00 00 02 FF 02
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 00 00 02 FF 04
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 00 00 02 FF 00
+ 29 01 00 00 64 00 02 11 00
+ 29 01 00 00 00 00 02 FF EE
+ 29 01 00 00 00 00 02 12 50
+ 29 01 00 00 00 00 02 13 02
+ 29 01 00 00 00 00 02 6A 60
+ 29 01 00 00 00 00 02 FF 00
+ 29 01 00 00 78 00 02 29 00
+ 29 01 00 00 78 00 02 53 2C
+ 29 01 00 00 00 00 02 FF 00
+ 29 01 00 00 00 00 06 3B 03 06 03 02 02];
+ qcom,mdss-dsi-off-command = [05 01 00 00 32 00 02 28 00
+ 05 01 00 00 78 00 02 10 00];
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ qcom,mdss-dsi-panel-status-check-mode = "bta_check";
+ qcom,dynamic-mode-switch-enabled;
+ qcom,video-to-cmd-mode-switch-commands = [15 01 00 00 14 00 02 C2 0B
+ 15 01 00 00 00 00 02 C2 08];
+ qcom,cmd-to-video-mode-switch-commands = [15 01 00 00 00 00 02 C2 03];
+ qcom,mdss-dsi-h-sync-pulse = <1>;
+ qcom,mdss-dsi-traffic-mode = "burst_mode";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,mdss-dsi-panel-timings = [7d 25 1d 00 37 33 22 27 1e 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x20>;
+ qcom,mdss-dsi-t-clk-pre = <0x2c>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-reset-sequence = <1 20>, <0 1>, <1 20>;
+ qcom,mdss-pan-physical-width-dimension = <59>;
+ qcom,mdss-pan-physical-height-dimension = <104>;
+
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-nt35596-1080p-skuk-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-nt35596-1080p-skuk-video.dtsi
new file mode 100644
index 00000000000..01c57c47220
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-nt35596-1080p-skuk-video.dtsi
@@ -0,0 +1,541 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/*---------------------------------------------------------------------------
+ * This file is autogenerated file using gcdb parser. Please do not edit it.
+ * Update input XML file to add a new entry or update variable in this file
+ * VERSION = "1.0"
+ *---------------------------------------------------------------------------*/
+&mdss_mdp {
+ dsi_nt35596_1080p_skuk_video: qcom,mdss_dsi_nt35596_1080p_skuk_video {
+ qcom,mdss-dsi-panel-name = "nt35596 1080p video mode dsi panel skuk";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-destination = "display_1";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <1080>;
+ qcom,mdss-dsi-panel-height = <1920>;
+ qcom,mdss-dsi-h-front-porch = <100>;
+ qcom,mdss-dsi-h-back-porch = <82>;
+ qcom,mdss-dsi-h-pulse-width = <8>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <7>;
+ qcom,mdss-dsi-v-front-porch = <3>;
+ qcom,mdss-dsi-v-pulse-width = <2>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-color-order = "rgb_swap_rgb";
+ qcom,mdss-dsi-underflow-color = <0xff>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-on-command = [29 01 00 00 00 00 02 FF EE
+ 29 01 00 00 00 00 02 FB 01
+ 29 01 00 00 0A 00 02 18 40
+ 29 01 00 00 14 00 02 18 00
+ 29 01 00 00 00 00 02 FF 05
+ 29 01 00 00 05 00 02 FB 01
+ 29 01 00 00 00 00 02 90 00
+ 29 01 00 00 00 00 02 93 04
+ 29 01 00 00 00 00 02 94 04
+ 29 01 00 00 00 00 02 9B 0F
+ 29 01 00 00 00 00 02 91 44
+ 29 01 00 00 00 00 02 92 79
+ 29 01 00 00 00 00 02 00 0F
+ 29 01 00 00 00 00 02 01 00
+ 29 01 00 00 00 00 02 02 00
+ 29 01 00 00 00 00 02 03 00
+ 29 01 00 00 00 00 02 04 0B
+ 29 01 00 00 00 00 02 05 0C
+ 29 01 00 00 00 00 02 06 00
+ 29 01 00 00 00 00 02 07 00
+ 29 01 00 00 00 00 02 08 00
+ 29 01 00 00 00 00 02 09 00
+ 29 01 00 00 00 00 02 0A 03
+ 29 01 00 00 00 00 02 0B 04
+ 29 01 00 00 00 00 02 0C 01
+ 29 01 00 00 00 00 02 0D 13
+ 29 01 00 00 00 00 02 0E 15
+ 29 01 00 00 00 00 02 0F 17
+ 29 01 00 00 00 00 02 10 0F
+ 29 01 00 00 00 00 02 11 00
+ 29 01 00 00 00 00 02 12 00
+ 29 01 00 00 00 00 02 13 00
+ 29 01 00 00 00 00 02 14 0B
+ 29 01 00 00 00 00 02 15 0C
+ 29 01 00 00 00 00 02 16 00
+ 29 01 00 00 00 00 02 17 00
+ 29 01 00 00 00 00 02 18 00
+ 29 01 00 00 00 00 02 19 00
+ 29 01 00 00 00 00 02 1A 03
+ 29 01 00 00 00 00 02 1B 04
+ 29 01 00 00 00 00 02 1C 01
+ 29 01 00 00 00 00 02 1D 13
+ 29 01 00 00 00 00 02 1E 15
+ 29 01 00 00 00 00 02 1F 17
+ 29 01 00 00 00 00 02 20 09
+ 29 01 00 00 00 00 02 21 01
+ 29 01 00 00 00 00 02 22 00
+ 29 01 00 00 00 00 02 23 00
+ 29 01 00 00 00 00 02 24 00
+ 29 01 00 00 00 00 02 25 ED
+ 29 01 00 00 00 00 02 2F 02
+ 29 01 00 00 00 00 02 30 04
+ 29 01 00 00 00 00 02 31 49
+ 29 01 00 00 00 00 02 32 23
+ 29 01 00 00 00 00 02 33 01
+ 29 01 00 00 00 00 02 34 00
+ 29 01 00 00 00 00 02 35 69
+ 29 01 00 00 00 00 02 36 00
+ 29 01 00 00 00 00 02 37 2D
+ 29 01 00 00 00 00 02 38 18
+ 29 01 00 00 00 00 02 29 58
+ 29 01 00 00 00 00 02 2A 16
+ 29 01 00 00 00 00 02 2B 05
+ 29 01 00 00 00 00 02 5B 00
+ 29 01 00 00 00 00 02 5F 75
+ 29 01 00 00 00 00 02 63 00
+ 29 01 00 00 00 00 02 67 04
+ 29 01 00 00 00 00 02 6C 00
+ 29 01 00 00 00 00 02 7B 80
+ 29 01 00 00 00 00 02 7C D8
+ 29 01 00 00 00 00 02 7D 60
+ 29 01 00 00 00 00 02 7E 0B
+ 29 01 00 00 00 00 02 7F 17
+ 29 01 00 00 00 00 02 80 00
+ 29 01 00 00 00 00 02 81 06
+ 29 01 00 00 00 00 02 82 03
+ 29 01 00 00 00 00 02 83 00
+ 29 01 00 00 00 00 02 84 03
+ 29 01 00 00 00 00 02 85 07
+ 29 01 00 00 00 00 02 86 1B
+ 29 01 00 00 00 00 02 87 39
+ 29 01 00 00 00 00 02 88 1B
+ 29 01 00 00 00 00 02 89 39
+ 29 01 00 00 00 00 02 8A 33
+ 29 01 00 00 00 00 02 A4 0F
+ 29 01 00 00 00 00 02 8C 01
+ 29 01 00 00 00 00 02 99 33
+ 29 01 00 00 00 00 02 B5 20
+ 29 01 00 00 00 00 02 FF 01
+ 29 01 00 00 05 00 02 FB 01
+ 29 01 00 00 00 00 02 00 01
+ 29 01 00 00 00 00 02 05 50
+ 29 01 00 00 00 00 02 06 A0
+ 29 01 00 00 00 00 02 14 A8
+ 29 01 00 00 00 00 02 07 B2
+ 29 01 00 00 00 00 02 0E BF
+ 29 01 00 00 00 00 02 0F C2
+ 29 01 00 00 00 00 02 0B B3
+ 29 01 00 00 00 00 02 0C B3
+ 29 01 00 00 00 00 02 11 28
+ 29 01 00 00 00 00 02 12 1F
+ 29 01 00 00 00 00 02 08 0C
+ 29 01 00 00 00 00 02 15 15
+ 29 01 00 00 00 00 02 16 15
+ 29 01 00 00 00 00 02 75 00
+ 29 01 00 00 00 00 02 76 00
+ 29 01 00 00 00 00 02 77 00
+ 29 01 00 00 00 00 02 78 09
+ 29 01 00 00 00 00 02 79 00
+ 29 01 00 00 00 00 02 7A 1D
+ 29 01 00 00 00 00 02 7B 00
+ 29 01 00 00 00 00 02 7C 2E
+ 29 01 00 00 00 00 02 7D 00
+ 29 01 00 00 00 00 02 7E 3D
+ 29 01 00 00 00 00 02 7F 00
+ 29 01 00 00 00 00 02 80 4C
+ 29 01 00 00 00 00 02 81 00
+ 29 01 00 00 00 00 02 82 59
+ 29 01 00 00 00 00 02 83 00
+ 29 01 00 00 00 00 02 84 66
+ 29 01 00 00 00 00 02 85 00
+ 29 01 00 00 00 00 02 86 73
+ 29 01 00 00 00 00 02 87 00
+ 29 01 00 00 00 00 02 88 A0
+ 29 01 00 00 00 00 02 89 00
+ 29 01 00 00 00 00 02 8A C7
+ 29 01 00 00 00 00 02 8B 01
+ 29 01 00 00 00 00 02 8C 0C
+ 29 01 00 00 00 00 02 8D 01
+ 29 01 00 00 00 00 02 8E 46
+ 29 01 00 00 00 00 02 8F 01
+ 29 01 00 00 00 00 02 90 A4
+ 29 01 00 00 00 00 02 91 01
+ 29 01 00 00 00 00 02 92 F1
+ 29 01 00 00 00 00 02 93 01
+ 29 01 00 00 00 00 02 94 F3
+ 29 01 00 00 00 00 02 95 02
+ 29 01 00 00 00 00 02 96 36
+ 29 01 00 00 00 00 02 97 02
+ 29 01 00 00 00 00 02 98 7B
+ 29 01 00 00 00 00 02 99 02
+ 29 01 00 00 00 00 02 9A A3
+ 29 01 00 00 00 00 02 9B 02
+ 29 01 00 00 00 00 02 9C D6
+ 29 01 00 00 00 00 02 9D 02
+ 29 01 00 00 00 00 02 9E F9
+ 29 01 00 00 00 00 02 9F 03
+ 29 01 00 00 00 00 02 A0 26
+ 29 01 00 00 00 00 02 A2 03
+ 29 01 00 00 00 00 02 A3 34
+ 29 01 00 00 00 00 02 A4 03
+ 29 01 00 00 00 00 02 A5 43
+ 29 01 00 00 00 00 02 A6 03
+ 29 01 00 00 00 00 02 A7 55
+ 29 01 00 00 00 00 02 A9 03
+ 29 01 00 00 00 00 02 AA 6A
+ 29 01 00 00 00 00 02 AB 03
+ 29 01 00 00 00 00 02 AC 81
+ 29 01 00 00 00 00 02 AD 03
+ 29 01 00 00 00 00 02 AE 9F
+ 29 01 00 00 00 00 02 AF 03
+ 29 01 00 00 00 00 02 B0 D1
+ 29 01 00 00 00 00 02 B1 03
+ 29 01 00 00 00 00 02 B2 FF
+ 29 01 00 00 00 00 02 B3 00
+ 29 01 00 00 00 00 02 B4 00
+ 29 01 00 00 00 00 02 B5 00
+ 29 01 00 00 00 00 02 B6 09
+ 29 01 00 00 00 00 02 B7 00
+ 29 01 00 00 00 00 02 B8 1D
+ 29 01 00 00 00 00 02 B9 00
+ 29 01 00 00 00 00 02 BA 2E
+ 29 01 00 00 00 00 02 BB 00
+ 29 01 00 00 00 00 02 BC 3D
+ 29 01 00 00 00 00 02 BD 00
+ 29 01 00 00 00 00 02 BE 4C
+ 29 01 00 00 00 00 02 BF 00
+ 29 01 00 00 00 00 02 C0 59
+ 29 01 00 00 00 00 02 C1 00
+ 29 01 00 00 00 00 02 C2 66
+ 29 01 00 00 00 00 02 C3 00
+ 29 01 00 00 00 00 02 C4 73
+ 29 01 00 00 00 00 02 C5 00
+ 29 01 00 00 00 00 02 C6 A0
+ 29 01 00 00 00 00 02 C7 00
+ 29 01 00 00 00 00 02 C8 C7
+ 29 01 00 00 00 00 02 C9 01
+ 29 01 00 00 00 00 02 CA 0C
+ 29 01 00 00 00 00 02 CB 01
+ 29 01 00 00 00 00 02 CC 46
+ 29 01 00 00 00 00 02 CD 01
+ 29 01 00 00 00 00 02 CE A4
+ 29 01 00 00 00 00 02 CF 01
+ 29 01 00 00 00 00 02 D0 F1
+ 29 01 00 00 00 00 02 D1 01
+ 29 01 00 00 00 00 02 D2 F3
+ 29 01 00 00 00 00 02 D3 02
+ 29 01 00 00 00 00 02 D4 36
+ 29 01 00 00 00 00 02 D5 02
+ 29 01 00 00 00 00 02 D6 7B
+ 29 01 00 00 00 00 02 D7 02
+ 29 01 00 00 00 00 02 D8 A3
+ 29 01 00 00 00 00 02 D9 02
+ 29 01 00 00 00 00 02 DA D6
+ 29 01 00 00 00 00 02 DB 02
+ 29 01 00 00 00 00 02 DC F9
+ 29 01 00 00 00 00 02 DD 03
+ 29 01 00 00 00 00 02 DE 26
+ 29 01 00 00 00 00 02 DF 03
+ 29 01 00 00 00 00 02 E0 34
+ 29 01 00 00 00 00 02 E1 03
+ 29 01 00 00 00 00 02 E2 43
+ 29 01 00 00 00 00 02 E3 03
+ 29 01 00 00 00 00 02 E4 55
+ 29 01 00 00 00 00 02 E5 03
+ 29 01 00 00 00 00 02 E6 6A
+ 29 01 00 00 00 00 02 E7 03
+ 29 01 00 00 00 00 02 E8 81
+ 29 01 00 00 00 00 02 E9 03
+ 29 01 00 00 00 00 02 EA 9F
+ 29 01 00 00 00 00 02 EB 03
+ 29 01 00 00 00 00 02 EC D1
+ 29 01 00 00 00 00 02 ED 03
+ 29 01 00 00 00 00 02 EE FF
+ 29 01 00 00 00 00 02 EF 00
+ 29 01 00 00 00 00 02 F0 00
+ 29 01 00 00 00 00 02 F1 00
+ 29 01 00 00 00 00 02 F2 09
+ 29 01 00 00 00 00 02 F3 00
+ 29 01 00 00 00 00 02 F4 1D
+ 29 01 00 00 00 00 02 F5 00
+ 29 01 00 00 00 00 02 F6 2E
+ 29 01 00 00 00 00 02 F7 00
+ 29 01 00 00 00 00 02 F8 3D
+ 29 01 00 00 00 00 02 F9 00
+ 29 01 00 00 00 00 02 FA 4C
+ 29 01 00 00 00 00 02 FF 02
+ 29 01 00 00 05 00 02 FB 01
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 02 01 59
+ 29 01 00 00 00 00 02 02 00
+ 29 01 00 00 00 00 02 03 66
+ 29 01 00 00 00 00 02 04 00
+ 29 01 00 00 00 00 02 05 73
+ 29 01 00 00 00 00 02 06 00
+ 29 01 00 00 00 00 02 07 A0
+ 29 01 00 00 00 00 02 08 00
+ 29 01 00 00 00 00 02 09 C7
+ 29 01 00 00 00 00 02 0A 01
+ 29 01 00 00 00 00 02 0B 0C
+ 29 01 00 00 00 00 02 0C 01
+ 29 01 00 00 00 00 02 0D 46
+ 29 01 00 00 00 00 02 0E 01
+ 29 01 00 00 00 00 02 0F A4
+ 29 01 00 00 00 00 02 10 01
+ 29 01 00 00 00 00 02 11 F1
+ 29 01 00 00 00 00 02 12 01
+ 29 01 00 00 00 00 02 13 F3
+ 29 01 00 00 00 00 02 14 02
+ 29 01 00 00 00 00 02 15 36
+ 29 01 00 00 00 00 02 16 02
+ 29 01 00 00 00 00 02 17 7B
+ 29 01 00 00 00 00 02 18 02
+ 29 01 00 00 00 00 02 19 A3
+ 29 01 00 00 00 00 02 1A 02
+ 29 01 00 00 00 00 02 1B D6
+ 29 01 00 00 00 00 02 1C 02
+ 29 01 00 00 00 00 02 1D F9
+ 29 01 00 00 00 00 02 1E 03
+ 29 01 00 00 00 00 02 1F 26
+ 29 01 00 00 00 00 02 20 03
+ 29 01 00 00 00 00 02 21 34
+ 29 01 00 00 00 00 02 22 03
+ 29 01 00 00 00 00 02 23 43
+ 29 01 00 00 00 00 02 24 03
+ 29 01 00 00 00 00 02 25 55
+ 29 01 00 00 00 00 02 26 03
+ 29 01 00 00 00 00 02 27 6A
+ 29 01 00 00 00 00 02 28 03
+ 29 01 00 00 00 00 02 29 81
+ 29 01 00 00 00 00 02 2A 03
+ 29 01 00 00 00 00 02 2B 9F
+ 29 01 00 00 00 00 02 2D 03
+ 29 01 00 00 00 00 02 2F D1
+ 29 01 00 00 00 00 02 30 03
+ 29 01 00 00 00 00 02 31 FF
+ 29 01 00 00 00 00 02 32 00
+ 29 01 00 00 00 00 02 33 00
+ 29 01 00 00 00 00 02 34 00
+ 29 01 00 00 00 00 02 35 09
+ 29 01 00 00 00 00 02 36 00
+ 29 01 00 00 00 00 02 37 1D
+ 29 01 00 00 00 00 02 38 00
+ 29 01 00 00 00 00 02 39 2E
+ 29 01 00 00 00 00 02 3A 00
+ 29 01 00 00 00 00 02 3B 3D
+ 29 01 00 00 00 00 02 3D 00
+ 29 01 00 00 00 00 02 3F 4C
+ 29 01 00 00 00 00 02 40 00
+ 29 01 00 00 00 00 02 41 59
+ 29 01 00 00 00 00 02 42 00
+ 29 01 00 00 00 00 02 43 66
+ 29 01 00 00 00 00 02 44 00
+ 29 01 00 00 00 00 02 45 73
+ 29 01 00 00 00 00 02 46 00
+ 29 01 00 00 00 00 02 47 A0
+ 29 01 00 00 00 00 02 48 00
+ 29 01 00 00 00 00 02 49 C7
+ 29 01 00 00 00 00 02 4A 01
+ 29 01 00 00 00 00 02 4B 0C
+ 29 01 00 00 00 00 02 4C 01
+ 29 01 00 00 00 00 02 4D 46
+ 29 01 00 00 00 00 02 4E 01
+ 29 01 00 00 00 00 02 4F A4
+ 29 01 00 00 00 00 02 50 01
+ 29 01 00 00 00 00 02 51 F1
+ 29 01 00 00 00 00 02 52 01
+ 29 01 00 00 00 00 02 53 F3
+ 29 01 00 00 00 00 02 54 02
+ 29 01 00 00 00 00 02 55 36
+ 29 01 00 00 00 00 02 56 02
+ 29 01 00 00 00 00 02 58 7B
+ 29 01 00 00 00 00 02 59 02
+ 29 01 00 00 00 00 02 5A A3
+ 29 01 00 00 00 00 02 5B 02
+ 29 01 00 00 00 00 02 5C D6
+ 29 01 00 00 00 00 02 5D 02
+ 29 01 00 00 00 00 02 5E F9
+ 29 01 00 00 00 00 02 5F 03
+ 29 01 00 00 00 00 02 60 26
+ 29 01 00 00 00 00 02 61 03
+ 29 01 00 00 00 00 02 62 34
+ 29 01 00 00 00 00 02 63 03
+ 29 01 00 00 00 00 02 64 43
+ 29 01 00 00 00 00 02 65 03
+ 29 01 00 00 00 00 02 66 55
+ 29 01 00 00 00 00 02 67 03
+ 29 01 00 00 00 00 02 68 6A
+ 29 01 00 00 00 00 02 69 03
+ 29 01 00 00 00 00 02 6A 81
+ 29 01 00 00 00 00 02 6B 03
+ 29 01 00 00 00 00 02 6C 9F
+ 29 01 00 00 00 00 02 6D 03
+ 29 01 00 00 00 00 02 6E D1
+ 29 01 00 00 00 00 02 6F 03
+ 29 01 00 00 00 00 02 70 FF
+ 29 01 00 00 00 00 02 71 00
+ 29 01 00 00 00 00 02 72 00
+ 29 01 00 00 00 00 02 73 00
+ 29 01 00 00 00 00 02 74 09
+ 29 01 00 00 00 00 02 75 00
+ 29 01 00 00 00 00 02 76 1D
+ 29 01 00 00 00 00 02 77 00
+ 29 01 00 00 00 00 02 78 2E
+ 29 01 00 00 00 00 02 79 00
+ 29 01 00 00 00 00 02 7A 3D
+ 29 01 00 00 00 00 02 7B 00
+ 29 01 00 00 00 00 02 7C 4C
+ 29 01 00 00 00 00 02 7D 00
+ 29 01 00 00 00 00 02 7E 59
+ 29 01 00 00 00 00 02 7F 00
+ 29 01 00 00 00 00 02 80 66
+ 29 01 00 00 00 00 02 81 00
+ 29 01 00 00 00 00 02 82 73
+ 29 01 00 00 00 00 02 83 00
+ 29 01 00 00 00 00 02 84 A0
+ 29 01 00 00 00 00 02 85 00
+ 29 01 00 00 00 00 02 86 C7
+ 29 01 00 00 00 00 02 87 01
+ 29 01 00 00 00 00 02 88 0C
+ 29 01 00 00 00 00 02 89 01
+ 29 01 00 00 00 00 02 8A 46
+ 29 01 00 00 00 00 02 8B 01
+ 29 01 00 00 00 00 02 8C A4
+ 29 01 00 00 00 00 02 8D 01
+ 29 01 00 00 00 00 02 8E F1
+ 29 01 00 00 00 00 02 8F 01
+ 29 01 00 00 00 00 02 90 F3
+ 29 01 00 00 00 00 02 91 02
+ 29 01 00 00 00 00 02 92 36
+ 29 01 00 00 00 00 02 93 02
+ 29 01 00 00 00 00 02 94 7B
+ 29 01 00 00 00 00 02 95 02
+ 29 01 00 00 00 00 02 96 A3
+ 29 01 00 00 00 00 02 97 02
+ 29 01 00 00 00 00 02 98 D6
+ 29 01 00 00 00 00 02 99 02
+ 29 01 00 00 00 00 02 9A F9
+ 29 01 00 00 00 00 02 9B 03
+ 29 01 00 00 00 00 02 9C 26
+ 29 01 00 00 00 00 02 9D 03
+ 29 01 00 00 00 00 02 9E 34
+ 29 01 00 00 00 00 02 9F 03
+ 29 01 00 00 00 00 02 A0 43
+ 29 01 00 00 00 00 02 A2 03
+ 29 01 00 00 00 00 02 A3 55
+ 29 01 00 00 00 00 02 A4 03
+ 29 01 00 00 00 00 02 A5 6A
+ 29 01 00 00 00 00 02 A6 03
+ 29 01 00 00 00 00 02 A7 81
+ 29 01 00 00 00 00 02 A9 03
+ 29 01 00 00 00 00 02 AA 9F
+ 29 01 00 00 00 00 02 AB 03
+ 29 01 00 00 00 00 02 AC D1
+ 29 01 00 00 00 00 02 AD 03
+ 29 01 00 00 00 00 02 AE FF
+ 29 01 00 00 00 00 02 AF 00
+ 29 01 00 00 00 00 02 B0 00
+ 29 01 00 00 00 00 02 B1 00
+ 29 01 00 00 00 00 02 B2 09
+ 29 01 00 00 00 00 02 B3 00
+ 29 01 00 00 00 00 02 B4 1D
+ 29 01 00 00 00 00 02 B5 00
+ 29 01 00 00 00 00 02 B6 2E
+ 29 01 00 00 00 00 02 B7 00
+ 29 01 00 00 00 00 02 B8 3D
+ 29 01 00 00 00 00 02 B9 00
+ 29 01 00 00 00 00 02 BA 4C
+ 29 01 00 00 00 00 02 BB 00
+ 29 01 00 00 00 00 02 BC 59
+ 29 01 00 00 00 00 02 BD 00
+ 29 01 00 00 00 00 02 BE 66
+ 29 01 00 00 00 00 02 BF 00
+ 29 01 00 00 00 00 02 C0 73
+ 29 01 00 00 00 00 02 C1 00
+ 29 01 00 00 00 00 02 C2 A0
+ 29 01 00 00 00 00 02 C3 00
+ 29 01 00 00 00 00 02 C4 C7
+ 29 01 00 00 00 00 02 C5 01
+ 29 01 00 00 00 00 02 C6 0C
+ 29 01 00 00 00 00 02 C7 01
+ 29 01 00 00 00 00 02 C8 46
+ 29 01 00 00 00 00 02 C9 01
+ 29 01 00 00 00 00 02 CA A4
+ 29 01 00 00 00 00 02 CB 01
+ 29 01 00 00 00 00 02 CC F1
+ 29 01 00 00 00 00 02 CD 01
+ 29 01 00 00 00 00 02 CE F3
+ 29 01 00 00 00 00 02 CF 02
+ 29 01 00 00 00 00 02 D0 36
+ 29 01 00 00 00 00 02 D1 02
+ 29 01 00 00 00 00 02 D2 7B
+ 29 01 00 00 00 00 02 D3 02
+ 29 01 00 00 00 00 02 D4 A3
+ 29 01 00 00 00 00 02 D5 02
+ 29 01 00 00 00 00 02 D6 D6
+ 29 01 00 00 00 00 02 D7 02
+ 29 01 00 00 00 00 02 D8 F9
+ 29 01 00 00 00 00 02 D9 03
+ 29 01 00 00 00 00 02 DA 26
+ 29 01 00 00 00 00 02 DB 03
+ 29 01 00 00 00 00 02 DC 34
+ 29 01 00 00 00 00 02 DD 03
+ 29 01 00 00 00 00 02 DE 43
+ 29 01 00 00 00 00 02 DF 03
+ 29 01 00 00 00 00 02 E0 55
+ 29 01 00 00 00 00 02 E1 03
+ 29 01 00 00 00 00 02 E2 6A
+ 29 01 00 00 00 00 02 E3 03
+ 29 01 00 00 00 00 02 E4 81
+ 29 01 00 00 00 00 02 E5 03
+ 29 01 00 00 00 00 02 E6 9F
+ 29 01 00 00 00 00 02 E7 03
+ 29 01 00 00 00 00 02 E8 D1
+ 29 01 00 00 00 00 02 E9 03
+ 29 01 00 00 00 00 02 EA FF
+ 29 01 00 00 00 00 02 FF 04
+ 29 01 00 00 00 00 02 07 00
+ 29 01 00 00 00 00 02 08 92
+ 29 01 00 00 00 00 02 FF 00
+ 29 01 00 00 05 00 02 FB 01
+ 29 01 00 00 00 00 02 D3 09
+ 29 01 00 00 00 00 02 D4 04
+ 29 01 00 00 00 00 02 51 00
+ 29 01 00 00 00 00 02 53 2c
+ 29 01 00 00 00 00 02 55 00
+ 29 01 00 00 78 00 02 11 00
+ 29 01 00 00 00 00 02 29 00];
+ qcom,mdss-dsi-off-command = [05 01 00 00 32 00 02 28 00
+ 05 01 00 00 78 00 02 10 00];
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ qcom,mdss-dsi-h-sync-pulse = <1>;
+ qcom,mdss-dsi-traffic-mode = "burst_mode";
+ qcom,mdss-dsi-lane-map = "lane_map_0123";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,mdss-dsi-panel-timings = [9e 43 37 00 60 58 39 45 5b 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x1e>;
+ qcom,mdss-dsi-t-clk-pre = <0x38>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <255>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs";
+ qcom,mdss-dsi-reset-sequence = <1 20>, <0 20>, <1 20>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-otm1283a-720p-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-otm1283a-720p-video.dtsi
new file mode 100644
index 00000000000..d241a1c2a00
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-otm1283a-720p-video.dtsi
@@ -0,0 +1,191 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/*---------------------------------------------------------------------------
+ * This file is autogenerated file using gcdb parser. Please do not edit it.
+ * Update input XML file to add a new entry or update variable in this file
+ * VERSION = "1.0"
+ *---------------------------------------------------------------------------*/
+&mdss_mdp {
+ dsi_otm1283a_720p_video: qcom,mdss_dsi_otm1283a_720p_video {
+ qcom,mdss-dsi-panel-name = "otm1283a 720p video mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-destination = "display_1";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <720>;
+ qcom,mdss-dsi-panel-height = <1280>;
+ qcom,mdss-dsi-h-front-porch = <52>;
+ qcom,mdss-dsi-h-back-porch = <100>;
+ qcom,mdss-dsi-h-pulse-width = <24>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <20>;
+ qcom,mdss-dsi-v-front-porch = <8>;
+ qcom,mdss-dsi-v-pulse-width = <4>;
+ qcom,mdss-dsi-h-left-border = <0>;
+ qcom,mdss-dsi-h-right-border = <0>;
+ qcom,mdss-dsi-v-top-border = <0>;
+ qcom,mdss-dsi-v-bottom-border = <0>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-color-order = "rgb_swap_rgb";
+ qcom,mdss-dsi-underflow-color = <0xff>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-on-command = [29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 04 ff 12 83 01
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 03 ff 12 83
+ 29 01 00 00 00 00 02 00 92
+ 29 01 00 00 00 00 02 ff 30
+ 29 01 00 00 00 00 02 00 93
+ 29 01 00 00 00 00 02 ff 02
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0A c0 00 64 00 10 10 00 64 10 10
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 07 c0 00 5c 00 01 00 04
+ 29 01 00 00 00 00 02 00 b3
+ 29 01 00 00 00 00 03 c0 00 50
+ 29 01 00 00 00 00 02 00 81
+ 29 01 00 00 00 00 02 c1 55
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 02 c4 49
+ 29 01 00 00 00 00 02 00 e0
+ 29 01 00 00 00 00 02 c0 c8
+ 29 01 00 00 00 00 02 00 a0
+ 29 01 00 00 00 00 0F c4 05 10 04 02 05 15 11 05 10 07 02 05 15 11
+ 29 01 00 00 00 00 02 00 b0
+ 29 01 00 00 00 00 03 c4 00 00
+ 29 01 00 00 00 00 02 00 91
+ 29 01 00 00 00 00 03 c5 a6 d0
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 03 d8 c7 c7
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 02 d9 87
+ 29 01 00 00 00 00 02 00 b0
+ 29 01 00 00 00 00 03 c5 04 38
+ 29 01 00 00 00 00 02 00 bb
+ 29 01 00 00 00 00 02 c5 80
+ 29 01 00 00 00 00 02 00 82
+ 29 01 00 00 00 00 02 C4 02
+ 29 01 00 00 00 00 02 00 c6
+ 29 01 00 00 00 00 02 b0 03
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 02 d0 40
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 03 d1 00 00
+ 29 01 00 00 00 00 02 00 b2
+ 29 01 00 00 00 00 03 f5 00 00
+ 29 01 00 00 00 00 02 00 b4
+ 29 01 00 00 00 00 03 f5 00 00
+ 29 01 00 00 00 00 02 00 b6
+ 29 01 00 00 00 00 03 f5 00 00
+ 29 01 00 00 00 00 02 00 b8
+ 29 01 00 00 00 00 03 f5 00 00
+ 29 01 00 00 00 00 02 00 94
+ 29 01 00 00 00 00 02 F5 02
+ 29 01 00 00 00 00 02 00 BA
+ 29 01 00 00 00 00 02 F5 03
+ 29 01 00 00 00 00 02 00 b4
+ 29 01 00 00 00 00 02 c5 c0
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 05 f5 02 11 02 11
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 02 c5 50
+ 29 01 00 00 00 00 02 00 94
+ 29 01 00 00 00 00 02 c5 66
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0C cb 00 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 10 cb 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 a0
+ 29 01 00 00 00 00 10 cb 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 b0
+ 29 01 00 00 00 00 10 cb 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 c0
+ 29 01 00 00 00 00 10 cb 05 05 05 05 05 05 05 05 05 00 05 00 00 00 00
+ 29 01 00 00 00 00 02 00 d0
+ 29 01 00 00 00 00 10 cb 00 00 00 00 05 00 00 05 05 05 05 05 05 05 05
+ 29 01 00 00 00 00 02 00 e0
+ 29 01 00 00 00 00 0F cb 05 00 05 00 00 00 00 00 00 00 00 05 00 00
+ 29 01 00 00 00 00 02 00 f0
+ 29 01 00 00 00 00 0C cb ff ff ff ff ff ff ff ff ff ff ff
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 10 cc 29 2a 0a 0c 0e 10 12 14 06 00 08 00 00 00 00
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 10 cc 00 00 00 00 02 00 00 29 2a 09 0b 0d 0f 11 13
+ 29 01 00 00 00 00 02 00 a0
+ 29 01 00 00 00 00 0F cc 05 00 07 00 00 00 00 00 00 00 00 01 00 00
+ 29 01 00 00 00 00 02 00 b0
+ 29 01 00 00 00 00 10 cc 29 2a 13 11 0f 0d 0b 09 01 00 07 00 00 00 00
+ 29 01 00 00 00 00 02 00 c0
+ 29 01 00 00 00 00 10 cc 00 00 00 00 05 00 00 29 2a 14 12 10 0e 0c 0a
+ 29 01 00 00 00 00 02 00 d0
+ 29 01 00 00 00 00 0F cc 02 00 08 00 00 00 00 00 00 00 00 06 00 00
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0D ce 89 05 10 88 05 10 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 0F ce 54 fc 10 54 fd 10 55 00 10 55 01 10 00 00
+ 29 01 00 00 00 00 02 00 a0
+ 29 01 00 00 00 00 0F ce 58 07 04 fc 00 10 00 58 06 04 fd 00 10 00
+ 29 01 00 00 00 00 02 00 b0
+ 29 01 00 00 00 00 0F ce 58 05 04 fe 00 10 00 58 04 04 ff 00 10 00
+ 29 01 00 00 00 00 02 00 c0
+ 29 01 00 00 00 00 0F ce 58 03 05 00 00 10 00 58 02 05 01 00 10 00
+ 29 01 00 00 00 00 02 00 d0
+ 29 01 00 00 00 00 0F ce 58 01 05 02 00 10 00 58 00 05 03 00 10 00
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0F cf 50 00 05 04 00 10 00 50 01 05 05 00 10 00
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 0F cf 50 02 05 06 00 10 00 50 03 05 07 00 10 00
+ 29 01 00 00 00 00 02 00 a0
+ 29 01 00 00 00 00 0F cf 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 b0
+ 29 01 00 00 00 00 0F cf 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 c0
+ 29 01 00 00 00 00 0C cf 39 39 20 20 00 00 01 01 20 00 00
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 11 e1 02 12 18 0E 07 0F 0B 09 04 07 0E 08 0F 12 0C 08
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 11 e2 02 12 18 0E 07 10 0B 0A 04 08 0E 08 0F 12 0C 08
+ 29 01 00 00 00 00 02 00 b5
+ 29 01 00 00 00 00 07 c5 0b 95 ff 0b 95 ff
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 04 ff ff ff ff
+ 29 01 00 00 78 00 02 11 00
+ 29 01 00 00 00 00 02 29 00];
+ qcom,mdss-dsi-off-command = [05 01 00 00 00 00 02 28 00
+ 05 01 00 00 78 00 02 10 00];
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ qcom,mdss-dsi-h-sync-pulse = <1>;
+ qcom,mdss-dsi-traffic-mode = "burst_mode";
+ qcom,mdss-dsi-lane-map = "lane_map_0123";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,mdss-dsi-panel-timings = [92 1A 12 00 3E 42 16 1E 14 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x04>;
+ qcom,mdss-dsi-t-clk-pre = <0x1C>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <255>;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-pmic-bank-select = <0>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-reset-sequence = <1 1>, <0 50>, <1 50>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-otm8019a-fwvga-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-otm8019a-fwvga-video.dtsi
new file mode 100644
index 00000000000..183bbe92adc
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-otm8019a-fwvga-video.dtsi
@@ -0,0 +1,170 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/*---------------------------------------------------------------------------
+ * This file is autogenerated file using gcdb parser. Please do not edit it.
+ * Update input XML file to add a new entry or update variable in this file
+ * VERSION = "1.0"
+ *---------------------------------------------------------------------------*/
+&mdss_mdp {
+ dsi_otm8019a_fwvga_video: qcom,mdss_dsi_otm8019a_fwvga_video {
+ qcom,mdss-dsi-panel-name = "otm8019a fwvga video mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-destination = "display_1";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <480>;
+ qcom,mdss-dsi-panel-height = <854>;
+ qcom,mdss-dsi-h-front-porch = <46>;
+ qcom,mdss-dsi-h-back-porch = <44>;
+ qcom,mdss-dsi-h-pulse-width = <4>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <16>;
+ qcom,mdss-dsi-v-front-porch = <15>;
+ qcom,mdss-dsi-v-pulse-width = <1>;
+ qcom,mdss-dsi-h-left-border = <0>;
+ qcom,mdss-dsi-h-right-border = <0>;
+ qcom,mdss-dsi-v-top-border = <0>;
+ qcom,mdss-dsi-v-bottom-border = <0>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-color-order = "rgb_swap_rgb";
+ qcom,mdss-dsi-underflow-color = <0xff>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-on-command = [29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 04 FF 80 19 01
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 03 FF 80 19
+ 29 01 00 00 00 00 02 00 B4
+ 29 01 00 00 00 00 02 C0 70
+ 29 01 00 00 00 00 02 00 88
+ 29 01 00 00 00 00 02 C4 80
+ 29 01 00 00 00 00 02 00 B6
+ 29 01 00 00 00 00 02 C0 03
+ 29 01 00 00 00 00 02 00 82
+ 29 01 00 00 00 00 02 C5 B0
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 03 C5 6e 76
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 03 D8 6F 6F
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 02 D9 33
+ 29 01 00 00 00 00 02 00 81
+ 29 01 00 00 00 00 02 C1 33
+ 29 01 00 00 00 00 02 00 A3
+ 29 01 00 00 00 00 02 C0 1B
+ 29 01 00 00 00 00 02 00 81
+ 29 01 00 00 00 00 02 C4 83
+ 29 01 00 00 00 00 02 00 92
+ 29 01 00 00 00 00 02 C5 01
+ 29 01 00 00 00 00 02 00 B1
+ 29 01 00 00 00 00 02 C5 A9
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 02 C4 30
+ 29 01 00 00 00 00 02 00 A0
+ 29 01 00 00 00 00 02 C1 E8
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 02 c1 03
+ 29 01 00 00 00 00 02 00 98
+ 29 01 00 00 00 00 02 c0 00
+ 29 01 00 00 00 00 02 00 a9
+ 29 01 00 00 00 00 02 c0 06
+ 29 01 00 00 00 00 02 00 b0
+ 29 01 00 00 00 00 04 c1 20 00 00
+ 29 01 00 00 00 00 02 00 e1
+ 29 01 00 00 00 00 03 c0 40 18
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 02 b6 B4
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 02 B3 02
+ 29 01 00 00 00 00 02 00 92
+ 29 01 00 00 00 00 02 B3 45
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0a C0 00 58 00 15 15 00 58 15 15
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 07 C0 00 15 00 00 00 03
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 07 CE 8B 03 03 8A 03 03
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 0F CE 23 58 01 23 59 01 33 5B 00 33 5C 00 00 00
+ 29 01 00 00 00 00 02 00 A0
+ 29 01 00 00 00 00 0F CE 38 09 03 5A 00 03 00 38 08 03 5B 00 03 00
+ 29 01 00 00 00 00 02 00 B0
+ 29 01 00 00 00 00 0F CE 38 07 03 54 00 03 00 38 06 03 55 00 03 00
+ 29 01 00 00 00 00 02 00 C0
+ 29 01 00 00 00 00 0F CE 38 05 03 56 00 03 00 38 04 03 57 00 03 00
+ 29 01 00 00 00 00 02 00 D0
+ 29 01 00 00 00 00 0F CE 38 03 03 58 00 03 00 38 02 03 59 00 03 00
+ 29 01 00 00 00 00 02 00 C0
+ 29 01 00 00 00 00 0B CF 3D 00 00 00 00 00 01 00 00 00
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0B CB 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 10 CB 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 A0
+ 29 01 00 00 00 00 10 CB 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 B0
+ 29 01 00 00 00 00 0B CB 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 C0
+ 29 01 00 00 00 00 10 CB 00 00 15 15 15 15 15 00 15 15 00 15 15 15 15
+ 29 01 00 00 00 00 02 00 D0
+ 29 01 00 00 00 00 10 CB 00 00 00 00 00 00 15 15 15 15 00 15 15 00 15
+ 29 01 00 00 00 00 02 00 E0
+ 29 01 00 00 00 00 0B CB 15 15 15 15 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 F0
+ 29 01 00 00 00 00 0B CB FF FF FF FF FF FF FF FF FF FF
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0B CC 00 00 02 0A 0C 0E 10 00 21 22
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 10 CC 00 06 25 25 08 00 00 00 00 00 00 07 25 25 05
+ 29 01 00 00 00 00 02 00 A0
+ 29 01 00 00 00 00 10 CC 00 22 21 00 0f 0d 0b 09 01 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 B0
+ 29 01 00 00 00 00 0B CC 00 00 05 09 0F 0D 0B 00 21 22
+ 29 01 00 00 00 00 02 00 C0
+ 29 01 00 00 00 00 10 CC 00 01 25 25 07 00 00 00 00 00 00 08 25 25 02
+ 29 01 00 00 00 00 02 00 D0
+ 29 01 00 00 00 00 10 CC 00 22 21 00 0c 0e 10 0a 06 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 15 E1 00 07 14 29 3f 52 59 85 72 87 81 70 88 74 79 72 6a 61 55 00
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 15 E2 00 07 14 29 3f 52 59 85 72 87 81 70 88 74 79 72 6a 61 55 00
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 04 ff ff ff ff
+ 05 01 00 00 78 00 02 11 00
+ 05 01 00 00 28 00 02 29 00];
+ qcom,mdss-dsi-off-command = [05 01 00 00 0A 00 02 28 00
+ 05 01 00 00 78 00 02 10 00];
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ qcom,mdss-dsi-h-sync-pulse = <1>;
+ qcom,mdss-dsi-traffic-mode = "burst_mode";
+ qcom,mdss-dsi-lane-map = "lane_map_3012";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-panel-timings = [9E 1D 15 00 2E 2B 1A 1F 25 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x20>;
+ qcom,mdss-dsi-t-clk-pre = <0x2E>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <255>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-pmic-bank-select = <0>;
+ qcom,mdss-dsi-pwm-gpio = <&pm8916_mpps 4 0>;
+ qcom,mdss-dsi-reset-sequence = <1 20>, <0 2>, <1 20>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-sharp-dualmipi0-wqxga-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-sharp-dualmipi0-wqxga-video.dtsi
new file mode 100644
index 00000000000..d9b0fddcbaf
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-sharp-dualmipi0-wqxga-video.dtsi
@@ -0,0 +1,63 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&mdss_mdp {
+ dsi_dual_sharp_video_0: qcom,mdss_dsi_sharp_wqxga_video_0 {
+ qcom,mdss-dsi-panel-name = "Dual 0 SHARP video mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-destination = "display_1";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <800>;
+ qcom,mdss-dsi-panel-height = <2560>;
+ qcom,mdss-dsi-h-front-porch = <76>;
+ qcom,mdss-dsi-h-back-porch = <32>;
+ qcom,mdss-dsi-h-pulse-width = <16>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <2>;
+ qcom,mdss-dsi-v-front-porch = <4>;
+ qcom,mdss-dsi-v-pulse-width = <2>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-underflow-color = <0xff>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-on-command = [05 01 00 00 a0 00 02 11 00
+ 05 01 00 00 02 00 02 29 00];
+ qcom,mdss-dsi-off-command = [05 01 00 00 02 00 02 28 00
+ 05 01 00 00 a0 00 02 10 00];
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ qcom,mdss-dsi-h-sync-pulse = <0>;
+ qcom,mdss-dsi-traffic-mode = "non_burst_sync_event";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,mdss-dsi-panel-broadcast-mode;
+ qcom,mdss-dsi-panel-timings = [32 36 24 00 66 68 28 38 2a 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x07>;
+ qcom,mdss-dsi-t-clk-pre = <0x0d>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <50>;
+ qcom,mdss-dsi-bl-pmic-bank-select = <2>;
+ qcom,mdss-dsi-reset-sequence = <1 2>, <0 5>, <1 120>;
+ qcom,mdss-pan-physical-width-dimension = <83>;
+ qcom,mdss-pan-physical-height-dimension = <133>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-sharp-dualmipi1-wqxga-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-sharp-dualmipi1-wqxga-video.dtsi
new file mode 100644
index 00000000000..155afd9f374
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-sharp-dualmipi1-wqxga-video.dtsi
@@ -0,0 +1,60 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&mdss_mdp {
+ dsi_dual_sharp_video_1: qcom,mdss_dsi_sharp_wqxga_video_1 {
+ qcom,mdss-dsi-panel-name = "Dual 1 SHARP video mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi1>;
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-destination = "display_2";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <800>;
+ qcom,mdss-dsi-panel-height = <2560>;
+ qcom,mdss-dsi-h-front-porch = <76>;
+ qcom,mdss-dsi-h-back-porch = <32>;
+ qcom,mdss-dsi-h-pulse-width = <16>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <2>;
+ qcom,mdss-dsi-v-front-porch = <4>;
+ qcom,mdss-dsi-v-pulse-width = <2>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-underflow-color = <0xff>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-on-command = [05 01 00 00 a0 00 02 11 00
+ 05 01 00 00 02 00 02 29 00];
+ qcom,mdss-dsi-off-command = [05 01 00 00 02 00 02 28 00
+ 05 01 00 00 a0 00 02 10 00];
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ qcom,mdss-dsi-h-sync-pulse = <0>;
+ qcom,mdss-dsi-traffic-mode = "non_burst_sync_event";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,mdss-dsi-panel-broadcast-mode;
+ qcom,mdss-dsi-panel-timings = [32 36 24 00 66 68 28 38 2a 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x07>;
+ qcom,mdss-dsi-t-clk-pre = <0x0d>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-reset-sequence = <1 2>, <0 5>, <1 120>;
+ qcom,mdss-pan-physical-width-dimension = <83>;
+ qcom,mdss-pan-physical-height-dimension = <133>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-sim-cmd.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-sim-cmd.dtsi
new file mode 100644
index 00000000000..694973e4ff4
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-sim-cmd.dtsi
@@ -0,0 +1,94 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&mdss_mdp {
+ dsi_sim_cmd: qcom,mdss_dsi_sim_cmd{
+ qcom,mdss-dsi-panel-name = "Simulator cmd mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
+ qcom,mdss-dsi-panel-type = "dsi_cmd_mode";
+ qcom,mdss-dsi-panel-destination = "display_1";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <1080>;
+ qcom,mdss-dsi-panel-height = <1920>;
+ qcom,mdss-dsi-h-front-porch = <96>;
+ qcom,mdss-dsi-h-back-porch = <64>;
+ qcom,mdss-dsi-h-pulse-width = <16>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <16>;
+ qcom,mdss-dsi-v-front-porch = <4>;
+ qcom,mdss-dsi-v-pulse-width = <1>;
+ qcom,mdss-dsi-h-left-border = <0>;
+ qcom,mdss-dsi-h-right-border = <0>;
+ qcom,mdss-dsi-v-top-border = <0>;
+ qcom,mdss-dsi-v-bottom-border = <0>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-color-order = "rgb_swap_rgb";
+ qcom,mdss-dsi-underflow-color = <0xff>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-h-sync-pulse = <0>;
+ qcom,mdss-dsi-traffic-mode = "non_burst_sync_event";
+ qcom,mdss-dsi-lane-map = "lane_map_0123";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,mdss-dsi-hor-line-idle = <0 40 256>,
+ <40 120 128>,
+ <120 240 64>;
+ qcom,mdss-dsi-panel-timings = [cd 32 22 00 60 64 26 34 29 03
+ 04 00];
+ qcom,mdss-dsi-reset-sequence = <1 10>, <0 10>, <1 10>;
+ qcom,mdss-dsi-t-clk-post = <0x03>;
+ qcom,mdss-dsi-t-clk-pre = <0x27>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-te-pin-select = <1>;
+ qcom,mdss-dsi-wr-mem-start = <0x2c>;
+ qcom,mdss-dsi-wr-mem-continue = <0x3c>;
+ qcom,mdss-dsi-te-dcs-command = <1>;
+ qcom,mdss-dsi-te-check-enable;
+ qcom,mdss-dsi-te-using-te-pin;
+ qcom,mdss-dsi-on-command = [29 01 00 00 00 00 02 b0 03
+ 05 01 00 00 0a 00 01 00
+ /* Soft reset, wait 10ms */
+ 15 01 00 00 0a 00 02 3a 77
+ /* Set Pixel format (24 bpp) */
+ 39 01 00 00 0a 00 05 2a 00 00 04 ff
+ /* Set Column address */
+ 39 01 00 00 0a 00 05 2b 00 00 05 9f
+ /* Set page address */
+ 15 01 00 00 0a 00 02 35 00
+ /* Set tear on */
+ 39 01 00 00 0a 00 03 44 00 00
+ /* Set tear scan line */
+ 15 01 00 00 0a 00 02 51 ff
+ /* write display brightness */
+ 15 01 00 00 0a 00 02 53 24
+ /* write control brightness */
+ 15 01 00 00 0a 00 02 55 00
+ /* CABC brightness */
+ 05 01 00 00 78 00 01 11
+ /* exit sleep mode, wait 120ms */
+ 05 01 00 00 10 00 01 29];
+ /* Set display on, wait 16ms */
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command = [05 01 00 00 32 00 02 28 00
+ 05 01 00 00 78 00 02 10 00];
+ qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
+ qcom,panel-ack-disabled;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-sim-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-sim-video.dtsi
new file mode 100644
index 00000000000..a356dac1462
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-sim-video.dtsi
@@ -0,0 +1,62 @@
+/* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/*---------------------------------------------------------------------------
+ * This file is autogenerated file using gcdb parser. Please do not edit it.
+ * Update input XML file to add a new entry or update variable in this file
+ * VERSION = "1.0"
+ *---------------------------------------------------------------------------*/
+&mdss_mdp {
+ dsi_sim_vid: qcom,mdss_dsi_sim_video {
+ qcom,mdss-dsi-panel-name = "Simulator video mode dsi panel";
+ qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-destination = "display_1";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <640>;
+ qcom,mdss-dsi-panel-height = <480>;
+ qcom,mdss-dsi-h-front-porch = <6>;
+ qcom,mdss-dsi-h-back-porch = <6>;
+ qcom,mdss-dsi-h-pulse-width = <2>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <6>;
+ qcom,mdss-dsi-v-front-porch = <6>;
+ qcom,mdss-dsi-v-pulse-width = <2>;
+ qcom,mdss-dsi-h-left-border = <0>;
+ qcom,mdss-dsi-h-right-border = <0>;
+ qcom,mdss-dsi-v-top-border = <0>;
+ qcom,mdss-dsi-v-bottom-border = <0>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-underflow-color = <0xff>;
+ qcom,mdss-dsi-border-color = <0>;
+ qcom,mdss-dsi-on-command = [32 01 00 00 00 00 02 00 00];
+ qcom,mdss-dsi-off-command = [22 01 00 00 00 00 02 00 00];
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-h-sync-pulse = <0>;
+ qcom,mdss-dsi-traffic-mode = "non_burst_sync_event";
+ qcom,mdss-dsi-bllp-eof-power-mode;
+ qcom,mdss-dsi-bllp-power-mode;
+ qcom,mdss-dsi-lane-0-state;
+ qcom,mdss-dsi-lane-1-state;
+ qcom,mdss-dsi-lane-2-state;
+ qcom,mdss-dsi-lane-3-state;
+ qcom,mdss-dsi-panel-timings = [00 00 00 00 00 00 00 00 00 00 00 00];
+ qcom,mdss-dsi-t-clk-post = <0x04>;
+ qcom,mdss-dsi-t-clk-pre = <0x1b>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-reset-sequence = <1 20>, <0 200>, <1 20>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-gdsc-8916.dtsi b/arch/arm64/boot/dts/qcom/msm-gdsc-8916.dtsi
new file mode 100644
index 00000000000..891e59867d8
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-gdsc-8916.dtsi
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ gdsc_venus: qcom,gdsc@184c018 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_venus";
+ reg = <0x184c018 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_mdss: qcom,gdsc@184d078 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_mdss";
+ reg = <0x184d078 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_jpeg: qcom,gdsc@185701c {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_jpeg";
+ reg = <0x185701c 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_vfe: qcom,gdsc@1858034 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_vfe";
+ reg = <0x1858034 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_oxili_gx: qcom,gdsc@185901c {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_oxili_gx";
+ reg = <0x185901c 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_venus_core0: qcom,gdsc@184c028 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_venus_core0";
+ reg = <0x184c028 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_venus_core1: qcom,gdsc@184c030 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_venus_core1";
+ reg = <0x184c030 0x4>;
+ status = "disabled";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-gdsc.dtsi b/arch/arm64/boot/dts/qcom/msm-gdsc.dtsi
new file mode 100644
index 00000000000..9a1f32eb0c7
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-gdsc.dtsi
@@ -0,0 +1,168 @@
+/*
+ * Copyright (c) 2012-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ gdsc_venus: qcom,gdsc@fd8c1024 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_venus";
+ reg = <0xfd8c1024 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_venus_core0: qcom,gdsc@fd8c1040 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_venus_core0";
+ reg = <0xfd8c1040 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_venus_core1: qcom,gdsc@fd8c1044 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_venus_core1";
+ reg = <0xfd8c1044 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_venus_core2: qcom,gdsc@fd8c1050 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_venus_core2";
+ reg = <0xfd8c1050 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_vpu: qcom,gdsc@fd8c1404 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_vpu";
+ reg = <0xfd8c1404 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_camss_top: qcom,gdsc@fd8c34a0 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_camss_top";
+ reg = <0xfd8c34a0 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_mdss: qcom,gdsc@fd8c2304 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_mdss";
+ reg = <0xfd8c2304 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_jpeg: qcom,gdsc@fd8c35a4 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_jpeg";
+ reg = <0xfd8c35a4 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_vfe: qcom,gdsc@fd8c36a4 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_vfe";
+ reg = <0xfd8c36a4 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_cpp: qcom,gdsc@fd8c36d4 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_cpp";
+ reg = <0xfd8c36d4 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_oxili_gx: qcom,gdsc@fd8c4024 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_oxili_gx";
+ reg = <0xfd8c4024 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_oxili_cx: qcom,gdsc@fd8c4034 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_oxili_cx";
+ reg = <0xfd8c4034 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_usb_hsic: qcom,gdsc@fc400404 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_usb_hsic";
+ reg = <0xfc400404 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_pcie: qcom,gdsc@0xfc401e18 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_pcie";
+ reg = <0xfc401e18 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_pcie_0: qcom,gdsc@fc401ac4 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_pcie_0";
+ reg = <0xfc401ac4 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_pcie_1: qcom,gdsc@fc401b44 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_pcie_1";
+ reg = <0xfc401b44 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_usb30: qcom,gdsc@fc401e84 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_usb30";
+ reg = <0xfc401e84 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_usb30_sec: qcom,gdsc@fc401ec0 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_usb30_sec";
+ reg = <0xfc401ec0 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_vcap: qcom,gdsc@fd8c1804 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_vcap";
+ reg = <0xfd8c1804 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_bcss: qcom,gdsc@fc744128 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_bcss";
+ reg = <0xfc744128 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_ufs: qcom,gdsc@fc401d44 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_ufs";
+ reg = <0xfc401d44 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_fd: qcom,gdsc@fd8c3b64 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_fd";
+ reg = <0xfd8c3b64 0x4>;
+ status = "disabled";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-iommu-v1.dtsi b/arch/arm64/boot/dts/qcom/msm-iommu-v1.dtsi
new file mode 100644
index 00000000000..911d83c1092
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-iommu-v1.dtsi
@@ -0,0 +1,1513 @@
+/* Copyright (c) 2012-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ jpeg_iommu: qcom,iommu@fda64000 {
+ compatible = "qcom,msm-smmu-v1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0xfda64000 0x10000>;
+ reg-names = "iommu_base";
+ interrupts = <0 67 0>,
+ <0 229 0>, <0 231 0>,
+ <0 230 0>, <0 232 0>;
+ interrupt-names = "pmon",
+ "global_cfg_NS_irq", "global_client_NS_irq",
+ "global_cfg_S_irq", "global_client_S_irq";
+ qcom,needs-alt-core-clk;
+ label = "jpeg_iommu";
+ status = "disabled";
+ qcom,msm-bus,name = "jpeg_ebi";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <62 512 0 0>,
+ <62 512 0 1000>;
+
+ qcom,iommu-pmu-ngroups = <1>;
+ qcom,iommu-pmu-ncounters = <8>;
+ qcom,iommu-pmu-event-classes = <0x00
+ 0x01
+ 0x08
+ 0x09
+ 0x0A
+ 0x10
+ 0x11
+ 0x12
+ 0x80
+ 0x81
+ 0x82
+ 0x83
+ 0x90
+ 0x91
+ 0x92
+ 0xb0
+ 0xb1>;
+
+ qcom,iommu-bfb-regs = <0x204c
+ 0x2050
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x2008
+ 0x200c
+ 0x2010
+ 0x2014>;
+
+ qcom,iommu-bfb-data = <0x0000ffff
+ 0x0
+ 0x4
+ 0x4
+ 0x0
+ 0x0
+ 0x10
+ 0x50
+ 0x0
+ 0x10
+ 0x20
+ 0x0
+ 0x0
+ 0x0
+ 0x0>;
+
+ qcom,iommu-ctx@fda6c000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfda6c000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <0>;
+ label = "jpeg_enc0";
+ };
+
+ qcom,iommu-ctx@fda6d000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfda6d000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <1>;
+ label = "jpeg_enc1";
+ };
+
+ qcom,iommu-ctx@fda6e000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfda6e000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <2>;
+ label = "jpeg_dec";
+ };
+ };
+
+ mdp_iommu: qcom,iommu@fd928000 {
+ compatible = "qcom,msm-smmu-v1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0xfd928000 0x10000>;
+ reg-names = "iommu_base";
+ interrupts = <0 73 0>,
+ <0 229 0>, <0 231 0>,
+ <0 230 0>, <0 232 0>;
+ interrupt-names = "pmon",
+ "global_cfg_NS_irq", "global_client_NS_irq",
+ "global_cfg_S_irq", "global_client_S_irq";
+ qcom,iommu-secure-id = <1>;
+ label = "mdp_iommu";
+ qcom,msm-bus,name = "mdp_ebi";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <22 512 0 0>,
+ <22 512 0 1000>;
+ status = "disabled";
+
+ qcom,iommu-pmu-ngroups = <1>;
+ qcom,iommu-pmu-ncounters = <8>;
+ qcom,iommu-pmu-event-classes = <0x00
+ 0x01
+ 0x08
+ 0x09
+ 0x0A
+ 0x10
+ 0x11
+ 0x12
+ 0x80
+ 0x81
+ 0x82
+ 0x83
+ 0x90
+ 0x91
+ 0x92
+ 0xb0
+ 0xb1>;
+
+ qcom,iommu-bfb-regs = <0x204c
+ 0x2050
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2008
+ 0x200c
+ 0x2010
+ 0x2014
+ 0x2018
+ 0x201c
+ 0x2020>;
+
+ qcom,iommu-bfb-data = <0xffffffff
+ 0x0
+ 0x00000004
+ 0x00000010
+ 0x00000000
+ 0x00000000
+ 0x00000034
+ 0x00000044
+ 0x0
+ 0x34
+ 0x74
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0>;
+
+ qcom,iommu-ctx@fd930000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfd930000 0x1000>;
+ interrupts = <0 47 0>;
+ qcom,iommu-ctx-sids = <0>;
+ label = "mdp_0";
+ };
+
+ qcom,iommu-ctx@fd931000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfd931000 0x1000>;
+ interrupts = <0 47 0>, <0 46 0>;
+ qcom,iommu-ctx-sids = <1>;
+ label = "mdp_1";
+ qcom,secure-context;
+ };
+
+ qcom,iommu-ctx@fd932000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfd932000 0x1000>;
+ interrupts = <0 47 0>, <0 46 0>;
+ qcom,iommu-ctx-sids = <>;
+ label = "mdp_2";
+ qcom,secure-context;
+ };
+ };
+
+ venus_iommu: qcom,iommu@fdc84000 {
+ compatible = "qcom,msm-smmu-v1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0xfdc84000 0x10000
+ 0xfdce0004 0x4>;
+ reg-names = "iommu_base", "clk_base";
+ interrupts = <0 45 0>,
+ <0 229 0>, <0 231 0>,
+ <0 230 0>, <0 232 0>;
+ interrupt-names = "pmon",
+ "global_cfg_NS_irq", "global_client_NS_irq",
+ "global_cfg_S_irq", "global_client_S_irq";
+ qcom,iommu-secure-id = <0>;
+ qcom,needs-alt-core-clk;
+ label = "venus_iommu";
+ qcom,msm-bus,name = "venus_ebi";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <63 512 0 0>,
+ <63 512 0 1000>;
+ status = "disabled";
+
+ qcom,iommu-pmu-ngroups = <1>;
+ qcom,iommu-pmu-ncounters = <8>;
+ qcom,iommu-pmu-event-classes = <0x00
+ 0x01
+ 0x08
+ 0x09
+ 0x0A
+ 0x10
+ 0x11
+ 0x12
+ 0x80
+ 0x81
+ 0x82
+ 0x83
+ 0x90
+ 0x91
+ 0x92
+ 0xb0
+ 0xb1>;
+
+ qcom,iommu-bfb-regs = <0x204c
+ 0x2050
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2008
+ 0x200c
+ 0x2010
+ 0x2014
+ 0x2018
+ 0x201c
+ 0x2020
+ 0x2024
+ 0x2028
+ 0x202c
+ 0x2030
+ 0x2034
+ 0x2038>;
+
+ qcom,iommu-bfb-data = <0xffffffff
+ 0xffffffff
+ 0x00000004
+ 0x00000008
+ 0x00000000
+ 0x00000000
+ 0x00000094
+ 0x000000b4
+ 0x0
+ 0x94
+ 0x114
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0>;
+
+ venus_ns: qcom,iommu-ctx@fdc8c000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfdc8c000 0x1000>;
+ interrupts = <0 42 0>;
+ qcom,iommu-ctx-sids = <0 1 2 3 4 5>;
+ label = "venus_ns";
+ };
+
+ venus_cp: qcom,iommu-ctx@fdc8d000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfdc8d000 0x1000>;
+ interrupts = <0 42 0>, <0 43 0>;
+ qcom,iommu-ctx-sids = <0x80 0x81 0x82 0x83 0x84 0x85>;
+ label = "venus_cp";
+ qcom,secure-context;
+ };
+
+ venus_fw: qcom,iommu-ctx@fdc8e000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfdc8e000 0x1000>;
+ interrupts = <0 42 0>, <0 43 0>;
+ qcom,iommu-ctx-sids = <0xc0 0xc6>;
+ label = "venus_fw";
+ qcom,secure-context;
+ };
+ };
+
+ kgsl_iommu: qcom,iommu@fdb10000 {
+ compatible = "qcom,msm-smmu-v1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0xfdb10000 0x10000>;
+ reg-names = "iommu_base";
+ interrupts = <0 38 0>,
+ <0 229 0>, <0 231 0>,
+ <0 230 0>, <0 232 0>;
+ interrupt-names = "pmon",
+ "global_cfg_NS_irq", "global_client_NS_irq",
+ "global_cfg_S_irq", "global_client_S_irq";
+ label = "kgsl_iommu";
+ qcom,msm-bus,name = "kgsl_ebi";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <26 512 0 0>,
+ <26 512 0 1000>;
+ status = "disabled";
+
+ qcom,iommu-pmu-ngroups = <1>;
+ qcom,iommu-pmu-ncounters = <8>;
+ qcom,iommu-pmu-event-classes = <0x00
+ 0x01
+ 0x08
+ 0x09
+ 0x0A
+ 0x10
+ 0x11
+ 0x12
+ 0x80
+ 0x81
+ 0x82
+ 0x83
+ 0x90
+ 0x91
+ 0x92
+ 0xb0
+ 0xb1>;
+
+ qcom,iommu-bfb-regs = <0x204c
+ 0x2050
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2008>;
+
+ qcom,iommu-bfb-data = <0x00000003
+ 0x0
+ 0x00000004
+ 0x00000010
+ 0x00000000
+ 0x00000000
+ 0x00000001
+ 0x00000021
+ 0x0
+ 0x1
+ 0x81
+ 0x0>;
+
+ qcom,iommu-ctx@fdb18000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfdb18000 0x1000>;
+ interrupts = <0 241 0>;
+ qcom,iommu-ctx-sids = <0>;
+ label = "gfx3d_user";
+ };
+
+ qcom,iommu-ctx@fdb19000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfdb19000 0x1000>;
+ interrupts = <0 241 0>;
+ qcom,iommu-ctx-sids = <1>;
+ label = "gfx3d_priv";
+ };
+
+ qcom,iommu-ctx@fdb1a000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfdb1a000 0x1000>;
+ interrupts = <0 241 0>;
+ qcom,iommu-ctx-sids = <2>;
+ label = "gfx3d_spare";
+ };
+
+ };
+
+ vfe_iommu: qcom,iommu@fda44000 {
+ compatible = "qcom,msm-smmu-v1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0xfda44000 0x10000>;
+ reg-names = "iommu_base";
+ interrupts = <0 62 0>,
+ <0 229 0>, <0 231 0>,
+ <0 230 0>, <0 232 0>;
+ interrupt-names = "pmon",
+ "global_cfg_NS_irq", "global_client_NS_irq",
+ "global_cfg_S_irq", "global_client_S_irq";
+ qcom,iommu-secure-id = <19>;
+ qcom,needs-alt-core-clk;
+ label = "vfe_iommu";
+ qcom,msm-bus,name = "vfe_ebi";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <29 512 0 0>,
+ <29 512 0 1000>;
+ status = "disabled";
+
+ qcom,iommu-pmu-ngroups = <1>;
+ qcom,iommu-pmu-ncounters = <8>;
+ qcom,iommu-pmu-event-classes = <0x00
+ 0x01
+ 0x08
+ 0x09
+ 0x0A
+ 0x10
+ 0x11
+ 0x12
+ 0x80
+ 0x81
+ 0x82
+ 0x83
+ 0x90
+ 0x91
+ 0x92
+ 0xb0
+ 0xb1>;
+
+ qcom,iommu-bfb-regs = <0x204c
+ 0x2050
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x2008
+ 0x200c
+ 0x2010
+ 0x2014
+ 0x2018
+ 0x201c
+ 0x2020>;
+
+ qcom,iommu-bfb-data = <0xffffffff
+ 0x00000000
+ 0x4
+ 0x8
+ 0x0
+ 0x0
+ 0x20
+ 0x78
+ 0x0
+ 0x20
+ 0x36
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0>;
+
+ qcom,iommu-ctx@fda4c000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfda4c000 0x1000>;
+ interrupts = <0 65 0>;
+ qcom,iommu-ctx-sids = <0 1>;
+ label = "vfe";
+ };
+
+ qcom,iommu-ctx@fda4d000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfda4d000 0x1000>;
+ interrupts = <0 65 0>;
+ qcom,iommu-ctx-sids = <2>;
+ label = "cpp";
+ };
+
+ qcom,iommu-ctx@fda4e000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfda4e000 0x1000>;
+ interrupts = <0 65 0>, <0 64 0>;
+ qcom,iommu-ctx-sids = <>;
+ label = "vfe_secure";
+ qcom,secure-context;
+ };
+ };
+
+ copss_iommu: qcom,iommu@f9bc4000 {
+ compatible = "qcom,msm-smmu-v1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0xf9bc4000 0x10000>;
+ reg-names = "iommu_base";
+ interrupts = <0 153 0>,
+ <0 229 0>, <0 231 0>,
+ <0 230 0>, <0 232 0>;
+ interrupt-names = "pmon",
+ "global_cfg_NS_irq", "global_client_NS_irq",
+ "global_cfg_S_irq", "global_client_S_irq";
+ qcom,iommu-secure-id = <8>;
+ label = "copss_iommu";
+ qcom,msm-bus,name = "copss_ebi";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <88 512 0 0>,
+ <88 512 0 1000>;
+ status = "disabled";
+ qcom,iommu-pmu-ngroups = <1>;
+ qcom,iommu-pmu-ncounters = <8>;
+ qcom,iommu-pmu-event-classes = <0x00
+ 0x01
+ 0x08
+ 0x09
+ 0x0a
+ 0x10
+ 0x11
+ 0x12
+ 0x80
+ 0x81
+ 0x82
+ 0x83
+ 0x90
+ 0x91
+ 0x92
+ 0xb0
+ 0xb1>;
+
+ qcom,iommu-bfb-regs = <0x204c
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x2008>;
+
+ qcom,iommu-bfb-data = <0x3
+ 0x4
+ 0x4
+ 0x0
+ 0x0
+ 0x0
+ 0x1
+ 0x0
+ 0x0
+ 0x40
+ 0x44
+ 0x0
+ 0x0>;
+
+ qcom,iommu-lpae-bfb-regs = <0x204c
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x2000
+ 0x2008>;
+
+ qcom,iommu-lpae-bfb-data = <0x3
+ 0x0
+ 0x4
+ 0x4
+ 0x0
+ 0x5
+ 0x0
+ 0x1
+ 0x0
+ 0x0
+ 0x40
+ 0x44
+ 0x3
+ 0x0>;
+
+
+ copss_cb0: qcom,iommu-ctx@f9bcc000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xf9bcc000 0x1000>;
+ interrupts = <0 142 0>;
+ qcom,iommu-ctx-sids = <0>;
+ label = "copss_cb0";
+ };
+
+ copss_cb1: qcom,iommu-ctx@f9bcd000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xf9bcd000 0x1000>;
+ interrupts = <0 142 0>;
+ qcom,iommu-ctx-sids = <1>;
+ label = "copss_cb1";
+ };
+
+ copss_usb: qcom,iommu-ctx@f9bce000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xf9bce000 0x1000>;
+ interrupts = <0 142 0>;
+ qcom,iommu-ctx-sids = <2>;
+ label = "copss_usb";
+ };
+
+ copss_cb3: qcom,iommu-ctx@f9bcf000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xf9bcf000 0x1000>;
+ interrupts = <0 142 0>;
+ qcom,iommu-ctx-sids = <3>;
+ label = "copss_cb3";
+ };
+
+ copss_cb4: qcom,iommu-ctx@f9bd0000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xf9bd0000 0x1000>;
+ interrupts = <0 142 0>;
+ qcom,iommu-ctx-sids = <4>;
+ label = "copss_cb4";
+ };
+
+ copss_cb5: qcom,iommu-ctx@f9bd1000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xf9bd1000 0x1000>;
+ interrupts = <0 142 0>;
+ qcom,iommu-ctx-sids = <5>;
+ label = "copss_cb5";
+ };
+
+ copss_cb6: qcom,iommu-ctx@f9bd2000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xf9bd2000 0x1000>;
+ interrupts = <0 142 0>;
+ qcom,iommu-ctx-sids = <6>;
+ label = "copss_cb6";
+ };
+
+ copss_cb_7: qcom,iommu-ctx@f9bd3000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xf9bd3000 0x1000>;
+ interrupts = <0 142 0>;
+ qcom,iommu-ctx-sids = <7>;
+ label = "copss_cb7";
+ };
+ };
+
+ vpu_iommu: qcom,iommu@fdee4000 {
+ compatible = "qcom,msm-smmu-v1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0xfdee4000 0x10000>;
+ reg-names = "iommu_base";
+ interrupts = <0 147 0>,
+ <0 229 0>, <0 231 0>,
+ <0 230 0>, <0 232 0>;
+ interrupt-names = "pmon",
+ "global_cfg_NS_irq", "global_client_NS_irq",
+ "global_cfg_S_irq", "global_client_S_irq";
+ qcom,iommu-secure-id = <7>;
+ label = "vpu_iommu";
+ qcom,msm-bus,name = "vpu_ebi";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <93 512 0 0>,
+ <93 512 0 1000>;
+ status = "disabled";
+ qcom,iommu-pmu-ngroups = <1>;
+ qcom,iommu-pmu-ncounters = <8>;
+ qcom,iommu-pmu-event-classes = <0x00
+ 0x01
+ 0x08
+ 0x09
+ 0x0a
+ 0x10
+ 0x11
+ 0x12
+ 0x80
+ 0x81
+ 0x82
+ 0x83
+ 0x90
+ 0x91
+ 0x92
+ 0xb0
+ 0xb1>;
+
+ qcom,iommu-bfb-regs = <0x204c
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2008
+ 0x200c
+ 0x2010
+ 0x2014>;
+
+ qcom,iommu-bfb-data = <0xffff
+ 0x4
+ 0x10
+ 0x0
+ 0x0
+ 0xf
+ 0x4b
+ 0x0
+ 0x1e00
+ 0x1e00
+ 0x5a0f
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0>;
+
+ qcom,iommu-lpae-bfb-regs = <0x204c
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2008
+ 0x200c
+ 0x2010
+ 0x2000
+ 0x2014>;
+
+ qcom,iommu-lpae-bfb-data = <0xffff
+ 0x0
+ 0x4
+ 0x10
+ 0x0
+ 0x0
+ 0xf
+ 0x4b
+ 0x1e00
+ 0x5a2d
+ 0x1e00
+ 0x5a0f
+ 0x0
+ 0x0
+ 0x0
+ 0x3
+ 0x0>;
+
+
+ vpu_hlos: qcom,iommu-ctx@fdeec000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfdeec000 0x1000>;
+ interrupts = <0 145 0>;
+ qcom,iommu-ctx-sids = <0 1 3>;
+ label = "vpu_hlos";
+ };
+
+ vpu_cp: qcom,iommu-ctx@fdeed000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfdeed000 0x1000>;
+ interrupts = <0 145 0>, <0 144 0>;
+ qcom,iommu-ctx-sids = <8 9>;
+ label = "vpu_cp";
+ qcom,secure-context;
+ };
+
+ vpu_fw: qcom,iommu-ctx@fdeee000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfdeee000 0x1000>;
+ interrupts = <0 145 0>, <0 144 0>;
+ qcom,iommu-ctx-sids = <5 7 15>;
+ label = "vpu_fw";
+ qcom,secure-context;
+ };
+ };
+
+ lpass_qdsp_iommu: qcom,iommu@fe054000 {
+ compatible = "qcom,msm-smmu-v1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0xfe054000 0x10000>;
+ reg-names = "iommu_base";
+ interrupts = <0 202 0>,
+ <0 229 0>, <0 231 0>,
+ <0 230 0>, <0 232 0>;
+ interrupt-names = "pmon",
+ "global_cfg_NS_irq", "global_client_NS_irq",
+ "global_cfg_S_irq", "global_client_S_irq";
+ qcom,iommu-secure-id = <2>;
+ label = "lpass_qdsp_iommu";
+ status = "disabled";
+ qcom,iommu-pmu-ngroups = <1>;
+ qcom,iommu-pmu-ncounters = <8>;
+ qcom,iommu-pmu-event-classes = <0x00
+ 0x01
+ 0x08
+ 0x09
+ 0x0a
+ 0x10
+ 0x11
+ 0x12
+ 0x80
+ 0x81
+ 0x82
+ 0x83
+ 0x90
+ 0x91
+ 0x92
+ 0xb0
+ 0xb1>;
+
+ qcom,iommu-bfb-regs = <0x204c
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x2008>;
+
+ qcom,iommu-bfb-data = <0x3
+ 0x4
+ 0x4
+ 0x0
+ 0x0
+ 0x0
+ 0x10
+ 0x0
+ 0x0
+ 0x15e
+ 0x19e
+ 0x0
+ 0x0>;
+
+ qcom,iommu-lpae-bfb-regs = <0x204c
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x2000
+ 0x2008>;
+
+ qcom,iommu-lpae-bfb-data = <0x3
+ 0x0
+ 0x4
+ 0x4
+ 0x0
+ 0x20
+ 0x0
+ 0x10
+ 0x0
+ 0x0
+ 0x15e
+ 0x19e
+ 0x3
+ 0x0>;
+
+
+ lpass_q6_fw: qcom,iommu-ctx@fe05c000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfe05c000 0x1000>;
+ interrupts = <0 265 0>, <0 203 0>;
+ qcom,iommu-ctx-sids = <0 15>;
+ label = "q6_fw";
+ qcom,secure-context;
+ };
+
+ lpass_audio_shared: qcom,iommu-ctx@fe05d000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfe05d000 0x1000>;
+ interrupts = <0 265 0>;
+ qcom,iommu-ctx-sids = <1>;
+ label = "audio_shared";
+ };
+
+ lpass_q6_spare1: qcom,iommu-ctx@fe05e000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfe05e000 0x1000>;
+ interrupts = <0 265 0>;
+ qcom,iommu-ctx-sids = <2>;
+ label = "q6_spare1";
+ };
+
+ lpass_q6_spare2: qcom,iommu-ctx@fe05f000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfe05f000 0x1000>;
+ interrupts = <0 265 0>;
+ qcom,iommu-ctx-sids = <3 4 5 6 7 8 9 10 11 12 13 14>;
+ label = "q6_spare2";
+ };
+ };
+
+ lpass_core_iommu: qcom,iommu@fe064000 {
+ compatible = "qcom,msm-smmu-v1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0xfe064000 0x10000>;
+ reg-names = "iommu_base";
+ interrupts = <0 166 0>,
+ <0 229 0>, <0 231 0>,
+ <0 230 0>, <0 232 0>;
+ interrupt-names = "pmon",
+ "global_cfg_NS_irq", "global_client_NS_irq",
+ "global_cfg_S_irq", "global_client_S_irq";
+ qcom,iommu-secure-id = <6>;
+ label = "lpass_core_iommu";
+ status = "disabled";
+ qcom,iommu-pmu-ngroups = <1>;
+ qcom,iommu-pmu-ncounters = <8>;
+ qcom,iommu-pmu-event-classes = <0x00
+ 0x01
+ 0x08
+ 0x09
+ 0x0a
+ 0x10
+ 0x11
+ 0x12
+ 0x80
+ 0x81
+ 0x82
+ 0x83
+ 0x90
+ 0x91
+ 0x92
+ 0xb0
+ 0xb1>;
+
+ qcom,iommu-bfb-regs = <0x204c
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x2008>;
+
+ qcom,iommu-bfb-data = <0x3
+ 0x4
+ 0x4
+ 0x0
+ 0x0
+ 0x0
+ 0x4
+ 0x0
+ 0x0
+ 0x40
+ 0x50
+ 0x0
+ 0x0>;
+
+ qcom,iommu-lpae-bfb-regs = <0x204c
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x2000
+ 0x2008>;
+
+ qcom,iommu-lpae-bfb-data = <0x3
+ 0x0
+ 0x4
+ 0x4
+ 0x0
+ 0xc
+ 0x0
+ 0x4
+ 0x0
+ 0x0
+ 0x40
+ 0x50
+ 0x3
+ 0x0>;
+
+
+ lpass_core_image: qcom,iommu-ctx@fe06c000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfe06c000 0x1000>;
+ interrupts = <0 267 0>, <0 180 0>;
+ qcom,iommu-ctx-sids = <11>;
+ label = "lpass_core_image";
+ qcom,secure-context;
+ };
+
+ lpass_core_audio: qcom,iommu-ctx@fe06d000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfe06d000 0x1000>;
+ interrupts = <0 267 0>;
+ qcom,iommu-ctx-sids = <12>;
+ label = "lpass_core_audio";
+ };
+
+ lpass_core_slimbus: qcom,iommu-ctx@fe06e000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfe06e000 0x1000>;
+ interrupts = <0 267 0>;
+ qcom,iommu-ctx-sids = <13>;
+ label = "lpass_core_slimbus";
+ };
+ };
+
+ vcap_iommu: qcom,iommu@fdfb6000 {
+ compatible = "qcom,msm-smmu-v1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0xfdfb6000 0x10000>;
+ reg-names = "iommu_base";
+ interrupts = <0 315 0>,
+ <0 229 0>, <0 231 0>,
+ <0 230 0>, <0 232 0>;
+ interrupt-names = "pmon",
+ "global_cfg_NS_irq", "global_client_NS_irq",
+ "global_cfg_S_irq", "global_client_S_irq";
+ qcom,needs-alt-core-clk;
+ label = "vcap_iommu";
+ status = "disabled";
+ qcom,msm-bus,name = "vcap_ebi";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <48 512 0 0>,
+ <48 512 0 1000>;
+
+ qcom,iommu-pmu-ngroups = <1>;
+ qcom,iommu-pmu-ncounters = <8>;
+ qcom,iommu-pmu-event-classes = <0x00
+ 0x01
+ 0x08
+ 0x09
+ 0x0A
+ 0x10
+ 0x11
+ 0x12
+ 0x80
+ 0x81
+ 0x82
+ 0x83
+ 0x90
+ 0x91
+ 0x92
+ 0xb0
+ 0xb1>;
+
+ qcom,iommu-bfb-regs = <0x204c
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2008
+ 0x200c
+ 0x2060>;
+
+ qcom,iommu-bfb-data = <0x0ff
+ 0x00000004
+ 0x00000008
+ 0x0
+ 0x0
+ 0x00000008
+ 0x00000028
+ 0x0
+ 0x001000
+ 0x001000
+ 0x003008
+ 0x0
+ 0x0
+ 0x0
+ 0x1555>;
+
+ qcom,iommu-ctx@fdfbe000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfdfbe000 0x1000>;
+ interrupts = <0 313 0>;
+ qcom,iommu-ctx-sids = <0>;
+ label = "vcap_cb0";
+ };
+
+ qcom,iommu-ctx@fdfbf000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfdfbf000 0x1000>;
+ interrupts = <0 313 0>;
+ qcom,iommu-ctx-sids = <1>;
+ label = "vcap_cb1";
+ };
+
+ qcom,iommu-ctx@fdfc0000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfdfc0000 0x1000>;
+ interrupts = <0 313 0>;
+ qcom,iommu-ctx-sids = <>;
+ label = "vcap_cb2";
+ };
+ };
+
+ bcast_iommu: qcom,iommu@fc734000{
+ compatible = "qcom,msm-smmu-v1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0xfc734000 0x10000>;
+ reg-names = "iommu_base";
+ interrupts = <0 279 0>,
+ <0 229 0>, <0 231 0>,
+ <0 230 0>, <0 232 0>;
+ interrupt-names = "pmon",
+ "global_cfg_NS_irq", "global_client_NS_irq",
+ "global_cfg_S_irq", "global_client_S_irq";
+ label = "bcast_iommu";
+ qcom,iommu-secure-id = <13>;
+ status = "disabled";
+
+ qcom,iommu-pmu-ngroups = <1>;
+ qcom,iommu-pmu-ncounters = <8>;
+ qcom,iommu-pmu-event-classes = <0x00
+ 0x01
+ 0x08
+ 0x09
+ 0x0A
+ 0x10
+ 0x11
+ 0x12
+ 0x80
+ 0x81
+ 0x82
+ 0x83
+ 0x90
+ 0x91
+ 0x92
+ 0xb0
+ 0xb1>;
+
+ qcom,iommu-bfb-regs = <0x204c
+ 0x2050
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2008
+ 0x200c
+ 0x2010
+ 0x2014
+ 0x2018
+ 0x201c
+ 0x2020
+ 0x2060>;
+
+ qcom,iommu-bfb-data = <0xffffffff
+ 0x1
+ 0x0000004
+ 0x0000004
+ 0x0
+ 0x0
+ 0x000055
+ 0x0000d9
+ 0x0
+ 0x000aa00
+ 0x0004200
+ 0x000e821
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x1555>;
+
+ bcast_cb0_hlos: qcom,iommu-ctx@fc73c000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfc73c000 0x1000>;
+ interrupts = <0 276 0>;
+ qcom,iommu-ctx-sids = <0 1 2 3 4 5 6 7
+ 8 9 10 11 12 13 14 15
+ 16 17 18 19 20 21 22 23
+ 24 25 26 27 28 29 30 31>;
+ label = "bcast_cb0_hlos";
+ };
+
+ bcast_cb1_cpz: qcom,iommu-ctx@fc73d000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfc73d000 0x1000>;
+ interrupts = <0 276 0>;
+ qcom,iommu-ctx-sids = <32 33 34 35 36 37 38 39
+ 40 41 42 43 44 45 46 47
+ 48 49 50 51 52 53 54 55
+ 56 57 58 59 60 61 62>;
+ label = "bcast_cb1_cpz";
+ qcom,secure-context;
+ };
+
+ bcast_cb2_demod: qcom,iommu-ctx@fc73e000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfc73e000 0x1000>;
+ interrupts = <0 276 0>;
+ qcom,iommu-ctx-sids = <63>;
+ label = "bcast_cb2_demod";
+ qcom,secure-context;
+ };
+
+ bcast_cb3_apz: qcom,iommu-ctx@fc73f000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfc73f000 0x1000>;
+ interrupts = <0 276 0>;
+ qcom,iommu-ctx-sids = <>;
+ label = "bcast_cb3_apz";
+ qcom,secure-context;
+ };
+ };
+
+ fd_iommu: qcom,iommu@0xfd864000 {
+ compatible = "qcom,msm-smmu-v1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0xfd864000 0x10000>;
+ reg-names = "iommu_base";
+ interrupts = <0 314 0>,
+ <0 229 0>, <0 231 0>,
+ <0 230 0>, <0 232 0>;
+ interrupt-names = "pmon",
+ "global_cfg_NS_irq", "global_client_NS_irq",
+ "global_cfg_S_irq", "global_client_S_irq";
+ label = "fd_iommu";
+ status = "disabled";
+
+ qcom,iommu-pmu-ngroups = <1>;
+ qcom,iommu-pmu-ncounters = <8>;
+ qcom,iommu-pmu-event-classes = <0x00
+ 0x01
+ 0x08
+ 0x09
+ 0x0A
+ 0x10
+ 0x11
+ 0x12
+ 0x80
+ 0x81
+ 0x82
+ 0x83
+ 0x90
+ 0x91
+ 0x92
+ 0xb0
+ 0xb1>;
+
+ qcom,iommu-bfb-regs = <0x2000
+ 0x204c
+ 0x2060
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x2008>;
+
+ qcom,iommu-bfb-data = <0x00000003
+ 0x00000007
+ 0x1555
+ 0x0
+ 0x00000004
+ 0x00000008
+ 0x0601
+ 0x1a0d
+ 0x0400
+ 0x1a02
+ 0x0
+ 0x00000000
+ 0x00000002
+ 0x0000000a
+ 0x0>;
+
+ qcom,iommu-ctx@fd86c000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfd86c000 0x1000>;
+ interrupts = <0 318 0>;
+ qcom,iommu-ctx-sids = <0>;
+ label = "camera_fd";
+ };
+
+ qcom,iommu-ctx@fd86d000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfd86d000 0x1000>;
+ interrupts = <0 318 0>;
+ qcom,iommu-ctx-sids = <>;
+ label = "fd_1";
+ };
+
+ qcom,iommu-ctx@fd86e000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfd86e000 0x1000>;
+ interrupts = <0 318 0>;
+ qcom,iommu-ctx-sids = <>;
+ label = "fd_2";
+ };
+ };
+
+ cpp_iommu: qcom,iommu@0xfda84000 {
+ compatible = "qcom,msm-smmu-v1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0xfda84000 0x10000>;
+ reg-names = "iommu_base";
+ interrupts = <0 264 0>,
+ <0 229 0>, <0 231 0>,
+ <0 230 0>, <0 232 0>;
+ interrupt-names = "pmon",
+ "global_cfg_NS_irq", "global_client_NS_irq",
+ "global_cfg_S_irq", "global_client_S_irq";
+ label = "cpp_iommu";
+ status = "disabled";
+
+ qcom,iommu-pmu-ngroups = <1>;
+ qcom,iommu-pmu-ncounters = <8>;
+ qcom,iommu-pmu-event-classes = <0x00
+ 0x01
+ 0x08
+ 0x09
+ 0x0A
+ 0x10
+ 0x11
+ 0x12
+ 0x80
+ 0x81
+ 0x82
+ 0x83
+ 0x90
+ 0x91
+ 0x92
+ 0xb0
+ 0xb1>;
+
+ qcom,iommu-bfb-regs = <0x2000
+ 0x204c
+ 0x2060
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x2008
+ 0x200c>;
+
+ qcom,iommu-bfb-data = <0x00000003
+ 0x3ff
+ 0x1555
+ 0x0
+ 0x00000004
+ 0x10
+ 0x1400
+ 0x164b2
+ 0x1400
+ 0x1640a
+ 0x0
+ 0x00000000
+ 0x0000000a
+ 0x32
+ 0x0
+ 0x0>;
+
+ qcom,iommu-ctx@fda8c000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfda8c000 0x1000>;
+ interrupts = <0 266 0>;
+ qcom,iommu-ctx-sids = <2>;
+ label = "cpp_0";
+ };
+
+ qcom,iommu-ctx@fda8d000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfda8d000 0x1000>;
+ interrupts = <0 266 0>;
+ qcom,iommu-ctx-sids = <>;
+ label = "cpp_1";
+ };
+
+ qcom,iommu-ctx@fda8e000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfda8e000 0x1000>;
+ interrupts = <0 266 0>;
+ qcom,iommu-ctx-sids = <>;
+ label = "cpp_2";
+ };
+ };
+
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-iommu-v2.dtsi b/arch/arm64/boot/dts/qcom/msm-iommu-v2.dtsi
new file mode 100644
index 00000000000..2aa3828704d
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-iommu-v2.dtsi
@@ -0,0 +1,238 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ gfx_iommu: qcom,iommu@1f00000 {
+ compatible = "qcom,msm-smmu-v2", "qcom,msm-mmu-500";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0x1f00000 0x10000>;
+ reg-names = "iommu_base";
+ interrupts = <0 43 0>, <0 42 0>;
+ interrupt-names = "global_cfg_NS_irq", "global_cfg_S_irq";
+ label = "gfx_iommu";
+ qcom,iommu-secure-id = <18>;
+ clocks = <&clock_gcc clk_gcc_smmu_cfg_clk>,
+ <&clock_gcc clk_gcc_gfx_tcu_clk>;
+ clock-names = "iface_clk", "core_clk";
+ status = "disabled";
+
+ qcom,iommu-ctx@1f09000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ reg = <0x1f09000 0x1000>;
+ interrupts = <0 241 0>;
+ qcom,iommu-ctx-sids = <0>;
+ label = "gfx3d_user";
+ };
+
+ qcom,iommu-ctx@1f0a000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ reg = <0x1f0a000 0x1000>;
+ interrupts = <0 242 0>;
+ qcom,iommu-ctx-sids = <1>;
+ label = "gfx3d_priv";
+ };
+ };
+
+ apps_iommu: qcom,iommu@1e00000 {
+ compatible = "qcom,msm-smmu-v2", "qcom,msm-mmu-500";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0x1e00000 0x40000
+ 0x1ef0000 0x3000>;
+ reg-names = "iommu_base", "smmu_local_base";
+ interrupts = <0 43 0>, <0 42 0>;
+ interrupt-names = "global_cfg_NS_irq", "global_cfg_S_irq";
+ label = "apps_iommu";
+ qcom,iommu-secure-id = <17>;
+ clocks = <&clock_gcc clk_gcc_smmu_cfg_clk>,
+ <&clock_gcc clk_gcc_apss_tcu_clk>;
+ clock-names = "iface_clk", "core_clk";
+ qcom,cb-base-offset = <0x20000>;
+ status = "disabled";
+
+ qcom,iommu-ctx@1e22000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ reg = <0x1e22000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <0x2000>;
+ label = "jpeg_enc0";
+ };
+
+ qcom,iommu-ctx@1e23000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ reg = <0x1e23000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <0x400>;
+ label = "vfe";
+ };
+
+ qcom,iommu-ctx@1e24000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ reg = <0x1e24000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <0xc00>;
+ label = "mdp_0";
+ };
+
+ venus_ns: qcom,iommu-ctx@1e25000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ reg = <0x1e25000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <0x800 0x801 0x802 0x803
+ 0x804 0x805 0x807>;
+ label = "venus_ns";
+ };
+
+ qcom,iommu-ctx@1e26000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ reg = <0x1e26000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <0x402>;
+ label = "cpp";
+ };
+
+ qcom,iommu-ctx@1e27000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ reg = <0x1e27000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <0x1000>;
+ label = "mDSP";
+ };
+
+ qcom,iommu-ctx@1e28000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ reg = <0x1e28000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <0x1400>;
+ label = "gss";
+ };
+
+ qcom,iommu-ctx@1e29000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ reg = <0x1e29000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <0x1800>;
+ label = "a2";
+ };
+
+ qcom,iommu-ctx@1e32000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ qcom,secure-context;
+ reg = <0x1e32000 0x1000>;
+ interrupts = <0 70 0>, <0 70 0>;
+ qcom,iommu-ctx-sids = <0xc01>;
+ label = "mdp_1";
+ };
+
+ venus_sec_pixel: qcom,iommu-ctx@1e33000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ qcom,secure-context;
+ reg = <0x1e33000 0x1000>;
+ interrupts = <0 70 0>, <0 70 0>;
+ qcom,iommu-ctx-sids = <0x885>;
+ label = "venus_sec_pixel";
+ };
+
+ venus_sec_bitstream: qcom,iommu-ctx@1e34000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ qcom,secure-context;
+ reg = <0x1e34000 0x1000>;
+ interrupts = <0 70 0>, <0 70 0>;
+ qcom,iommu-ctx-sids = <0x880 0x881 0x882 0x883 0x884>;
+ label = "venus_sec_bitstream";
+ };
+
+ venus_sec_non_pixel: qcom,iommu-ctx@1e35000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ qcom,secure-context;
+ reg = <0x1e35000 0x1000>;
+ interrupts = <0 70 0>, <0 70 0>;
+ qcom,iommu-ctx-sids = <0x887 0x8a0>;
+ label = "venus_sec_non_pixel";
+ };
+
+ venus_fw: qcom,iommu-ctx@1e36000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ qcom,secure-context;
+ reg = <0x1e36000 0x1000>;
+ interrupts = <0 70 0>, <0 70 0>;
+ qcom,iommu-ctx-sids = <0x8c0 0x8c6>;
+ label = "venus_fw";
+ };
+
+ periph_rpm: qcom,iommu-ctx@1e37000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ qcom,secure-context;
+ reg = <0x1e37000 0x1000>;
+ interrupts = <0 70 0>, <0 70 0>;
+ qcom,iommu-ctx-sids = <0x40>;
+ label = "periph_rpm";
+ };
+
+ qcom,iommu-ctx@1e38000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ reg = <0x1e38000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <0xC0 0xC4 0xC8 0xCC 0xD0 0xD3
+ 0xD4 0xD7 0xD8 0xDB 0xDC 0xDF
+ 0xF0 0xF3 0xF4 0xF7 0xF8 0xFB
+ 0xFC 0xFF>;
+ label = "periph_CE";
+ };
+
+ qcom,iommu-ctx@1e39000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ reg = <0x1e39000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <0x280 0x283 0x284 0x287 0x288
+ 0x28B 0x28C 0x28F 0x290 0x293
+ 0x294 0x297 0x298 0x29B 0x29C
+ 0x29F>;
+ label = "periph_BLSP";
+ };
+
+ qcom,iommu-ctx@1e3a000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ reg = <0x1e3a000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <0x100>;
+ label = "periph_SDC1";
+ };
+
+ qcom,iommu-ctx@1e3b000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ reg = <0x1e3b000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <0x140>;
+ label = "periph_SDC2";
+ };
+
+ qcom,iommu-ctx@1e3c000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ reg = <0x1e3c000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <0x1c0>;
+ label = "periph_audio";
+ };
+
+ qcom,iommu-ctx@1e3d000 {
+ compatible = "qcom,msm-smmu-v2-ctx";
+ reg = <0x1e3d000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <0x2c0>;
+ label = "periph_USB_HS1";
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-pm8916-rpm-regulator.dtsi b/arch/arm64/boot/dts/qcom/msm-pm8916-rpm-regulator.dtsi
new file mode 100644
index 00000000000..d5b7ea55c72
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-pm8916-rpm-regulator.dtsi
@@ -0,0 +1,365 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&rpm_bus {
+ rpm-regulator-smpa1 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "smpa";
+ qcom,resource-id = <1>;
+ qcom,regulator-type = <1>;
+ qcom,hpm-min-load = <100000>;
+ status = "disabled";
+
+ regulator-s1 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_s1";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-smpa2 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "smpa";
+ qcom,resource-id = <2>;
+ qcom,regulator-type = <1>;
+ qcom,hpm-min-load = <100000>;
+ status = "disabled";
+
+ regulator-s2 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_s2";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-smpa3 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "smpa";
+ qcom,resource-id = <3>;
+ qcom,regulator-type = <1>;
+ qcom,hpm-min-load = <100000>;
+ status = "disabled";
+
+ regulator-s3 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_s3";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-smpa4 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "smpa";
+ qcom,resource-id = <4>;
+ qcom,regulator-type = <1>;
+ qcom,hpm-min-load = <100000>;
+ status = "disabled";
+
+ regulator-s4 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_s4";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa1 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <1>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l1 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l1";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa2 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <2>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l2 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l2";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa3 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <3>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l3 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l3";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa4 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <4>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l4 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l4";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa5 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <5>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l5 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l5";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa6 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <6>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l6 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l6";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa7 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <7>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l7 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l7";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa8 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <8>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l8 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l8";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa9 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <9>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l9 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l9";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa10 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <10>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l10 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l10";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa11 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <11>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l11 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l11";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa12 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <12>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l12 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l12";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa13 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <13>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <5000>;
+ status = "disabled";
+
+ regulator-l13 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l13";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa14 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <14>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <5000>;
+ status = "disabled";
+
+ regulator-l14 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l14";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa15 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <15>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <5000>;
+ status = "disabled";
+
+ regulator-l15 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l15";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa16 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <16>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <5000>;
+ status = "disabled";
+
+ regulator-l16 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l16";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa17 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <17>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l17 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l17";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa18 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <18>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l18 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l18";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-pm8916.dtsi b/arch/arm64/boot/dts/qcom/msm-pm8916.dtsi
new file mode 100644
index 00000000000..6fe1957888e
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-pm8916.dtsi
@@ -0,0 +1,636 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&spmi_bus {
+
+ qcom,pm8916@0 {
+ spmi-slave-container;
+ reg = <0x0>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ pm8916_revid: qcom,revid@100 {
+ compatible = "qcom,qpnp-revid";
+ reg = <0x100 0x100>;
+ };
+
+ pm8916_pon: qcom,power-on@800 {
+ compatible = "qcom,qpnp-power-on";
+ reg = <0x800 0x100>;
+ interrupts = <0x0 0x8 0x0>,
+ <0x0 0x8 0x1>;
+ interrupt-names = "kpdpwr", "resin";
+ qcom,pon-dbc-delay = <15625>;
+ qcom,system-reset;
+ qcom,clear-warm-reset;
+
+ qcom,pon_1 {
+ qcom,pon-type = <0>;
+ qcom,support-reset = <1>;
+ qcom,pull-up = <1>;
+ qcom,s1-timer = <10256>;
+ qcom,s2-timer = <2000>;
+ qcom,s2-type = <1>;
+ linux,code = <116>;
+ };
+
+ qcom,pon_2 {
+ qcom,pon-type = <1>;
+ qcom,pull-up = <1>;
+ linux,code = <114>;
+ };
+ };
+
+ pm8916_mpps: mpps {
+ compatible = "qcom,qpnp-pin";
+ spmi-dev-container;
+ gpio-controller;
+ #gpio-cells = <2>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ label = "pm8916-mpp";
+
+ mpp@a000 {
+ reg = <0xa000 0x100>;
+ qcom,pin-num = <1>;
+ };
+
+ mpp@a100 {
+ reg = <0xa100 0x100>;
+ qcom,pin-num = <2>;
+ };
+
+ mpp@a200 {
+ reg = <0xa200 0x100>;
+ qcom,pin-num = <3>;
+ };
+
+ mpp@a300 {
+ reg = <0xa300 0x100>;
+ qcom,pin-num = <4>;
+ };
+ };
+
+ pm8916_gpios: gpios {
+ compatible = "qcom,qpnp-pin";
+ spmi-dev-container;
+ gpio-controller;
+ #gpio-cells = <2>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ label = "pm8916-gpio";
+
+ gpio@c000 {
+ reg = <0xc000 0x100>;
+ qcom,pin-num = <1>;
+ };
+
+ gpio@c100 {
+ reg = <0xc100 0x100>;
+ qcom,pin-num = <2>;
+ };
+
+ gpio@c200 {
+ reg = <0xc200 0x100>;
+ qcom,pin-num = <3>;
+ };
+
+ gpio@c300 {
+ reg = <0xc300 0x100>;
+ qcom,pin-num = <4>;
+ };
+ };
+
+ pm8916_rtc: qcom,pm8916_rtc {
+ spmi-dev-container;
+ compatible = "qcom,qpnp-rtc";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ qcom,qpnp-rtc-write = <0>;
+ qcom,qpnp-rtc-alarm-pwrup = <0>;
+
+ qcom,pm8916_rtc_rw@6000 {
+ reg = <0x6000 0x100>;
+ };
+ qcom,pm8916_rtc_alarm@6100 {
+ reg = <0x6100 0x100>;
+ interrupts = <0x0 0x61 0x1>;
+ };
+ };
+
+ pm8916_vadc: vadc@3100 {
+ compatible = "qcom,qpnp-vadc";
+ reg = <0x3100 0x100>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ interrupts = <0x0 0x31 0x0>;
+ interrupt-names = "eoc-int-en-set";
+ qcom,adc-bit-resolution = <15>;
+ qcom,adc-vdd-reference = <1800>;
+ qcom,vadc-poll-eoc;
+ qcom,pmic-revid = <&pm8916_revid>;
+
+ chan@8 {
+ label = "die_temp";
+ reg = <8>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <3>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@9 {
+ label = "ref_625mv";
+ reg = <9>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@a {
+ label = "ref_1250v";
+ reg = <0xa>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+ };
+
+ pm8916_tz: qcom,temp-alarm@2400 {
+ compatible = "qcom,qpnp-temp-alarm";
+ reg = <0x2400 0x100>;
+ interrupts = <0x0 0x24 0x0>;
+ label = "pm8916_tz";
+ qcom,channel-num = <8>;
+ qcom,threshold-set = <0>;
+ qcom,temp_alarm-vadc = <&pm8916_vadc>;
+ };
+
+ pm8916_adc_tm: vadc@3400 {
+ compatible = "qcom,qpnp-adc-tm";
+ reg = <0x3400 0x100>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ interrupts = <0x0 0x34 0x0>,
+ <0x0 0x34 0x3>,
+ <0x0 0x34 0x4>;
+ interrupt-names = "eoc-int-en-set",
+ "high-thr-en-set",
+ "low-thr-en-set";
+ qcom,adc-bit-resolution = <15>;
+ qcom,adc-vdd-reference = <1800>;
+ qcom,adc_tm-vadc = <&pm8916_vadc>;
+ qcom,pmic-revid = <&pm8916_revid>;
+ };
+
+ pm8916_chg: qcom,charger {
+ spmi-dev-container;
+ compatible = "qcom,qpnp-linear-charger";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ qcom,vddmax-mv = <4200>;
+ qcom,vddsafe-mv = <4200>;
+ qcom,vinmin-mv = <4308>;
+ qcom,ibatsafe-ma = <1440>;
+ qcom,thermal-mitigation = <1440 720 630 0>;
+ qcom,cool-bat-decidegc = <100>;
+ qcom,warm-bat-decidegc = <450>;
+ qcom,cool-bat-mv = <4100>;
+ qcom,warm-bat-mv = <4100>;
+ qcom,ibatmax-warm-ma = <360>;
+ qcom,ibatmax-cool-ma = <360>;
+ qcom,batt-hot-percentage = <25>;
+ qcom,batt-cold-percentage = <80>;
+ qcom,tchg-mins = <232>;
+ qcom,resume-soc = <99>;
+ qcom,chg-vadc = <&pm8916_vadc>;
+ qcom,chg-adc_tm = <&pm8916_adc_tm>;
+
+ status = "disabled";
+
+ qcom,chgr@1000 {
+ reg = <0x1000 0x100>;
+ interrupts = <0x0 0x10 0x7>,
+ <0x0 0x10 0x6>,
+ <0x0 0x10 0x5>,
+ <0x0 0x10 0x0>;
+ interrupt-names = "chg-done",
+ "chg-failed",
+ "fast-chg-on",
+ "vbat-det-lo";
+ };
+
+ qcom,bat-if@1200 {
+ reg = <0x1200 0x100>;
+ interrupts = <0x0 0x12 0x1>,
+ <0x0 0x12 0x0>;
+ interrupt-names = "bat-temp-ok",
+ "batt-pres";
+ };
+
+ qcom,usb-chgpth@1300 {
+ reg = <0x1300 0x100>;
+ interrupts = <0 0x13 0x4>,
+ <0 0x13 0x2>,
+ <0 0x13 0x1>;
+ interrupt-names = "usb-over-temp",
+ "chg-gone",
+ "usbin-valid";
+ };
+
+ qcom,chg-misc@1600 {
+ reg = <0x1600 0x100>;
+ };
+ };
+
+ pm8916_bms: qcom,vmbms {
+ spmi-dev-container;
+ compatible = "qcom,qpnp-vm-bms";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ status = "disabled";
+
+ qcom,v-cutoff-uv = <3400000>;
+ qcom,max-voltage-uv = <4200000>;
+ qcom,r-conn-mohm = <0>;
+ qcom,shutdown-soc-valid-limit = <100>;
+ qcom,low-soc-calculate-soc-threshold = <15>;
+ qcom,low-voltage-calculate-soc-ms = <1000>;
+ qcom,low-soc-calculate-soc-ms = <5000>;
+ qcom,calculate-soc-ms = <20000>;
+ qcom,volatge-soc-timeout-ms = <60000>;
+ qcom,low-voltage-threshold = <3450000>;
+ qcom,s3-ocv-tolerence-uv = <1200>;
+ qcom,s2-fifo-length = <5>;
+ qcom,low-soc-fifo-length = <2>;
+ qcom,bms-vadc = <&pm8916_vadc>;
+ qcom,bms-adc_tm = <&pm8916_adc_tm>;
+ qcom,pmic-revid = <&pm8916_revid>;
+
+ qcom,force-s3-on-suspend;
+ qcom,force-s2-in-charging;
+ qcom,report-charger-eoc;
+
+ qcom,batt-pres-status@1208 {
+ reg = <0x1208 0x1>;
+ };
+
+ qcom,qpnp-chg-pres@1008 {
+ reg = <0x1008 0x1>;
+ };
+
+ qcom,vm-bms@4000 {
+ reg = <0x4000 0x100>;
+ interrupts = <0x0 0x40 0x0>,
+ <0x0 0x40 0x1>,
+ <0x0 0x40 0x2>,
+ <0x0 0x40 0x3>,
+ <0x0 0x40 0x4>,
+ <0x0 0x40 0x5>;
+
+ interrupt-names = "leave_cv",
+ "enter_cv",
+ "good_ocv",
+ "ocv_thr",
+ "fifo_update_done",
+ "fsm_state_change";
+ };
+ };
+
+ pm8916_leds: qcom,leds@a100 {
+ compatible = "qcom,leds-qpnp";
+ reg = <0xa100 0x100>;
+ label = "mpp";
+ };
+ };
+
+ qcom,pm8916@1 {
+ spmi-slave-container;
+ reg = <0x1>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ regulator@1400 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_s1";
+ spmi-dev-container;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x1400 0x300>;
+ status = "disabled";
+
+ qcom,ctl@1400 {
+ reg = <0x1400 0x100>;
+ };
+ qcom,ps@1500 {
+ reg = <0x1500 0x100>;
+ };
+ qcom,freq@1600 {
+ reg = <0x1600 0x100>;
+ };
+ };
+
+ regulator@1700 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_s2";
+ spmi-dev-container;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x1700 0x300>;
+ status = "disabled";
+
+ qcom,ctl@1700 {
+ reg = <0x1700 0x100>;
+ };
+ qcom,ps@1800 {
+ reg = <0x1800 0x100>;
+ };
+ qcom,freq@1900 {
+ reg = <0x1900 0x100>;
+ };
+ };
+
+ regulator@1a00 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_s3";
+ spmi-dev-container;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x1a00 0x300>;
+ status = "disabled";
+
+ qcom,ctl@1a00 {
+ reg = <0x1a00 0x100>;
+ };
+ qcom,ps@1b00 {
+ reg = <0x1b00 0x100>;
+ };
+ qcom,freq@1c00 {
+ reg = <0x1c00 0x100>;
+ };
+ };
+
+ regulator@1d00 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_s4";
+ spmi-dev-container;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x1d00 0x300>;
+ status = "disabled";
+
+ qcom,ctl@1d00 {
+ reg = <0x1d00 0x100>;
+ };
+ qcom,ps@1e00 {
+ reg = <0x1e00 0x100>;
+ };
+ qcom,freq@1f00 {
+ reg = <0x1f00 0x100>;
+ };
+ };
+
+ regulator@4000 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l1";
+ reg = <0x4000 0x100>;
+ status = "disabled";
+ };
+
+ regulator@4100 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l2";
+ reg = <0x4100 0x100>;
+ status = "disabled";
+ };
+
+ regulator@4200 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l3";
+ reg = <0x4200 0x100>;
+ status = "disabled";
+ };
+
+ regulator@4300 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l4";
+ reg = <0x4300 0x100>;
+ status = "disabled";
+ };
+
+ regulator@4400 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l5";
+ reg = <0x4400 0x100>;
+ status = "disabled";
+ };
+
+ regulator@4500 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l6";
+ reg = <0x4500 0x100>;
+ status = "disabled";
+ };
+
+ regulator@4600 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l7";
+ reg = <0x4600 0x100>;
+ status = "disabled";
+ };
+
+ regulator@4700 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l8";
+ reg = <0x4700 0x100>;
+ status = "disabled";
+ };
+
+ regulator@4800 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l9";
+ reg = <0x4800 0x100>;
+ status = "disabled";
+ };
+
+ regulator@4900 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l10";
+ reg = <0x4900 0x100>;
+ status = "disabled";
+ };
+
+ regulator@4a00 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l11";
+ reg = <0x4a00 0x100>;
+ status = "disabled";
+ };
+
+ regulator@4b00 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l12";
+ reg = <0x4b00 0x100>;
+ status = "disabled";
+ };
+
+ regulator@4c00 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l13";
+ reg = <0x4c00 0x100>;
+ status = "disabled";
+ };
+
+ regulator@4d00 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l14";
+ reg = <0x4d00 0x100>;
+ status = "disabled";
+ };
+
+ regulator@4e00 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l15";
+ reg = <0x4e00 0x100>;
+ status = "disabled";
+ };
+
+ regulator@4f00 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l16";
+ reg = <0x4f00 0x100>;
+ status = "disabled";
+ };
+
+ regulator@5000 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l17";
+ reg = <0x5000 0x100>;
+ status = "disabled";
+ };
+
+ regulator@5100 {
+ compatible = "qcom,qpnp-regulator";
+ regulator-name = "8916_l18";
+ reg = <0x5100 0x100>;
+ status = "disabled";
+ };
+
+ pm8916_pwm: pwm@bc00 {
+ compatible = "qcom,qpnp-pwm";
+ reg = <0xbc00 0x100>;
+ reg-names = "qpnp-lpg-channel-base";
+ qcom,channel-id = <0>;
+ qcom,supported-sizes = <6>, <9>;
+ #pwm-cells = <2>;
+ };
+
+ pm8916_vib: qcom,vibrator@c000 {
+ compatible = "qcom,qpnp-vibrator";
+ reg = <0xc000 0x100>;
+ label = "vibrator";
+ status = "disabled";
+ };
+
+ pm8916_tombak_dig: msm8x16_wcd_codec@f000{
+ compatible = "qcom,wcd-spmi";
+ reg = <0xf000 0x100>;
+ interrupt-parent = <&spmi_bus>;
+ interrupts = <0x1 0xf0 0x0>,
+ <0x1 0xf0 0x1>,
+ <0x1 0xf0 0x2>,
+ <0x1 0xf0 0x3>,
+ <0x1 0xf0 0x4>,
+ <0x1 0xf0 0x5>,
+ <0x1 0xf0 0x6>,
+ <0x1 0xf0 0x7>;
+ interrupt-names = "spk_cnp_int",
+ "spk_clip_int",
+ "spk_ocp_int",
+ "ins_rem_det1",
+ "but_rel_det",
+ "but_press_det",
+ "ins_rem_det",
+ "mbhc_int";
+
+ cdc-vdda-cp-supply = <&pm8916_s4>;
+ qcom,cdc-vdda-cp-voltage = <1800000 2200000>;
+ qcom,cdc-vdda-cp-current = <770000>;
+
+ cdc-vdda-h-supply = <&pm8916_l5>;
+ qcom,cdc-vdda-h-voltage = <1800000 1800000>;
+ qcom,cdc-vdda-h-current = <20000>;
+
+ cdc-vdd-px-supply = <&pm8916_s4>;
+ qcom,cdc-vdd-px-voltage = <1800000 2200000>;
+ qcom,cdc-vdd-px-current = <770000>;
+
+ cdc-vdd-pa-supply = <&pm8916_l5>;
+ qcom,cdc-vdd-pa-voltage = <1800000 1800000>;
+ qcom,cdc-vdd-pa-current = <5000>;
+
+ cdc-vdd-mic-bias-supply = <&pm8916_l13>;
+ qcom,cdc-vdd-mic-bias-voltage = <3075000 3075000>;
+ qcom,cdc-vdd-mic-bias-current = <25000>;
+
+ qcom,cdc-mclk-clk-rate = <9600000>;
+
+ qcom,cdc-static-supplies = "cdc-vdda-h",
+ "cdc-vdd-px",
+ "cdc-vdd-pa",
+ "cdc-vdda-cp";
+
+ qcom,cdc-on-demand-supplies = "cdc-vdd-mic-bias";
+ };
+
+ pm8916_tombak_analog: msm8x16_wcd_codec@f100{
+ compatible = "qcom,wcd-spmi";
+ reg = <0xf100 0x100>;
+ interrupt-parent = <&spmi_bus>;
+ interrupts = <0x1 0xf1 0x0>,
+ <0x1 0xf1 0x1>,
+ <0x1 0xf1 0x2>,
+ <0x1 0xf1 0x3>,
+ <0x1 0xf1 0x4>,
+ <0x1 0xf1 0x5>;
+ interrupt-names = "ear_ocp_int",
+ "hphr_ocp_int",
+ "hphl_ocp_det",
+ "ear_cnp_int",
+ "hphr_cnp_int",
+ "hphl_cnp_int";
+ };
+
+ pm8916_bcm: qpnp-buck-current-monitor@1800 {
+ compatible = "qcom,qpnp-buck-current-monitor";
+ reg = <0x1800 0x100>;
+ interrupts = <1 0x18 0>, <1 0x18 1>;
+ interrupt-names = "iwarning", "icritical";
+ qcom,enable-current-monitor;
+ qcom,icrit-init-threshold-pc = <90>;
+ qcom,iwarn-init-threshold-pc = <70>;
+ qcom,icrit-polling-delay-msec = <1000>;
+ qcom,iwarn-polling-delay-msec = <2000>;
+
+ status = "disabled";
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-pm8994-rpm-regulator.dtsi b/arch/arm64/boot/dts/qcom/msm-pm8994-rpm-regulator.dtsi
new file mode 100644
index 00000000000..66ea88b74b8
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-pm8994-rpm-regulator.dtsi
@@ -0,0 +1,681 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&rpm_bus {
+ rpm-regulator-smpa1 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "smpa";
+ qcom,resource-id = <1>;
+ qcom,regulator-type = <1>;
+ qcom,hpm-min-load = <100000>;
+ status = "disabled";
+
+ regulator-s1 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_s1";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-smpa2 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "smpa";
+ qcom,resource-id = <2>;
+ qcom,regulator-type = <1>;
+ qcom,hpm-min-load = <100000>;
+ status = "disabled";
+
+ regulator-s2 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_s2";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-smpa3 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "smpa";
+ qcom,resource-id = <3>;
+ qcom,regulator-type = <1>;
+ qcom,hpm-min-load = <100000>;
+ status = "disabled";
+
+ regulator-s3 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_s3";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-smpa4 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "smpa";
+ qcom,resource-id = <4>;
+ qcom,regulator-type = <1>;
+ qcom,hpm-min-load = <100000>;
+ status = "disabled";
+
+ regulator-s4 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_s4";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-smpa5 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "smpa";
+ qcom,resource-id = <5>;
+ qcom,regulator-type = <1>;
+ qcom,hpm-min-load = <100000>;
+ status = "disabled";
+
+ regulator-s5 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_s5";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-smpa7 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "smpa";
+ qcom,resource-id = <7>;
+ qcom,regulator-type = <1>;
+ qcom,hpm-min-load = <100000>;
+ status = "disabled";
+
+ regulator-s7 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_s7";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa1 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <1>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l1 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l1";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa2 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <2>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l2 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l2";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa3 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <3>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l3 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l3";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa4 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <4>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l4 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l4";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa6 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <6>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l6 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l6";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa8 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <8>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <5000>;
+ status = "disabled";
+
+ regulator-l8 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l8";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa9 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <9>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l9 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l9";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa10 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <10>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l10 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l10";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa11 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <11>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l11 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l11";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa12 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <12>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l12 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l12";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa13 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <13>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l13 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l13";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa14 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <14>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l14 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l14";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa15 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <15>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l15 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l15";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa16 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <16>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l16 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l16";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa17 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <17>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l17 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l17";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa18 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <18>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l18 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l18";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa19 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <19>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l19 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l19";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa20 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <20>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l20 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l20";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa21 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <21>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l21 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l21";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa22 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <22>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l22 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l22";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa23 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <23>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l23 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l23";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa24 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <24>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l24 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l24";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa25 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <25>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l25 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l25";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa26 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <26>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l26 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l26";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa27 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <27>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l27 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l27";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa28 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <28>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l28 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l28";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa29 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <29>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l29 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l29";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa30 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <30>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <5000>;
+ status = "disabled";
+
+ regulator-l30 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l30";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa31 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <31>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <10000>;
+ status = "disabled";
+
+ regulator-l31 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l31";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa32 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "ldoa";
+ qcom,resource-id = <32>;
+ qcom,regulator-type = <0>;
+ qcom,hpm-min-load = <5000>;
+ status = "disabled";
+
+ regulator-l32 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l32";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-vsa1 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "vsa";
+ qcom,resource-id = <1>;
+ qcom,regulator-type = <2>;
+ status = "disabled";
+
+ regulator-lvs1 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_lvs1";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-vsa2 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "vsa";
+ qcom,resource-id = <2>;
+ qcom,regulator-type = <2>;
+ status = "disabled";
+
+ regulator-lvs2 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_lvs2";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-smpb1 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "smpb";
+ qcom,resource-id = <1>;
+ qcom,regulator-type = <1>;
+ qcom,hpm-min-load = <100000>;
+ status = "disabled";
+
+ regulator-s1 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pmi8994_s1";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-smpb2 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "smpb";
+ qcom,resource-id = <2>;
+ qcom,regulator-type = <1>;
+ qcom,hpm-min-load = <100000>;
+ status = "disabled";
+
+ regulator-s2 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pmi8994_s2";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-bstb {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "bstb";
+ qcom,resource-id = <1>;
+ qcom,regulator-type = <2>;
+ status = "disabled";
+
+ regulator-bst {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pmi8994_boost";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-bbyb {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "bbyb";
+ qcom,resource-id = <1>;
+ qcom,regulator-type = <0>;
+ status = "disabled";
+
+ regulator-bby {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pmi8994_boostbypass";
+ qcom,set = <3>;
+ status = "disabled";
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-pm8994.dtsi b/arch/arm64/boot/dts/qcom/msm-pm8994.dtsi
new file mode 100644
index 00000000000..f695c1b5b9b
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-pm8994.dtsi
@@ -0,0 +1,407 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&spmi_bus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ interrupt-controller;
+ #interrupt-cells = <3>;
+
+ qcom,pm8994@0 {
+ spmi-slave-container;
+ reg = <0x0>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ pm8994_revid: qcom,revid@100 {
+ compatible = "qcom,qpnp-revid";
+ reg = <0x100 0x100>;
+ };
+
+ qcom,temp-alarm@2400 {
+ compatible = "qcom,qpnp-temp-alarm";
+ reg = <0x2400 0x100>;
+ interrupts = <0x0 0x24 0x0>;
+ label = "pm8994_tz";
+ qcom,channel-num = <8>;
+ qcom,threshold-set = <0>;
+ qcom,temp_alarm-vadc = <&pm8994_vadc>;
+ };
+
+ qcom,power-on@800 {
+ compatible = "qcom,qpnp-power-on";
+ reg = <0x800 0x100>;
+ interrupts = <0x0 0x8 0x0>,
+ <0x0 0x8 0x1>,
+ <0x0 0x8 0x4>,
+ <0x0 0x8 0x5>;
+ interrupt-names = "kpdpwr", "resin",
+ "resin-bark", "kpdpwr-resin-bark";
+ qcom,pon-dbc-delay = <15625>;
+ qcom,system-reset;
+ qcom,s3-debounce = <32>;
+ qcom,s3-src = "kpdpwr-and-resin";
+
+ qcom,pon_1 {
+ qcom,pon-type = <0>;
+ qcom,pull-up = <1>;
+ linux,code = <116>;
+ qcom,support-reset = <1>;
+ qcom,s1-timer = <10256>;
+ qcom,s2-timer = <2000>;
+ qcom,s2-type = <1>;
+ };
+
+ qcom,pon_2 {
+ qcom,pon-type = <1>;
+ qcom,pull-up = <1>;
+ linux,code = <114>;
+ };
+
+ qcom,pon_3 {
+ qcom,pon-type = <3>;
+ qcom,support-reset = <1>;
+ qcom,pull-up = <1>;
+ qcom,s1-timer = <6720>;
+ qcom,s2-timer = <2000>;
+ qcom,s2-type = <7>;
+ qcom,use-bark;
+ };
+ };
+
+ pm8994_gpios: gpios {
+ spmi-dev-container;
+ compatible = "qcom,qpnp-pin";
+ gpio-controller;
+ #gpio-cells = <2>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ label = "pm8994-gpio";
+
+ gpio@c000 {
+ reg = <0xc000 0x100>;
+ qcom,pin-num = <1>;
+ };
+
+ gpio@c100 {
+ reg = <0xc100 0x100>;
+ qcom,pin-num = <2>;
+ };
+
+ gpio@c200 {
+ reg = <0xc200 0x100>;
+ qcom,pin-num = <3>;
+ };
+
+ gpio@c300 {
+ reg = <0xc300 0x100>;
+ qcom,pin-num = <4>;
+ };
+
+ gpio@c400 {
+ reg = <0xc400 0x100>;
+ qcom,pin-num = <5>;
+ };
+
+ gpio@c500 {
+ reg = <0xc500 0x100>;
+ qcom,pin-num = <6>;
+ };
+
+ gpio@c600 {
+ reg = <0xc600 0x100>;
+ qcom,pin-num = <7>;
+ };
+
+ gpio@c700 {
+ reg = <0xc700 0x100>;
+ qcom,pin-num = <8>;
+ };
+
+ gpio@c800 {
+ reg = <0xc800 0x100>;
+ qcom,pin-num = <9>;
+ };
+
+ gpio@c900 {
+ reg = <0xc900 0x100>;
+ qcom,pin-num = <10>;
+ };
+
+ gpio@ca00 {
+ reg = <0xca00 0x100>;
+ qcom,pin-num = <11>;
+ };
+
+ gpio@cb00 {
+ reg = <0xcb00 0x100>;
+ qcom,pin-num = <12>;
+ };
+
+ gpio@cc00 {
+ reg = <0xcc00 0x100>;
+ qcom,pin-num = <13>;
+ };
+
+ gpio@cd00 {
+ reg = <0xcd00 0x100>;
+ qcom,pin-num = <14>;
+ };
+
+ gpio@ce00 {
+ reg = <0xce00 0x100>;
+ qcom,pin-num = <15>;
+ };
+
+ gpio@cf00 {
+ reg = <0xcf00 0x100>;
+ qcom,pin-num = <16>;
+ };
+
+ gpio@d000 {
+ reg = <0xd000 0x100>;
+ qcom,pin-num = <17>;
+ };
+
+ gpio@d100 {
+ reg = <0xd100 0x100>;
+ qcom,pin-num = <18>;
+ };
+
+ gpio@d200 {
+ reg = <0xd200 0x100>;
+ qcom,pin-num = <19>;
+ };
+
+ gpio@d300 {
+ reg = <0xd300 0x100>;
+ qcom,pin-num = <20>;
+ };
+
+ gpio@d400 {
+ reg = <0xd400 0x100>;
+ qcom,pin-num = <21>;
+ };
+
+ gpio@d500 {
+ reg = <0xd500 0x100>;
+ qcom,pin-num = <22>;
+ };
+ };
+
+ pm8994_mpps: mpps {
+ spmi-dev-container;
+ compatible = "qcom,qpnp-pin";
+ gpio-controller;
+ #gpio-cells = <2>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ label = "pm8994-mpp";
+
+ mpp@a000 {
+ reg = <0xa000 0x100>;
+ qcom,pin-num = <1>;
+ };
+
+ mpp@a100 {
+ reg = <0xa100 0x100>;
+ qcom,pin-num = <2>;
+ };
+
+ mpp@a200 {
+ reg = <0xa200 0x100>;
+ qcom,pin-num = <3>;
+ };
+
+ mpp@a300 {
+ reg = <0xa300 0x100>;
+ qcom,pin-num = <4>;
+ };
+
+ mpp@a400 {
+ reg = <0xa400 0x100>;
+ qcom,pin-num = <5>;
+ };
+
+ mpp@a500 {
+ reg = <0xa500 0x100>;
+ qcom,pin-num = <6>;
+ };
+
+ mpp@a600 {
+ reg = <0xa600 0x100>;
+ qcom,pin-num = <7>;
+ };
+
+ mpp@a700 {
+ reg = <0xa700 0x100>;
+ qcom,pin-num = <8>;
+ };
+ };
+
+ pm8994_vadc: vadc@3100 {
+ compatible = "qcom,qpnp-vadc";
+ reg = <0x3100 0x100>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ interrupts = <0x0 0x31 0x0>;
+ interrupt-names = "eoc-int-en-set";
+ qcom,adc-bit-resolution = <15>;
+ qcom,adc-vdd-reference = <1800>;
+ qcom,vadc-poll-eoc;
+
+ chan@8 {
+ label = "die_temp";
+ reg = <8>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <3>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@9 {
+ label = "ref_625mv";
+ reg = <9>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@a {
+ label = "ref_1250v";
+ reg = <0xa>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+ };
+
+ pm8994_adc_tm: vadc@3400 {
+ compatible = "qcom,qpnp-adc-tm";
+ reg = <0x3400 0x100>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ interrupts = <0x0 0x34 0x0>,
+ <0x0 0x34 0x3>,
+ <0x0 0x34 0x4>;
+ interrupt-names = "eoc-int-en-set",
+ "high-thr-en-set",
+ "low-thr-en-set";
+ qcom,adc-bit-resolution = <15>;
+ qcom,adc-vdd-reference = <1800>;
+ qcom,adc_tm-vadc = <&pm8994_vadc>;
+ };
+
+ pm8994_coincell: qcom,coincell@2800 {
+ compatible = "qcom,qpnp-coincell";
+ reg = <0x2800 0x100>;
+ };
+
+ qcom,pm8994_rtc {
+ spmi-dev-container;
+ compatible = "qcom,qpnp-rtc";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ qcom,qpnp-rtc-write = <0>;
+ qcom,qpnp-rtc-alarm-pwrup = <0>;
+
+ qcom,pm8994_rtc_rw@6000 {
+ reg = <0x6000 0x100>;
+ };
+ qcom,pm8994_rtc_alarm@6100 {
+ reg = <0x6100 0x100>;
+ interrupts = <0x0 0x61 0x1>;
+ };
+ };
+ };
+
+ qcom,pm8994@1 {
+ spmi-slave-container;
+ reg = <0x1>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ pwm@b100 {
+ compatible = "qcom,qpnp-pwm";
+ reg = <0xb100 0x100>,
+ <0xb042 0x7e>;
+ reg-names = "qpnp-lpg-channel-base", "qpnp-lpg-lut-base";
+ qcom,channel-id = <0>;
+ qcom,supported-sizes = <6>, <7>, <9>;
+ qcom,ramp-index = <0>;
+ status = "disabled";
+ };
+
+ pwm@b200 {
+ compatible = "qcom,qpnp-pwm";
+ reg = <0xb200 0x100>,
+ <0xb042 0x7e>;
+ reg-names = "qpnp-lpg-channel-base", "qpnp-lpg-lut-base";
+ qcom,channel-id = <1>;
+ qcom,supported-sizes = <6>, <7>, <9>;
+ qcom,ramp-index = <1>;
+ status = "disabled";
+ };
+
+ pwm@b300 {
+ compatible = "qcom,qpnp-pwm";
+ reg = <0xb300 0x100>,
+ <0xb042 0x7e>;
+ reg-names = "qpnp-lpg-channel-base", "qpnp-lpg-lut-base";
+ qcom,channel-id = <2>;
+ qcom,supported-sizes = <6>, <7>, <9>;
+ qcom,ramp-index = <2>;
+ status = "disabled";
+ };
+
+ pwm@b400 {
+ compatible = "qcom,qpnp-pwm";
+ reg = <0xb400 0x100>,
+ <0xb042 0x7e>;
+ reg-names = "qpnp-lpg-channel-base", "qpnp-lpg-lut-base";
+ qcom,channel-id = <3>;
+ qcom,supported-sizes = <6>, <7>, <9>;
+ qcom,ramp-index = <3>;
+ status = "disabled";
+ };
+
+ pwm@b500 {
+ compatible = "qcom,qpnp-pwm";
+ reg = <0xb500 0x100>,
+ <0xb042 0x7e>;
+ reg-names = "qpnp-lpg-channel-base", "qpnp-lpg-lut-base";
+ qcom,channel-id = <4>;
+ qcom,supported-sizes = <6>, <7>, <9>;
+ qcom,ramp-index = <4>;
+ status = "disabled";
+ };
+
+ pwm@b600 {
+ compatible = "qcom,qpnp-pwm";
+ reg = <0xb600 0x100>,
+ <0xb042 0x7e>;
+ reg-names = "qpnp-lpg-channel-base", "qpnp-lpg-lut-base";
+ qcom,channel-id = <5>;
+ qcom,supported-sizes = <6>, <7>, <9>;
+ qcom,ramp-index = <5>;
+ status = "disabled";
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-pmi8994.dtsi b/arch/arm64/boot/dts/qcom/msm-pmi8994.dtsi
new file mode 100644
index 00000000000..9176ade2920
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-pmi8994.dtsi
@@ -0,0 +1,499 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&spmi_bus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ interrupt-controller;
+ #interrupt-cells = <3>;
+
+ qcom,pmi8994@2 {
+ spmi-slave-container;
+ reg = <0x2>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ pmi8994_revid: qcom,revid@100 {
+ compatible = "qcom,qpnp-revid";
+ reg = <0x100 0x100>;
+ };
+
+ pmi8994_gpios: gpios {
+ spmi-dev-container;
+ compatible = "qcom,qpnp-pin";
+ gpio-controller;
+ #gpio-cells = <2>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ label = "pmi8994-gpio";
+
+ gpio@c000 {
+ reg = <0xc000 0x100>;
+ qcom,pin-num = <1>;
+ };
+
+ gpio@c100 {
+ reg = <0xc100 0x100>;
+ qcom,pin-num = <2>;
+ };
+
+ gpio@c200 {
+ reg = <0xc200 0x100>;
+ qcom,pin-num = <3>;
+ };
+
+ gpio@c300 {
+ reg = <0xc300 0x100>;
+ qcom,pin-num = <4>;
+ };
+
+ gpio@c400 {
+ reg = <0xc400 0x100>;
+ qcom,pin-num = <5>;
+ };
+
+ gpio@c500 {
+ reg = <0xc500 0x100>;
+ qcom,pin-num = <6>;
+ };
+
+ gpio@c600 {
+ reg = <0xc600 0x100>;
+ qcom,pin-num = <7>;
+ };
+
+ gpio@c700 {
+ reg = <0xc700 0x100>;
+ qcom,pin-num = <8>;
+ };
+
+ gpio@c800 {
+ reg = <0xc800 0x100>;
+ qcom,pin-num = <9>;
+ };
+
+ gpio@c900 {
+ reg = <0xc900 0x100>;
+ qcom,pin-num = <10>;
+ };
+ };
+
+ pmi8994_mpps: mpps {
+ spmi-dev-container;
+ compatible = "qcom,qpnp-pin";
+ gpio-controller;
+ #gpio-cells = <2>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ label = "pmi8994-mpp";
+
+ mpp@a000 {
+ reg = <0xa000 0x100>;
+ qcom,pin-num = <1>;
+ };
+
+ mpp@a100 {
+ reg = <0xa100 0x100>;
+ qcom,pin-num = <2>;
+ };
+
+ mpp@a200 {
+ reg = <0xa200 0x100>;
+ qcom,pin-num = <3>;
+ };
+
+ mpp@a300 {
+ reg = <0xa300 0x100>;
+ qcom,pin-num = <4>;
+ };
+ };
+
+ pmi8994_vadc: vadc@3100 {
+ compatible = "qcom,qpnp-vadc";
+ reg = <0x3100 0x100>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ interrupts = <0x2 0x31 0x0>;
+ interrupt-names = "eoc-int-en-set";
+ qcom,adc-bit-resolution = <15>;
+ qcom,adc-vdd-reference = <1800>;
+ qcom,vadc-poll-eoc;
+ };
+
+ pmi8994_charger: pmi8994_otg_supply: qcom,qpnp-smbcharger {
+ spmi-dev-container;
+ compatible = "qcom,qpnp-smbcharger";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ qcom,iterm-ma = <100>;
+ qcom,float-voltage-mv = <4350>;
+ qcom,resume-delta-mv = <200>;
+ qcom,bmd-pin-src = "bpd_thm";
+ qcom,dc-psy-type = "Mains";
+ qcom,dc-psy-ma = <1500>;
+ qcom,bms-psy-name = "bms";
+ qcom,thermal-mitigation = <1500 700 600 0>;
+ regulator-name = "pmi8994_otg_vreg";
+
+ qcom,chgr@1000 {
+ reg = <0x1000 0x100>;
+ interrupts = <0x2 0x10 0x0>,
+ <0x2 0x10 0x1>,
+ <0x2 0x10 0x2>,
+ <0x2 0x10 0x3>,
+ <0x2 0x10 0x4>,
+ <0x2 0x10 0x5>,
+ <0x2 0x10 0x6>,
+ <0x2 0x10 0x7>;
+
+ interrupt-names = "chg-error",
+ "chg-inhibit",
+ "chg-prechg-sft",
+ "chg-complete-chg-sft",
+ "chg-p2f-thr",
+ "chg-rechg-thr",
+ "chg-taper-thr",
+ "chg-tcc-thr";
+ };
+
+ qcom,otg@1100 {
+ reg = <0x1100 0x100>;
+ };
+
+ qcom,bat-if@1200 {
+ reg = <0x1200 0x100>;
+ interrupts = <0x2 0x12 0x0>,
+ <0x2 0x12 0x1>,
+ <0x2 0x12 0x2>,
+ <0x2 0x12 0x3>,
+ <0x2 0x12 0x4>,
+ <0x2 0x12 0x5>,
+ <0x2 0x12 0x6>,
+ <0x2 0x12 0x7>;
+
+ interrupt-names = "batt-hot",
+ "batt-warm",
+ "batt-cold",
+ "batt-cool",
+ "batt-ov",
+ "batt-low",
+ "batt-missing",
+ "batt-term-missing";
+ };
+
+ qcom,usb-chgpth@1300 {
+ reg = <0x1300 0x100>;
+ interrupts = <0x2 0x13 0x0>,
+ <0x2 0x13 0x1>,
+ <0x2 0x13 0x2>,
+ <0x2 0x13 0x3>,
+ <0x2 0x13 0x4>,
+ <0x2 0x13 0x5>,
+ <0x2 0x13 0x6>;
+
+ interrupt-names = "usbin-uv",
+ "usbin-ov",
+ "usbin-src-det",
+ "otg-fail",
+ "otg-oc",
+ "aicl-done",
+ "usbid-change";
+ };
+
+ qcom,dc-chgpth@1400 {
+ reg = <0x1400 0x100>;
+ interrupts = <0x2 0x14 0x0>,
+ <0x2 0x14 0x1>;
+
+ interrupt-names = "dcin-uv",
+ "dcin-ov";
+ };
+
+ qcom,chgr-misc@1600 {
+ reg = <0x1600 0x100>;
+ interrupts = <0x2 0x16 0x0>,
+ <0x2 0x16 0x1>,
+ <0x2 0x16 0x2>,
+ <0x2 0x16 0x3>,
+ <0x2 0x16 0x4>,
+ <0x2 0x16 0x5>;
+
+ interrupt-names = "power-ok",
+ "temp-shutdown",
+ "safety-timeout",
+ "flash-fail",
+ "otst2",
+ "otst3";
+ };
+ };
+
+ pmi8994_fg: qcom,fg {
+ spmi-dev-container;
+ compatible = "qcom,qpnp-fg";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ status = "okay";
+
+ qcom,fg-soc@4000 {
+ status = "okay";
+ reg = <0x4000 0x100>;
+ interrupts = <0x2 0x40 0x0>,
+ <0x2 0x40 0x1>,
+ <0x2 0x40 0x2>,
+ <0x2 0x40 0x3>,
+ <0x2 0x40 0x4>,
+ <0x2 0x40 0x5>,
+ <0x2 0x40 0x6>,
+ <0x2 0x40 0x7>;
+
+ interrupt-names = "high-soc",
+ "low-soc",
+ "full-soc",
+ "empty-soc",
+ "delta-soc",
+ "first-est-done",
+ "sw-fallbk-ocv",
+ "sw-fallbk-new-battrt-sts",
+ "fg-soc-irq-count";
+ };
+
+ qcom,fg-adc-vbat@4254 {
+ reg = <0x4254 0x1>;
+ };
+
+ qcom,fg-adc-ibat@4255 {
+ reg = <0x4255 0x1>;
+ };
+
+ qcom,fg-memif@4400 {
+ status = "okay";
+ reg = <0x4400 0x100>;
+ interrupts = <0x2 0x44 0x0>,
+ <0x2 0x44 0x1>;
+
+ interrupt-names = "mem-avail",
+ "data-rcvry-sug";
+ };
+ };
+ };
+
+ qcom,pmi8994@3 {
+ spmi-slave-container;
+ reg = <0x3>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ pwm@b100 {
+ compatible = "qcom,qpnp-pwm";
+ reg = <0xb100 0x100>,
+ <0xb042 0x7e>;
+ reg-names = "qpnp-lpg-channel-base", "qpnp-lpg-lut-base";
+ qcom,channel-id = <0>;
+ qcom,supported-sizes = <6>, <7>, <9>;
+ qcom,ramp-index = <0>;
+ };
+
+ pwm@b200 {
+ compatible = "qcom,qpnp-pwm";
+ reg = <0xb200 0x100>,
+ <0xb042 0x7e>;
+ reg-names = "qpnp-lpg-channel-base", "qpnp-lpg-lut-base";
+ qcom,channel-id = <1>;
+ qcom,supported-sizes = <6>, <7>, <9>;
+ qcom,ramp-index = <1>;
+ };
+
+ pwm@b300 {
+ compatible = "qcom,qpnp-pwm";
+ reg = <0xb300 0x100>,
+ <0xb042 0x7e>;
+ reg-names = "qpnp-lpg-channel-base", "qpnp-lpg-lut-base";
+ qcom,channel-id = <2>;
+ qcom,supported-sizes = <6>, <7>, <9>;
+ qcom,ramp-index = <2>;
+ };
+
+ pwm@b400 {
+ compatible = "qcom,qpnp-pwm";
+ reg = <0xb400 0x100>,
+ <0xb042 0x7e>;
+ reg-names = "qpnp-lpg-channel-base", "qpnp-lpg-lut-base";
+ qcom,channel-id = <3>;
+ qcom,supported-sizes = <6>, <7>, <9>;
+ qcom,ramp-index = <3>;
+ };
+
+ qcom,leds@d800 {
+ compatible = "qcom,qpnp-wled";
+ reg = <0xd800 0x100>,
+ <0xd900 0x100>,
+ <0xdc00 0x100>,
+ <0xde00 0x100>;
+ reg-names = "qpnp-wled-ctrl-base",
+ "qpnp-wled-sink-base",
+ "qpnp-wled-ibb-base",
+ "qpnp-wled-lab-base";
+ status = "okay";
+ linux,name = "wled";
+ linux,default-trigger = "bkl-trigger";
+ qcom,fdbk-output = "auto";
+ qcom,vref-mv = <350>;
+ qcom,switch-freq-khz = <800>;
+ qcom,ovp-mv = <29500>;
+ qcom,ilim-ma = <980>;
+ qcom,boost-duty-ns = <26>;
+ qcom,mod-freq-khz = <19200>;
+ qcom,dim-mode = "hybrid";
+ qcom,dim-method = "linear";
+ qcom,hyb-thres = <625>;
+ qcom,sync-dly-us = <800>;
+ qcom,fs-curr-ua = <16000>;
+ qcom,en-phase-stag;
+ qcom,ibb-pwrup-dly = <8>;
+ qcom,led-strings-list = [00 01 02 03];
+ };
+
+ pmi8994_haptics: qcom,haptic@c000 {
+ status = "disabled";
+ compatible = "qcom,qpnp-haptic";
+ reg = <0xc000 0x100>;
+ interrupts = <0x3 0xc0 0x0>,
+ <0x3 0xc0 0x1>;
+ interrupt-names = "sc-irq", "play-irq";
+ qcom,play-mode = "direct";
+ qcom,wave-play-rate-us = <5263>;
+ qcom,actuator-type = "lra";
+ qcom,wave-shape = "square";
+ qcom,vmax-mv = <2000>;
+ qcom,ilim-ma = <800>;
+ qcom,sc-deb-cycles = <8>;
+ qcom,int-pwm-freq-khz = <505>;
+ qcom,brake-pattern = [00 00 03 03];
+ qcom,use-play-irq;
+ qcom,use-sc-irq;
+ qcom,wave-samples = [3e 3e 3e 3e 3e 3e 3e 3e];
+ qcom,wave-rep-cnt = <1>;
+ qcom,wave-samp-rep-cnt = <1>;
+ };
+
+ qcom,leds@d000 {
+ compatible = "qcom,leds-qpnp";
+ reg = <0xd000 0x100>;
+ label = "rgb";
+ status = "okay";
+
+ qcom,rgb_0 {
+ label = "rgb";
+ qcom,id = <3>;
+ qcom,mode = "pwm";
+ qcom,pwm-channel = <2>;
+ qcom,pwm-us = <1000>;
+ qcom,max-current = <12>;
+ qcom,default-state = "off";
+ linux,name = "red";
+ linux,default-trigger =
+ "battery-charging";
+ };
+
+ qcom,rgb_1 {
+ label = "rgb";
+ qcom,id = <4>;
+ qcom,mode = "pwm";
+ qcom,pwm-channel = <1>;
+ qcom,pwm-us = <1000>;
+ qcom,max-current = <12>;
+ qcom,default-state = "off";
+ linux,name = "green";
+ linux,default-trigger = "battery-full";
+ };
+
+ qcom,rgb_2 {
+ label = "rgb";
+ qcom,id = <5>;
+ qcom,mode = "pwm";
+ qcom,pwm-channel = <0>;
+ qcom,pwm-us = <1000>;
+ qcom,max-current = <12>;
+ qcom,default-state = "off";
+ linux,name = "blue";
+ };
+ };
+
+ qcom,leds@d300 {
+ compatible = "qcom,qpnp-flash-led";
+ status = "okay";
+ reg = <0xd300 0x100>;
+ label = "flash";
+ qcom,headroom = <500>;
+ qcom,startup-dly = <128>;
+ qcom,clamp-curr = <200>;
+ qcom,pmic-charger-support;
+ qcom,self-check-enabled;
+ qcom,thermal-derate-enabled;
+ qcom,thermal-derate-threshold = <80>;
+ qcom,thermal-derate-rate = "4_PERCENT";
+ qcom,current-ramp-enabled;
+ qcom,ramp_up_step = "27US";
+ qcom,ramp_dn_step = "27US";
+ qcom,vph-pwr-droop-enabled;
+ qcom,vph-pwr-droop-threshold = <3200>;
+ qcom,vph-pwr-droop-debounce-time = <10>;
+
+ pmi8994_flash0: qcom,flash_0 {
+ label = "flash";
+ qcom,led-name = "led:flash_0";
+ qcom,default-led-trigger =
+ "flash0_trigger";
+ qcom,max-current = <1000>;
+ qcom,duration = <1280>;
+ qcom,id = <0>;
+ qcom,current = <625>;
+ };
+
+ pmi8994_flash1: qcom,flash_1 {
+ label = "flash";
+ qcom,led-name = "led:flash_1";
+ qcom,default-led-trigger =
+ "flash1_trigger";
+ qcom,max-current = <1000>;
+ qcom,duration = <1280>;
+ qcom,id = <1>;
+ qcom,current = <625>;
+ };
+
+ pmi8994_torch0: qcom,torch_0 {
+ label = "torch";
+ qcom,led-name = "led:torch_0";
+ qcom,default-led-trigger =
+ "torch0_trigger";
+ qcom,max-current = <200>;
+ qcom,id = <0>;
+ qcom,current = <120>;
+ boost-supply = <&pmi8994_boostbypass>;
+ boost-voltage-max = <3600000>;
+ };
+
+ pmi8994_torch1: qcom,torch_1 {
+ label = "torch";
+ qcom,led-name = "led:torch_1";
+ qcom,default-led-trigger =
+ "torch1_trigger";
+ qcom,max-current = <200>;
+ qcom,id = <1>;
+ qcom,current = <120>;
+ boost-supply = <&pmi8994_boostbypass>;
+ boost-voltage-max = <3600000>;
+ };
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-512mb-ion.dtsi b/arch/arm64/boot/dts/qcom/msm8916-512mb-ion.dtsi
new file mode 100644
index 00000000000..b988aed4bb2
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-512mb-ion.dtsi
@@ -0,0 +1,57 @@
+/* Copyright (c) 2014, Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ qcom,ion {
+ compatible = "qcom,msm-ion";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,ion-heap@25 {
+ reg = <25>;
+ qcom,ion-heap-type = "SYSTEM";
+ };
+
+ qcom,ion-heap@21 {
+ reg = <21>;
+ qcom,ion-heap-type = "SYSTEM_CONTIG";
+ };
+
+ qcom,ion-heap@27 { /* QSEECOM HEAP */
+ compatible = "qcom,msm-ion-reserve";
+ reg = <27>;
+ memory-region = <&venus_qseecom_mem>;
+ qcom,ion-heap-type = "DMA";
+ };
+
+ qcom,ion-heap@28 { /* AUDIO HEAP */
+ compatible = "qcom,msm-ion-reserve";
+ reg = <28>;
+ memory-region = <&audio_mem>;
+ qcom,ion-heap-type = "DMA";
+ };
+
+ qcom,ion-heap@23 { /* OTHER PIL HEAP */
+ compatible = "qcom,msm-ion-reserve";
+ reg = <23>;
+ memory-region = <&peripheral_mem>;
+ qcom,ion-heap-type = "DMA";
+ };
+
+ qcom,ion-heap@26 { /* MODEM HEAP */
+ compatible = "qcom,msm-ion-reserve";
+ reg = <26>;
+ memory-region = <&modem_adsp_mem>;
+ qcom,ion-heap-type = "DMA";
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-512mb-memory.dtsi b/arch/arm64/boot/dts/qcom/msm8916-512mb-memory.dtsi
new file mode 100644
index 00000000000..eb6b7006c3a
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-512mb-memory.dtsi
@@ -0,0 +1,58 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "msm8916-512mb-ion.dtsi"
+
+/ {
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ external_image_mem: external_image_region@86000000 {
+ compatible = "removed-dma-pool";
+ no-map;
+ reg = <0x0 0x86000000 0x0 0x0800000>;
+ };
+
+ modem_adsp_mem: modem_adsp_region@86800000 {
+ compatible = "removed-dma-pool";
+ no-map;
+ reg = <0x0 0x86800000 0x0 0x04800000>;
+ };
+
+ peripheral_mem: peripheral_region@8b000000 {
+ compatible = "removed-dma-pool";
+ no-map;
+ reg = <0x0 0x8b000000 0x0 0x0600000>;
+ };
+
+ venus_qseecom_mem: venus_qseecom_region@0 {
+ compatible = "shared-dma-pool";
+ alloc-ranges = <0 0x80000000 0 0x10000000>;
+ reusable;
+ alignment = <0 0x400000>;
+ size = <0 0x600000>;
+ };
+
+ audio_mem: audio_region@0 {
+ compatible = "shared-dma-pool";
+ reusable;
+ alignment = <0 0x400000>;
+ size = <0 0x400000>;
+ };
+
+ cont_splash_mem: splash_region@83000000 {
+ reg = <0x0 0x83000000 0x0 0x1200000>;
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-512mb-mtp-smb1360.dts b/arch/arm64/boot/dts/qcom/msm8916-512mb-mtp-smb1360.dts
new file mode 100644
index 00000000000..e328da98e28
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-512mb-mtp-smb1360.dts
@@ -0,0 +1,61 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License version 2 and
+* only version 2 as published by the Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*/
+
+/dts-v1/;
+
+#include "msm8916-mtp.dtsi"
+#include "msm8916-512mb-memory.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8916 512MB SMB1360 MTP";
+ compatible = "qcom,msm8916-mtp", "qcom,msm8916", "qcom,mtp";
+ qcom,board-id = <0x8 0x101>;
+};
+
+&soc {
+ i2c@78b8000 {
+ smb1360_otg_supply: smb1360-chg-fg@14 {
+ compatible = "qcom,smb1360-chg-fg";
+ reg = <0x14>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <62 8>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&smb_int_default>;
+ regulator-name = "smb1360_otg_vreg";
+
+ qcom,chg-inhibit-disabled;
+ qcom,float-voltage-mv = <4200>;
+ qcom,iterm-ma = <100>;
+ qcom,charging-disabled;
+ qcom,recharge-thresh-mv = <100>;
+ qcom,thermal-mitigation = <1500 700 600 0>;
+ };
+ };
+};
+
+&usb_otg {
+ qcom,hsusb-otg-mode = <3>;
+ qcom,usbid-gpio = <&msm_gpio 110 0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&usbid_default>;
+ vbus_otg-supply = <&smb1360_otg_supply>;
+};
+
+&pm8916_chg {
+ status = "ok";
+ qcom,use-external-charger;
+};
+
+&pm8916_bms {
+ status = "ok";
+ qcom,disable-bms;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-512mb-mtp.dts b/arch/arm64/boot/dts/qcom/msm8916-512mb-mtp.dts
new file mode 100644
index 00000000000..608d6968d12
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-512mb-mtp.dts
@@ -0,0 +1,32 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License version 2 and
+* only version 2 as published by the Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*/
+
+/dts-v1/;
+
+#include "msm8916-mtp.dtsi"
+#include "msm8916-512mb-memory.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8916 512MB MTP";
+ compatible = "qcom,msm8916-mtp", "qcom,msm8916", "qcom,mtp";
+ qcom,board-id = <0x8 0x100>;
+};
+
+&spmi_bus {
+ qcom,pm8916@1 {
+ qcom,vibrator@c000 {
+ status = "okay";
+ qcom,vib-timeout-ms = <15000>;
+ qcom,vib-vtg-level-mV = <3100>;
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-512mb-qrd-skuh.dts b/arch/arm64/boot/dts/qcom/msm8916-512mb-qrd-skuh.dts
new file mode 100644
index 00000000000..0645e61f3c0
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-512mb-qrd-skuh.dts
@@ -0,0 +1,41 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+
+#include "msm8916-qrd-skuh.dtsi"
+#include "msm8916-512mb-memory.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8916 512MB QRD SKUH";
+ compatible = "qcom,msm8916-qrd-skuh", "qcom,msm8916-qrd", "qcom,msm8916", "qcom,qrd";
+ qcom,board-id = <0x1000b 0x100>, <0x1000b 0x104>,
+ <0x1010b 0x100>, <0x1010b 0x104>,
+ <0x2010b 0x100>, <0x2010b 0x104>;
+};
+
+&soc {
+
+ sound {
+ qcom,msm-hs-micbias-type = "external";
+ qcom,audio-routing =
+ "RX_BIAS", "MCLK",
+ "SPK_RX_BIAS", "MCLK",
+ "INT_LDO_H", "MCLK",
+ "MIC BIAS External", "Handset Mic",
+ "MIC BIAS External2", "Headset Mic",
+ "MIC BIAS External", "Secondary Mic",
+ "AMIC1", "MIC BIAS External",
+ "AMIC2", "MIC BIAS External2",
+ "AMIC3", "MIC BIAS External";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-512mb-qrd-skui.dts b/arch/arm64/boot/dts/qcom/msm8916-512mb-qrd-skui.dts
new file mode 100644
index 00000000000..0613f11e380
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-512mb-qrd-skui.dts
@@ -0,0 +1,107 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+
+#include "msm8916-qrd-skui.dtsi"
+#include "msm8916-512mb-memory.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8916 512MB QRD SKUI";
+ compatible = "qcom,msm8916-qrd-skui", "qcom,msm8916-qrd", "qcom,msm8916", "qcom,qrd";
+ qcom,board-id = <0x1000b 0x105> , <0x1010b 0x105> , <0x3010b 0x105>;
+};
+
+&soc {
+ i2c@78b8000 {
+ smb1360_otg_supply: smb1360-chg-fg@14 {
+ compatible = "qcom,smb1360-chg-fg";
+ reg = <0x14>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <62 8>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&smb_int_default>;
+ qcom,chg-inhibit-disabled;
+ qcom,float-voltage-mv = <4350>;
+ qcom,iterm-ma = <100>;
+ qcom,recharge-thresh-mv = <100>;
+ qcom,thermal-mitigation = <1500 700 600 0>;
+ regulator-name = "smb1360_otg_vreg";
+ };
+ };
+
+ i2c@78b9000 { /* BLSP1 QUP5 */
+ focaltech@38 {
+ compatible = "focaltech,5x06";
+ reg = <0x38>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <13 0x2008>;
+ vdd-supply = <&pm8916_l17>;
+ vcc_i2c-supply = <&pm8916_l6>;
+ /* pins used by touchscreen */
+ pinctrl-names = "pmx_ts_active","pmx_ts_suspend","pmx_ts_release";
+ pinctrl-0 = <&ts_int_active &ts_reset_active>;
+ pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;
+ pinctrl-2 = <&ts_release>;
+ focaltech,name = "ft6436";
+ focaltech,family-id = <0x36>;
+ focaltech,reset-gpio = <&msm_gpio 12 0x0>;
+ focaltech,irq-gpio = <&msm_gpio 13 0x2008>;
+ focaltech,display-coords = <0 0 480 854>;
+ focaltech,panel-coords = <0 0 480 950>;
+ focaltech,button-map= <139 102 158>;
+ focaltech,no-force-update;
+ focaltech,i2c-pull-up;
+ focaltech,group-id = <1>;
+ focaltech,hard-reset-delay-ms = <20>;
+ focaltech,soft-reset-delay-ms = <200>;
+ focaltech,num-max-touches = <5>;
+ focaltech,fw-delay-aa-ms = <30>;
+ focaltech,fw-delay-55-ms = <30>;
+ focaltech,fw-upgrade-id1 = <0x79>;
+ focaltech,fw-upgrade-id2 = <0x18>;
+ focaltech,fw-delay-readid-ms = <10>;
+ focaltech,fw-delay-era-flsh-ms = <2000>;
+ focaltech,fw-auto-cal;
+ focaltech,ignore-id-check;
+ };
+ };
+
+ gen-vkeys {
+ compatible = "qcom,gen-vkeys";
+ label = "ft5x06_ts";
+ qcom,disp-maxx = <480>;
+ qcom,disp-maxy = <854>;
+ qcom,panel-maxx = <480>;
+ qcom,panel-maxy = <946>;
+ qcom,key-codes = <139 172 158>;
+ qcom,y-offset = <0>;
+ };
+};
+
+&pm8916_chg {
+ status = "ok";
+ qcom,use-external-charger;
+};
+
+&pm8916_bms {
+ status = "ok";
+ qcom,disable-bms;
+};
+
+&usb_otg {
+ qcom,hsusb-otg-mode = <3>;
+ qcom,usbid-gpio = <&msm_gpio 110 0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&usbid_default>;
+ vbus_otg-supply = <&smb1360_otg_supply>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-512mb-qrd-skuid.dts b/arch/arm64/boot/dts/qcom/msm8916-512mb-qrd-skuid.dts
new file mode 100644
index 00000000000..37540d671f4
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-512mb-qrd-skuid.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+
+#include "msm8916-qrd-skuid.dtsi"
+#include "msm8916-512mb-memory.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8916 512MB QRD SKUID";
+ compatible = "qcom,msm8916-qrd-skuid", "qcom,msm8916-qrd", "qcom,msm8916", "qcom,qrd";
+ qcom,board-id = <0x21010b 0x105>, <0x22010b 0x105>, <0x23010b 0x105>;
+};
+
diff --git a/arch/arm64/boot/dts/qcom/msm8916-bus.dtsi b/arch/arm64/boot/dts/qcom/msm8916-bus.dtsi
new file mode 100644
index 00000000000..79f499cc326
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-bus.dtsi
@@ -0,0 +1,879 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <dt-bindings/msm/msm-bus-rule-ops.h>
+
+&soc {
+ ad_hoc_bus: ad-hoc-bus { };
+
+ static-rules {
+ compatible = "qcom,msm-bus-static-bw-rules";
+
+ rule0 {
+ qcom,src-nodes = <&mas_apss>;
+ qcom,src-field = <FLD_IB>;
+ qcom,src-op = <OP_LE>;
+ qcom,thresh = <1600000>;
+ qcom,mode = <THROTTLE_ON>;
+ qcom,dest-node = <&mas_apss>;
+ qcom,dest-bw = <600000>;
+ };
+
+
+ rule1 {
+ qcom,src-nodes = <&mas_apss>;
+ qcom,src-field = <FLD_IB>;
+ qcom,src-op = <OP_LE>;
+ qcom,thresh = <3200000>;
+ qcom,mode = <THROTTLE_ON>;
+ qcom,dest-node = <&mas_apss>;
+ qcom,dest-bw = <1200000>;
+ };
+
+ rule2 {
+ qcom,src-nodes = <&mas_apss>;
+ qcom,src-field = <FLD_IB>;
+ qcom,src-op = <OP_GT>;
+ qcom,thresh = <3200000>;
+ qcom,mode = <THROTTLE_OFF>;
+ qcom,dest-node = <&mas_apss>;
+ };
+
+ rule3 {
+ qcom,src-nodes = <&mas_gfx>;
+ qcom,src-field = <FLD_IB>;
+ qcom,src-op = <OP_LE>;
+ qcom,thresh = <1600000>;
+ qcom,mode = <THROTTLE_ON>;
+ qcom,dest-node = <&mas_gfx>;
+ qcom,dest-bw = <600000>;
+ };
+
+ rule4 {
+ qcom,src-nodes = <&mas_gfx>;
+ qcom,src-field = <FLD_IB>;
+ qcom,src-op = <OP_LE>;
+ qcom,thresh = <3200000>;
+ qcom,mode = <THROTTLE_ON>;
+ qcom,dest-node = <&mas_gfx>;
+ qcom,dest-bw = <1200000>;
+ };
+
+ rule5 {
+ qcom,src-nodes = <&mas_gfx>;
+ qcom,src-field = <FLD_IB>;
+ qcom,src-op = <OP_GT>;
+ qcom,thresh = <3200000>;
+ qcom,mode = <THROTTLE_OFF>;
+ qcom,dest-node = <&mas_gfx>;
+ };
+ };
+};
+
+&ad_hoc_bus {
+ compatible = "qcom,msm-bus-device";
+ reg = <0x580000 0x14000>,
+ <0x400000 0x62000>,
+ <0x500000 0x11000>;
+ reg-names = "snoc-base", "bimc-base", "pnoc-base";
+
+ fab_snoc: fab-snoc {
+ cell-id = <1024>;
+ label = "fab-snoc";
+ qcom,fab-dev;
+ qcom,base-name = "snoc-base";
+ qcom,base-offset = <0x7000>;
+ qcom,qos-off = <0x1000>;
+ qcom,bus-type = <1>;
+ clock-names = "bus_clk", "bus_a_clk";
+ clocks = <&clock_rpm clk_snoc_msmbus_clk>,
+ <&clock_rpm clk_snoc_msmbus_a_clk>;
+
+ coresight-id = <50>;
+ coresight-name = "coresight-snoc";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in2>;
+ coresight-child-ports = <5>;
+ };
+
+ fab_bimc: fab-bimc {
+ cell-id = <0>;
+ label = "fab-bimc";
+ qcom,fab-dev;
+ qcom,base-name = "bimc-base";
+ qcom,bus-type = <2>;
+ clock-names = "bus_clk", "bus_a_clk";
+ clocks = <&clock_rpm clk_bimc_msmbus_clk>,
+ <&clock_rpm clk_bimc_msmbus_a_clk>;
+
+ coresight-id = <55>;
+ coresight-name = "coresight-bimc";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in2>;
+ coresight-child-ports = <3>;
+ };
+
+ fab_pnoc: fab-pnoc {
+ cell-id = <4096>;
+ label = "fab-pnoc";
+ qcom,fab-dev;
+ qcom,base-name = "pnoc-base";
+ qcom,base-offset = <0x7000>;
+ qcom,qos-delta = <0x1000>;
+ qcom,bus-type = <1>;
+ clock-names = "bus_clk", "bus_a_clk";
+ clocks = <&clock_rpm clk_pcnoc_msmbus_clk>,
+ <&clock_rpm clk_pcnoc_msmbus_a_clk>;
+
+ coresight-id = <54>;
+ coresight-name = "coresight-pnoc";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in2>;
+ coresight-child-ports = <6>;
+ };
+
+ /* SNOC Devices */
+ mas_video: mas-video {
+ cell-id = <63>;
+ label = "mas-video";
+ qcom,qport = <8>;
+ qcom,ap-owned;
+ qcom,connections = <&mm_int_0 &mm_int_2>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,qos-mode = "bypass";
+ qcom,buswidth = <16>;
+ };
+
+ mas_jpeg: mas-jpeg {
+ cell-id = <62>;
+ label = "mas-jpeg";
+ qcom,ap-owned;
+ qcom,qport = <6>;
+ qcom,connections = <&mm_int_0 &mm_int_2>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,qos-mode = "bypass";
+ qcom,buswidth = <16>;
+ };
+
+ mas_vfe: mas-vfe {
+ cell-id = <29>;
+ label = "mas-vfe";
+ qcom,ap-owned;
+ qcom,qport = <9>;
+ qcom,connections = <&mm_int_1 &mm_int_2>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,qos-mode = "bypass";
+ qcom,buswidth = <16>;
+ };
+
+ mas_mdp: mas-mdp {
+ cell-id = <22>;
+ label = "mas-mdp";
+ qcom,ap-owned;
+ qcom,connections = <&mm_int_0 &mm_int_2>;
+ qcom,qport = <7>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,qos-mode = "bypass";
+ qcom,buswidth = <16>;
+ };
+
+ mas_qdss_bam: mas-qdss-bam {
+ cell-id = <53>;
+ label = "mas-qdss-bam";
+ qcom,connections = <&qdss_int>;
+ qcom,qport = <11>;
+ qcom,bus-dev = <&fab_snoc>;
+ qom,buswidth = <4>;
+ qcom,ap-owned;
+ qcom,qos-mode = "fixed";
+ qcom,prio1 = <1>;
+ qcom,prio0 = <1>;
+ };
+
+ mas_snoc_cfg: mas-snoc-cfg {
+ cell-id = <54>;
+ label = "mas-snoc-cfg";
+ qcom,connections = <&qdss_int>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,qos-mode = "bypass";
+ qom,buswidth = <4>;
+ qcom,mas-rpm-id = <20>;
+ };
+
+ mas_qdss_etr: mas-qdss-etr {
+ cell-id = <60>;
+ label = "mas-qdss-etr";
+ qcom,connections = <&qdss_int>;
+ qcom,qport = <10>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,qos-mode = "fixed";
+ qcom,prio1 = <1>;
+ qcom,prio0 = <1>;
+ qom,buswidth = <8>;
+ qcom,ap-owned;
+ };
+
+ mm_int_0: mm-int-0 {
+ cell-id = <10000>;
+ label = "mm-int-0";
+ qcom,ap-owned;
+ qcom,connections = <&mm_int_bimc>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,buswidth = <16>;
+ };
+
+ mm_int_1: mm-int-1 {
+ cell-id = <10001>;
+ label = "mm-int1";
+ qcom,ap-owned;
+ qcom,connections = <&mm_int_bimc>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,buswidth = <16>;
+ };
+
+ mm_int_2: mm-int-2 {
+ cell-id = <10002>;
+ label = "mm-int2";
+ qcom,ap-owned;
+ qcom,connections = <&snoc_int_0>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,buswidth = <16>;
+ };
+
+ mm_int_bimc: mm-int-bimc {
+ cell-id = <10003>;
+ label = "mm-int-bimc";
+ qcom,ap-owned;
+ qcom,connections = <&snoc_bimc_1_mas>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,buswidth = <16>;
+ };
+
+ snoc_int_0: snoc-int-0 {
+ cell-id = <10004>;
+ label = "snoc-int-0";
+ qcom,connections = <&slv_qdss_stm &slv_imem &snoc_pnoc_mas>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,mas-rpm-id = <99>;
+ qcom,slv-rpm-id = <130>;
+ qcom,buswidth = <8>;
+ };
+
+ snoc_int_1: snoc-int-1 {
+ cell-id = <10005>;
+ label = "snoc-int-1";
+ qcom,connections = <&slv_apss &slv_cats_0 &slv_cats_1>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,mas-rpm-id = <100>;
+ qcom,slv-rpm-id = <131>;
+ qcom,buswidth = <8>;
+ };
+
+ snoc_int_bimc: snoc-int-bmc {
+ cell-id = <10006>;
+ label = "snoc-bimc";
+ qcom,connections = <&snoc_bimc_0_mas>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,mas-rpm-id = <101>;
+ qcom,slv-rpm-id = <132>;
+ qcom,buswidth = <8>;
+ };
+
+ snoc_bimc_0_mas: snoc-bimc-0-mas {
+ cell-id = <10007>;
+ label = "snoc-bimc-0-mas";
+ qcom,connections = <&snoc_bimc_0_slv>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,mas-rpm-id = <3>;
+ qcom,buswidth = <8>;
+ };
+
+ snoc_bimc_1_mas: snoc-bimc-1-mas {
+ cell-id = <10008>;
+ label = "snoc-bimc-1-mas";
+ qcom,connections = <&snoc_bimc_1_slv>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,ap-owned;
+ qcom,buswidth = <16>;
+ };
+
+ qdss_int: qdss-int {
+ cell-id = <10009>;
+ label = "qdss-int";
+ qcom,ap-owned;
+ qcom,connections = <&snoc_int_0 &snoc_int_bimc>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,buswidth = <8>;
+ };
+
+ bimc_snoc_slv: bimc-snoc-slv {
+ cell-id = <10017>;
+ label = "bimc_snoc_slv";
+ qcom,ap-owned;
+ qcom,connections = <&snoc_int_0 &snoc_int_1>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,buswidth = <8>;
+ };
+
+ snoc_pnoc_mas: snoc-pnoc-mas {
+ cell-id = <10027>;
+ label = "snoc-pnoc-mas";
+ qcom,connections = <&snoc_pnoc_slv>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,buswidth = <8>;
+ };
+
+ pnoc_snoc_slv: pnoc-snoc-slv {
+ cell-id = <10011>;
+ label = "snoc-pnoc";
+ qcom,connections = <&snoc_int_0 &snoc_int_bimc &snoc_int_1>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,slv-rpm-id = <45>;
+ qcom,buswidth = <8>;
+ };
+
+ slv_srvc_snoc: slv-srvc-snoc {
+ cell-id = <587>;
+ label = "snoc-srvc-snoc";
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,slv-rpm-id = <29>;
+ qcom,buswidth = <8>;
+ };
+
+ slv_qdss_stm: slv-qdss-stm {
+ cell-id = <588>;
+ label = "snoc-qdss-stm";
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,buswidth = <4>;
+ qcom,slv-rpm-id = <30>;
+ };
+
+ slv_imem: slv-imem {
+ cell-id = <519>;
+ label = "slv_imem";
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,buswidth = <8>;
+ qcom,slv-rpm-id = <26>;
+ };
+
+ slv_apss: slv-apss {
+ cell-id = <517>;
+ label = "slv_apss";
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,slv-rpm-id = <20>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_cats_0: slv-cats-0 {
+ cell-id = <663>;
+ label = "slv-cats-0";
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,slv-rpm-id = <106>;
+ qcom,buswidth = <16>;
+ };
+
+ slv_cats_1: slv-cats-1 {
+ cell-id = <664>;
+ label = "slv-cats-1";
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,slv-rpm-id = <107>;
+ qcom,buswidth = <8>;
+ };
+
+ /* BIMC nodes */
+ mas_apss: mas-apss {
+ cell-id = <1>;
+ label = "mas-apss";
+ qcom,ap-owned;
+ qcom,connections = <&slv_ebi_ch0 &bimc_snoc_mas &slv_apps_l2>;
+ qcom,qport = <0>;
+ qcom,bus-dev = <&fab_bimc>;
+ qcom,qos-mode = "fixed";
+ qcom,prio-lvl = <0>;
+ qcom,prio-rd = <0>;
+ qcom,prio-wr = <0>;
+ qcom,ws = <10000>;
+ qcom,gp = <5000>;
+ qcom,thmp = <50>;
+ qom,buswidth = <8>;
+ };
+
+ mas_tcu0: mas-tcu0 {
+ cell-id = <104>;
+ label = "mas-tcu0";
+ qcom,ap-owned;
+ qcom,connections = <&slv_ebi_ch0 &bimc_snoc_mas &slv_apps_l2>;
+ qcom,qport = <5>;
+ qcom,bus-dev = <&fab_bimc>;
+ qcom,qos-mode = "fixed";
+ qcom,prio-lvl = <2>;
+ qcom,prio-rd = <2>;
+ qcom,prio-wr = <2>;
+ qom,buswidth = <8>;
+ };
+
+ mas_tcu1: mas-tcu1 {
+ cell-id = <105>;
+ label = "mas-tcu1";
+ qcom,ap-owned;
+ qcom,connections = <&slv_ebi_ch0 &bimc_snoc_mas &slv_apps_l2>;
+ qcom,qport = <6>;
+ qcom,bus-dev = <&fab_bimc>;
+ qcom,qos-mode = "fixed";
+ qcom,prio-lvl = <2>;
+ qcom,prio-rd = <2>;
+ qcom,prio-wr = <2>;
+ qom,buswidth = <8>;
+ };
+
+ mas_gfx: mas-gfx {
+ cell-id = <26>;
+ label = "mas-gfx";
+ qcom,ap-owned;
+ qcom,connections = <&slv_ebi_ch0 &bimc_snoc_mas &slv_apps_l2>;
+ qcom,qport = <2>;
+ qcom,bus-dev = <&fab_bimc>;
+ qcom,qos-mode = "fixed";
+ qcom,prio-lvl = <0>;
+ qcom,prio-rd = <0>;
+ qcom,prio-wr = <0>;
+ qom,buswidth = <8>;
+ qcom,ws = <10000>;
+ qcom,gp = <5000>;
+ qcom,thmp = <50>;
+ };
+
+ bimc_snoc_mas: bimc-snoc-mas {
+ cell-id = <10016>;
+ label = "bimc_snoc_mas";
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_bimc>;
+ qcom,connections = <&bimc_snoc_slv>;
+ qom,buswidth = <8>;
+ };
+
+ snoc_bimc_0_slv: snoc-bimc-0-slv {
+ cell-id = <10025>;
+ label = "snoc_bimc_0_slv";
+ qcom,connections = <&slv_ebi_ch0>;
+ qcom,bus-dev = <&fab_bimc>;
+ qcom,slv-rpm-id = <24>;
+ qom,buswidth = <8>;
+ };
+
+ snoc_bimc_1_slv: snoc_bimc_1_slv {
+ cell-id = <10026>;
+ label = "snoc_bimc_1_slv";
+ qcom,connections = <&slv_ebi_ch0>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_bimc>;
+ qom,buswidth = <8>;
+ };
+
+ slv_ebi_ch0: slv-ebi-ch0 {
+ cell-id = <512>;
+ label = "slv-ebi-ch0";
+ qcom,bus-dev = <&fab_bimc>;
+ qcom,slv-rpm-id = <0>;
+ qom,buswidth = <8>;
+ };
+
+ slv_apps_l2: slv-apps-l2 {
+ cell-id = <514>;
+ label = "slv-apps-l2";
+ qcom,bus-dev = <&fab_bimc>;
+ qom,buswidth = <8>;
+ };
+
+ /* PNOC nodes */
+ snoc_pnoc_slv: snoc-pnoc-slv {
+ cell-id = <10028>;
+ label = "snoc-pnoc-slv";
+ qcom,connections = <&pnoc_int_0>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <8>;
+ };
+
+ pnoc_int_0: pnoc-int-0 {
+ cell-id = <10012>;
+ label = "pnoc-int-0";
+ qcom,connections = <&pnoc_snoc_mas &pnoc_s_0 &pnoc_s_1 &pnoc_s_2
+ &pnoc_s_3 &pnoc_s_4 &pnoc_s_8 &pnoc_s_9>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qom,buswidth = <8>;
+ };
+
+ pnoc_int_1: pnoc-int-1 {
+ cell-id = <10013>;
+ label = "pnoc-int-1";
+ qcom,connections = <&pnoc_snoc_mas>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qom,buswidth = <8>;
+ };
+
+ pnoc_m_0: pnoc-m-0 {
+ cell-id = <10014>;
+ label = "pnoc-m-0";
+ qcom,connections = <&pnoc_int_0>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qom,buswidth = <8>;
+ };
+
+ pnoc_m_1: pnoc-m-1 {
+ cell-id = <10015>;
+ label = "pnoc-m-1";
+ qcom,connections = <&pnoc_snoc_mas>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qom,buswidth = <8>;
+ };
+
+ pnoc_s_0: pnoc-s-0 {
+ cell-id = <10018>;
+ label = "pnoc-s-0";
+ qcom,connections = <&slv_clk_ctl &slv_tlmm &slv_tcsr
+ &slv_security &slv_mss>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qom,buswidth = <4>;
+ };
+
+ pnoc_s_1: pnoc-s-1 {
+ cell-id = <10019>;
+ label = "pnoc-s-1";
+ qcom,connections = <&slv_imem_cfg &slv_crypto_0_cfg
+ &slv_msg_ram &slv_pdm &slv_prng>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qom,buswidth = <4>;
+ };
+
+ pnoc_s_2: pnoc-s-2 {
+ cell-id = <10020>;
+ label = "pnoc-s-2";
+ qcom,connections = <&slv_spdm &slv_boot_rom &slv_bimc_cfg
+ &slv_pnoc_cfg &slv_pmic_arb>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qom,buswidth = <4>;
+ };
+
+ pnoc_s_3: pnoc-s-3 {
+ cell-id = <10021>;
+ label = "pnoc-s-3";
+ qcom,connections = <&slv_mpm &slv_snoc_cfg &slv_rbcpr_cfg
+ &slv_qdss_cfg &slv_dehr_cfg>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qom,buswidth = <4>;
+ };
+
+ pnoc_s_4: pnoc-s-4 {
+ cell-id = <10022>;
+ label = "pnoc-s-4";
+ qcom,connections = <&slv_venus_cfg &slv_camera_cfg
+ &slv_display_cfg>;
+ qcom,bus-dev = <&fab_pnoc>;
+ };
+
+ pnoc_s_8: pnoc-s-8 {
+ cell-id = <10023>;
+ label = "pnoc-s-8";
+ qcom,connections = <&slv_usb_hs &slv_sdcc_1 &slv_blsp_1>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qom,buswidth = <4>;
+ };
+
+ pnoc_s_9: pnoc-s-9 {
+ cell-id = <10024>;
+ label = "pnoc-s-9";
+ qcom,connections = <&slv_sdcc_2 &slv_audio &slv_gfx_cfg>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qom,buswidth = <4>;
+ };
+
+ slv_imem_cfg: slv-imem-cfg {
+ cell-id = <627>;
+ label = "slv-imem-cfg";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_crypto_0_cfg: slv-crypto-0-cfg {
+ cell-id = <625>;
+ label = "slv-crypto-0-cfg";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_msg_ram: slv-msg-ram {
+ cell-id = <535>;
+ label = "slv-msg-ram";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_pdm: slv-pdm {
+ cell-id = <577>;
+ label = "slv-pdm";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_prng: slv-prng {
+ cell-id = <618>;
+ label = "slv-prng";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_clk_ctl: slv-clk-ctl {
+ cell-id = <620>;
+ label = "slv-clk-ctl";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_mss: slv-mss {
+ cell-id = <521>;
+ label = "slv-mss";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_tlmm: slv-tlmm {
+ cell-id = <624>;
+ label = "slv-tlmm";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_tcsr: slv-tcsr {
+ cell-id = <579>;
+ label = "slv-tcsr";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_security: slv-security {
+ cell-id = <622>;
+ label = "slv-security";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_spdm: slv-spdm {
+ cell-id = <533>;
+ label = "slv-spdm";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_pnoc_cfg: slv-pnoc-cfg {
+ cell-id = <641>;
+ label = "slv-pnoc-cfg";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_pmic_arb: slv-pmic-arb {
+ cell-id = <632>;
+ label = "slv-pmic-arb";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_bimc_cfg: slv-bimc-cfg {
+ cell-id = <629>;
+ label = "slv-bimc-cfg";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_boot_rom: slv-boot-rom {
+ cell-id = <630>;
+ label = "slv-boot-rom";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_mpm: slv-mpm {
+ cell-id = <536>;
+ label = "slv-mpm";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_qdss_cfg: slv-qdss-cfg {
+ cell-id = <635>;
+ label = "slv-qdss-cfg";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_rbcpr_cfg: slv-rbcpr-cfg {
+ cell-id = <636>;
+ label = "slv-rbcpr-cfg";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_snoc_cfg: slv-snoc-cfg {
+ cell-id = <647>;
+ label = "slv-snoc-cfg";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_dehr_cfg: slv-dehr-cfg {
+ cell-id = <634>;
+ label = "slv-dehr-cfg";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_venus_cfg: slv-venus-cfg {
+ cell-id = <596>;
+ label = "slv-venus-cfg";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_display_cfg: slv-display-cfg {
+ cell-id = <590>;
+ label = "slv-display-cfg";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_camera_cfg: slv-camera-cfg {
+ cell-id = <589>;
+ label = "slv-camer-cfg";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_usb_hs: slv-usb-hs {
+ cell-id = <614>;
+ label = "slv-usb-hs";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_sdcc_1: slv-sdcc-1 {
+ cell-id = <606>;
+ label = "slv-sdcc-1";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_blsp_1: slv-blsp-1 {
+ cell-id = <613>;
+ label = "slv-blsp-1";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_sdcc_2: slv-sdcc-2 {
+ cell-id = <609>;
+ label = "slv-sdcc-2";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_gfx_cfg: slv-gfx-cfg {
+ cell-id = <598>;
+ label = "slv-gfx-cfg";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ slv_audio: slv-audio {
+ cell-id = <522>;
+ label = "slv-audio";
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ mas_blsp_1: mas-blsp_1 {
+ cell-id = <86>;
+ label = "mas-blsp-1";
+ qcom,connections = <&pnoc_m_1>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ mas_spdm: mas-spdm {
+ cell-id = <36>;
+ label = "mas-spdm";
+ qcom,connections = <&pnoc_m_0>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ mas_dehr: mas-dehr {
+ cell-id = <75>;
+ label = "mas-dehr";
+ qcom,connections = <&pnoc_m_0>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ mas_audio: mas-audio {
+ cell-id = <15>;
+ label = "mas-audio";
+ qcom,connections = <&pnoc_m_0>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ mas_usb_hs: mas-usb-hs {
+ cell-id = <87>;
+ label = "mas-usb-hs";
+ qcom,connections = <&pnoc_m_1>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <4>;
+ };
+
+ mas_pnoc_crypto_0: mas-pnoc-crypto-0 {
+ cell-id = <55>;
+ label = "mas-pnoc-crypto-0";
+ qcom,connections = <&pnoc_int_1>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <8>;
+ };
+
+ mas_pnoc_sdcc_1: mas-pnoc-sdcc-1 {
+ cell-id = <78>;
+ label = "mas-pnoc-sdcc-1";
+ qcom,qport = <7>;
+ qcom,connections = <&pnoc_int_1>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <8>;
+ };
+
+ mas_pnoc_sdcc_2: mas-pnoc-sdcc-2 {
+ cell-id = <81>;
+ label = "mas-pnoc-sdcc-2";
+ qcom,qport = <8>;
+ qcom,connections = <&pnoc_int_1>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,buswidth = <8>;
+ };
+
+ pnoc_snoc_mas: pnoc-snoc-mas {
+ cell-id = <10010>;
+ label = "pnoc-snoc-mas";
+ qcom,connections = <&pnoc_snoc_slv>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,mas-rpm-id = <29>;
+ qcom,buswidth = <8>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-camera-sensor-cdp.dtsi b/arch/arm64/boot/dts/qcom/msm8916-camera-sensor-cdp.dtsi
new file mode 100644
index 00000000000..561442ab365
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-camera-sensor-cdp.dtsi
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+};
+
+&cci {
+
+ actuator0: qcom,actuator@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ compatible = "qcom,actuator";
+ qcom,cci-master = <0>;
+ cam_vaf-supply = <&pm8916_l10>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-type = <0>;
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <80000>;
+ };
+
+ qcom,camera@78 {
+ compatible = "ovti,ov5645";
+ reg = <0x78 0x0>;
+ qcom,slave-id = <0x78 0x300a 0x5645>;
+ qcom,csiphy-sd-index = <1>;
+ qcom,csid-sd-index = <1>;
+ qcom,mount-angle = <90>;
+ qcom,sensor-name = "ov5645";
+ cam_vdig-supply = <&pm8916_s4>;
+ cam_vana-supply = <&pm8916_l17>;
+ cam_vio-supply = <&pm8916_l6>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-type = <0 1 0>;
+ qcom,cam-vreg-min-voltage = <2100000 0 2800000>;
+ qcom,cam-vreg-max-voltage = <2100000 0 2800000>;
+ qcom,cam-vreg-op-mode = <200000 0 80000>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_default
+ &cam_sensor_front_default>;
+ pinctrl-1 = <&cam_sensor_mclk1_sleep &cam_sensor_front_sleep>;
+ gpios = <&msm_gpio 27 0>,
+ <&msm_gpio 28 0>,
+ <&msm_gpio 33 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK",
+ "CAM_RESET",
+ "CAM_STANDBY";
+ qcom,gpio-set-tbl-num = <1 1>;
+ qcom,gpio-set-tbl-flags = <0 2>;
+ qcom,gpio-set-tbl-delay = <1000 4000>;
+ qcom,csi-lane-assign = <0x4320>;
+ qcom,csi-lane-mask = <0x3>;
+ qcom,sensor-position = <1>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ qcom,mclk-23880000;
+ clocks = <&clock_gcc clk_mclk1_clk_src>,
+ <&clock_gcc clk_gcc_camss_mclk1_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ qcom,camera@0 {
+ cell-index = <0>;
+ compatible = "qcom,camera";
+ reg = <0x0>;
+ qcom,csiphy-sd-index = <0>;
+ qcom,csid-sd-index = <0>;
+ qcom,mount-angle = <90>;
+ qcom,actuator-src = <&actuator0>;
+ cam_vdig-supply = <&pm8916_s4>;
+ cam_vana-supply = <&pm8916_l17>;
+ cam_vio-supply = <&pm8916_l6>;
+ cam_vaf-supply = <&pm8916_l10>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana",
+ "cam_vaf";
+ qcom,cam-vreg-type = <0 1 0 0>;
+ qcom,cam-vreg-min-voltage = <2100000 0 2850000 2800000>;
+ qcom,cam-vreg-max-voltage = <2100000 0 2850000 2800000>;
+ qcom,cam-vreg-op-mode = <200000 0 80000 100000>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_default
+ &cam_sensor_rear_default>;
+ pinctrl-1 = <&cam_sensor_mclk0_sleep &cam_sensor_rear_sleep>;
+ gpios = <&msm_gpio 26 0>,
+ <&msm_gpio 35 0>,
+ <&msm_gpio 34 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK",
+ "CAM_RESET1",
+ "CAM_STANDBY";
+ qcom,sensor-position = <0>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ qcom,mclk-23880000;
+ status = "ok";
+ clocks = <&clock_gcc clk_mclk0_clk_src>,
+ <&clock_gcc clk_gcc_camss_mclk0_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ qcom,camera@1 {
+ cell-index = <1>;
+ compatible = "qcom,camera";
+ reg = <0x1>;
+ qcom,csiphy-sd-index = <1>;
+ qcom,csid-sd-index = <1>;
+ qcom,mount-angle = <90>;
+ cam_vdig-supply = <&pm8916_s4>;
+ cam_vana-supply = <&pm8916_l17>;
+ cam_vio-supply = <&pm8916_l6>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-type = <0 1 0>;
+ qcom,cam-vreg-min-voltage = <2100000 0 2850000>;
+ qcom,cam-vreg-max-voltage = <2100000 0 2850000>;
+ qcom,cam-vreg-op-mode = <200000 0 80000>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_default &cam_sensor_front_default>;
+ pinctrl-1 = <&cam_sensor_mclk1_sleep &cam_sensor_front_sleep>;
+ gpios = <&msm_gpio 27 0>,
+ <&msm_gpio 28 0>,
+ <&msm_gpio 33 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK",
+ "CAM_RESET",
+ "CAM_STANDBY";
+ qcom,cci-master = <0>;
+ qcom,mclk-23880000;
+ status = "ok";
+ clocks = <&clock_gcc clk_mclk1_clk_src>,
+ <&clock_gcc clk_gcc_camss_mclk1_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-camera-sensor-mtp.dtsi b/arch/arm64/boot/dts/qcom/msm8916-camera-sensor-mtp.dtsi
new file mode 100644
index 00000000000..7636fbc7964
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-camera-sensor-mtp.dtsi
@@ -0,0 +1,303 @@
+/*
+ * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+};
+
+&cci {
+
+ actuator0: qcom,actuator@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ compatible = "qcom,actuator";
+ qcom,cci-master = <0>;
+ cam_vaf-supply = <&pm8916_l10>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-type = <0>;
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <80000>;
+ };
+
+ led_flash0: qcom,led-flash@0 {
+ cell-index = <0>;
+ reg = <0x66>;
+ qcom,slave-id = <0x66 0x00 0x0011>;
+ compatible = "qcom,led-flash1";
+ label = "bd7710";
+ qcom,flash-type = <1>;
+ qcom,gpio-no-mux = <0>;
+ qcom,enable_pinctrl;
+ pinctrl-names = "cam_flash_default", "cam_flash_suspend";
+ pinctrl-0 = <&cam_sensor_flash_default>;
+ pinctrl-1 = <&cam_sensor_flash_sleep>;
+ gpios = <&msm_gpio 36 0>,
+ <&msm_gpio 32 0>,
+ <&msm_gpio 31 0>;
+ qcom,gpio-flash-reset = <0>;
+ qcom,gpio-flash-en = <1>;
+ qcom,gpio-flash-now = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <0 0 0>;
+ qcom,gpio-req-tbl-label = "FLASH_RST",
+ "FLASH_EN",
+ "FLASH_NOW";
+ qcom,cci-master = <0>;
+ };
+
+ eeprom0: qcom,eeprom@20 {
+ cell-index = <0>;
+ reg = <0x20>;
+ qcom,eeprom-name = "sonyimx135";
+ compatible = "qcom,eeprom";
+ qcom,slave-addr = <0x20>;
+ qcom,cci-master = <0>;
+ qcom,num-blocks = <16>;
+
+ qcom,page0 = <1 0x3b02 2 0x10 1 5>;
+ qcom,pageen0 = <1 0x3b00 2 0x01 1 5>;
+ qcom,poll0 = <1 0x3b01 2 0x01 1 5>;
+ qcom,mem0 = <8 0x3b04 2 0 1 0>;
+
+ qcom,page1 = <1 0x3b02 2 0x0F 1 5>;
+ qcom,pageen1 = <1 0x3b00 2 0x01 1 5>;
+ qcom,poll1 = <1 0x3b01 2 0x01 1 5>;
+ qcom,mem1 = <8 0x3b04 2 0 1 0>;
+
+ qcom,page2 = <1 0x3b02 2 0x0E 1 5>;
+ qcom,pageen2 = <1 0x3b00 2 0x01 1 5>;
+ qcom,poll2 = <1 0x3b01 2 0x01 1 5>;
+ qcom,mem2 = <8 0x3b04 2 0 1 0>;
+
+ qcom,page3 = <1 0x3b02 2 0x0D 1 5>;
+ qcom,pageen3 = <1 0x3b00 2 0x01 1 5>;
+ qcom,poll3 = <1 0x3b01 2 0x01 1 5>;
+ qcom,mem3 = <8 0x3b04 2 0 1 0>;
+
+ qcom,page4 = <1 0x3b02 2 0x12 1 5>;
+ qcom,pageen4 = <1 0x3b00 2 0x01 1 5>;
+ qcom,poll4 = <1 0x3b01 2 0x01 1 5>;
+ qcom,mem4 = <7 0x3b09 2 0 1 0>;
+
+ qcom,page5 = <1 0x3b02 2 0x11 1 5>;
+ qcom,pageen5 = <1 0x3b00 2 0x01 1 5>;
+ qcom,poll5 = <1 0x3b01 2 0x01 1 5>;
+ qcom,mem5 = <7 0x3b09 2 0 1 0>;
+
+ qcom,page6 = <1 0x3b02 2 0x10 1 5>;
+ qcom,pageen6 = <1 0x3b00 2 0x01 1 5>;
+ qcom,poll6 = <1 0x3b01 2 0x01 1 5>;
+ qcom,mem6 = <7 0x3b09 2 0 1 0>;
+
+ qcom,page7 = <1 0x3b02 2 0x09 1 5>;
+ qcom,pageen7 = <1 0x3b00 2 0x01 1 5>;
+ qcom,poll7 = <1 0x3b01 2 0x01 1 5>;
+ qcom,mem7 = <7 0x3b09 2 0 1 0>;
+
+ qcom,page8 = <1 0x3b02 2 0x01 1 5>;
+ qcom,pageen8 = <1 0x3b00 2 0x01 1 5>;
+ qcom,poll8 = <1 0x3b01 2 0x01 1 5>;
+ qcom,mem8 = <64 0x3b04 2 0 1 0>;
+
+ qcom,page9 = <1 0x3b02 2 0x02 1 5>;
+ qcom,pageen9 = <1 0x3b00 2 0x01 1 5>;
+ qcom,poll9 = <1 0x3b01 2 0x01 1 5>;
+ qcom,mem9 = <64 0x3b04 2 0 1 0>;
+
+ qcom,page10 = <1 0x3b02 2 0x03 1 5>;
+ qcom,pageen10 = <1 0x3b00 2 0x01 1 5>;
+ qcom,poll10 = <1 0x3b01 2 0x01 1 5>;
+ qcom,mem10 = <64 0x3b04 2 0 1 0>;
+
+ qcom,page11 = <1 0x3b02 2 0x04 1 5>;
+ qcom,pageen11 = <1 0x3b00 2 0x01 1 5>;
+ qcom,poll11 = <1 0x3b01 2 0x01 1 5>;
+ qcom,mem11 = <64 0x3b04 2 0 1 0>;
+
+ qcom,page12 = <1 0x3b02 2 0x05 1 5>;
+ qcom,pageen12 = <1 0x3b00 2 0x01 1 5>;
+ qcom,poll12 = <1 0x3b01 2 0x01 1 5>;
+ qcom,mem12 = <64 0x3b04 2 0 1 0>;
+
+ qcom,page13 = <1 0x3b02 2 0x06 1 5>;
+ qcom,pageen13 = <1 0x3b00 2 0x01 1 5>;
+ qcom,poll13 = <1 0x3b01 2 0x01 1 5>;
+ qcom,mem13 = <64 0x3b04 2 0 1 0>;
+
+ qcom,page14 = <1 0x3b02 2 0x07 1 5>;
+ qcom,pageen14 = <1 0x3b00 2 0x01 1 5>;
+ qcom,poll14 = <1 0x3b01 2 0x01 1 5>;
+ qcom,mem14 = <64 0x3b04 2 0 1 0>;
+
+ qcom,page15 = <1 0x3b02 2 0x08 1 5>;
+ qcom,pageen15 = <1 0x3b00 2 0x01 1 5>;
+ qcom,poll15 = <1 0x3b01 2 0x01 1 5>;
+ qcom,mem15 = <56 0x3b04 2 0 1 0>;
+
+ cam_vdig-supply = <&pm8916_s4>;
+ cam_vio-supply = <&pm8916_l17>;
+ cam_vana-supply = <&pm8916_l6>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-type = <0 1 0>;
+ qcom,cam-vreg-min-voltage = <2100000 0 2850000 2800000>;
+ qcom,cam-vreg-max-voltage = <2100000 0 2850000 2800000>;
+ qcom,cam-vreg-op-mode = <200000 0 80000 100000>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_default &cam_sensor_rear_default>;
+ pinctrl-1 = <&cam_sensor_mclk0_sleep &cam_sensor_rear_sleep>;
+ qcom,gpio-no-mux = <0>;
+ gpios = <&msm_gpio 26 0>,
+ <&msm_gpio 35 0>,
+ <&msm_gpio 34 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK",
+ "CAM_RESET1",
+ "CAM_STANDBY";
+ qcom,gpio-set-tbl-num = <1 1>;
+ qcom,gpio-set-tbl-flags = <0 2>;
+ qcom,gpio-set-tbl-delay = <1000 4000>;
+ qcom,csi-lane-assign = <0x4320>;
+ qcom,csi-lane-mask = <0x3>;
+ qcom,cam-power-seq-type = "sensor_vreg", "sensor_vreg", "sensor_vreg",
+ "sensor_gpio", "sensor_gpio" , "sensor_clk";
+ qcom,cam-power-seq-val = "cam_vdig", "cam_vana", "cam_vio",
+ "sensor_gpio_reset", "sensor_gpio_standby","sensor_cam_mclk";
+ qcom,cam-power-seq-cfg-val = <1 1 1 1 1 24000000>;
+ qcom,cam-power-seq-delay = <1 1 1 30 30 5>;
+ };
+
+ qcom,camera@78 {
+ compatible = "ovti,ov5645";
+ reg = <0x78 0x0>;
+ qcom,slave-id = <0x78 0x300a 0x5645>;
+ qcom,csiphy-sd-index = <1>;
+ qcom,csid-sd-index = <1>;
+ qcom,mount-angle = <90>;
+ qcom,sensor-name = "ov5645";
+ cam_vdig-supply = <&pm8916_s4>;
+ cam_vana-supply = <&pm8916_l17>;
+ cam_vio-supply = <&pm8916_l6>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-type = <0 1 0>;
+ qcom,cam-vreg-min-voltage = <2100000 0 2850000>;
+ qcom,cam-vreg-max-voltage = <2100000 0 2850000>;
+ qcom,cam-vreg-op-mode = <200000 0 80000>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_default &cam_sensor_front_default>;
+ pinctrl-1 = <&cam_sensor_mclk1_sleep &cam_sensor_front_sleep>;
+ gpios = <&msm_gpio 27 0>,
+ <&msm_gpio 28 0>,
+ <&msm_gpio 33 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK",
+ "CAM_RESET",
+ "CAM_STANDBY";
+ qcom,gpio-set-tbl-num = <1 1>;
+ qcom,gpio-set-tbl-flags = <0 2>;
+ qcom,gpio-set-tbl-delay = <1000 4000>;
+ qcom,csi-lane-assign = <0x4320>;
+ qcom,csi-lane-mask = <0x3>;
+ qcom,sensor-position = <1>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ qcom,mclk-23880000;
+ clocks = <&clock_gcc clk_mclk1_clk_src>,
+ <&clock_gcc clk_gcc_camss_mclk1_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ qcom,camera@0 {
+ cell-index = <0>;
+ compatible = "qcom,camera";
+ reg = <0x0>;
+ qcom,csiphy-sd-index = <0>;
+ qcom,csid-sd-index = <0>;
+ qcom,mount-angle = <90>;
+ qcom,actuator-src = <&actuator0>;
+ qcom,eeprom-src = <&eeprom0>;
+ qcom,led-flash-src = <&led_flash0>;
+ cam_vdig-supply = <&pm8916_s4>;
+ cam_vana-supply = <&pm8916_l17>;
+ cam_vio-supply = <&pm8916_l6>;
+ cam_vaf-supply = <&pm8916_l10>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana",
+ "cam_vaf";
+ qcom,cam-vreg-type = <0 1 0 0>;
+ qcom,cam-vreg-min-voltage = <2100000 0 2850000 2800000>;
+ qcom,cam-vreg-max-voltage = <2100000 0 2850000 2800000>;
+ qcom,cam-vreg-op-mode = <200000 0 80000 100000>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_default &cam_sensor_rear_default>;
+ pinctrl-1 = <&cam_sensor_mclk0_sleep &cam_sensor_rear_sleep>;
+ gpios = <&msm_gpio 26 0>,
+ <&msm_gpio 35 0>,
+ <&msm_gpio 34 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK",
+ "CAM_RESET1",
+ "CAM_STANDBY";
+ qcom,sensor-position = <0>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ qcom,mclk-23880000;
+ status = "ok";
+ clocks = <&clock_gcc clk_mclk0_clk_src>,
+ <&clock_gcc clk_gcc_camss_mclk0_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ qcom,camera@1 {
+ cell-index = <1>;
+ compatible = "qcom,camera";
+ reg = <0x1>;
+ qcom,csiphy-sd-index = <1>;
+ qcom,csid-sd-index = <1>;
+ qcom,mount-angle = <90>;
+ cam_vdig-supply = <&pm8916_s4>;
+ cam_vana-supply = <&pm8916_l17>;
+ cam_vio-supply = <&pm8916_l6>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-type = <0 1 0>;
+ qcom,cam-vreg-min-voltage = <2100000 0 2850000>;
+ qcom,cam-vreg-max-voltage = <2100000 0 2850000>;
+ qcom,cam-vreg-op-mode = <200000 0 80000>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_default &cam_sensor_front_default>;
+ pinctrl-1 = <&cam_sensor_mclk1_sleep &cam_sensor_front_sleep>;
+ gpios = <&msm_gpio 27 0>,
+ <&msm_gpio 28 0>,
+ <&msm_gpio 33 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK",
+ "CAM_RESET",
+ "CAM_STANDBY";
+ qcom,cci-master = <0>;
+ qcom,mclk-23880000;
+ status = "ok";
+ clocks = <&clock_gcc clk_mclk1_clk_src>,
+ <&clock_gcc clk_gcc_camss_mclk1_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-camera-sensor-qrd-skui.dtsi b/arch/arm64/boot/dts/qcom/msm8916-camera-sensor-qrd-skui.dtsi
new file mode 100644
index 00000000000..0df5f6c18c9
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-camera-sensor-qrd-skui.dtsi
@@ -0,0 +1,189 @@
+/*
+ * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ led_flash0: qcom,camera-led-flash {
+ cell-index = <0>;
+ compatible = "qcom,camera-led-flash";
+ qcom,flash-type = <3>;
+ };
+};
+
+&cci {
+
+ actuator0: qcom,actuator@6e {
+ cell-index = <3>;
+ reg = <0x6c>;
+ compatible = "qcom,actuator";
+ qcom,cci-master = <0>;
+ };
+
+ eeprom0: qcom,eeprom@6b{
+ cell-index = <0>;
+ reg = <0x6b>;
+ qcom,eeprom-name = "sunny_q5v22e";
+ compatible = "qcom,eeprom";
+ qcom,slave-addr = <0x6c>;
+ qcom,cci-master = <0>;
+ qcom,num-blocks = <7>;
+
+ qcom,page0 = <1 0x0100 2 0x01 1 1>;
+ qcom,poll0 = <0 0x0 2 0 1 1>;
+ qcom,mem0 = <0 0x0 2 0 1 0>;
+ qcom,page1 = <1 0x3d84 2 0xc0 1 1>;
+ qcom,poll1 = <0 0x0 2 0 1 1>;
+ qcom,mem1 = <0 0x0 2 0 1 0>;
+ qcom,page2 = <1 0x3d85 2 0x00 1 1>;
+ qcom,poll2 = <0 0x0 2 0 1 1>;
+ qcom,mem2 = <0 0x0 2 0 1 0>;
+ qcom,page3 = <1 0x3d86 2 0x0f 1 1>;
+ qcom,pageen3 = <1 0x3d81 2 0x01 1 10>;
+ qcom,poll3 = <0 0x0 2 0 1 1>;
+ qcom,mem3 = <16 0x3d00 2 0 1 0>;
+ qcom,page4 = <1 0x3d84 2 0xc0 1 1>;
+ qcom,poll4 = <0 0x0 2 0 1 1>;
+ qcom,mem4 = <0 0x0 2 0 1 0>;
+ qcom,page5 = <1 0x3d85 2 0x10 1 1>;
+ qcom,poll5 = <0 0x0 2 0 1 1>;
+ qcom,mem5 = <0 0x0 2 0 1 0>;
+ qcom,page6 = <1 0x3d86 2 0x1f 1 1>;
+ qcom,pageen6 = <1 0x3d81 2 0x01 1 10>;
+ qcom,poll6 = <0 0x0 2 0 1 1>;
+ qcom,mem6 = <16 0x3d00 2 0 1 0>;
+
+ cam_vdig-supply = <&pm8916_l2>;
+ cam_vana-supply = <&pm8916_l17>;
+ cam_vio-supply = <&pm8916_l6>;
+ cam_vaf-supply = <&pm8916_l10>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana",
+ "cam_vaf";
+ qcom,cam-vreg-type = <0 1 0 0>;
+ qcom,cam-vreg-min-voltage = <2100000 0 2850000 2800000>;
+ qcom,cam-vreg-max-voltage = <2100000 0 2850000 2800000>;
+ qcom,cam-vreg-op-mode = <200000 0 80000 100000>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_default &cam_sensor_rear_default>;
+ pinctrl-1 = <&cam_sensor_mclk0_sleep &cam_sensor_rear_sleep>;
+ gpios = <&msm_gpio 26 0>,
+ <&msm_gpio 35 0>,
+ <&msm_gpio 34 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2 >;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK",
+ "CAM_RESET1",
+ "CAM_STANDBY";
+
+ qcom,cam-power-seq-type = "sensor_vreg",
+ "sensor_gpio", "sensor_gpio",
+ "sensor_clk";
+ qcom,cam-power-seq-val = "cam_vaf",
+ "sensor_gpio_reset",
+ "sensor_gpio_standby",
+ "sensor_cam_mclk" ;
+ qcom,cam-power-seq-cfg-val = <1 1 1 23880000>;
+ qcom,cam-power-seq-delay = <1 10 10 5>;
+
+ clocks = <&clock_gcc clk_mclk0_clk_src>,
+ <&clock_gcc clk_gcc_camss_mclk0_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+
+ qcom,camera@0 {
+ cell-index = <0>;
+ compatible = "qcom,camera";
+ reg = <0x0>;
+ qcom,csiphy-sd-index = <0>;
+ qcom,csid-sd-index = <0>;
+ qcom,mount-angle = <90>;
+ qcom,actuator-src = <&actuator0>;
+ qcom,eeprom-src = <&eeprom0>;
+ cam_vdig-supply = <&pm8916_l2>;
+ cam_vana-supply = <&pm8916_l17>;
+ cam_vio-supply = <&pm8916_l6>;
+ cam_vaf-supply = <&pm8916_l10>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana",
+ "cam_vaf";
+ qcom,cam-vreg-type = <0 1 0 0>;
+ qcom,cam-vreg-min-voltage = <1200000 0 2850000 2800000>;
+ qcom,cam-vreg-max-voltage = <1200000 0 2850000 2800000>;
+ qcom,cam-vreg-op-mode = <200000 0 80000 100000>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_default &cam_sensor_rear_default>;
+ pinctrl-1 = <&cam_sensor_mclk0_sleep &cam_sensor_rear_sleep>;
+ gpios = <&msm_gpio 26 0>,
+ <&msm_gpio 35 0>,
+ <&msm_gpio 34 0>,
+ <&msm_gpio 120 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-af-pwdm = <3>;
+ qcom,gpio-req-tbl-num = <0 1 2 3>;
+ qcom,gpio-req-tbl-flags = <1 0 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK",
+ "CAM_RESET1",
+ "CAM_STANDBY",
+ "CAM_AF_PWDM";
+ qcom,sensor-position = <0>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ qcom,mclk-23880000;
+ status = "ok";
+ clocks = <&clock_gcc clk_mclk0_clk_src>,
+ <&clock_gcc clk_gcc_camss_mclk0_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ qcom,camera@1 {
+ cell-index = <1>;
+ compatible = "qcom,camera";
+ reg = <0x1>;
+ qcom,csiphy-sd-index = <1>;
+ qcom,csid-sd-index = <1>;
+ qcom,mount-angle = <90>;
+ cam_vdig-supply = <&pm8916_l2>;
+ cam_vana-supply = <&pm8916_l17>;
+ cam_vio-supply = <&pm8916_l6>;
+ cam_vaf-supply = <&pm8916_l10>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana",
+ "cam_vaf";
+ qcom,cam-vreg-type = <0 1 0 0>;
+ qcom,cam-vreg-min-voltage = <1200000 0 2850000 2800000>;
+ qcom,cam-vreg-max-voltage = <1200000 0 2850000 2800000>;
+ qcom,cam-vreg-op-mode = <200000 0 80000 100000>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_default &cam_sensor_front_default>;
+ pinctrl-1 = <&cam_sensor_mclk1_sleep &cam_sensor_front_sleep>;
+ gpios = <&msm_gpio 27 0>,
+ <&msm_gpio 28 0>,
+ <&msm_gpio 33 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK",
+ "CAM_RESET",
+ "CAM_STANDBY";
+ qcom,sensor-position = <1>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ qcom,mclk-23880000;
+ status = "ok";
+ clocks = <&clock_gcc clk_mclk1_clk_src>,
+ <&clock_gcc clk_gcc_camss_mclk1_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+};
+
diff --git a/arch/arm64/boot/dts/qcom/msm8916-camera-sensor-qrd.dtsi b/arch/arm64/boot/dts/qcom/msm8916-camera-sensor-qrd.dtsi
new file mode 100644
index 00000000000..b267cef62f1
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-camera-sensor-qrd.dtsi
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&cci {
+ actuator0: qcom,actuator@6e {
+ cell-index = <3>;
+ reg = <0x18>;
+ compatible = "qcom,actuator";
+ qcom,cci-master = <0>;
+ };
+
+ qcom,camera@0 {
+ cell-index = <0>;
+ compatible = "qcom,camera";
+ reg = <0x0>;
+ qcom,csiphy-sd-index = <0>;
+ qcom,csid-sd-index = <0>;
+ qcom,mount-angle = <90>;
+ qcom,actuator-src = <&actuator0>;
+ cam_vaf-supply = <&pm8916_l10>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-type = <0>;
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_default &cam_sensor_rear_default>;
+ pinctrl-1 = <&cam_sensor_mclk0_sleep &cam_sensor_rear_sleep>;
+ gpios = <&msm_gpio 26 0>,
+ <&msm_gpio 35 0>,
+ <&msm_gpio 34 0>,
+ <&msm_gpio 114 0>,
+ <&msm_gpio 110 0>,
+ <&msm_gpio 120 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-vdig = <3>;
+ qcom,gpio-vana = <4>;
+ qcom,gpio-af-pwdm = <5>;
+ qcom,gpio-req-tbl-num = <0 1 2 3 4 5>;
+ qcom,gpio-req-tbl-flags = <1 0 0 0 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK",
+ "CAM_RESET1",
+ "CAM_STANDBY",
+ "CAM_VDIG",
+ "CAM_VANA",
+ "CAM_AF_PWDM";
+ qcom,sensor-position = <0>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_gcc clk_mclk0_clk_src>,
+ <&clock_gcc clk_gcc_camss_mclk0_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ qcom,camera@1 {
+ cell-index = <1>;
+ compatible = "qcom,camera";
+ reg = <0x1>;
+ qcom,csiphy-sd-index = <1>;
+ qcom,csid-sd-index = <1>;
+ qcom,mount-angle = <270>;
+ qcom,cam-vreg-name = "cam_vio", "cam_vana";
+ qcom,cam-vreg-type = <1 0>;
+ qcom,cam-vreg-min-voltage = <0 2850000>;
+ qcom,cam-vreg-max-voltage = <0 2850000>;
+ qcom,cam-vreg-op-mode = <0 80000>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_default &cam_sensor_front_default>;
+ pinctrl-1 = <&cam_sensor_mclk1_sleep &cam_sensor_front_sleep>;
+ gpios = <&msm_gpio 27 0>,
+ <&msm_gpio 28 0>,
+ <&msm_gpio 33 0>,
+ <&msm_gpio 114 0>,
+ <&msm_gpio 110 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-vdig = <3>;
+ qcom,gpio-vana = <4>;
+ qcom,gpio-req-tbl-num = <0 1 2 3 4>;
+ qcom,gpio-req-tbl-flags = <1 0 0 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK",
+ "CAM_RESET",
+ "CAM_STANDBY",
+ "CAM_VDIG",
+ "CAM_VANA";
+ qcom,sensor-position = <1>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_gcc clk_mclk1_clk_src>,
+ <&clock_gcc clk_gcc_camss_mclk1_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+};
+
+
diff --git a/arch/arm64/boot/dts/qcom/msm8916-camera.dtsi b/arch/arm64/boot/dts/qcom/msm8916-camera.dtsi
new file mode 100644
index 00000000000..42655298d9f
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-camera.dtsi
@@ -0,0 +1,335 @@
+/*
+ * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ qcom,msm-cam@1800000{
+ compatible = "qcom,msm-cam";
+ };
+
+ qcom,csiphy@1b0ac00 {
+ cell-index = <0>;
+ compatible = "qcom,csiphy-v3.1", "qcom,csiphy";
+ reg = <0x1b0ac00 0x200>,
+ <0x1b00030 0x4>;
+ reg-names = "csiphy", "csiphy_clk_mux";
+ interrupts = <0 78 0>;
+ interrupt-names = "csiphy";
+ clocks = <&clock_gcc clk_gcc_camss_top_ahb_clk>,
+ <&clock_gcc clk_gcc_camss_ispif_ahb_clk>,
+ <&clock_gcc clk_csi0phytimer_clk_src>,
+ <&clock_gcc clk_gcc_camss_csi0phytimer_clk>,
+ <&clock_gcc clk_camss_ahb_clk_src>,
+ <&clock_gcc clk_gcc_camss_csi0phy_clk>,
+ <&clock_gcc clk_gcc_camss_ahb_clk>;
+ clock-names = "camss_top_ahb_clk", "ispif_ahb_clk",
+ "csiphy_timer_src_clk", "csiphy_timer_clk",
+ "camss_ahb_src", "csi_phy_clk",
+ "camss_ahb_clk";
+ qcom,clock-rates = <0 0 200000000 0 0 0 0>;
+ };
+
+ qcom,csiphy@1b0b000 {
+ cell-index = <1>;
+ compatible = "qcom,csiphy-v3.1", "qcom,csiphy";
+ reg = <0x1b0b000 0x200>,
+ <0x1b00038 0x4>;
+ reg-names = "csiphy", "csiphy_clk_mux";
+ interrupts = <0 79 0>;
+ interrupt-names = "csiphy";
+ clocks = <&clock_gcc clk_gcc_camss_top_ahb_clk>,
+ <&clock_gcc clk_gcc_camss_ispif_ahb_clk>,
+ <&clock_gcc clk_csi1phytimer_clk_src>,
+ <&clock_gcc clk_gcc_camss_csi1phytimer_clk>,
+ <&clock_gcc clk_camss_ahb_clk_src>,
+ <&clock_gcc clk_gcc_camss_csi1phy_clk>,
+ <&clock_gcc clk_gcc_camss_ahb_clk>;
+ clock-names = "camss_top_ahb_clk", "ispif_ahb_clk",
+ "csiphy_timer_src_clk", "csiphy_timer_clk",
+ "camss_ahb_src", "csi_phy_clk",
+ "camss_ahb_clk";
+ qcom,clock-rates = <0 0 200000000 0 0 0 0>;
+ };
+
+ qcom,csid@1b08000 {
+ cell-index = <0>;
+ compatible = "qcom,csid-v3.1", "qcom,csid";
+ reg = <0x1b08000 0x100>;
+ reg-names = "csid";
+ interrupts = <0 51 0>;
+ interrupt-names = "csid";
+ qcom,csi-vdd-voltage = <1200000>;
+ qcom,mipi-csi-vdd-supply = <&pm8916_l2>;
+ clocks = <&clock_gcc clk_gcc_camss_top_ahb_clk>,
+ <&clock_gcc clk_gcc_camss_ispif_ahb_clk>,
+ <&clock_gcc clk_gcc_camss_csi0_ahb_clk>,
+ <&clock_gcc clk_csi0_clk_src>,
+ <&clock_gcc clk_gcc_camss_csi0_clk>,
+ <&clock_gcc clk_gcc_camss_csi0pix_clk>,
+ <&clock_gcc clk_gcc_camss_csi0rdi_clk>,
+ <&clock_gcc clk_gcc_camss_ahb_clk>;
+ clock-names = "camss_top_ahb_clk",
+ "ispif_ahb_clk", "csi_ahb_clk", "csi_src_clk",
+ "csi_clk", "csi_pix_clk",
+ "csi_rdi_clk", "camss_ahb_clk";
+ qcom,clock-rates = <0 0 0 200000000 0 0 0 0>;
+ };
+
+ qcom,csid@1b08400 {
+ cell-index = <1>;
+ compatible = "qcom,csid-v3.1", "qcom,csid";
+ reg = <0x1b08400 0x100>;
+ reg-names = "csid";
+ interrupts = <0 52 0>;
+ interrupt-names = "csid";
+ qcom,csi-vdd-voltage = <1200000>;
+ qcom,mipi-csi-vdd-supply = <&pm8916_l2>;
+ clocks = <&clock_gcc clk_gcc_camss_top_ahb_clk>,
+ <&clock_gcc clk_gcc_camss_ispif_ahb_clk>,
+ <&clock_gcc clk_gcc_camss_csi1_ahb_clk>,
+ <&clock_gcc clk_csi1_clk_src>,
+ <&clock_gcc clk_gcc_camss_csi1_clk>,
+ <&clock_gcc clk_gcc_camss_csi1pix_clk>,
+ <&clock_gcc clk_gcc_camss_csi1rdi_clk>,
+ <&clock_gcc clk_gcc_camss_ahb_clk>;
+ clock-names = "camss_top_ahb_clk",
+ "ispif_ahb_clk", "csi_ahb_clk", "csi_src_clk",
+ "csi_clk", "csi_pix_clk",
+ "csi_rdi_clk", "camss_ahb_clk";
+ qcom,clock-rates = <0 0 0 200000000 0 0 0 0>;
+ };
+
+ qcom,ispif@1b0a000 {
+ cell-index = <0>;
+ compatible = "qcom,ispif-v3.0", "qcom,ispif";
+ reg = <0x1b0a000 0x500>,
+ <0x1b00020 0x10>;
+ reg-names = "ispif", "csi_clk_mux";
+ interrupts = <0 55 0>;
+ interrupt-names = "ispif";
+ clocks = <&clock_gcc clk_gcc_camss_ispif_ahb_clk>,
+ <&clock_gcc clk_gcc_camss_ahb_clk>,
+ <&clock_gcc clk_csi0_clk_src>,
+ <&clock_gcc clk_gcc_camss_csi0_clk>,
+ <&clock_gcc clk_gcc_camss_csi0pix_clk>,
+ <&clock_gcc clk_gcc_camss_csi0rdi_clk>,
+ <&clock_gcc clk_csi1_clk_src>,
+ <&clock_gcc clk_gcc_camss_csi1_clk>,
+ <&clock_gcc clk_gcc_camss_csi1pix_clk>,
+ <&clock_gcc clk_gcc_camss_csi1rdi_clk>,
+ <&clock_gcc clk_csi1_clk_src>,
+ <&clock_gcc clk_gcc_camss_csi1_clk>,
+ <&clock_gcc clk_gcc_camss_csi1pix_clk>,
+ <&clock_gcc clk_gcc_camss_csi1rdi_clk>,
+ <&clock_gcc clk_csi1_clk_src>,
+ <&clock_gcc clk_gcc_camss_csi1_clk>,
+ <&clock_gcc clk_gcc_camss_csi1pix_clk>,
+ <&clock_gcc clk_gcc_camss_csi1rdi_clk>,
+ <&clock_gcc clk_vfe0_clk_src>,
+ <&clock_gcc clk_gcc_camss_vfe0_clk>,
+ <&clock_gcc clk_gcc_camss_csi_vfe0_clk>,
+ <&clock_gcc clk_vfe0_clk_src>,
+ <&clock_gcc clk_gcc_camss_vfe0_clk>,
+ <&clock_gcc clk_gcc_camss_csi_vfe0_clk>;
+ clock-names = "ispif_ahb_clk","camss_ahb_clk",
+ "csi0_src_clk", "csi0_clk",
+ "csi0_pix_clk","csi0_rdi_clk", "csi1_src_clk",
+ "csi1_clk", "csi1_pix_clk", "csi1_rdi_clk",
+ "csi2_src_clk","csi2_clk", "csi2_pix_clk","csi2_rdi_clk",
+ "csi3_src_clk","csi3_clk", "csi3_pix_clk",
+ "csi3_rdi_clk", "vfe0_clk_src", "camss_vfe_vfe0_clk",
+ "camss_csi_vfe0_clk","vfe1_clk_src","camss_vfe_vfe1_clk",
+ "camss_csi_vfe1_clk";
+ qcom,clock-rates = <0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0>;
+ };
+
+ qcom,vfe@1b10000 {
+ cell-index = <0>;
+ compatible = "qcom,vfe40";
+ reg = <0x1b10000 0x1000>,
+ <0x1b40000 0x200>;
+ reg-names = "vfe", "vfe_vbif";
+ interrupts = <0 57 0>;
+ interrupt-names = "vfe";
+ vdd-supply = <&gdsc_vfe>;
+ clocks = <&clock_gcc clk_gcc_camss_top_ahb_clk>,
+ <&clock_gcc clk_vfe0_clk_src>,
+ <&clock_gcc clk_gcc_camss_vfe0_clk>,
+ <&clock_gcc clk_gcc_camss_csi_vfe0_clk>,
+ <&clock_gcc clk_gcc_camss_vfe_ahb_clk>,
+ <&clock_gcc clk_gcc_camss_vfe_axi_clk>,
+ <&clock_gcc clk_gcc_camss_ahb_clk>;
+ clock-names = "camss_top_ahb_clk", "vfe_clk_src",
+ "camss_vfe_vfe_clk", "camss_csi_vfe_clk", "iface_clk",
+ "bus_clk", "camss_ahb_clk";
+ qcom,clock-rates = <0 266670000 0 0 0 0 0>;
+ qos-entries = <8>;
+ qos-regs = <0x2C4 0x2C8 0x2CC 0x2D0 0x2D4 0x2D8
+ 0x2DC 0x2E0>;
+ qos-settings = <0xAAA5AAA5 0xAAA5AAA5 0xAAA5AAA5
+ 0xAAA5AAA5 0xAAA5AAA5 0xAAA5AAA5
+ 0xAAA5AAA5 0x0001AAA5>;
+ };
+
+ qcom,jpeg@1b1c000 {
+ cell-index = <0>;
+ compatible = "qcom,jpeg";
+ reg = <0x1b1c000 0x400>,
+ <0x1b60000 0xc30>;
+ reg-names = "jpeg";
+ interrupts = <0 59 0>;
+ interrupt-names = "jpeg";
+ vdd-supply = <&gdsc_jpeg>;
+ clocks = <&clock_gcc clk_gcc_camss_jpeg0_clk>,
+ <&clock_gcc clk_gcc_camss_jpeg_ahb_clk>,
+ <&clock_gcc clk_gcc_camss_jpeg_axi_clk>,
+ <&clock_gcc clk_gcc_camss_top_ahb_clk>,
+ <&clock_gcc clk_gcc_camss_ahb_clk>;
+ clock-names = "core_clk", "iface_clk",
+ "bus_clk0", "camss_top_ahb_clk",
+ "camss_ahb_clk";
+ qcom,clock-rates = <266670000 0 0 0 0>;
+ };
+
+ qcom,irqrouter@1b00000 {
+ cell-index = <0>;
+ compatible = "qcom,irqrouter";
+ reg = <0x1b00000 0x100>;
+ reg-names = "irqrouter";
+ };
+
+ qcom,cpp@1b04000 {
+ cell-index = <0>;
+ compatible = "qcom,cpp";
+ reg = <0x1b04000 0x100>,
+ <0x1b40000 0x200>,
+ <0x1b18000 0x018>;
+ reg-names = "cpp", "cpp_vbif", "cpp_hw";
+ interrupts = <0 49 0>;
+ interrupt-names = "cpp";
+ vdd-supply = <&gdsc_vfe>;
+ clocks = <&clock_gcc clk_gcc_camss_top_ahb_clk>,
+ <&clock_gcc clk_vfe0_clk_src>,
+ <&clock_gcc clk_gcc_camss_vfe0_clk>,
+ <&clock_gcc clk_gcc_camss_vfe_ahb_clk>,
+ <&clock_gcc clk_gcc_camss_cpp_clk>,
+ <&clock_gcc clk_gcc_camss_cpp_ahb_clk>,
+ <&clock_gcc clk_gcc_camss_vfe_axi_clk>,
+ <&clock_gcc clk_gcc_camss_micro_ahb_clk>,
+ <&clock_gcc clk_gcc_camss_ahb_clk>;
+ clock-names = "camss_top_ahb_clk", "vfe_clk_src",
+ "camss_vfe_vfe_clk", "iface_clk", "cpp_core_clk",
+ "cpp_iface_clk", "cpp_bus_clk", "micro_iface_clk",
+ "camss_ahb_clk";
+ qcom,clock-rates = <0 320000000 0 80000000 320000000 0 0 0 0>;
+ };
+
+ cci: qcom,cci@1b0c000 {
+ cell-index = <0>;
+ compatible = "qcom,cci";
+ reg = <0x1b0c000 0x1000>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-names = "cci";
+ interrupts = <0 50 0>;
+ interrupt-names = "cci";
+ clocks = <&clock_gcc clk_gcc_camss_top_ahb_clk>,
+ <&clock_gcc clk_cci_clk_src>,
+ <&clock_gcc clk_gcc_camss_cci_ahb_clk>,
+ <&clock_gcc clk_gcc_camss_cci_clk>,
+ <&clock_gcc clk_gcc_camss_ahb_clk>;
+ clock-names = "camss_top_ahb_clk", "cci_src_clk",
+ "cci_ahb_clk", "cci_clk", "camss_ahb_clk";
+ qcom,clock-rates = <0 19200000 80000000 0 0>,
+ <0 37500000 80000000 0 0>;
+ pinctrl-names = "cci_default", "cci_suspend";
+ pinctrl-0 = <&cci0_default>;
+ pinctrl-1 = <&cci0_sleep>;
+ gpios = <&msm_gpio 29 0>,
+ <&msm_gpio 30 0>;
+ qcom,gpio-tbl-num = <0 1>;
+ qcom,gpio-tbl-flags = <1 1>;
+ qcom,gpio-tbl-label = "CCI_I2C_DATA0",
+ "CCI_I2C_CLK0";
+ i2c_freq_100Khz: qcom,i2c_standard_mode {
+ status = "disabled";
+ };
+ i2c_freq_400Khz: qcom,i2c_fast_mode {
+ status = "disabled";
+ };
+ i2c_freq_custom: qcom,i2c_custom_mode {
+ status = "disabled";
+ };
+
+ i2c_freq_1Mhz: qcom,i2c_fast_plus_mode {
+ status = "disabled";
+ };
+
+ };
+};
+
+&i2c_freq_100Khz {
+ qcom,hw-thigh = <78>;
+ qcom,hw-tlow = <114>;
+ qcom,hw-tsu-sto = <28>;
+ qcom,hw-tsu-sta = <28>;
+ qcom,hw-thd-dat = <10>;
+ qcom,hw-thd-sta = <77>;
+ qcom,hw-tbuf = <118>;
+ qcom,hw-scl-stretch-en = <0>;
+ qcom,hw-trdhld = <6>;
+ qcom,hw-tsp = <1>;
+ status = "ok";
+};
+
+&i2c_freq_400Khz {
+ qcom,hw-thigh = <20>;
+ qcom,hw-tlow = <28>;
+ qcom,hw-tsu-sto = <21>;
+ qcom,hw-tsu-sta = <21>;
+ qcom,hw-thd-dat = <13>;
+ qcom,hw-thd-sta = <18>;
+ qcom,hw-tbuf = <32>;
+ qcom,hw-scl-stretch-en = <0>;
+ qcom,hw-trdhld = <6>;
+ qcom,hw-tsp = <3>;
+ status = "ok";
+};
+
+&i2c_freq_custom {
+ qcom,hw-thigh = <15>;
+ qcom,hw-tlow = <28>;
+ qcom,hw-tsu-sto = <21>;
+ qcom,hw-tsu-sta = <21>;
+ qcom,hw-thd-dat = <13>;
+ qcom,hw-thd-sta = <18>;
+ qcom,hw-tbuf = <25>;
+ qcom,hw-scl-stretch-en = <1>;
+ qcom,hw-trdhld = <6>;
+ qcom,hw-tsp = <3>;
+ status = "ok";
+};
+
+&i2c_freq_1Mhz {
+ qcom,hw-thigh = <16>;
+ qcom,hw-tlow = <22>;
+ qcom,hw-tsu-sto = <17>;
+ qcom,hw-tsu-sta = <18>;
+ qcom,hw-thd-dat = <16>;
+ qcom,hw-thd-sta = <15>;
+ qcom,hw-tbuf = <19>;
+ qcom,hw-scl-stretch-en = <1>;
+ qcom,hw-trdhld = <3>;
+ qcom,hw-tsp = <3>;
+ qcom,cci-clk-src = <37500000>;
+ status = "ok";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-cdp-smb1360.dts b/arch/arm64/boot/dts/qcom/msm8916-cdp-smb1360.dts
new file mode 100644
index 00000000000..fece75d8f66
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-cdp-smb1360.dts
@@ -0,0 +1,51 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License version 2 and
+* only version 2 as published by the Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*/
+
+/dts-v1/;
+
+#include "msm8916-cdp.dtsi"
+#include "msm8916-memory.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8916 SMB1360 CDP";
+ compatible = "qcom,msm8916-cdp", "qcom,msm8916", "qcom,cdp";
+ qcom,board-id = <1 1>;
+};
+
+&soc {
+ i2c@78b8000 {
+ smb1360_otg_supply: smb1360-chg-fg@14 {
+ compatible = "qcom,smb1360-chg-fg";
+ reg = <0x14>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <62 8>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&smb_int_default>;
+ regulator-name = "smb1360_otg_vreg";
+
+ qcom,float-voltage-mv = <4200>;
+ qcom,iterm-ma = <100>;
+ qcom,charging-disabled;
+ qcom,recharge-thresh-mv = <100>;
+ qcom,thermal-mitigation = <1500 700 600 0>;
+ };
+ };
+};
+
+&pm8916_chg {
+ status = "disabled";
+};
+
+&pm8916_bms {
+ status = "ok";
+ qcom,disable-bms;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-cdp.dts b/arch/arm64/boot/dts/qcom/msm8916-cdp.dts
new file mode 100644
index 00000000000..42dbdcd4e0f
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-cdp.dts
@@ -0,0 +1,22 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License version 2 and
+* only version 2 as published by the Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*/
+
+/dts-v1/;
+
+#include "msm8916-cdp.dtsi"
+#include "msm8916-memory.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8916 CDP";
+ compatible = "qcom,msm8916-cdp", "qcom,msm8916", "qcom,cdp";
+ qcom,board-id = <1 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-cdp.dtsi b/arch/arm64/boot/dts/qcom/msm8916-cdp.dtsi
new file mode 100644
index 00000000000..afa3684e9da
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-cdp.dtsi
@@ -0,0 +1,582 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "msm8916.dtsi"
+#include "msm8916-pinctrl.dtsi"
+#include "msm8916-camera-sensor-cdp.dtsi"
+
+/ {
+ aliases {
+ serial0 = &blsp1_uart2;
+ };
+};
+
+&soc {
+ i2c@78b9000 { /* BLSP1 QUP5 */
+ synaptics@20 {
+ compatible = "synaptics,rmi4";
+ reg = <0x20>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <13 0x2008>;
+ vdd-supply = <&pm8916_l17>;
+ vcc_i2c-supply = <&pm8916_l6>;
+ /* pins used by touchscreen */
+ pinctrl-names = "pmx_ts_active","pmx_ts_suspend","pmx_ts_release";
+ pinctrl-0 = <&ts_int_active &ts_reset_active>;
+ pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;
+ pinctrl-2 = <&ts_release>;
+ synaptics,irq-gpio = <&msm_gpio 13 0x2008>;
+ synaptics,reset-gpio = <&msm_gpio 12 0x0>;
+ synaptics,i2c-pull-up;
+ synaptics,power-down;
+ synaptics,disable-gpios;
+ synaptics,detect-device;
+ synaptics,device1 {
+ synaptics,package-id = <3202>;
+ synaptics,button-map = <139 172 158>;
+ };
+ synaptics,device2 {
+ synaptics,package-id = <3408>;
+ synaptics,display-coords = <0 0 1079 1919>;
+ synaptics,panel-coords = <0 0 1079 2063>;
+ };
+ };
+ };
+
+ gen-vkeys {
+ compatible = "qcom,gen-vkeys";
+ label = "synaptics_rmi4_i2c";
+ qcom,disp-maxx = <1079>;
+ qcom,disp-maxy = <1919>;
+ qcom,panel-maxx = <1079>;
+ qcom,panel-maxy = <2084>;
+ qcom,key-codes = <158 139 172 217>;
+ };
+
+ i2c@78ba000 { /* BLSP1 QUP6 */
+ nfc-nci@e {
+ compatible = "qcom,nfc-nci";
+ reg = <0x0e>;
+ qcom,irq-gpio = <&msm_gpio 21 0x00>;
+ qcom,dis-gpio = <&msm_gpio 20 0x00>;
+ qcom,clk-src = "BBCLK2";
+ qcom,clk-en-gpio = <&msm_gpio 0 0x00>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <21 0>;
+ pinctrl-names = "nfc_active","nfc_suspend";
+ pinctrl-0 = <&nfc_int_active &nfc_disable_active>;
+ pinctrl-1 = <&nfc_int_suspend &nfc_disable_suspend>;
+ qcom,clk-gpio = <&pm8916_gpios 2 0>;
+ clocks = <&clock_rpm clk_bb_clk2_pin>;
+ clock-names = "ref_clk";
+ };
+ };
+
+ i2c@78b6000 { /* BLSP1 QUP2 */
+ mpu6050@68 { /* Gyroscope and accelerometer sensor combo */
+ compatible = "invn,mpu6050";
+ reg = <0x68>;
+ pinctrl-names = "mpu_default","mpu_sleep";
+ pinctrl-0 = <&mpu6050_default>;
+ pinctrl-1 = <&mpu6050_sleep>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <115 0x2>;
+ vdd-supply = <&pm8916_l17>;
+ vlogic-supply = <&pm8916_l16>;
+ invn,gpio-int = <&msm_gpio 115 0x2>;
+ invn,place = "Portrait Down Back Side";
+ };
+
+ avago@39 { /* Ambient light and proximity sensor */
+ compatible = "avago,apds9900";
+ reg = <0x39>;
+ pinctrl-names = "default","sleep";
+ pinctrl-0 = <&apds99xx_default>;
+ pinctrl-1 = <&apds99xx_sleep>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <113 0x2002>;
+ vdd-supply = <&pm8916_l17>;
+ vio-supply = <&pm8916_l6>;
+ avago,irq-gpio = <&msm_gpio 113 0x2002>;
+ avago,ps-threshold = <600>;
+ avago,ps-hysteresis-threshold = <500>;
+ avago,ps-pulse = <8>;
+ avago,ps-pgain = <0>;
+ avago,als-B = <223>;
+ avago,als-C = <70>;
+ avago,als-D = <142>;
+ avago,ga-value = <48>;
+ };
+
+ akm@c {
+ compatible = "ak,ak8963";
+ reg = <0x0c>;
+ pinctrl-names = "ak8963_default", "ak8963_sleep";
+ pinctrl-0 = <&ak8963_default>;
+ pinctrl-1 = <&ak8963_sleep>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <69 0x2>;
+ vdd-supply = <&pm8916_l17>;
+ vio-supply = <&pm8916_l6>;
+ ak,layout = <0x6>;
+ ak,auto-report;
+ };
+ };
+
+ i2c@78b6000 { /* BLSP1 QUP2 */
+ wcd9xxx_codec@14 {
+ compatible = "qcom,wcd9xxx-i2c";
+ reg = <0x0d>;
+ qcom,cdc-reset-gpio = <&msm_gpio 67 0>;
+ interrupt-parent = <&wcd9xxx_intc>;
+ interrupts = <0 1 2 3 4 5 6>, <7 8 9 10 11 12 13>,
+ <14 15 16 17 18 19 20>, <21 22 23 24 25 26 27 28>;
+
+ cdc-vdd-buck-supply = <&pm8916_s4>;
+ qcom,cdc-vdd-buck-voltage = <1800000 2150000>;
+ qcom,cdc-vdd-buck-current = <650000>;
+
+ cdc-vdd-h-supply = <&pm8916_l15>;
+ qcom,cdc-vdd-h-voltage = <1800000 1800000>;
+ qcom,cdc-vdd-h-current = <25000>;
+
+ cdc-vdd-px-supply = <&pm8916_l6>;
+ qcom,cdc-vdd-px-voltage = <1800000 1800000>;
+ qcom,cdc-vdd-px-current = <25000>;
+
+ cdc-vdd-cx-supply = <&pm8916_l2>;
+ qcom,cdc-vdd-cx-voltage = <1200000 1200000>;
+ qcom,cdc-vdd-cx-current = <2000>;
+
+ cdc-vdd-buckhelper-supply = <&pm8916_l15>;
+ qcom,cdc-vdd-buckhelper-voltage = <1775000 2125000>;
+ qcom,cdc-vdd-buckhelper-current = <10000>;
+
+ qcom,cdc-static-supplies = "cdc-vdd-h",
+ "cdc-vdd-px",
+ "cdc-vdd-cx";
+
+ qcom,cdc-cp-supplies = "cdc-vdd-buck",
+ "cdc-vdd-buckhelper";
+
+ qcom,cdc-micbias-ldoh-v = <0x3>;
+ qcom,cdc-micbias-cfilt1-mv = <1800>;
+ qcom,cdc-micbias-cfilt2-mv = <2700>;
+ qcom,cdc-micbias-cfilt3-mv = <1800>;
+
+ qcom,cdc-micbias1-cfilt-sel = <0x0>;
+ qcom,cdc-micbias2-cfilt-sel = <0x1>;
+ qcom,cdc-micbias3-cfilt-sel = <0x2>;
+
+ qcom,cdc-mclk-clk-rate = <9600000>;
+ };
+
+ wcd9xxx_codec@77 {
+ compatible = "qcom,wcd9xxx-i2c";
+ reg = <0x77>;
+ };
+
+ wcd9xxx_codec@66 {
+ compatible = "qcom,wcd9xxx-i2c";
+ reg = <0x66>;
+ };
+
+ wcd9xxx_codec@55 {
+ compatible = "qcom,wcd9xxx-i2c";
+ reg = <0x55>;
+ };
+ };
+
+ sound {
+ compatible = "qcom,msm8x16-audio-codec";
+ qcom,model = "msm8x16-snd-card";
+ qcom,msm-snd-card-id = <0>;
+ qcom,msm-codec-type = "internal";
+ qcom,msm-ext-pa = "primary";
+ qcom,msm-mbhc-hphl-swh = <0>;
+ qcom,msm-mbhc-gnd-swh = <0>;
+ qcom,msm-micbias1-ext-cap;
+ qcom,msm-mclk-freq = <9600000>;
+ qcom,msm-hs-micbias-type = "internal";
+ qcom,audio-routing =
+ "RX_BIAS", "MCLK",
+ "SPK_RX_BIAS", "MCLK",
+ "INT_LDO_H", "MCLK",
+ "MIC BIAS Internal1", "Handset Mic",
+ "MIC BIAS Internal2", "Headset Mic",
+ "MIC BIAS Internal3", "Secondary Mic",
+ "AMIC1", "MIC BIAS Internal1",
+ "AMIC2", "MIC BIAS Internal2",
+ "AMIC3", "MIC BIAS Internal3",
+ "DMIC1", "MIC BIAS Internal1",
+ "MIC BIAS Internal1", "Digital Mic1",
+ "DMIC2", "MIC BIAS Internal1",
+ "MIC BIAS Internal1", "Digital Mic2";
+ pinctrl-names = "cdc_lines_act",
+ "cdc_lines_sus",
+ "cdc_lines_sec_ext_act",
+ "cdc_lines_sec_ext_sus";
+ pinctrl-0 = <&cdc_pdm_lines_act>;
+ pinctrl-1 = <&cdc_pdm_lines_sus>;
+ pinctrl-2 = <&cdc_pdm_lines_act &cdc_ext_pa_act
+ &cdc_ext_pa_ws_act>;
+ pinctrl-3 = <&cdc_pdm_lines_sus &cdc_ext_pa_sus
+ &cdc_ext_pa_ws_sus>;
+ };
+
+ sound-9306 {
+ compatible = "qcom,msm8x16-audio-codec";
+ qcom,model = "msm8x16-tapan-snd-card";
+ qcom,msm-snd-card-id = <1>;
+ qcom,msm-codec-type = "external";
+ qcom,tapan-mclk-clk-freq = <9600000>;
+ qcom,prim-auxpcm-gpio-clk = <&msm_gpio 63 0>;
+ qcom,prim-auxpcm-gpio-sync = <&msm_gpio 64 0>;
+ qcom,prim-auxpcm-gpio-din = <&msm_gpio 65 0>;
+ qcom,prim-auxpcm-gpio-dout = <&msm_gpio 66 0>;
+ qcom,prim-auxpcm-gpio-set = "prim-gpio-prim";
+ qcom,tapan-codec-9302;
+ pinctrl-names = "ext_cdc_tlmm_lines_act",
+ "ext_cdc_tlmm_lines_sus";
+ pinctrl-0 = <&ext_cdc_tlmm_lines_act>;
+ pinctrl-1 = <&ext_cdc_tlmm_lines_sus>;
+ qcom,audio-routing =
+ "RX_BIAS", "MCLK",
+ "LDO_H", "MCLK",
+ "SPK_OUT", "MCLK",
+ "SPK_OUT", "EXT_VDD_SPKR",
+ "AMIC1", "MIC BIAS1 Internal1",
+ "MIC BIAS1 Internal1", "Handset Mic",
+ "AMIC2", "MIC BIAS2 External",
+ "MIC BIAS2 External", "Headset Mic",
+ "AMIC4", "MIC BIAS2 External",
+ "MIC BIAS2 External", "ANCRight Headset Mic",
+ "AMIC5", "MIC BIAS2 External",
+ "MIC BIAS2 External", "ANCLeft Headset Mic",
+ "DMIC1", "MIC BIAS1 External",
+ "MIC BIAS1 External", "Digital Mic1",
+ "DMIC2", "MIC BIAS1 External",
+ "MIC BIAS1 External", "Digital Mic2",
+ "DMIC3", "MIC BIAS3 External",
+ "MIC BIAS3 External", "Digital Mic3",
+ "DMIC4", "MIC BIAS3 External",
+ "MIC BIAS3 External", "Digital Mic4";
+ };
+};
+
+&blsp1_uart2 {
+ status = "ok";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart_console_sleep>;
+};
+
+&soc {
+ gpio_keys {
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+ pinctrl-names = "tlmm_gpio_key_active","tlmm_gpio_key_suspend";
+ pinctrl-0 = <&gpio_key_active>;
+ pinctrl-1 = <&gpio_key_suspend>;
+
+ camera_focus {
+ label = "camera_focus";
+ gpios = <&msm_gpio 108 0x1>;
+ linux,input-type = <1>;
+ linux,code = <0x210>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+
+ camera_snapshot {
+ label = "camera_snapshot";
+ gpios = <&msm_gpio 109 0x1>;
+ linux,input-type = <1>;
+ linux,code = <0x2fe>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+
+ vol_up {
+ label = "volume_up";
+ gpios = <&msm_gpio 107 0x1>;
+ linux,input-type = <1>;
+ linux,code = <115>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+ };
+};
+
+&blsp1_uart1 {
+ status = "ok";
+};
+
+&sdhc_1 {
+ vdd-supply = <&pm8916_l8>;
+ qcom,vdd-voltage-level = <2900000 2900000>;
+ qcom,vdd-current-level = <200 400000>;
+
+ vdd-io-supply = <&pm8916_l5>;
+ qcom,vdd-io-always-on;
+ qcom,vdd-io-lpm-sup;
+ qcom,vdd-io-voltage-level = <1800000 1800000>;
+ qcom,vdd-io-current-level = <200 60000>;
+
+ pinctrl-names = "active", "sleep";
+ pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
+ pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
+
+ qcom,nonremovable;
+
+ status = "ok";
+};
+
+&sdhc_2 {
+ vdd-supply = <&pm8916_l11>;
+ qcom,vdd-voltage-level = <2800000 2950000>;
+ qcom,vdd-current-level = <15000 400000>;
+
+ vdd-io-supply = <&pm8916_l12>;
+ qcom,vdd-io-voltage-level = <1800000 2950000>;
+ qcom,vdd-io-current-level = <200 50000>;
+
+ pinctrl-names = "active", "sleep";
+ pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
+ pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
+
+ #address-cells = <0>;
+ interrupt-parent = <&sdhc_2>;
+ interrupts = <0 1 2>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0xffffffff>;
+ interrupt-map = <0 &intc 0 125 0
+ 1 &intc 0 221 0
+ 2 &msm_gpio 38 0>;
+ interrupt-names = "hc_irq", "pwr_irq", "status_irq";
+ cd-gpios = <&msm_gpio 38 0x1>;
+
+ status = "ok";
+};
+
+&pm8916_mpps {
+ mpp@a000 { /* MPP 1 */
+ /* VDD_PX */
+ status = "disabled";
+ };
+
+ mpp@a100 { /* MPP 2 */
+ /* HR LED */
+ status = "disabled";
+ };
+
+ mpp@a200 { /* MPP 3 */
+ /* VREF DAC */
+ status = "disabled";
+ };
+
+ mpp@a300 { /* MPP 4 */
+ /* Backlight PWM */
+ qcom,mode = <1>; /* Digital output */
+ qcom,invert = <0>; /* Disable invert */
+ qcom,src-sel = <4>; /* DTEST1 */
+ qcom,vin-sel = <0>; /* VPH_PWR */
+ qcom,master-en = <1>; /* Enable MPP */
+ };
+};
+
+&pm8916_gpios {
+ gpio@c000 { /* GPIO 1 */
+ /* Battery UICC Alarm */
+ status = "disabled";
+ };
+
+ gpio@c100 { /* GPIO 2 */
+ /* NFC_CLK_REQ */
+ qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
+ qcom,pull = <5>; /* QPNP_PIN_PULL_NO */
+ qcom,vin-sel = <2>; /* QPNP_PIN_VIN2 */
+ qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
+ qcom,master-en = <1>;
+ };
+
+ gpio@c200 { /* GPIO 3 */
+ /* External regulator control for WTR */
+ status = "disabled";
+ };
+
+ gpio@c300 { /* GPIO 4 */
+ /* External regulator control for APC */
+ status = "disabled";
+ };
+};
+
+#include "dsi-panel-jdi-1080p-video.dtsi"
+#include "dsi-panel-nt35590-720p-video.dtsi"
+#include "dsi-panel-nt35590-720p-cmd.dtsi"
+#include "dsi-panel-hx8394d-720p-video.dtsi"
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&dsi_jdi_1080_vid {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-pmic-bank-select = <0>;
+ qcom,mdss-dsi-pwm-gpio = <&pm8916_mpps 4 0>;
+ qcom,cont-splash-enabled;
+};
+
+&dsi_nt35590_720_vid {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-pmic-bank-select = <0>;
+ qcom,mdss-dsi-pwm-gpio = <&pm8916_mpps 4 0>;
+ qcom,cont-splash-enabled;
+ qcom,esd-check-enabled;
+};
+
+&dsi_nt35590_720_cmd {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-pmic-bank-select = <0>;
+ qcom,mdss-dsi-pwm-gpio = <&pm8916_mpps 4 0>;
+ qcom,cont-splash-enabled;
+ qcom,esd-check-enabled;
+};
+
+&dsi_hx8394d_720_vid {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-pmic-bank-select = <0>;
+ qcom,mdss-dsi-pwm-gpio = <&pm8916_mpps 4 0>;
+ qcom,cont-splash-enabled;
+};
+
+&mdss_dsi_active {
+ pinmux {
+ function = "gpio";
+ pins = "gpio97", "gpio25", "gpio98";
+ };
+ pinconf {
+ pins = "gpio97", "gpio25", "gpio98";
+ };
+};
+
+&mdss_dsi_suspend {
+ pinmux {
+ function = "gpio";
+ pins = "gpio97", "gpio25", "gpio98";
+ };
+ pinconf {
+ pins = "gpio97", "gpio25", "gpio98";
+ };
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_jdi_1080_vid>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
+
+ qcom,platform-enable-gpio = <&msm_gpio 97 0>;
+ qcom,platform-reset-gpio = <&msm_gpio 25 0>;
+ qcom,platform-bklight-en-gpio = <&msm_gpio 98 0>;
+};
+
+/* CoreSight */
+&tpiu {
+ pinctrl-names = "seta-pctrl", "setb-pctrl", "sdcard", "trace",
+ "swduart", "swdtrc", "jtag", "spmi";
+ /* Mictor */
+ pinctrl-0 = <&tpiu_seta>;
+ pinctrl-1 = <&tpiu_setb>;
+ /* NIDnT */
+ pinctrl-2 = <&qdsd_clk_sdcard &qdsd_cmd_sdcard
+ &qdsd_data0_sdcard &qdsd_data1_sdcard
+ &qdsd_data2_sdcard &qdsd_data3_sdcard>;
+ pinctrl-3 = <&qdsd_clk_trace &qdsd_cmd_trace
+ &qdsd_data0_trace &qdsd_data1_trace
+ &qdsd_data2_trace &qdsd_data3_trace>;
+ pinctrl-4 = <&qdsd_cmd_swduart &qdsd_data0_swduart
+ &qdsd_data1_swduart &qdsd_data2_swduart
+ &qdsd_data3_swduart>;
+ pinctrl-5 = <&qdsd_clk_swdtrc &qdsd_cmd_swdtrc
+ &qdsd_data0_swdtrc &qdsd_data1_swdtrc
+ &qdsd_data2_swdtrc &qdsd_data3_swdtrc>;
+ pinctrl-6 = <&qdsd_cmd_jtag &qdsd_data0_jtag
+ &qdsd_data1_jtag &qdsd_data2_jtag
+ &qdsd_data3_jtag>;
+ pinctrl-7 = <&qdsd_clk_spmi &qdsd_cmd_spmi
+ &qdsd_data0_spmi &qdsd_data3_spmi>;
+};
+
+&pm8916_chg {
+ status = "ok";
+ qcom,charging-disabled;
+ qcom,disable-follow-on-reset;
+};
+
+&pm8916_bms {
+ status = "ok";
+ qcom,disable-bms;
+};
+
+&spmi_bus {
+ qcom,pm8916@0 {
+ qcom,leds@a100 {
+ status = "okay";
+ qcom,led_mpp_2 {
+ label = "mpp";
+ linux,name = "button-backlight";
+ linux,default-trigger = "none";
+ qcom,default-state = "off";
+ qcom,max-current = <40>;
+ qcom,current-setting = <5>;
+ qcom,id = <6>;
+ qcom,mode = "manual";
+ qcom,source-sel = <1>;
+ qcom,mode-ctrl = <0x60>;
+ };
+ };
+ };
+};
+
+&qcom_tzlog {
+ status = "okay";
+};
+
+&qcom_rng {
+ status = "okay";
+};
+
+&qcom_crypto {
+ status = "okay";
+};
+
+&qcom_cedev {
+ status = "okay";
+};
+
+&qcom_seecom {
+ status = "okay";
+};
+
+&spmi_bus {
+ qcom,pm8916@1 {
+ qcom,vibrator@c000 {
+ status = "okay";
+ qcom,vib-timeout-ms = <15000>;
+ qcom,vib-vtg-level-mV = <3100>;
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-coresight.dtsi b/arch/arm64/boot/dts/qcom/msm8916-coresight.dtsi
new file mode 100644
index 00000000000..dc5c1b0f293
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-coresight.dtsi
@@ -0,0 +1,595 @@
+/* Copyright (c) 2013 - 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ tmc_etr: tmc@826000 {
+ compatible = "arm,coresight-tmc";
+ reg = <0x826000 0x1000>,
+ <0x884000 0x15000>;
+ reg-names = "tmc-base", "bam-base";
+ interrupts = <0 166 0>;
+ interrupt-names = "byte-cntr-irq";
+
+ qcom,memory-size = <0x100000>;
+ qcom,tmc-flush-powerdown;
+
+ coresight-id = <0>;
+ coresight-name = "coresight-tmc-etr";
+ coresight-nr-inports = <1>;
+ coresight-ctis = <&cti0 &cti8>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpiu: tpiu@820000 {
+ compatible = "arm,coresight-tpiu";
+ reg = <0x820000 0x1000>,
+ <0x1100000 0xb0000>;
+ reg-names = "tpiu-base", "nidnt-base";
+
+ coresight-id = <1>;
+ coresight-name = "coresight-tpiu";
+ coresight-nr-inports = <1>;
+
+ qcom,nidnthw;
+ qcom,nidnt-swduart;
+ qcom,nidnt-swdtrc;
+ qcom,nidnt-jtag;
+ qcom,nidnt-spmi;
+ nidnt-gpio = <38>;
+ nidnt-gpio-polarity = <1>;
+
+ interrupts = <0 82 0>;
+ interrupt-names = "nidnt-irq";
+
+ vdd-supply = <&pm8916_l11>;
+ qcom,vdd-voltage-level = <2950000 2950000>;
+ qcom,vdd-current-level = <15000 400000>;
+
+ vdd-io-supply = <&pm8916_l12>;
+ qcom,vdd-io-voltage-level = <2950000 2950000>;
+ qcom,vdd-io-current-level = <200 50000>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ replicator: replicator@824000 {
+ compatible = "qcom,coresight-replicator";
+ reg = <0x824000 0x1000>;
+ reg-names = "replicator-base";
+
+ coresight-id = <2>;
+ coresight-name = "coresight-replicator";
+ coresight-nr-inports = <1>;
+ coresight-outports = <0 1>;
+ coresight-child-list = <&tmc_etr &tpiu>;
+ coresight-child-ports = <0 0>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tmc_etf: tmc@825000 {
+ compatible = "arm,coresight-tmc";
+ reg = <0x825000 0x1000>;
+ reg-names = "tmc-base";
+
+ coresight-id = <3>;
+ coresight-name = "coresight-tmc-etf";
+ coresight-nr-inports = <1>;
+ coresight-outports = <0>;
+ coresight-child-list = <&replicator>;
+ coresight-child-ports = <0>;
+ coresight-default-sink;
+ coresight-ctis = <&cti0 &cti8>;
+
+ qcom,tmc-flush-powerdown;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_in0: funnel@821000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x821000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <4>;
+ coresight-name = "coresight-funnel-in0";
+ coresight-nr-inports = <8>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tmc_etf>;
+ coresight-child-ports = <0>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_apss: funnel@841000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x841000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <5>;
+ coresight-name = "coresight-funnel-apss";
+ coresight-nr-inports = <4>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <4>;
+
+ qcom,funnel-save-restore;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_in2: funnel@869000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x869000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <6>;
+ coresight-name = "coresight-funnel-in2";
+ coresight-nr-inports = <8>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <6>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_in3: funnel@868000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x868000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <7>;
+ coresight-name = "coresight-funnel-in3";
+ coresight-nr-inports = <2>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in2>;
+ coresight-child-ports = <7>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ stm: stm@802000 {
+ compatible = "arm,coresight-stm";
+ reg = <0x802000 0x1000>,
+ <0x9280000 0x180000>;
+ reg-names = "stm-base", "stm-data-base";
+
+ coresight-id = <8>;
+ coresight-name = "coresight-stm";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <7>;
+
+ qcom,data-barrier;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ csr: csr@801000 {
+ compatible = "qcom,coresight-csr";
+ reg = <0x801000 0x1000>;
+ reg-names = "csr-base";
+
+ coresight-id = <9>;
+ coresight-name = "coresight-csr";
+ coresight-nr-inports = <0>;
+
+ qcom,blk-size = <1>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm0: etm@85c000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0x85c000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <10>;
+ coresight-name = "coresight-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss>;
+ coresight-child-ports = <0>;
+ coresight-etm-cpu = <&CPU0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm1: etm@85d000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0x85d000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <11>;
+ coresight-name = "coresight-etm1";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss>;
+ coresight-child-ports = <1>;
+ coresight-etm-cpu = <&CPU1>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm2: etm@85e000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0x85e000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <12>;
+ coresight-name = "coresight-etm2";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss>;
+ coresight-child-ports = <2>;
+ coresight-etm-cpu = <&CPU2>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm3: etm@85f000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0x85f000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <13>;
+ coresight-name = "coresight-etm3";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss>;
+ coresight-child-ports = <3>;
+ coresight-etm-cpu = <&CPU3>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ rpm_etm0 {
+ compatible = "qcom,coresight-rpm-etm";
+
+ coresight-id = <14>;
+ coresight-name = "coresight-rpm-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <0>;
+ };
+
+ wcn_etm0 {
+ compatible = "qcom,coresight-wcn-etm";
+
+ coresight-id = <15>;
+ coresight-name = "coresight-wcn-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in3>;
+ coresight-child-ports = <0>;
+ };
+
+ modem_etm0 {
+ compatible = "qcom,coresight-modem-etm";
+
+ coresight-id = <16>;
+ coresight-name = "coresight-modem-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <2>;
+ };
+
+ cti0: cti@810000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x810000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <17>;
+ coresight-name = "coresight-cti0";
+ coresight-nr-inports = <0>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti1: cti@811000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x811000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <18>;
+ coresight-name = "coresight-cti1";
+ coresight-nr-inports = <0>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti2: cti@812000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x812000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <19>;
+ coresight-name = "coresight-cti2";
+ coresight-nr-inports = <0>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti3: cti@813000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x813000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <20>;
+ coresight-name = "coresight-cti3";
+ coresight-nr-inports = <0>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti4: cti@814000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x814000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <21>;
+ coresight-name = "coresight-cti4";
+ coresight-nr-inports = <0>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti5: cti@815000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x815000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <22>;
+ coresight-name = "coresight-cti5";
+ coresight-nr-inports = <0>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti6: cti@816000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x816000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <23>;
+ coresight-name = "coresight-cti6";
+ coresight-nr-inports = <0>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti7: cti@817000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x817000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <24>;
+ coresight-name = "coresight-cti7";
+ coresight-nr-inports = <0>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti8: cti@818000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x818000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <25>;
+ coresight-name = "coresight-cti8";
+ coresight-nr-inports = <0>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_cpu0: cti@858000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x858000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <26>;
+ coresight-name = "coresight-cti-cpu0";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,cti-save;
+ };
+
+ cti_cpu1: cti@859000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x859000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <27>;
+ coresight-name = "coresight-cti-cpu1";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU1>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,cti-save;
+ };
+
+ cti_cpu2: cti@85a000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x85a000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <28>;
+ coresight-name = "coresight-cti-cpu2";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU2>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,cti-save;
+ };
+
+ cti_cpu3: cti@85b000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x85b000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <29>;
+ coresight-name = "coresight-cti-cpu3";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU3>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,cti-save;
+ };
+
+ cti_video_cpu0: cti@830000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x830000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <30>;
+ coresight-name = "coresight-cti-video-cpu0";
+ coresight-nr-inports = <0>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_wcn_cpu0: cti@835000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x835000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <31>;
+ coresight-name = "coresight-cti-wcn-cpu0";
+ coresight-nr-inports = <0>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_modem_cpu0: cti@838000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x838000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <32>;
+ coresight-name = "coresight-cti-modem-cpu0";
+ coresight-nr-inports = <0>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_rpm_cpu0: cti@83c000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x83c000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <33>;
+ coresight-name = "coresight-cti-rpm-cpu0";
+ coresight-nr-inports = <0>;
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ fuse: fuse@5e01c {
+ compatible = "arm,coresight-fuse-v2";
+ reg = <0x5e01c 0x8>,
+ <0x58040 0x4>,
+ <0x5e00c 0x4>;
+ reg-names = "fuse-base", "nidnt-fuse-base", "qpdi-fuse-base";
+
+ coresight-id = <34>;
+ coresight-name = "coresight-fuse";
+ coresight-nr-inports = <0>;
+ };
+
+ hwevent: hwevent@86c000 {
+ compatible = "qcom,coresight-hwevent";
+ reg = <0x86c000 0x108>,
+ <0x86cfb0 0x4>,
+ <0x200c000 0x28>,
+ <0x78c5010 0x4>,
+ <0x7885010 0x4>;
+ reg-names = "wrapper-mux", "wrapper-lockaccess", "spmi-mux",
+ "usbbam-mux", "blsp-mux";
+ coresight-id = <35>;
+ coresight-name = "coresight-hwevent";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ qpdi: qpdi@1941000 {
+ compatible = "qcom,coresight-qpdi";
+ reg = <0x1941000 0x4>;
+ reg-names = "qpdi-base";
+
+ coresight-id = <36>;
+ coresight-name = "coresight-qpdi";
+ coresight-nr-inports = <0>;
+
+ vdd-supply = <&pm8916_l11>;
+ qcom,vdd-voltage-level = <2950000 2950000>;
+ qcom,vdd-current-level = <15000 400000>;
+
+ vdd-io-supply = <&pm8916_l12>;
+ qcom,vdd-io-voltage-level = <2950000 2950000>;
+ qcom,vdd-io-current-level = <200 50000>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-gpu.dtsi b/arch/arm64/boot/dts/qcom/msm8916-gpu.dtsi
new file mode 100644
index 00000000000..e4690c606ed
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-gpu.dtsi
@@ -0,0 +1,109 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ msm_gpu: qcom,kgsl-3d0@01c00000 {
+ label = "kgsl-3d0";
+ compatible = "qcom,kgsl-3d0", "qcom,kgsl-3d";
+ reg = <0x01c00000 0x10000
+ 0x01c10000 0x10000>;
+ reg-names = "kgsl_3d0_reg_memory" , "kgsl_3d0_shader_memory";
+ interrupts = <0 33 0>;
+ interrupt-names = "kgsl_3d0_irq";
+ qcom,id = <0>;
+
+ qcom,chipid = <0x03000600>;
+
+ qcom,initial-pwrlevel = <1>;
+
+ /* Idle Timeout = HZ/12 */
+ qcom,idle-timeout = <8>;
+ qcom,strtstp-sleepwake;
+
+ /*
+ * Clocks = KGSL_CLK_CORE | KGSL_CLK_IFACE | KGSL_CLK_MEM |
+ * KGSL_CLK_MEM_IFACE | KGSL_CLK_ALT_MEM_IFACE
+ */
+ qcom,clk-map = <0x0000005E>;
+ clocks = <&clock_gcc clk_gcc_oxili_gfx3d_clk>,
+ <&clock_gcc clk_gcc_oxili_ahb_clk>,
+ <&clock_gcc clk_gcc_oxili_gmem_clk>,
+ <&clock_gcc clk_gcc_bimc_gfx_clk>,
+ <&clock_gcc clk_gcc_bimc_gpu_clk>,
+ <&clock_gcc clk_gcc_gtcu_ahb_clk>;
+ clock-names = "core_clk", "iface_clk", "mem_clk",
+ "mem_iface_clk", "alt_mem_iface_clk",
+ "gtcu_iface_clk";
+
+ /* Bus Scale Settings */
+ qcom,msm-bus,name = "grp3d";
+ qcom,msm-bus,num-cases = <4>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <26 512 0 0>,
+ <26 512 160000 1600000>,
+ <26 512 800000 3200000>,
+ <26 512 1066000 4264000>;
+
+ /* GDSC oxili regulators */
+ vdd-supply = <&gdsc_oxili_gx>;
+
+ /* IOMMU Data */
+ iommu = <&gfx_iommu>;
+
+ /* Trace bus */
+ coresight-id = <67>;
+ coresight-name = "coresight-gfx";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <5>;
+
+ /* CPU latency parameter */
+ qcom,pm-qos-active-latency = <701>;
+ qcom,pm-qos-wakeup-latency = <701>;
+
+ /* Power levels */
+ qcom,gpu-pwrlevels {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ compatible = "qcom,gpu-pwrlevels";
+
+ qcom,gpu-pwrlevel@0 {
+ reg = <0>;
+ qcom,gpu-freq = <400000000>;
+ qcom,bus-freq = <3>;
+ };
+
+ qcom,gpu-pwrlevel@1 {
+ reg = <1>;
+ qcom,gpu-freq = <310000000>;
+ qcom,bus-freq = <2>;
+ };
+
+ qcom,gpu-pwrlevel@2 {
+ reg = <2>;
+ qcom,gpu-freq = <200000000>;
+ qcom,bus-freq = <1>;
+ };
+
+ qcom,gpu-pwrlevel@3 {
+ reg = <3>;
+ qcom,gpu-freq = <19200000>;
+ qcom,bus-freq = <0>;
+ };
+ };
+
+ };
+};
+
diff --git a/arch/arm64/boot/dts/qcom/msm8916-iommu-domains.dtsi b/arch/arm64/boot/dts/qcom/msm8916-iommu-domains.dtsi
new file mode 100644
index 00000000000..71cbb82ad1f
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-iommu-domains.dtsi
@@ -0,0 +1,59 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ qcom,iommu-domains {
+ compatible = "qcom,iommu-domains";
+
+ /*
+ * non-secure addr pool from 1500 MB to 3532 MB
+ * 3532 MB to 3548 MB
+ */
+ venus_domain_ns: qcom,iommu-domain1 {
+ label = "venus_ns";
+ qcom,iommu-contexts = <&venus_ns>;
+ qcom,virtual-addr-pool = <0x5dc00000 0x7f000000
+ 0xdcc00000 0x1000000>;
+ };
+
+ /*
+ * secure bitstream addr pool from 1200 MB to 1500 MB
+ */
+ venus_domain_sec_bitstream: qcom,iommu-domain2 {
+ label = "venus_sec_bitstream";
+ qcom,iommu-contexts = <&venus_sec_bitstream>;
+ qcom,virtual-addr-pool = <0x4b000000 0x12c00000>;
+ qcom,secure-domain;
+ };
+
+ /*
+ * secure pixel addr pool from 616 MB to 1200 MB
+ */
+ venus_domain_sec_pixel: qcom,iommu-domain3 {
+ label = "venus_sec_pixel";
+ qcom,iommu-contexts = <&venus_sec_pixel>;
+ qcom,virtual-addr-pool = <0x25800000 0x25800000>;
+ qcom,secure-domain;
+ };
+
+ /*
+ * secure non-pixel addr pool from 16 MB to 616 MB
+ */
+ venus_domain_sec_non_pixel: qcom,iommu-domain4 {
+ label = "venus_sec_non_pixel";
+ qcom,iommu-contexts = <&venus_sec_non_pixel>;
+ qcom,virtual-addr-pool = <0x1000000 0x24800000>;
+ qcom,secure-domain;
+ };
+
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-iommu.dtsi b/arch/arm64/boot/dts/qcom/msm8916-iommu.dtsi
new file mode 100644
index 00000000000..82acb8df2a8
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-iommu.dtsi
@@ -0,0 +1,21 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "msm-iommu-v2.dtsi"
+
+&gfx_iommu {
+ status = "ok";
+};
+
+&apps_iommu {
+ status = "ok";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-ion.dtsi b/arch/arm64/boot/dts/qcom/msm8916-ion.dtsi
new file mode 100644
index 00000000000..687ab920114
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-ion.dtsi
@@ -0,0 +1,64 @@
+/* Copyright (c) 2014, Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ qcom,ion {
+ compatible = "qcom,msm-ion";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,ion-heap@25 {
+ reg = <25>;
+ qcom,ion-heap-type = "SYSTEM";
+ };
+
+ qcom,ion-heap@21 {
+ reg = <21>;
+ qcom,ion-heap-type = "SYSTEM_CONTIG";
+ };
+
+ qcom,ion-heap@8 { /* CP_MM HEAP */
+ compatible = "qcom,msm-ion-reserve";
+ reg = <8>;
+ memory-region = <&secure_mem>;
+ qcom,ion-heap-type = "SECURE_DMA";
+ };
+
+ qcom,ion-heap@27 { /* QSEECOM HEAP */
+ compatible = "qcom,msm-ion-reserve";
+ reg = <27>;
+ memory-region = <&venus_qseecom_mem>;
+ qcom,ion-heap-type = "DMA";
+ };
+
+ qcom,ion-heap@28 { /* AUDIO HEAP */
+ compatible = "qcom,msm-ion-reserve";
+ reg = <28>;
+ memory-region = <&audio_mem>;
+ qcom,ion-heap-type = "DMA";
+ };
+
+ qcom,ion-heap@23 { /* OTHER PIL HEAP */
+ compatible = "qcom,msm-ion-reserve";
+ reg = <23>;
+ memory-region = <&peripheral_mem>;
+ qcom,ion-heap-type = "DMA";
+ };
+
+ qcom,ion-heap@26 { /* MODEM HEAP */
+ compatible = "qcom,msm-ion-reserve";
+ reg = <26>;
+ memory-region = <&modem_adsp_mem>;
+ qcom,ion-heap-type = "DMA";
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-ipcrouter.dtsi b/arch/arm64/boot/dts/qcom/msm8916-ipcrouter.dtsi
new file mode 100644
index 00000000000..3b59d159ea8
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-ipcrouter.dtsi
@@ -0,0 +1,37 @@
+/* Copyright (c) 2013, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ qcom,ipc_router {
+ compatible = "qcom,ipc_router";
+ qcom,node-id = <1>;
+ };
+
+ qcom,ipc_router_modem_xprt {
+ compatible = "qcom,ipc_router_smd_xprt";
+ qcom,ch-name = "IPCRTR";
+ qcom,xprt-remote = "modem";
+ qcom,xprt-linkid = <1>;
+ qcom,xprt-version = <1>;
+ qcom,fragmented-data;
+ };
+
+ qcom,ipc_router_wcnss_xprt {
+ compatible = "qcom,ipc_router_smd_xprt";
+ qcom,ch-name = "IPCRTR";
+ qcom,xprt-remote = "wcnss";
+ qcom,xprt-linkid = <1>;
+ qcom,xprt-version = <1>;
+ qcom,fragmented-data;
+ };
+
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-mdss-pll.dtsi b/arch/arm64/boot/dts/qcom/msm8916-mdss-pll.dtsi
new file mode 100644
index 00000000000..51e8cd9a9ad
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-mdss-pll.dtsi
@@ -0,0 +1,53 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ mdss_dsi0_pll: qcom,mdss_dsi_pll@1a98300 {
+ compatible = "qcom,mdss_dsi_pll_8916";
+ label = "MDSS DSI 0 PLL";
+ cell-index = <0>;
+ #clock-cells = <1>;
+
+ reg = <0x1a98300 0xd4>, <0x0184d074 0x8>;
+ reg-names = "pll_base", "gdsc_base";
+
+ gdsc-supply = <&gdsc_mdss>;
+ vddio-supply = <&pm8916_l6>;
+
+ clocks = <&clock_gcc clk_gcc_mdss_ahb_clk>;
+ clock-names = "iface_clk";
+ clock-rate = <0>;
+
+ qcom,platform-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,platform-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "gdsc";
+ qcom,supply-min-voltage = <0>;
+ qcom,supply-max-voltage = <0>;
+ qcom,supply-enable-load = <0>;
+ qcom,supply-disable-load = <0>;
+ };
+
+ qcom,platform-supply-entry@1 {
+ reg = <1>;
+ qcom,supply-name = "vddio";
+ qcom,supply-min-voltage = <1800000>;
+ qcom,supply-max-voltage = <1800000>;
+ qcom,supply-enable-load = <100000>;
+ qcom,supply-disable-load = <100>;
+ };
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-mdss.dtsi b/arch/arm64/boot/dts/qcom/msm8916-mdss.dtsi
new file mode 100644
index 00000000000..02d82bb6456
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-mdss.dtsi
@@ -0,0 +1,210 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ mdss_mdp: qcom,mdss_mdp@1a00000 {
+ compatible = "qcom,mdss_mdp";
+ reg = <0x1a00000 0x90000>,
+ <0x1ac8000 0x3000>;
+ reg-names = "mdp_phys", "vbif_phys";
+ interrupts = <0 72 0>;
+ vdd-supply = <&gdsc_mdss>;
+
+ /* Bus Scale Settings */
+ qcom,msm-bus,name = "mdss_mdp";
+ qcom,msm-bus,num-cases = <3>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <22 512 0 0>,
+ <22 512 0 6400000>,
+ <22 512 0 6400000>;
+
+ /* Fudge factors */
+ qcom,mdss-ab-factor = <1 1>; /* 1 time */
+ qcom,mdss-ib-factor = <2 1>; /* 2 times */
+ qcom,mdss-clk-factor = <105 100>; /* 1.05 times */
+ qcom,max-bandwidth-low-kbps = <1100000>;
+ qcom,max-bandwidth-high-kbps = <1100000>;
+
+ /* VBIF QoS remapper settings*/
+ qcom,mdss-vbif-qos-rt-setting = <2 2 2 2>;
+ qcom,mdss-vbif-qos-nrt-setting = <1 1 1 1>;
+ qcom,max-mixer-width = <2048>;
+ qcom,mdss-mdp-reg-offset = <0x00001000>;
+ qcom,max-clk-rate = <320000000>;
+ qcom,mdss-pipe-vig-off = <0x00005000>;
+ qcom,mdss-pipe-rgb-off = <0x00015000 0x00017000>;
+ qcom,mdss-pipe-dma-off = <0x00025000>;
+ qcom,mdss-pipe-vig-fetch-id = <1>;
+ qcom,mdss-pipe-rgb-fetch-id = <7 8>;
+ qcom,mdss-pipe-dma-fetch-id = <4>;
+
+ qcom,mdss-pipe-vig-xin-id = <0>;
+ qcom,mdss-pipe-rgb-xin-id = <1 5>;
+ qcom,mdss-pipe-dma-xin-id = <2>;
+ qcom,mdss-pipe-vig-clk-ctrl-offsets = <0x2ac 0 0>;
+ qcom,mdss-pipe-rgb-clk-ctrl-offsets = <0x2ac 4 8>,
+ <0x2b4 4 8>;
+ qcom,mdss-pipe-dma-clk-ctrl-offsets = <0x2ac 8 12>;
+
+ qcom,mdss-smp-data = <8 8192>;
+
+ qcom,mdss-ctl-off = <0x00002000 0x00002200 0x00002400>;
+ qcom,mdss-mixer-intf-off = <0x00045000>;
+ qcom,mdss-mixer-wb-off = <0x00048000>;
+ qcom,mdss-dspp-off = <0x00055000>;
+ qcom,mdss-pingpong-off = <0x00071000>;
+ qcom,mdss-wb-off = <0x00065000 0x00065800 0x00066000>;
+ qcom,mdss-intf-off = <0x00000000 0x0006b800>;
+ qcom,mdss-rot-block-size = <64>;
+ qcom,mdss-wfd-mode = "dedicated";
+ qcom,mdss-has-non-scalar-rgb;
+ qcom,mdss-has-decimation;
+ qcom,mdss-traffic-shaper-enabled;
+ qcom,mdss-no-hist-vote;
+
+ vdd-cx-supply = <&pm8916_s1_corner>;
+ clocks = <&clock_gcc clk_gcc_mdss_ahb_clk>,
+ <&clock_gcc clk_gcc_mdss_axi_clk>,
+ <&clock_gcc clk_mdp_clk_src>,
+ <&clock_gcc clk_gcc_mdss_mdp_clk>,
+ <&clock_gcc clk_gcc_mdss_vsync_clk>;
+ clock-names = "iface_clk", "bus_clk", "core_clk_src",
+ "core_clk", "vsync_clk";
+ qcom,mdp-settings = <0x000011e4 0x00000000>,
+ <0x00065048 0x00000008>,
+ <0x00065848 0x00000008>,
+ <0x00066048 0x00000008>;
+
+ /* buffer parameters to calculate prefill bandwidth */
+ qcom,mdss-prefill-outstanding-buffer-bytes = <1024>;
+ qcom,mdss-prefill-y-buffer-bytes = <0>;
+ qcom,mdss-prefill-scaler-buffer-lines-bilinear = <2>;
+ qcom,mdss-prefill-scaler-buffer-lines-caf = <4>;
+ qcom,mdss-prefill-post-scaler-buffer-pixels = <0>;
+ qcom,mdss-prefill-pingpong-buffer-pixels = <4096>;
+ qcom,mdss-prefill-fbc-lines = <0>;
+
+ mdss_fb0: qcom,mdss_fb_primary {
+ cell-index = <0>;
+ compatible = "qcom,mdss-fb";
+ qcom,cont-splash-memory {
+ linux,contiguous-region = <&cont_splash_mem>;
+ };
+ };
+
+ mdss_fb1: qcom,mdss_fb_wfd {
+ cell-index = <1>;
+ compatible = "qcom,mdss-fb";
+ };
+ };
+
+ mdss_dsi0: qcom,mdss_dsi@1a98000 {
+ compatible = "qcom,mdss-dsi-ctrl";
+ label = "MDSS DSI CTRL->0";
+ cell-index = <0>;
+ reg = <0x1a98000 0x25c>,
+ <0x1a98500 0x280>,
+ <0x1a98780 0x30>,
+ <0x193e000 0x30>;
+ reg-names = "dsi_ctrl", "dsi_phy", "dsi_phy_regulator", "mmss_misc_phys";
+ qcom,mdss-fb-map = <&mdss_fb0>;
+ qcom,mdss-mdp = <&mdss_mdp>;
+ gdsc-supply = <&gdsc_mdss>;
+ vdda-supply = <&pm8916_l2>;
+ vdd-supply = <&pm8916_l17>;
+ vddio-supply = <&pm8916_l6>;
+ clocks = <&clock_gcc clk_gcc_mdss_mdp_clk>,
+ <&clock_gcc clk_gcc_mdss_ahb_clk>,
+ <&clock_gcc clk_gcc_mdss_axi_clk>,
+ <&clock_gcc_mdss clk_gcc_mdss_byte0_clk>,
+ <&clock_gcc_mdss clk_gcc_mdss_pclk0_clk>,
+ <&clock_gcc clk_gcc_mdss_esc0_clk>;
+ clock-names = "mdp_core_clk", "iface_clk", "bus_clk",
+ "byte_clk", "pixel_clk", "core_clk";
+ qcom,platform-strength-ctrl = [ff 06];
+ qcom,platform-bist-ctrl = [00 00 b1 ff 00 00];
+ qcom,platform-regulator-settings = [03 08 07 00 20 07 01];
+ qcom,platform-lane-config = [00 00 00 00 00 00 00 01 97
+ 00 00 00 00 05 00 00 01 97
+ 00 00 00 00 0a 00 00 01 97
+ 00 00 00 00 0f 00 00 01 97
+ 00 c0 00 00 00 00 00 01 bb];
+
+ qcom,mmss-ulp-clamp-ctrl-offset = <0x20>;
+ qcom,mmss-phyreset-ctrl-offset = <0x24>;
+ qcom,timing-db-mode;
+
+ qcom,core-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,core-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "gdsc";
+ qcom,supply-min-voltage = <0>;
+ qcom,supply-max-voltage = <0>;
+ qcom,supply-enable-load = <0>;
+ qcom,supply-disable-load = <0>;
+ };
+ };
+
+ qcom,ctrl-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,ctrl-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "vdda";
+ qcom,supply-min-voltage = <1200000>;
+ qcom,supply-max-voltage = <1200000>;
+ qcom,supply-enable-load = <100000>;
+ qcom,supply-disable-load = <100>;
+ qcom,supply-post-on-sleep = <20>;
+ };
+ };
+
+ qcom,panel-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,panel-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "vdd";
+ qcom,supply-min-voltage = <2850000>;
+ qcom,supply-max-voltage = <2850000>;
+ qcom,supply-enable-load = <100000>;
+ qcom,supply-disable-load = <100>;
+ };
+
+ qcom,panel-supply-entry@1 {
+ reg = <1>;
+ qcom,supply-name = "vddio";
+ qcom,supply-min-voltage = <1800000>;
+ qcom,supply-max-voltage = <1800000>;
+ qcom,supply-enable-load = <100000>;
+ qcom,supply-disable-load = <100>;
+ };
+ };
+ };
+
+ qcom,mdss_wb_panel {
+ compatible = "qcom,mdss_wb";
+ qcom,mdss_pan_res = <1280 720>;
+ qcom,mdss_pan_bpp = <24>;
+ qcom,mdss-fb-map = <&mdss_fb1>;
+ };
+};
+
+#include "dsi-panel-sim-video.dtsi"
+#include "dsi-panel-sim-cmd.dtsi"
+
diff --git a/arch/arm64/boot/dts/qcom/msm8916-memory.dtsi b/arch/arm64/boot/dts/qcom/msm8916-memory.dtsi
new file mode 100644
index 00000000000..4d48bed7189
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-memory.dtsi
@@ -0,0 +1,65 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "msm8916-ion.dtsi"
+
+/ {
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ external_image_mem: external_image_region@86000000 {
+ compatible = "removed-dma-pool";
+ no-map;
+ reg = <0x0 0x86000000 0x0 0x0800000>;
+ };
+
+ modem_adsp_mem: modem_adsp_region@86800000 {
+ compatible = "removed-dma-pool";
+ no-map;
+ reg = <0x0 0x86800000 0x0 0x04e00000>;
+ };
+
+ peripheral_mem: peripheral_region@8b600000 {
+ compatible = "removed-dma-pool";
+ no-map;
+ reg = <0x0 0x8b600000 0x0 0x0600000>;
+ };
+
+ secure_mem: secure_region {
+ compatible = "shared-dma-pool";
+ reusable;
+ alignment = <0 0x400000>;
+ size = <0 0x7000000>;
+ };
+
+ venus_qseecom_mem: venus_qseecom_region {
+ compatible = "shared-dma-pool";
+ alloc-ranges = <0 0x80000000 0 0x10000000>;
+ reusable;
+ alignment = <0 0x400000>;
+ size = <0 0x1400000>;
+ };
+
+ audio_mem: audio_region {
+ compatible = "shared-dma-pool";
+ reusable;
+ alignment = <0 0x400000>;
+ size = <0 0x400000>;
+ };
+
+ cont_splash_mem: splash_region@83000000 {
+ reg = <0x0 0x83000000 0x0 0x1200000>;
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-mtp-smb1360.dts b/arch/arm64/boot/dts/qcom/msm8916-mtp-smb1360.dts
new file mode 100644
index 00000000000..f6c9a6c69b2
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-mtp-smb1360.dts
@@ -0,0 +1,62 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License version 2 and
+* only version 2 as published by the Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*/
+
+/dts-v1/;
+
+#include "msm8916-mtp.dtsi"
+#include "msm8916-memory.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8916 SMB1360 MTP";
+ compatible = "qcom,msm8916-mtp", "qcom,msm8916", "qcom,mtp";
+ qcom,board-id = <8 1>;
+};
+
+&soc {
+ i2c@78b8000 {
+ smb1360_otg_supply: smb1360-chg-fg@14 {
+ compatible = "qcom,smb1360-chg-fg";
+ reg = <0x14>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <62 8>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&smb_int_default>;
+ regulator-name = "smb1360_otg_vreg";
+
+ qcom,empty-soc-disabled;
+ qcom,chg-inhibit-disabled;
+ qcom,float-voltage-mv = <4200>;
+ qcom,iterm-ma = <200>;
+ qcom,charging-disabled;
+ qcom,recharge-thresh-mv = <100>;
+ qcom,thermal-mitigation = <1500 700 600 0>;
+ };
+ };
+};
+
+&usb_otg {
+ qcom,hsusb-otg-mode = <3>;
+ qcom,usbid-gpio = <&msm_gpio 110 0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&usbid_default>;
+ vbus_otg-supply = <&smb1360_otg_supply>;
+};
+
+&pm8916_chg {
+ status = "ok";
+ qcom,use-external-charger;
+};
+
+&pm8916_bms {
+ status = "ok";
+ qcom,disable-bms;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-mtp.dts b/arch/arm64/boot/dts/qcom/msm8916-mtp.dts
new file mode 100644
index 00000000000..ffe476243f9
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-mtp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License version 2 and
+* only version 2 as published by the Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*/
+
+/dts-v1/;
+
+#include "msm8916-mtp.dtsi"
+#include "msm8916-memory.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8916 MTP";
+ compatible = "qcom,msm8916-mtp", "qcom,msm8916", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
+
diff --git a/arch/arm64/boot/dts/qcom/msm8916-mtp.dtsi b/arch/arm64/boot/dts/qcom/msm8916-mtp.dtsi
new file mode 100644
index 00000000000..0884b8b63e0
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-mtp.dtsi
@@ -0,0 +1,464 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "msm8916.dtsi"
+#include "msm8916-pinctrl.dtsi"
+#include "msm8916-camera-sensor-mtp.dtsi"
+
+/ {
+ aliases {
+ serial0 = &blsp1_uart2;
+ };
+};
+
+&soc {
+ i2c@78b9000 { /* BLSP1 QUP5 */
+ synaptics@20 {
+ compatible = "synaptics,rmi4";
+ reg = <0x20>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <13 0x2008>;
+ vdd-supply = <&pm8916_l17>;
+ vcc_i2c-supply = <&pm8916_l6>;
+ /* pins used by touchscreen */
+ pinctrl-names = "pmx_ts_active","pmx_ts_suspend","pmx_ts_suspend";
+ pinctrl-0 = <&ts_int_active &ts_reset_active>;
+ pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;
+ pinctrl-2 = <&ts_release>;
+ synaptics,display-coords = <0 0 1079 1919>;
+ synaptics,panel-coords = <0 0 1079 2084>;
+ synaptics,irq-gpio = <&msm_gpio 13 0x2008>;
+ synaptics,reset-gpio = <&msm_gpio 12 0x0>;
+ synaptics,i2c-pull-up;
+ synaptics,power-down;
+ synaptics,disable-gpios;
+ /* Underlying clocks used by secure touch */
+ clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp1_qup5_i2c_apps_clk>;
+ clock-names = "iface_clk", "core_clk";
+ };
+ };
+
+ gen-vkeys {
+ compatible = "qcom,gen-vkeys";
+ label = "synaptics_rmi4_i2c";
+ qcom,disp-maxx = <1079>;
+ qcom,disp-maxy = <1919>;
+ qcom,panel-maxx = <1079>;
+ qcom,panel-maxy = <2084>;
+ qcom,key-codes = <158 139 172 217>;
+ };
+
+ i2c@78ba000 { /* BLSP1 QUP6 */
+ nfc-nci@e {
+ compatible = "qcom,nfc-nci";
+ reg = <0x0e>;
+ qcom,irq-gpio = <&msm_gpio 21 0x00>;
+ qcom,dis-gpio = <&msm_gpio 20 0x00>;
+ qcom,clk-src = "BBCLK2";
+ qcom,clk-en-gpio = <&msm_gpio 0 0x00>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <21 0>;
+ interrupt-names = "nfc_irq";
+ pinctrl-names = "nfc_active","nfc_suspend";
+ pinctrl-0 = <&nfc_int_active &nfc_disable_active>;
+ pinctrl-1 = <&nfc_int_suspend &nfc_disable_suspend>;
+ qcom,clk-gpio = <&pm8916_gpios 2 0>;
+ clocks = <&clock_rpm clk_bb_clk2_pin>;
+ clock-names = "ref_clk";
+ };
+ };
+
+ i2c@78b6000 { /* BLSP1 QUP2 */
+ mpu6050@68 { /* Gyroscope and accelerometer sensor combo */
+ compatible = "invn,mpu6050";
+ reg = <0x68>;
+ pinctrl-names = "mpu_default","mpu_sleep";
+ pinctrl-0 = <&mpu6050_default>;
+ pinctrl-1 = <&mpu6050_sleep>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <115 0x2>;
+ vdd-supply = <&pm8916_l17>;
+ vlogic-supply = <&pm8916_l16>;
+ vi2c-supply = <&pm8916_l6>;
+ invn,gpio-int = <&msm_gpio 115 0x2>;
+ invn,place = "Portrait Down Back Side";
+ };
+
+ avago@39 { /* Ambient light and proximity sensor */
+ compatible = "avago,apds9900";
+ reg = <0x39>;
+ pinctrl-names = "default","sleep";
+ pinctrl-0 = <&apds99xx_default>;
+ pinctrl-1 = <&apds99xx_sleep>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <113 0x2002>;
+ vdd-supply = <&pm8916_l17>;
+ vio-supply = <&pm8916_l6>;
+ avago,irq-gpio = <&msm_gpio 113 0x2002>;
+ avago,ps-threshold = <600>;
+ avago,ps-hysteresis-threshold = <500>;
+ avago,ps-pulse = <8>;
+ avago,ps-pgain = <0>;
+ avago,als-B = <223>;
+ avago,als-C = <70>;
+ avago,als-D = <142>;
+ avago,ga-value = <48>;
+ };
+
+ akm@c {
+ compatible = "ak,ak8963";
+ reg = <0x0c>;
+ pinctrl-names = "ak8963_default", "ak8963_sleep";
+ pinctrl-0 = <&ak8963_default>;
+ pinctrl-1 = <&ak8963_sleep>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <69 0x2>;
+ vdd-supply = <&pm8916_l17>;
+ vio-supply = <&pm8916_l6>;
+ ak,layout = <0x6>;
+ ak,auto-report;
+ };
+
+ };
+
+ sound {
+ compatible = "qcom,msm8x16-audio-codec";
+ qcom,model = "msm8x16-snd-card-mtp";
+ qcom,msm-snd-card-id = <0>;
+ qcom,msm-codec-type = "internal";
+ qcom,msm-ext-pa = "primary";
+ qcom,msm-mclk-freq = <9600000>;
+ qcom,msm-mbhc-hphl-swh = <0>;
+ qcom,msm-mbhc-gnd-swh = <0>;
+ qcom,msm-micbias1-ext-cap;
+ qcom,msm-hs-micbias-type = "internal";
+ qcom,audio-routing =
+ "RX_BIAS", "MCLK",
+ "SPK_RX_BIAS", "MCLK",
+ "INT_LDO_H", "MCLK",
+ "MIC BIAS External", "Handset Mic",
+ "MIC BIAS Internal2", "Headset Mic",
+ "MIC BIAS External", "Secondary Mic",
+ "AMIC1", "MIC BIAS External",
+ "AMIC2", "MIC BIAS Internal2",
+ "AMIC3", "MIC BIAS External",
+ "DMIC1", "MIC BIAS Internal1",
+ "MIC BIAS Internal1", "Digital Mic1",
+ "DMIC2", "MIC BIAS Internal1",
+ "MIC BIAS Internal1", "Digital Mic2";
+ pinctrl-names = "cdc_lines_act",
+ "cdc_lines_sus",
+ "cdc_lines_sec_ext_act",
+ "cdc_lines_sec_ext_sus",
+ "cross_conn_det_act",
+ "cross_conn_det_sus";
+ pinctrl-0 = <&cdc_pdm_lines_act>;
+ pinctrl-1 = <&cdc_pdm_lines_sus>;
+ pinctrl-2 = <&cdc_pdm_lines_act &cdc_ext_pa_act
+ &cdc_ext_pa_ws_act>;
+ pinctrl-3 = <&cdc_pdm_lines_sus &cdc_ext_pa_sus
+ &cdc_ext_pa_ws_sus>;
+ pinctrl-4 = <&cross_conn_det_act>;
+ pinctrl-5 = <&cross_conn_det_sus>;
+ qcom,cdc-us-euro-gpios = <&msm_gpio 120 0>;
+ };
+};
+
+&blsp1_uart2 {
+ status = "ok";
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&uart_console_default>;
+ pinctrl-1 = <&uart_console_sleep>;
+};
+
+&soc {
+ gpio_keys {
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+ pinctrl-names = "tlmm_gpio_key_active","tlmm_gpio_key_suspend";
+ pinctrl-0 = <&gpio_key_active>;
+ pinctrl-1 = <&gpio_key_suspend>;
+
+ camera_focus {
+ label = "camera_focus";
+ gpios = <&msm_gpio 108 0x1>;
+ linux,input-type = <1>;
+ linux,code = <0x210>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+
+ camera_snapshot {
+ label = "camera_snapshot";
+ gpios = <&msm_gpio 109 0x1>;
+ linux,input-type = <1>;
+ linux,code = <0x2fe>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+
+ vol_up {
+ label = "volume_up";
+ gpios = <&msm_gpio 107 0x1>;
+ linux,input-type = <1>;
+ linux,code = <115>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+ };
+};
+
+&blsp1_uart1 {
+ status = "ok";
+};
+
+&sdhc_1 {
+ vdd-supply = <&pm8916_l8>;
+ qcom,vdd-voltage-level = <2900000 2900000>;
+ qcom,vdd-current-level = <200 400000>;
+
+ vdd-io-supply = <&pm8916_l5>;
+ qcom,vdd-io-always-on;
+ qcom,vdd-io-lpm-sup;
+ qcom,vdd-io-voltage-level = <1800000 1800000>;
+ qcom,vdd-io-current-level = <200 60000>;
+
+ pinctrl-names = "active", "sleep";
+ pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
+ pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
+
+ qcom,nonremovable;
+
+ status = "ok";
+};
+
+&sdhc_2 {
+ vdd-supply = <&pm8916_l11>;
+ qcom,vdd-voltage-level = <2800000 2950000>;
+ qcom,vdd-current-level = <15000 400000>;
+
+ vdd-io-supply = <&pm8916_l12>;
+ qcom,vdd-io-voltage-level = <1800000 2950000>;
+ qcom,vdd-io-current-level = <200 50000>;
+
+ pinctrl-names = "active", "sleep";
+ pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
+ pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
+
+ #address-cells = <0>;
+ interrupt-parent = <&sdhc_2>;
+ interrupts = <0 1 2>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0xffffffff>;
+ interrupt-map = <0 &intc 0 125 0
+ 1 &intc 0 221 0
+ 2 &msm_gpio 38 0>;
+ interrupt-names = "hc_irq", "pwr_irq", "status_irq";
+ cd-gpios = <&msm_gpio 38 0x1>;
+
+ status = "ok";
+};
+
+&pm8916_mpps {
+ mpp@a000 { /* MPP 1 */
+ /* VDD_PX */
+ status = "disabled";
+ };
+
+ mpp@a100 { /* MPP 2 */
+ /* HR LED */
+ status = "disabled";
+ };
+
+ mpp@a200 { /* MPP 3 */
+ /* VREF DAC */
+ status = "disabled";
+ };
+
+ mpp@a300 { /* MPP 4 */
+ /* Backlight PWM */
+ qcom,mode = <1>; /* Digital output */
+ qcom,invert = <0>; /* Disable invert */
+ qcom,src-sel = <4>; /* DTEST1 */
+ qcom,vin-sel = <0>; /* VPH_PWR */
+ qcom,master-en = <1>; /* Enable MPP */
+ };
+};
+
+&pm8916_gpios {
+ gpio@c000 { /* GPIO 1 */
+ /* Battery UICC Alarm */
+ status = "disabled";
+ };
+
+ gpio@c100 { /* GPIO 2 */
+ /* NFC_CLK_REQ */
+ qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
+ qcom,pull = <5>; /* QPNP_PIN_PULL_NO */
+ qcom,vin-sel = <2>; /* QPNP_PIN_VIN2 */
+ qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
+ qcom,master-en = <1>;
+ };
+
+ gpio@c200 { /* GPIO 3 */
+ /* External regulator control for WTR */
+ status = "disabled";
+ };
+
+ gpio@c300 { /* GPIO 4 */
+ /* External regulator control for APC */
+ status = "disabled";
+ };
+};
+
+#include "dsi-panel-jdi-1080p-video.dtsi"
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&dsi_jdi_1080_vid {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-pmic-bank-select = <0>;
+ qcom,mdss-dsi-pwm-gpio = <&pm8916_mpps 4 0>;
+
+};
+
+&mdss_dsi_active {
+ pinmux {
+ function = "gpio";
+ pins = "gpio97", "gpio25", "gpio98";
+ };
+ pinconf {
+ pins = "gpio97", "gpio25", "gpio98";
+ };
+};
+
+&mdss_dsi_suspend {
+ pinmux {
+ function = "gpio";
+ pins = "gpio97", "gpio25", "gpio98";
+ };
+ pinconf {
+ pins = "gpio97", "gpio25", "gpio98";
+ };
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_jdi_1080_vid>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
+
+ qcom,platform-enable-gpio = <&msm_gpio 97 0>;
+ qcom,platform-reset-gpio = <&msm_gpio 25 0>;
+ qcom,platform-bklight-en-gpio = <&msm_gpio 98 0>;
+};
+
+&dsi_jdi_1080_vid {
+ qcom,cont-splash-enabled;
+};
+
+&pm8916_chg {
+ status = "ok";
+ qcom,charging-disabled;
+};
+
+/ {
+ mtp_batterydata: qcom,battery-data {
+ qcom,rpull-up-kohm = <100>;
+ qcom,vref-batt-therm = <1800000>;
+
+ #include "batterydata-palladium.dtsi"
+ };
+};
+
+&pm8916_bms {
+ status = "ok";
+ qcom,battery-data = <&mtp_batterydata>;
+};
+
+&spmi_bus {
+ qcom,pm8916@0 {
+ qcom,leds@a100 {
+ status = "okay";
+ qcom,led_mpp_2 {
+ label = "mpp";
+ linux,name = "button-backlight";
+ linux,default-trigger = "none";
+ qcom,default-state = "off";
+ qcom,max-current = <40>;
+ qcom,current-setting = <5>;
+ qcom,id = <6>;
+ qcom,mode = "manual";
+ qcom,source-sel = <1>;
+ qcom,mode-ctrl = <0x60>;
+ };
+ };
+ };
+};
+
+&qcom_tzlog {
+ status = "okay";
+};
+
+&qcom_rng {
+ status = "okay";
+};
+
+&qcom_crypto {
+ status = "okay";
+};
+
+&qcom_cedev {
+ status = "okay";
+};
+
+&qcom_seecom {
+ status = "okay";
+};
+
+/* CoreSight */
+&tpiu {
+ pinctrl-names = "sdcard", "trace", "swduart",
+ "swdtrc", "jtag", "spmi";
+ /* NIDnT */
+ pinctrl-0 = <&qdsd_clk_sdcard &qdsd_cmd_sdcard
+ &qdsd_data0_sdcard &qdsd_data1_sdcard
+ &qdsd_data2_sdcard &qdsd_data3_sdcard>;
+ pinctrl-1 = <&qdsd_clk_trace &qdsd_cmd_trace
+ &qdsd_data0_trace &qdsd_data1_trace
+ &qdsd_data2_trace &qdsd_data3_trace>;
+ pinctrl-2 = <&qdsd_cmd_swduart &qdsd_data0_swduart
+ &qdsd_data1_swduart &qdsd_data2_swduart
+ &qdsd_data3_swduart>;
+ pinctrl-3 = <&qdsd_clk_swdtrc &qdsd_cmd_swdtrc
+ &qdsd_data0_swdtrc &qdsd_data1_swdtrc
+ &qdsd_data2_swdtrc &qdsd_data3_swdtrc>;
+ pinctrl-4 = <&qdsd_cmd_jtag &qdsd_data0_jtag
+ &qdsd_data1_jtag &qdsd_data2_jtag
+ &qdsd_data3_jtag>;
+ pinctrl-5 = <&qdsd_clk_spmi &qdsd_cmd_spmi
+ &qdsd_data0_spmi &qdsd_data3_spmi>;
+};
+
+&spmi_bus {
+ qcom,pm8916@1 {
+ qcom,vibrator@c000 {
+ status = "okay";
+ qcom,vib-timeout-ms = <15000>;
+ qcom,vib-vtg-level-mV = <3100>;
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-pinctrl.dtsi b/arch/arm64/boot/dts/qcom/msm8916-pinctrl.dtsi
new file mode 100644
index 00000000000..1fe709e8624
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-pinctrl.dtsi
@@ -0,0 +1,1568 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&msm_gpio {
+ ext-cdc-tlmm-lines {
+ ext_cdc_tlmm_lines_act: tlmm_lines_on {
+ pinmux_pri {
+ function = "pri_mi2s";
+ pins = "gpio116";
+ };
+ pinmux_sec {
+ function = "sec_mi2s";
+ pins = "gpio112", "gpio117", "gpio118",
+ "gpio119";
+ };
+ pinconf {
+ pins = "gpio112", "gpio116", "gpio117",
+ "gpio118", "gpio119";
+ drive-strength = <8>;
+ bias-pull-none;
+ };
+ };
+ ext_cdc_tlmm_lines_sus: tlmm_lines_off {
+ pinmux_pri {
+ function = "pri_mi2s";
+ pins = "gpio116";
+ };
+ pinmux_sec {
+ function = "sec_mi2s";
+ pins = "gpio112", "gpio117", "gpio118",
+ "gpio119";
+ };
+ pinconf {
+ pins = "gpio112", "gpio116", "gpio117",
+ "gpio118", "gpio119";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+
+ ext-codec-lines {
+ ext_codec_lines_act: lines_on {
+ pinmux {
+ function = "gpio";
+ pins = "gpio67";
+ };
+ pinconf {
+ pins = "gpio67";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+ };
+ ext_codec_lines_sus: lines_off {
+ pinmux {
+ function = "gpio";
+ pins = "gpio67";
+ };
+ pinconf {
+ pins = "gpio67";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+
+ cdc-pdm-lines {
+ cdc_pdm_lines_act: pdm_lines_on {
+ pinmux {
+ function = "cdc_pdm0";
+ pins = "gpio63", "gpio64", "gpio65", "gpio66",
+ "gpio67", "gpio68";
+ };
+ pinconf {
+ pins = "gpio63", "gpio64", "gpio65", "gpio66",
+ "gpio67", "gpio68";
+ drive-strength = <8>;
+ bias-pull-none;
+ };
+ };
+ cdc_pdm_lines_sus: pdm_lines_off {
+ pinmux {
+ function = "cdc_pdm0";
+ pins = "gpio63", "gpio64", "gpio65", "gpio66",
+ "gpio67", "gpio68";
+ };
+ pinconf {
+ pins = "gpio63", "gpio64", "gpio65", "gpio66",
+ "gpio67", "gpio68";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+
+ cdc-ext-pa-lines {
+ cdc_ext_pa_act: ext_pa_on {
+ pinmux {
+ function = "pri_mi2s";
+ pins = "gpio113", "gpio114", "gpio115",
+ "gpio116";
+ };
+ pinconf {
+ pins = "gpio113", "gpio114", "gpio115",
+ "gpio116";
+ drive-strength = <8>;
+ bias-pull-none;
+ };
+ };
+ cdc_ext_pa_sus: ext_pa_off {
+ pinmux {
+ function = "pri_mi2s";
+ pins = "gpio113", "gpio114", "gpio115",
+ "gpio116";
+ };
+ pinconf {
+ pins = "gpio113", "gpio114", "gpio115",
+ "gpio116";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+
+ cdc-ext-pa-ws-line {
+ cdc_ext_pa_ws_act: ext_pa_on {
+ pinmux {
+ function = "pri_mi2s_ws";
+ pins = "gpio110";
+ };
+ pinconf {
+ pins = "gpio110";
+ drive-strength = <8>;
+ bias-pull-none;
+ };
+ };
+ cdc_ext_pa_ws_sus: ext_pa_off {
+ pinmux {
+ function = "pri_mi2s_ws";
+ pins = "gpio110";
+ };
+ pinconf {
+ pins = "gpio110";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+
+ cdc-dmic-lines {
+ cdc_dmic_lines_act: dmic_lines_on {
+ pinmux_dmic0_clk {
+ function = "dmic0_clk";
+ pins = "gpio0";
+ };
+ pinmux_dmic0_data {
+ function = "dmic0_data";
+ pins = "gpio1";
+ };
+ pinconf {
+ pins = "gpio0", "gpio1";
+ drive-strength = <8>;
+ };
+ };
+ cdc_dmic_lines_sus: dmic_lines_off {
+ pinconf {
+ pins = "gpio0", "gpio1";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+
+ cross-conn-det {
+ cross_conn_det_act: lines_on {
+ pinmux {
+ function = "gpio";
+ pins = "gpio120";
+ };
+ pinconf {
+ pins = "gpio120";
+ drive-strength = <8>;
+ output-low;
+ bias-pull-down;
+ };
+ };
+ cross_conn_det_sus: lines_off {
+ pinmux {
+ function = "gpio";
+ pins = "gpio120";
+ };
+ pinconf {
+ pins = "gpio120";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+
+ pmx-uartconsole {
+ uart_console_default: default {
+ pinmux {
+ function = "blsp_uart2";
+ pins = "gpio4", "gpio5";
+ };
+ pinconf {
+ pins = "gpio4", "gpio5";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+ uart_console_sleep: uart-console {
+ pinmux {
+ function = "blsp_uart2";
+ pins = "gpio4", "gpio5";
+ };
+ pinconf {
+ pins = "gpio4", "gpio5";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+ };
+
+ blsp1_uart1_active {
+ hsuart_active: default {
+ pinmux {
+ function = "blsp_uart1";
+ pins = "gpio0", "gpio1", "gpio2", "gpio3";
+ };
+ pinconf {
+ pins = "gpio0", "gpio1", "gpio2", "gpio3";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+ };
+
+ blsp1_uart1_sleep {
+ hsuart_sleep: sleep {
+ pinmux {
+ function = "blsp_uart1";
+ pins = "gpio0", "gpio1", "gpio2", "gpio3";
+ };
+ pinconf {
+ pins = "gpio0", "gpio1", "gpio2", "gpio3";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+
+ sdhc2_cd_pin {
+ sdc2_cd_on: cd_on {
+ pinmux {
+ function = "gpio";
+ pins = "gpio38";
+ };
+ pinconf {
+ pins = "gpio38";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+ sdc2_cd_off: cd_off {
+ pinmux {
+ function = "gpio";
+ pins = "gpio38";
+ };
+ pinconf {
+ pins = "gpio38";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+
+ pmx_sdc1_clk {
+ sdc1_clk_on: clk_on {
+ pinmux {
+ pins = "sdc1_clk";
+ };
+ pinconf {
+ pins = "sdc1_clk";
+ bias-disable;
+ drive-strength = <16>;
+ };
+ };
+ sdc1_clk_off: clk_off {
+ pinmux {
+ pins = "sdc1_clk";
+ };
+ pinconf {
+ pins = "sdc1_clk";
+ bias-disable;
+ drive-strength = <2>;
+ };
+ };
+ };
+
+ pmx_sdc1_cmd {
+ sdc1_cmd_on: cmd_on {
+ pinmux {
+ pins = "sdc1_cmd";
+ };
+ pinconf {
+ pins = "sdc1_cmd";
+ bias-pull-up;
+ drive-strength = <10>;
+ };
+ };
+ sdc1_cmd_off: cmd_off {
+ pinmux {
+ pins = "sdc1_cmd";
+ };
+ pinconf {
+ pins = "sdc1_cmd";
+ bias-pull-up;
+ drive-strength = <2>;
+ };
+ };
+ };
+
+ pmx_sdc1_data {
+ sdc1_data_on: data_on {
+ pinmux {
+ pins = "sdc1_data";
+ };
+ pinconf {
+ pins = "sdc1_data";
+ bias-pull-up;
+ drive-strength = <10>;
+ };
+ };
+ sdc1_data_off: data_off {
+ pinmux {
+ pins = "sdc1_data";
+ };
+ pinconf {
+ pins = "sdc1_data";
+ bias-pull-up;
+ drive-strength = <2>;
+ };
+ };
+ };
+
+ pmx_sdc2_clk {
+ sdc2_clk_on: clk_on {
+ pinmux {
+ pins = "sdc2_clk";
+ };
+ pinconf {
+ pins = "sdc2_clk";
+ bias-disable;
+ drive-strength = <16>;
+ };
+ };
+ sdc2_clk_off: clk_off {
+ pinmux {
+ pins = "sdc2_clk";
+ };
+ pinconf {
+ pins = "sdc2_clk";
+ bias-disable;
+ drive-strength = <2>;
+ };
+ };
+ };
+
+ pmx_sdc2_cmd {
+ sdc2_cmd_on: cmd_on {
+ pinmux {
+ pins = "sdc2_cmd";
+ };
+ pinconf {
+ pins = "sdc2_cmd";
+ bias-pull-up;
+ drive-strength = <10>;
+ };
+ };
+ sdc2_cmd_off: cmd_off {
+ pinmux {
+ pins = "sdc2_cmd";
+ };
+ pinconf {
+ pins = "sdc2_cmd";
+ bias-pull-up;
+ drive-strength = <2>;
+ };
+ };
+ };
+
+ pmx_sdc2_data {
+ sdc2_data_on: data_on {
+ pinmux {
+ pins = "sdc2_data";
+ };
+ pinconf {
+ pins = "sdc2_data";
+ bias-pull-up;
+ drive-strength = <10>;
+ };
+ };
+ sdc2_data_off: data_off {
+ pinmux {
+ pins = "sdc2_data";
+ };
+ pinconf {
+ pins = "sdc2_data";
+ bias-pull-up;
+ drive-strength = <2>;
+ };
+ };
+ };
+
+ usb-id-pin {
+ usbid_default: default {
+ pinmux {
+ function = "gpio";
+ pins = "gpio110";
+ };
+ pinconf {
+ pins = "gpio110";
+ drive-strength = <8>;
+ bias-pull-up;
+ };
+ };
+ };
+
+ spi0 {
+ /* MOSI, MISO, CLK */
+ spi0_default: default {
+ pinmux {
+ function = "blsp_spi3";
+ pins = "gpio8", "gpio9", "gpio11";
+ };
+ pinconf {
+ pins = "gpio8", "gpio9", "gpio11";
+ drive-strength = <12>;
+ bias-disable = <0>;
+ };
+ };
+
+ spi0_sleep: sleep {
+ pinmux {
+ function = "gpio";
+ pins = "gpio8", "gpio9", "gpio11";
+ };
+ pinconf {
+ pins = "gpio8", "gpio9", "gpio11";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+
+ /* CS */
+ spi0_cs0_active: cs0_active {
+ pinmux {
+ function = "blsp_spi3";
+ pins = "gpio10";
+ };
+ pinconf {
+ pins = "gpio10";
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+
+ spi0_cs0_sleep: cs0_sleep {
+ pinmux {
+ function = "gpio";
+ pins = "gpio10";
+ };
+ pinconf {
+ pins = "gpio10";
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+ };
+
+ ice40-spi-usb-pins {
+ ice40_default: default {
+ pinmux {
+ function = "gpio";
+ pins = "gpio0", "gpio1", "gpio3", "gpio114";
+ };
+ pinconf {
+ pins = "gpio0", "gpio1", "gpio3", "gpio114";
+ drive-strength = <8>;
+ bias-disable;
+ };
+ };
+
+ ice40_sleep: sleep {
+ pinmux {
+ function = "gpio";
+ pins = "gpio0", "gpio1", "gpio3", "gpio114";
+ };
+ pinconf {
+ pins = "gpio0", "gpio1", "gpio3", "gpio114";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+ };
+
+ i2c_0 {
+ /* CLK, DATA */
+ i2c_0_active: i2c_0_active {
+ pinmux {
+ function = "blsp_i2c2";
+ pins = "gpio6", "gpio7";
+ };
+ pinconf {
+ pins = "gpio6", "gpio7";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ i2c_0_sleep: i2c_0_sleep {
+ pinmux {
+ function = "blsp_i2c2";
+ pins = "gpio6", "gpio7";
+ };
+ pinconf {
+ pins = "gpio6", "gpio7";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+
+ i2c_5 {
+ /* CLK, DATA */
+ i2c_5_active: i2c_5_active {
+ pinmux {
+ function = "blsp_i2c5";
+ pins = "gpio18", "gpio19";
+ };
+ pinconf {
+ pins = "gpio18", "gpio19";
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+
+ i2c_5_sleep: i2c_5_sleep {
+ pinmux {
+ function = "blsp_i2c5";
+ pins = "gpio18", "gpio19";
+ };
+ pinconf {
+ pins = "gpio18", "gpio19";
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+ };
+
+ pmx_qdsd_clk {
+ qdsd_clk_sdcard: clk_sdcard {
+ pinmux {
+ pins = "qdsd_clk";
+ };
+ pinconf {
+ pins = "qdsd_clk";
+ bias-disable;
+ drive-strength = <7>;
+ };
+ };
+ qdsd_clk_trace: clk_trace {
+ pinmux {
+ pins = "qdsd_clk";
+ };
+ pinconf {
+ pins = "qdsd_clk";
+ bias-pull-down;
+ drive-strength = <0>;
+ };
+ };
+ qdsd_clk_swdtrc: clk_swdtrc {
+ pinmux {
+ pins = "qdsd_clk";
+ };
+ pinconf {
+ pins = "qdsd_clk";
+ bias-pull-down;
+ drive-strength = <0>;
+ };
+ };
+ qdsd_clk_spmi: clk_spmi {
+ pinmux {
+ pins = "qdsd_clk";
+ };
+ pinconf {
+ pins = "qdsd_clk";
+ bias-pull-down;
+ drive-strength = <0>;
+ };
+ };
+ };
+
+ pmx_qdsd_cmd {
+ qdsd_cmd_sdcard: cmd_sdcard {
+ pinmux {
+ pins = "qdsd_cmd";
+ };
+ pinconf {
+ pins = "qdsd_cmd";
+ bias-pull-down;
+ drive-strength = <3>;
+ };
+ };
+ qdsd_cmd_trace: cmd_trace {
+ pinmux {
+ pins = "qdsd_cmd";
+ };
+ pinconf {
+ pins = "qdsd_cmd";
+ bias-pull-down;
+ drive-strength = <0>;
+ };
+ };
+ qdsd_cmd_swduart: cmd_uart {
+ pinmux {
+ pins = "qdsd_cmd";
+ };
+ pinconf {
+ pins = "qdsd_cmd";
+ bias-pull-up;
+ drive-strength = <0>;
+ };
+ };
+ qdsd_cmd_swdtrc: cmd_swdtrc {
+ pinmux {
+ pins = "qdsd_cmd";
+ };
+ pinconf {
+ pins = "qdsd_cmd";
+ bias-pull-up;
+ drive-strength = <0>;
+ };
+ };
+ qdsd_cmd_jtag: cmd_jtag {
+ pinmux {
+ pins = "qdsd_cmd";
+ };
+ pinconf {
+ pins = "qdsd_cmd";
+ bias-disable;
+ drive-strength = <3>;
+ };
+ };
+ qdsd_cmd_spmi: cmd_spmi {
+ pinmux {
+ pins = "qdsd_cmd";
+ };
+ pinconf {
+ pins = "qdsd_cmd";
+ bias-pull-down;
+ drive-strength = <4>;
+ };
+ };
+ };
+
+ pmx_qdsd_data0 {
+ qdsd_data0_sdcard: data0_sdcard {
+ pinmux {
+ pins = "qdsd_data0";
+ };
+ pinconf {
+ pins = "qdsd_data0";
+ bias-pull-down;
+ drive-strength = <3>;
+ };
+ };
+ qdsd_data0_trace: data0_trace {
+ pinmux {
+ pins = "qdsd_data0";
+ };
+ pinconf {
+ pins = "qdsd_data0";
+ bias-pull-down;
+ drive-strength = <0>;
+ };
+ };
+ qdsd_data0_swduart: data0_uart {
+ pinmux {
+ pins = "qdsd_data0";
+ };
+ pinconf {
+ pins = "qdsd_data0";
+ bias-pull-down;
+ drive-strength = <0>;
+ };
+ };
+ qdsd_data0_swdtrc: data0_swdtrc {
+ pinmux {
+ pins = "qdsd_data0";
+ };
+ pinconf {
+ pins = "qdsd_data0";
+ bias-pull-down;
+ drive-strength = <0>;
+ };
+ };
+ qdsd_data0_jtag: data0_jtag {
+ pinmux {
+ pins = "qdsd_data0";
+ };
+ pinconf {
+ pins = "qdsd_data0";
+ bias-pull-up;
+ drive-strength = <0>;
+ };
+ };
+ qdsd_data0_spmi: data0_spmi {
+ pinmux {
+ pins = "qdsd_data0";
+ };
+ pinconf {
+ pins = "qdsd_data0";
+ bias-pull-down;
+ drive-strength = <0>;
+ };
+ };
+ };
+
+ pmx_qdsd_data1 {
+ qdsd_data1_sdcard: data1_sdcard {
+ pinmux {
+ pins = "qdsd_data1";
+ };
+ pinconf {
+ pins = "qdsd_data1";
+ bias-pull-down;
+ drive-strength = <3>;
+ };
+ };
+ qdsd_data1_trace: data1_trace {
+ pinmux {
+ pins = "qdsd_data1";
+ };
+ pinconf {
+ pins = "qdsd_data1";
+ bias-pull-down;
+ drive-strength = <3>;
+ };
+ };
+ qdsd_data1_swduart: data1_uart {
+ pinmux {
+ pins = "qdsd_data1";
+ };
+ pinconf {
+ pins = "qdsd_data1";
+ bias-pull-down;
+ drive-strength = <0>;
+ };
+ };
+ qdsd_data1_swdtrc: data1_swdtrc {
+ pinmux {
+ pins = "qdsd_data1";
+ };
+ pinconf {
+ pins = "qdsd_data1";
+ bias-pull-down;
+ drive-strength = <0>;
+ };
+ };
+ qdsd_data1_jtag: data1_jtag {
+ pinmux {
+ pins = "qdsd_data1";
+ };
+ pinconf {
+ pins = "qdsd_data1";
+ bias-pull-down;
+ drive-strength = <0>;
+ };
+ };
+ };
+
+ pmx_qdsd_data2 {
+ qdsd_data2_sdcard: data2_sdcard {
+ pinmux {
+ pins = "qdsd_data2";
+ };
+ pinconf {
+ pins = "qdsd_data2";
+ bias-pull-down;
+ drive-strength = <3>;
+ };
+ };
+ qdsd_data2_trace: data2_trace {
+ pinmux {
+ pins = "qdsd_data2";
+ };
+ pinconf {
+ pins = "qdsd_data2";
+ bias-pull-down;
+ drive-strength = <3>;
+ };
+ };
+ qdsd_data2_swduart: data2_uart {
+ pinmux {
+ pins = "qdsd_data2";
+ };
+ pinconf {
+ pins = "qdsd_data2";
+ bias-pull-down;
+ drive-strength = <0>;
+ };
+ };
+ qdsd_data2_swdtrc: data2_swdtrc {
+ pinmux {
+ pins = "qdsd_data2";
+ };
+ pinconf {
+ pins = "qdsd_data2";
+ bias-pull-down;
+ drive-strength = <0>;
+ };
+ };
+ qdsd_data2_jtag: data2_jtag {
+ pinmux {
+ pins = "qdsd_data2";
+ };
+ pinconf {
+ pins = "qdsd_data2";
+ bias-pull-up;
+ drive-strength = <3>;
+ };
+ };
+ };
+
+ pmx_qdsd_data3 {
+ qdsd_data3_sdcard: data3_sdcard {
+ pinmux {
+ pins = "qdsd_data3";
+ };
+ pinconf {
+ pins = "qdsd_data3";
+ bias-pull-down;
+ drive-strength = <3>;
+ };
+ };
+ qdsd_data3_trace: data3_trace {
+ pinmux {
+ pins = "qdsd_data3";
+ };
+ pinconf {
+ pins = "qdsd_data3";
+ bias-pull-down;
+ drive-strength = <3>;
+ };
+ };
+ qdsd_data3_swduart: data3_uart {
+ pinmux {
+ pins = "qdsd_data3";
+ };
+ pinconf {
+ pins = "qdsd_data3";
+ bias-pull-up;
+ drive-strength = <0>;
+ };
+ };
+ qdsd_data3_swdtrc: data3_swdtrc {
+ pinmux {
+ pins = "qdsd_data3";
+ };
+ pinconf {
+ pins = "qdsd_data3";
+ bias-pull-up;
+ drive-strength = <0>;
+ };
+ };
+ qdsd_data3_jtag: data3_jtag {
+ pinmux {
+ pins = "qdsd_data3";
+ };
+ pinconf {
+ pins = "qdsd_data3";
+ bias-pull-up;
+ drive-strength = <0>;
+ };
+ };
+ qdsd_data3_spmi: data3_spmi {
+ pinmux {
+ pins = "qdsd_data3";
+ };
+ pinconf {
+ pins = "qdsd_data3";
+ bias-pull-down;
+ drive-strength = <3>;
+ };
+ };
+ };
+
+ pmx_mdss {
+ mdss_dsi_active: active {
+ pinconf {
+ drive-strength = <8>;
+ bias-disable = <0>;
+ output-high;
+ };
+ };
+ mdss_dsi_suspend: suspend {
+ pinconf {
+ drive-strength = <2>;
+ bias-pull-down;
+ output-low;
+ };
+ };
+ };
+
+ wcnss_pmux_5wire: wcnss_pmux_5wire {
+ wcnss_default: wcnss_default {
+ pinmux2 {
+ function = "wcss_wlan2";
+ pins = "gpio40";
+ };
+ pinmux1 {
+ function = "wcss_wlan1";
+ pins = "gpio41";
+ };
+ pinmux0 {
+ function = "wcss_wlan0";
+ pins = "gpio42";
+ };
+ pinmux {
+ function = "wcss_wlan";
+ pins = "gpio43", "gpio44";
+ };
+ pinconf {
+ pins = "gpio40", "gpio41", "gpio42", "gpio43",
+ "gpio44";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+
+ wcnss_sleep: wcnss_sleep {
+ pinmux2 {
+ function = "wcss_wlan2";
+ pins = "gpio40";
+ };
+ pinmux1 {
+ function = "wcss_wlan1";
+ pins = "gpio41";
+ };
+ pinmux0 {
+ function = "wcss_wlan0";
+ pins = "gpio42";
+ };
+ pinmux {
+ function = "wcss_wlan";
+ pins = "gpio43", "gpio44";
+ };
+ pinconf {
+ pins = "gpio40", "gpio41", "gpio42", "gpio43",
+ "gpio44";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+ };
+
+ wcnss_pmux_gpio: wcnss_pmux_gpio {
+ wcnss_gpio_default: wcnss_gpio_default {
+ pinmux {
+ function = "gpio";
+ pins = "gpio40", "gpio41", "gpio42", "gpio43",
+ "gpio44";
+ };
+ pinconf {
+ pins = "gpio40", "gpio41", "gpio42", "gpio43",
+ "gpio44";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+ };
+
+ pmx_i2c_6 {
+ /* CLK, DATA */
+ i2c_6_active: i2c_6_active{
+ pinmux {
+ function = "blsp_i2c6";
+ pins = "gpio22", "gpio23";
+ };
+ pinconf {
+ pins = "gpio22", "gpio23";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ i2c_6_sleep: i2c_6_sleep {
+ pinmux {
+ function = "blsp_i2c6";
+ pins = "gpio22", "gpio23";
+ };
+ pinconf {
+ pins = "gpio22", "gpio23";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+
+ pmx_rd_nfc_int{
+ nfc_int_active: active {
+ pinmux {
+ function = "gpio";
+ pins = "gpio21";
+ };
+ pinconf {
+ pins = "gpio21";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+
+ nfc_int_suspend: suspend {
+ pinmux {
+ function = "gpio";
+ pins = "gpio21";
+ };
+ pinconf {
+ pins = "gpio21";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+ };
+
+ pmx_nfc_reset{
+ nfc_disable_active: active {
+ pinmux {
+ function = "gpio";
+ pins = "gpio20";
+ };
+ pinconf {
+ pins = "gpio20";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+
+ nfc_disable_suspend: suspend {
+ pinmux {
+ function = "gpio";
+ pins = "gpio20";
+ };
+ pinconf {
+ pins = "gpio20";
+ drive-strength = <6>;
+ bias-disable;
+ };
+ };
+ };
+
+ pmx_mdss_te: pmx_mdss_te {
+ mdss_te_active: active {
+ pinmux {
+ function = "mdp_vsync";
+ pins = "gpio24";
+ };
+ pinconf {
+ pins = "gpio24";
+ drive-strength = <2>;
+ bias-pull-down;
+ input-debounce = <0>;
+ };
+ };
+
+ mdss_te_suspend: suspend {
+ pinmux {
+ function = "mdp_vsync";
+ pins = "gpio24";
+ };
+ pinconf {
+ pins = "gpio24";
+ drive-strength = <2>;
+ bias-pull-down;
+ input-debounce = <0>;
+ };
+ };
+ };
+
+ /* CoreSight */
+ tpiu_seta: seta {
+ pinmux_data {
+ function = "qdss_tracedata_a";
+ pins = "gpio8", "gpio9", "gpio10", "gpio39", "gpio40",
+ "gpio41", "gpio42", "gpio43", "gpio47", "gpio48",
+ "gpio62", "gpio69", "gpio112", "gpio113", "gpio114",
+ "gpio115";
+ };
+ pinmux_ctl {
+ function = "qdss_tracectl_a";
+ pins = "gpio45";
+ };
+ pinmux_clk {
+ function = "qdss_traceclk_a";
+ pins = "gpio46";
+ };
+ pinconf {
+ pins = "gpio8", "gpio9", "gpio10", "gpio39", "gpio40",
+ "gpio41", "gpio42", "gpio43", "gpio45", "gpio46",
+ "gpio47", "gpio48", "gpio62", "gpio69", "gpio112",
+ "gpio113", "gpio114", "gpio115";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb: setb {
+ pinmux_data {
+ function = "qdss_tracedata_b";
+ pins = "gpio26", "gpio27", "gpio28", "gpio29", "gpio30",
+ "gpio31", "gpio32", "gpio33", "gpio34", "gpio35",
+ "gpio36", "gpio37", "gpio110", "gpio111", "gpio120",
+ "gpio121";
+ };
+ pinmux_ctl {
+ function = "qdss_tracectl_b";
+ pins = "gpio4";
+ };
+ pinmux_clk {
+ function = "qdss_traceclk_b";
+ pins = "gpio5";
+ };
+ pinconf {
+ pins = "gpio4", "gpio5", "gpio26", "gpio27", "gpio28",
+ "gpio29", "gpio30", "gpio31", "gpio32", "gpio33",
+ "gpio34", "gpio35", "gpio36", "gpio37", "gpio110",
+ "gpio111", "gpio120", "gpio121";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tlmm_gpio_key {
+ gpio_key_active: gpio_key_active {
+ pinmux {
+ function = "gpio";
+ pins = "gpio107", "gpio108", "gpio109";
+ };
+ pinconf {
+ pins = "gpio107", "gpio108", "gpio109";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+ gpio_key_suspend: gpio_key_suspend {
+ pinmux {
+ function = "gpio";
+ pins = "gpio107", "gpio108", "gpio109";
+ };
+ pinconf {
+ pins = "gpio107", "gpio108", "gpio109";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+ };
+
+ gpio_led_pins {
+ gpio_led_off: led_off {
+ pinmux {
+ function = "gpio";
+ pins = "gpio8", "gpio9", "gpio10";
+ };
+ pinconf {
+ pins = "gpio8", "gpio9", "gpio10";
+ drive-strength = <2>;
+ bias-disable;
+ output-low;
+ };
+ };
+ };
+
+ /* add pingrp for touchscreen */
+ pmx_ts_int_active {
+ ts_int_active: ts_int_active {
+ pinmux {
+ function = "gpio";
+ pins = "gpio13";
+ };
+ pinconf {
+ pins = "gpio13";
+ drive-strength = <16>;
+ bias-pull-up;
+ };
+ };
+ };
+
+ pmx_ts_int_suspend {
+ ts_int_suspend: ts_int_suspend {
+ pinmux {
+ function = "gpio";
+ pins = "gpio13";
+ };
+ pinconf {
+ pins = "gpio13";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+ };
+
+ pmx_ts_reset_active {
+ ts_reset_active: ts_reset_active {
+ pinmux {
+ finction = "gpio";
+ pins = "gpio12";
+ };
+ pinconf {
+ pins = "gpio12";
+ drive-strength = <16>;
+ bias-pull-up;
+ };
+ };
+ };
+
+ pmx_ts_reset_suspend {
+ ts_reset_suspend: ts_reset_suspend {
+ pinmux {
+ function = "gpio";
+ pins = "gpio12";
+ };
+ pinconf {
+ pins = "gpio12";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+ };
+
+ pmx_ts_release {
+ ts_release: ts_release {
+ pinmux {
+ function = "gpio";
+ pins = "gpio12", "gpio13";
+ };
+ pinconf {
+ pins = "gpio12", "gpio13";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+ };
+
+ cci0_pinmux {
+ /* CLK, DATA */
+ cci0_default: default {
+ pinmux {
+ function = "cci_i2c";
+ pins = "gpio29", "gpio30";
+ };
+ pinconf {
+ pins = "gpio29", "gpio30";
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+ cci0_sleep: sleep {
+ pinmux {
+ function = "cci_i2c";
+ pins = "gpio29", "gpio30";
+ };
+ pinconf {
+ pins = "gpio29", "gpio30";
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+ };
+
+ cam_sensor_mclk0 {
+ /* MCLK */
+ cam_sensor_mclk0_default: default {
+ pinmux {
+ function = "cam_mclk";
+ pins = "gpio26";
+ };
+ pinconf {
+ pins = "gpio26";
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+ };
+
+ cam_sensor_mclk0_sleep {
+ /* MCLK */
+ cam_sensor_mclk0_sleep: sleep {
+ pinmux {
+ function = "cam_mclk";
+ pins = "gpio26";
+ };
+ pinconf {
+ pins = "gpio26";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+ };
+
+ cam_sensor_mclk1 {
+ /* MCLK */
+ cam_sensor_mclk1_default: default {
+ pinmux {
+ function = "cam_mclk";
+ pins = "gpio27";
+ };
+ pinconf {
+ pins = "gpio27";
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+ };
+
+ cam_sensor_mclk1_sleep {
+ /* MCLK */
+ cam_sensor_mclk1_sleep: sleep {
+ pinmux {
+ function = "cam_mclk";
+ pins = "gpio27";
+ };
+ pinconf {
+ pins = "gpio27";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+ };
+
+ cam_sensor_rear {
+ /* RESET, STANDBY */
+ cam_sensor_rear_default: default {
+ pinmux {
+ function = "gpio";
+ pins = "gpio34", "gpio35";
+ };
+ pinconf {
+ pins = "gpio34", "gpio35";
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+ };
+
+ cam_sensor_rear_sleep {
+ /* RESET, STANDBY */
+ cam_sensor_rear_sleep: sleep {
+ pinmux {
+ function = "gpio";
+ pins = "gpio34", "gpio35";
+ };
+ pinconf {
+ pins = "gpio34", "gpio35";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+ };
+
+ cam_sensor_front {
+ /* RESET, STANDBY */
+ cam_sensor_front_default: default {
+ pinmux {
+ function = "gpio";
+ pins = "gpio28", "gpio33";
+ };
+ pinconf {
+ pins = "gpio28", "gpio33";
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+ };
+
+ cam_sensor_front_sleep {
+ /* RESET, STANDBY */
+ cam_sensor_front_sleep: sleep {
+ pinmux {
+ function = "gpio";
+ pins = "gpio28", "gpio33";
+ };
+ pinconf {
+ pins = "gpio28", "gpio33";
+ drive-strength = <2>;
+ bias-pull-down = <0>;
+ };
+ };
+ };
+
+ cam_sensor_flash {
+ /* FLASH_RESET,FLASH_EN,FLASH_NOW */
+ cam_sensor_flash_default: default {
+ pinmux {
+ function = "gpio";
+ pins = "gpio31", "gpio32", "gpio36";
+ };
+ pinconf {
+ pins = "gpio31", "gpio32", "gpio36";
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+
+ cam_sensor_flash_sleep: sleep {
+ pinmux {
+ function = "gpio";
+ pins = "gpio31", "gpio32", "gpio36";
+ };
+ pinconf {
+ pins = "gpio31", "gpio32", "gpio36";
+ drive-strength = <2>;
+ bias-pull-down = <0>;
+ };
+ };
+ };
+
+ pmx_i2c_4 {
+ /* CLK, DATA */
+ i2c_4_active: i2c_4_active {
+ pinmux {
+ function = "blsp_i2c4";
+ pins = "gpio14", "gpio15";
+ };
+ pinconf {
+ pins = "gpio14", "gpio15";
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+
+ i2c_4_sleep: i2c_4_sleep {
+ pinmux {
+ function = "blsp_i2c4";
+ pins = "gpio14", "gpio15";
+ };
+ pinconf {
+ pins = "gpio14", "gpio15";
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+ };
+
+ smb_int_pin {
+ smb_int_default: smb_int_default {
+ pinmux {
+ function = "gpio";
+ pins = "gpio62";
+ };
+ pinconf {
+ pins = "gpio62";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+ };
+
+ button_backlight_pin {
+ button_backlight_off: button_backlight_off {
+ pinmux {
+ function = "gpio";
+ pins = "gpio119";
+ };
+ pinconf {
+ pins = "gpio119";
+ drive-strength = <2>;
+ bias-disable;
+ output-low;
+ };
+ };
+ };
+
+ mpu6050_int_pin {
+ mpu6050_default: mpu6050_default {
+ pinmux {
+ function = "gpio";
+ pins = "gpio115";
+ };
+ pinconf {
+ pins = "gpio115";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+ mpu6050_sleep: mpu6050_sleep {
+ pinmux {
+ function = "gpio";
+ pins = "gpio115";
+ };
+ pinconf {
+ pins = "gpio115";
+ drive-strength = <2>;
+ };
+ };
+ };
+
+ apds99xx_int_pin {
+ apds99xx_default: apds99xx_default {
+ pinmux {
+ function = "gpio";
+ pins = "gpio113";
+ };
+ pinconf {
+ pins = "gpio113";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+ apds99xx_sleep: apds99xx_sleep {
+ pinmux {
+ function = "gpio";
+ pins = "gpio113";
+ };
+ pinconf {
+ pins = "gpio113";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+ };
+
+ ak8963_int_pin {
+ ak8963_default: ak8963_default {
+ pinmux {
+ function = "gpio";
+ pins = "gpio69";
+ };
+ pinconf {
+ pins = "gpio69";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+ ak8963_sleep: ak8963_sleep {
+ pinmux {
+ function = "gpio";
+ pins = "gpio69";
+ };
+ pinconf {
+ pins = "gpio69";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-pm.dtsi b/arch/arm64/boot/dts/qcom/msm8916-pm.dtsi
new file mode 100644
index 00000000000..815aaf4e8e5
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-pm.dtsi
@@ -0,0 +1,354 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ qcom,spm@b089000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xb089000 0x1000>;
+ qcom,name = "core0";
+ qcom,core-id = <0>;
+ qcom,saw2-ver-reg = <0xfd0>;
+ qcom,saw2-cfg = <0x01>;
+ qcom,saw2-spm-dly= <0x3C102800>;
+ qcom,saw2-spm-ctl = <0xe>;
+ qcom,saw2-spm-cmd-wfi = [60 03 60 0B 0f];
+ qcom,saw2-spm-cmd-pc = [20 10 80 30 90 5b 60 03 60 3B 76 76 0B
+ 94 5B 80 10 26 30 0f];
+ };
+
+ qcom,spm@b099000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xb099000 0x1000>;
+ qcom,name = "core1";
+ qcom,core-id = <1>;
+ qcom,saw2-ver-reg = <0xfd0>;
+ qcom,saw2-cfg = <0x01>;
+ qcom,saw2-spm-dly= <0x3c102800>;
+ qcom,saw2-spm-ctl = <0xe>;
+ qcom,saw2-spm-cmd-wfi = [60 03 60 0B 0f];
+ qcom,saw2-spm-cmd-pc = [20 10 80 30 90 5b 60 03 60 3B 76 76 0B
+ 94 5B 80 10 26 30 0f];
+ };
+
+ qcom,spm@b0a9000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xb0a9000 0x1000>;
+ qcom,name = "core2";
+ qcom,core-id = <2>;
+ qcom,saw2-ver-reg = <0xfd0>;
+ qcom,saw2-cfg = <0x01>;
+ qcom,saw2-spm-dly= <0x3c102800>;
+ qcom,saw2-spm-ctl = <0xe>;
+ qcom,saw2-spm-cmd-wfi = [60 03 60 0B 0f];
+ qcom,saw2-spm-cmd-pc = [20 10 80 30 90 5b 60 03 60 3B 76 76 0B
+ 94 5B 80 10 26 30 0f];
+ };
+
+ qcom,spm@b0b9000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xb0b9000 0x1000>;
+ qcom,name = "core3";
+ qcom,core-id = <3>;
+ qcom,saw2-ver-reg = <0xfd0>;
+ qcom,saw2-cfg = <0x01>;
+ qcom,saw2-spm-dly= <0x3c102800>;
+ qcom,saw2-spm-ctl = <0xe>;
+ qcom,saw2-spm-cmd-wfi = [60 03 60 0B 0f];
+ qcom,saw2-spm-cmd-pc = [20 10 80 30 90 5b 60 03 60 3B 76 76 0B
+ 94 5B 80 10 26 30 0f];
+ };
+
+ qcom,spm@b012000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xb012000 0x1000>;
+ qcom,name = "system-l2";
+ qcom,core-id = <0xffff>; /* L2/APCS SAW */
+ qcom,saw2-ver-reg = <0xfd0>;
+ qcom,saw2-cfg = <0x1F>;
+ qcom,saw2-spm-dly= <0x3C102800>;
+ qcom,saw2-spm-ctl = <0xe>;
+ qcom,saw2-pmic-data0 = <0x05030080>;
+ qcom,saw2-pmic-data1 = <0x00030000>;
+ qcom,saw2-pmic-data4 = <0x00010080>;
+ qcom,saw2-pmic-data5 = <0x00010000>;
+ qcom,vctl-timeout-us = <50>;
+ qcom,vctl-port = <0x0>;
+ qcom,phase-port = <0x1>;
+ qcom,pfm-port = <0x2>;
+ qcom,cpu-vctl-mask = <0xf>;
+ qcom,supports-rpm-hs;
+ qcom,saw2-spm-cmd-ret = [00 03 00 0f];
+ qcom,saw2-spm-cmd-gdhs = [00 20 32 6B C0 E0 D0 42 F0 03 50 4E
+ 02 02 D0 E0 C0 22 6B 02 32 52 F0 0F];
+ qcom,saw2-spm-cmd-pc = [00 32 B0 10 E0 D0 6B C0 42 51 11 03 01 41
+ B0 50 4E 02 02 C0 D0 12 E0 6B 02 32 50 0F];
+ };
+
+
+ qcom,lpm-levels {
+ compatible = "qcom,lpm-levels";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,pm-cluster@0{
+ reg = <0>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ label = "system";
+ qcom,spm-device-names = "l2";
+ qcom,default-level = <0>;
+
+ qcom,pm-cluster-level@0{
+ reg = <0>;
+ label = "l2-cache-active";
+ qcom,spm-l2-mode = "active";
+ qcom,latency-us = <10>;
+ qcom,ss-power = <3000>;
+ qcom,energy-overhead = <60000>;
+ qcom,time-overhead = <110>;
+ };
+
+ qcom,pm-cluster-level@1{
+ reg = <1>;
+ label = "l2-gdhs";
+ qcom,spm-l2-mode = "gdhs";
+ qcom,latency-us = <240>;
+ qcom,ss-power = <530>;
+ qcom,energy-overhead = <210000>;
+ qcom,time-overhead = <350>;
+ qcom,min-child-idx = <1>;
+ };
+
+ qcom,pm-cluster-level@2{
+ reg = <2>;
+ label = "l2-pc";
+ qcom,spm-l2-mode = "pc";
+ qcom,latency-us = <11030>;
+ qcom,ss-power = <490>;
+ qcom,energy-overhead = <972390>;
+ qcom,time-overhead = <1580>;
+ qcom,min-child-idx = <2>;
+ qcom,notify-rpm;
+ };
+
+ qcom,pm-cpu {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ qcom,pm-cpu-level@0 {
+ reg = <0>;
+ qcom,spm-cpu-mode = "wfi";
+ qcom,latency-us = <1>;
+ qcom,ss-power = <560>;
+ qcom,energy-overhead = <12000>;
+ qcom,time-overhead = <20>;
+ };
+
+ qcom,pm-cpu-level@1 {
+ reg = <1>;
+ qcom,spm-cpu-mode = "standalone_pc";
+ qcom,latency-us = <180>;
+ qcom,ss-power = <550>;
+ qcom,energy-overhead = <160000>;
+ qcom,time-overhead = <280>;
+ qcom,use-broadcast-timer;
+ };
+
+ qcom,pm-cpu-level@2 {
+ reg = <2>;
+ qcom,spm-cpu-mode = "pc";
+ qcom,latency-us = <230>;
+ qcom,ss-power = <535>;
+ qcom,energy-overhead = <200000>;
+ qcom,time-overhead = <330>;
+ qcom,use-broadcast-timer;
+ };
+ };
+ };
+ };
+
+ qcom,mpm@601d0 {
+ compatible = "qcom,mpm-v2";
+ reg = <0x601d0 0x1000>, /* MSM_RPM_MPM_BASE 4K */
+ <0xb011008 0x4>;
+ reg-names = "vmpm", "ipc";
+ interrupts = <0 171 1>;
+ clocks = <&clock_rpm clk_xo_lpm_clk>;
+ clock-names = "xo";
+
+ qcom,ipc-bit-offset = <1>;
+
+ qcom,gic-parent = <&intc>;
+ qcom,gic-map = <2 216>, /* tsens_upper_lower_int */
+ <50 172>, /* usb1_hs_async_wakeup_irq */
+ <53 104>, /* mdss_irq */
+ <62 222>, /* ee0_krait_hlos_spmi_periph_irq */
+ <0xff 18>, /* APC_qgicQTmrSecPhysIrptReq */
+ <0xff 19>, /* APC_qgicQTmrNonSecPhysIrptReq */
+ <0xff 20>, /* qgicQTmrVirtIrptReq */
+ <0xff 35>, /* WDT_barkInt */
+ <0xff 39>, /* arch_mem_timer */
+ <0xff 40>, /* qtmr_phy_irq[0] */
+ <0xff 47>, /* rbif_irq[0] */
+ <0xff 56>, /* q6_wdog_expired_irq */
+ <0xff 57>, /* mss_to_apps_irq(0) */
+ <0xff 58>, /* mss_to_apps_irq(1) */
+ <0xff 59>, /* mss_to_apps_irq(2) */
+ <0xff 60>, /* mss_to_apps_irq(3) */
+ <0xff 61>, /* mss_a2_bam_irq */
+ <0xff 65>, /* o_gc_sys_irq[0] */
+ <0xff 74>, /* smmu_bus_intr[2] */
+ <0xff 75>, /* smmu_bus_intr[3] */
+ <0xff 78>, /* smmu_bus_intr[5] */
+ <0xff 79>, /* smmu_bus_intr[6] */
+ <0xff 97>, /* smmu_bus_intr[10] */
+ <0xff 102>, /* smmu_bus_intr[14] */
+ <0xff 131>, /* qup_irq */
+ <0xff 140>, /* uart_dm_intr */
+ <0xff 155>, /* sdc1_irq(0) */
+ <0xff 157>, /* sdc2_irq(0) */
+ <0xff 166>, /* usb_hs_irq */
+ <0xff 170>, /* sdc1_pwr_cmd_irq */
+ <0xff 173>, /* o_wcss_apss_smd_hi */
+ <0xff 174>, /* o_wcss_apss_smd_med */
+ <0xff 175>, /* o_wcss_apss_smd_low */
+ <0xff 176>, /* o_wcss_apss_smsm_irq */
+ <0xff 177>, /* o_wcss_apss_wlan_data_xfer_done */
+ <0xff 178>, /* o_wcss_apss_wlan_rx_data_avail */
+ <0xff 179>, /* o_wcss_apss_asic_intr */
+ <0xff 181>, /* o_wcss_apss_wdog_bite_and_reset_rdy */
+
+ <0xff 188>, /* lpass_irq_out_apcs(0) */
+ <0xff 189>, /* lpass_irq_out_apcs(1) */
+ <0xff 190>, /* lpass_irq_out_apcs(2) */
+ <0xff 191>, /* lpass_irq_out_apcs(3) */
+ <0xff 192>, /* lpass_irq_out_apcs(4) */
+ <0xff 193>, /* lpass_irq_out_apcs(5) */
+ <0xff 194>, /* lpass_irq_out_apcs(6) */
+ <0xff 195>, /* lpass_irq_out_apcs(7) */
+ <0xff 196>, /* lpass_irq_out_apcs(8) */
+ <0xff 197>, /* lpass_irq_out_apcs(9) */
+ <0xff 198>, /* coresight-tmc-etr interrupt */
+ <0xff 200>, /* rpm_ipc(4) */
+ <0xff 201>, /* rpm_ipc(5) */
+ <0xff 202>, /* rpm_ipc(6) */
+ <0xff 203>, /* rpm_ipc(7) */
+ <0xff 204>, /* rpm_ipc(24) */
+ <0xff 205>, /* rpm_ipc(25) */
+ <0xff 206>, /* rpm_ipc(26) */
+ <0xff 207>, /* rpm_ipc(27) */
+ <0xff 239>, /* crypto_bam_irq[1]*/
+ <0xff 240>, /* summary_irq_kpss */
+ <0xff 253>, /* sdc2_pwr_cmd_irq */
+ <0xff 269>, /* rpm_wdog_expired_irq */
+ <0xff 270>, /* blsp1_bam_irq[0] */
+ <0xff 275>, /* rpm_ipc(30) */
+ <0xff 276>; /* rpm_ipc(31) */
+
+ qcom,gpio-parent = <&msm_gpio>;
+ qcom,gpio-map = <3 108 >,
+ <4 1 >,
+ <5 5 >,
+ <6 9 >,
+ <7 107>,
+ <8 98>,
+ <9 97>,
+ <10 11>,
+ <11 69>,
+ <12 12>,
+ <13 13>,
+ <14 20>,
+ <15 62>,
+ <16 54>,
+ <17 21>,
+ <18 52>,
+ <19 25>,
+ <20 51>,
+ <21 50>,
+ <22 28>,
+ <23 31>,
+ <24 34>,
+ <25 35>,
+ <26 36>,
+ <27 37>,
+ <28 38>,
+ <29 49>,
+ <30 109>,
+ <31 110>,
+ <32 111>,
+ <33 112>,
+ <34 113>,
+ <35 114>,
+ <36 115>,
+ <37 117>,
+ <38 118>,
+ <39 120>,
+ <40 121>,
+ <50 66>,
+ <51 68>;
+ };
+
+ qcom,pm@8600664 {
+ compatible = "qcom,pm";
+ reg = <0x8600664 0x40>;
+ qcom,pc-mode = "tz_l2_int";
+ qcom,use-sync-timer;
+ qcom,synced-clocks;
+ };
+
+ qcom,cpu-sleep-status@b088008{
+ compatible = "qcom,cpu-sleep-status";
+ reg = <0xb088008 0x100>;
+ qcom,cpu-alias-addr = <0x10000>;
+ qcom,sleep-status-mask= <0x40000>;
+ };
+
+ qcom,rpm-log@29dc00 {
+ compatible = "qcom,rpm-log";
+ reg = <0x29dc00 0x4000>;
+ qcom,rpm-addr-phys = <0x200000>;
+ qcom,offset-version = <4>;
+ qcom,offset-page-buffer-addr = <36>;
+ qcom,offset-log-len = <40>;
+ qcom,offset-log-len-mask = <44>;
+ qcom,offset-page-indices = <56>;
+ };
+
+ qcom,rpm-stats@29dba0 {
+ compatible = "qcom,rpm-stats";
+ reg = <0x29dba0 0x1000>;
+ reg-names = "phys_addr_base";
+ qcom,sleep-stats-version = <2>;
+ };
+
+ qcom,rpm-master-stats@60150 {
+ compatible = "qcom,rpm-master-stats";
+ reg = <0x60150 0x2030>;
+ qcom,masters = "APSS", "MPSS", "PRONTO";
+ qcom,master-stats-version = <2>;
+ qcom,master-offset = <4096>;
+ };
+ qcom,rpm-rbcpr-stats@0x29daa0 {
+ compatible = "qcom,rpmrbcpr-stats";
+ reg = <0x29daa0 0x1a0000>;
+ qcom,start-offset = <0x190010>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-qrd-skuh.dts b/arch/arm64/boot/dts/qcom/msm8916-qrd-skuh.dts
new file mode 100644
index 00000000000..32cd316c78f
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-qrd-skuh.dts
@@ -0,0 +1,41 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+
+#include "msm8916-qrd-skuh.dtsi"
+#include "msm8916-memory.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8916 QRD SKUH";
+ compatible = "qcom,msm8916-qrd-skuh", "qcom,msm8916-qrd", "qcom,msm8916", "qcom,qrd";
+ qcom,board-id = <0x1000b 0>, <0x1000b 4>,
+ <0x1010b 0>, <0x1010b 4>,
+ <0x2010b 0>, <0x2010b 4>;
+};
+
+&soc {
+
+ sound {
+ qcom,msm-hs-micbias-type = "external";
+ qcom,audio-routing =
+ "RX_BIAS", "MCLK",
+ "SPK_RX_BIAS", "MCLK",
+ "INT_LDO_H", "MCLK",
+ "MIC BIAS External", "Handset Mic",
+ "MIC BIAS External2", "Headset Mic",
+ "MIC BIAS External", "Secondary Mic",
+ "AMIC1", "MIC BIAS External",
+ "AMIC2", "MIC BIAS External2",
+ "AMIC3", "MIC BIAS External";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-qrd-skuh.dtsi b/arch/arm64/boot/dts/qcom/msm8916-qrd-skuh.dtsi
new file mode 100644
index 00000000000..f8c1c178709
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-qrd-skuh.dtsi
@@ -0,0 +1,371 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "msm8916-qrd.dtsi"
+#include "dsi-panel-innolux-720p-video.dtsi"
+#include "msm8916-camera-sensor-qrd.dtsi"
+
+&msm_gpio {
+ akm_reset_pin {
+ akm_default: akm_default {
+ pinmux {
+ function = "gpio";
+ pins = "gpio36";
+ };
+ pinconf {
+ pins = "gpio36";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+ akm_sleep: akm_sleep {
+ pinmux {
+ function = "gpio";
+ pins = "gpio36";
+ };
+ pinconf {
+ pins = "gpio36";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+ };
+
+ lis3dh_int1_pin {
+ lis3dh_int1_default: int1_default {
+ pinmux {
+ function = "gpio";
+ pins = "gpio115";
+ };
+ pinconf {
+ pins = "gpio115";
+ drive-strength = <6>;
+ bias-pull-down;
+ };
+ };
+ lis3dh_int1_sleep: int1_sleep {
+ pinmux {
+ function = "gpio";
+ pins = "gpio115";
+ };
+ pinconf {
+ pins = "gpio115";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+ };
+
+ tps65132-en-pin {
+ tps65132_en_default: en-default {
+ pinmux {
+ function = "gpio";
+ pins = "gpio32", "gpio97";
+ };
+ pinconf {
+ pins = "gpio32", "gpio97";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+ };
+};
+
+&i2c_0 { /* BLSP1 QUP2 */
+ akm@c {
+ compatible = "ak,ak09911";
+ reg = <0x0c>;
+ pinctrl-names = "default","sleep";
+ pinctrl-0 = <&akm_default>;
+ pinctrl-1 = <&akm_sleep>;
+ vdd-supply = <&pm8916_l17>;
+ vio-supply = <&pm8916_l6>;
+ akm,layout = <0x3>;
+ akm,gpio_rstn = <&msm_gpio 36 0x0>;
+ akm,auto-report;
+ };
+
+ avago@39 {
+ compatible = "avago,apds9930";
+ reg = <0x39>;
+ pinctrl-names = "default","sleep";
+ pinctrl-0 = <&apds99xx_default>;
+ pinctrl-1 = <&apds99xx_sleep>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <113 0x2002>;
+ vdd-supply = <&pm8916_l17>;
+ vio-supply = <&pm8916_l6>;
+ avago,irq-gpio = <&msm_gpio 113 0x2002>;
+ avago,ps-threshold = <600>;
+ avago,ps-hysteresis-threshold = <500>;
+ avago,ps-pulse = <8>;
+ avago,ps-pgain = <0>;
+ avago,als-B = <186>;
+ avago,als-C = <75>;
+ avago,als-D = <129>;
+ avago,ga-value = <313>;
+ };
+
+ st@18 {
+ compatible = "st,lis3dh";
+ reg = <0x18>;
+ pinctrl-names = "lis3dh_default","lis3dh_sleep";
+ pinctrl-0 = <&lis3dh_int1_default>;
+ pinctrl-1 = <&lis3dh_int1_sleep>;
+ interrupt-parent = <&msm_gpio>;
+ vdd-supply = <&pm8916_l17>;
+ vddio-supply = <&pm8916_l6>;
+ st,min-interval = <5>;
+ st,init-interval = <200>;
+ st,axis-map-x = <0>;
+ st,axis-map-y = <1>;
+ st,axis-map-z = <2>;
+ st,g-range = <2>;
+ st,gpio-int1 = <&msm_gpio 115 0x2002>;
+ st,negate-x;
+ st,negate-y;
+ };
+
+ tps65132@3e {
+ compatible = "ti,tps65132";
+ reg = <0x3e>;
+ i2c-pwr-supply = <&pm8916_l6>;
+ ti,en-gpio-lpm;
+ pinctrl-names = "default";
+ pinctrl-0 = <&tps65132_en_default>;
+
+ regulators {
+ tps65132_pos: pos-boost {
+ regulator-name = "tps65132-pos";
+ regulator-min-microvolt = <5400000>;
+ regulator-max-microvolt = <5400000>;
+ ti,discharge-enable;
+ ti,enable-time = <800>;
+ ti,current-limit = <200000>;
+ ti,en-gpio = <&msm_gpio 97 0>;
+ };
+
+ tps65132_neg: neg-boost {
+ regulator-name = "tps65132-neg";
+ regulator-min-microvolt = <5400000>;
+ regulator-max-microvolt = <5400000>;
+ ti,discharge-enable;
+ ti,enable-time = <800>;
+ ti,current-limit = <40000>;
+ ti,en-gpio = <&msm_gpio 32 0>;
+ };
+ };
+ };
+
+};
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&mdss_dsi_active {
+ pinmux {
+ function = "gpio";
+ pins = "gpio25";
+ };
+ pinconf {
+ pins = "gpio25";
+ };
+};
+
+&mdss_dsi_suspend {
+ pinmux {
+ function = "gpio";
+ pins = "gpio25";
+ };
+ pinconf {
+ pins = "gpio25";
+ };
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_innolux_720p_video>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active>;
+ pinctrl-1 = <&mdss_dsi_suspend>;
+
+ qcom,platform-reset-gpio = <&msm_gpio 25 0>;
+
+ vsp-supply = <&tps65132_pos>;
+ vsn-supply = <&tps65132_neg>;
+ qcom,panel-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,panel-supply-entry@2 {
+ reg = <2>;
+ qcom,supply-name = "vsp";
+ qcom,supply-min-voltage = <5400000>;
+ qcom,supply-max-voltage = <5400000>;
+ qcom,supply-enable-load = <200>;
+ qcom,supply-disable-load = <0>;
+ };
+
+ qcom,panel-supply-entry@3 {
+ reg = <3>;
+ qcom,supply-name = "vsn";
+ qcom,supply-min-voltage = <5400000>;
+ qcom,supply-max-voltage = <5400000>;
+ qcom,supply-enable-load = <40>;
+ qcom,supply-disable-load = <0>;
+ };
+ };
+};
+
+&dsi_innolux_720p_video {
+ qcom,cont-splash-enabled;
+ qcom,esd-check-enabled;
+};
+
+&soc {
+ spi_0 {
+ status = "disabled";
+ };
+
+ gpio-leds {
+ compatible = "gpio-leds";
+ status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&gpio_led_off>;
+
+ red {
+ gpios = <&msm_gpio 8 0>;
+ label = "red";
+ linux,default-trigger = "none";
+ default-state = "off";
+ retain-state-suspended;
+ };
+
+ green {
+ gpios = <&msm_gpio 9 0>;
+ label = "green";
+ linux,default-trigger = "none";
+ default-state = "off";
+ retain-state-suspended;
+ };
+
+ blue {
+ gpios = <&msm_gpio 10 0>;
+ label = "blue";
+ linux,default-trigger = "none";
+ default-state = "off";
+ };
+ };
+
+ sound {
+ compatible = "qcom,msm8x16-audio-codec";
+ qcom,model = "msm8x16-skuh-snd-card";
+ qcom,msm-snd-card-id = <0>;
+ qcom,msm-ext-pa = "primary";
+ qcom,msm-codec-type = "internal";
+ qcom,msm-mbhc-hphl-swh = <1>;
+ qcom,msm-mbhc-gnd-swh = <0>;
+ pinctrl-names = "cdc_lines_act",
+ "cdc_lines_sus";
+ pinctrl-0 = <&cdc_pdm_lines_act>;
+ pinctrl-1 = <&cdc_pdm_lines_sus>;
+ };
+
+ i2c@78b9000 { /* BLSP1 QUP5 */
+ synaptics@70 {
+ compatible = "synaptics,rmi4";
+ reg = <0x70>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <13 0x2008>;
+ vdd-supply = <&vdd_vreg>;
+ vcc_i2c-supply = <&pm8916_l16>;
+ /* pins used by touchscreen */
+ pinctrl-names = "pmx_ts_active","pmx_ts_suspend","pmx_ts_suspend";
+ pinctrl-0 = <&ts_int_active &ts_reset_active>;
+ pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;
+ pinctrl-2 = <&ts_release>;
+ synaptics,display-coords = <0 0 1100 1756>;
+ synaptics,panel-coords = <0 0 1100 1899>;
+ synaptics,irq-gpio = <&msm_gpio 13 0x2008>;
+ synaptics,reset-gpio = <&msm_gpio 12 0x0>;
+ synaptics,i2c-pull-up;
+ synaptics,power-down;
+ synaptics,disable-gpios;
+ synaptics,fw-image-name = "PR1601177-s3207_8916_qrd_00430000.img";
+ };
+ };
+
+ vdd_vreg: vdd_vreg {
+ compatible = "regulator-fixed";
+ status = "ok";
+ regulator-name = "vdd_vreg";
+ };
+
+ gen-vkeys {
+ compatible = "qcom,gen-vkeys";
+ label = "synaptics_rmi4_i2c";
+ qcom,disp-maxx = <720>;
+ qcom,disp-maxy = <1280>;
+ qcom,panel-maxx = <720>;
+ qcom,panel-maxy = <1385>;
+ qcom,key-codes = <158 172 139>;
+ };
+};
+
+&pm8916_vadc {
+ chan@30 {
+ qcom,scale-function = <10>;
+ };
+};
+
+&pm8916_adc_tm {
+ chan@30 {
+ qcom,scale-function = <6>;
+ };
+};
+
+&pm8916_chg {
+ qcom,vddmax-mv = <4350>;
+ qcom,vddsafe-mv = <4380>;
+ qcom,vinmin-mv = <4470>;
+ qcom,batt-hot-percentage = <35>;
+ qcom,batt-cold-percentage = <70>;
+ qcom,tchg-mins = <360>;
+ status = "okay";
+};
+
+/ {
+ qrd_batterydata: qcom,battery-data {
+ qcom,rpull-up-kohm = <68>;
+ qcom,vref-batt-therm = <1800000>;
+
+ #include "batterydata-qrd-skuh-4v35-2000mah.dtsi"
+ };
+};
+
+&pm8916_bms {
+ status = "ok";
+ qcom,battery-data = <&qrd_batterydata>;
+};
+
+&sdc2_cd_on {
+ /delete-property/ bias-pull-up;
+ bias-disable;
+};
+
+&sdhc_2 {
+ qcom,vdd-always-on;
+ qcom,vdd-lpm-sup;
+
+ qcom,vdd-current-level = <4000 400000>;
+};
+
diff --git a/arch/arm64/boot/dts/qcom/msm8916-qrd-skuhf.dts b/arch/arm64/boot/dts/qcom/msm8916-qrd-skuhf.dts
new file mode 100644
index 00000000000..35bd4f77954
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-qrd-skuhf.dts
@@ -0,0 +1,63 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+
+#include "msm8916-qrd-skuh.dtsi"
+#include "msm8916-memory.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8916 QRD SKUHF";
+ compatible = "qcom,msm8916-qrd-skuhf", "qcom,msm8916-qrd", "qcom,msm8916", "qcom,qrd";
+ qcom,board-id = <0x11000b 0> , <0x11000b 4>,
+ <0x11010b 0>, <0x11010b 4>,
+ <0x12010b 0>, <0x12010b 4>;
+};
+
+&soc {
+ gpio-leds {
+ status = "disabled";
+ };
+
+ i2c@78b9000 { /* BLSP1 QUP5 */
+ synaptics@70 {
+ vdd-supply = <&pm8916_l17>;
+ vcc_i2c-supply = <&pm8916_l6>;
+ };
+ };
+
+ sound {
+ qcom,model = "msm8x16-skuhf-snd-card";
+ qcom,msm-hs-micbias-type = "internal";
+ qcom,audio-routing =
+ "RX_BIAS", "MCLK",
+ "SPK_RX_BIAS", "MCLK",
+ "INT_LDO_H", "MCLK",
+ "MIC BIAS Internal1", "Handset Mic",
+ "MIC BIAS Internal2", "Headset Mic",
+ "MIC BIAS Internal1", "Secondary Mic",
+ "AMIC1", "MIC BIAS Internal1",
+ "AMIC2", "MIC BIAS Internal2",
+ "AMIC3", "MIC BIAS Internal1";
+ };
+};
+
+#include "dsi-panel-otm1283a-720p-video.dtsi"
+
+&dsi_otm1283a_720p_video {
+ qcom,mdss-dsi-pwm-gpio = <&pm8916_mpps 4 0>;
+ qcom,cont-splash-enabled;
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_otm1283a_720p_video>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-qrd-skui.dts b/arch/arm64/boot/dts/qcom/msm8916-qrd-skui.dts
new file mode 100644
index 00000000000..28ac5e477a9
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-qrd-skui.dts
@@ -0,0 +1,108 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+
+#include "msm8916-qrd-skui.dtsi"
+#include "msm8916-memory.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8916 QRD SKUI";
+ compatible = "qcom,msm8916-qrd-skui", "qcom,msm8916-qrd", "qcom,msm8916", "qcom,qrd";
+ qcom,board-id = <0x1000b 5> , <0x1010b 5> , <0x3010b 5>;
+};
+
+&soc {
+ i2c@78b8000 {
+ smb1360_otg_supply: smb1360-chg-fg@14 {
+ compatible = "qcom,smb1360-chg-fg";
+ reg = <0x14>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <62 8>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&smb_int_default>;
+ qcom,chg-inhibit-disabled;
+ qcom,float-voltage-mv = <4350>;
+ qcom,iterm-ma = <200>;
+ qcom,recharge-thresh-mv = <100>;
+ qcom,thermal-mitigation = <1500 700 600 0>;
+ qcom,fg-auto-recharge-soc = <99>;
+ regulator-name = "smb1360_otg_vreg";
+ };
+ };
+
+ i2c@78b9000 { /* BLSP1 QUP5 */
+ focaltech@38 {
+ compatible = "focaltech,5x06";
+ reg = <0x38>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <13 0x2008>;
+ vdd-supply = <&pm8916_l17>;
+ vcc_i2c-supply = <&pm8916_l6>;
+ /* pins used by touchscreen */
+ pinctrl-names = "pmx_ts_active","pmx_ts_suspend","pmx_ts_release";
+ pinctrl-0 = <&ts_int_active &ts_reset_active>;
+ pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;
+ pinctrl-2 = <&ts_release>;
+ focaltech,name = "ft6436";
+ focaltech,family-id = <0x36>;
+ focaltech,reset-gpio = <&msm_gpio 12 0x0>;
+ focaltech,irq-gpio = <&msm_gpio 13 0x2008>;
+ focaltech,display-coords = <0 0 480 854>;
+ focaltech,panel-coords = <0 0 480 950>;
+ focaltech,button-map= <139 102 158>;
+ focaltech,no-force-update;
+ focaltech,i2c-pull-up;
+ focaltech,group-id = <1>;
+ focaltech,hard-reset-delay-ms = <20>;
+ focaltech,soft-reset-delay-ms = <200>;
+ focaltech,num-max-touches = <5>;
+ focaltech,fw-delay-aa-ms = <30>;
+ focaltech,fw-delay-55-ms = <30>;
+ focaltech,fw-upgrade-id1 = <0x79>;
+ focaltech,fw-upgrade-id2 = <0x18>;
+ focaltech,fw-delay-readid-ms = <10>;
+ focaltech,fw-delay-era-flsh-ms = <2000>;
+ focaltech,fw-auto-cal;
+ focaltech,ignore-id-check;
+ };
+ };
+
+ gen-vkeys {
+ compatible = "qcom,gen-vkeys";
+ label = "ft5x06_ts";
+ qcom,disp-maxx = <480>;
+ qcom,disp-maxy = <854>;
+ qcom,panel-maxx = <480>;
+ qcom,panel-maxy = <946>;
+ qcom,key-codes = <139 172 158>;
+ qcom,y-offset = <0>;
+ };
+};
+
+&pm8916_chg {
+ status = "ok";
+ qcom,use-external-charger;
+};
+
+&pm8916_bms {
+ status = "ok";
+ qcom,disable-bms;
+};
+
+&usb_otg {
+ qcom,hsusb-otg-mode = <3>;
+ qcom,usbid-gpio = <&msm_gpio 110 0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&usbid_default>;
+ vbus_otg-supply = <&smb1360_otg_supply>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-qrd-skui.dtsi b/arch/arm64/boot/dts/qcom/msm8916-qrd-skui.dtsi
new file mode 100644
index 00000000000..4709a78ab08
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-qrd-skui.dtsi
@@ -0,0 +1,214 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "msm8916-qrd.dtsi"
+#include "dsi-panel-otm8019a-fwvga-video.dtsi"
+#include "msm8916-camera-sensor-qrd-skui.dtsi"
+
+&soc {
+ gpio-leds {
+ compatible = "gpio-leds";
+ status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&button_backlight_off>;
+
+ keypad-backlight {
+ gpios = <&msm_gpio 119 0>;
+ label = "button-backlight";
+ linux,default-trigger = "none";
+ };
+ };
+
+ sound {
+ compatible = "qcom,msm8x16-audio-codec";
+ qcom,model = "msm8x16-skui-snd-card";
+ qcom,msm-snd-card-id = <0>;
+ qcom,msm-ext-pa = "primary";
+ qcom,msm-codec-type = "internal";
+ qcom,msm-mbhc-hphl-swh = <1>;
+ qcom,msm-mbhc-gnd-swh = <0>;
+ qcom,msm-hs-micbias-type = "internal";
+ qcom,audio-routing =
+ "RX_BIAS", "MCLK",
+ "SPK_RX_BIAS", "MCLK",
+ "INT_LDO_H", "MCLK",
+ "MIC BIAS Internal1", "Handset Mic",
+ "MIC BIAS Internal2", "Headset Mic",
+ "MIC BIAS Internal1", "Secondary Mic",
+ "AMIC1", "MIC BIAS Internal1",
+ "AMIC2", "MIC BIAS Internal2",
+ "AMIC3", "MIC BIAS Internal1";
+ pinctrl-names = "cdc_lines_act",
+ "cdc_lines_sus";
+ pinctrl-0 = <&cdc_pdm_lines_act>;
+ pinctrl-1 = <&cdc_pdm_lines_sus>;
+ };
+};
+
+&pm8916_mpps {
+ mpp@a300 { /* MPP 4 */
+ /* Backlight PWM */
+ qcom,mode = <1>; /* Digital output */
+ qcom,invert = <0>; /* Disable invert */
+ qcom,src-sel = <4>; /* DTEST1 */
+ qcom,vin-sel = <0>; /* VPH_PWR */
+ qcom,master-en = <1>; /* Enable MPP */
+ };
+};
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&mdss_dsi_active {
+ pinmux {
+ function = "gpio";
+ pins = "gpio25";
+ };
+ pinconf {
+ pins = "gpio25";
+ };
+};
+
+&mdss_dsi_suspend {
+ pinmux {
+ function = "gpio";
+ pins = "gpio25";
+ };
+ pinconf {
+ pins = "gpio25";
+ };
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_otm8019a_fwvga_video>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active>;
+ pinctrl-1 = <&mdss_dsi_suspend>;
+
+ qcom,platform-reset-gpio = <&msm_gpio 25 0>;
+};
+
+&dsi_otm8019a_fwvga_video {
+ qcom,cont-splash-enabled;
+};
+
+&msm_gpio {
+ bma2x2_int1_pin {
+ bma2x2_int1_default: int1_default {
+ pinmux {
+ function = "gpio";
+ pins = "gpio112";
+ };
+ pinconf {
+ pins = "gpio112";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+ };
+
+ bma2x2_int2_pin {
+ bma2x2_int2_default: int2_default {
+ pinmux {
+ function = "gpio";
+ pins = "gpio114";
+ };
+ pinconf {
+ pins = "gpio114";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+ };
+};
+
+&i2c_0 { /* BLSP1 QUP2 */
+ avago@39 { /* Ambient light and proximity sensor */
+ compatible = "avago,apds9930";
+ reg = <0x39>;
+ pinctrl-names = "default","sleep";
+ pinctrl-0 = <&apds99xx_default>;
+ pinctrl-1 = <&apds99xx_sleep>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <113 0x2002>;
+ vdd-supply = <&pm8916_l17>;
+ vio-supply = <&pm8916_l6>;
+ avago,irq-gpio = <&msm_gpio 113 0x2002>;
+ avago,ps-threshold = <600>;
+ avago,ps-hysteresis-threshold = <500>;
+ avago,ps-pulse = <8>;
+ avago,ps-pgain = <0>;
+ avago,als-B = <186>;
+ avago,als-C = <75>;
+ avago,als-D = <129>;
+ avago,ga-value = <768>;
+ };
+
+ bosch@18 { /* Accelerometer sensor */
+ compatible = "bosch,bma2x2";
+ reg = <0x18>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&bma2x2_int1_default &bma2x2_int2_default>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <112 0x2002>;
+ vdd-supply = <&pm8916_l17>;
+ vio-supply = <&pm8916_l6>;
+ bosch,init-interval = <200>;
+ bosch,place = <2>;
+ bosch,gpio-int1 = <&msm_gpio 112 0x2002>;
+ bosch,gpio-int2 = <&msm_gpio 114 0x2002>;
+ };
+
+ memsic@30 { /* Magnetic field sensor */
+ compatible = "memsic,mmc3416x";
+ reg = <0x30>;
+ vdd-supply = <&pm8916_l17>;
+ vio-supply = <&pm8916_l6>;
+ memsic,dir = "obverse-x-axis-forward";
+ memsic,auto-report;
+ };
+
+ mpu6050@68 {
+ compatible = "invn,mpu6050";
+ reg = <0x68>;
+ pinctrl-names = "mpu_default","mpu_sleep";
+ pinctrl-0 = <&mpu6050_default>;
+ pinctrl-1 = <&mpu6050_sleep>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <115 0x2>;
+ vdd-supply = <&pm8916_l17>;
+ vlogic-supply = <&pm8916_l16>;
+ vi2c-supply = <&pm8916_l6>;
+ invn,gpio-int = <&msm_gpio 115 0x2>;
+ invn,place = "Portrait Up Back Side";
+ };
+};
+
+&sdc2_cd_on {
+ /delete-property/ bias-pull-up;
+ bias-pull-down;
+};
+
+&sdc2_cd_off {
+ /delete-property/ bias-disable;
+ bias-pull-down;
+};
+
+&sdhc_2 {
+ interrupts = <0 1>;
+ interrupt-map = <0 &intc 0 125 0
+ 1 &intc 0 221 0>;
+ interrupt-names = "hc_irq", "pwr_irq";
+ /delete-property/ cd-gpios;
+};
+
diff --git a/arch/arm64/boot/dts/qcom/msm8916-qrd-skuic.dts b/arch/arm64/boot/dts/qcom/msm8916-qrd-skuic.dts
new file mode 100644
index 00000000000..9c15f575520
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-qrd-skuic.dts
@@ -0,0 +1,22 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+
+#include "msm8916-qrd-skuic.dtsi"
+#include "msm8916-512mb-memory.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8916 QRD SKUIC";
+ compatible = "qcom,msm8916-qrd-skuic", "qcom,msm8916-qrd", "qcom,msm8916", "qcom,qrd";
+ qcom,board-id = <0x11010b 0x105>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-qrd-skuic.dtsi b/arch/arm64/boot/dts/qcom/msm8916-qrd-skuic.dtsi
new file mode 100644
index 00000000000..b96f3cdcb0a
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-qrd-skuic.dtsi
@@ -0,0 +1,101 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "msm8916-qrd-skui.dtsi"
+#include "dsi-panel-hx8379a-fwvga-video.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8916 QRD SKUIC";
+ compatible = "qcom,msm8916-qrd-skuic", "qcom,msm8916-qrd", "qcom,msm8916", "qcom,qrd";
+};
+
+
+&soc {
+ i2c@78b9000 { /* BLSP1 QUP5 */
+ mstar@26 {
+ compatible = "mstar,msg21xx";
+ reg = <0x26>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <13 0x2008>;
+ mstar,irq-gpio = <&msm_gpio 13 0x00000001>;
+ mstar,reset-gpio = <&msm_gpio 12 0x0>;
+ vdd-supply = <&pm8916_l17>;
+ vcc_i2c-supply = <&pm8916_l6>;
+ mstar,display-coords = <0 0 480 854>;
+ pinctrl-names = "pmx_ts_active","pmx_ts_suspend","pmx_ts_release";
+ pinctrl-0 = <&ts_int_active &ts_reset_active>;
+ pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;
+ pinctrl-2 = <&ts_release>;
+ mstar,button-map = <172 139 158>;
+ mstar,ic-type = <2>;
+ mstar,num-max-touches = <2>;
+ mstar,hard-reset-delay-ms = <100>;
+ mstar,post-hard-reset-delay-ms = <100>;
+ };
+ };
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_hx8379a_fwvga_video>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active>;
+ pinctrl-1 = <&mdss_dsi_suspend>;
+
+ qcom,platform-reset-gpio = <&msm_gpio 25 0>;
+};
+
+&dsi_hx8379a_fwvga_video {
+ qcom,cont-splash-enabled;
+};
+
+&pm8916_chg {
+ qcom,vddmax-mv = <4350>;
+ qcom,vddsafe-mv = <4380>;
+ qcom,vinmin-mv = <4470>;
+ qcom,batt-hot-percentage = <35>;
+ qcom,batt-cold-percentage = <70>;
+ qcom,tchg-mins = <360>;
+ qcom,disable-vbatdet-based-recharge;
+ status = "okay";
+};
+
+/ {
+ qrd_batterydata: qcom,battery-data {
+ qcom,rpull-up-kohm = <100>;
+ qcom,vref-batt-therm = <1800000>;
+
+ #include "batterydata-qrd-skuic-4v35-1850mah.dtsi"
+ };
+};
+
+&pm8916_bms {
+ status = "okay";
+ qcom,force-bms-active-on-charger;
+ qcom,battery-data = <&qrd_batterydata>;
+};
+
+&i2c_0 { /* BLSP1 QUP2 */
+ bosch@18 { /* Accelerometer sensor */
+ compatible = "bosch,bma2x2";
+ reg = <0x18>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&bma2x2_int1_default &bma2x2_int2_default>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <112 0x2002>;
+ vdd-supply = <&pm8916_l17>;
+ vio-supply = <&pm8916_l6>;
+ bosch,init-interval = <200>;
+ bosch,place = <4>;
+ bosch,gpio-int1 = <&msm_gpio 112 0x2002>;
+ bosch,gpio-int2 = <&msm_gpio 114 0x2002>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-qrd-skuid.dts b/arch/arm64/boot/dts/qcom/msm8916-qrd-skuid.dts
new file mode 100644
index 00000000000..1ff8c360bca
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-qrd-skuid.dts
@@ -0,0 +1,22 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+
+#include "msm8916-qrd-skuid.dtsi"
+#include "msm8916-memory.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8916 QRD SKUID";
+ compatible = "qcom,msm8916-qrd-skuid", "qcom,msm8916-qrd", "qcom,msm8916", "qcom,qrd";
+ qcom,board-id = <0x21010b 5>, <0x22010b 5>, <0x23010b 5>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-qrd-skuid.dtsi b/arch/arm64/boot/dts/qcom/msm8916-qrd-skuid.dtsi
new file mode 100644
index 00000000000..692b357a49e
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-qrd-skuid.dtsi
@@ -0,0 +1,100 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "msm8916-qrd-skui.dtsi"
+#include "dsi-panel-hx8379a-fwvga-video.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8916 QRD SKUID";
+ compatible = "qcom,msm8916-qrd-skuid", "qcom,msm8916-qrd", "qcom,msm8916", "qcom,qrd";
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_hx8379a_fwvga_video>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active>;
+ pinctrl-1 = <&mdss_dsi_suspend>;
+
+ qcom,platform-reset-gpio = <&msm_gpio 25 0>;
+};
+
+&dsi_hx8379a_fwvga_video {
+ qcom,cont-splash-enabled;
+};
+
+&soc {
+ i2c@78b9000 { /* BLSP1 QUP5 */
+ mstar@26 {
+ compatible = "mstar,msg21xx";
+ reg = <0x26>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <13 0x2008>;
+ mstar,irq-gpio = <&msm_gpio 13 0x00000001>;
+ mstar,reset-gpio = <&msm_gpio 12 0x0>;
+ vdd-supply = <&pm8916_l17>;
+ vcc_i2c-supply = <&pm8916_l6>;
+ mstar,display-coords = <0 0 480 854>;
+ pinctrl-names = "pmx_ts_active","pmx_ts_suspend","pmx_ts_release";
+ pinctrl-0 = <&ts_int_active &ts_reset_active>;
+ pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;
+ pinctrl-2 = <&ts_release>;
+ mstar,button-map = <172 139 158>;
+ mstar,ic-type = <2>;
+ mstar,num-max-touches = <2>;
+ mstar,hard-reset-delay-ms = <100>;
+ mstar,post-hard-reset-delay-ms = <100>;
+ };
+ };
+};
+
+&pm8916_chg {
+ qcom,vddmax-mv = <4350>;
+ qcom,vddsafe-mv = <4380>;
+ qcom,vinmin-mv = <4470>;
+ qcom,batt-hot-percentage = <35>;
+ qcom,batt-cold-percentage = <70>;
+ qcom,tchg-mins = <360>;
+ qcom,disable-vbatdet-based-recharge;
+ status = "okay";
+};
+
+/ {
+ qrd_batterydata: qcom,battery-data {
+ qcom,rpull-up-kohm = <100>;
+ qcom,vref-batt-therm = <1800000>;
+
+ #include "batterydata-qrd-skuic-4v35-1850mah.dtsi"
+ };
+};
+
+&pm8916_bms {
+ status = "okay";
+ qcom,force-bms-active-on-charger;
+ qcom,battery-data = <&qrd_batterydata>;
+};
+
+&i2c_0 { /* BLSP1 QUP2 */
+ bosch@18 { /* Accelerometer sensor */
+ compatible = "bosch,bma2x2";
+ reg = <0x18>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&bma2x2_int1_default &bma2x2_int2_default>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <112 0x2002>;
+ vdd-supply = <&pm8916_l17>;
+ vio-supply = <&pm8916_l6>;
+ bosch,init-interval = <200>;
+ bosch,place = <0>;
+ bosch,gpio-int1 = <&msm_gpio 112 0x2002>;
+ bosch,gpio-int2 = <&msm_gpio 114 0x2002>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-qrd.dtsi b/arch/arm64/boot/dts/qcom/msm8916-qrd.dtsi
new file mode 100644
index 00000000000..500b8391d1a
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-qrd.dtsi
@@ -0,0 +1,205 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "msm8916.dtsi"
+#include "msm8916-pinctrl.dtsi"
+
+/ {
+ aliases {
+ serial0 = &blsp1_uart2;
+ };
+};
+
+&soc {
+ i2c@78ba000 { /* BLSP1 QUP6 */
+ nfc-nci@e {
+ compatible = "qcom,nfc-nci";
+ reg = <0x0e>;
+ qcom,irq-gpio = <&msm_gpio 21 0x00>;
+ qcom,dis-gpio = <&msm_gpio 20 0x00>;
+ qcom,clk-src = "BBCLK2";
+ qcom,clk-en-gpio = <&msm_gpio 0 0x00>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <21 0>;
+ interrupt-names = "nfc_irq";
+ pinctrl-names = "nfc_active","nfc_suspend";
+ pinctrl-0 = <&nfc_int_active &nfc_disable_active>;
+ pinctrl-1 = <&nfc_int_suspend &nfc_disable_suspend>;
+ qcom,clk-gpio = <&pm8916_gpios 2 0>;
+ clocks = <&clock_rpm clk_bb_clk2_pin>;
+ clock-names = "ref_clk";
+ };
+ };
+
+
+};
+
+&android_usb {
+ qcom,android-usb-cdrom;
+};
+
+&blsp1_uart2 {
+ status = "ok";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart_console_sleep>;
+};
+
+&mdss_dsi0 {
+ qcom,regulator-ldo-mode;
+ qcom,platform-regulator-settings = [00 01 01 00 20 07 00];
+};
+
+&soc {
+ gpio_keys {
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+ pinctrl-names = "tlmm_gpio_key_active","tlmm_gpio_key_suspend";
+ pinctrl-0 = <&gpio_key_active>;
+ pinctrl-1 = <&gpio_key_suspend>;
+
+ vol_up {
+ label = "volume_up";
+ gpios = <&msm_gpio 107 0x1>;
+ linux,input-type = <1>;
+ linux,code = <115>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+ };
+};
+
+&pm8916_gpios {
+ gpio@c000 { /* GPIO 1 */
+ /* Battery UICC Alarm */
+ status = "disabled";
+ };
+
+ gpio@c100 { /* GPIO 2 */
+ /* NFC_CLK_REQ */
+ qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
+ qcom,pull = <5>; /* QPNP_PIN_PULL_NO */
+ qcom,vin-sel = <2>; /* QPNP_PIN_VIN2 */
+ qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
+ qcom,master-en = <1>;
+ };
+
+ gpio@c200 { /* GPIO 3 */
+ /* External regulator control for WTR */
+ status = "disabled";
+ };
+
+ gpio@c300 { /* GPIO 4 */
+ /* External regulator control for APC */
+ status = "disabled";
+ };
+};
+
+&sdhc_1 {
+ vdd-supply = <&pm8916_l8>;
+ qcom,vdd-voltage-level = <2900000 2900000>;
+ qcom,vdd-current-level = <200 400000>;
+
+ vdd-io-supply = <&pm8916_l5>;
+ qcom,vdd-io-always-on;
+ qcom,vdd-io-lpm-sup;
+ qcom,vdd-io-voltage-level = <1800000 1800000>;
+ qcom,vdd-io-current-level = <200 60000>;
+
+ pinctrl-names = "active", "sleep";
+ pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
+ pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
+
+ qcom,nonremovable;
+
+ status = "ok";
+};
+
+&sdhc_2 {
+ vdd-supply = <&pm8916_l11>;
+ qcom,vdd-voltage-level = <2800000 2950000>;
+ qcom,vdd-current-level = <15000 400000>;
+
+ vdd-io-supply = <&pm8916_l12>;
+ qcom,vdd-io-voltage-level = <1800000 2950000>;
+ qcom,vdd-io-current-level = <200 50000>;
+
+ pinctrl-names = "active", "sleep";
+ pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
+ pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
+
+ #address-cells = <0>;
+ interrupt-parent = <&sdhc_2>;
+ interrupts = <0 1 2>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0xffffffff>;
+ interrupt-map = <0 &intc 0 125 0
+ 1 &intc 0 221 0
+ 2 &msm_gpio 38 0>;
+ interrupt-names = "hc_irq", "pwr_irq", "status_irq";
+ cd-gpios = <&msm_gpio 38 0x0>;
+
+ status = "ok";
+};
+
+&spmi_bus {
+ qcom,pm8916@1 {
+ qcom,vibrator@c000 {
+ status = "okay";
+ qcom,vib-timeout-ms = <15000>;
+ qcom,vib-vtg-level-mV = <3100>;
+ };
+ };
+};
+
+&qcom_tzlog {
+ status = "okay";
+};
+
+&qcom_rng {
+ status = "okay";
+};
+
+&qcom_crypto {
+ status = "okay";
+};
+
+&qcom_cedev {
+ status = "okay";
+};
+
+&qcom_seecom {
+ status = "okay";
+};
+
+/* CoreSight */
+&tpiu {
+ pinctrl-names = "sdcard", "trace", "swduart",
+ "swdtrc", "jtag", "spmi";
+ /* NIDnT */
+ pinctrl-0 = <&qdsd_clk_sdcard &qdsd_cmd_sdcard
+ &qdsd_data0_sdcard &qdsd_data1_sdcard
+ &qdsd_data2_sdcard &qdsd_data3_sdcard>;
+ pinctrl-1 = <&qdsd_clk_trace &qdsd_cmd_trace
+ &qdsd_data0_trace &qdsd_data1_trace
+ &qdsd_data2_trace &qdsd_data3_trace>;
+ pinctrl-2 = <&qdsd_cmd_swduart &qdsd_data0_swduart
+ &qdsd_data1_swduart &qdsd_data2_swduart
+ &qdsd_data3_swduart>;
+ pinctrl-3 = <&qdsd_clk_swdtrc &qdsd_cmd_swdtrc
+ &qdsd_data0_swdtrc &qdsd_data1_swdtrc
+ &qdsd_data2_swdtrc &qdsd_data3_swdtrc>;
+ pinctrl-4 = <&qdsd_cmd_jtag &qdsd_data0_jtag
+ &qdsd_data1_jtag &qdsd_data2_jtag
+ &qdsd_data3_jtag>;
+ pinctrl-5 = <&qdsd_clk_spmi &qdsd_cmd_spmi
+ &qdsd_data0_spmi &qdsd_data3_spmi>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-regulator.dtsi b/arch/arm64/boot/dts/qcom/msm8916-regulator.dtsi
new file mode 100644
index 00000000000..464425fc7fa
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-regulator.dtsi
@@ -0,0 +1,377 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/* SPM controlled regulators */
+&spmi_bus {
+ qcom,pm8916@1 {
+ pm8916_s2: spm-regulator@1700 {
+ compatible = "qcom,spm-regulator";
+ regulator-name = "8916_s2";
+ reg = <0x1700 0x100>;
+ regulator-min-microvolt = <1050000>;
+ regulator-max-microvolt = <1350000>;
+ };
+ };
+};
+
+/* CPR controlled regulator */
+
+&soc {
+ mem_acc_vreg_corner: regulator@1946000 {
+ compatible = "qcom,mem-acc-regulator";
+ reg = <0x1946000 0x4>, <0x1946000 0x4>, <0x58000 0x1000>;
+ reg-names = "acc-sel-l1", "acc-sel-l2", "efuse_addr";
+ regulator-name = "mem_acc_corner";
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <3>;
+
+ qcom,acc-sel-l1-bit-pos = <0>;
+ qcom,acc-sel-l2-bit-pos = <8>;
+ qcom,corner-acc-map = <0 1 1>;
+ qcom,l1-config-skip-fuse-sel = <0 52 1 1 0>;
+ };
+
+ apc_vreg_corner: regulator@b018000 {
+ compatible = "qcom,cpr-regulator";
+ reg = <0xb018000 0x1000>, <0xb011064 4>, <0x58000 0x1000>;
+ reg-names = "rbcpr", "rbcpr_clk", "efuse_addr";
+ interrupts = <0 15 0>;
+ regulator-name = "apc_corner";
+ qcom,cpr-fuse-corners = <3>;
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <8>;
+
+ qcom,cpr-voltage-ceiling = <1050000 1150000 1350000>;
+ qcom,cpr-voltage-floor = <1050000 1050000 1162500>;
+ vdd-apc-supply = <&pm8916_s2>;
+
+ qcom,vdd-mx-corner-map = <4 5 7>;
+ qcom,vdd-mx-vmin-method = <4>;
+ vdd-mx-supply = <&pm8916_l3_corner_ao>;
+ qcom,vdd-mx-vmax = <7>;
+
+ mem-acc-supply = <&mem_acc_vreg_corner>;
+
+ qcom,cpr-ref-clk = <19200>;
+ qcom,cpr-timer-delay = <5000>;
+ qcom,cpr-timer-cons-up = <0>;
+ qcom,cpr-timer-cons-down = <2>;
+ qcom,cpr-irq-line = <0>;
+ qcom,cpr-step-quotient = <26>;
+ qcom,cpr-up-threshold = <0>;
+ qcom,cpr-down-threshold = <2>;
+ qcom,cpr-idle-clocks = <15>;
+ qcom,cpr-gcnt-time = <1>;
+ qcom,vdd-apc-step-up-limit = <1>;
+ qcom,vdd-apc-step-down-limit = <1>;
+ qcom,cpr-apc-volt-step = <12500>;
+
+ qcom,cpr-fuse-row = <27 0>;
+ qcom,cpr-fuse-target-quot = <42 24 6>;
+ qcom,cpr-fuse-ro-sel = <54 54 54>;
+ qcom,cpr-fuse-bp-cpr-disable = <57>;
+ qcom,cpr-fuse-init-voltage =
+ <27 36 6 0>,
+ <27 18 6 0>,
+ <27 0 6 0>;
+ qcom,cpr-init-voltage-ref = <1050000 1150000 1350000>;
+ qcom,cpr-init-voltage-step = <10000>;
+ qcom,cpr-corner-map = <1 1 2 2 3 3 3 3>;
+ qcom,cpr-corner-frequency-map =
+ <1 200000000>,
+ <2 400000000>,
+ <3 533330000>,
+ <4 800000000>,
+ <5 998400000>,
+ <6 1094400000>,
+ <7 1152000000>,
+ <8 1209600000>;
+ qcom,speed-bin-fuse-sel = <0 55 2 0>;
+ qcom,cpr-speed-bin-max-corners =
+ <0 0 2 4 8>,
+ <1 0 2 4 7>;
+ qcom,cpr-quot-adjust-scaling-factor-max = <650>;
+ qcom,cpr-enable;
+ };
+};
+
+
+/* RPM controlled regulators */
+&rpm_bus {
+
+ /* PM8916 S1 VDD_CX supply */
+ rpm-regulator-smpa1 {
+ status = "okay";
+ pm8916_s1_corner: regulator-s1-corner {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_s1_corner";
+ qcom,set = <3>;
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <7>;
+ qcom,use-voltage-corner;
+ };
+ pm8916_s1_corner_ao: regulator-s1-corner-ao {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_s1_corner_ao";
+ qcom,set = <1>;
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <7>;
+ qcom,use-voltage-corner;
+ };
+ pm8916_s1_floor_corner: regulator-s1-floor-corner {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_s1_floor_corner";
+ qcom,set = <3>;
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <7>;
+ qcom,use-voltage-floor-corner;
+ qcom,always-send-voltage;
+ };
+ };
+
+ rpm-regulator-smpa3 {
+ status = "okay";
+ pm8916_s3: regulator-s3 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1300000>;
+ qcom,init-voltage = <1200000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-smpa4 {
+ status = "okay";
+ pm8916_s4: regulator-s4 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2100000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa1 {
+ status = "okay";
+ pm8916_l1: regulator-l1 {
+ regulator-min-microvolt = <1225000>;
+ regulator-max-microvolt = <1225000>;
+ qcom,init-voltage = <1225000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa2 {
+ status = "okay";
+ pm8916_l2: regulator-l2 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ qcom,init-voltage = <1200000>;
+ status = "okay";
+ };
+ };
+
+ /* PM8916 L3 VDD_MX supply */
+ rpm-regulator-ldoa3 {
+ status = "okay";
+ pm8916_l3: regulator-l3 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <1287500>;
+ status = "okay";
+ };
+
+ pm8916_l3_corner_ao: regulator-l3-corner-ao {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l3_corner_ao";
+ qcom,set = <1>;
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <7>;
+ qcom,use-voltage-corner;
+ };
+
+ pm8916_l3_corner_so: regulator-l3-corner-so {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l3_corner_so";
+ qcom,set = <2>;
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <7>;
+ qcom,use-voltage-corner;
+ qcom,init-voltage = <1>;
+ };
+ };
+
+ rpm-regulator-ldoa4 {
+ status = "okay";
+ pm8916_l4: regulator-l4 {
+ regulator-min-microvolt = <2050000>;
+ regulator-max-microvolt = <2050000>;
+ qcom,init-voltage = <2050000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa5 {
+ status = "okay";
+ pm8916_l5: regulator-l5 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa6 {
+ status = "okay";
+ pm8916_l6: regulator-l6 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa7 {
+ status = "okay";
+ pm8916_l7: regulator-l7 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+
+ pm8916_l7_ao: regulator-l7-ao {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l7_ao";
+ qcom,set = <1>;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ qcom,init-voltage = <1800000>;
+ };
+
+ pm8916_l7_so: regulator-l7-so {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "8916_l7_so";
+ qcom,set = <2>;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ qcom,init-enable = <0>;
+ };
+ };
+
+ rpm-regulator-ldoa8 {
+ status = "okay";
+ pm8916_l8: regulator-l8 {
+ regulator-min-microvolt = <2850000>;
+ regulator-max-microvolt = <2900000>;
+ qcom,init-voltage = <2850000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa9 {
+ status = "okay";
+ pm8916_l9: regulator-l9 {
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ qcom,init-voltage = <3300000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa10 {
+ status = "okay";
+ pm8916_l10: regulator-l10 {
+ regulator-min-microvolt = <2700000>;
+ regulator-max-microvolt = <2800000>;
+ qcom,init-voltage = <2700000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa11 {
+ status = "okay";
+ pm8916_l11: regulator-l11 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2950000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa12 {
+ status = "okay";
+ pm8916_l12: regulator-l12 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2950000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa13 {
+ status = "okay";
+ pm8916_l13: regulator-l13 {
+ regulator-min-microvolt = <3075000>;
+ regulator-max-microvolt = <3075000>;
+ qcom,init-voltage = <3075000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa14 {
+ status = "okay";
+ pm8916_l14: regulator-l14 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa15 {
+ status = "okay";
+ pm8916_l15: regulator-l15 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa16 {
+ status = "okay";
+ pm8916_l16: regulator-l16 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa17 {
+ status = "okay";
+ pm8916_l17: regulator-l17 {
+ regulator-min-microvolt = <2850000>;
+ regulator-max-microvolt = <2850000>;
+ qcom,init-voltage = <2850000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa18 {
+ status = "okay";
+ pm8916_l18: regulator-l18 {
+ regulator-min-microvolt = <2700000>;
+ regulator-max-microvolt = <2700000>;
+ qcom,init-voltage = <2700000>;
+ status = "okay";
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916-smp2p.dtsi b/arch/arm64/boot/dts/qcom/msm8916-smp2p.dtsi
new file mode 100644
index 00000000000..58a1928fb21
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-smp2p.dtsi
@@ -0,0 +1,163 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+&soc {
+ qcom,smp2p-modem {
+ compatible = "qcom,smp2p";
+ reg = <0x0b011008 0x4>;
+ qcom,remote-pid = <1>;
+ qcom,irq-bitmask = <0x4000>;
+ interrupts = <0 27 1>;
+ };
+
+ qcom,smp2p-wcnss {
+ compatible = "qcom,smp2p";
+ reg = <0x0b011008 0x4>;
+ qcom,remote-pid = <4>;
+ qcom,irq-bitmask = <0x40000>;
+ interrupts = <0 143 1>;
+ };
+
+ smp2pgpio_smp2p_7_in: qcom,smp2pgpio-smp2p-7-in {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "smp2p";
+ qcom,remote-pid = <7>;
+ qcom,is-inbound;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_test_smp2p_7_in {
+ compatible = "qcom,smp2pgpio_test_smp2p_7_in";
+ gpios = <&smp2pgpio_smp2p_7_in 0 0>;
+ };
+
+ smp2pgpio_smp2p_7_out: qcom,smp2pgpio-smp2p-7-out {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "smp2p";
+ qcom,remote-pid = <7>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_test_smp2p_7_out {
+ compatible = "qcom,smp2pgpio_test_smp2p_7_out";
+ gpios = <&smp2pgpio_smp2p_7_out 0 0>;
+ };
+
+ smp2pgpio_smp2p_1_in: qcom,smp2pgpio-smp2p-1-in {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "smp2p";
+ qcom,remote-pid = <1>;
+ qcom,is-inbound;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_test_smp2p_1_in {
+ compatible = "qcom,smp2pgpio_test_smp2p_1_in";
+ gpios = <&smp2pgpio_smp2p_1_in 0 0>;
+ };
+
+ smp2pgpio_smp2p_1_out: qcom,smp2pgpio-smp2p-1-out {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "smp2p";
+ qcom,remote-pid = <1>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_test_smp2p_1_out {
+ compatible = "qcom,smp2pgpio_test_smp2p_1_out";
+ gpios = <&smp2pgpio_smp2p_1_out 0 0>;
+ };
+
+ smp2pgpio_ssr_smp2p_1_in: qcom,smp2pgpio-ssr-smp2p-1-in {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "slave-kernel";
+ qcom,remote-pid = <1>;
+ qcom,is-inbound;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ smp2pgpio_ssr_smp2p_1_out: qcom,smp2pgpio-ssr-smp2p-1-out {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "master-kernel";
+ qcom,remote-pid = <1>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ smp2pgpio_smp2p_4_in: qcom,smp2pgpio-smp2p-4-in {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "smp2p";
+ qcom,remote-pid = <4>;
+ qcom,is-inbound;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_test_smp2p_4_in {
+ compatible = "qcom,smp2pgpio_test_smp2p_4_in";
+ gpios = <&smp2pgpio_smp2p_4_in 0 0>;
+ };
+
+ smp2pgpio_smp2p_4_out: qcom,smp2pgpio-smp2p-4-out {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "smp2p";
+ qcom,remote-pid = <4>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_test_smp2p_4_out {
+ compatible = "qcom,smp2pgpio_test_smp2p_4_out";
+ gpios = <&smp2pgpio_smp2p_4_out 0 0>;
+ };
+
+ smp2pgpio_ssr_smp2p_4_in: qcom,smp2pgpio-ssr-smp2p-4-in {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "slave-kernel";
+ qcom,remote-pid = <4>;
+ qcom,is-inbound;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ smp2pgpio_ssr_smp2p_4_out: qcom,smp2pgpio-ssr-smp2p-4-out {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "master-kernel";
+ qcom,remote-pid = <4>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
new file mode 100644
index 00000000000..808d020a3cc
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
@@ -0,0 +1,1977 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "skeleton.dtsi"
+#include <dt-bindings/clock/msm-clocks-8916.h>
+#include <dt-bindings/clock/qcom,gcc-msm8916.h>
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM8916";
+ compatible = "qcom,msm8916";
+ qcom,msm-id = <206 0>,
+ <248 0>,
+ <249 0>,
+ <250 0>;
+
+ interrupt-parent = <&intc>;
+
+ chosen {
+ bootargs = "sched_enable_hmp=1";
+ };
+
+ aliases {
+ sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
+ sdhc2 = &sdhc_2; /* SDC2 SD card slot */
+
+ /* smdtty devices */
+ smd1 = &smdtty_apps_fm;
+ smd2 = &smdtty_apps_riva_bt_acl;
+ smd3 = &smdtty_apps_riva_bt_cmd;
+ smd4 = &smdtty_mbalbridge;
+ smd5 = &smdtty_apps_riva_ant_cmd;
+ smd6 = &smdtty_apps_riva_ant_data;
+ smd7 = &smdtty_data1;
+ smd8 = &smdtty_data4;
+ smd11 = &smdtty_data11;
+ smd21 = &smdtty_data21;
+ smd36 = &smdtty_loopback;
+
+ spi0 = &spi_0; /* SPI0 controller device */
+ i2c0 = &i2c_0; /* I2C0 controller device */
+ i2c5 = &i2c_5; /* I2C5 controller device */
+ i2c6 = &i2c_6; /* I2C6 NFC qup6 device */
+ i2c4 = &i2c_4; /* I2C4 controller device */
+ };
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ CPU0: cpu@0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a53";
+ reg = <0x0>;
+ enable-method = "qcom,arm-cortex-acc";
+ qcom,acc = <&acc0>;
+ next-level-cache = <&L2_0>;
+ L2_0: l2-cache {
+ compatible = "arm,arch-cache";
+ cache-level = <2>;
+ power-domain = <&l2ccc_0>;
+ };
+ };
+
+ CPU1: cpu@1 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a53";
+ reg = <0x1>;
+ enable-method = "qcom,arm-cortex-acc";
+ qcom,acc = <&acc1>;
+ next-level-cache = <&L2_0>;
+ };
+
+ CPU2: cpu@2 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a53";
+ reg = <0x2>;
+ enable-method = "qcom,arm-cortex-acc";
+ qcom,acc = <&acc2>;
+ next-level-cache = <&L2_0>;
+ };
+
+ CPU3: cpu@3 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a53";
+ reg = <0x3>;
+ enable-method = "qcom,arm-cortex-acc";
+ qcom,acc = <&acc3>;
+ next-level-cache = <&L2_0>;
+ };
+ };
+
+ soc: soc { };
+};
+
+#include "msm8916-coresight.dtsi"
+#include "msm8916-smp2p.dtsi"
+#include "msm8916-camera.dtsi"
+#include "msm8916-ipcrouter.dtsi"
+#include "msm-gdsc-8916.dtsi"
+#include "msm8916-iommu.dtsi"
+#include "msm8916-gpu.dtsi"
+#include "msm8916-mdss.dtsi"
+#include "msm8916-mdss-pll.dtsi"
+#include "msm8916-iommu-domains.dtsi"
+#include "msm8916-bus.dtsi"
+#include "msm8916-camera.dtsi"
+
+&soc {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0 0 0 0xffffffff>;
+ compatible = "simple-bus";
+
+ l2ccc_0: clock-controller@b011000 {
+ compatible = "qcom,8916-l2ccc";
+ reg = <0x0b011000 0x1000>;
+ };
+
+ acc0:clock-controller@b088000 {
+ compatible = "qcom,arm-cortex-acc";
+ reg = <0x0b088000 0x1000>,
+ <0x0b008000 0x1000>;
+ };
+
+ acc1:clock-controller@b098000 {
+ compatible = "qcom,arm-cortex-acc";
+ reg = <0x0b098000 0x1000>,
+ <0x0b008000 0x1000>;
+ };
+
+ acc2:clock-controller@b0a8000 {
+ compatible = "qcom,arm-cortex-acc";
+ reg = <0x0b0a8000 0x1000>,
+ <0x0b008000 0x1000>;
+ };
+
+ acc3:clock-controller@b0b8000 {
+ compatible = "qcom,arm-cortex-acc";
+ reg = <0x0b0b8000 0x1000>,
+ <0x0b008000 0x1000>;
+ };
+
+ intc: interrupt-controller@b000000 {
+ compatible = "qcom,msm-qgic2";
+ interrupt-controller;
+ #interrupt-cells = <3>;
+ reg = <0x0b000000 0x1000>,
+ <0x0b002000 0x1000>;
+ };
+
+ msm_gpio: pinctrl@1000000 {
+ compatible = "qcom,msm8916-pinctrl";
+ reg = <0x1000000 0x300000>;
+ interrupts = <0 208 0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ wcd9xxx_intc: wcd9xxx_irq {
+ compatible = "qcom,wcd9xxx-irq";
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ interrupt-parent = <&intc>;
+ interrupts = <0 68 0>;
+ interrupt-names = "cdc-int";
+ };
+
+ restart@4ab000 {
+ compatible = "qcom,pshold";
+ reg = <0x4ab000 0x4>;
+ };
+
+ qcom,mpm2-sleep-counter@4a3000 {
+ compatible = "qcom,mpm2-sleep-counter";
+ reg = <0x4a3000 0x1000>;
+ clock-frequency = <32768>;
+ };
+
+ timer {
+ compatible = "arm,armv7-timer";
+ interrupts = <1 2 0xf08>,
+ <1 3 0xf08>,
+ <1 4 0xf08>,
+ <1 1 0xf08>;
+ clock-frequency = <19200000>;
+ };
+
+ timer@b020000 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ compatible = "arm,armv7-timer-mem";
+ reg = <0xb020000 0x1000>;
+ clock-frequency = <19200000>;
+
+ frame@b021000 {
+ frame-number = <0>;
+ interrupts = <0 8 0x4>,
+ <0 7 0x4>;
+ reg = <0xb021000 0x1000>,
+ <0xb022000 0x1000>;
+ };
+
+ frame@b023000 {
+ frame-number = <1>;
+ interrupts = <0 9 0x4>;
+ reg = <0xb023000 0x1000>;
+ status = "disabled";
+ };
+
+ frame@b024000 {
+ frame-number = <2>;
+ interrupts = <0 10 0x4>;
+ reg = <0xb024000 0x1000>;
+ status = "disabled";
+ };
+
+ frame@b025000 {
+ frame-number = <3>;
+ interrupts = <0 11 0x4>;
+ reg = <0xb025000 0x1000>;
+ status = "disabled";
+ };
+
+ frame@b026000 {
+ frame-number = <4>;
+ interrupts = <0 12 0x4>;
+ reg = <0xb026000 0x1000>;
+ status = "disabled";
+ };
+
+ frame@b027000 {
+ frame-number = <5>;
+ interrupts = <0 13 0x4>;
+ reg = <0xb027000 0x1000>;
+ status = "disabled";
+ };
+
+ frame@b028000 {
+ frame-number = <6>;
+ interrupts = <0 14 0x4>;
+ reg = <0xb028000 0x1000>;
+ status = "disabled";
+ };
+ };
+
+ clock_rpm: qcom,rpmcc@1800000 {
+ compatible = "qcom,rpmcc-8916";
+ reg = <0x1800000 0x80000>;
+ reg-names = "cc_base";
+ #clock-cells = <1>;
+
+ };
+
+ clock_gcc: qcom,gcc@1800000 {
+ compatible = "qcom,gcc-msm8916";
+ #clock-cells = <1>;
+ #reset-cells = <1>;
+ reg = <0x1800000 0x80000>;
+ vdd_dig-supply = <&pm8916_s1_corner>;
+ vdd_sr2_dig-supply = <&pm8916_s1_corner_ao>;
+ vdd_sr2_pll-supply = <&pm8916_l7_ao>;
+ //clocks = <&clock_rpm clk_xo_clk_src>,
+ // <&clock_rpm clk_xo_a_clk_src>;
+ //clock-names = "xo", "xo_a";
+ };
+
+ clock_gcc_mdss: qcom,gcc-mdss@1a98300 {
+ compatible = "qcom,gcc-mdss-8916";
+ clocks = <&mdss_dsi0_pll clk_pixel_clk_src>,
+ <&mdss_dsi0_pll clk_byte_clk_src>;
+ clock-names = "pixel_src", "byte_src";
+ #clock-cells = <1>;
+ };
+
+ clock_debug: qcom,cc-debug@1874000 {
+ compatible = "qcom,cc-debug-8916";
+ reg = <0x1874000 0x4>,
+ <0xb01101c 0x8>;
+ reg-names = "cc_base", "meas";
+ clocks = <&clock_rpm clk_rpm_debug_mux>;
+ clock-names = "rpm_debug_mux";
+ #clock-cells = <1>;
+ };
+
+ tsens: tsens@4a8000 {
+ compatible = "qcom,msm8916-tsens";
+ reg = <0x4a8000 0x2000>,
+ <0x5c000 0x1000>;
+ reg-names = "tsens_physical", "tsens_eeprom_physical";
+ interrupts = <0 184 0>;
+ interrupt-names = "tsens-upper-lower";
+ qcom,sensors = <5>;
+ qcom,slope = <3200 3200 3200 3200 3200>;
+ qcom,sensor-id = <0 1 2 4 5>;
+ };
+
+ qcom,clock-a7@0b011050 {
+ compatible = "qcom,clock-a53-8916";
+ reg = <0x0b011050 0x8>,
+ <0x0005c004 0x8>;
+ reg-names = "rcg-base", "efuse1";
+ qcom,safe-freq = < 400000000 >;
+ cpu-vdd-supply = <&apc_vreg_corner>;
+ clocks = <&clock_gcc clk_gpll0_ao_clk_src>,
+ <&clock_gcc clk_a53sspll>;
+ clock-names = "clk-4", "clk-5";
+ qcom,speed0-bin-v0 =
+ < 0 0>,
+ < 200000000 1>,
+ < 400000000 2>,
+ < 533333000 3>,
+ < 800000000 4>,
+ < 998400000 5>,
+ < 1094400000 6>,
+ < 1152000000 7>,
+ < 1209600000 8>;
+
+ qcom,speed1-bin-v0 =
+ < 0 0>,
+ < 200000000 1>,
+ < 400000000 2>,
+ < 533333000 3>,
+ < 800000000 4>,
+ < 998400000 5>,
+ < 1094400000 6>,
+ < 1152000000 7>;
+ };
+
+ cpubw: qcom,cpubw {
+ compatible = "qcom,devbw";
+ governor = "cpufreq";
+ qcom,src-dst-ports = <1 512>;
+ qcom,active-only;
+ qcom,bw-tbl =
+ < 762 /* 100 MHz */>,
+ < 1525 /* 200 MHz */>,
+ < 3051 /* 400 MHz */>,
+ < 4066 /* 533 MHz */>;
+ qcom,ab-percent = < 30 >;
+ };
+
+ qcom,armbw-pm {
+ compatible = "qcom,armbw-pm";
+ interrupts = <1 7 0xF1>;
+ qcom,bytes-per-beat = <16>;
+ };
+
+ devfreq-cpufreq {
+ cpubw-cpufreq {
+ target-dev = <&cpubw>;
+ cpu-to-dev-map =
+ < 400000 762>,
+ < 800000 1525>,
+ < 1094400 3051>,
+ < 1152000 4066>;
+ };
+ };
+
+ qcom,msm-cpufreq@0 {
+ reg = <0 4>;
+ compatible = "qcom,msm-cpufreq";
+ qcom,cpufreq-table =
+ < 200000 >,
+ < 400000 >,
+ < 533330 >,
+ < 800000 >,
+ < 998400 >,
+ < 1094400 >,
+ < 1152000 >,
+ < 1209600 >;
+ };
+
+ qcom,sps {
+ compatible = "qcom,msm_sps_4k";
+ qcom,device-type = <3>;
+ qcom,pipe-attr-ee;
+ };
+
+ blsp1_uart1: uart@78af000 {
+ compatible = "qcom,msm-hsuart-v14";
+ reg = <0x78af000 0x200>,
+ <0x7884000 0x23000>;
+ reg-names = "core_mem", "bam_mem";
+ interrupt-names = "core_irq", "bam_irq", "wakeup_irq";
+ #address-cells = <0>;
+ interrupt-parent = <&blsp1_uart1>;
+ interrupts = <0 1 2>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0xffffffff>;
+ interrupt-map = <0 &intc 0 107 0
+ 1 &intc 0 238 0
+ 2 &msm_gpio 1 0>;
+
+ qcom,bam-tx-ep-pipe-index = <0>;
+ qcom,bam-rx-ep-pipe-index = <1>;
+ qcom,master-id = <86>;
+
+ clocks = <&clock_gcc clk_gcc_blsp1_uart1_apps_clk>,
+ <&clock_gcc clk_gcc_blsp1_ahb_clk>;
+ clock-names = "core_clk", "iface_clk";
+
+ qcom,msm-bus,name = "blsp1_uart1";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <86 512 0 0>,
+ <86 512 500 800>;
+ pinctrl-names = "sleep", "default";
+ pinctrl-0 = <&hsuart_sleep>;
+ pinctrl-1 = <&hsuart_active>;
+ status = "disabled";
+ };
+
+ blsp1_uart2: serial@78b0000 {
+ compatible = "qcom,msm-lsuart-v14", "qcom,msm-uartdm-v1.4",
+ "qcom,msm-uartdm";
+ reg = <0x78b0000 0x200>;
+ interrupts = <0 108 0>;
+ status = "disabled";
+ //clocks = <&clock_gcc clk_gcc_blsp1_uart2_apps_clk>,
+ // <&clock_gcc clk_gcc_blsp1_ahb_clk>;
+ clocks = <&clock_gcc GCC_BLSP1_UART2_APPS_CLK>, <&clock_gcc GCC_BLSP1_AHB_CLK>;
+ clock-names = "core", "iface";
+ };
+
+ qcom,usbbam@78c4000 {
+ compatible = "qcom,usb-bam-msm";
+ reg = <0x78c4000 0x15000>;
+ reg-names = "hsusb";
+ interrupts = <0 135 0>;
+ interrupt-names = "hsusb";
+ qcom,usb-bam-num-pipes = <2>;
+ qcom,usb-bam-fifo-baseaddr = <0x08603800>;
+ qcom,ignore-core-reset-ack;
+ qcom,disable-clk-gating;
+
+ qcom,pipe0 {
+ label = "hsusb-qdss-in-0";
+ qcom,usb-bam-mem-type = <3>;
+ qcom,bam-type = <1>;
+ qcom,dir = <1>;
+ qcom,pipe-num = <0>;
+ qcom,peer-bam = <1>;
+ qcom,src-bam-physical-address = <0x884000>;
+ qcom,src-bam-pipe-index = <0>;
+ qcom,dst-bam-physical-address = <0x78c4000>;
+ qcom,dst-bam-pipe-index = <0>;
+ qcom,data-fifo-offset = <0x0>;
+ qcom,data-fifo-size = <0x600>;
+ qcom,descriptor-fifo-offset = <0x600>;
+ qcom,descriptor-fifo-size = <0x200>;
+ qcom,reset-bam-on-connect;
+ };
+ };
+
+ usb_otg: usb@78d9000 {
+ compatible = "qcom,hsusb-otg";
+
+ reg = <0x78d9000 0x400>;
+ reg-names = "core";
+ interrupts = <0 134 0>,<0 140 0>;
+ interrupt-names = "core_irq", "async_irq";
+
+ hsusb_vdd_dig-supply = <&pm8916_s1_corner>;
+ HSUSB_1p8-supply = <&pm8916_l7>;
+ HSUSB_3p3-supply = <&pm8916_l13>;
+ qcom,vdd-voltage-level = <1 5 7>;
+
+ qcom,hsusb-otg-phy-init-seq =
+ <0x44 0x80 0x6B 0x81 0x24 0x82 0x13 0x83 0xffffffff>;
+ qcom,hsusb-otg-phy-type = <2>;
+ qcom,hsusb-otg-mode = <1>;
+ qcom,hsusb-otg-otg-control = <2>;
+ qcom,dp-manual-pullup;
+ qcom,hsusb-otg-mpm-dpsehv-int = <49>;
+ qcom,hsusb-otg-mpm-dmsehv-int = <58>;
+
+ qcom,msm-bus,name = "usb2";
+ qcom,msm-bus,num-cases = <3>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <87 512 0 0>,
+ <87 512 80000 0>,
+ <87 512 6000 6000>;
+ clocks = <&clock_gcc GCC_USB_HS_AHB_CLK>,
+ <&clock_gcc GCC_USB_HS_SYSTEM_CLK>,
+ <&clock_gcc GCC_USB2A_PHY_SLEEP_CLK>,
+ <&clock_rpm clk_bimc_usb_a_clk>,
+ <&clock_rpm clk_snoc_usb_a_clk>,
+ <&clock_rpm clk_pcnoc_usb_a_clk>,
+ <&clock_rpm clk_xo_otg_clk>;
+ clock-names = "iface_clk", "core_clk", "sleep_clk",
+ "bimc_clk", "snoc_clk", "pcnoc_clk",
+ "xo";
+ qcom,bus-clk-rate = <400000000 200000000 100000000>;
+ };
+
+ android_usb: android_usb@086000c8 {
+ compatible = "qcom,android-usb";
+ reg = <0x086000c8 0xc8>;
+ qcom,pm-qos-latency = <2 1001 12701>;
+ qcom,streaming-func = "mtp";
+ qcom,android-usb-uicc-nluns = /bits/ 8 <1>;
+ };
+
+ qcom,rmtfs_sharedmem@8e580000 {
+ compatible = "qcom,sharedmem-uio";
+ reg = <0x86700000 0xe0000>;
+ reg-names = "rmtfs";
+ qcom,client-id = <0x00000001>;
+ };
+
+ qcom,dsp_sharedmem@8e6e0000 {
+ compatible = "qcom,sharedmem-uio";
+ reg = <0x867e0000 0x20000>;
+ reg-names = "rfsa_dsp";
+ qcom,client-id = <0x011013ec>;
+ };
+
+ qcom,mdm_sharedmem@8e6e0000 {
+ compatible = "qcom,sharedmem-uio";
+ reg = <0x867e0000 0x20000>;
+ reg-names = "rfsa_mdm";
+ qcom,client-id = <0x011013ed>;
+ };
+
+ jtag_fuse: jtagfuse@5e01c {
+ compatible = "qcom,jtag-fuse";
+ reg = <0x5e01c 0x8>;
+ reg-names = "fuse-base";
+ };
+
+ jtag_mm0: jtagmm@85c000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0x85c000 0x1000>,
+ <0x850000 0x1000>;
+ reg-names = "etm-base","debug-base";
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,coresight-jtagmm-cpu = <&CPU0>;
+ };
+
+ jtag_mm1: jtagmm@85d000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0x85d000 0x1000>,
+ <0x852000 0x1000>;
+ reg-names = "etm-base","debug-base";
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,coresight-jtagmm-cpu = <&CPU1>;
+ };
+
+ jtag_mm2: jtagmm@85e000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0x85e000 0x1000>,
+ <0x854000 0x1000>;
+ reg-names = "etm-base","debug-base";
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,coresight-jtagmm-cpu = <&CPU2>;
+ };
+
+ jtag_mm3: jtagmm@85f000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0x85f000 0x1000>,
+ <0x856000 0x1000>;
+ reg-names = "etm-base","debug-base";
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,coresight-jtagmm-cpu = <&CPU3>;
+ };
+
+ sdhc_1: sdhci@07824000 {
+ compatible = "qcom,sdhci-msm";
+ reg = <0x07824900 0x11c>, <0x07824000 0x800>;
+ reg-names = "hc_mem", "core_mem";
+
+ interrupts = <0 123 0>, <0 138 0>;
+ interrupt-names = "hc_irq", "pwr_irq";
+
+ qcom,bus-width = <8>;
+
+ qcom,cpu-dma-latency-us = <701>;
+ qcom,msm-bus,name = "sdhc1";
+ qcom,msm-bus,num-cases = <8>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps = <78 512 0 0>, /* No vote */
+ <78 512 1600 3200>, /* 400 KB/s*/
+ <78 512 80000 160000>, /* 20 MB/s */
+ <78 512 100000 200000>, /* 25 MB/s */
+ <78 512 200000 400000>, /* 50 MB/s */
+ <78 512 400000 800000>, /* 100 MB/s */
+ <78 512 400000 800000>, /* 200 MB/s */
+ <78 512 2048000 4096000>; /* Max. bandwidth */
+ qcom,bus-bw-vectors-bps = <0 400000 20000000 25000000 50000000
+ 100000000 200000000 4294967295>;
+ clocks = <&clock_gcc GCC_SDCC1_AHB_CLK>,
+ <&clock_gcc GCC_SDCC1_APPS_CLK>;
+ clock-names = "iface_clk", "core_clk";
+
+ qcom,clk-rates = <400000 25000000 50000000 100000000 177770000>;
+ qcom,bus-speed-mode = "HS200_1p8v", "DDR_1p8v";
+
+ status = "disabled";
+ };
+
+ sdhc_2: sdhci@07864000 {
+ compatible = "qcom,sdhci-msm";
+ reg = <0x07864900 0x11c>, <0x07864000 0x800>;
+ reg-names = "hc_mem", "core_mem";
+
+ interrupts = <0 125 0>, <0 221 0>;
+ interrupt-names = "hc_irq", "pwr_irq";
+
+ qcom,bus-width = <4>;
+
+ qcom,cpu-dma-latency-us = <701>;
+ qcom,msm-bus,name = "sdhc2";
+ qcom,msm-bus,num-cases = <8>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps = <81 512 0 0>, /* No vote */
+ <81 512 1600 3200>, /* 400 KB/s*/
+ <81 512 80000 160000>, /* 20 MB/s */
+ <81 512 100000 200000>, /* 25 MB/s */
+ <81 512 200000 400000>, /* 50 MB/s */
+ <81 512 400000 800000>, /* 100 MB/s */
+ <81 512 400000 800000>, /* 200 MB/s */
+ <81 512 2048000 4096000>; /* Max. bandwidth */
+ qcom,bus-bw-vectors-bps = <0 400000 20000000 25000000 50000000
+ 100000000 200000000 4294967295>;
+ clocks = <&clock_gcc GCC_SDCC2_AHB_CLK>,
+ <&clock_gcc GCC_SDCC2_APPS_CLK>;
+ clock-names = "iface_clk", "core_clk";
+
+ qcom,clk-rates = <400000 25000000 50000000 100000000 200000000>;
+
+ status = "disabled";
+ };
+
+ qcom,ipc-spinlock@1905000 {
+ compatible = "qcom,ipc-spinlock-sfpb";
+ reg = <0x1905000 0x8000>;
+ qcom,num-locks = <8>;
+ };
+
+ qcom,msm-adsp-loader {
+ compatible = "qcom,adsp-loader";
+ qcom,adsp-state = <0>;
+ qcom,proc-img-to-load = "modem";
+ };
+
+ qcom_crypto: qcrypto@720000 {
+ compatible = "qcom,qcrypto";
+ reg = <0x720000 0x20000>,
+ <0x704000 0x20000>;
+ reg-names = "crypto-base","crypto-bam-base";
+ interrupts = <0 207 0>;
+ qcom,bam-pipe-pair = <2>;
+ qcom,ce-hw-instance = <0>;
+ qcom,ce-device = <0>;
+ qcom,msm-bus,name = "qcrypto-noc";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <55 512 0 0>,
+ <55 512 3936000 393600>;
+ clocks = <&clock_gcc CRYPTO_CLK_SRC>,
+ <&clock_gcc GCC_CRYPTO_CLK>,
+ <&clock_gcc GCC_CRYPTO_AHB_CLK>,
+ <&clock_gcc GCC_CRYPTO_AXI_CLK>;
+ clock-names = "core_clk_src", "core_clk",
+ "iface_clk", "bus_clk";
+ qcom,use-sw-aes-cbc-ecb-ctr-algo;
+ qcom,use-sw-aes-xts-algo;
+ qcom,use-sw-aes-ccm-algo;
+ qcom,use-sw-ahash-algo;
+ status = "disabled";
+ qcom,ce-opp-freq = <100000000>;
+ };
+
+ qcom_cedev: qcedev@720000 {
+ compatible = "qcom,qcedev";
+ reg = <0x720000 0x20000>,
+ <0x704000 0x20000>;
+ reg-names = "crypto-base","crypto-bam-base";
+ interrupts = <0 207 0>;
+ qcom,bam-pipe-pair = <1>;
+ qcom,ce-hw-instance = <0>;
+ qcom,ce-device = <0>;
+ qcom,ce-hw-shared;
+ qcom,msm-bus,name = "qcedev-noc";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <55 512 0 0>,
+ <55 512 3936000 393600>;
+ clocks = <&clock_gcc CRYPTO_CLK_SRC>,
+ <&clock_gcc GCC_CRYPTO_CLK>,
+ <&clock_gcc GCC_CRYPTO_AHB_CLK>,
+ <&clock_gcc GCC_CRYPTO_AXI_CLK>;
+ clock-names = "core_clk_src", "core_clk",
+ "iface_clk", "bus_clk";
+ status = "disabled";
+ qcom,ce-opp-freq = <100000000>;
+ };
+
+ qcom_seecom: qseecom@86000000 {
+ compatible = "qcom,qseecom";
+ reg = <0x86000000 0x300000>;
+ reg-names = "secapp-region";
+ qcom,disk-encrypt-pipe-pair = <2>;
+ qcom,hlos-ce-hw-instance = <0>;
+ qcom,qsee-ce-hw-instance = <0>;
+ qcom,msm-bus,name = "qseecom-noc";
+ qcom,msm-bus,num-cases = <4>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,support-bus-scaling;
+ qcom,support-fde;
+ qcom,msm-bus,vectors-KBps =
+ <55 512 0 0>,
+ <55 512 0 0>,
+ <55 512 120000 1200000>,
+ <55 512 393600 3936000>;
+ clocks = <&clock_gcc CRYPTO_CLK_SRC>,
+ <&clock_gcc GCC_CRYPTO_CLK>,
+ <&clock_gcc GCC_CRYPTO_AHB_CLK>,
+ <&clock_gcc GCC_CRYPTO_AXI_CLK>;
+ clock-names = "core_clk_src", "core_clk",
+ "iface_clk", "bus_clk";
+ status = "disabled";
+ qcom,ce-opp-freq = <100000000>;
+ };
+
+ qcom,wdt@b017000 {
+ compatible = "qcom,msm-watchdog";
+ reg = <0xb017000 0x1000>;
+ reg-names = "wdt-base";
+ interrupts = <0 3 0>, <0 4 0>;
+ qcom,bark-time = <11000>;
+ qcom,pet-time = <10000>;
+ qcom,ipi-ping;
+ };
+
+ qcom,msm-rtb {
+ compatible = "qcom,msm-rtb";
+ qcom,rtb-size = <0x100000>;
+ };
+
+ qcom,smem@86300000 {
+ compatible = "qcom,smem";
+ reg = <0x86300000 0x100000>,
+ <0x0b011008 0x4>,
+ <0x60000 0x8000>,
+ <0x193D000 0x8>;
+ reg-names = "smem", "irq-reg-base", "aux-mem1", "smem_targ_info_reg";
+ qcom,mpu-enabled;
+
+ qcom,smd-modem {
+ compatible = "qcom,smd";
+ qcom,smd-edge = <0>;
+ qcom,smd-irq-offset = <0x0>;
+ qcom,smd-irq-bitmask = <0x1000>;
+ interrupts = <0 25 1>;
+ label = "modem";
+ };
+
+ qcom,smsm-modem {
+ compatible = "qcom,smsm";
+ qcom,smsm-edge = <0>;
+ qcom,smsm-irq-offset = <0x0>;
+ qcom,smsm-irq-bitmask = <0x2000>;
+ interrupts = <0 26 1>;
+ };
+
+ qcom,smd-wcnss {
+ compatible = "qcom,smd";
+ qcom,smd-edge = <6>;
+ qcom,smd-irq-offset = <0x0>;
+ qcom,smd-irq-bitmask = <0x20000>;
+ interrupts = <0 142 1>;
+ label = "wcnss";
+ };
+
+ qcom,smsm-wcnss {
+ compatible = "qcom,smsm";
+ qcom,smsm-edge = <6>;
+ qcom,smsm-irq-offset = <0x0>;
+ qcom,smsm-irq-bitmask = <0x80000>;
+ interrupts = <0 144 1>;
+ };
+
+ qcom,smd-rpm {
+ compatible = "qcom,smd";
+ qcom,smd-edge = <15>;
+ qcom,smd-irq-offset = <0x0>;
+ qcom,smd-irq-bitmask = <0x1>;
+ interrupts = <0 168 1>;
+ label = "rpm";
+ qcom,irq-no-suspend;
+ qcom,not-loadable;
+ };
+ };
+
+ rpm_bus: qcom,rpm-smd {
+ compatible = "qcom,rpm-smd";
+ rpm-channel-name = "rpm_requests";
+ rpm-channel-type = <15>; /* SMD_APPS_RPM */
+ };
+
+ qcom,bam_dmux@4044000 {
+ compatible = "qcom,bam_dmux";
+ reg = <0x4044000 0x19000>;
+ interrupts = <0 29 1>;
+ qcom,rx-ring-size = <32>;
+ qcom,max-rx-mtu = <4096>;
+ };
+
+ qcom_tzlog: tz-log@8600720 {
+ compatible = "qcom,tz-log";
+ reg = <0x08600720 0x1000>;
+ status = "disabled";
+ };
+
+ qcom_rng: qrng@22000 {
+ compatible = "qcom,msm-rng";
+ reg = <0x22000 0x200>;
+ qcom,msm-rng-iface-clk;
+ qcom,msm-bus,name = "msm-rng-noc";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <1 618 0 0>, /* No vote */
+ <1 618 0 800>; /* 100 MB/s */
+ clocks = <&clock_gcc GCC_PRNG_AHB_CLK>;
+ clock-names = "iface_clk";
+ status = "disabled";
+ };
+
+ qcom,msm-pcm {
+ compatible = "qcom,msm-pcm-dsp";
+ qcom,msm-pcm-dsp-id = <0>;
+ };
+
+ qcom,msm-pcm-routing {
+ compatible = "qcom,msm-pcm-routing";
+ };
+
+ qcom,msm-pcm-low-latency {
+ compatible = "qcom,msm-pcm-dsp";
+ qcom,msm-pcm-dsp-id = <1>;
+ qcom,msm-pcm-low-latency;
+ qcom,latency-level = "ultra";
+ };
+
+ qcom,msm-pcm-lpa {
+ compatible = "qcom,msm-pcm-lpa";
+ };
+
+ qcom,msm-compress-dsp {
+ compatible = "qcom,msm-compress-dsp";
+ };
+
+ qcom,msm-voip-dsp {
+ compatible = "qcom,msm-voip-dsp";
+ };
+
+ qcom,msm-pcm-voice {
+ compatible = "qcom,msm-pcm-voice";
+ qcom,destroy-cvd;
+ qcom,vote-bms;
+ };
+
+ qcom,msm-stub-codec {
+ compatible = "qcom,msm-stub-codec";
+ };
+
+ qcom,msm-dai-fe {
+ compatible = "qcom,msm-dai-fe";
+ };
+
+ qcom,msm-pcm-afe {
+ compatible = "qcom,msm-pcm-afe";
+ };
+
+ qcom,msm-voice-svc {
+ compatible = "qcom,msm-voice-svc";
+ };
+
+ qcom,msm-pcm-loopback {
+ compatible = "qcom,msm-pcm-loopback";
+ };
+
+ qcom,msm-dai-mi2s {
+ compatible = "qcom,msm-dai-mi2s";
+ qcom,msm-dai-q6-mi2s-prim {
+ compatible = "qcom,msm-dai-q6-mi2s";
+ qcom,msm-dai-q6-mi2s-dev-id = <0>;
+ qcom,msm-mi2s-rx-lines = <3>;
+ qcom,msm-mi2s-tx-lines = <0>;
+ };
+
+ qcom,msm-dai-q6-mi2s-sec {
+ compatible = "qcom,msm-dai-q6-mi2s";
+ qcom,msm-dai-q6-mi2s-dev-id = <1>;
+ qcom,msm-mi2s-rx-lines = <1>;
+ qcom,msm-mi2s-tx-lines = <0>;
+ };
+
+ qcom,msm-dai-q6-mi2s-quat {
+ compatible = "qcom,msm-dai-q6-mi2s";
+ qcom,msm-dai-q6-mi2s-dev-id = <3>;
+ qcom,msm-mi2s-rx-lines = <1>;
+ qcom,msm-mi2s-tx-lines = <2>;
+ };
+
+ qcom,msm-dai-q6-mi2s-tert {
+ compatible = "qcom,msm-dai-q6-mi2s";
+ qcom,msm-dai-q6-mi2s-dev-id = <2>;
+ qcom,msm-mi2s-rx-lines = <0>;
+ qcom,msm-mi2s-tx-lines = <3>;
+ };
+ };
+
+ qcom,msm-dai-q6-hdmi {
+ compatible = "qcom,msm-dai-q6-hdmi";
+ qcom,msm-dai-q6-dev-id = <8>;
+ };
+
+ qcom,msm-lsm-client {
+ compatible = "qcom,msm-lsm-client";
+ };
+
+ qcom,msm-dai-q6 {
+ compatible = "qcom,msm-dai-q6";
+ qcom,msm-dai-q6-sb-0-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16384>;
+ };
+
+ qcom,msm-dai-q6-sb-0-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16385>;
+ };
+
+ qcom,msm-dai-q6-sb-1-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16386>;
+ };
+
+ qcom,msm-dai-q6-sb-1-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16387>;
+ };
+
+ qcom,msm-dai-q6-sb-3-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16390>;
+ };
+
+ qcom,msm-dai-q6-sb-3-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16391>;
+ };
+
+ qcom,msm-dai-q6-sb-4-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16392>;
+ };
+
+ qcom,msm-dai-q6-sb-4-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16393>;
+ };
+
+ qcom,msm-dai-q6-bt-sco-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <12288>;
+ };
+
+ qcom,msm-dai-q6-bt-sco-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <12289>;
+ };
+
+ qcom,msm-dai-q6-int-fm-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <12292>;
+ };
+
+ qcom,msm-dai-q6-int-fm-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <12293>;
+ };
+
+ qcom,msm-dai-q6-be-afe-pcm-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <224>;
+ };
+
+ qcom,msm-dai-q6-be-afe-pcm-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <225>;
+ };
+
+ qcom,msm-dai-q6-afe-proxy-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <241>;
+ };
+
+ qcom,msm-dai-q6-afe-proxy-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <240>;
+ };
+
+ qcom,msm-dai-q6-incall-record-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <32771>;
+ };
+
+ qcom,msm-dai-q6-incall-record-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <32772>;
+ };
+
+ qcom,msm-dai-q6-incall-music-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <32773>;
+ };
+
+ qcom,msm-dai-q6-incall-music-2-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <32770>;
+ };
+ };
+
+ qcom,msm-pcm-hostless {
+ compatible = "qcom,msm-pcm-hostless";
+ };
+
+ qcom,msm-pri-auxpcm {
+ compatible = "qcom,msm-auxpcm-dev";
+ qcom,msm-cpudai-auxpcm-mode = <0>, <0>;
+ qcom,msm-cpudai-auxpcm-sync = <1>, <1>;
+ qcom,msm-cpudai-auxpcm-frame = <5>, <4>;
+ qcom,msm-cpudai-auxpcm-quant = <2>, <2>;
+ qcom,msm-cpudai-auxpcm-num-slots = <1>, <1>;
+ qcom,msm-cpudai-auxpcm-slot-mapping = <1>, <1>;
+ qcom,msm-cpudai-auxpcm-data = <0>, <0>;
+ qcom,msm-cpudai-auxpcm-pcm-clk-rate = <2048000>, <2048000>;
+ qcom,msm-auxpcm-interface = "primary";
+ };
+
+ qcom,msm-audio-ion {
+ compatible = "qcom,msm-audio-ion";
+ };
+
+ qcom,smdtty {
+ compatible = "qcom,smdtty";
+
+ smdtty_apps_fm: qcom,smdtty-apps-fm {
+ qcom,smdtty-remote = "wcnss";
+ qcom,smdtty-port-name = "APPS_FM";
+ };
+
+ smdtty_apps_riva_bt_acl: smdtty-apps-riva-bt-acl {
+ qcom,smdtty-remote = "wcnss";
+ qcom,smdtty-port-name = "APPS_RIVA_BT_ACL";
+ };
+
+ smdtty_apps_riva_bt_cmd: qcom,smdtty-apps-riva-bt-cmd {
+ qcom,smdtty-remote = "wcnss";
+ qcom,smdtty-port-name = "APPS_RIVA_BT_CMD";
+ };
+
+ smdtty_mbalbridge: qcom,smdtty-mbalbridge {
+ qcom,smdtty-remote = "modem";
+ qcom,smdtty-port-name = "MBALBRIDGE";
+ };
+
+ smdtty_apps_riva_ant_cmd: smdtty-apps-riva-ant-cmd {
+ qcom,smdtty-remote = "wcnss";
+ qcom,smdtty-port-name = "APPS_RIVA_ANT_CMD";
+ };
+
+ smdtty_apps_riva_ant_data: smdtty-apps-riva-ant-data {
+ qcom,smdtty-remote = "wcnss";
+ qcom,smdtty-port-name = "APPS_RIVA_ANT_DATA";
+ };
+
+ smdtty_data1: qcom,smdtty-data1 {
+ qcom,smdtty-remote = "modem";
+ qcom,smdtty-port-name = "DATA1";
+ };
+
+ smdtty_data4: qcom,smdtty-data4 {
+ qcom,smdtty-remote = "modem";
+ qcom,smdtty-port-name = "DATA4";
+ };
+
+ smdtty_data11: qcom,smdtty-data11 {
+ qcom,smdtty-remote = "modem";
+ qcom,smdtty-port-name = "DATA11";
+ };
+
+ smdtty_data21: qcom,smdtty-data21 {
+ qcom,smdtty-remote = "modem";
+ qcom,smdtty-port-name = "DATA21";
+ };
+
+ smdtty_loopback: smdtty-loopback {
+ qcom,smdtty-remote = "modem";
+ qcom,smdtty-port-name = "LOOPBACK";
+ qcom,smdtty-dev-name = "LOOPBACK_TTY";
+ };
+ };
+
+ qcom,smdpkt {
+ compatible = "qcom,smdpkt";
+
+ qcom,smdpkt-data5-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA5_CNTL";
+ qcom,smdpkt-dev-name = "smdcntl0";
+ };
+
+ qcom,smdpkt-data6-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA6_CNTL";
+ qcom,smdpkt-dev-name = "smdcntl1";
+ };
+
+ qcom,smdpkt-data7-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA7_CNTL";
+ qcom,smdpkt-dev-name = "smdcntl2";
+ };
+
+ qcom,smdpkt-data8-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA8_CNTL";
+ qcom,smdpkt-dev-name = "smdcntl3";
+ };
+
+ qcom,smdpkt-data9-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA9_CNTL";
+ qcom,smdpkt-dev-name = "smdcntl4";
+ };
+
+ qcom,smdpkt-data12-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA12_CNTL";
+ qcom,smdpkt-dev-name = "smdcntl5";
+ };
+
+ qcom,smdpkt-data13-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA13_CNTL";
+ qcom,smdpkt-dev-name = "smdcntl6";
+ };
+
+ qcom,smdpkt-data14-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA14_CNTL";
+ qcom,smdpkt-dev-name = "smdcntl7";
+ };
+
+ qcom,smdpkt-data15-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA15_CNTL";
+ qcom,smdpkt-dev-name = "smdcntl9";
+ };
+
+ qcom,smdpkt-data16-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA16_CNTL";
+ qcom,smdpkt-dev-name = "smdcntl10";
+ };
+
+ qcom,smdpkt-data17-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA17_CNTL";
+ qcom,smdpkt-dev-name = "smdcntl11";
+ };
+
+ qcom,smdpkt-data22 {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA22";
+ qcom,smdpkt-dev-name = "smd22";
+ };
+
+ qcom,smdpkt-data23-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA23_CNTL";
+ qcom,smdpkt-dev-name = "smdcnt_rev0";
+ };
+
+ qcom,smdpkt-data24-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA24_CNTL";
+ qcom,smdpkt-dev-name = "smdcnt_rev1";
+ };
+
+ qcom,smdpkt-data25-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA25_CNTL";
+ qcom,smdpkt-dev-name = "smdcnt_rev2";
+ };
+
+ qcom,smdpkt-data26-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA26_CNTL";
+ qcom,smdpkt-dev-name = "smdcnt_rev3";
+ };
+
+ qcom,smdpkt-data27-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA27_CNTL";
+ qcom,smdpkt-dev-name = "smdcnt_rev4";
+ };
+
+ qcom,smdpkt-data28-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA28_CNTL";
+ qcom,smdpkt-dev-name = "smdcnt_rev5";
+ };
+
+ qcom,smdpkt-data29-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA29_CNTL";
+ qcom,smdpkt-dev-name = "smdcnt_rev6";
+ };
+
+ qcom,smdpkt-data30-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA30_CNTL";
+ qcom,smdpkt-dev-name = "smdcnt_rev7";
+ };
+
+ qcom,smdpkt-data31-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA31_CNTL";
+ qcom,smdpkt-dev-name = "smdcnt_rev8";
+ };
+
+ qcom,smdpkt-data40-cntl {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA40_CNTL";
+ qcom,smdpkt-dev-name = "smdcntl8";
+ };
+
+ qcom,smdpkt-apr-apps2 {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "apr_apps2";
+ qcom,smdpkt-dev-name = "apr_apps2";
+ };
+
+ qcom,smdpkt-loopback {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "LOOPBACK";
+ qcom,smdpkt-dev-name = "smd_pkt_loopback";
+ };
+ };
+
+ qcom,iris-fm {
+ compatible = "qcom,iris_fm";
+ };
+
+ qcom,wcnss-wlan@0a000000 {
+ compatible = "qcom,wcnss_wlan";
+ reg = <0x0a000000 0x280000>,
+ <0xb011008 0x04>,
+ <0x0a21b000 0x3000>,
+ <0x03204000 0x00000100>,
+ <0x03200800 0x00000200>,
+ <0x0A100400 0x00000200>,
+ <0x0A205050 0x00000200>,
+ <0x0A219000 0x00000020>,
+ <0x0A080488 0x00000008>,
+ <0x0A080fb0 0x00000008>,
+ <0x0A08040c 0x00000008>,
+ <0x0A0120a8 0x00000008>,
+ <0x0A012448 0x00000008>,
+ <0x0A080c00 0x00000001>;
+
+ reg-names = "wcnss_mmio", "wcnss_fiq",
+ "pronto_phy_base", "riva_phy_base",
+ "riva_ccu_base", "pronto_a2xb_base",
+ "pronto_ccpu_base", "pronto_saw2_base",
+ "wlan_tx_phy_aborts","wlan_brdg_err_source",
+ "wlan_tx_status", "alarms_txctl",
+ "alarms_tactl", "pronto_mcu_base";
+
+ interrupts = <0 145 0 0 146 0>;
+ interrupt-names = "wcnss_wlantx_irq", "wcnss_wlanrx_irq";
+
+ qcom,pronto-vddmx-supply = <&pm8916_l3>;
+ qcom,pronto-vddcx-supply = <&pm8916_s1_corner>;
+ qcom,pronto-vddpx-supply = <&pm8916_l7>;
+ qcom,iris-vddxo-supply = <&pm8916_l7>;
+ qcom,iris-vddrfa-supply = <&pm8916_s3>;
+ qcom,iris-vddpa-supply = <&pm8916_l9>;
+ qcom,iris-vdddig-supply = <&pm8916_l5>;
+
+ pinctrl-names = "wcnss_default", "wcnss_sleep",
+ "wcnss_gpio_default";
+ pinctrl-0 = <&wcnss_default>;
+ pinctrl-1 = <&wcnss_sleep>;
+ pinctrl-2 = <&wcnss_gpio_default>;
+
+ gpios = <&msm_gpio 40 0>, <&msm_gpio 41 0>, <&msm_gpio 42 0>,
+ <&msm_gpio 43 0>, <&msm_gpio 44 0>;
+
+ clocks = <&clock_rpm clk_xo_wlan_clk>,
+ <&clock_rpm clk_rf_clk2>,
+ <&clock_debug clk_gcc_debug_mux>,
+ <&clock_gcc clk_wcnss_m_clk>;
+ clock-names = "xo", "rf_clk", "measure", "wcnss_debug";
+
+ qcom,has-autodetect-xo;
+ qcom,wlan-rx-buff-count = <512>;
+ qcom,is-pronto-vt;
+ qcom,has-pronto-hw;
+ qcom,wcnss-adc_tm = <&pm8916_adc_tm>;
+ };
+
+ spi_0: spi@78b7000 { /* BLSP1 QUP3 */
+ compatible = "qcom,spi-qup-v2";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-names = "spi_physical", "spi_bam_physical";
+ reg = <0x78b7000 0x600>,
+ <0x7884000 0x23000>;
+ interrupt-names = "spi_irq", "spi_bam_irq";
+ interrupts = <0 97 0>, <0 238 0>;
+ spi-max-frequency = <50000000>;
+ pinctrl-names = "spi_default", "spi_sleep";
+ pinctrl-0 = <&spi0_default &spi0_cs0_active>;
+ pinctrl-1 = <&spi0_sleep &spi0_cs0_sleep>;
+ clocks = <&clock_gcc GCC_BLSP1_AHB_CLK>,
+ <&clock_gcc GCC_BLSP1_QUP3_SPI_APPS_CLK>;
+ clock-names = "iface_clk", "core_clk";
+ qcom,infinite-mode = <0>;
+ qcom,use-bam;
+ qcom,use-pinctrl;
+ qcom,ver-reg-exists;
+ qcom,bam-consumer-pipe-index = <8>;
+ qcom,bam-producer-pipe-index = <9>;
+ qcom,master-id = <86>;
+
+ lattice,spi-usb@0 {
+ compatible = "lattice,ice40-spi-usb";
+ reg = <0>;
+ spi-max-frequency = <50000000>;
+ spi-cpol = <1>;
+ spi-cpha = <1>;
+ core-vcc-supply = <&pm8916_l2>;
+ spi-vcc-supply = <&pm8916_l5>;
+ qcom,pm-qos-latency = <2>;
+ lattice,reset-gpio = <&msm_gpio 3 0>;
+ lattice,config-done-gpio = <&msm_gpio 1 0>;
+ lattice,vcc-en-gpio = <&msm_gpio 114 0>;
+ lattice,clk-en-gpio = <&msm_gpio 0 0>;
+
+ clocks = <&clock_rpm clk_bb_clk2_pin>;
+ clock-names = "xo";
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&ice40_default>;
+ pinctrl-1 = <&ice40_sleep>;
+ };
+ };
+
+ i2c_0: i2c@78b6000 { /* BLSP1 QUP2 */
+ compatible = "qcom,i2c-msm-v2";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-names = "qup_phys_addr", "bam_phys_addr";
+ reg = <0x78b6000 0x600>,
+ <0x7884000 0x23000>;
+ interrupt-names = "qup_irq", "bam_irq";
+ interrupts = <0 96 0>, <0 238 0>;
+ clocks = <&clock_gcc GCC_BLSP1_AHB_CLK>,
+ <&clock_gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>;
+ clock-names = "iface_clk", "core_clk";
+ qcom,clk-freq-out = <100000>;
+ qcom,clk-freq-in = <19200000>;
+ pinctrl-names = "i2c_active", "i2c_sleep";
+ pinctrl-0 = <&i2c_0_active>;
+ pinctrl-1 = <&i2c_0_sleep>;
+ qcom,noise-rjct-scl = <0>;
+ qcom,noise-rjct-sda = <0>;
+ qcom,bam-pipe-idx-cons = <6>;
+ qcom,bam-pipe-idx-prod = <7>;
+ qcom,master-id = <86>;
+ };
+
+ i2c_5: i2c@78b9000 { /* BLSP1 QUP5 */
+ compatible = "qcom,i2c-msm-v2";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-names = "qup_phys_addr", "bam_phys_addr";
+ reg = <0x78b9000 0x600>,
+ <0x7884000 0x23000>;
+ interrupt-names = "qup_irq", "bam_irq";
+ interrupts = <0 99 0>, <0 238 0>;
+ clocks = <&clock_gcc GCC_BLSP1_AHB_CLK>,
+ <&clock_gcc GCC_BLSP1_QUP5_I2C_APPS_CLK>;
+ clock-names = "iface_clk", "core_clk";
+ qcom,clk-freq-out = <100000>;
+ qcom,clk-freq-in = <19200000>;
+ pinctrl-names = "i2c_active", "i2c_sleep";
+ pinctrl-0 = <&i2c_5_active>;
+ pinctrl-1 = <&i2c_5_sleep>;
+ qcom,noise-rjct-scl = <0>;
+ qcom,noise-rjct-sda = <0>;
+ qcom,bam-pipe-idx-cons = <12>;
+ qcom,bam-pipe-idx-prod = <13>;
+ qcom,master-id = <86>;
+ };
+
+ i2c_6: i2c@78ba000 { /* BLSP1 QUP6 */
+ compatible = "qcom,i2c-msm-v2";
+ #address-cells=<1>;
+ #size-cells=<0>;
+ cell-index = <6>;
+ reg-names = "qup_phys_addr", "bam_phys_addr";
+ reg = <0x78ba000 0x1000>,
+ <0x7884000 0x23000>;
+ interrupt-names = "qup_irq", "bam_irq";
+ interrupts = <0 100 0>, <0 238 0>;
+ clocks = <&clock_gcc GCC_BLSP1_AHB_CLK>,
+ <&clock_gcc GCC_BLSP1_QUP6_I2C_APPS_CLK>;
+ clock-names = "iface_clk", "core_clk";
+ qcom,clk-freq-out = <400000>;
+ qcom,clk-freq-in = <19200000>;
+ pinctrl-names = "i2c_active", "i2c_sleep";
+ pinctrl-0 = <&i2c_6_active>;
+ pinctrl-1 = <&i2c_6_sleep>;
+ qcom,noise-rjct-scl = <0>;
+ qcom,noise-rjct-sda = <0>;
+ qcom,bam-pipe-idx-cons = <14>;
+ qcom,bam-pipe-idx-prod = <15>;
+ qcom,master-id = <86>;
+ };
+
+ i2c_4: i2c@78b8000 { /* BLSP1 QUP4 */
+ compatible = "qcom,i2c-msm-v2";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-names = "qup_phys_addr", "bam_phys_addr";
+ reg = <0x78b8000 0x1000>,
+ <0x7884000 0x23f00>;
+ interrupt-names = "qup_irq", "bam_irq";
+ interrupts = <0 98 0>, <0 238 0>;
+ qcom,clk-freq-out = <400000>;
+ qcom,clk-freq-in = <19200000>;
+ clock-names = "iface_clk", "core_clk";
+ clocks = <&clock_gcc GCC_BLSP1_AHB_CLK>,
+ <&clock_gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>;
+ qcom,use-pinctrl;
+ pinctrl-names = "i2c_active", "i2c_sleep";
+ pinctrl-0 = <&i2c_4_active>;
+ pinctrl-1 = <&i2c_4_sleep>;
+ qcom,noise-rjct-scl = <0>;
+ qcom,noise-rjct-sda = <0>;
+ qcom,bam-pipe-idx-cons = <10>;
+ qcom,bam-pipe-idx-prod = <11>;
+ qcom,master-id = <86>;
+ };
+
+ spmi_bus: qcom,spmi@200f000 {
+ compatible = "qcom,spmi-pmic-arb";
+ reg = <0x200f000 0x1000>,
+ <0x2400000 0x400000>,
+ <0x2c00000 0x400000>,
+ <0x3800000 0x200000>,
+ <0x200a000 0x2100>;
+ reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
+ interrupts = <0 190 0>;
+ qcom,pmic-arb-channel = <0>;
+ qcom,pmic-arb-ee = <0>;
+ #interrupt-cells = <3>;
+ interrupt-controller;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ cell-index = <0>;
+ };
+
+ qcom,msm-imem@8600000 {
+ compatible = "qcom,msm-imem";
+ reg = <0x08600000 0x1000>; /* Address and size of IMEM */
+ ranges = <0x0 0x08600000 0x1000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ mem_dump_table@10 {
+ compatible = "qcom,msm-imem-mem_dump_table";
+ reg = <0x10 8>;
+ };
+
+ restart_reason@65c {
+ compatible = "qcom,msm-imem-restart_reason";
+ reg = <0x65c 4>;
+ };
+
+ boot_stats@6b0 {
+ compatible = "qcom,msm-imem-boot_stats";
+ reg = <0x6b0 32>;
+ };
+
+ pil@94c {
+ compatible = "qcom,msm-imem-pil";
+ reg = <0x94c 200>;
+ };
+ };
+
+ qcom,venus@1de0000 {
+ compatible = "qcom,pil-tz-generic";
+ reg = <0x1de0000 0x4000>;
+
+ vdd-supply = <&gdsc_venus>;
+ qcom,proxy-reg-names = "vdd";
+ clocks = <&clock_gcc GCC_VENUS0_VCODEC0_CLK>,
+ <&clock_gcc GCC_VENUS0_AHB_CLK>,
+ <&clock_gcc GCC_VENUS0_AXI_CLK>,
+ <&clock_gcc GCC_CRYPTO_CLK>,
+ <&clock_gcc GCC_CRYPTO_AHB_CLK>,
+ <&clock_gcc GCC_CRYPTO_AXI_CLK>,
+ <&clock_gcc CRYPTO_CLK_SRC>;
+
+ clock-names = "core_clk", "iface_clk",
+ "bus_clk", "scm_core_clk",
+ "scm_iface_clk", "scm_bus_clk",
+ "scm_core_clk_src";
+ qcom,proxy-clock-names = "core_clk", "iface_clk",
+ "bus_clk", "scm_core_clk",
+ "scm_iface_clk", "scm_bus_clk",
+ "scm_core_clk_src";
+ qcom,scm_core_clk_src-freq = <80000000>;
+
+ qcom,pas-id = <9>;
+ qcom,proxy-timeout-ms = <5000>;
+ qcom,firmware-name = "venus";
+ memory-region = <&venus_qseecom_mem>;
+ };
+
+ qcom,msm-thermal {
+ compatible = "qcom,msm-thermal";
+ qcom,sensor-id = <5>;
+ qcom,poll-ms = <250>;
+ qcom,limit-temp = <60>;
+ qcom,temp-hysteresis = <10>;
+ qcom,freq-step = <2>;
+ qcom,freq-control-mask = <0xf>;
+ qcom,core-limit-temp = <80>;
+ qcom,core-temp-hysteresis = <10>;
+ qcom,core-control-mask = <0xe>;
+ qcom,hotplug-temp = <82>;
+ qcom,hotplug-temp-hysteresis = <15>;
+ qcom,cpu-sensors = "tsens_tz_sensor5", "tsens_tz_sensor5",
+ "tsens_tz_sensor4", "tsens_tz_sensor4";
+ qcom,freq-mitigation-temp = <82>;
+ qcom,freq-mitigation-temp-hysteresis = <10>;
+ qcom,freq-mitigation-value = <400000>;
+ qcom,freq-mitigation-control-mask = <0x01>;
+ qcom,online-hotplug-core;
+ qcom,vdd-restriction-temp = <5>;
+ qcom,vdd-restriction-temp-hysteresis = <10>;
+ vdd-dig-supply = <&pm8916_s1_floor_corner>;
+
+ qcom,vdd-dig-rstr{
+ qcom,vdd-rstr-reg = "vdd-dig";
+ qcom,levels = <5 7 7>; /* Nominal, Super Turbo, Super Turbo */
+ qcom,min-level = <1>; /* No Request */
+ };
+
+ qcom,vdd-apps-rstr{
+ qcom,vdd-rstr-reg = "vdd-apps";
+ qcom,levels = <533330 800000 998400>;
+ qcom,freq-req;
+ };
+ };
+
+ qcom,memshare {
+ compatible = "qcom,memshare";
+
+ qcom,client_1 {
+ compatible = "qcom,memshare-peripheral";
+ qcom,peripheral-size = <2097152>;
+ label = "modem";
+ };
+ };
+
+ qcom,mss@4080000 {
+ compatible = "qcom,pil-q6v56-mss";
+ reg = <0x04080000 0x100>,
+ <0x04020000 0x040>,
+ <0x01810000 0x004>,
+ <0x0194f000 0x010>,
+ <0x01950000 0x008>,
+ <0x01951000 0x008>;
+ reg-names = "qdsp6_base", "rmb_base", "restart_reg_sec",
+ "halt_q6", "halt_modem", "halt_nc";
+
+ interrupts = <0 24 1>;
+ vdd_cx-supply = <&pm8916_s1_corner>;
+ vdd_mx-supply = <&pm8916_l3>;
+ vdd_mx-uV = <1050000>;
+ vdd_pll-supply = <&pm8916_l7>;
+ qcom,vdd_pll = <1800000>;
+
+ clocks = <&clock_rpm clk_xo_pil_mss_clk>,
+ <&clock_gcc GCC_MSS_CFG_AHB_CLK>,
+ <&clock_gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
+ <&clock_gcc GCC_BOOT_ROM_AHB_CLK>;
+ clock-names = "xo", "iface_clk", "bus_clk", "mem_clk";
+ qcom,proxy-clock-names = "xo";
+ qcom,active-clock-names = "iface_clk", "bus_clk", "mem_clk";
+
+ qcom,is-loadable;
+ qcom,firmware-name = "modem";
+ qcom,pil-self-auth;
+ qcom,sysmon-id = <0>;
+ qcom,ssctl-instance-id = <0x12>;
+
+ /* GPIO inputs from mss */
+ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_1_in 0 0>;
+ qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_1_in 1 0>;
+ qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_1_in 2 0>;
+ qcom,gpio-stop-ack = <&smp2pgpio_ssr_smp2p_1_in 3 0>;
+ qcom,gpio-ramdump-disable = <&smp2pgpio_ssr_smp2p_1_in 15 0>;
+
+ /* GPIO output to mss */
+ qcom,gpio-force-stop = <&smp2pgpio_ssr_smp2p_1_out 0 0>;
+ memory-region = <&modem_adsp_mem>;
+ };
+
+ qcom,vidc@1d00000 {
+ compatible = "qcom,msm-vidc";
+ reg = <0x01d00000 0xff000>;
+ interrupts = <0 44 0>;
+ venus-supply = <&gdsc_venus>;
+ clocks = <&clock_gcc GCC_VENUS0_VCODEC0_CLK>,
+ <&clock_gcc GCC_VENUS0_AHB_CLK>,
+ <&clock_gcc GCC_VENUS0_AXI_CLK>;
+ clock-names = "core_clk", "iface_clk", "bus_clk";
+ qcom,clock-configs = <0x1 0x0 0x0>;
+ qcom,sw-power-collapse;
+ qcom,load-freq-tbl = <352800 228570000 0xffffffff>,
+ <352800 228570000 0x55555555>,
+ <244800 160000000 0xffffffff>,
+ <244800 160000000 0x55555555>,
+ <108000 100000000 0xffffffff>,
+ <108000 100000000 0x55555555>;
+ qcom,hfi = "venus";
+ qcom,reg-presets = <0xE0020 0x05555556>,
+ <0xE0024 0x05555556>,
+ <0x80124 0x00000003>;
+ qcom,qdss-presets = <0x826000 0x1000>,
+ <0x827000 0x1000>,
+ <0x822000 0x1000>,
+ <0x803000 0x1000>,
+ <0x9180000 0x1000>,
+ <0x9181000 0x1000>;
+ qcom,max-hw-load = <352800>; /* 720p @ 30 + 1080p @ 30 */
+ qcom,enable-idle-indicator;
+ qcom,vidc-iommu-domains {
+ qcom,domain-ns {
+ qcom,vidc-domain-phandle = <&venus_domain_ns>;
+ qcom,vidc-partition-buffer-types = <0x7ff>,
+ <0x800>;
+ };
+ qcom,domain-sec-bs {
+ qcom,vidc-domain-phandle = <&venus_domain_sec_bitstream>;
+ qcom,vidc-partition-buffer-types = <0x241>;
+ };
+ qcom,domain-sec-px {
+ qcom,vidc-domain-phandle = <&venus_domain_sec_pixel>;
+ qcom,vidc-partition-buffer-types = <0x106>;
+ };
+ qcom,domain-sec-np {
+ qcom,vidc-domain-phandle = <&venus_domain_sec_non_pixel>;
+ qcom,vidc-partition-buffer-types = <0x480>;
+ };
+ };
+ qcom,msm-bus-clients {
+ qcom,msm-bus-client@0 {
+ qcom,msm-bus,name = "venc-ddr";
+ qcom,msm-bus,num-cases = <6>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <63 512 0 0>,
+ <63 512 133600 674400>, /* VGA 30 fps */
+ <63 512 400900 1079000>, /* VGA 60 fps */
+ <63 512 400900 1079000>, /* 720p 30 fps */
+ <63 512 908600 1537600>, /* 720p 60 fps */
+ <63 512 908600 1537600>; /* 1080p 30 fps */
+ qcom,bus-configs = <0x01000414>;
+ };
+
+ qcom,msm-bus-client@1 {
+ qcom,msm-bus,name = "vdec-ddr";
+ qcom,msm-bus,num-cases = <6>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <63 512 0 0>,
+ <63 512 99600 831900>, /* VGA 30 fps */
+ <63 512 298900 831900>, /* VGA 60 fps */
+ <63 512 298900 831900>, /* 720p 30 fps */
+ <63 512 677600 1331000>, /* 720p 60 fps */
+ <63 512 677600 1331000>; /* 1080p 30 fps */
+ qcom,bus-configs = <0x030fcfff>;
+ };
+ };
+ };
+
+ qcom,pronto@a21b000 {
+ compatible = "qcom,pil-tz-generic";
+ reg = <0x0a21b000 0x3000>;
+ interrupts = <0 149 1>;
+
+ vdd_pronto_pll-supply = <&pm8916_l7>;
+ qcom,proxy-reg-names = "vdd_pronto_pll";
+ qcom,vdd_pronto_pll-uV-uA = <1800000 18000>;
+ clocks = <&clock_rpm clk_xo_pil_pronto_clk>,
+ <&clock_gcc GCC_CRYPTO_CLK>,
+ <&clock_gcc GCC_CRYPTO_AHB_CLK>,
+ <&clock_gcc GCC_CRYPTO_AXI_CLK>,
+ <&clock_gcc CRYPTO_CLK_SRC>;
+
+ clock-names = "xo", "scm_core_clk", "scm_iface_clk",
+ "scm_bus_clk", "scm_core_clk_src";
+ qcom,proxy-clock-names = "xo", "scm_core_clk", "scm_iface_clk",
+ "scm_bus_clk", "scm_core_clk_src";
+ qcom,scm_core_clk_src-freq = <80000000>;
+
+ qcom,pas-id = <6>;
+ qcom,proxy-timeout-ms = <10000>;
+ qcom,smem-id = <422>;
+ qcom,sysmon-id = <6>;
+ qcom,ssctl-instance-id = <0x13>;
+ qcom,firmware-name = "wcnss";
+
+ /* GPIO inputs from wcnss */
+ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_4_in 0 0>;
+ qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_4_in 1 0>;
+ qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_4_in 2 0>;
+ qcom,gpio-stop-ack = <&smp2pgpio_ssr_smp2p_4_in 3 0>;
+
+ /* GPIO output to wcnss */
+ qcom,gpio-force-stop = <&smp2pgpio_ssr_smp2p_4_out 0 0>;
+ memory-region = <&peripheral_mem>;
+ };
+
+ cpu-pmu {
+ compatible = "arm,armv8-pmuv3";
+ qcom,irq-is-percpu;
+ interrupts = <1 7 0xf00>;
+ };
+
+ bimc_sharedmem {
+ compatible = "qcom,sharedmem-uio";
+ reg = <0x400000 0x80000>;
+ reg-names = "bimc";
+ };
+
+ qcom,avtimer {
+ compatible = "qcom,avtimer";
+ reg = <0x0770600C 0x4>,
+ <0x07706010 0x4>;
+ reg-names = "avtimer_lsb_addr", "avtimer_msb_addr";
+ qcom,clk_div = <27>;
+ };
+};
+
+&gdsc_venus {
+ status = "okay";
+};
+
+&gdsc_mdss {
+ status = "okay";
+};
+
+&gdsc_jpeg {
+ status = "okay";
+};
+
+&gdsc_vfe {
+ status = "okay";
+};
+
+&gdsc_oxili_gx {
+ clock-names = "core_root_clk";
+ clocks = <&clock_gcc GCC_OXILI_GFX3D_CLK>;
+ qcom,enable-root-clk;
+ status = "okay";
+};
+
+#include "msm8916-pinctrl.dtsi"
+#include "msm-pm8916-rpm-regulator.dtsi"
+#include "msm-pm8916.dtsi"
+#include "msm8916-regulator.dtsi"
+#include "msm8916-pm.dtsi"
+
+&pm8916_vadc {
+ chan@0 {
+ label = "usb_in";
+ reg = <0>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <7>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@2 {
+ label = "ireg_fb";
+ reg = <2>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <6>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@5 {
+ label = "vcoin";
+ reg = <5>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <1>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@6 {
+ label = "vbat_sns";
+ reg = <6>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <1>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@7 {
+ label = "vph_pwr";
+ reg = <7>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <1>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@b {
+ label = "chg_temp";
+ reg = <0xb>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <3>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@30 {
+ label = "batt_therm";
+ reg = <0x30>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <1>;
+ qcom,hw-settle-time = <0xb>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@31 {
+ label = "batt_id";
+ reg = <0x31>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0xb>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@36 {
+ label = "pa_therm0";
+ reg = <0x36>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@32 {
+ label = "xo_therm";
+ reg = <0x32>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <4>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@3c {
+ label = "xo_therm_buf";
+ reg = <0x3c>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <4>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+};
+
+&pm8916_adc_tm {
+ /* Channel Node */
+ chan@30 {
+ label = "batt_therm";
+ reg = <0x30>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <1>;
+ qcom,hw-settle-time = <0xb>;
+ qcom,fast-avg-setup = <2>;
+ qcom,btm-channel-number = <0x48>;
+ };
+
+ chan@6 {
+ label = "vbat_sns";
+ reg = <0x6>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <1>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0xb>;
+ qcom,fast-avg-setup = <2>;
+ qcom,btm-channel-number = <0x68>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-camera-sensor-cdp.dtsi b/arch/arm64/boot/dts/qcom/msm8994-camera-sensor-cdp.dtsi
new file mode 100644
index 00000000000..38ba73eb3f4
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-camera-sensor-cdp.dtsi
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ led_flash0: qcom,camera-led-flash {
+ cell-index = <0>;
+ compatible = "qcom,camera-led-flash";
+ qcom,flash-type = <1>;
+ qcom,flash-source = <&pmi8994_flash0 &pmi8994_flash1>;
+ qcom,torch-source = <&pmi8994_torch0 &pmi8994_torch1>;
+ };
+};
+&cci {
+ actuator0: qcom,actuator@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ compatible = "qcom,actuator";
+ qcom,cci-master = <0>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-type = <0>;
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ };
+
+ actuator1: qcom,actuator@1 {
+ cell-index = <1>;
+ reg = <0x1>;
+ compatible = "qcom,actuator";
+ qcom,cci-master = <0>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-type = <0>;
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ };
+
+ qcom,camera@0 {
+ cell-index = <0>;
+ compatible = "qcom,camera";
+ reg = <0x0>;
+ qcom,csiphy-sd-index = <0>;
+ qcom,csid-sd-index = <0>;
+ qcom,mount-angle = <90>;
+ qcom,actuator-src = <&actuator0>;
+ qcom,led-flash-src = <&led_flash0>;
+ cam_vdig-supply = <&pm8994_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-type = <0 1 0>;
+ qcom,cam-vreg-min-voltage = <1050000 0 2700000>;
+ qcom,cam-vreg-max-voltage = <1050000 0 2700000>;
+ qcom,cam-vreg-op-mode = <105000 0 80000>;
+ qcom,gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active &cam_sensor_rear_active>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend &cam_sensor_rear_suspend>;
+ gpios = <&msm_gpio 13 0>,
+ <&msm_gpio 92 0>,
+ <&msm_gpio 91 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0",
+ "CAM_STANDBY0";
+ qcom,sensor-position = <0>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_mmss clk_mclk0_clk_src>,
+ <&clock_mmss clk_camss_mclk0_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ qcom,camera@1 {
+ cell-index = <1>;
+ compatible = "qcom,camera";
+ reg = <0x1>;
+ qcom,csiphy-sd-index = <1>;
+ qcom,csid-sd-index = <1>;
+ qcom,mount-angle = <90>;
+ cam_vdig-supply = <&pm8994_l3>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-type = <0 1 0>;
+ qcom,cam-vreg-min-voltage = <1200000 0 2700000>;
+ qcom,cam-vreg-max-voltage = <1200000 0 2700000>;
+ qcom,cam-vreg-op-mode = <105000 0 80000>;
+ qcom,gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active &cam_sensor_rear2_active>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend &cam_sensor_rear2_suspend>;
+ gpios = <&msm_gpio 14 0>,
+ <&msm_gpio 94 0>,
+ <&msm_gpio 93 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1",
+ "CAM_STANDBY1";
+ qcom,sensor-position = <0>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_mmss clk_mclk1_clk_src>,
+ <&clock_mmss clk_camss_mclk1_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ qcom,camera@2 {
+ cell-index = <2>;
+ compatible = "qcom,camera";
+ reg = <0x02>;
+ qcom,csiphy-sd-index = <2>;
+ qcom,csid-sd-index = <2>;
+ qcom,mount-angle = <90>;
+ cam_vdig-supply = <&pm8994_l3>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l29>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-type = <0 1 0>;
+ qcom,cam-vreg-min-voltage = <1200000 0 2800000>;
+ qcom,cam-vreg-max-voltage = <1200000 0 2800000>;
+ qcom,cam-vreg-op-mode = <105000 0 80000>;
+ qcom,gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active &cam_sensor_front_active>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend &cam_sensor_front_suspend>;
+ gpios = <&msm_gpio 15 0>,
+ <&msm_gpio 104 0>,
+ <&msm_gpio 105 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2",
+ "CAM_STANDBY2";
+ qcom,sensor-position = <1>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_mmss clk_mclk2_clk_src>,
+ <&clock_mmss clk_camss_mclk2_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-camera-sensor-liquid.dtsi b/arch/arm64/boot/dts/qcom/msm8994-camera-sensor-liquid.dtsi
new file mode 100644
index 00000000000..ce3eed84c9e
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-camera-sensor-liquid.dtsi
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&cci {
+ actuator0: qcom,actuator@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ compatible = "qcom,actuator";
+ qcom,cci-master = <0>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-type = <0>;
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ };
+
+ actuator1: qcom,actuator@1 {
+ cell-index = <1>;
+ reg = <0x1>;
+ compatible = "qcom,actuator";
+ qcom,cci-master = <0>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-type = <0>;
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ };
+
+ qcom,camera@0 {
+ cell-index = <0>;
+ compatible = "qcom,camera";
+ reg = <0x0>;
+ qcom,csiphy-sd-index = <0>;
+ qcom,csid-sd-index = <0>;
+ qcom,mount-angle = <0>;
+ qcom,actuator-src = <&actuator0>;
+ cam_vdig-supply = <&pm8994_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-type = <0 1 0>;
+ qcom,cam-vreg-min-voltage = <1050000 0 2700000>;
+ qcom,cam-vreg-max-voltage = <1050000 0 2700000>;
+ qcom,cam-vreg-op-mode = <105000 0 80000>;
+ qcom,gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active &cam_sensor_rear_active>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend &cam_sensor_rear_suspend>;
+ gpios = <&msm_gpio 13 0>,
+ <&msm_gpio 92 0>,
+ <&msm_gpio 91 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0",
+ "CAM_STANDBY0";
+ qcom,sensor-position = <0>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_mmss clk_mclk0_clk_src>,
+ <&clock_mmss clk_camss_mclk0_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ qcom,camera@1 {
+ cell-index = <1>;
+ compatible = "qcom,camera";
+ reg = <0x1>;
+ qcom,csiphy-sd-index = <1>;
+ qcom,csid-sd-index = <1>;
+ qcom,mount-angle = <90>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l10>;
+ qcom,cam-vreg-name = "cam_vio", "cam_vana";
+ qcom,cam-vreg-type = <1 0>;
+ qcom,cam-vreg-min-voltage = <0 2850000>;
+ qcom,cam-vreg-max-voltage = <0 2850000>;
+ qcom,cam-vreg-op-mode = <0 80000>;
+ qcom,gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_rear2_active>;
+ pinctrl-1 = <&cam_sensor_rear2_suspend>;
+ gpios = <&msm_gpio 14 0>,
+ <&msm_gpio 94 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1>;
+ qcom,gpio-req-tbl-flags = <1 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1";
+ qcom,sensor-position = <0>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_mmss clk_mclk1_clk_src>,
+ <&clock_mmss clk_camss_mclk1_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ qcom,camera@2 {
+ cell-index = <2>;
+ compatible = "qcom,camera";
+ reg = <0x02>;
+ qcom,csiphy-sd-index = <2>;
+ qcom,csid-sd-index = <2>;
+ qcom,mount-angle = <90>;
+ qcom,actuator-src = <&actuator1>;
+ cam_vdig-supply = <&pm8994_l3>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l29>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-type = <0 1 0>;
+ qcom,cam-vreg-min-voltage = <1200000 0 2800000>;
+ qcom,cam-vreg-max-voltage = <1200000 0 2800000>;
+ qcom,cam-vreg-op-mode = <105000 0 80000>;
+ qcom,gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active &cam_sensor_front_active>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend &cam_sensor_front_suspend>;
+ gpios = <&msm_gpio 15 0>,
+ <&msm_gpio 104 0>,
+ <&msm_gpio 105 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2",
+ "CAM_STANDBY2";
+ qcom,sensor-position = <1>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_mmss clk_mclk2_clk_src>,
+ <&clock_mmss clk_camss_mclk2_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-camera-sensor-mtp.dtsi b/arch/arm64/boot/dts/qcom/msm8994-camera-sensor-mtp.dtsi
new file mode 100644
index 00000000000..54aace1597c
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-camera-sensor-mtp.dtsi
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ led_flash0: qcom,camera-led-flash {
+ cell-index = <0>;
+ compatible = "qcom,camera-led-flash";
+ qcom,flash-type = <1>;
+ qcom,flash-source = <&pmi8994_flash0 &pmi8994_flash1>;
+ qcom,torch-source = <&pmi8994_torch0 &pmi8994_torch1>;
+ };
+};
+&cci {
+ actuator0: qcom,actuator@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ compatible = "qcom,actuator";
+ qcom,cci-master = <0>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-type = <0>;
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ };
+
+ actuator1: qcom,actuator@1 {
+ cell-index = <1>;
+ reg = <0x1>;
+ compatible = "qcom,actuator";
+ qcom,cci-master = <0>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-type = <0>;
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ };
+
+ qcom,camera@0 {
+ cell-index = <0>;
+ compatible = "qcom,camera";
+ reg = <0x0>;
+ qcom,csiphy-sd-index = <0>;
+ qcom,csid-sd-index = <0>;
+ qcom,mount-angle = <270>;
+ qcom,actuator-src = <&actuator0>;
+ qcom,led-flash-src = <&led_flash0>;
+ cam_vdig-supply = <&pm8994_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-type = <0 1 0>;
+ qcom,cam-vreg-min-voltage = <1050000 0 2700000>;
+ qcom,cam-vreg-max-voltage = <1050000 0 2700000>;
+ qcom,cam-vreg-op-mode = <105000 0 80000>;
+ qcom,gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk0_active &cam_sensor_rear_active>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend &cam_sensor_rear_suspend>;
+ gpios = <&msm_gpio 13 0>,
+ <&msm_gpio 92 0>,
+ <&msm_gpio 91 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK0",
+ "CAM_RESET0",
+ "CAM_STANDBY0";
+ qcom,sensor-position = <0>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_mmss clk_mclk0_clk_src>,
+ <&clock_mmss clk_camss_mclk0_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ qcom,camera@1 {
+ cell-index = <1>;
+ compatible = "qcom,camera";
+ reg = <0x1>;
+ qcom,csiphy-sd-index = <1>;
+ qcom,csid-sd-index = <1>;
+ qcom,mount-angle = <90>;
+ cam_vdig-supply = <&pm8994_l3>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-type = <0 1 0>;
+ qcom,cam-vreg-min-voltage = <1200000 0 2700000>;
+ qcom,cam-vreg-max-voltage = <1200000 0 2700000>;
+ qcom,cam-vreg-op-mode = <105000 0 80000>;
+ qcom,gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk1_active &cam_sensor_rear2_active>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend &cam_sensor_rear2_suspend>;
+ gpios = <&msm_gpio 14 0>,
+ <&msm_gpio 94 0>,
+ <&msm_gpio 93 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK1",
+ "CAM_RESET1",
+ "CAM_STANDBY1";
+ qcom,sensor-position = <0>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_mmss clk_mclk1_clk_src>,
+ <&clock_mmss clk_camss_mclk1_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ qcom,camera@2 {
+ cell-index = <2>;
+ compatible = "qcom,camera";
+ reg = <0x02>;
+ qcom,csiphy-sd-index = <2>;
+ qcom,csid-sd-index = <2>;
+ qcom,mount-angle = <90>;
+ cam_vdig-supply = <&pm8994_l3>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l29>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-type = <0 1 0>;
+ qcom,cam-vreg-min-voltage = <1200000 0 2800000>;
+ qcom,cam-vreg-max-voltage = <1200000 0 2800000>;
+ qcom,cam-vreg-op-mode = <105000 0 80000>;
+ qcom,gpio-no-mux = <0>;
+ pinctrl-names = "cam_default", "cam_suspend";
+ pinctrl-0 = <&cam_sensor_mclk2_active &cam_sensor_front_active>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend &cam_sensor_front_suspend>;
+ gpios = <&msm_gpio 15 0>,
+ <&msm_gpio 104 0>,
+ <&msm_gpio 105 0>;
+ qcom,gpio-reset = <1>;
+ qcom,gpio-standby = <2>;
+ qcom,gpio-req-tbl-num = <0 1 2>;
+ qcom,gpio-req-tbl-flags = <1 0 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK2",
+ "CAM_RESET2",
+ "CAM_STANDBY2";
+ qcom,sensor-position = <1>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <0>;
+ status = "ok";
+ clocks = <&clock_mmss clk_mclk2_clk_src>,
+ <&clock_mmss clk_camss_mclk2_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-camera.dtsi b/arch/arm64/boot/dts/qcom/msm8994-camera.dtsi
new file mode 100644
index 00000000000..23708760dc3
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-camera.dtsi
@@ -0,0 +1,493 @@
+/*
+ * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ qcom,msm-cam@fd8c0000 {
+ compatible = "qcom,msm-cam";
+ reg = <0xfd8c0000 0x10000>;
+ reg-names = "msm-cam";
+ };
+
+ qcom,csiphy@fda0ac00 {
+ cell-index = <0>;
+ compatible = "qcom,csiphy-v3.1.1", "qcom,csiphy";
+ reg = <0xfda0ac00 0x200>,
+ <0xfda00030 0x4>;
+ reg-names = "csiphy", "csiphy_clk_mux";
+ interrupts = <0 78 0>;
+ interrupt-names = "csiphy";
+ clocks = <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ispif_ahb_clk>,
+ <&clock_mmss clk_csi0_clk_src>,
+ <&clock_mmss clk_camss_csi0phy_clk>,
+ <&clock_mmss clk_csi0phytimer_clk_src>,
+ <&clock_mmss clk_camss_phy0_csi0phytimer_clk>,
+ <&clock_mmss clk_camss_ahb_clk>;
+ clock-names = "camss_top_ahb_clk",
+ "ispif_ahb_clk", "csi_src_clk",
+ "csi_phy_clk", "csiphy_timer_src_clk",
+ "csiphy_timer_clk", "camss_ahb_clk";
+ qcom,clock-rates = <0 0 240000000 0 200000000 0 0>;
+ };
+
+ qcom,csiphy@fda0b000 {
+ cell-index = <1>;
+ compatible = "qcom,csiphy-v3.1.1", "qcom,csiphy";
+ reg = <0xfda0b000 0x200>,
+ <0xfda00038 0x4>;
+ reg-names = "csiphy", "csiphy_clk_mux";
+ interrupts = <0 79 0>;
+ interrupt-names = "csiphy";
+ clocks = <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ispif_ahb_clk>,
+ <&clock_mmss clk_csi1_clk_src>,
+ <&clock_mmss clk_camss_csi1phy_clk>,
+ <&clock_mmss clk_csi1phytimer_clk_src>,
+ <&clock_mmss clk_camss_phy1_csi1phytimer_clk>,
+ <&clock_mmss clk_camss_ahb_clk>;
+ clock-names = "camss_top_ahb_clk",
+ "ispif_ahb_clk", "csi_src_clk",
+ "csi_phy_clk", "csiphy_timer_src_clk",
+ "csiphy_timer_clk", "camss_ahb_clk";
+ qcom,clock-rates = <0 0 240000000 0 200000000 0 0>;
+ };
+
+ qcom,csiphy@fda0b400 {
+ cell-index = <2>;
+ compatible = "qcom,csiphy-v3.1.1", "qcom,csiphy";
+ reg = <0xfda0b400 0x200>,
+ <0xfda00040 0x4>;
+ reg-names = "csiphy", "csiphy_clk_mux";
+ interrupts = <0 80 0>;
+ interrupt-names = "csiphy";
+ clocks = <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ispif_ahb_clk>,
+ <&clock_mmss clk_csi2_clk_src>,
+ <&clock_mmss clk_camss_csi2phy_clk>,
+ <&clock_mmss clk_csi2phytimer_clk_src>,
+ <&clock_mmss clk_camss_phy2_csi2phytimer_clk>,
+ <&clock_mmss clk_camss_ahb_clk>;
+ clock-names = "camss_top_ahb_clk",
+ "ispif_ahb_clk", "csi_src_clk",
+ "csi_phy_clk", "csiphy_timer_src_clk",
+ "csiphy_timer_clk", "camss_ahb_clk";
+ qcom,clock-rates = <0 0 240000000 0 200000000 0 0>;
+ };
+
+ qcom,csid@fda08000 {
+ cell-index = <0>;
+ compatible = "qcom,csid-v3.1", "qcom,csid";
+ reg = <0xfda08000 0x400>;
+ reg-names = "csid";
+ interrupts = <0 51 0>;
+ interrupt-names = "csid";
+ qcom,csi-vdd-voltage = <1250000>;
+ qcom,mipi-csi-vdd-supply = <&pm8994_l2>;
+ qcom,gdscr-vdd-supply = <&gdsc_camss_top>;
+ clocks = <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ispif_ahb_clk>,
+ <&clock_mmss clk_csi0_clk_src>,
+ <&clock_mmss clk_camss_csi0_clk>,
+ <&clock_mmss clk_camss_csi0_ahb_clk>,
+ <&clock_mmss clk_camss_csi0rdi_clk>,
+ <&clock_mmss clk_camss_csi0pix_clk>,
+ <&clock_mmss clk_camss_ahb_clk>;
+ clock-names = "camss_top_ahb_clk",
+ "ispif_ahb_clk", "csi_clk", "csi_ahb_clk",
+ "csi_src_clk", "csi_rdi_clk",
+ "csi_pix_clk", "camss_ahb_clk";
+ qcom,clock-rates = <0 0 240000000 0 0 0 0 0>;
+ };
+
+ qcom,csid@fda08400 {
+ cell-index = <1>;
+ compatible = "qcom,csid-v3.1", "qcom,csid";
+ reg = <0xfda08400 0x400>;
+ reg-names = "csid";
+ interrupts = <0 52 0>;
+ interrupt-names = "csid";
+ qcom,csi-vdd-voltage = <1250000>;
+ qcom,mipi-csi-vdd-supply = <&pm8994_l2>;
+ qcom,gdscr-vdd-supply = <&gdsc_camss_top>;
+ clocks = <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ispif_ahb_clk>,
+ <&clock_mmss clk_csi1_clk_src>,
+ <&clock_mmss clk_camss_csi1_clk>,
+ <&clock_mmss clk_camss_csi1_ahb_clk>,
+ <&clock_mmss clk_camss_csi1rdi_clk>,
+ <&clock_mmss clk_camss_csi1pix_clk>,
+ <&clock_mmss clk_camss_ahb_clk>;
+ clock-names = "camss_top_ahb_clk",
+ "ispif_ahb_clk", "csi_clk", "csi_ahb_clk",
+ "csi_src_clk", "csi_rdi_clk",
+ "csi_pix_clk", "camss_ahb_clk";
+ qcom,clock-rates = <0 0 240000000 0 0 0 0 0>;
+ };
+
+ qcom,csid@fda08800 {
+ cell-index = <2>;
+ compatible = "qcom,csid-v3.1", "qcom,csid";
+ reg = <0xfda08800 0x400>;
+ reg-names = "csid";
+ interrupts = <0 53 0>;
+ interrupt-names = "csid";
+ qcom,csi-vdd-voltage = <1250000>;
+ qcom,mipi-csi-vdd-supply = <&pm8994_l2>;
+ qcom,gdscr-vdd-supply = <&gdsc_camss_top>;
+ clocks = <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ispif_ahb_clk>,
+ <&clock_mmss clk_csi2_clk_src>,
+ <&clock_mmss clk_camss_csi2_clk>,
+ <&clock_mmss clk_camss_csi2_ahb_clk>,
+ <&clock_mmss clk_camss_csi2rdi_clk>,
+ <&clock_mmss clk_camss_csi2pix_clk>,
+ <&clock_mmss clk_camss_ahb_clk>;
+ clock-names = "camss_top_ahb_clk",
+ "ispif_ahb_clk", "csi_clk", "csi_ahb_clk",
+ "csi_src_clk", "csi_rdi_clk",
+ "csi_pix_clk", "camss_ahb_clk";
+ qcom,clock-rates = <0 0 240000000 0 0 0 0 0>;
+ };
+
+ qcom,csid@fda08c00 {
+ cell-index = <3>;
+ compatible = "qcom,csid-v3.1", "qcom,csid";
+ reg = <0xfda08C00 0x100>;
+ reg-names = "csid";
+ interrupts = <0 54 0>;
+ interrupt-names = "csid";
+ qcom,csi-vdd-voltage = <1250000>;
+ qcom,mipi-csi-vdd-supply = <&pm8994_l2>;
+ qcom,gdscr-vdd-supply = <&gdsc_camss_top>;
+ clocks = <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ispif_ahb_clk>,
+ <&clock_mmss clk_csi3_clk_src>,
+ <&clock_mmss clk_camss_csi3_clk>,
+ <&clock_mmss clk_camss_csi3_ahb_clk>,
+ <&clock_mmss clk_camss_csi3rdi_clk>,
+ <&clock_mmss clk_camss_csi3pix_clk>,
+ <&clock_mmss clk_camss_ahb_clk>;
+ clock-names = "camss_top_ahb_clk",
+ "ispif_ahb_clk", "csi_clk", "csi_ahb_clk",
+ "csi_src_clk", "csi_rdi_clk",
+ "csi_pix_clk", "camss_ahb_clk";
+ qcom,clock-rates = <0 0 240000000 0 0 0 0 0>;
+ };
+
+ qcom,ispif@fda0a000 {
+ cell-index = <0>;
+ compatible = "qcom,ispif-v3.0", "qcom,ispif";
+ reg = <0xfda0A000 0x500>,
+ <0xfda00020 0x10>;
+ reg-names = "ispif", "csi_clk_mux";
+ interrupts = <0 55 0>;
+ interrupt-names = "ispif";
+ qcom,num-isps = <0x2>;
+ vdd-supply = <&gdsc_camss_top>;
+ clocks = <&clock_mmss clk_camss_ispif_ahb_clk>,
+ <&clock_mmss clk_csi0_clk_src>,
+ <&clock_mmss clk_camss_csi0_clk>,
+ <&clock_mmss clk_camss_csi0rdi_clk>,
+ <&clock_mmss clk_camss_csi0pix_clk>,
+ <&clock_mmss clk_csi1_clk_src>,
+ <&clock_mmss clk_camss_csi1_clk>,
+ <&clock_mmss clk_camss_csi1rdi_clk>,
+ <&clock_mmss clk_camss_csi1pix_clk>,
+ <&clock_mmss clk_csi2_clk_src>,
+ <&clock_mmss clk_camss_csi2_clk>,
+ <&clock_mmss clk_camss_csi2rdi_clk>,
+ <&clock_mmss clk_camss_csi2pix_clk>,
+ <&clock_mmss clk_csi3_clk_src>,
+ <&clock_mmss clk_camss_csi3_clk>,
+ <&clock_mmss clk_camss_csi3rdi_clk>,
+ <&clock_mmss clk_camss_csi3pix_clk>,
+ <&clock_mmss clk_vfe0_clk_src>,
+ <&clock_mmss clk_camss_vfe_vfe0_clk>,
+ <&clock_mmss clk_camss_csi_vfe0_clk>,
+ <&clock_mmss clk_vfe1_clk_src>,
+ <&clock_mmss clk_camss_vfe_vfe1_clk>,
+ <&clock_mmss clk_camss_csi_vfe1_clk>;
+ clock-names = "ispif_ahb_clk",
+ "csi0_src_clk", "csi0_clk",
+ "csi0_pix_clk", "csi0_rdi_clk",
+ "csi1_src_clk", "csi1_clk",
+ "csi1_pix_clk", "csi1_rdi_clk",
+ "csi2_src_clk", "csi2_clk",
+ "csi2_pix_clk", "csi2_rdi_clk",
+ "csi3_src_clk", "csi3_clk",
+ "csi3_pix_clk", "csi3_rdi_clk",
+ "vfe0_clk_src", "camss_vfe_vfe0_clk", "camss_csi_vfe0_clk",
+ "vfe1_clk_src", "camss_vfe_vfe1_clk", "camss_csi_vfe1_clk";
+ qcom,clock-rates = <0
+ 240000000 0 0 0
+ 240000000 0 0 0
+ 240000000 0 0 0
+ 240000000 0 0 0
+ 320000000 0 0
+ 320000000 0 0>;
+ };
+
+ qcom,vfe@fda10000 {
+ cell-index = <0>;
+ compatible = "qcom,vfe46";
+ reg = <0xfda10000 0x1000>,
+ <0xfda40000 0x200>;
+ reg-names = "vfe", "vfe_vbif";
+ interrupts = <0 57 0>;
+ interrupt-names = "vfe";
+ vdd-supply = <&gdsc_vfe>;
+ clocks = <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ahb_clk>,
+ <&clock_mmss clk_vfe0_clk_src>,
+ <&clock_mmss clk_camss_vfe_vfe0_clk>,
+ <&clock_mmss clk_camss_csi_vfe0_clk>,
+ <&clock_mmss clk_camss_vfe_vfe_ahb_clk>,
+ <&clock_mmss clk_camss_vfe_vfe_axi_clk>;
+ clock-names = "camss_top_ahb_clk" , "camss_ahb_clk",
+ "vfe_clk_src", "camss_vfe_vfe_clk", "camss_csi_vfe_clk",
+ "iface_clk", "bus_clk";
+ qcom,clock-rates = <0 0 320000000 0 0 0 0>;
+
+ };
+
+ qcom,vfe@fda14000 {
+ cell-index = <1>;
+ compatible = "qcom,vfe46";
+ reg = <0xfda14000 0x1000>,
+ <0xfda40000 0x200>;
+ reg-names = "vfe", "vfe_vbif";
+ interrupts = <0 58 0>;
+ interrupt-names = "vfe";
+ vdd-supply = <&gdsc_vfe>;
+ clocks = <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ahb_clk>,
+ <&clock_mmss clk_vfe1_clk_src>,
+ <&clock_mmss clk_camss_vfe_vfe1_clk>,
+ <&clock_mmss clk_camss_csi_vfe1_clk>,
+ <&clock_mmss clk_camss_vfe_vfe_ahb_clk>,
+ <&clock_mmss clk_camss_vfe_vfe_axi_clk>;
+ clock-names = "camss_top_ahb_clk" , "camss_ahb_clk",
+ "vfe_clk_src", "camss_vfe_vfe_clk", "camss_csi_vfe_clk",
+ "iface_clk", "bus_clk";
+ qcom,clock-rates = <0 0 320000000 0 0 0 0>;
+ };
+
+
+ qcom,jpeg@fda1c000 {
+ cell-index = <0>;
+ compatible = "qcom,jpeg";
+ reg = <0xfda1c000 0x400>,
+ <0xfda60000 0xc30>;
+ reg-names = "jpeg";
+ interrupts = <0 59 0>;
+ interrupt-names = "jpeg";
+ vdd-supply = <&gdsc_jpeg>;
+ clock-names = "core_clk", "iface_clk", "bus_clk0",
+ "camss_top_ahb_clk", "camss_ahb_clk";
+ clocks = <&clock_mmss clk_camss_jpeg_jpeg0_clk>,
+ <&clock_mmss clk_camss_jpeg_jpeg_ahb_clk>,
+ <&clock_mmss clk_camss_jpeg_jpeg_axi_clk>,
+ <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ahb_clk>;
+ qcom,clock-rates = <320000000 0 0 0 0>;
+ };
+
+ qcom,jpeg@fda20000 {
+ cell-index = <1>;
+ compatible = "qcom,jpeg";
+ reg = <0xfda20000 0x400>,
+ <0xfda60000 0xc30>;
+ reg-names = "jpeg";
+ interrupts = <0 60 0>;
+ interrupt-names = "jpeg";
+ vdd-supply = <&gdsc_jpeg>;
+ clock-names = "core_clk", "iface_clk", "bus_clk0", "camss_top_ahb_clk", "camss_ahb_clk";
+ clocks = <&clock_mmss clk_camss_jpeg_jpeg1_clk>,
+ <&clock_mmss clk_camss_jpeg_jpeg_ahb_clk>,
+ <&clock_mmss clk_camss_jpeg_jpeg_axi_clk>,
+ <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ahb_clk>;
+ qcom,clock-rates = <320000000 0 0 0 0>;
+ };
+
+ qcom,jpeg@fda24000 {
+ cell-index = <2>;
+ compatible = "qcom,jpeg";
+ reg = <0xfda24000 0x400>,
+ <0xfda60000 0xc30>;
+ reg-names = "jpeg";
+ interrupts = <0 61 0>;
+ interrupt-names = "jpeg";
+ vdd-supply = <&gdsc_jpeg>;
+ clock-names = "core_clk", "iface_clk", "bus_clk0", "camss_top_ahb_clk", "camss_ahb_clk";
+ clocks = <&clock_mmss clk_camss_jpeg_jpeg2_clk>,
+ <&clock_mmss clk_camss_jpeg_jpeg_ahb_clk>,
+ <&clock_mmss clk_camss_jpeg_jpeg_axi_clk>,
+ <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ahb_clk>;
+ qcom,clock-rates = <266670000 0 0 0 0>;
+ };
+
+ qcom,jpeg@fdaa0000 {
+ cell-index = <3>;
+ compatible = "qcom,jpeg_dma";
+ reg = <0xfdaa0000 0x400>,
+ <0xfda60000 0xc30>;
+ reg-names = "jpeg";
+ interrupts = <0 304 0>;
+ interrupt-names = "jpeg";
+ vdd-supply = <&gdsc_jpeg>;
+ clock-names = "core_clk", "iface_clk", "bus_clk0", "camss_top_ahb_clk", "camss_ahb_clk";
+ clocks = <&clock_mmss clk_camss_jpeg_dma_clk>,
+ <&clock_mmss clk_camss_jpeg_jpeg_ahb_clk>,
+ <&clock_mmss clk_camss_jpeg_jpeg_axi_clk>,
+ <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ahb_clk>;
+ qcom,clock-rates = <266670000 0 0 0 0>;
+ };
+
+
+ qcom,irqrouter@fda00000 {
+ cell-index = <0>;
+ compatible = "qcom,irqrouter";
+ reg = <0xfda00000 0x100>;
+ reg-names = "irqrouter";
+ };
+
+ qcom,cpp@fda04000 {
+ cell-index = <0>;
+ compatible = "qcom,cpp";
+ reg = <0xfda04000 0x100>,
+ <0xfda80000 0x200>,
+ <0xfda18000 0x008>;
+ reg-names = "cpp", "cpp_vbif", "cpp_hw";
+ interrupts = <0 49 0>;
+ interrupt-names = "cpp";
+ vdd-supply = <&gdsc_cpp>;
+ clocks = <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_cpp_clk_src>,
+ <&clock_mmss clk_camss_vfe_cpp_ahb_clk>,
+ <&clock_mmss clk_camss_vfe_cpp_axi_clk>,
+ <&clock_mmss clk_camss_vfe_cpp_clk>,
+ <&clock_mmss clk_camss_micro_ahb_clk>,
+ <&clock_mmss clk_camss_ahb_clk>;
+ clock-names = "camss_top_ahb_clk", "cpp_core_clk",
+ "camss_vfe_cpp_ahb_clk", "camss_vfe_cpp_axi_clk",
+ "camss_vfe_cpp_clk","micro_iface_clk", "camss_ahb_clk";
+ qcom,clock-rates = <0 465000000 0 0 465000000 0 0>;
+ };
+
+ qcom,fd@fd878000 {
+ cell-index = <0>;
+ compatible = "qcom,face-detection";
+ reg = <0xfd878000 0x800>,
+ <0xfd87c000 0x800>,
+ <0xfd860000 0x1000>;
+ reg-names = "fd_core", "fd_misc", "fd_vbif";
+ interrupts = <0 316 0>;
+ interrupt-names = "fd";
+ vdd-supply = <&gdsc_fd>;
+ clocks = <&clock_mmss clk_fd_core_clk>,
+ <&clock_mmss clk_fd_core_uar_clk>,
+ <&clock_mmss clk_fd_axi_clk>,
+ <&clock_mmss clk_fd_ahb_clk>;
+ clock-names = "fd_core_clk", "fd_core_uar_clk",
+ "fd_axi_clk", "fd_ahb_clk";
+ clock-rates = <400000000 400000000 333000000 800000000>;
+ };
+
+ cci: qcom,cci@fda0c000 {
+ cell-index = <0>;
+ compatible = "qcom,cci";
+ reg = <0xfda0c000 0x1000>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-names = "cci";
+ interrupts = <0 50 0>;
+ interrupt-names = "cci";
+ qcom,gdscr-vdd-supply = <&gdsc_camss_top>;
+ clocks = <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_cci_clk_src>,
+ <&clock_mmss clk_camss_cci_cci_ahb_clk>,
+ <&clock_mmss clk_camss_cci_cci_clk>,
+ <&clock_mmss clk_camss_ahb_clk>;
+ clock-names = "camss_top_ahb_clk", "cci_src_clk",
+ "cci_ahb_clk", "camss_cci_clk",
+ "camss_ahb_clk";
+ qcom,clock-rates = <0 50000000 0 0 0 0>;
+ pinctrl-names = "cci_default", "cci_suspend";
+ pinctrl-0 = <&cci0_active &cci1_active>;
+ pinctrl-1 = <&cci0_suspend &cci1_suspend>;
+ gpios = <&msm_gpio 19 0>,
+ <&msm_gpio 20 0>,
+ <&msm_gpio 21 0>,
+ <&msm_gpio 22 0>;
+ qcom,gpio-tbl-num = <0 1 2 3>;
+ qcom,gpio-tbl-flags = <1 1 1 1>;
+ qcom,gpio-tbl-label = "CCI_I2C_DATA0",
+ "CCI_I2C_CLK0",
+ "CCI_I2C_DATA1",
+ "CCI_I2C_CLK1";
+ i2c_freq_100Khz: qcom,i2c_standard_mode {
+ status = "disabled";
+ };
+ i2c_freq_400Khz: qcom,i2c_fast_mode {
+ status = "disabled";
+ };
+ i2c_freq_custom: qcom,i2c_custom_mode {
+ status = "disabled";
+ };
+ };
+};
+
+&i2c_freq_100Khz {
+ qcom,hw-thigh = <78>;
+ qcom,hw-tlow = <114>;
+ qcom,hw-tsu-sto = <28>;
+ qcom,hw-tsu-sta = <28>;
+ qcom,hw-thd-dat = <10>;
+ qcom,hw-thd-sta = <77>;
+ qcom,hw-tbuf = <118>;
+ qcom,hw-scl-stretch-en = <0>;
+ qcom,hw-trdhld = <6>;
+ qcom,hw-tsp = <1>;
+ status = "ok";
+};
+
+&i2c_freq_400Khz {
+ qcom,hw-thigh = <20>;
+ qcom,hw-tlow = <28>;
+ qcom,hw-tsu-sto = <21>;
+ qcom,hw-tsu-sta = <21>;
+ qcom,hw-thd-dat = <13>;
+ qcom,hw-thd-sta = <18>;
+ qcom,hw-tbuf = <25>;
+ qcom,hw-scl-stretch-en = <0>;
+ qcom,hw-trdhld = <6>;
+ qcom,hw-tsp = <3>;
+ status = "ok";
+};
+
+&i2c_freq_custom {
+ qcom,hw-thigh = <15>;
+ qcom,hw-tlow = <28>;
+ qcom,hw-tsu-sto = <21>;
+ qcom,hw-tsu-sta = <21>;
+ qcom,hw-thd-dat = <13>;
+ qcom,hw-thd-sta = <18>;
+ qcom,hw-tbuf = <25>;
+ qcom,hw-scl-stretch-en = <1>;
+ qcom,hw-trdhld = <6>;
+ qcom,hw-tsp = <3>;
+ status = "ok";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-cdp.dts b/arch/arm64/boot/dts/qcom/msm8994-cdp.dts
new file mode 100644
index 00000000000..9099b499e81
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-cdp.dts
@@ -0,0 +1,24 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+
+/dts-v1/;
+
+#include "msm8994.dtsi"
+#include "msm8994-pinctrl.dtsi"
+#include "msm8994-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM8994 CDP";
+ compatible = "qcom,msm8994-cdp", "qcom,msm8994", "qcom,cdp";
+ qcom,board-id = <1 0>;
+}; \ No newline at end of file
diff --git a/arch/arm64/boot/dts/qcom/msm8994-cdp.dtsi b/arch/arm64/boot/dts/qcom/msm8994-cdp.dtsi
new file mode 100644
index 00000000000..f5961154e39
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-cdp.dtsi
@@ -0,0 +1,675 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "msm8994-pinctrl.dtsi"
+#include "msm8994-camera-sensor-cdp.dtsi"
+
+/ {
+ bt_qca6174 {
+ compatible = "qca,qca6174";
+ qca,bt-reset-gpio = <&pm8994_gpios 19 0>; /* BT_EN */
+ qca,bt-vdd-pa-supply = <&bt_vreg>;
+ qca,bt-vdd-io-supply = <&pm8994_s4>;
+ qca,bt-vdd-xtal-supply = <&pm8994_l30>;
+ qca,bt-vdd-io-voltage-level = <1800000 1800000>;
+ qca,bt-vdd-xtal-voltage-level = <1800000 1800000>;
+ };
+};
+
+&sdhc_1 {
+ vdd-supply = <&pm8994_l20>;
+ qcom,vdd-voltage-level = <2950000 2950000>;
+ qcom,vdd-current-level = <200 570000>;
+
+ vdd-io-supply = <&pm8994_s4>;
+ qcom,vdd-io-always-on;
+ qcom,vdd-io-voltage-level = <1800000 1800000>;
+ qcom,vdd-io-current-level = <200 325000>;
+
+ pinctrl-names = "active", "sleep";
+ pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on &sdc1_rclk_on>;
+ pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off &sdc1_rclk_off>;
+
+ qcom,nonremovable;
+
+ qcom,clk-rates = <400000 20000000 25000000 50000000 100000000 192000000 384000000>;
+ qcom,bus-speed-mode = "HS400_1p8v", "HS200_1p8v", "DDR_1p8v";
+ status = "ok";
+};
+
+&sdhc_2 {
+ vdd-supply = <&pm8994_l21>;
+ qcom,vdd-voltage-level = <2950000 2950000>;
+ qcom,vdd-current-level = <200 800000>;
+
+ vdd-io-supply = <&pm8994_l13>;
+ qcom,vdd-io-voltage-level = <1800000 2950000>;
+ qcom,vdd-io-current-level = <200 22000>;
+
+ #address-cells = <0>;
+ interrupt-parent = <&sdhc_2>;
+ interrupts = <0 1 2>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0xffffffff>;
+ interrupt-map = <0 &intc 0 125 0
+ 1 &intc 0 221 0
+ 2 &pm8994_gpios 8 0x3>;
+ interrupt-names = "hc_irq", "pwr_irq", "status_irq";
+ cd-gpios = <&pm8994_gpios 8 0x1>;
+
+ pinctrl-names = "active", "sleep";
+ pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on>;
+ pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off>;
+
+ qcom,clk-rates = <400000 20000000 25000000 50000000 100000000 200000000>;
+ qcom,bus-speed-mode = "SDR12", "SDR25", "SDR50", "DDR50", "SDR104";
+ status = "ok";
+};
+
+&pm8994_vadc {
+ chan@5 {
+ label = "vcoin";
+ reg = <5>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <1>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@7 {
+ label = "vph_pwr";
+ reg = <7>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <1>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@73 {
+ label = "msm_therm";
+ reg = <0x73>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@74 {
+ label = "emmc_therm";
+ reg = <0x74>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@75 {
+ label = "pa_therm0";
+ reg = <0x75>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@77 {
+ label = "pa_therm1";
+ reg = <0x77>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@78 {
+ label = "quiet_therm";
+ reg = <0x78>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+};
+
+&pm8994_adc_tm {
+ chan@73 {
+ label = "msm_therm";
+ reg = <0x73>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ qcom,btm-channel-number = <0x48>;
+ qcom,thermal-node;
+ };
+
+ chan@74 {
+ label = "emmc_therm";
+ reg = <0x74>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ qcom,btm-channel-number = <0x68>;
+ qcom,thermal-node;
+ };
+
+ chan@75 {
+ label = "pa_therm0";
+ reg = <0x75>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ qcom,btm-channel-number = <0x70>;
+ qcom,thermal-node;
+ };
+
+ chan@77 {
+ label = "pa_therm1";
+ reg = <0x77>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ qcom,btm-channel-number = <0x78>;
+ qcom,thermal-node;
+ };
+
+ chan@78 {
+ label = "quiet_therm";
+ reg = <0x78>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ qcom,btm-channel-number = <0x80>;
+ qcom,thermal-node;
+ };
+};
+
+&pmi8994_vadc {
+ chan@0 {
+ label = "usbin";
+ reg = <0>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <4>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@1 {
+ label = "dcin";
+ reg = <1>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <4>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@43 {
+ label = "usb_dp";
+ reg = <0x43>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <1>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@44 {
+ label = "usb_dm";
+ reg = <0x44>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <1>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+};
+
+#include "dsi-panel-sharp-dualmipi0-wqxga-video.dtsi"
+#include "dsi-panel-sharp-dualmipi1-wqxga-video.dtsi"
+#include "dsi-panel-jdi-dualmipi0-video.dtsi"
+#include "dsi-panel-jdi-dualmipi1-video.dtsi"
+#include "dsi-panel-jdi-dualmipi0-cmd.dtsi"
+#include "dsi-panel-jdi-dualmipi1-cmd.dtsi"
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&pmx_mdss {
+ qcom,num-grp-pins = <1>;
+ qcom,pins = <&gp 78>;
+};
+
+&pmx_mdss_te {
+ qcom,num-grp-pins = <1>;
+ qcom,pins = <&gp 10>;
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_dual_sharp_video_0>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
+ qcom,dsi-panel-bias-vreg;
+ qcom,platform-reset-gpio = <&msm_gpio 78 0>;
+
+ qcom,platform-enable-gpio = <&pm8994_gpios 14 0>;
+};
+
+&mdss_dsi1 {
+ qcom,dsi-pref-prim-pan = <&dsi_dual_sharp_video_1>;
+};
+
+&dsi_dual_sharp_video_0 {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+};
+
+&dsi_dual_jdi_video_0 {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+};
+
+&dsi_dual_jdi_cmd_0 {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+};
+
+&pmx_hdmi_cec {
+ qcom,num-grp-pins = <1>;
+ qcom,pins = <&gp 31>;
+};
+
+&pmx_hdmi_ddc {
+ qcom,num-grp-pins = <2>;
+ qcom,pins = <&gp 32>, <&gp 33>;
+};
+
+&pmx_hdmi_hpd {
+ qcom,num-grp-pins = <1>;
+ qcom,pins = <&gp 34>;
+};
+
+&mdss_hdmi_tx {
+ pinctrl-names = "hdmi_hpd_active", "hdmi_ddc_active",
+ "hdmi_cec_active", "hdmi_active",
+ "hdmi_sleep";
+ pinctrl-0 = <&mdss_hdmi_hpd_active &mdss_hdmi_ddc_suspend
+ &mdss_hdmi_cec_suspend>;
+ pinctrl-1 = <&mdss_hdmi_hpd_active &mdss_hdmi_ddc_active
+ &mdss_hdmi_cec_suspend>;
+ pinctrl-2 = <&mdss_hdmi_hpd_active &mdss_hdmi_cec_active
+ &mdss_hdmi_ddc_suspend>;
+ pinctrl-3 = <&mdss_hdmi_hpd_active &mdss_hdmi_ddc_active
+ &mdss_hdmi_cec_active>;
+ pinctrl-4 = <&mdss_hdmi_hpd_suspend &mdss_hdmi_ddc_suspend
+ &mdss_hdmi_cec_suspend>;
+};
+
+&soc {
+ i2c@f9924000 {
+ synaptics@20 {
+ compatible = "synaptics,dsx";
+ reg = <0x20>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <61 0x2008>;
+ vdd-supply = <&pm8994_l14>;
+ avdd-supply = <&pm8994_l22>;
+ pinctrl-names = "pmx_ts_active", "pmx_ts_suspend";
+ pinctrl-0 = <&ts_active>;
+ pinctrl-1 = <&ts_suspend>;
+ synaptics,display-coords = <0 0 1599 2559>;
+ synaptics,panel-coords = <0 0 1599 2703>;
+ synaptics,reset-gpio = <&msm_gpio 60 0x00>;
+ synaptics,irq-gpio = <&msm_gpio 61 0x2008>;
+ synaptics,disable-gpios;
+ };
+ };
+
+ gen-vkeys {
+ compatible = "qcom,gen-vkeys";
+ label = "synaptics_dsx";
+ qcom,disp-maxx = <1599>;
+ qcom,disp-maxy = <2559>;
+ qcom,panel-maxx = <1599>;
+ qcom,panel-maxy = <2703>;
+ qcom,key-codes = <158 139 102 217>;
+ };
+
+ i2c@f9928000 { /* BLSP1 QUP6 */
+ status = "ok";
+ nfc-nci@e {
+ compatible = "qcom,nfc-nci";
+ reg = <0x0e>;
+ qcom,irq-gpio = <&msm_gpio 29 0x00>;
+ qcom,dis-gpio = <&msm_gpio 30 0x00>;
+ qcom,clk-src = "BBCLK2";
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <29 0>;
+ interrupt-names = "nfc_irq";
+ pinctrl-names = "nfc_active","nfc_suspend";
+ pinctrl-0 = <&nfc_int_active &nfc_disable_active>;
+ pinctrl-1 = <&nfc_int_suspend &nfc_disable_suspend>;
+ qcom,clk-gpio = <&pm8994_gpios 10 0>;
+ qcom,pwr-req-gpio = <&pm8994_gpios 7 0>;
+ clocks = <&clock_rpm clk_bb_clk2_pin>;
+ clock-names = "ref_clk";
+ };
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+
+ vol_up {
+ label = "volume_up";
+ gpios = <&pm8994_gpios 3 0x1>;
+ linux,input-type = <1>;
+ linux,code = <115>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+
+ cam_snapshot {
+ label = "cam_snapshot";
+ gpios = <&pm8994_gpios 4 0x1>;
+ linux,input-type = <1>;
+ linux,code = <766>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+
+ cam_focus {
+ label = "cam_focus";
+ gpios = <&pm8994_gpios 5 0x1>;
+ linux,input-type = <1>;
+ linux,code = <528>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+
+
+ };
+
+ sound {
+ qcom,model = "msm8994-tomtom-cdp-snd-card";
+ qcom,cdc-micbias2-headset-only;
+ qcom,us-euro-gpios = <&pm8994_mpps 2 0>;
+ qcom,mbhc-audio-jack-type = "6-pole-jack";
+ qcom,hdmi-audio-rx;
+ };
+
+ usb1_vreg: usb1_vreg {
+ compatible = "regulator-fixed";
+ regulator-name = "usb1_vreg";
+ startup-delay-us = <18000>; /* the on time of TPD4S214 */
+ enable-active-high;
+ gpio = <&pmi8994_gpios 5 0>;
+ };
+};
+
+&pm8994_gpios {
+ gpio@c200 { /* GPIO 3 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ };
+
+ gpio@c300 { /* GPIO 4 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ };
+
+ gpio@c400 { /* GPIO 5 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ };
+
+ gpio@c600 { /* GPIO 7 */
+ /* NFC pwr request */
+ qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
+ qcom,pull = <5>; /* QPNP_PIN_PULL_NO */
+ qcom,vin-sel = <2>; /* QPNP_PIN_VIN2 */
+ qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
+ qcom,master-en = <1>;
+ };
+
+ gpio@c900 { /* GPIO 10 */
+ /* NFC clk request */
+ qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
+ qcom,pull = <5>; /* QPNP_PIN_PULL_NO */
+ qcom,vin-sel = <2>; /* QPNP_PIN_VIN2 */
+ qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
+ qcom,master-en = <1>;
+ };
+
+ gpio@c700 { /* GPIO 8 */
+ qcom,mode = <0>; /* Digital in */
+ qcom,pull = <0>; /* PULL up 30uA */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,invert = <1>; /* Output high */
+ qcom,vin-sel = <2>; /* Logical 1 voltage value 1.8v */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,out-strength = <1>; /* Low drive strength */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+
+ gpio@c800 { /* GPIO 9 */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,invert = <1>; /* Output high */
+ qcom,vin-sel = <0>; /* VPH_PWR */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,out-strength = <1>; /* High drive strength */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+
+ gpio@ce00 { /* GPIO 15 */
+ qcom,mode = <1>;
+ qcom,output-type = <0>;
+ qcom,pull = <5>;
+ qcom,vin-sel = <2>;
+ qcom,out-strength = <1>;
+ qcom,src-sel = <2>;
+ qcom,master-en = <1>;
+ };
+
+ gpio@d100 { /* GPIO 18 */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,invert = <0>; /* Output low initially */
+ qcom,vin-sel = <2>; /* VIN 2 */
+ qcom,src-sel = <3>; /* Function 2 */
+ qcom,out-strength = <2>; /* Medium */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+
+ gpio@d200 { /* GPIO 19 */
+ qcom,mode = <1>; /* Digital output*/
+ qcom,pull = <4>; /* Pulldown 10uA */
+ qcom,vin-sel = <2>; /* VIN2 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,invert = <0>; /* Invert */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+ gpio@cd00 { /* GPIO 14 */
+ qcom,mode = <1>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <1>; /* sel = 1 is high */
+ qcom,invert = <0>; /* need invert = 0 */
+ qcom,master-en = <1>;
+ };
+};
+
+&pm8994_mpps {
+ mpp@a000 { /* MPP 1 */
+ };
+
+ mpp@a100 { /* MPP 2 */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,vin-sel = <2>; /* S4 1.8V */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+
+ mpp@a300 { /* MPP 4 */
+ /* HDMI_5v_vreg regulator enable */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,vin-sel = <2>; /* S4 1.8V */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,master-en = <1>; /* Enable GPIO */
+ qcom,invert = <0>;
+ };
+};
+
+&pmi8994_mpps {
+ mpp@a300 { /* MPP 4 */
+ /* WLED FET */
+ qcom,mode = <1>;
+ qcom,master-en = <1>;
+ };
+};
+
+&pmi8994_charger {
+ qcom,charging-disabled;
+};
+
+&slim_msm {
+ tomtom_codec {
+ cdc-vdd-spkdrv-supply = <&pmi8994_boost>;
+ qcom,cdc-vdd-spkdrv-voltage = <5000000 5000000>;
+ qcom,cdc-vdd-spkdrv-current = <600000>;
+
+ cdc-vdd-spkdrv-2-supply = <&pmi8994_boost>;
+ qcom,cdc-vdd-spkdrv-2-voltage = <5000000 5000000>;
+ qcom,cdc-vdd-spkdrv-2-current = <600000>;
+
+ qcom,cdc-on-demand-supplies = "cdc-vdd-spkdrv",
+ "cdc-vdd-spkdrv-2";
+ };
+};
+
+/* CoreSight */
+&tpiu {
+ pinctrl-names = "seta-pctrl", "setb-pctrl";
+ pinctrl-0 = <&seta_1 &seta_2 &seta_3 &seta_4 &seta_5 &seta_6 &seta_7
+ &seta_8 &seta_9 &seta_10 &seta_11 &seta_12 &seta_13
+ &seta_14 &seta_15 &seta_16 &seta_17 &seta_18>;
+ pinctrl-1 = <&setb_1 &setb_2 &setb_3 &setb_4 &setb_5 &setb_6 &setb_7
+ &setb_8 &setb_9 &setb_10 &setb_11 &setb_12 &setb_13
+ &setb_14 &setb_15 &setb_16 &setb_17 &setb_18>;
+};
+
+&blsp2_uart2 {
+ status = "ok";
+};
+
+&blsp1_uart2 {
+ status= "ok";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart_console_sleep>;
+};
+
+&ufsphy1 {
+ status = "ok";
+};
+
+&ufs1 {
+ status = "ok";
+};
+
+&usb3 {
+ status = "ok";
+};
+
+&hsphy0 {
+ status = "ok";
+};
+
+&ssphy0 {
+ status = "ok";
+};
+
+&qcom_crypto {
+ status = "okay";
+};
+
+&qcom_cedev {
+ status = "okay";
+};
+
+&i2c_5 {
+ silabs4705@11 { /* SiLabs FM chip, slave id 0x11*/
+ status = "ok";
+ compatible = "silabs,si4705";
+ reg = <0x11>;
+ vdd-supply = <&pm8994_s4>;
+ silabs,vdd-supply-voltage = <1800000 1800000>;
+ pinctrl-names = "pmx_fm_active","pmx_fm_suspend";
+ pinctrl-0 = <&fm_int_active &fm_rst_active>;
+ pinctrl-1 = <&fm_int_suspend &fm_rst_suspend>;
+ silabs,reset-gpio = <&msm_gpio 62 0>;
+ silabs,int-gpio = <&msm_gpio 9 0>;
+ silabs,status-gpio = <&msm_gpio 11 0>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <9 2>;
+ interrupt-names = "silabs_fm_int";
+ };
+};
+
+&pmi8994_haptics {
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-coresight.dtsi b/arch/arm64/boot/dts/qcom/msm8994-coresight.dtsi
new file mode 100644
index 00000000000..f5d040e775a
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-coresight.dtsi
@@ -0,0 +1,778 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ tmc_etr: tmc@fc326000 {
+ compatible = "arm,coresight-tmc";
+ reg = <0xfc326000 0x1000>,
+ <0xfc37c000 0x3000>;
+ reg-names = "tmc-base", "bam-base";
+ interrupts = <0 270 0>;
+ interrupt-names = "byte-cntr-irq";
+
+ qcom,memory-size = <0x1400000>;
+ qcom,tmc-flush-powerdown;
+
+ coresight-id = <0>;
+ coresight-name = "coresight-tmc-etr";
+ coresight-nr-inports = <1>;
+ coresight-ctis = <&cti0 &cti8>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpiu: tpiu@fc320000 {
+ compatible = "arm,coresight-tpiu";
+ reg = <0xfc320000 0x1000>,
+ <0xfd512000 0x1000>;
+ reg-names = "tpiu-base", "nidnt-base";
+
+ coresight-id = <1>;
+ coresight-name = "coresight-tpiu";
+ coresight-nr-inports = <1>;
+
+ vdd-supply = <&pm8994_l21>;
+ qcom,vdd-voltage-level = <2950000 2950000>;
+ qcom,vdd-current-level = <200 800000>;
+
+ vdd-io-supply = <&pm8994_l13>;
+ qcom,vdd-io-voltage-level = <2950000 2950000>;
+ qcom,vdd-io-current-level = <200 22000>;
+
+ qcom,nidntsw;
+ qcom,nidnt-swduart;
+ qcom,nidnt-swdtrc;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ replicator: replicator@fc324000 {
+ compatible = "qcom,coresight-replicator";
+ reg = <0xfc324000 0x1000>;
+ reg-names = "replicator-base";
+
+ coresight-id = <2>;
+ coresight-name = "coresight-replicator";
+ coresight-nr-inports = <1>;
+ coresight-outports = <0 1>;
+ coresight-child-list = <&tmc_etr &tpiu>;
+ coresight-child-ports = <0 0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tmc_etf: tmc@fc325000 {
+ compatible = "arm,coresight-tmc";
+ reg = <0xfc325000 0x1000>;
+ reg-names = "tmc-base";
+
+ coresight-id = <3>;
+ coresight-name = "coresight-tmc-etf";
+ coresight-nr-inports = <1>;
+ coresight-outports = <0>;
+ coresight-child-list = <&replicator>;
+ coresight-child-ports = <0>;
+ coresight-default-sink;
+ coresight-ctis = <&cti0 &cti8>;
+
+ qcom,tmc-flush-powerdown;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_merg: funnel@fc323000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0xfc323000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <4>;
+ coresight-name = "coresight-funnel-merg";
+ coresight-nr-inports = <2>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tmc_etf>;
+ coresight-child-ports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_in0: funnel@fc321000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0xfc321000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <5>;
+ coresight-name = "coresight-funnel-in0";
+ coresight-nr-inports = <8>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_merg>;
+ coresight-child-ports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_in1: funnel@fc322000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0xfc322000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <6>;
+ coresight-name = "coresight-funnel-in1";
+ coresight-nr-inports = <8>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_merg>;
+ coresight-child-ports = <1>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_apss: funnel@fbb60000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0xfbb60000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <7>;
+ coresight-name = "coresight-funnel-apss";
+ coresight-nr-inports = <4>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in1>;
+ coresight-child-ports = <6>;
+
+ qcom,funnel-save-restore;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_mmss: funnel@fc370000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0xfc370000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <8>;
+ coresight-name = "coresight-funnel-mmss";
+ coresight-nr-inports = <4>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in1>;
+ coresight-child-ports = <2>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ stm: stm@fc302000 {
+ compatible = "arm,coresight-stm";
+ reg = <0xfc302000 0x1000>,
+ <0xfa280000 0x180000>;
+ reg-names = "stm-base", "stm-data-base";
+
+ coresight-id = <9>;
+ coresight-name = "coresight-stm";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <7>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm0: etm@fb840000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0xfb840000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <10>;
+ coresight-name = "coresight-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss>;
+ coresight-child-ports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm1: etm@fb940000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0xfb940000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <11>;
+ coresight-name = "coresight-etm1";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss>;
+ coresight-child-ports = <1>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm2: etm@fba40000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0xfba40000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <12>;
+ coresight-name = "coresight-etm2";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss>;
+ coresight-child-ports = <2>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm3: etm@fbb40000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0xfbb40000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <13>;
+ coresight-name = "coresight-etm3";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss>;
+ coresight-child-ports = <3>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm4: etm@fbc40000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0xfbc40000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <14>;
+ coresight-name = "coresight-etm4";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss>;
+ coresight-child-ports = <4>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm5: etm@fbd40000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0xfbd40000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <15>;
+ coresight-name = "coresight-etm5";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss>;
+ coresight-child-ports = <5>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm6: etm@fbe40000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0xfbe40000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <16>;
+ coresight-name = "coresight-etm6";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss>;
+ coresight-child-ports = <6>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm7: etm@fbf40000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0xfbf40000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <17>;
+ coresight-name = "coresight-etm7";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss>;
+ coresight-child-ports = <7>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ audio_etm0 {
+ compatible = "qcom,coresight-audio-etm";
+
+ coresight-id = <18>;
+ coresight-name = "coresight-audio-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <2>;
+ };
+
+ modem_etm0 {
+ compatible = "qcom,coresight-modem-etm";
+
+ coresight-id = <19>;
+ coresight-name = "coresight-modem-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <1>;
+ };
+
+ wcn_etm0 {
+ compatible = "qcom,coresight-wcn-etm";
+
+ coresight-id = <20>;
+ coresight-name = "coresight-wcn-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in1>;
+ coresight-child-ports = <0>;
+ };
+
+ rpm_etm0 {
+ compatible = "qcom,coresight-rpm-etm";
+
+ coresight-id = <21>;
+ coresight-name = "coresight-rpm-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <0>;
+ };
+
+ csr: csr@fc301000 {
+ compatible = "qcom,coresight-csr";
+ reg = <0xfc301000 0x1000>;
+ reg-names = "csr-base";
+
+ coresight-id = <22>;
+ coresight-name = "coresight-csr";
+ coresight-nr-inports = <0>;
+
+ qcom,blk-size = <1>;
+ };
+
+ cti0: cti@fc310000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfc310000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <23>;
+ coresight-name = "coresight-cti0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti1: cti@fc311000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfc311000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <24>;
+ coresight-name = "coresight-cti1";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti2: cti@fc312000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfc312000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <25>;
+ coresight-name = "coresight-cti2";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti3: cti@fc313000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfc313000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <26>;
+ coresight-name = "coresight-cti3";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti4: cti@fc314000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfc314000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <27>;
+ coresight-name = "coresight-cti4";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti5: cti@fc315000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfc315000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <28>;
+ coresight-name = "coresight-cti5";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti6: cti@fc316000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfc316000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <29>;
+ coresight-name = "coresight-cti6";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,cti-gpio-trigout = <2>;
+ pinctrl-names = "cti-trigout-pctrl";
+ pinctrl-0 = <&trigout_a>;
+ };
+
+ cti7: cti@fc317000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfc317000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <30>;
+ coresight-name = "coresight-cti7";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti8: cti@fc318000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfc318000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <31>;
+ coresight-name = "coresight-cti8";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,cti-gpio-trigout = <4>;
+ pinctrl-names = "cti-trigout-pctrl";
+ pinctrl-0 = <&trigout_c>;
+ };
+
+ cti_cpu0: cti@fb820000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfb820000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <32>;
+ coresight-name = "coresight-cti-cpu0";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,cti-ack-atomic;
+ qcom,cti-save;
+ };
+
+ cti_cpu1: cti@fb920000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfb920000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <33>;
+ coresight-name = "coresight-cti-cpu1";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU1>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,cti-ack-atomic;
+ qcom,cti-save;
+ };
+
+ cti_cpu2: cti@fba20000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfba20000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <34>;
+ coresight-name = "coresight-cti-cpu2";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU2>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,cti-ack-atomic;
+ qcom,cti-save;
+ };
+
+ cti_cpu3: cti@fbb2000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfbb20000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <35>;
+ coresight-name = "coresight-cti-cpu3";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU3>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,cti-ack-atomic;
+ qcom,cti-save;
+ };
+
+ cti_cpu4: cti@fbc20000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfbc20000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <36>;
+ coresight-name = "coresight-cti-cpu4";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU4>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,cti-ack-atomic;
+ qcom,cti-save;
+ };
+
+ cti_cpu5: cti@fbd20000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfbd20000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <37>;
+ coresight-name = "coresight-cti-cpu5";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU5>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,cti-ack-atomic;
+ qcom,cti-save;
+ };
+
+ cti_cpu6: cti@fbe20000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfbe20000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <38>;
+ coresight-name = "coresight-cti-cpu6";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU6>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,cti-ack-atomic;
+ qcom,cti-save;
+ };
+
+ cti_cpu7: cti@fbf2000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfbf20000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <39>;
+ coresight-name = "coresight-cti-cpu7";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU7>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,cti-ack-atomic;
+ qcom,cti-save;
+ };
+
+ cti_video_cpu0: cti@fc338000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfc338000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <40>;
+ coresight-name = "coresight-cti-video-cpu0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_modem_cpu0: cti@fc33c000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfc33c000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <41>;
+ coresight-name = "coresight-cti-modem-cpu0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_audio_cpu0: cti@fc360000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfc360000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <42>;
+ coresight-name = "coresight-cti-audio-cpu0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_rpm_cpu0: cti@fc364000 {
+ compatible = "arm,coresight-cti";
+ reg = <0xfc364000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <43>;
+ coresight-name = "coresight-cti-rpm-cpu0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ hwevent: hwevent@fd820018 {
+ compatible = "qcom,coresight-hwevent";
+ reg = <0xfd828018 0x80>,
+ <0xf9112000 0x80>,
+ <0xf9112080 0x4>,
+ <0xf9112084 0x4>,
+ <0xf9112088 0x14>,
+ <0xf9112148 0x38>,
+ <0xfd4ab160 0x80>,
+ <0xfc401600 0x80>,
+ <0xfd4ab360 0x80>,
+ <0xfc596000 0x80>,
+ <0xfc520000 0x4>,
+ <0xfc520058 0x80>,
+ <0xfc528000 0x4>,
+ <0xfc528058 0x80>;
+ reg-names = "mmss-mux", "apcs-hwev", "apcs-spi", "apcs-ppi",
+ "apcs-cpu", "apcs-cci", "ppss-mux", "gcc-mux",
+ "tcsr-mux", "ufs-mux", "pcie0-sysctl", "pcie0-hwev",
+ "pcie1-sysctl", "pcie1-hwev";
+
+ coresight-id = <44>;
+ coresight-name = "coresight-hwevent";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>,
+ <&clock_mmss clk_mmss_misc_ahb_clk>,
+ <&clock_gcc clk_gcc_ufs_ahb_clk>,
+ <&clock_gcc clk_gcc_ufs_axi_clk>;
+ clock-names = "core_clk", "core_a_clk", "core_mmss_clk",
+ "ufs_ahb_clk", "ufs_axi_clk";
+
+ qcom,hwevent-clks = "core_mmss_clk", "ufs_ahb_clk",
+ "ufs_axi_clk";
+ qcom,hwevent-regs = "gdsc_ufs";
+ };
+
+ fuse: fuse@fc4be024 {
+ compatible = "arm,coresight-fuse";
+ reg = <0xfc4be024 0x8>;
+ reg-names = "fuse-base";
+
+ coresight-id = <45>;
+ coresight-name = "coresight-fuse";
+ coresight-nr-inports = <0>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-gpu.dtsi b/arch/arm64/boot/dts/qcom/msm8994-gpu.dtsi
new file mode 100644
index 00000000000..af4d6463511
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-gpu.dtsi
@@ -0,0 +1,117 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ msm_gpu: qcom,kgsl-3d0@fdb00000 {
+ label = "kgsl-3d0";
+ compatible = "qcom,kgsl-3d0", "qcom,kgsl-3d";
+ reg = <0xfdb00000 0x20000
+ 0xfdb20000 0x10000>;
+ reg-names = "kgsl_3d0_reg_memory" , "kgsl_3d0_shader_memory";
+ interrupts = <0 33 0>;
+ interrupt-names = "kgsl_3d0_irq";
+ qcom,id = <0>;
+
+ qcom,chipid = <0x04030000>;
+
+ qcom,initial-pwrlevel = <2>;
+
+ qcom,idle-timeout = <8>; //<HZ/12>
+ qcom,strtstp-sleepwake;
+
+ /*
+ * Clocks = KGSL_CLK_CORE | KGSL_CLK_IFACE
+ */
+ qcom,clk-map = <0x00000006>;
+
+ clocks = <&clock_mmss clk_oxili_gfx3d_clk>,
+ <&clock_mmss clk_oxilicx_ahb_clk>;
+ clock-names = "core_clk", "iface_clk";
+
+ /* Bus Scale Settings */
+ qcom,bus-control;
+ qcom,msm-bus,name = "grp3d";
+ qcom,msm-bus,num-cases = <12>;
+ qcom,msm-bus,num-paths = <2>;
+ qcom,msm-bus,vectors-KBps =
+ <26 512 0 0>, <89 662 0 0>,
+
+ <26 512 0 1200000>, <89 662 0 2880000>, // gpu=180 bus=150
+ <26 512 0 2400000>, <89 662 0 2880000>, // gpu=180 bus=300
+ <26 512 0 3200000>, <89 662 0 2880000>, // gpu=180 bus=400
+
+ <26 512 0 2400000>, <89 662 0 4800000>, // gpu=300 bus=300
+ <26 512 0 4224000>, <89 662 0 4800000>, // gpu=300 bus=528
+ <26 512 0 5376000>, <89 662 0 4800000>, // gpu=300 bus=672
+
+ <26 512 0 5376000>, <89 662 0 7200000>, // gpu=450 bus=672
+ <26 512 0 6681600>, <89 662 0 7200000>, // gpu=450 bus=835.2
+ <26 512 0 8448000>, <89 662 0 7200000>, // gpu=450 bus=1056
+
+ <26 512 0 8448000>, <89 662 0 9200000>, // gpu=575 bus=1056
+ <26 512 0 12748800>, <89 662 0 9200000>; // gpu=575 bus=1593.6
+
+ /* GDSC oxili regulators */
+ vddcx-supply = <&gdsc_oxili_cx>;
+ vdd-supply = <&gdsc_oxili_gx>;
+
+ /* IOMMU Data */
+ iommu = <&kgsl_iommu>;
+
+ /* Trace bus */
+ coresight-id = <67>;
+ coresight-name = "coresight-gfx";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <4>;
+
+ /* Power levels */
+ qcom,gpu-pwrlevels {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ compatible = "qcom,gpu-pwrlevels";
+
+ qcom,gpu-pwrlevel@0 {
+ reg = <0>;
+ qcom,gpu-freq = <575000000>;
+ qcom,bus-freq = <11>;
+ };
+
+ qcom,gpu-pwrlevel@1 {
+ reg = <1>;
+ qcom,gpu-freq = <450000000>;
+ qcom,bus-freq = <8>;
+ };
+
+ qcom,gpu-pwrlevel@2 {
+ reg = <2>;
+ qcom,gpu-freq = <300000000>;
+ qcom,bus-freq = <5>;
+ };
+
+ qcom,gpu-pwrlevel@3 {
+ reg = <3>;
+ qcom,gpu-freq = <180000000>;
+ qcom,bus-freq = <2>;
+ };
+
+ qcom,gpu-pwrlevel@4 {
+ reg = <4>;
+ qcom,gpu-freq = <27000000>;
+ qcom,bus-freq = <0>;
+ };
+ };
+
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-iommu-domains.dtsi b/arch/arm64/boot/dts/qcom/msm8994-iommu-domains.dtsi
new file mode 100644
index 00000000000..840818c2d7c
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-iommu-domains.dtsi
@@ -0,0 +1,45 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ qcom,iommu-domains {
+ compatible = "qcom,iommu-domains";
+
+ venus_domain_ns: qcom,iommu-domain1 {
+ label = "venus_ns";
+ qcom,iommu-contexts = <&venus_ns>;
+ qcom,virtual-addr-pool = <0x5dc00000 0x7f000000
+ 0xdcc00000 0x1000000>;
+ };
+
+ venus_domain_sec_bitstream: qcom,iommu-domain2 {
+ label = "venus_sec_bitstream";
+ qcom,iommu-contexts = <&venus_sec_bitstream>;
+ qcom,virtual-addr-pool = <0x4b000000 0x12c00000>;
+ qcom,secure-domain;
+ };
+
+ venus_domain_sec_pixel: qcom,iommu-domain3 {
+ label = "venus_sec_pixel";
+ qcom,iommu-contexts = <&venus_sec_pixel>;
+ qcom,virtual-addr-pool = <0x25800000 0x25800000>;
+ qcom,secure-domain;
+ };
+
+ venus_domain_sec_non_pixel: qcom,iommu-domain4 {
+ label = "venus_sec_non_pixel";
+ qcom,iommu-contexts = <&venus_sec_non_pixel>;
+ qcom,virtual-addr-pool = <0x1000000 0x24800000>;
+ qcom,secure-domain;
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-iommu.dtsi b/arch/arm64/boot/dts/qcom/msm8994-iommu.dtsi
new file mode 100644
index 00000000000..2343cba52c0
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-iommu.dtsi
@@ -0,0 +1,429 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "msm-iommu-v1.dtsi"
+
+&soc {
+ mdp_iommu_8994: qcom,iommu@fd9cc000 {
+ compatible = "qcom,msm-smmu-v1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0xfd9cc000 0x10000>;
+ reg-names = "iommu_base";
+ interrupts = <0 73 0>,
+ <0 229 0>, <0 231 0>,
+ <0 230 0>, <0 232 0>;
+ interrupt-names = "pmon",
+ "global_cfg_NS_irq", "global_client_NS_irq",
+ "global_cfg_S_irq", "global_client_S_irq";
+ qcom,iommu-secure-id = <1>;
+ label = "mdp_iommu";
+ qcom,msm-bus,name = "mdp_ebi";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <22 512 0 0>,
+ <22 512 0 1000>;
+
+ status = "ok";
+ vdd-supply = <&gdsc_mdss>;
+ clocks = <&clock_mmss clk_mdss_axi_clk>,
+ <&clock_mmss clk_mdss_ahb_clk>;
+ clock-names = "core_clk", "iface_clk";
+
+ qcom,iommu-pmu-ngroups = <1>;
+ qcom,iommu-pmu-ncounters = <8>;
+ qcom,iommu-pmu-event-classes = <0x00
+ 0x01
+ 0x08
+ 0x09
+ 0x0A
+ 0x10
+ 0x11
+ 0x12
+ 0x80
+ 0x81
+ 0x82
+ 0x83
+ 0x90
+ 0x91
+ 0x92
+ 0xb0
+ 0xb1>;
+
+ qcom,iommu-bfb-regs = <0x2000
+ 0x204c
+ 0x2060
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x2008
+ 0x200c
+ 0x2010
+ 0x2014
+ 0x2018>;
+
+ qcom,iommu-bfb-data = <0x3
+ 0x7fffff
+ 0x1777
+ 0x0
+ 0x4
+ 0x10
+ 0x5000
+ 0x182c1
+ 0x5a1d
+ 0x1822d
+ 0x0
+ 0x0
+ 0x28
+ 0x68
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0>;
+
+ qcom,iommu-ctx@fd9d4000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfd9d4000 0x1000>;
+ interrupts = <0 47 0>;
+ qcom,iommu-ctx-sids = <0>;
+ label = "mdp_0";
+ };
+
+ qcom,iommu-ctx@fd9d5000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfd9d5000 0x1000>;
+ interrupts = <0 47 0>, <0 46 0>;
+ qcom,iommu-ctx-sids = <1>;
+ label = "mdp_1";
+ qcom,secure-context;
+ };
+
+ qcom,iommu-ctx@fd9d6000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfd9d6000 0x1000>;
+ interrupts = <0 47 0>, <0 46 0>;
+ qcom,iommu-ctx-sids = <>;
+ label = "mdp_2";
+ qcom,secure-context;
+ };
+ };
+};
+
+&venus_iommu {
+ status = "ok";
+ vdd-supply = <&gdsc_venus>;
+ clocks = <&clock_mmss clk_venus0_axi_clk>,
+ <&clock_mmss clk_venus0_ahb_clk>,
+ <&clock_mmss clk_venus0_vcodec0_clk>;
+ clock-names = "core_clk", "iface_clk", "alt_core_clk";
+
+ qcom,iommu-bfb-regs = <0x2000
+ 0x204c
+ 0x2060
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x2008
+ 0x200c
+ 0x2010
+ 0x2014
+ 0x2018
+ 0x201c>;
+
+ qcom,iommu-bfb-data = <0x3
+ 0x7ffffff
+ 0x1555
+ 0x0
+ 0x4
+ 0x8
+ 0x13607
+ 0x140a0
+ 0x4000
+ 0x14020
+ 0x0
+ 0x0
+ 0x94
+ 0x114
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0
+ 0x0>;
+
+ venus_ns: qcom,iommu-ctx@fdc8c000 {
+ qcom,iommu-ctx-sids = <0x00 0x21 0x45 0x47 0x48 0x49 0x4a
+ 0x4b 0x4c 0x65 0x67 0x69 0x6a 0x6b>;
+ qcom,iommu-sid-mask = <0x0 0xf 0x0 0x0 0x0 0x0 0x0
+ 0x0 0x0 0x0 0x0 0x0 0x0 0x0>;
+ };
+
+ venus_sec_bitstream: qcom,iommu-ctx@fdc8d000 {
+ qcom,iommu-ctx-sids = <0x400 0x421 0x422 0x423 0x424 0x448
+ 0x44a 0x46a>;
+ label = "venus_sec_bitstream";
+ };
+
+ venus_fw: qcom,iommu-ctx@fdc8e000 {
+ qcom,iommu-ctx-sids = <0x600 0x606>;
+ };
+
+ venus_sec_pixel: qcom,iommu-ctx@fdc8f000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfdc8f000 0x1000>;
+ interrupts = <0 42 0>, <0 43 0>;
+ qcom,iommu-ctx-sids = <0x425 0x428 0x445 0x44c 0x465>;
+ label = "venus_sec_pixel";
+ qcom,secure-context;
+ };
+
+ venus_sec_non_pixel: qcom,iommu-ctx@fdc90000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfdc90000 0x1000>;
+ interrupts = <0 42 0>, <0 43 0>;
+ qcom,iommu-ctx-sids = <0x427 0x447 0x449 0x44b 0x467 0x469 0x46b
+ 0x500>;
+ label = "venus_sec_non_pixel";
+ qcom,secure-context;
+ };
+};
+
+&jpeg_iommu {
+ status = "ok";
+ vdd-supply = <&gdsc_jpeg>;
+ qcom,needs-alt-core-clk;
+ qcom,needs-alt-iface-clk;
+ clocks = <&clock_mmss clk_camss_jpeg_jpeg_axi_clk>,
+ <&clock_mmss clk_camss_jpeg_jpeg_ahb_clk>,
+ <&clock_mmss clk_camss_ahb_clk>,
+ <&clock_mmss clk_camss_top_ahb_clk>;
+ clock-names = "core_clk", "iface_clk", "alt_iface_clk", "alt_core_clk";
+
+ qcom,iommu-bfb-regs = <0x2000
+ 0x204c
+ 0x2060
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x2008
+ 0x200c
+ 0x2010
+ 0x2014>;
+
+ qcom,iommu-bfb-data = <0x3
+ 0x3ffff
+ 0x1555
+ 0x0
+ 0x4
+ 0x4
+ 0x2000
+ 0xe673
+ 0x2c00
+ 0xe616
+ 0x0
+ 0x0
+ 0x10
+ 0x68
+ 0x0
+ 0x0
+ 0x0
+ 0x0>;
+
+ qcom,iommu-ctx@fda6f000 {
+ compatible = "qcom,msm-smmu-v1-ctx";
+ reg = <0xfda6f000 0x1000>;
+ interrupts = <0 70 0>;
+ qcom,iommu-ctx-sids = <3>;
+ label = "jpeg_dma";
+ };
+};
+
+&kgsl_iommu {
+ status = "ok";
+ vdd-supply = <&gdsc_oxili_cx>;
+ qcom,alt-vdd-supply = <&gdsc_oxili_gx>;
+ qcom,iommu-secure-id = <18>;
+ clocks = <&clock_mmss clk_oxili_gfx3d_clk>,
+ <&clock_mmss clk_oxilicx_ahb_clk>;
+ clock-names = "core_clk", "iface_clk";
+
+ qcom,iommu-bfb-regs = <0x2000
+ 0x204c
+ 0x2060
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x2008
+ 0x2600
+ 0x2604
+ 0x2608
+ 0x260c
+ 0x2610
+ 0x2614
+ 0x2618
+ 0x261c
+ 0x2620
+ 0x2624
+ 0x2628
+ 0x262c>;
+
+ qcom,iommu-bfb-data = <0x3
+ 0x3
+ 0x1555
+ 0x0
+ 0x8
+ 0x10
+ 0x0
+ 0x120
+ 0x0
+ 0x20
+ 0x0
+ 0x0
+ 0x1
+ 0x101
+ 0x0
+ 0x7
+ 0x4
+ 0x20
+ 0x8
+ 0x14
+ 0x0
+ 0x0
+ 0xc
+ 0x6c
+ 0x0
+ 0x8
+ 0x10>;
+
+ qcom,iommu-ctx@fdb18000 {
+ qcom,iommu-ctx-sids = <0 1>;
+ };
+
+ qcom,iommu-ctx@fdb19000 {
+ qcom,iommu-ctx-sids = <>;
+ };
+
+ qcom,iommu-ctx@fdb1a000 {
+ qcom,iommu-ctx-sids = <2>;
+ interrupts = <0 241 0>, <0 240 0>;
+ qcom,secure-context;
+ };
+};
+
+&vfe_iommu {
+ status = "ok";
+ vdd-supply = <&gdsc_vfe>;
+ qcom,needs-alt-core-clk;
+ qcom,needs-alt-iface-clk;
+ clocks = <&clock_mmss clk_camss_vfe_vfe_axi_clk>,
+ <&clock_mmss clk_camss_vfe_vfe_ahb_clk>,
+ <&clock_mmss clk_camss_ahb_clk>,
+ <&clock_mmss clk_camss_top_ahb_clk>;
+ clock-names = "core_clk", "iface_clk", "alt_iface_clk", "alt_core_clk";
+
+ qcom,iommu-bfb-regs = <0x2000
+ 0x204c
+ 0x2060
+ 0x2514
+ 0x2540
+ 0x256c
+ 0x20ac
+ 0x215c
+ 0x220c
+ 0x22bc
+ 0x2314
+ 0x2394
+ 0x2414
+ 0x2494
+ 0x2008
+ 0x200c
+ 0x2010
+ 0x2014>;
+
+ qcom,iommu-bfb-data = <0x3
+ 0xfffff
+ 0x1555
+ 0x0
+ 0x4
+ 0x4
+ 0x2400
+ 0x8844
+ 0x2400
+ 0x8812
+ 0x0
+ 0x0
+ 0x12
+ 0x5a
+ 0x0
+ 0x0
+ 0x0
+ 0x0>;
+};
+
+&fd_iommu {
+ status = "ok";
+ vdd-supply = <&gdsc_fd>;
+ qcom,needs-alt-core-clk;
+ qcom,needs-alt-iface-clk;
+ clocks = <&clock_mmss clk_fd_axi_clk>,
+ <&clock_mmss clk_fd_ahb_clk>,
+ <&clock_mmss clk_fd_core_clk>,
+ <&clock_mmss clk_fd_core_uar_clk>;
+ clock-names = "core_clk", "iface_clk", "alt_core_clk", "alt_iface_clk";
+};
+
+&cpp_iommu {
+ status = "ok";
+ vdd-supply = <&gdsc_cpp>;
+ qcom,needs-alt-core-clk;
+ qcom,needs-alt-iface-clk;
+ clocks = <&clock_mmss clk_camss_vfe_cpp_axi_clk>,
+ <&clock_mmss clk_camss_vfe_cpp_ahb_clk>,
+ <&clock_mmss clk_camss_ahb_clk>,
+ <&clock_mmss clk_camss_top_ahb_clk>;
+ clock-names = "core_clk", "iface_clk", "alt_iface_clk", "alt_core_clk";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-ion.dtsi b/arch/arm64/boot/dts/qcom/msm8994-ion.dtsi
new file mode 100644
index 00000000000..eb0a8e70664
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-ion.dtsi
@@ -0,0 +1,63 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ qcom,ion {
+ compatible = "qcom,msm-ion";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,ion-heap@25 {
+ reg = <25>;
+ qcom,ion-heap-type = "SYSTEM";
+ };
+
+ qcom,ion-heap@21 {
+ reg = <21>;
+ qcom,ion-heap-type = "SYSTEM_CONTIG";
+ };
+
+ qcom,ion-heap@8 { /* CP_MM HEAP */
+ compatible = "qcom,msm-ion-reserve";
+ reg = <8>;
+ qcom,heap-align = <0x1000>;
+ memory-region = <&secure_mem>;
+ qcom,ion-heap-type = "SECURE_DMA";
+ qcom,default-prefetch-size = <0x6c00000>;
+ };
+
+ qcom,ion-heap@22 { /* adsp heap */
+ reg = <22>;
+ memory-region = <&adsp_mem>;
+ qcom,ion-heap-type = "DMA";
+ };
+
+ qcom,ion-heap@27 { /* QSECOM HEAP */
+ reg = <27>;
+ memory-region = <&qsecom_mem>;
+ qcom,ion-heap-type = "DMA";
+ };
+
+ qcom,ion-heap@28 { /* AUDIO HEAP */
+ reg = <28>;
+ memory-region = <&audio_mem>;
+ qcom,ion-heap-type = "DMA";
+ };
+
+ adsp_venus_heap: qcom,ion-heap@23 {
+ compatible = "qcom,msm-ion-reserve";
+ reg = <23>;
+ memory-region = <&peripheral_mem>;
+ qcom,ion-heap-type = "DMA";
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-ipcrouter.dtsi b/arch/arm64/boot/dts/qcom/msm8994-ipcrouter.dtsi
new file mode 100644
index 00000000000..eee98403c47
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-ipcrouter.dtsi
@@ -0,0 +1,36 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ qcom,ipc_router {
+ compatible = "qcom,ipc_router";
+ qcom,node-id = <1>;
+ };
+
+ qcom,ipc_router_modem_xprt {
+ compatible = "qcom,ipc_router_smd_xprt";
+ qcom,ch-name = "IPCRTR";
+ qcom,xprt-remote = "modem";
+ qcom,xprt-linkid = <1>;
+ qcom,xprt-version = <1>;
+ qcom,fragmented-data;
+ };
+
+ qcom,ipc_router_q6_xprt {
+ compatible = "qcom,ipc_router_smd_xprt";
+ qcom,ch-name = "IPCRTR";
+ qcom,xprt-remote = "adsp";
+ qcom,xprt-linkid = <1>;
+ qcom,xprt-version = <1>;
+ qcom,fragmented-data;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-liquid.dts b/arch/arm64/boot/dts/qcom/msm8994-liquid.dts
new file mode 100644
index 00000000000..5063e876fe8
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-liquid.dts
@@ -0,0 +1,25 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+
+/dts-v1/;
+
+#include "msm8994.dtsi"
+#include "msm8994-pinctrl.dtsi"
+#include "msm8994-liquid.dtsi"
+#include "msm8994-camera-sensor-liquid.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM8994 LiQUID";
+ compatible = "qcom,msm8994-liquid", "qcom,msm8994", "qcom,liquid";
+ qcom,board-id = <9 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-liquid.dtsi b/arch/arm64/boot/dts/qcom/msm8994-liquid.dtsi
new file mode 100644
index 00000000000..1ad39aedc48
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-liquid.dtsi
@@ -0,0 +1,801 @@
+
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/ {
+
+ bt_qca6174 {
+ compatible = "qca,qca6174";
+ qca,bt-reset-gpio = <&pm8994_gpios 19 0>; /* BT_EN */
+ qca,bt-vdd-pa-supply = <&bt_vreg>;
+ qca,bt-vdd-io-supply = <&pm8994_s4>;
+ qca,bt-vdd-xtal-supply = <&pm8994_l30>;
+ qca,bt-vdd-io-voltage-level = <1800000 1800000>;
+ qca,bt-vdd-xtal-voltage-level = <1800000 1800000>;
+ };
+};
+
+&blsp1_uart2 { /* SERIAL0 */
+ status= "ok";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart_console_sleep>;
+};
+
+&blsp2_uart2 { /* BT QCA6174 */
+ status = "ok";
+};
+
+&tlmm_pinmux{
+ pmx_ts {
+ qcom,pins = <&gp 59>, <&gp 60>, <&gp 61>;
+ qcom,num-grp-pins = <3>;
+ };
+};
+
+&pmx_mdss {
+ qcom,num-grp-pins = <1>;
+ qcom,pins = <&gp 78>;
+};
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+#include "dsi-panel-jdi-4k-dualmipi0-video.dtsi"
+#include "dsi-panel-jdi-4k-dualmipi1-video.dtsi"
+
+&dsi_dual_jdi_4k_video_0 {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-pmic-bank-select = <0>;
+ qcom,mdss-dsi-pwm-gpio = <&pmi8994_mpps 1 0>;
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_dual_jdi_4k_video_0>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active>;
+ pinctrl-1 = <&mdss_dsi_suspend>;
+
+ vddio-supply = <&pm8994_s4>;
+
+ qcom,platform-enable-gpio = <&pm8994_gpios 14 0>;
+ qcom,platform-reset-gpio = <&msm_gpio 78 0>;
+ qcom,platform-bklight-en-gpio = <&pmi8994_gpios 2 0>;
+
+ qcom,dsi-panel-bias-vreg;
+ qcom,regulator-ldo-mode;
+};
+
+&mdss_dsi1 {
+ qcom,dsi-pref-prim-pan = <&dsi_dual_jdi_4k_video_1>;
+
+ vddio-supply = <&pm8994_s4>;
+ qcom,regulator-ldo-mode;
+};
+
+&sdhc_1 {
+ vdd-supply = <&pm8994_l20>;
+ qcom,vdd-voltage-level = <2950000 2950000>;
+ qcom,vdd-current-level = <200 570000>;
+
+ vdd-io-supply = <&pm8994_s4>;
+ qcom,vdd-io-always-on;
+ qcom,vdd-io-voltage-level = <1800000 1800000>;
+ qcom,vdd-io-current-level = <200 325000>;
+
+ pinctrl-names = "active", "sleep";
+ pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on &sdc1_rclk_on>;
+ pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off &sdc1_rclk_off>;
+
+ qcom,nonremovable;
+
+ qcom,clk-rates = <400000 20000000 25000000 50000000 100000000 192000000>;
+ qcom,bus-speed-mode = "HS200_1p8v", "DDR_1p8v";
+ status = "ok";
+};
+
+&sdhc_2 {
+ vdd-supply = <&pm8994_l21>;
+ qcom,vdd-voltage-level = <2950000 2950000>;
+ qcom,vdd-current-level = <200 800000>;
+
+ vdd-io-supply = <&pm8994_l13>;
+ qcom,vdd-io-voltage-level = <1800000 2950000>;
+ qcom,vdd-io-current-level = <200 22000>;
+
+ #address-cells = <0>;
+ interrupt-parent = <&sdhc_2>;
+ interrupts = <0 1 2>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0xffffffff>;
+ interrupt-map = <0 &intc 0 125 0
+ 1 &intc 0 221 0
+ 2 &pm8994_gpios 8 0x3>;
+ interrupt-names = "hc_irq", "pwr_irq", "status_irq";
+ cd-gpios = <&pm8994_gpios 8 0x1>;
+
+ pinctrl-names = "active", "sleep";
+ pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on>;
+ pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off>;
+
+ qcom,clk-rates = <400000 20000000 25000000 50000000 100000000 200000000>;
+ qcom,bus-speed-mode = "SDR12", "SDR25", "SDR50", "DDR50", "SDR104";
+ status = "ok";
+};
+
+&pm8994_vadc {
+ chan@5 {
+ label = "vcoin";
+ reg = <5>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <1>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@7 {
+ label = "vph_pwr";
+ reg = <7>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <1>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@73 {
+ label = "msm_therm";
+ reg = <0x73>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@74 {
+ label = "emmc_therm";
+ reg = <0x74>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@75 {
+ label = "pa_therm0";
+ reg = <0x75>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@77 {
+ label = "pa_therm1";
+ reg = <0x77>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@78 {
+ label = "quiet_therm";
+ reg = <0x78>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+};
+
+&pm8994_adc_tm {
+ chan@73 {
+ label = "msm_therm";
+ reg = <0x73>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ qcom,btm-channel-number = <0x48>;
+ qcom,thermal-node;
+ };
+
+ chan@74 {
+ label = "emmc_therm";
+ reg = <0x74>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ qcom,btm-channel-number = <0x68>;
+ qcom,thermal-node;
+ };
+
+ chan@75 {
+ label = "pa_therm0";
+ reg = <0x75>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ qcom,btm-channel-number = <0x70>;
+ qcom,thermal-node;
+ };
+
+ chan@77 {
+ label = "pa_therm1";
+ reg = <0x77>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ qcom,btm-channel-number = <0x78>;
+ qcom,thermal-node;
+ };
+
+ chan@78 {
+ label = "quiet_therm";
+ reg = <0x78>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ qcom,btm-channel-number = <0x80>;
+ qcom,thermal-node;
+ };
+};
+
+&pmi8994_vadc {
+ chan@0 {
+ label = "usbin";
+ reg = <0>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <4>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@1 {
+ label = "dcin";
+ reg = <1>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <4>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@43 {
+ label = "usb_dp";
+ reg = <0x43>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <1>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@44 {
+ label = "usb_dm";
+ reg = <0x44>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <1>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+};
+
+&soc {
+
+ drv2667_vreg: drv2667_vdd_vreg {
+ compatible = "regulator-fixed";
+ regulator-name = "vdd_drv2667";
+ };
+
+ i2c@f9967000 {
+ ti-drv2667@59 {
+ compatible = "ti,drv2667";
+ reg = <0x59>;
+ vdd-supply = <&drv2667_vreg>;
+ vdd-i2c-supply = <&pm8994_s4>;
+ ti,label = "vibrator";
+ ti,gain = <2>;
+ ti,idle-timeout-ms = <20>;
+ ti,max-runtime-ms = <15000>;
+ ti,mode = <2>;
+ ti,wav-seq = [
+ /* wave form id */
+ 01
+ /* header size, start and stop bytes */
+ 05 80 06 00 09
+ /* repeat, amp, freq, duration, envelope */
+ 01 ff 19 02 00];
+ };
+ };
+
+ i2c@f9928000 { /* BLSP1 QUP6 */
+ status = "ok";
+ nfc-nci@e {
+ compatible = "qcom,nfc-nci";
+ reg = <0x0e>;
+ qcom,irq-gpio = <&msm_gpio 29 0x00>;
+ qcom,dis-gpio = <&msm_gpio 30 0x00>;
+ qcom,clk-src = "BBCLK2";
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <29 0>;
+ interrupt-names = "nfc_irq";
+ pinctrl-names = "nfc_active","nfc_suspend";
+ pinctrl-0 = <&nfc_int_active &nfc_disable_active>;
+ pinctrl-1 = <&nfc_int_suspend &nfc_disable_suspend>;
+ qcom,clk-gpio = <&pm8994_gpios 10 0>;
+ qcom,pwr-req-gpio = <&pm8994_gpios 7 0>;
+ clocks = <&clock_rpm clk_bb_clk2_pin>;
+ clock-names = "ref_clk";
+ };
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+
+ home {
+ label = "home";
+ gpios = <&pm8994_gpios 2 0x1>;
+ linux,input-type = <1>;
+ linux,code = <102>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+
+ vol_up {
+ label = "volume_up";
+ gpios = <&pm8994_gpios 3 0x1>;
+ linux,input-type = <1>;
+ linux,code = <115>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+ };
+
+ qcom,mdss_wb_panel {
+ status = "disabled";
+ };
+
+ ts_xvdd_vreg: ts_xvdd_vreg {
+ compatible = "regulator-fixed";
+ regulator-name = "ts_xvdd_vreg";
+ startup-delay-us = <2500>;
+ enable-active-high;
+ gpio = <&msm_gpio 109 0>;
+ status = "ok";
+ };
+
+ wigig_vreg: wigig_vreg {
+ compatible = "regulator-fixed";
+ regulator-name = "wigig_vreg";
+ startup-delay-us = <4000>;
+ enable-active-high;
+ gpio = <&msm_gpio 38 0>;
+ status = "ok";
+ };
+
+ /*
+ * vph_pwr_vreg represents the unregulated battery voltage supply
+ * VPH_PWR that is present whenever the device is powered on.
+ */
+ vph_pwr_vreg: vph_pwr_vreg {
+ compatible = "regulator-fixed";
+ regulator-name = "vph_pwr";
+ status = "ok";
+ regulator-always-on;
+ enable-active-high;
+ };
+
+ spk_ext_vreg: spk_ext_vreg {
+ compatible = "regulator-fixed";
+ regulator-name = "spk_ext_vreg";
+ gpio = <&pm8994_mpps 5 0>;
+ status = "ok";
+ enable-active-high;
+ };
+
+ sound {
+ qcom,model = "msm8994-tomtom-liquid-snd-card";
+ qcom,audio-routing =
+ "AIF4 VI", "MCLK",
+ "RX_BIAS", "MCLK",
+ "LDO_H", "MCLK",
+ "AIF4 MAD", "MCLK",
+ "ultrasound amp", "LINEOUT3",
+ "ultrasound amp", "LINEOUT4",
+ "AMIC2", "MIC BIAS2 External",
+ "MIC BIAS2 External", "Headset Mic",
+ "AMIC3", "MIC BIAS3 External",
+ "MIC BIAS2 External", "Analog Mic 7",
+ "AMIC4", "MIC BIAS2 External",
+ "MIC BIAS2 External", "ANCRight Headset Mic",
+ "AMIC5", "MIC BIAS2 External",
+ "MIC BIAS3 External", "ANCLeft Headset Mic",
+ "AMIC6", "MIC BIAS3 External",
+ "MIC BIAS3 External", "Analog Mic 8",
+ "DMIC1", "MIC BIAS1 External",
+ "MIC BIAS1 External", "Digital Mic1",
+ "DMIC2", "MIC BIAS1 External",
+ "MIC BIAS1 External", "Digital Mic4",
+ "DMIC3", "MIC BIAS4 External",
+ "MIC BIAS4 External", "Digital Mic2",
+ "DMIC4", "MIC BIAS4 External",
+ "MIC BIAS4 External", "Digital Mic6",
+ "DMIC5", "MIC BIAS3 External",
+ "MIC BIAS3 External", "Digital Mic3",
+ "DMIC6", "MIC BIAS3 External",
+ "MIC BIAS3 External", "Digital Mic5";
+
+ qcom,cdc-micbias2-headset-only;
+ qcom,mbhc-audio-jack-type = "6-pole-jack";
+ qcom,dock-plug-det-irq = <&pm8994_gpios 13 0x1>;
+ qcom,ext-ult-spk-amp-gpio = <&pmi8994_gpios 1 0>;
+ };
+
+ liquid_dock {
+ compatible = "qcom,liquid-dock";
+ qcom,dock-detect-gpio = <&pm8994_gpios 5 0>;
+ qcom,dock-hub-reset-gpio = <&pm8994_gpios 1 0>;
+ qcom,dock-eth-reset-gpio = <&pm8994_mpps 6 0>;
+ qcom,usb-host = <&usb_ehci>;
+ };
+};
+
+&pcie0 {
+ vreg-3.3-supply = <&wigig_vreg>;
+};
+
+&pcie1 {
+ vreg-3.3-supply = <&bt_vreg>;
+};
+
+&pmi8994_charger {
+ qcom,charging-disabled;
+};
+
+&slim_msm {
+ tomtom_codec {
+ cdc-vdd-spkdrv-supply = <&pmi8994_boost>;
+ qcom,cdc-vdd-spkdrv-voltage = <5000000 5000000>;
+ qcom,cdc-vdd-spkdrv-current = <1300000>;
+
+ cdc-vdd-spkdrv-2-supply = <&spk_ext_vreg>;
+ qcom,cdc-vdd-spkdrv-2-voltage = <5000000 5000000>;
+ qcom,cdc-vdd-spkdrv-2-current = <1300000>;
+
+ qcom,cdc-on-demand-supplies = "cdc-vdd-spkdrv",
+ "cdc-vdd-spkdrv-2";
+ };
+};
+
+&i2c_2 {
+ atmel_maxtouch_ts@4a {
+ compatible = "atmel,maxtouch-ts";
+ reg = <0x4a>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <61 0x2008>;
+ vdd-supply = <&pm8994_l14>;
+ avdd-supply = <&pm8994_l22>;
+ xvdd-supply = <&ts_xvdd_vreg>;
+ pinctrl-names = "pmx_ts_active","pmx_ts_suspend";
+ pinctrl-0 = <&ts_active>;
+ pinctrl-1 = <&ts_suspend>;
+ atmel,panel-coords = <0 0 3840 2160>;
+ atmel,display-coords = <0 0 3840 2160>;
+ atmel,irq-gpio = <&msm_gpio 61 0x2008>;
+ atmel,reset-gpio = <&msm_gpio 60 0x00>;
+ atmel,i2cmode-gpio = <&msm_gpio 59 0x00>;
+ };
+};
+
+&pm8994_gpios {
+ gpio@c000 { /* GPIO 1 HUB RESET*/
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,vin-sel = <2>; /* 1.8v */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+
+ gpio@c200 { /* GPIO 3 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ };
+
+ gpio@c300 { /* GPIO 4 SMB_SUSP */
+ qcom,mode = <0>; /* INPUT */
+ qcom,pull = <5>; /* No PULL */
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ };
+
+ gpio@c400 { /* GPIO 5 DOCK DET*/
+ qcom,mode = <0>; /* DIGITAL IN */
+ qcom,pull = <0>; /* PULL UP */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ };
+
+ gpio@c600 { /* GPIO 7 - NFC_PWR_REQ */
+ qcom,mode = <0>; /* DIGITAL IN */
+ qcom,pull = <5>; /* No Pull */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ };
+
+ gpio@c700 { /* GPIO 8 */
+ qcom,mode = <0>; /* Digital in */
+ qcom,pull = <5>; /* No PULL */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,invert = <1>; /* Output high */
+ qcom,vin-sel = <2>; /* Logical 1 voltage value 1.8v */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,out-strength = <1>; /* Low drive strength */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+
+ gpio@c800 { /* GPIO 9 */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,invert = <1>; /* Output high */
+ qcom,vin-sel = <0>; /* VPH_PWR */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,out-strength = <1>; /* High drive strength */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+
+ gpio@c900 { /* GPIO 10 - NFC_CLK_REQ */
+ qcom,mode = <0>; /* DIGITAL IN */
+ qcom,pull = <5>; /* No Pull */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ };
+
+ gpio@cc00 { /* GPIO 13 docking station jack detect */
+ qcom,mode = <0>; /* DIGITAL IN */
+ qcom,pull = <5>; /* No Pull */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ };
+
+ gpio@cd00 { /* GPIO 14 */
+ qcom,mode = <1>;
+ qcom,pull = <4>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ qcom,master-en = <1>;
+ };
+
+ gpio@ce00 { /* GPIO 15 */
+ qcom,mode = <1>;
+ qcom,output-type = <0>;
+ qcom,pull = <5>;
+ qcom,vin-sel = <2>;
+ qcom,out-strength = <1>;
+ qcom,src-sel = <2>;
+ qcom,master-en = <1>;
+ };
+
+ gpio@d200 { /* GPIO 19 */
+ qcom,mode = <1>; /* Digital output */
+ qcom,pull = <4>; /* Pulldown 10uA */
+ qcom,vin-sel = <2>; /* VIN2 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,invert = <0>; /* Invert */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+
+ gpio@d300 { /* GPIO 20 - PMI_SPON */
+ qcom,mode = <1>; /* Digital output */
+ qcom,pull = <4>; /* Pulldown 10uA */
+ qcom,vin-sel = <2>; /* VIN2 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,invert = <0>; /* Invert */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+};
+
+&pm8994_mpps {
+ mpp@a300 { /* MPP 4 */
+ /* HDMI_5v_vreg regulator enable */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,vin-sel = <2>; /* 1.8 V */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+
+ mpp@a400 { /* MPP 5 Ext Speaker Boost enable*/
+ /* SPK_5v_vreg regulator enable */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+
+ mpp@a500 { /* MPP 6 Ethernet RESET */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,vin-sel = <2>; /* 1.8 V */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+};
+
+&pm8994_gpios {
+ gpio@c100 { /* GPIO 2 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ };
+
+ gpio@c200 { /* GPIO 3 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ };
+};
+
+&pmi8994_gpios {
+ gpio@c000 { /* GPIO 1 Ultrasound PA EN */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,pull = <5>; /* No Pull */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ };
+
+ gpio@c100 { /* GPIO 2 */
+ /* Backlight enable */
+ qcom,mode = <1>;
+ qcom,pull = <4>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ qcom,master-en = <1>;
+ };
+};
+
+&pmi8994_mpps {
+ mpp@a000 { /* MPP 1 */
+ /* Backlight PWM */
+ qcom,mode = <1>; /* Digital output */
+ qcom,invert = <1>; /* Enable invert */
+ qcom,src-sel = <0>; /* FUNC GPIO */
+ qcom,vin-sel = <0>; /* VPH_PWR */
+ qcom,master-en = <1>; /* Enable MPP */
+ };
+
+ mpp@a100 { /* MPP 2 */
+ };
+
+ mpp@a200 { /* MPP 3 */
+ /* PMI_SPON */
+ qcom,mode = <0>; /* DIGITAL IN */
+ qcom,pull = <5>; /* No Pull */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,master-en = <1>; /* ENABLE MPP */
+ };
+
+ mpp@a300 { /* MPP 4 */
+ };
+};
+
+&pm8994_l19 {
+ status = "disabled";
+};
+
+&pm8994_l25 {
+ status = "disabled";
+};
+
+&pm8994_l10 {
+ status = "okay";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ qcom,init-voltage = <2800000>;
+};
+
+&pm8994_l22 {
+ status = "okay";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ qcom,init-voltage = <3300000>;
+};
+
+&usb3 {
+ status = "ok";
+};
+
+&hsphy0 {
+ status = "ok";
+};
+
+&ssphy0 {
+ status = "ok";
+};
+
+&usb_ehci {
+ status = "ok";
+};
+
+&qusb_phy {
+ status = "ok";
+};
+
+&spmi_bus {
+ qcom,pm8994@0 {
+ qcom,leds@a700 {
+ compatible = "qcom,leds-qpnp";
+ reg = <0xa700 0x100>;
+ label = "mpp";
+ status = "okay";
+ mpp-power-supply = <&pm8994_l29>;
+ qcom,mpp-power-min-voltage = <2800000>;
+ qcom,mpp-power-max-voltage = <2800000>;
+ qcom,led_mpp_8 {
+ label = "mpp";
+ linux,name = "privacy";
+ qcom,max-current = <40>;
+ qcom,id = <6>;
+ qcom,source-sel = <1>;
+ qcom,mode-ctrl = <0x60>;
+ qcom,mode = "manual";
+ };
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-mdss-pll.dtsi b/arch/arm64/boot/dts/qcom/msm8994-mdss-pll.dtsi
new file mode 100644
index 00000000000..9717f509755
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-mdss-pll.dtsi
@@ -0,0 +1,112 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ mdss_dsi0_pll: qcom,mdss_dsi_pll@fd998300 {
+ compatible = "qcom,mdss_dsi_pll_8994";
+ label = "MDSS DSI 0 PLL";
+ cell-index = <0>;
+ #clock-cells = <1>;
+
+ reg = <0xfd998300 0x500>;
+ reg-names = "pll_base";
+
+ gdsc-supply = <&gdsc_mdss>;
+ vddio-supply = <&pm8994_l12>;
+ vcca-supply = <&pm8994_l28>;
+
+ clocks = <&clock_mmss clk_mdss_ahb_clk>;
+ clock-names = "iface_clk";
+ clock-rate = <0>;
+
+ qcom,platform-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,platform-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "gdsc";
+ qcom,supply-min-voltage = <0>;
+ qcom,supply-max-voltage = <0>;
+ qcom,supply-enable-load = <0>;
+ qcom,supply-disable-load = <0>;
+ };
+
+ qcom,platform-supply-entry@1 {
+ reg = <1>;
+ qcom,supply-name = "vddio";
+ qcom,supply-min-voltage = <1800000>;
+ qcom,supply-max-voltage = <1800000>;
+ qcom,supply-enable-load = <100000>;
+ qcom,supply-disable-load = <100>;
+ };
+
+ qcom,platform-supply-entry@2 {
+ reg = <2>;
+ qcom,supply-name = "vcca";
+ qcom,supply-min-voltage = <1000000>;
+ qcom,supply-max-voltage = <1000000>;
+ qcom,supply-enable-load = <10000>;
+ qcom,supply-disable-load = <100>;
+ };
+ };
+ };
+
+ mdss_hdmi_pll: qcom,mdss_hdmi_pll@0xfd9a8600 {
+ compatible = "qcom,mdss_hdmi_pll_8994";
+ label = "MDSS HDMI PLL";
+ #clock-cells = <1>;
+
+ reg = <0xfd9a8600 0xac4>, <0xfd9a9200 0x0C8>;
+ reg-names = "pll_base", "phy_base";
+
+ gdsc-supply = <&gdsc_mdss>;
+ vddio-supply = <&pm8994_l12>;
+ vcca-supply = <&pm8994_l28>;
+
+ clocks = <&clock_mmss clk_mdss_ahb_clk>;
+ clock-names = "iface_clk";
+ clock-rate = <0>;
+
+ qcom,platform-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,platform-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "gdsc";
+ qcom,supply-min-voltage = <0>;
+ qcom,supply-max-voltage = <0>;
+ qcom,supply-enable-load = <0>;
+ qcom,supply-disable-load = <0>;
+ };
+
+ qcom,platform-supply-entry@1 {
+ reg = <1>;
+ qcom,supply-name = "vddio";
+ qcom,supply-min-voltage = <1800000>;
+ qcom,supply-max-voltage = <1800000>;
+ qcom,supply-enable-load = <100000>;
+ qcom,supply-disable-load = <100>;
+ };
+
+ qcom,platform-supply-entry@2 {
+ reg = <2>;
+ qcom,supply-name = "vcca";
+ qcom,supply-min-voltage = <1000000>;
+ qcom,supply-max-voltage = <1000000>;
+ qcom,supply-enable-load = <10000>;
+ qcom,supply-disable-load = <100>;
+ };
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-mdss.dtsi b/arch/arm64/boot/dts/qcom/msm8994-mdss.dtsi
new file mode 100644
index 00000000000..515cfbd6a30
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-mdss.dtsi
@@ -0,0 +1,404 @@
+/* Copyright (c) 2014 The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ mdss_mdp: qcom,mdss_mdp@fd900000 {
+ compatible = "qcom,mdss_mdp";
+ reg = <0xfd900000 0x90000>,
+ <0xfd9c8000 0x1000>;
+ reg-names = "mdp_phys", "vbif_phys";
+ interrupts = <0 83 0>;
+ vdd-supply = <&gdsc_mdss>;
+
+ /* Bus Scale Settings */
+ qcom,msm-bus,name = "mdss_mdp";
+ qcom,msm-bus,num-cases = <3>;
+ qcom,msm-bus,num-paths = <2>;
+ qcom,msm-bus,vectors-KBps =
+ <22 512 0 0>, <23 512 0 0>,
+ <22 512 0 6400000>, <23 512 0 6400000>,
+ <22 512 0 6400000>, <23 512 0 6400000>;
+
+ /* Fudge factors */
+ qcom,mdss-ab-factor = <1 1>; /* 1 times (removes fudge factor) */
+ qcom,mdss-ib-factor = <1 1>; /* 1 times (removes fudge factor) */
+ qcom,mdss-clk-factor = <105 100>; /* 1.05 times */
+
+ qcom,max-mixer-width = <2048>;
+
+ /* VBIF QoS remapper settings*/
+ qcom,mdss-vbif-qos-rt-setting = <2 2 2 1>;
+ qcom,mdss-vbif-qos-nrt-setting = <1 1 1 1>;
+
+ qcom,mdss-mdp-reg-offset = <0x00001000>;
+ qcom,max-bandwidth-low-kbps = <7300000>;
+ qcom,max-bandwidth-high-kbps = <7300000>;
+ qcom,max-bandwidth-per-pipe-kbps = <1800000>;
+ qcom,max-clk-rate = <400000000>;
+
+ qcom,mdss-pipe-vig-off = <0x00005000 0x00007000
+ 0x00009000 0x0000B000>;
+ qcom,mdss-pipe-rgb-off = <0x00015000 0x00017000
+ 0x00019000 0x0001B000>;
+ qcom,mdss-pipe-dma-off = <0x00025000 0x00027000>;
+ qcom,mdss-pipe-cursor-off = <0x00035000 0x00037000>;
+
+ qcom,mdss-pipe-vig-fetch-id = <1 4 7 19>;
+ qcom,mdss-pipe-rgb-fetch-id = <16 17 18 22>;
+ qcom,mdss-pipe-dma-fetch-id = <10 13>;
+
+ qcom,mdss-pipe-vig-xin-id = <0 4 8 12>;
+ qcom,mdss-pipe-rgb-xin-id = <1 5 9 13>;
+ qcom,mdss-pipe-dma-xin-id = <2 10>;
+ qcom,mdss-pipe-cursor-xin-id = <7 7>;
+
+ qcom,mdss-has-panic-ctrl;
+ qcom,mdss-pipe-vig-panic-ctrl-offsets = <0 1 2 3>;
+ qcom,mdss-pipe-rgb-panic-ctrl-offsets = <4 5 6 7>;
+ qcom,mdss-pipe-dma-panic-ctrl-offsets = <8 9>;
+
+ qcom,mdss-pipe-rgb-fixed-mmb = <5 0 1 8 9 10>,
+ <5 2 3 11 12 13>,
+ <5 4 5 14 15 16>,
+ <5 6 7 17 18 19>;
+ qcom,mdss-pipe-vig-fixed-mmb = <1 20>,
+ <1 21>,
+ <1 22>,
+ <1 23>;
+
+ /* These Offsets are relative to "mdp_phys + mdp-reg-offset" address */
+ qcom,mdss-pipe-vig-clk-ctrl-offsets = <0x2AC 0 0>,
+ <0x2B4 0 0>,
+ <0x2BC 0 0>,
+ <0x2C4 0 0>;
+ qcom,mdss-pipe-rgb-clk-ctrl-offsets = <0x2AC 4 8>,
+ <0x2B4 4 8>,
+ <0x2BC 4 8>,
+ <0x2C4 4 8>;
+ qcom,mdss-pipe-dma-clk-ctrl-offsets = <0x2AC 8 12>,
+ <0x2B4 8 12>;
+
+ qcom,mdss-pipe-sw-reset-off = <0x0028>;
+ qcom,mdss-pipe-vig-sw-reset-map = <5 6 7 8>;
+ qcom,mdss-pipe-rgb-sw-reset-map = <9 10 11 12>;
+ qcom,mdss-pipe-dma-sw-reset-map = <13 14>;
+
+ qcom,mdss-smp-data = <44 8192>;
+ qcom,mdss-sspp-len = <0x00002000>;
+
+ qcom,mdss-ctl-off = <0x00002000 0x00002200 0x00002400
+ 0x00002600 0x00002800>;
+ qcom,mdss-mixer-intf-off = <0x00045000 0x00046000
+ 0x00047000 0x0004A000>;
+ qcom,mdss-mixer-wb-off = <0x00048000 0x00049000>;
+ qcom,mdss-dspp-off = <0x00055000 0x00057000 0x00059000
+ 0x0005B000>;
+ qcom,mdss-wb-off = <0x00065000 0x00065800 0x00066000
+ 0x00066800 0x00067000>;
+ qcom,mdss-intf-off = <0x0006B000 0x0006B800 0x0006C000
+ 0x0006C800 0x0006D000>;
+ qcom,mdss-pingpong-off = <0x00071000 0x00071800 0x00072000
+ 0x00072800>;
+ qcom,mdss-ad-off = <0x0079000 0x00079800 0x0007A000>;
+ qcom,mdss-has-decimation;
+ qcom,mdss-wfd-mode = "intf";
+ qcom,mdss-ctl-len = <0x00000200>;
+
+ clocks = <&clock_mmss clk_mdss_ahb_clk>,
+ <&clock_mmss clk_mdss_axi_clk>,
+ <&clock_mmss clk_mdp_clk_src>,
+ <&clock_mmss clk_mdss_mdp_clk>,
+ <&clock_mmss clk_mdss_vsync_clk>;
+ clock-names = "iface_clk", "bus_clk", "core_clk_src",
+ "core_clk", "vsync_clk";
+
+ /* These Offsets are relative to "mdp_phys" address */
+ qcom,mdp-settings = <0x0117c 0x00005555>,
+ <0x01184 0xC000ff00>,
+ <0x011e4 0x00000000>,
+ <0x012ac 0xc0000ccc>,
+ <0x012b4 0xc0000ccc>,
+ <0x012bc 0x00cccccc>,
+ <0x012c4 0x000000cc>,
+ <0x013a8 0x0cccc0c0>,
+ <0x013b0 0xccccc0c0>,
+ <0x013b8 0xccccc0c0>,
+ <0x013d0 0x00ccc000>;
+
+ /* buffer parameters to calculate prefill bandwidth */
+ qcom,mdss-prefill-outstanding-buffer-bytes = <2048>;
+ qcom,mdss-prefill-y-buffer-bytes = <4096>;
+ qcom,mdss-prefill-scaler-buffer-lines-bilinear = <2>;
+ qcom,mdss-prefill-scaler-buffer-lines-caf = <4>;
+ qcom,mdss-prefill-post-scaler-buffer-pixels = <2048>;
+ qcom,mdss-prefill-pingpong-buffer-pixels = <5120>;
+ qcom,mdss-prefill-fbc-lines = <2>;
+
+ mdss_fb0: qcom,mdss_fb_primary {
+ cell-index = <0>;
+ compatible = "qcom,mdss-fb";
+ };
+
+ mdss_fb1: qcom,mdss_fb_external {
+ cell-index = <1>;
+ compatible = "qcom,mdss-fb";
+ };
+
+ mdss_fb2: qcom,mdss_fb_wfd {
+ cell-index = <2>;
+ compatible = "qcom,mdss-fb";
+ };
+ };
+
+ mdss_dsi0: qcom,mdss_dsi@fd998000 {
+ compatible = "qcom,mdss-dsi-ctrl";
+ label = "MDSS DSI CTRL->0";
+ cell-index = <0>;
+ reg = <0xfd998000 0x260>,
+ <0xfd998500 0x2b0>,
+ <0xfd828000 0x108>;
+ reg-names = "dsi_ctrl", "dsi_phy", "mmss_misc_phys";
+ gdsc-supply = <&gdsc_mdss>;
+ vdd-supply = <&pm8994_l14>;
+ vddio-supply = <&pm8994_l12>;
+ vdda-supply = <&pm8994_l2>;
+ vcca-supply = <&pm8994_l28>;
+ qcom,mdss-fb-map = <&mdss_fb0>;
+ qcom,mdss-mdp = <&mdss_mdp>;
+ clocks = <&clock_mmss clk_mdss_mdp_clk>,
+ <&clock_mmss clk_mdss_ahb_clk>,
+ <&clock_mmss clk_mmss_misc_ahb_clk>,
+ <&clock_mmss clk_mdss_axi_clk>,
+ <&clock_mmss clk_mdss_byte0_clk>,
+ <&clock_mmss clk_mdss_pclk0_clk>,
+ <&clock_mmss clk_mdss_esc0_clk>;
+ clock-names = "mdp_core_clk", "iface_clk",
+ "core_mmss_clk", "bus_clk",
+ "byte_clk", "pixel_clk", "core_clk";
+
+ qcom,platform-strength-ctrl = [77 06];
+ qcom,platform-bist-ctrl = [00 00 b1 ff 00 00];
+ qcom,platform-regulator-settings = [03 05 03 00 20 07 01];
+ qcom,platform-lane-config = [02 00 00 00 20 00 00 01 88
+ 02 00 00 00 40 00 00 01 88
+ 02 00 00 40 20 00 00 01 88
+ 02 00 00 40 00 00 00 01 88
+ 00 00 00 80 00 00 00 01 88];
+
+ qcom,mmss-ulp-clamp-ctrl-offset = <0x14>;
+ qcom,mmss-phyreset-ctrl-offset = <0x108>;
+
+ qcom,core-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,core-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "gdsc";
+ qcom,supply-min-voltage = <0>;
+ qcom,supply-max-voltage = <0>;
+ qcom,supply-enable-load = <0>;
+ qcom,supply-disable-load = <0>;
+ };
+ };
+
+ qcom,ctrl-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,ctrl-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "vdda";
+ qcom,supply-min-voltage = <1250000>;
+ qcom,supply-max-voltage = <1250000>;
+ qcom,supply-enable-load = <100000>;
+ qcom,supply-disable-load = <100>;
+ };
+
+ qcom,ctrl-supply-entry@1 {
+ reg = <1>;
+ qcom,supply-name = "vddio";
+ qcom,supply-min-voltage = <1800000>;
+ qcom,supply-max-voltage = <1800000>;
+ qcom,supply-enable-load = <100000>;
+ qcom,supply-disable-load = <100>;
+ qcom,supply-post-on-sleep = <20>;
+ };
+
+ qcom,ctrl-supply-entry@2 {
+ reg = <2>;
+ qcom,supply-name = "vcca";
+ qcom,supply-min-voltage = <1000000>;
+ qcom,supply-max-voltage = <1000000>;
+ qcom,supply-enable-load = <10000>;
+ qcom,supply-disable-load = <100>;
+ };
+ };
+
+ qcom,panel-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,panel-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "vdd";
+ qcom,supply-min-voltage = <1800000>;
+ qcom,supply-max-voltage = <1800000>;
+ qcom,supply-enable-load = <100000>;
+ qcom,supply-disable-load = <100>;
+ qcom,supply-post-on-sleep = <20>;
+ };
+ };
+ };
+
+ mdss_dsi1: qcom,mdss_dsi@fd9a0000 {
+ compatible = "qcom,mdss-dsi-ctrl";
+ label = "MDSS DSI CTRL->1";
+ cell-index = <1>;
+ reg = <0xfd9a0000 0x260>,
+ <0xfd9a0500 0x2b0>,
+ <0xfd828000 0x108>;
+ reg-names = "dsi_ctrl", "dsi_phy", "mmss_misc_phys";
+ gdsc-supply = <&gdsc_mdss>;
+ vdd-supply = <&pm8994_l14>;
+ vddio-supply = <&pm8994_l12>;
+ vdda-supply = <&pm8994_l2>;
+ vcca-supply = <&pm8994_l28>;
+ qcom,mdss-fb-map = <&mdss_fb0>;
+ qcom,mdss-mdp = <&mdss_mdp>;
+ clocks = <&clock_mmss clk_mdss_mdp_clk>,
+ <&clock_mmss clk_mdss_ahb_clk>,
+ <&clock_mmss clk_mmss_misc_ahb_clk>,
+ <&clock_mmss clk_mdss_axi_clk>,
+ <&clock_mmss clk_mdss_byte1_clk>,
+ <&clock_mmss clk_mdss_pclk1_clk>,
+ <&clock_mmss clk_mdss_esc1_clk>;
+ clock-names = "mdp_core_clk", "iface_clk",
+ "core_mmss_clk", "bus_clk",
+ "byte_clk", "pixel_clk", "core_clk";
+
+ qcom,platform-strength-ctrl = [77 06];
+ qcom,platform-bist-ctrl = [00 00 b1 ff 00 00];
+ qcom,platform-regulator-settings = [03 05 03 00 20 07 01];
+ qcom,platform-lane-config = [02 00 00 00 20 00 00 01 88
+ 02 00 00 00 40 00 00 01 88
+ 02 00 00 40 20 00 00 01 88
+ 02 00 00 40 00 00 00 01 88
+ 00 00 00 80 00 00 00 01 88];
+
+ qcom,mmss-ulp-clamp-ctrl-offset = <0x14>;
+ qcom,mmss-phyreset-ctrl-offset = <0x108>;
+
+ qcom,core-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,core-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "gdsc";
+ qcom,supply-min-voltage = <0>;
+ qcom,supply-max-voltage = <0>;
+ qcom,supply-enable-load = <0>;
+ qcom,supply-disable-load = <0>;
+ };
+ };
+
+ qcom,ctrl-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,ctrl-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "vdda";
+ qcom,supply-min-voltage = <1250000>;
+ qcom,supply-max-voltage = <1250000>;
+ qcom,supply-enable-load = <100000>;
+ qcom,supply-disable-load = <100>;
+ };
+
+ qcom,ctrl-supply-entry@1 {
+ reg = <1>;
+ qcom,supply-name = "vddio";
+ qcom,supply-min-voltage = <1800000>;
+ qcom,supply-max-voltage = <1800000>;
+ qcom,supply-enable-load = <100000>;
+ qcom,supply-disable-load = <100>;
+ qcom,supply-post-on-sleep = <20>;
+ };
+
+ qcom,ctrl-supply-entry@2 {
+ reg = <2>;
+ qcom,supply-name = "vcca";
+ qcom,supply-min-voltage = <1000000>;
+ qcom,supply-max-voltage = <1000000>;
+ qcom,supply-enable-load = <10000>;
+ qcom,supply-disable-load = <100>;
+ };
+ };
+
+ qcom,panel-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,panel-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "vdd";
+ qcom,supply-min-voltage = <1800000>;
+ qcom,supply-max-voltage = <1800000>;
+ qcom,supply-enable-load = <100000>;
+ qcom,supply-disable-load = <100>;
+ qcom,supply-post-on-sleep = <20>;
+ };
+ };
+ };
+
+ qcom,mdss_wb_panel {
+ compatible = "qcom,mdss_wb";
+ qcom,mdss_pan_res = <1920 1080>;
+ qcom,mdss_pan_bpp = <24>;
+ qcom,mdss-fb-map = <&mdss_fb2>;
+ };
+
+ mdss_hdmi_tx: qcom,hdmi_tx@fd9a8000{
+ cell-index = <0>;
+ compatible = "qcom,hdmi-tx";
+
+ reg = <0xfd9a8000 0x38C>,
+ <0xfc4b8000 0x6fff>;
+ reg-names = "core_physical", "qfprom_physical";
+
+ hpd-gdsc-supply = <&gdsc_mdss>;
+ core-vdda-supply = <&pm8994_l12>;
+ core-vcc-supply = <&pm8994_s4>;
+
+ qcom,supply-names = "hpd-gdsc", "core-vdda", "core-vcc";
+ qcom,min-voltage-level = <0 1800000 1800000>;
+ qcom,max-voltage-level = <0 1800000 1800000>;
+ qcom,enable-load = <0 300000 0>;
+ qcom,disable-load = <0 0 0>;
+
+ clocks = <&clock_mmss clk_mdss_mdp_clk>,
+ <&clock_mmss clk_mdss_ahb_clk>,
+ <&clock_mmss clk_mdss_hdmi_clk>,
+ <&clock_mmss clk_mdss_hdmi_ahb_clk>,
+ <&clock_mmss clk_mdss_extpclk_clk>;
+ clock-names = "mdp_core_clk", "iface_clk",
+ "core_clk", "alt_iface_clk", "extp_clk";
+
+ qcom,hdmi-tx-hpd = <&pm8994_mpps 4 0>;
+ qcom,mdss-fb-map = <&mdss_fb1>;
+
+ qcom,msm-hdmi-audio-rx {
+ compatible = "qcom,msm-hdmi-audio-codec-rx";
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-mtp.dts b/arch/arm64/boot/dts/qcom/msm8994-mtp.dts
new file mode 100644
index 00000000000..139e633df00
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-mtp.dts
@@ -0,0 +1,24 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+
+/dts-v1/;
+
+#include "msm8994.dtsi"
+#include "msm8994-pinctrl.dtsi"
+#include "msm8994-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM8994 MTP";
+ compatible = "qcom,msm8994-mtp", "qcom,msm8994", "qcom,mtp";
+ qcom,board-id = <8 0>;
+}; \ No newline at end of file
diff --git a/arch/arm64/boot/dts/qcom/msm8994-mtp.dtsi b/arch/arm64/boot/dts/qcom/msm8994-mtp.dtsi
new file mode 100644
index 00000000000..0a866178279
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-mtp.dtsi
@@ -0,0 +1,669 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "msm8994-pinctrl.dtsi"
+#include "msm8994-camera-sensor-mtp.dtsi"
+
+/ {
+ bt_qca6174 {
+ compatible = "qca,qca6174";
+ qca,bt-reset-gpio = <&pm8994_gpios 19 0>; /* BT_EN */
+ qca,bt-vdd-pa-supply = <&bt_vreg>;
+ qca,bt-vdd-io-supply = <&pm8994_s4>;
+ qca,bt-vdd-xtal-supply = <&pm8994_l30>;
+ qca,bt-vdd-io-voltage-level = <1800000 1800000>;
+ qca,bt-vdd-xtal-voltage-level = <1800000 1800000>;
+ };
+};
+
+&sdhc_1 {
+ vdd-supply = <&pm8994_l20>;
+ qcom,vdd-voltage-level = <2950000 2950000>;
+ qcom,vdd-current-level = <200 570000>;
+
+ vdd-io-supply = <&pm8994_s4>;
+ qcom,vdd-io-always-on;
+ qcom,vdd-io-voltage-level = <1800000 1800000>;
+ qcom,vdd-io-current-level = <200 325000>;
+
+ pinctrl-names = "active", "sleep";
+ pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on &sdc1_rclk_on>;
+ pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off &sdc1_rclk_off>;
+
+ qcom,nonremovable;
+
+ qcom,clk-rates = <400000 20000000 25000000 50000000 100000000 192000000 384000000>;
+ qcom,bus-speed-mode = "HS400_1p8v", "HS200_1p8v", "DDR_1p8v";
+ status = "ok";
+};
+
+&sdhc_2 {
+ vdd-supply = <&pm8994_l21>;
+ qcom,vdd-voltage-level = <2950000 2950000>;
+ qcom,vdd-current-level = <200 800000>;
+
+ vdd-io-supply = <&pm8994_l13>;
+ qcom,vdd-io-voltage-level = <1800000 2950000>;
+ qcom,vdd-io-current-level = <200 22000>;
+
+ #address-cells = <0>;
+ interrupt-parent = <&sdhc_2>;
+ interrupts = <0 1 2>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0xffffffff>;
+ interrupt-map = <0 &intc 0 125 0
+ 1 &intc 0 221 0
+ 2 &pm8994_gpios 8 0x3>;
+ interrupt-names = "hc_irq", "pwr_irq", "status_irq";
+ cd-gpios = <&pm8994_gpios 8 0x1>;
+
+ pinctrl-names = "active", "sleep";
+ pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on>;
+ pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off>;
+
+ qcom,clk-rates = <400000 20000000 25000000 50000000 100000000 200000000>;
+ qcom,bus-speed-mode = "SDR12", "SDR25", "SDR50", "DDR50", "SDR104";
+ status = "ok";
+};
+
+&pm8994_vadc {
+ chan@5 {
+ label = "vcoin";
+ reg = <5>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <1>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@7 {
+ label = "vph_pwr";
+ reg = <7>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <1>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@73 {
+ label = "msm_therm";
+ reg = <0x73>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@74 {
+ label = "emmc_therm";
+ reg = <0x74>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@75 {
+ label = "pa_therm0";
+ reg = <0x75>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@77 {
+ label = "pa_therm1";
+ reg = <0x77>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@78 {
+ label = "quiet_therm";
+ reg = <0x78>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ };
+};
+
+&pm8994_adc_tm {
+ chan@73 {
+ label = "msm_therm";
+ reg = <0x73>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ qcom,btm-channel-number = <0x48>;
+ qcom,thermal-node;
+ };
+
+ chan@74 {
+ label = "emmc_therm";
+ reg = <0x74>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ qcom,btm-channel-number = <0x68>;
+ qcom,thermal-node;
+ };
+
+ chan@75 {
+ label = "pa_therm0";
+ reg = <0x75>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ qcom,btm-channel-number = <0x70>;
+ qcom,thermal-node;
+ };
+
+ chan@77 {
+ label = "pa_therm1";
+ reg = <0x77>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ qcom,btm-channel-number = <0x78>;
+ qcom,thermal-node;
+ };
+
+ chan@78 {
+ label = "quiet_therm";
+ reg = <0x78>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "ratiometric";
+ qcom,scale-function = <2>;
+ qcom,hw-settle-time = <2>;
+ qcom,fast-avg-setup = <0>;
+ qcom,btm-channel-number = <0x80>;
+ qcom,thermal-node;
+ };
+};
+
+&pmi8994_vadc {
+ chan@0 {
+ label = "usbin";
+ reg = <0>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <4>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@1 {
+ label = "dcin";
+ reg = <1>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <4>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@43 {
+ label = "usb_dp";
+ reg = <0x43>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <1>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+
+ chan@44 {
+ label = "usb_dm";
+ reg = <0x44>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <1>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <0>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+};
+
+#include "dsi-panel-sharp-dualmipi0-wqxga-video.dtsi"
+#include "dsi-panel-sharp-dualmipi1-wqxga-video.dtsi"
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&pmx_mdss {
+ qcom,num-grp-pins = <1>;
+ qcom,pins = <&gp 78>;
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_dual_sharp_video_0>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active>;
+ pinctrl-1 = <&mdss_dsi_suspend>;
+ qcom,dsi-panel-bias-vreg;
+ qcom,platform-reset-gpio = <&msm_gpio 78 0>;
+};
+
+&mdss_dsi1 {
+ qcom,dsi-pref-prim-pan = <&dsi_dual_sharp_video_1>;
+};
+
+&dsi_dual_sharp_video_0 {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+};
+
+&pmx_hdmi_cec {
+ qcom,num-grp-pins = <1>;
+ qcom,pins = <&gp 31>;
+};
+
+&pmx_hdmi_ddc {
+ qcom,num-grp-pins = <2>;
+ qcom,pins = <&gp 32>, <&gp 33>;
+};
+
+&pmx_hdmi_hpd {
+ qcom,num-grp-pins = <1>;
+ qcom,pins = <&gp 34>;
+};
+
+&mdss_hdmi_tx {
+ pinctrl-names = "hdmi_hpd_active", "hdmi_ddc_active",
+ "hdmi_cec_active", "hdmi_active",
+ "hdmi_sleep";
+ pinctrl-0 = <&mdss_hdmi_hpd_active &mdss_hdmi_ddc_suspend
+ &mdss_hdmi_cec_suspend>;
+ pinctrl-1 = <&mdss_hdmi_hpd_active &mdss_hdmi_ddc_active
+ &mdss_hdmi_cec_suspend>;
+ pinctrl-2 = <&mdss_hdmi_hpd_active &mdss_hdmi_cec_active
+ &mdss_hdmi_ddc_suspend>;
+ pinctrl-3 = <&mdss_hdmi_hpd_active &mdss_hdmi_ddc_active
+ &mdss_hdmi_cec_active>;
+ pinctrl-4 = <&mdss_hdmi_hpd_suspend &mdss_hdmi_ddc_suspend
+ &mdss_hdmi_cec_suspend>;
+};
+
+&soc {
+ i2c@f9924000 {
+ synaptics@20 {
+ compatible = "synaptics,dsx";
+ reg = <0x20>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <61 0x2008>;
+ vdd-supply = <&pm8994_l14>;
+ avdd-supply = <&pm8994_l22>;
+ pinctrl-names = "pmx_ts_active", "pmx_ts_suspend";
+ pinctrl-0 = <&ts_active>;
+ pinctrl-1 = <&ts_suspend>;
+ synaptics,display-coords = <0 0 1599 2559>;
+ synaptics,panel-coords = <0 0 1599 2703>;
+ synaptics,reset-gpio = <&msm_gpio 60 0x00>;
+ synaptics,irq-gpio = <&msm_gpio 61 0x2008>;
+ synaptics,disable-gpios;
+ };
+ };
+
+ gen-vkeys {
+ compatible = "qcom,gen-vkeys";
+ label = "synaptics_dsx";
+ qcom,disp-maxx = <1599>;
+ qcom,disp-maxy = <2559>;
+ qcom,panel-maxx = <1599>;
+ qcom,panel-maxy = <2703>;
+ qcom,key-codes = <158 139 102 217>;
+ };
+
+ i2c@f9928000 { /* BLSP1 QUP6 */
+ status = "ok";
+ nfc-nci@e {
+ compatible = "qcom,nfc-nci";
+ reg = <0x0e>;
+ qcom,irq-gpio = <&msm_gpio 29 0x00>;
+ qcom,dis-gpio = <&msm_gpio 30 0x00>;
+ qcom,clk-src = "BBCLK2";
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <29 0>;
+ interrupt-names = "nfc_irq";
+ pinctrl-names = "nfc_active","nfc_suspend";
+ pinctrl-0 = <&nfc_int_active &nfc_disable_active>;
+ pinctrl-1 = <&nfc_int_suspend &nfc_disable_suspend>;
+ qcom,clk-gpio = <&pm8994_gpios 10 0>;
+ qcom,pwr-req-gpio = <&pm8994_gpios 7 0>;
+ clocks = <&clock_rpm clk_bb_clk2_pin>;
+ clock-names = "ref_clk";
+ };
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+
+ vol_up {
+ label = "volume_up";
+ gpios = <&pm8994_gpios 3 0x1>;
+ linux,input-type = <1>;
+ linux,code = <115>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+
+ cam_snapshot {
+ label = "cam_snapshot";
+ gpios = <&pm8994_gpios 4 0x1>;
+ linux,input-type = <1>;
+ linux,code = <766>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+
+ cam_focus {
+ label = "cam_focus";
+ gpios = <&pm8994_gpios 5 0x1>;
+ linux,input-type = <1>;
+ linux,code = <528>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+
+
+ };
+
+ sound {
+ qcom,model = "msm8994-tomtom-mtp-snd-card";
+
+ qcom,audio-routing =
+ "AIF4 VI", "MCLK",
+ "RX_BIAS", "MCLK",
+ "LDO_H", "MCLK",
+ "AIF4 MAD", "MCLK",
+ "ultrasound amp", "LINEOUT1",
+ "ultrasound amp", "LINEOUT3",
+ "AMIC1", "MIC BIAS1 Internal1",
+ "MIC BIAS1 Internal1", "Handset Mic",
+ "AMIC2", "MIC BIAS2 External",
+ "MIC BIAS2 External", "Headset Mic",
+ "AMIC3", "MIC BIAS2 External",
+ "MIC BIAS2 External", "ANCRight Headset Mic",
+ "AMIC4", "MIC BIAS2 External",
+ "MIC BIAS2 External", "ANCLeft Headset Mic",
+ "AMIC6", "MIC BIAS4 External",
+ "MIC BIAS4 External", "Analog Mic6",
+ "DMIC1", "MIC BIAS1 External",
+ "MIC BIAS1 External", "Digital Mic1",
+ "DMIC2", "MIC BIAS1 External",
+ "MIC BIAS1 External", "Digital Mic2",
+ "DMIC3", "MIC BIAS3 External",
+ "MIC BIAS3 External", "Digital Mic3",
+ "DMIC4", "MIC BIAS3 External",
+ "MIC BIAS3 External", "Digital Mic4",
+ "DMIC5", "MIC BIAS4 External",
+ "MIC BIAS4 External", "Digital Mic5",
+ "DMIC6", "MIC BIAS4 External",
+ "MIC BIAS4 External", "Digital Mic6";
+
+ qcom,us-euro-gpios = <&pm8994_mpps 2 0>;
+ qcom,cdc-micbias2-headset-only;
+ qcom,mbhc-audio-jack-type = "6-pole-jack";
+ qcom,ext-ult-spk-amp-gpio = <&pmi8994_gpios 1 0>;
+ qcom,hdmi-audio-rx;
+ };
+};
+
+&pm8994_gpios {
+ gpio@c200 { /* GPIO 3 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ };
+
+ gpio@c300 { /* GPIO 4 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ };
+
+ gpio@c400 { /* GPIO 5 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ };
+
+ gpio@c600 { /* GPIO 7 */
+ /* NFC pwr request */
+ qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
+ qcom,pull = <5>; /* QPNP_PIN_PULL_NO */
+ qcom,vin-sel = <2>; /* QPNP_PIN_VIN2 */
+ qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
+ qcom,master-en = <1>;
+ };
+
+ gpio@c900 { /* GPIO 10 */
+ /* NFC clk request */
+ qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
+ qcom,pull = <5>; /* QPNP_PIN_PULL_NO */
+ qcom,vin-sel = <2>; /* QPNP_PIN_VIN2 */
+ qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
+ qcom,master-en = <1>;
+ };
+
+ gpio@c700 { /* GPIO 8 */
+ qcom,mode = <0>; /* Digital in */
+ qcom,pull = <0>; /* PULL up 30uA */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,invert = <0>; /* Output high */
+ qcom,vin-sel = <2>; /* Logical 1 voltage value 1.8v */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,out-strength = <1>; /* Low drive strength */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+
+ gpio@c800 { /* GPIO 9 */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,invert = <1>; /* Output high */
+ qcom,vin-sel = <0>; /* VPH_PWR */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,out-strength = <1>; /* High drive strength */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+
+ gpio@ce00 { /* GPIO 15 */
+ qcom,mode = <1>;
+ qcom,output-type = <0>;
+ qcom,pull = <5>;
+ qcom,vin-sel = <2>;
+ qcom,out-strength = <1>;
+ qcom,src-sel = <2>;
+ qcom,master-en = <1>;
+ };
+
+ gpio@d100 { /* GPIO 18 */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,invert = <0>; /* Output low initially */
+ qcom,vin-sel = <2>; /* VIN 2 */
+ qcom,src-sel = <3>; /* Function 2 */
+ qcom,out-strength = <2>; /* Medium */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+
+ gpio@d200 { /* GPIO 19 */
+ qcom,mode = <1>; /* Digital output*/
+ qcom,pull = <4>; /* Pulldown 10uA */
+ qcom,vin-sel = <2>; /* VIN2 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,invert = <0>; /* Invert */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+};
+
+&pm8994_mpps {
+ mpp@a000 { /* MPP 1 */
+ };
+
+ mpp@a100 { /* MPP 2 */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,vin-sel = <2>; /* S4 1.8V */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,master-en = <1>; /* Enable GPIO */
+ };
+
+ mpp@a300 { /* MPP 4 */
+ /* HDMI_5v_vreg regulator enable */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,vin-sel = <2>; /* S4 1.8V */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,master-en = <1>; /* Enable GPIO */
+ qcom,invert = <0>;
+ };
+};
+
+&slim_msm {
+ tomtom_codec {
+ cdc-vdd-spkdrv-supply = <&pmi8994_boost>;
+ qcom,cdc-vdd-spkdrv-voltage = <5000000 5000000>;
+ qcom,cdc-vdd-spkdrv-current = <600000>;
+
+ cdc-vdd-spkdrv-2-supply = <&pmi8994_boost>;
+ qcom,cdc-vdd-spkdrv-2-voltage = <5000000 5000000>;
+ qcom,cdc-vdd-spkdrv-2-current = <600000>;
+
+ qcom,cdc-on-demand-supplies = "cdc-vdd-spkdrv",
+ "cdc-vdd-spkdrv-2";
+ };
+};
+
+&pmi8994_gpios {
+ gpio@c000 { /* GPIO 1 Ultrasound PA EN */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,pull = <5>; /* No Pull */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ };
+};
+
+&pmi8994_mpps {
+ mpp@a300 { /* MPP 4 */
+ /* WLED FET */
+ qcom,mode = <1>;
+ qcom,master-en = <1>;
+ };
+};
+
+&blsp2_uart2 {
+ status = "ok";
+};
+
+&blsp1_uart2 {
+ status= "ok";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart_console_sleep>;
+};
+
+&usb3 {
+ status = "ok";
+};
+
+&hsphy0 {
+ status = "ok";
+};
+
+&ssphy0 {
+ status = "ok";
+};
+
+&qcom_crypto {
+ status = "okay";
+};
+
+&qcom_cedev {
+ status = "okay";
+};
+
+&i2c_5 {
+ silabs4705@11 { /* SiLabs FM chip, slave id 0x11*/
+ status = "ok";
+ compatible = "silabs,si4705";
+ reg = <0x11>;
+ vdd-supply = <&pm8994_s4>;
+ silabs,vdd-supply-voltage = <1800000 1800000>;
+ pinctrl-names = "pmx_fm_active","pmx_fm_suspend";
+ pinctrl-0 = <&fm_int_active &fm_rst_active>;
+ pinctrl-1 = <&fm_int_suspend &fm_rst_suspend>;
+ silabs,reset-gpio = <&msm_gpio 62 0>;
+ silabs,int-gpio = <&msm_gpio 9 0>;
+ silabs,status-gpio = <&msm_gpio 11 0>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <9 2>;
+ interrupt-names = "silabs_fm_int";
+ };
+};
+
+/{
+ mtp_batterydata: qcom,battery-data {
+ #include "batterydata-mtp-3000mah.dtsi"
+ };
+};
+
+&pmi8994_fg {
+ qcom,battery-data = <&mtp_batterydata>;
+};
+
+&pmi8994_haptics {
+ status = "okay";
+};
+
+&pmi8994_charger {
+ qcom,dc-psy-type = "Wireless";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-pinctrl.dtsi b/arch/arm64/boot/dts/qcom/msm8994-pinctrl.dtsi
new file mode 100644
index 00000000000..eb43b581027
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-pinctrl.dtsi
@@ -0,0 +1,1223 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ tlmm_pinmux: pinctrl@fd510000 {
+ compatible = "qcom,msm-tlmm-8994", "qcom,msm-tlmm-8974";
+ reg = <0xfd510000 0x4000>;
+ interrupts = <0 208 0>;
+
+ /*General purpose pins*/
+ gp: gp {
+ qcom,num-pins = <146>;
+ #qcom,pin-cells = <1>;
+
+ msm_gpio: msm_gpio {
+ compatible = "qcom,msm-tlmm-gp";
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ qcom,direct-connect-irqs = <8>;
+ num_irqs = <146>;
+ };
+ };
+
+ pmx-uartconsole {
+ qcom,pins = <&gp 4>, <&gp 5>;
+ qcom,num-grp-pins = <2>;
+ qcom,pin-func = <2>;
+ label = "uart-console";
+
+ uart_console_sleep: uart-console {
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+
+ blsp2_uart2_active {
+ qcom,pins = <&gp 45>, <&gp 46>, <&gp 47>, <&gp 48>;
+ qcom,num-grp-pins = <4>;
+ qcom,pin-func = <2>;
+ label = "blsp2_uart2_active";
+ hsuart_active: default {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ blsp2_uart2_sleep {
+ qcom,pins = <&gp 45>, <&gp 46>, <&gp 47>, <&gp 48>;
+ qcom,num-grp-pins = <4>;
+ qcom,pin-func = <0>;
+ label = "blsp2_uart2_sleep";
+ hsuart_sleep: sleep {
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ pmx_mdss: pmx_mdss {
+ label = "mdss-pins";
+ qcom,pin-func = <0>;
+ mdss_dsi_active: active {
+ drive-strength = <8>; /* 8 mA */
+ bias-disable = <0>; /* no pull */
+ output-high;
+ };
+ mdss_dsi_suspend: suspend {
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* pull down */
+ output-low;
+ };
+ };
+
+ pmx_mdss_te: pmx_mdss_te {
+ label = "mdss-te-pins";
+ qcom,pin-func = <1>;
+ mdss_te_active: active {
+ drive-strength = <2>; /* 8 mA */
+ bias-pull-down = <0>; /* pull down*/
+ input-debounce = <0>;
+ };
+ mdss_te_suspend: suspend {
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* pull down */
+ input-debounce = <0>;
+ };
+ };
+
+ pmx_hdmi_cec: pmx_hdmi_cec {
+ qcom,pin-func = <1>;
+ label = "hdmi-cec-pins";
+ mdss_hdmi_cec_active: cec_active {
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ mdss_hdmi_cec_suspend: cec_suspend {
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+
+ pmx_hdmi_ddc: pmx_hdmi_ddc {
+ qcom,pin-func = <1>;
+ label = "hdmi-ddc-pins";
+ mdss_hdmi_ddc_active: ddc_active {
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ mdss_hdmi_ddc_suspend: ddc_suspend {
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+
+ pmx_hdmi_hpd: pmx_hdmi_hpd {
+ qcom,pin-func = <1>;
+ label = "hdmi-hpd-pin";
+ mdss_hdmi_hpd_active: hpd_active {
+ drive-strength = <16>;
+ bias-pull-down;
+ };
+ mdss_hdmi_hpd_suspend: hpd_suspend {
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+
+ spi_0 {
+ qcom,pins = <&gp 0>, <&gp 1>, <&gp 3>;
+ qcom,num-grp-pins = <3>;
+ qcom,pin-func = <1>;
+ label = "spi_0";
+
+ spi_0_active: spi_0_active {
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+
+ spi_0_sleep: spi_0_sleep {
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+
+ /* SDC pin type */
+ sdc: sdc {
+ /* 0-3 for sdc1 4-6 for sdc2 */
+ qcom,num-pins = <7>;
+ /* Order of pins */
+ /* SDC1: CLK -> 0, CMD -> 1, DATA -> 2, RCLK -> 3 */
+ /* SDC2: CLK -> 4, CMD -> 5, DATA -> 6 */
+ #qcom,pin-cells = <1>;
+ };
+
+ pmx_sdc1_clk {
+ qcom,pins = <&sdc 0>;
+ qcom,num-grp-pins = <1>;
+ label = "sdc1-clk";
+ sdc1_clk_on: clk_on {
+ bias-disable; /* NO pull */
+ drive-strength = <6>; /* 6 MA */
+ };
+ sdc1_clk_off: clk_off {
+ bias-disable; /* NO pull */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ pmx_sdc1_cmd {
+ qcom,pins = <&sdc 1>;
+ qcom,num-grp-pins = <1>;
+ label = "sdc1-cmd";
+ sdc1_cmd_on: cmd_on {
+ bias-pull-up; /* pull up */
+ drive-strength = <6>; /* 6 MA */
+ };
+ sdc1_cmd_off: cmd_off {
+ bias-pull-up = <0x3>; /* pull up */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ pmx_sdc1_data {
+ qcom,pins = <&sdc 2>;
+ qcom,num-grp-pins = <1>;
+ label = "sdc1-data";
+ sdc1_data_on: data_on {
+ bias-pull-up; /* pull up */
+ drive-strength = <6>; /* 6 MA */
+ };
+ sdc1_data_off: data_off {
+ bias-pull-up; /* pull up */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ pmx_sdc1_rclk {
+ qcom,pins = <&sdc 3>;
+ qcom,num-grp-pins = <1>;
+ label = "sdc1-rclk";
+ sdc1_rclk_on: rclk_on {
+ bias-pull-down; /* pull down */
+ };
+ sdc1_rclk_off: rclk_off {
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ pmx_sdc2_clk {
+ qcom,pins = <&sdc 4>;
+ qcom,num-grp-pins = <1>;
+ label = "sdc2-clk";
+ sdc2_clk_on: clk_on {
+ bias-disable; /* NO pull */
+ drive-strength = <16>; /* 16 MA */
+ };
+ sdc2_clk_off: clk_off {
+ bias-disable; /* NO pull */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ pmx_sdc2_cmd {
+ qcom,pins = <&sdc 5>;
+ qcom,num-grp-pins = <1>;
+ label = "sdc2-cmd";
+ sdc2_cmd_on: cmd_on {
+ bias-pull-up; /* pull up */
+ drive-strength = <10>; /* 10 MA */
+ };
+ sdc2_cmd_off: cmd_off {
+ bias-pull-up; /* pull up */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ pmx_sdc2_data {
+ qcom,pins = <&sdc 6>;
+ qcom,num-grp-pins = <1>;
+ label = "sdc2-data";
+ sdc2_data_on: data_on {
+ bias-pull-up; /* pull up */
+ drive-strength = <10>; /* 10 MA */
+ };
+ sdc2_data_off: data_off {
+ bias-pull-up; /* pull up */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ pmx_i2c_2 {
+ qcom,pins = <&gp 6>, <&gp 7>; /* SDA, SCL */
+ qcom,num-grp-pins = <2>;
+ qcom,pin-func = <3>;
+ label = "pmx_i2c_2";
+
+ i2c_2_active: i2c_2_active {
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ i2c_2_sleep: i2c_2_sleep {
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ pmx_i2c_5 {
+ qcom,pins = <&gp 83>, <&gp 84>; /* SDA, SCL */
+ qcom,num-grp-pins = <2>;
+ qcom,pin-func = <3>;
+ label = "pmx_i2c_5";
+
+ i2c_5_active: i2c_5_active {
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ i2c_5_sleep: i2c_5_sleep {
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ pmx_fm_int_active {
+ qcom,pins = <&gp 9>;
+ qcom,pin-func = <0>;
+ qcom,num-grp-pins = <1>;
+ label = "pmx_fm_int_active";
+
+ fm_int_active: fm_int_active {
+ drive-strength = <16>;
+ bias-pull-up;
+ };
+ };
+
+ pmx_fm_int_suspend {
+ qcom,pins = <&gp 9>;
+ qcom,pin-func = <0>;
+ qcom,num-grp-pins = <1>;
+ label = "pmx_fm_int_suspend";
+
+ fm_int_suspend: fm_int_suspend {
+ drive-strength = <16>;
+ bias-pull-up;
+ };
+ };
+
+ pmx_fm_rst_active {
+ qcom,pins = <&gp 62>;
+ qcom,pin-func = <0>;
+ qcom,num-grp-pins = <1>;
+ label = "pmx_fm_rst_active";
+
+ fm_rst_active: fm_rst_active {
+ drive-strength = <16>;
+ bias-pull-down;
+ };
+ };
+
+ pmx_fm_rst_suspend {
+ qcom,pins = <&gp 62>;
+ qcom,pin-func = <0>;
+ qcom,num-grp-pins = <1>;
+ label = "pmx_fm_rst_suspend";
+
+ fm_rst_suspend: fm_rst_suspend {
+ drive-strength = <16>;
+ bias-pull-down;
+ };
+ };
+
+ pmx_i2c_6 {
+ qcom,pins = <&gp 28>, <&gp 27>; /* SDA, SCL */
+ qcom,num-grp-pins = <2>;
+ qcom,pin-func = <3>;
+ label = "pmx_i2c_6";
+
+ i2c_6_active: i2c_6_active {
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ i2c_6_sleep: i2c_6_sleep {
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ pmx_rd_nfc_int{
+ qcom,pins = <&gp 29>;
+ qcom,pin-func = <0>;
+ qcom,num-grp-pins = <1>;
+ label = "pmx_nfc_int";
+
+ nfc_int_active: active {
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+
+ nfc_int_suspend: suspend {
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+
+ pmx_nfc_reset{
+ qcom,pins = <&gp 30>;
+ qcom,pin-func = <0>;
+ qcom,num-grp-pins = <1>;
+ label = "pmx_nfc_disable";
+
+ nfc_disable_active: active {
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+
+ nfc_disable_suspend: suspend {
+ drive-strength = <6>;
+ bias-disable;
+ };
+ };
+
+ pmx_ts {
+ qcom,pins = <&gp 60>, <&gp 61>;
+ qcom,pin-func = <0>;
+ qcom,num-grp-pins = <2>;
+ label = "pmx_ts";
+
+ ts_active: ts_active {
+ drive-strength = <16>;
+ bias-pull-up;
+ };
+
+ ts_suspend: ts_suspend {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ /* CoreSight */
+ tpiu_seta_1 {
+ qcom,pins = <&gp 27>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <5>;
+ label = "tpiu-seta-1";
+ seta_1: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_2 {
+ qcom,pins = <&gp 28>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <4>;
+ label = "tpiu-seta-2";
+ seta_2: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_3 {
+ qcom,pins = <&gp 53>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <10>;
+ label = "tpiu-seta-3";
+ seta_3: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_4 {
+ qcom,pins = <&gp 54>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <11>;
+ label = "tpiu-seta-4";
+ seta_4: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_5 {
+ qcom,pins = <&gp 63>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <9>;
+ label = "tpiu-seta-5";
+ seta_5: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_6 {
+ qcom,pins = <&gp 64>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <7>;
+ label = "tpiu-seta-6";
+ seta_6: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_7 {
+ qcom,pins = <&gp 65>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <7>;
+ label = "tpiu-seta-7";
+ seta_7: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_8 {
+ qcom,pins = <&gp 66>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <8>;
+ label = "tpiu-seta-8";
+ seta_8: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_9 {
+ qcom,pins = <&gp 67>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <8>;
+ label = "tpiu-seta-9";
+ seta_9: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_10 {
+ qcom,pins = <&gp 74>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <8>;
+ label = "tpiu-seta-10";
+ seta_10: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_11 {
+ qcom,pins = <&gp 75>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <6>;
+ label = "tpiu-seta-11";
+ seta_11: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_12 {
+ qcom,pins = <&gp 76>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <6>;
+ label = "tpiu-seta-12";
+ seta_12: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_13 {
+ qcom,pins = <&gp 77>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <6>;
+ label = "tpiu-seta-13";
+ seta_13: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_14 {
+ qcom,pins = <&gp 85>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <6>;
+ label = "tpiu-seta-14";
+ seta_14: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_15 {
+ qcom,pins = <&gp 86>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <6>;
+ label = "tpiu-seta-15";
+ seta_15: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_16 {
+ qcom,pins = <&gp 87>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <5>;
+ label = "tpiu-seta-16";
+ seta_16: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_17 {
+ qcom,pins = <&gp 89>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <3>;
+ label = "tpiu-seta-17";
+ seta_17: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_seta_18 {
+ qcom,pins = <&gp 90>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <3>;
+ label = "tpiu-seta-18";
+ seta_18: seta {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_1 {
+ qcom,pins = <&gp 13>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <4>;
+ label = "tpiu-setb-1";
+ setb_1: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_2 {
+ qcom,pins = <&gp 14>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <4>;
+ label = "tpiu-setb-2";
+ setb_2: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_3 {
+ qcom,pins = <&gp 15>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <3>;
+ label = "tpiu-setb-3";
+ setb_3: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_4 {
+ qcom,pins = <&gp 16>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <3>;
+ label = "tpiu-setb-4";
+ setb_4: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_5 {
+ qcom,pins = <&gp 17>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <6>;
+ label = "tpiu-setb-5";
+ setb_5: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_6 {
+ qcom,pins = <&gp 18>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <6>;
+ label = "tpiu-setb-6";
+ setb_6: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_7 {
+ qcom,pins = <&gp 19>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <6>;
+ label = "tpiu-setb-7";
+ setb_7: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_8 {
+ qcom,pins = <&gp 21>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <6>;
+ label = "tpiu-setb-8";
+ setb_8: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_9 {
+ qcom,pins = <&gp 22>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <6>;
+ label = "tpiu-setb-9";
+ setb_9: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_10 {
+ qcom,pins = <&gp 23>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <7>;
+ label = "tpiu-setb-10";
+ setb_10: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_11 {
+ qcom,pins = <&gp 25>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <8>;
+ label = "tpiu-setb-11";
+ setb_11: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_12 {
+ qcom,pins = <&gp 26>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <7>;
+ label = "tpiu-setb-12";
+ setb_12: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_13 {
+ qcom,pins = <&gp 57>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <7>;
+ label = "tpiu-setb-13";
+ setb_13: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_14 {
+ qcom,pins = <&gp 58>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <7>;
+ label = "tpiu-setb-14";
+ setb_14: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_15 {
+ qcom,pins = <&gp 91>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <7>;
+ label = "tpiu-setb-15";
+ setb_15: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_16 {
+ qcom,pins = <&gp 92>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <5>;
+ label = "tpiu-setb-16";
+ setb_16: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_17 {
+ qcom,pins = <&gp 93>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <7>;
+ label = "tpiu-setb-17";
+ setb_17: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ tpiu_setb_18 {
+ qcom,pins = <&gp 94>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <7>;
+ label = "tpiu-setb-18";
+ setb_18: setb {
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ cti_trigout_a {
+ qcom,pins = <&gp 56>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <9>;
+ label = "cti-trigout-a";
+ trigout_a: trigout_a {
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ cti_trigout_c {
+ qcom,pins = <&gp 41>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <4>;
+ label = "cti-trigout-c";
+ trigout_c: trigout_c {
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ cci0_active {
+ /* CLK, DATA */
+ qcom,pins = <&gp 17>, <&gp 18>;
+ qcom,num-grp-pins = <2>;
+ qcom,pin-func = <1>;
+ label = "cci0-active";
+ /* active state */
+ cci0_active: cci0_active {
+ drive-strength = <2>; /* 2 MA */
+ bias-disable; /* No PULL */
+ };
+ };
+
+ cci0_suspend {
+ /* CLK, DATA */
+ qcom,pins = <&gp 17>, <&gp 18>;
+ qcom,num-grp-pins = <2>;
+ qcom,pin-func = <0>;
+ label = "cci0-suspend";
+ /*suspended state */
+ cci0_suspend: cci0_suspend {
+ drive-strength = <2>; /* 2 MA */
+ bias-disable; /* No PULL */
+ };
+ };
+
+ cci1_active {
+ /* CLK, DATA */
+ qcom,pins = <&gp 19>, <&gp 20>;
+ qcom,num-grp-pins = <2>;
+ qcom,pin-func = <1>;
+ label = "cci1-active";
+ /* active state */
+ cci1_active: cci1_active {
+ drive-strength = <2>; /* 2 MA */
+ bias-disable; /* No PULL */
+ };
+ };
+
+ cci1_suspend {
+ /* CLK, DATA */
+ qcom,pins = <&gp 19>, <&gp 20>;
+ qcom,num-grp-pins = <2>;
+ qcom,pin-func = <0>;
+ label = "cci1-suspend";
+ /*suspended state */
+ cci1_suspend: cci1_suspend {
+ drive-strength = <2>; /* 2 MA */
+ bias-disable; /* No PULL */
+ };
+ };
+
+ cam_sensor_mclk0_active {
+ /* MCLK0 */
+ qcom,pins = <&gp 13>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <1>;
+ label = "cam_sensor_mclk0_active";
+ /* active state */
+ cam_sensor_mclk0_active: cam_sensor_mclk0_active {
+ drive-strength = <2>; /* 2 MA */
+ bias-disable; /* No PULL */
+ };
+ };
+
+ cam_sensor_mclk0_suspend {
+ /* MCLK0 */
+ qcom,pins = <&gp 13>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <1>;
+ label = "cam_sensor_mclk0_suspend";
+ /*suspended state */
+ cam_sensor_mclk0_suspend: cam_sensor_mclk0_suspend {
+ drive-strength = <2>; /* 2 MA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+
+ cam_sensor_rear_active {
+ /* RESET, STANDBY */
+ qcom,pins = <&gp 92>, <&gp 91>;
+ qcom,num-grp-pins = <2>;
+ label = "cam_sensor_rear_active";
+ /* active state */
+ cam_sensor_rear_active: cam_sensor_rear_active {
+ drive-strength = <2>; /* 2 MA */
+ bias-disable; /* No PULL */
+ };
+ };
+
+ cam_sensor_rear_suspend {
+ /* RESET, STANDBY */
+ qcom,pins = <&gp 92>, <&gp 91>;
+ qcom,num-grp-pins = <2>;
+ label = "cam_sensor_rear_suspend";
+ /*suspended state */
+ cam_sensor_rear_suspend: cam_sensor_rear_suspend {
+ drive-strength = <2>; /* 2 MA */
+ bias-disable; /* No PULL */
+ };
+ };
+
+ cam_sensor_mclk1_active {
+ /* MCLK2 */
+ qcom,pins = <&gp 14>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <1>;
+ label = "cam_sensor_mclk1_active";
+ /* active state */
+ cam_sensor_mclk1_active: cam_sensor_mclk1_active {
+ drive-strength = <2>; /* 2 MA */
+ bias-disable; /* No PULL */
+ };
+ };
+
+ cam_sensor_mclk1_suspend {
+ /* MCLK2 */
+ qcom,pins = <&gp 14>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <1>;
+ label = "cam_sensor_mclk1_suspend";
+ /* suspend state */
+ cam_sensor_mclk1_suspend: cam_sensor_mclk1_suspend {
+ drive-strength = <2>; /* 2 MA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+
+ cam_sensor_rear2_active {
+ /* RESET, STANDBY */
+ qcom,pins = <&gp 94>, <&gp 93>;
+ qcom,num-grp-pins = <2>;
+ label = "cam_sensor_rear2_active";
+ /* active state */
+ cam_sensor_rear2_active: cam_sensor_rear2_active {
+ drive-strength = <2>; /* 2 MA */
+ bias-disable; /* No PULL */
+ };
+ };
+
+ cam_sensor_rear2_suspend {
+ /* RESET, STANDBY */
+ qcom,pins = <&gp 94>, <&gp 93>;
+ qcom,num-grp-pins = <2>;
+ label = "cam_sensor_rear2_suspend";
+ /*suspended state */
+ cam_sensor_rear2_suspend: cam_sensor_rear2_suspend {
+ drive-strength = <2>; /* 2 MA */
+ bias-disable; /* No PULL */
+ };
+ };
+
+ cam_sensor_mclk2_active {
+ /* MCLK2 */
+ qcom,pins = <&gp 15>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <1>;
+ label = "cam_sensor_mclk2_active";
+ /* active state */
+ cam_sensor_mclk2_active: cam_sensor_mclk2_active {
+ drive-strength = <2>; /* 2 MA */
+ bias-disable; /* No PULL */
+ };
+ };
+
+ cam_sensor_mclk2_suspend {
+ /* MCLK2 */
+ qcom,pins = <&gp 15>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <1>;
+ label = "cam_sensor_mclk2_suspend";
+ /* suspend state */
+ cam_sensor_mclk2_suspend: cam_sensor_mclk2_suspend {
+ drive-strength = <2>; /* 2 MA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+
+ cam_sensor_front_active {
+ /* RESET, STANDBY */
+ qcom,pins = <&gp 104>, <&gp 105>;
+ qcom,num-grp-pins = <2>;
+ label = "cam_sensor_front_active";
+ /* active state */
+ cam_sensor_front_active: cam_sensor_front_active {
+ drive-strength = <2>; /* 2 MA */
+ bias-disable; /* No PULL */
+ };
+ };
+
+ cam_sensor_front_suspend {
+ /* RESET, STANDBY */
+ qcom,pins = <&gp 104>, <&gp 105>;
+ qcom,num-grp-pins = <2>;
+ label = "cam_sensor_front_suspend";
+ /*suspended state */
+ cam_sensor_front_suspend: cam_sensor_front_suspend {
+ drive-strength = <2>; /* 2 MA */
+ bias-disable; /* No PULL */
+ };
+ };
+
+ cnss_pmux: cnss_pmux {
+ qcom,pins = <&gp 113>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <0>;
+ label = "cnss_pins";
+ cnss_default: default {
+ drive-strength = <16>;
+ bias-pull-down;
+ };
+ };
+
+ pcie0_clkreq {
+ qcom,pins = <&gp 54>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <2>;
+ label = "pcie0-clkreq";
+ /* default state */
+ pcie0_clkreq_default: pcie0_clkreq_default {
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+
+ pcie0_perst {
+ qcom,pins = <&gp 53>;
+ qcom,num-grp-pins = <1>;
+ label = "pcie0-perst";
+ /* default state */
+ pcie0_perst_default: pcie0_perst_default {
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+
+ pcie0_wake {
+ qcom,pins = <&gp 55>;
+ qcom,num-grp-pins = <1>;
+ label = "pcie0-wake";
+ /* default state */
+ pcie0_wake_default: pcie0_wake_default {
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+
+ pcie1_clkreq {
+ qcom,pins = <&gp 36>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <2>;
+ label = "pcie1-clkreq";
+ /* default state */
+ pcie1_clkreq_default: pcie1_clkreq_default {
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+
+ pcie1_perst {
+ qcom,pins = <&gp 35>;
+ qcom,num-grp-pins = <1>;
+ label = "pcie1-perst";
+ /* default state */
+ pcie1_perst_default: pcie1_perst_default {
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+
+ pcie1_wake {
+ qcom,pins = <&gp 37>;
+ qcom,num-grp-pins = <1>;
+ label = "pcie1-wake";
+ /* default state */
+ pcie1_wake_default: pcie1_wake_default {
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+
+ pmx_sec_aux_pcm {
+ qcom,pins = <&gp 79>, <&gp 80>, <&gp 82>;
+ qcom,num-grp-pins = <3>;
+ qcom,pin-func = <1>;
+ label = "sec_aux_pcm";
+ sec_aux_pcm_sleep: sec_aux_pcm_sleep {
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ sec_aux_pcm_active: sec_aux_pcm_active {
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ output-high;
+ };
+ };
+
+ pmx_sec_aux_pcm_din {
+ qcom,pins = <&gp 81>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <1>;
+ label = "sec_aux_pcm_din";
+ sec_aux_pcm_din_sleep: sec_aux_pcm_din_sleep {
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ sec_aux_pcm_din_active: sec_aux_pcm_din_active {
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ };
+ };
+
+ pmx_pri_mi2s {
+ qcom,pins = <&gp 65>, <&gp 66>;
+ qcom,num-grp-pins = <2>;
+ qcom,pin-func = <1>;
+ label = "pri_mi2s";
+ pri_mi2s_sleep: pri_mi2s_sleep {
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ pri_mi2s_active: pri_mi2s_active {
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ output-high;
+ };
+ };
+
+ pmx_pri_mi2s_sd0 {
+ qcom,pins = <&gp 67>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <1>;
+ label = "pri_mi2s_sd0";
+ pri_mi2s_sd0_sleep: pri_mi2s_sd0_sleep {
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ pri_mi2s_sd0_active: pri_mi2s_sd0_active {
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ };
+ };
+
+ tsif0_signals {
+ qcom,pins = <&gp 89>, /* TSIF0 CLK */
+ <&gp 90>, /* TSIF0 Enable */
+ <&gp 91>; /* TSIF0 DATA */
+ qcom,num-grp-pins = <3>;
+ qcom,pin-func = <1>;
+ label = "tsif0-signals";
+ tsif0_signals_active: tsif0_signals_active {
+ drive_strength = <2>; /* 2 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ /* sync signal is only used if configured to mode-2 */
+ tsif0_sync {
+ qcom,pins = <&gp 110>; /* TSIF0 SYNC */
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <1>;
+ label = "tsif0-sync";
+ tsif0_sync_active: tsif0_sync_active {
+ drive_strength = <2>; /* 2 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ tsif1_signals {
+ qcom,pins = <&gp 93>, /* TSIF1 CLK */
+ <&gp 94>, /* TSIF1 Enable */
+ <&gp 95>; /* TSIF1 DATA */
+ qcom,num-grp-pins = <3>;
+ qcom,pin-func = <1>;
+ label = "tsif1-signals";
+ tsif1_signals_active: tsif1_signals_active {
+ drive_strength = <2>; /* 2 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ /* sync signal is only used if configured to mode-2 */
+ tsif1_sync {
+ qcom,pins = <&gp 96>; /* TSIF1 SYNC */
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <1>;
+ label = "tsif1-sync";
+ tsif1_sync_active: tsif1_sync_active {
+ drive_strength = <2>; /* 2 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-pm.dtsi b/arch/arm64/boot/dts/qcom/msm8994-pm.dtsi
new file mode 100644
index 00000000000..3cf05711747
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-pm.dtsi
@@ -0,0 +1,588 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ qcom,spm@f9065000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xf9065000 0x1000>;
+ qcom,name = "system-cci"; /* CCI SAW */
+ qcom,saw2-ver-reg = <0xfd0>;
+ qcom,saw2-cfg = <0x01>;
+ qcom,saw2-spm-dly = <0X3c100c00>;
+ qcom,saw2-spm-ctl = <0x0>;
+ qcom,cpu-vctl-list = <&CPU0 &CPU1 &CPU2 &CPU3>;
+ qcom,vctl-timeout-us = <50>;
+ qcom,vctl-port = <0x0>;
+ qcom,phase-port = <0x1>;
+ qcom,saw2-pmic-data0 = <0x00030000>; /* VDD_APC0 off */
+ qcom,saw2-pmic-data1 = <0x02030080>; /* VDD_APC0 on */
+ qcom,pfm-port = <0x2>;
+ qcom,saw2-spm-cmd-ret = [00 03 00 0f];
+ qcom,saw2-spm-cmd-pc = [00 60 70 50 01 07 11 3f 3f 3f 3f 50 00
+ 60 70 0f];
+ };
+
+ cluster0_spm: qcom,spm@f9012000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xf9012000 0x1000>,
+ <0xf900D210 0x8>;
+ qcom,name = "a53-l2"; /* A53 L2 SAW */
+ qcom,saw2-ver-reg = <0xfd0>;
+ qcom,saw2-cfg = <0x01>;
+ qcom,saw2-spm-dly = <0x3c100c1c>;
+ qcom,saw2-spm-ctl = <0x0>;
+ qcom,saw2-spm-cmd-ret = [03 2f 1b 0f];
+ qcom,saw2-spm-cmd-pc = [08 00 30 50 18 7b 26 6b 16 6b c0 e0 d0
+ 1f 18 03 2f 1b 18 7b d0 2b e0 3b c0 16 6b 26 6b 18 00
+ 30 50 08 0f];
+ };
+
+ cluster1_spm: qcom,spm@f9013000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xf9013000 0x1000>,
+ <0xf900f210 0x8>;
+ qcom,name = "a57-l2"; /* A57 L2 SAW */
+ qcom,saw2-ver-reg = <0xfd0>;
+ qcom,saw2-cfg = <0x01>;
+ qcom,saw2-spm-dly = <0x3c100c30>;
+ qcom,saw2-spm-ctl = <0x0>;
+ qcom,cpu-vctl-list = <&CPU4 &CPU5 &CPU6 &CPU7>;
+ qcom,vctl-timeout-us = <50>;
+ qcom,vctl-port = <0x0>;
+ qcom,phase-port = <0x1>;
+ qcom,saw2-pmic-data0 = <0x00030000>; /* VDD_APC1 off */
+ qcom,saw2-pmic-data1 = <0x02030080>; /* VDD_APC1 on */
+ qcom,pfm-port = <0x2>;
+ qcom,saw2-spm-cmd-ret = [03 2f 1b 0f];
+ qcom,saw2-spm-cmd-pc = [08 00 30 50 18 7b 26 6b 16 6b c0 e0 d0
+ 18 b0 01 03 2f 1b 11 b0 3f 3f 3f 3f 18 7b d0 2b e0 3b
+ c0 16 6b 26 6b 18 00 30 50 08 0f];
+ };
+
+ qcom,spm@f9089000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xf9089000 0x1000>,
+ <0xf908b060 0x8>;
+ qcom,name = "cpu0";
+ qcom,cpu = <&CPU0>;
+ qcom,saw2-ver-reg = <0xfd0>;
+ qcom,saw2-cfg = <0x01>;
+ qcom,saw2-spm-dly = <0X3c100c00>;
+ qcom,saw2-spm-ctl = <0x0>;
+ qcom,saw2-spm-cmd-wfi = [03 2f 0b 0f];
+ qcom,saw2-spm-cmd-spc = [00 40 30 50 2b 14 70 24 80 e0 a0 92
+ 1b 50 03 2f 0b 50 2b 92 1b e2 1b a0 80 24 14 70 50 00
+ 40 30 0f];
+ qcom,saw2-spm-cmd-pc = [00 40 30 50 2b 14 70 24 80 e0 a0 92 1b
+ 50 03 2f 0b 50 2b 92 1b e2 1b a0 80 24 14 70 50 00 40
+ 30 0f];
+ };
+
+ qcom,spm@f9099000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xf9099000 0x1000>,
+ <0xf909b060 0x8>;
+ qcom,name = "cpu1";
+ qcom,cpu = <&CPU1>;
+ qcom,saw2-ver-reg = <0xfd0>;
+ qcom,saw2-cfg = <0x01>;
+ qcom,saw2-spm-dly = <0X3c100c00>;
+ qcom,saw2-spm-ctl = <0x0>;
+ qcom,saw2-spm-cmd-wfi = [03 2f 0b 0f];
+ qcom,saw2-spm-cmd-spc = [00 40 30 50 2b 14 70 24 80 e0 a0 92
+ 1b 50 03 2f 0b 50 2b 92 1b e2 1b a0 80 24 14 70 50 00
+ 40 30 0f];
+ qcom,saw2-spm-cmd-pc = [00 40 30 50 2b 14 70 24 80 e0 a0 92 1b
+ 50 03 2f 0b 50 2b 92 1b e2 1b a0 80 24 14 70 50 00 40
+ 30 0f];
+ };
+
+ qcom,spm@f90a9000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xf90a9000 0x1000>,
+ <0xf90ab060 0x8>;
+ qcom,name = "cpu2";
+ qcom,cpu = <&CPU2>;
+ qcom,saw2-ver-reg = <0xfd0>;
+ qcom,saw2-cfg = <0x01>;
+ qcom,saw2-spm-dly = <0X3c100c00>;
+ qcom,saw2-spm-ctl = <0x0>;
+ qcom,saw2-spm-cmd-wfi = [03 2f 0b 0f];
+ qcom,saw2-spm-cmd-spc = [00 40 30 50 2b 14 70 24 80 e0 a0 92
+ 1b 50 03 2f 0b 50 2b 92 1b e2 1b a0 80 24 14 70 50 00
+ 40 30 0f];
+ qcom,saw2-spm-cmd-pc = [00 40 30 50 2b 14 70 24 80 e0 a0 92 1b
+ 50 03 2f 0b 50 2b 92 1b e2 1b a0 80 24 14 70 50 00 40
+ 30 0f];
+ };
+
+ qcom,spm@f90b9000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xf90b9000 0x1000>,
+ <0xf90bb060 0x8>;
+ qcom,name = "cpu3";
+ qcom,cpu = <&CPU3>;
+ qcom,saw2-ver-reg = <0xfd0>;
+ qcom,saw2-cfg = <0x01>;
+ qcom,saw2-spm-dly = <0X3c100c00>;
+ qcom,saw2-spm-ctl = <0x0>;
+ qcom,saw2-spm-cmd-wfi = [03 2f 0b 0f];
+ qcom,saw2-spm-cmd-spc = [00 40 30 50 2b 14 70 24 80 e0 a0 92
+ 1b 50 03 2f 0b 50 2b 92 1b e2 1b a0 80 24 14 70 50 00
+ 40 30 0f];
+ qcom,saw2-spm-cmd-pc = [00 40 30 50 2b 14 70 24 80 e0 a0 92 1b
+ 50 03 2f 0b 50 2b 92 1b e2 1b a0 80 24 14 70 50 00 40
+ 30 0f];
+ };
+
+ qcom,spm@f90c9000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xf90c9000 0x1000>,
+ <0xf90cb060 0x8>;
+ qcom,name = "cpu4";
+ qcom,cpu = <&CPU4>;
+ qcom,saw2-ver-reg = <0xfd0>;
+ qcom,saw2-cfg = <0x01>;
+ qcom,saw2-spm-dly = <0X3c100c00>;
+ qcom,saw2-spm-ctl = <0x0>;
+ qcom,saw2-spm-cmd-wfi = [03 2f 0b 0f];
+ qcom,saw2-spm-cmd-spc = [00 40 30 50 2b 14 70 24 80 e0 a0 92
+ 1b 50 03 2f 0b 50 2b 92 1b e2 1b a0 80 24 14 70 50 00
+ 40 30 0f];
+ qcom,saw2-spm-cmd-pc = [00 40 30 50 2b 14 70 24 80 e0 a0 92 1b
+ 50 03 2f 0b 50 2b 92 1b e2 1b a0 80 24 14 70 50 00 40
+ 30 0f];
+ };
+
+ qcom,spm@f90d9000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xf90d9000 0x1000>,
+ <0xf90db060 0x8>;
+ qcom,name = "cpu5";
+ qcom,cpu = <&CPU5>;
+ qcom,saw2-ver-reg = <0xfd0>;
+ qcom,saw2-cfg = <0x01>;
+ qcom,saw2-spm-dly = <0X3c100c00>;
+ qcom,saw2-spm-ctl = <0x0>;
+ qcom,saw2-spm-cmd-wfi = [03 2f 0b 0f];
+ qcom,saw2-spm-cmd-spc = [00 40 30 50 2b 14 70 24 80 e0 a0 92
+ 1b 50 03 2f 0b 50 2b 92 1b e2 1b a0 80 24 14 70 50 00
+ 40 30 0f];
+ qcom,saw2-spm-cmd-pc = [00 40 30 50 2b 14 70 24 80 e0 a0 92 1b
+ 50 03 2f 0b 50 2b 92 1b e2 1b a0 80 24 14 70 50 00 40
+ 30 0f];
+ };
+
+ qcom,spm@f90e9000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xf90e9000 0x1000>,
+ <0xf90eb060 0x8>;
+ qcom,name = "cpu6";
+ qcom,cpu = <&CPU6>;
+ qcom,saw2-ver-reg = <0xfd0>;
+ qcom,saw2-cfg = <0x01>;
+ qcom,saw2-spm-dly = <0X3c100c00>;
+ qcom,saw2-spm-ctl = <0x0>;
+ qcom,saw2-spm-cmd-wfi = [03 2f 0b 0f];
+ qcom,saw2-spm-cmd-spc = [00 40 30 50 2b 14 70 24 80 e0 a0 92
+ 1b 50 03 2f 0b 50 2b 92 1b e2 1b a0 80 24 14 70 50 00
+ 40 30 0f];
+ qcom,saw2-spm-cmd-pc = [00 40 30 50 2b 14 70 24 80 e0 a0 92 1b
+ 50 03 2f 0b 50 2b 92 1b e2 1b a0 80 24 14 70 50 00 40
+ 30 0f];
+ };
+
+ qcom,spm@f90f9000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xf90f9000 0x1000>,
+ <0xf90fb060 0x8>;
+ qcom,name = "cpu7";
+ qcom,cpu = <&CPU7>;
+ qcom,saw2-ver-reg = <0xfd0>;
+ qcom,saw2-cfg = <0x01>;
+ qcom,saw2-spm-dly = <0X3c100c00>;
+ qcom,saw2-spm-ctl = <0x0>;
+ qcom,saw2-spm-cmd-wfi = [03 2f 0b 0f];
+ qcom,saw2-spm-cmd-spc = [00 40 30 50 2b 14 70 24 80 e0 a0 92
+ 1b 50 03 2f 0b 50 2b 92 1b e2 1b a0 80 24 14 70 50 00
+ 40 30 0f];
+ qcom,saw2-spm-cmd-pc = [00 40 30 50 2b 14 70 24 80 e0 a0 92 1b
+ 50 03 2f 0b 50 2b 92 1b e2 1b a0 80 24 14 70 50 00 40
+ 30 0f];
+ };
+
+ qcom,lpm-levels {
+ compatible = "qcom,lpm-levels";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,pm-cluster@0 {
+ reg = <0>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ label = "system";
+ qcom,spm-device-names = "cci";
+ qcom,default-level = <0>;
+
+ qcom,pm-cluster-level@0{
+ reg = <0>;
+ label = "system-cci-retention";
+ qcom,spm-cci-mode = "retention";
+ qcom,latency-us = <100>;
+ qcom,ss-power = <1000>;
+ qcom,energy-overhead = <300000>;
+ qcom,time-overhead = <100>;
+ };
+
+ qcom,pm-cluster-level@1{
+ reg = <1>;
+ label = "system-cci-pc";
+ qcom,spm-cci-mode = "pc";
+ qcom,latency-us = <30000>;
+ qcom,ss-power = <83>;
+ qcom,energy-overhead = <2274420>;
+ qcom,time-overhead = <6605>;
+ qcom,min-child-idx = <1>;
+ qcom,notify-rpm;
+ };
+
+ qcom,pm-cluster@0{
+ reg = <0>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ label = "a53";
+ qcom,spm-device-names = "l2";
+ qcom,default-level=<0>;
+ qcom,cpu = <&CPU0 &CPU1 &CPU2 &CPU3>;
+
+ qcom,pm-cluster-level@0{
+ reg = <0>;
+ label = "a53-l2-retention";
+ qcom,spm-l2-mode = "retention";
+ qcom,latency-us = <100>;
+ qcom,ss-power = <1000>;
+ qcom,energy-overhead = <300000>;
+ qcom,time-overhead = <100>;
+ };
+
+ qcom,pm-cluster-level@1{
+ reg = <1>;
+ label = "a53-l2-pc";
+ qcom,spm-l2-mode = "pc";
+ qcom,latency-us = <30000>;
+ qcom,ss-power = <83>;
+ qcom,energy-overhead = <2274420>;
+ qcom,time-overhead = <6605>;
+ qcom,min-child-idx = <2>;
+ };
+
+ qcom,pm-cpu {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,pm-cpu-level@0 {
+ reg = <0>;
+ qcom,spm-cpu-mode = "wfi";
+ qcom,latency-us = <1>;
+ qcom,ss-power = <715>;
+ qcom,energy-overhead = <17700>;
+ qcom,time-overhead = <2>;
+ };
+
+ qcom,pm-cpu-level@1 {
+ reg = <1>;
+ qcom,spm-cpu-mode = "standalone_pc";
+ qcom,latency-us = <300>;
+ qcom,ss-power = <476>;
+ qcom,energy-overhead = <225300>;
+ qcom,time-overhead = <350>;
+ qcom,use-broadcast-timer;
+ };
+
+ qcom,pm-cpu-level@2 {
+ reg = <2>;
+ qcom,spm-cpu-mode = "pc";
+ qcom,latency-us = <500>;
+ qcom,ss-power = <163>;
+ qcom,energy-overhead = <577736>;
+ qcom,time-overhead = <1000>;
+ qcom,use-broadcast-timer;
+ };
+ };
+ };
+
+ qcom,pm-cluster@1{
+ reg = <1>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ label = "a57";
+ qcom,spm-device-names = "l2";
+ qcom,default-level=<0>;
+ qcom,cpu = <&CPU4 &CPU5 &CPU6 &CPU7>;
+
+ qcom,pm-cluster-level@0{
+ reg = <0>;
+ label = "a57-l2-retention";
+ qcom,spm-l2-mode = "retention";
+ qcom,latency-us = <100>;
+ qcom,ss-power = <1000>;
+ qcom,energy-overhead = <300000>;
+ qcom,time-overhead = <100>;
+ };
+
+ qcom,pm-cluster-level@1{
+ reg = <1>;
+ label = "a57-l2-pc";
+ qcom,spm-l2-mode = "pc";
+ qcom,latency-us = <30000>;
+ qcom,ss-power = <83>;
+ qcom,energy-overhead = <2274420>;
+ qcom,time-overhead = <6605>;
+ qcom,min-child-idx = <2>;
+ };
+
+ qcom,pm-cpu {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,pm-cpu-level@0 {
+ reg = <0>;
+ qcom,spm-cpu-mode = "wfi";
+ qcom,latency-us = <1>;
+ qcom,ss-power = <715>;
+ qcom,energy-overhead = <17700>;
+ qcom,time-overhead = <2>;
+ };
+
+ qcom,pm-cpu-level@1 {
+ reg = <1>;
+ qcom,spm-cpu-mode = "standalone_pc";
+ qcom,latency-us = <300>;
+ qcom,ss-power = <476>;
+ qcom,energy-overhead = <225300>;
+ qcom,time-overhead = <350>;
+ qcom,use-broadcast-timer;
+ };
+
+ qcom,pm-cpu-level@2 {
+ reg = <2>;
+ qcom,spm-cpu-mode = "pc";
+ qcom,latency-us = <500>;
+ qcom,ss-power = <163>;
+ qcom,energy-overhead = <577736>;
+ qcom,time-overhead = <1000>;
+ qcom,use-broadcast-timer;
+ };
+ };
+ };
+ };
+
+ };
+
+ qcom,mpm@fc4281d0 {
+ compatible = "qcom,mpm-v2";
+ reg = <0xfc4281d0 0x1000>, /* MSM_RPM_MPM_BASE 4K */
+ <0xf900f008 0x4>; /* MSM_APCS_GCC_BASE 4K */
+ reg-names = "vmpm", "ipc";
+ interrupts = <0 171 1>;
+ clocks = <&clock_rpm clk_cxo_lpm_clk>;
+ clock-names = "xo";
+
+ qcom,ipc-bit-offset = <1>;
+
+ qcom,gic-parent = <&intc>;
+ qcom,gic-map = <2 216>, /* tsens_upper_lower_int */
+ <47 165>, /* usb30_hs_phy_irq */
+ <55 172>, /* usb1_hs_async_wakeup_irq */
+ <62 222>, /* ee0_krait_hlos_spmi_periph_irq */
+ <0xff 33>, /* APCC_qgicL2PerfMonIrptReq */
+ <0xff 34>, /* APCC_qgicL2ErrorIrptReq */
+ <0xff 35>, /* WDT_barkInt */
+ <0xff 40>, /* qtimer_phy_irq */
+ <0xff 56>, /* modem_watchdog */
+ <0xff 57>, /* mss_to_apps_irq(0) */
+ <0xff 58>, /* mss_to_apps_irq(1) */
+ <0xff 59>, /* mss_to_apps_irq(2) */
+ <0xff 60>, /* mss_to_apps_irq(3) */
+ <0xff 61>, /* mss_a2_bam_irq */
+ <0xff 70>, /* iommu_pmon_nonsecure_irq */
+ <0xff 74>, /* osmmu_CIrpt[1] */
+ <0xff 75>, /* osmmu_CIrpt[0] */
+ <0xff 77>, /* osmmu_CIrpt[0] */
+ <0xff 78>, /* osmmu_CIrpt[0] */
+ <0xff 79>, /* osmmu_CIrpt[0] */
+ <0xff 94>, /* osmmu_CIrpt[0] */
+ <0xff 97>, /* iommu_nonsecure_irq */
+ <0xff 99>, /* msm_iommu_pmon_nonsecure_irq */
+ <0xff 102>, /* osmmu_CIrpt[1] */
+ <0xff 105>, /* iommu_pmon_nonsecure_irq */
+ <0xff 109>, /* ocmem_dm_nonsec_irq */
+ <0xff 126>, /* bam_irq[0] */
+ <0xff 155>, /* sdcc_irq[0] */
+ <0xff 163>, /* usb30_ee1_irq */
+ <0xff 170>, /* sdcc_pwr_cmd_irq */
+ <0xff 173>, /* o_wcss_apss_smd_hi */
+ <0xff 174>, /* o_wcss_apss_smd_med */
+ <0xff 175>, /* o_wcss_apss_smd_low */
+ <0xff 176>, /* o_wcss_apss_smsm_irq */
+ <0xff 177>, /* o_wcss_apss_wlan_data_xfer_done */
+ <0xff 178>, /* o_wcss_apss_wlan_rx_data_avail */
+ <0xff 179>, /* o_wcss_apss_asic_intr */
+ <0xff 181>, /* wcnss watchdog */
+ <0xff 188>, /* lpass_irq_out_apcs(0) */
+ <0xff 189>, /* lpass_irq_out_apcs(1) */
+ <0xff 190>, /* lpass_irq_out_apcs(2) */
+ <0xff 191>, /* lpass_irq_out_apcs(3) */
+ <0xff 192>, /* lpass_irq_out_apcs(4) */
+ <0xff 193>, /* lpass_irq_out_apcs(5) */
+ <0xff 194>, /* lpass_irq_out_apcs(6) */
+ <0xff 195>, /* lpass_irq_out_apcs(7) */
+ <0xff 196>, /* lpass_irq_out_apcs(8) */
+ <0xff 197>, /* lpass_irq_out_apcs(9) */
+ <0xff 198>, /* coresight-tmc-etr interrupt */
+ <0xff 200>, /* rpm_ipc(4) */
+ <0xff 201>, /* rpm_ipc(5) */
+ <0xff 202>, /* rpm_ipc(6) */
+ <0xff 203>, /* rpm_ipc(7) */
+ <0xff 204>, /* rpm_ipc(24) */
+ <0xff 205>, /* rpm_ipc(25) */
+ <0xff 206>, /* rpm_ipc(26) */
+ <0xff 207>, /* rpm_ipc(27) */
+ <0xff 211>, /* usb_dwc3_otg */
+ <0xff 240>, /* summary_irq_kpss */
+ <0xff 268>, /* bam_irq[1] */
+ <0xff 270>, /* bam_irq[0] */
+ <0xff 271>, /* bam_irq[0] */
+ <0xff 333>; /* ipa */
+
+ qcom,gpio-parent = <&msm_gpio>;
+ qcom,gpio-map = <3 101>,
+ <4 1 >,
+ <5 5 >,
+ <6 9 >,
+ <7 18>,
+ <8 22>,
+ <9 26>,
+ <10 29>,
+ <11 34>,
+ <12 36>,
+ <13 37>,
+ <14 41>,
+ <15 42>,
+ <16 46>,
+ <17 50>,
+ <18 52>,
+ <19 53>,
+ <20 54>,
+ <21 55>,
+ <22 57>,
+ <23 40>,
+ <24 61>,
+ <25 64>,
+ <26 65>,
+ <27 66>,
+ <28 67>,
+ <29 72>,
+ <30 73>,
+ <31 74>,
+ <32 75>,
+ <33 76>,
+ <34 77>,
+ <35 82>,
+ <36 86>,
+ <37 90>,
+ <38 95>,
+ <39 96>,
+ <40 100>,
+ <41 71>,
+ <42 108>,
+ <43 111>,
+ <44 115>,
+ <45 127>;
+
+ };
+
+ qcom,pm@fe87f664 {
+ compatible = "qcom,pm";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ reg = <0xfe87f664 0x40>;
+ clock-names = "cpu0_clk", "cpu1_clk", "cpu2_clk",
+ "cpu3_clk", "cpu4_clk", "cpu5_clk",
+ "cpu6_clk", "cpu7_clk", "l2_clk";
+ clocks = <&clock_cpu clk_a53_clk>,
+ <&clock_cpu clk_a53_clk>,
+ <&clock_cpu clk_a53_clk>,
+ <&clock_cpu clk_a53_clk>,
+ <&clock_cpu clk_a57_clk>,
+ <&clock_cpu clk_a57_clk>,
+ <&clock_cpu clk_a57_clk>,
+ <&clock_cpu clk_a57_clk>,
+ <&clock_cpu clk_cci_clk>;
+ };
+
+ qcom,cpu-sleep-status@f908b008{
+ compatible = "qcom,cpu-sleep-status";
+ reg = <0xf908b008 0x100>;
+ qcom,cpu-alias-addr = <0x10000>;
+ qcom,sleep-status-mask= <0x80000>;
+ };
+
+ qcom,rpm-log@fc000000 {
+ compatible = "qcom,rpm-log";
+ reg = <0xfc000000 0x4000>,
+ <0xfc190018 0x4>;
+ qcom,rpm-addr-phys = <0xfc000000>;
+ qcom,offset-version = <4>;
+ qcom,offset-page-buffer-addr = <36>;
+ qcom,offset-log-len = <40>;
+ qcom,offset-log-len-mask = <44>;
+ qcom,offset-page-indices = <56>;
+ };
+
+ qcom,rpm-stats@fc000000 {
+ compatible = "qcom,rpm-stats";
+ reg = <0xfc000000 0x1000>,
+ <0xfc190014 0x4>;
+ reg-names = "phys_addr_base", "offset";
+ qcom,sleep-stats-version = <2>;
+ };
+
+ qcom,rpm-rbcpr-stats@fc000000 {
+ compatible = "qcom,rpmrbcpr-stats";
+ reg = <0xfc000000 0x1a0000>;
+ qcom,start-offset = <0x190010>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-regulator.dtsi b/arch/arm64/boot/dts/qcom/msm8994-regulator.dtsi
new file mode 100644
index 00000000000..6ec57b979e8
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-regulator.dtsi
@@ -0,0 +1,647 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&rpm_bus {
+ /* PM8994 S1 + S6 = 2 phase VDD_CX supply */
+ rpm-regulator-smpa1 {
+ status = "okay";
+ pm8994_s1_corner: regulator-s1-corner {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_s1_corner";
+ qcom,set = <3>;
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <7>;
+ qcom,use-voltage-corner;
+ };
+
+ pm8994_s1_floor_corner: regulator-s1-floor-corner {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_s1_floor_corner";
+ qcom,set = <3>;
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <7>;
+ qcom,use-voltage-floor-corner;
+ qcom,always-send-voltage;
+ };
+
+ pm8994_s1_corner_ao: regulator-s1-corner-ao {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_s1_corner_ao";
+ qcom,set = <1>;
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <7>;
+ qcom,use-voltage-corner;
+ };
+ };
+
+ /* PM8994 S2 + S12 = 2 phase VDD_MX supply */
+ rpm-regulator-smpa2 {
+ status = "okay";
+ pm8994_s2_corner: regulator-s2-corner {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_s2_corner";
+ qcom,set = <3>;
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <7>;
+ qcom,use-voltage-corner;
+ };
+
+ pm8994_s2_corner_ao: regulator-s2-corner-ao {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_s2_corner_ao";
+ qcom,set = <1>;
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <7>;
+ qcom,use-voltage-corner;
+ };
+ };
+
+ rpm-regulator-smpa3 {
+ status = "okay";
+ pm8994_s3: regulator-s3 {
+ regulator-min-microvolt = <1300000>;
+ regulator-max-microvolt = <1300000>;
+ qcom,init-voltage = <1300000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-smpa4 {
+ status = "okay";
+ pm8994_s4: regulator-s4 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-smpa5 {
+ status = "okay";
+ pm8994_s5: regulator-s5 {
+ regulator-min-microvolt = <2150000>;
+ regulator-max-microvolt = <2150000>;
+ qcom,init-voltage = <2150000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-smpa7 {
+ status = "okay";
+ pm8994_s7: regulator-s7 {
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1000000>;
+ qcom,init-voltage = <1000000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa1 {
+ status = "okay";
+ pm8994_l1: regulator-l1 {
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1000000>;
+ qcom,init-voltage = <1000000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa2 {
+ status = "okay";
+ pm8994_l2: regulator-l2 {
+ regulator-min-microvolt = <1250000>;
+ regulator-max-microvolt = <1250000>;
+ qcom,init-voltage = <1250000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa3 {
+ status = "okay";
+ pm8994_l3: regulator-l3 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ qcom,init-voltage = <1200000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa4 {
+ status = "okay";
+ pm8994_l4: regulator-l4 {
+ regulator-min-microvolt = <1225000>;
+ regulator-max-microvolt = <1225000>;
+ qcom,init-voltage = <1225000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa6 {
+ status = "okay";
+ pm8994_l6: regulator-l6 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa8 {
+ status = "okay";
+ pm8994_l8: regulator-l8 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa9 {
+ status = "okay";
+ pm8994_l9: regulator-l9 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa10 {
+ status = "okay";
+ pm8994_l10: regulator-l10 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa11 {
+ status = "okay";
+ pm8994_l11: regulator-l11 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ qcom,init-voltage = <1200000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa12 {
+ status = "okay";
+ pm8994_l12: regulator-l12 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa13 {
+ status = "okay";
+ pm8994_l13: regulator-l13 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2950000>;
+ qcom,init-voltage = <2950000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa14 {
+ status = "okay";
+ pm8994_l14: regulator-l14 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa15 {
+ status = "okay";
+ pm8994_l15: regulator-l15 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa16 {
+ status = "okay";
+ pm8994_l16: regulator-l16 {
+ regulator-min-microvolt = <2700000>;
+ regulator-max-microvolt = <2700000>;
+ qcom,init-voltage = <2700000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa17 {
+ status = "okay";
+ pm8994_l17: regulator-l17 {
+ regulator-min-microvolt = <2700000>;
+ regulator-max-microvolt = <2700000>;
+ qcom,init-voltage = <2700000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa18 {
+ status = "okay";
+ pm8994_l18: regulator-l18 {
+ regulator-min-microvolt = <2850000>;
+ regulator-max-microvolt = <2850000>;
+ qcom,init-voltage = <2850000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa19 {
+ status = "okay";
+ pm8994_l19: regulator-l19 {
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ qcom,init-voltage = <2800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa20 {
+ status = "okay";
+ pm8994_l20: regulator-l20 {
+ regulator-min-microvolt = <2950000>;
+ regulator-max-microvolt = <2950000>;
+ qcom,init-voltage = <2950000>;
+ qcom,init-current = <750>;
+ regulator-boot-on;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa21 {
+ status = "okay";
+ pm8994_l21: regulator-l21 {
+ regulator-min-microvolt = <2950000>;
+ regulator-max-microvolt = <2950000>;
+ qcom,init-voltage = <2950000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa22 {
+ status = "okay";
+ pm8994_l22: regulator-l22 {
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3000000>;
+ qcom,init-voltage = <3000000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa23 {
+ status = "okay";
+ pm8994_l23: regulator-l23 {
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ qcom,init-voltage = <2800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa24 {
+ status = "okay";
+ pm8994_l24: regulator-l24 {
+ regulator-min-microvolt = <3075000>;
+ regulator-max-microvolt = <3075000>;
+ qcom,init-voltage = <3075000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa25 {
+ status = "okay";
+ pm8994_l25: regulator-l25 {
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1000000>;
+ qcom,init-voltage = <1000000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa26 {
+ status = "okay";
+ pm8994_l26: regulator-l26 {
+ regulator-min-microvolt = <987500>;
+ regulator-max-microvolt = <987500>;
+ qcom,init-voltage = <987500>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa27 {
+ status = "okay";
+ pm8994_l27: regulator-l27 {
+ regulator-min-microvolt = <1050000>;
+ regulator-max-microvolt = <1050000>;
+ qcom,init-voltage = <1050000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa28 {
+ status = "okay";
+ pm8994_l28: regulator-l28 {
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1000000>;
+ qcom,init-voltage = <1000000>;
+ qcom,init-current = <45>;
+ regulator-boot-on;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa29 {
+ status = "okay";
+ pm8994_l29: regulator-l29 {
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ qcom,init-voltage = <2800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa30 {
+ status = "okay";
+ pm8994_l30: regulator-l30 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa31 {
+ status = "okay";
+ pm8994_l31: regulator-l31 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ qcom,init-voltage = <1200000>;
+ qcom,init-current = <50>;
+ regulator-boot-on;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa32 {
+ status = "okay";
+ pm8994_l32: regulator-l32 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ qcom,init-voltage = <1800000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-vsa1 {
+ status = "okay";
+ pm8994_lvs1: regulator-lvs1 {
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-vsa2 {
+ status = "okay";
+ pm8994_lvs2: regulator-lvs2 {
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-smpb1 {
+ status = "okay";
+ pmi8994_s1: regulator-s1 {
+ regulator-min-microvolt = <1025000>;
+ regulator-max-microvolt = <1025000>;
+ qcom,init-voltage = <1025000>;
+ status = "okay";
+ };
+ };
+
+ /* PMI8994 S2 + S3 = 2 phase VDD_GFX supply */
+ rpm-regulator-smpb2 {
+ status = "okay";
+ pmi8994_s2_corner: regulator-s2-corner {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pmi8994_s2_corner";
+ qcom,set = <3>;
+ qcom,init-voltage-corner = <2>; /* SVS SOC */
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <7>;
+ qcom,use-voltage-corner;
+ };
+
+ pmi8994_s2_floor_corner: regulator-s2-floor-corner {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pmi8994_s2_floor_corner";
+ qcom,set = <3>;
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <7>;
+ qcom,use-voltage-floor-corner;
+ qcom,always-send-voltage;
+ };
+ };
+
+ rpm-regulator-bstb {
+ status = "okay";
+ pmi8994_boost: regulator-bst {
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-bbyb {
+ status = "okay";
+ pmi8994_boostbypass: regulator-bby {
+ status = "okay";
+ regulator-min-microvolt = <3150000>;
+ regulator-max-microvolt = <3600000>;
+ qcom,init-voltage = <3150000>;
+ };
+ };
+};
+
+/* SPM controlled regulators: */
+&spmi_bus {
+ qcom,pm8994@1 {
+ /* PM8994 S8 = VDD_APC0 supply */
+ pm8994_s8: spm-regulator@2900 {
+ compatible = "qcom,spm-regulator";
+ reg = <0x2900 0x100>;
+ regulator-name = "pm8994_s8";
+ regulator-min-microvolt = <725000>;
+ regulator-max-microvolt = <1115000>;
+ qcom,cpu-num = <0>;
+ };
+
+ /*
+ * PM8994 S9 + S10 + S11 = 3 phase VDD_APC1 supply
+ * S11 is the gang leader.
+ */
+ pm8994_s11: spm-regulator@3200 {
+ compatible = "qcom,spm-regulator";
+ reg = <0x3200 0x100>;
+ regulator-name = "pm8994_s11";
+ regulator-min-microvolt = <725000>;
+ regulator-max-microvolt = <1225000>;
+ qcom,cpu-num = <4>;
+ };
+ };
+};
+
+/* CPR controlled regulators */
+&soc {
+ apc0_vreg_corner: regulator@f9019000 {
+ compatible = "qcom,cpr-regulator";
+ reg = <0xf9019000 0x1000>, <0xf900d064 4>, <0xfc4bc000 0x1000>;
+ reg-names = "rbcpr", "rbcpr_clk", "efuse_addr";
+ interrupts = <0 16 0>;
+ regulator-name = "apc0_corner";
+ qcom,cpr-fuse-corners = <3>;
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <9>;
+
+ qcom,cpr-voltage-ceiling = <900000 1000000 1115000>;
+ qcom,cpr-voltage-floor = <725000 840000 940000>;
+ vdd-apc-supply = <&pm8994_s8>;
+
+ qcom,vdd-mx-corner-map = <4 5 7>;
+ qcom,vdd-mx-vmax = <7>;
+ qcom,vdd-mx-vmin-method = <4>;
+ vdd-mx-supply = <&pm8994_s2_corner_ao>;
+
+ qcom,cpr-ref-clk = <19200>;
+ qcom,cpr-timer-delay = <5000>;
+ qcom,cpr-timer-cons-up = <0>;
+ qcom,cpr-timer-cons-down = <2>;
+ qcom,cpr-irq-line = <0>;
+ qcom,cpr-step-quotient = <16>;
+ qcom,cpr-up-threshold = <2>;
+ qcom,cpr-down-threshold = <4>;
+ qcom,cpr-idle-clocks = <15>;
+ qcom,cpr-gcnt-time = <1>;
+ qcom,vdd-apc-step-up-limit = <1>;
+ qcom,vdd-apc-step-down-limit = <1>;
+ qcom,cpr-apc-volt-step = <5000>;
+
+ qcom,cpr-fuse-row = <137 0>;
+ qcom,cpr-fuse-target-quot = <39 47 55>;
+ qcom,cpr-fuse-target-quot-size = <8 8 8>;
+ qcom,cpr-fuse-target-quot-scale =
+ <0 10>,
+ <0 10>,
+ <0 10>;
+ qcom,cpr-quotient-adjustment = <116 0 73>;
+ qcom,cpr-fuse-ro-sel = <82 82 82>;
+ qcom,cpr-fuse-init-voltage =
+ <138 0 6 0>,
+ <138 6 6 0>,
+ <138 12 6 0>;
+ qcom,cpr-init-voltage-ref = <900000 1000000 1225000>;
+ qcom,cpr-init-voltage-step = <10000>;
+ qcom,cpr-corner-map = <1 2 2 3 3 3 3 3 3>;
+ qcom,cpr-quot-adjust-scaling-factor-max = <2000>;
+ qcom,cpr-corner-frequency-map =
+ <1 199200000>,
+ <2 302400000>,
+ <3 384000000>,
+ <4 600000000>,
+ <5 691200000>,
+ <6 768000000>,
+ <7 844800000>,
+ <8 921600000>,
+ <9 940800000>;
+ qcom,cpr-speed-bin-max-corners =
+ <0xFFFFFFFF 0 1 3 9>;
+ qcom,cpr-enable;
+ };
+
+ apc1_vreg_corner: regulator@f901a000 {
+ compatible = "qcom,cpr-regulator";
+ reg = <0xf901a000 0x1000>, <0xf900f064 4>, <0xfc4bc000 0x1000>;
+ reg-names = "rbcpr", "rbcpr_clk", "efuse_addr";
+ interrupts = <0 19 0>;
+ regulator-name = "apc1_corner";
+ qcom,cpr-fuse-corners = <3>;
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <8>;
+
+ qcom,cpr-voltage-ceiling = <900000 1000000 1225000>;
+ qcom,cpr-voltage-floor = <725000 840000 940000>;
+ vdd-apc-supply = <&pm8994_s11>;
+
+ qcom,vdd-mx-corner-map = <4 5 7>;
+ qcom,vdd-mx-vmax = <7>;
+ qcom,vdd-mx-vmin-method = <4>;
+ vdd-mx-supply = <&pm8994_s2_corner_ao>;
+
+ qcom,cpr-ref-clk = <19200>;
+ qcom,cpr-timer-delay = <5000>;
+ qcom,cpr-timer-cons-up = <0>;
+ qcom,cpr-timer-cons-down = <2>;
+ qcom,cpr-irq-line = <0>;
+ qcom,cpr-step-quotient = <10>;
+ qcom,cpr-up-threshold = <2>;
+ qcom,cpr-down-threshold = <4>;
+ qcom,cpr-idle-clocks = <15>;
+ qcom,cpr-gcnt-time = <1>;
+ qcom,cpr-clamp-timer-interval = <1>;
+ qcom,vdd-apc-step-up-limit = <1>;
+ qcom,vdd-apc-step-down-limit = <1>;
+ qcom,cpr-apc-volt-step = <5000>;
+
+ qcom,cpr-fuse-row = <138 0>;
+ qcom,cpr-fuse-target-quot = <29 37 45>;
+ qcom,cpr-fuse-target-quot-size = <8 8 8>;
+ qcom,cpr-fuse-target-quot-scale =
+ <0 10>,
+ <0 10>,
+ <0 10>;
+ qcom,cpr-quotient-adjustment = <36 45 0>;
+ qcom,cpr-fuse-ro-sel = <72 72 72>;
+ qcom,cpr-fuse-init-voltage =
+ <138 54 6 0>,
+ <138 60 6 0>,
+ <139 2 6 0>;
+ qcom,cpr-init-voltage-ref = <900000 1000000 1225000>;
+ qcom,cpr-init-voltage-step = <10000>;
+ qcom,cpr-corner-map = <1 2 2 3 3 3 3 3>;
+ qcom,cpr-quot-adjust-scaling-factor-max = <2000>;
+ qcom,cpr-corner-frequency-map =
+ <1 199200000>,
+ <2 302400000>,
+ <3 384000000>,
+ <4 600000000>,
+ <5 691200000>,
+ <6 768000000>,
+ <7 844800000>,
+ <8 921600000>;
+ qcom,cpr-speed-bin-max-corners =
+ <0xFFFFFFFF 0 1 3 8>;
+ qcom,cpr-enable;
+ };
+
+ bt_vreg: bt_vreg {
+ compatible = "regulator-fixed";
+ regulator-name = "bt_vreg";
+ startup-delay-us = <4000>;
+ enable-active-high;
+ gpio = <&pm8994_gpios 9 0>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994-smp2p.dtsi b/arch/arm64/boot/dts/qcom/msm8994-smp2p.dtsi
new file mode 100644
index 00000000000..c40cdaf335e
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-smp2p.dtsi
@@ -0,0 +1,169 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+&soc {
+ qcom,smp2p-modem {
+ compatible = "qcom,smp2p";
+ reg = <0xf900d008 0x4>;
+ qcom,remote-pid = <1>;
+ qcom,irq-bitmask = <0x4000>;
+ interrupts = <0 27 1>;
+ };
+
+ qcom,smp2p-adsp {
+ compatible = "qcom,smp2p";
+ reg = <0xf900d008 0x4>;
+ qcom,remote-pid = <2>;
+ qcom,irq-bitmask = <0x400>;
+ interrupts = <0 158 1>;
+ };
+
+ smp2pgpio_smp2p_7_in: qcom,smp2pgpio-smp2p-7-in {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "smp2p";
+ qcom,remote-pid = <7>;
+ qcom,is-inbound;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_test_smp2p_7_in {
+ compatible = "qcom,smp2pgpio_test_smp2p_7_in";
+ gpios = <&smp2pgpio_smp2p_7_in 0 0>;
+ };
+
+ smp2pgpio_smp2p_7_out: qcom,smp2pgpio-smp2p-7-out {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "smp2p";
+ qcom,remote-pid = <7>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_test_smp2p_7_out {
+ compatible = "qcom,smp2pgpio_test_smp2p_7_out";
+ gpios = <&smp2pgpio_smp2p_7_out 0 0>;
+ };
+
+ smp2pgpio_smp2p_1_in: qcom,smp2pgpio-smp2p-1-in {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "smp2p";
+ qcom,remote-pid = <1>;
+ qcom,is-inbound;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_test_smp2p_1_in {
+ compatible = "qcom,smp2pgpio_test_smp2p_1_in";
+ gpios = <&smp2pgpio_smp2p_1_in 0 0>;
+ };
+
+ smp2pgpio_smp2p_1_out: qcom,smp2pgpio-smp2p-1-out {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "smp2p";
+ qcom,remote-pid = <1>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_test_smp2p_1_out {
+ compatible = "qcom,smp2pgpio_test_smp2p_1_out";
+ gpios = <&smp2pgpio_smp2p_1_out 0 0>;
+ };
+
+ smp2pgpio_smp2p_2_in: qcom,smp2pgpio-smp2p-2-in {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "smp2p";
+ qcom,remote-pid = <2>;
+ qcom,is-inbound;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_test_smp2p_2_in {
+ compatible = "qcom,smp2pgpio_test_smp2p_2_in";
+ gpios = <&smp2pgpio_smp2p_2_in 0 0>;
+ };
+
+ smp2pgpio_smp2p_2_out: qcom,smp2pgpio-smp2p-2-out {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "smp2p";
+ qcom,remote-pid = <2>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_test_smp2p_2_out {
+ compatible = "qcom,smp2pgpio_test_smp2p_2_out";
+ gpios = <&smp2pgpio_smp2p_2_out 0 0>;
+ };
+
+ /* ssr - inbound entry from lpass. */
+ smp2pgpio_ssr_smp2p_2_in: qcom,smp2pgpio-ssr-smp2p-2-in {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "slave-kernel";
+ qcom,remote-pid = <2>;
+ qcom,is-inbound;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ /* ssr - outbound entry to lpass */
+ smp2pgpio_ssr_smp2p_2_out: qcom,smp2pgpio-ssr-smp2p-2-out {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "master-kernel";
+ qcom,remote-pid = <2>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ /* ssr - inbound entry from mss. */
+ smp2pgpio_ssr_smp2p_1_in: qcom,smp2pgpio-ssr-smp2p-1-in {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "slave-kernel";
+ qcom,remote-pid = <1>;
+ qcom,is-inbound;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ /* ssr - outbound entry to mss. */
+ smp2pgpio_ssr_smp2p_1_out: qcom,smp2pgpio-ssr-smp2p-1-out {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "master-kernel";
+ qcom,remote-pid = <1>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8994.dtsi b/arch/arm64/boot/dts/qcom/msm8994.dtsi
new file mode 100644
index 00000000000..df8c641e409
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994.dtsi
@@ -0,0 +1,2790 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "skeleton.dtsi"
+#include <dt-bindings/clock/msm-clocks-8994.h>
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8994";
+ compatible = "qcom,msm8994";
+ qcom,msm-id = <207 0x0>;
+ interrupt-parent = <&intc>;
+
+ aliases {
+ sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
+ sdhc2 = &sdhc_2; /* SDC2 SD card slot */
+ i2c6 = &i2c_6; /* I2C6 NFC qup6 device */
+ i2c2 = &i2c_2;
+ i2c5 = &i2c_5;
+ spi0 = &spi_0;
+ };
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ cpu-map {
+ cluster0 {
+ core0 {
+ cpu = <&CPU0>;
+ };
+ core1 {
+ cpu = <&CPU1>;
+ };
+ core2 {
+ cpu = <&CPU2>;
+ };
+ core3 {
+ cpu = <&CPU3>;
+ };
+ };
+
+ cluster1 {
+ core0 {
+ cpu = <&CPU4>;
+ };
+ core1 {
+ cpu = <&CPU5>;
+ };
+ core2 {
+ cpu = <&CPU6>;
+ };
+ core3 {
+ cpu = <&CPU7>;
+ };
+ };
+ };
+
+ CPU0: cpu@0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a53";
+ reg = <0x0>;
+ enable-method = "qcom,8994-arm-cortex-acc";
+ qcom,acc = <&acc0>;
+ next-level-cache = <&L2_0>;
+ L2_0: l2-cache {
+ compatible = "arm,arch-cache";
+ cache-level = <2>;
+ power-domain = <&l2ccc_0>;
+ };
+ };
+
+ CPU1: cpu@1 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a53";
+ reg = <0x1>;
+ enable-method = "qcom,8994-arm-cortex-acc";
+ qcom,acc = <&acc1>;
+ next-level-cache = <&L2_0>;
+ };
+
+ CPU2: cpu@2 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a53";
+ reg = <0x2>;
+ enable-method = "qcom,8994-arm-cortex-acc";
+ qcom,acc = <&acc2>;
+ next-level-cache = <&L2_0>;
+ };
+
+ CPU3: cpu@3 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a53";
+ reg = <0x3>;
+ enable-method = "qcom,8994-arm-cortex-acc";
+ qcom,acc = <&acc3>;
+ next-level-cache = <&L2_0>;
+ };
+
+ CPU4: cpu@100 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a57";
+ reg = <0x100>;
+ enable-method = "qcom,8994-arm-cortex-acc";
+ qcom,acc = <&acc4>;
+ next-level-cache = <&L2_1>;
+ L2_1: l2-cache {
+ compatible = "arm,arch-cache";
+ cache-level = <2>;
+ power-domain = <&l2ccc_1>;
+ };
+ };
+
+ CPU5: cpu@101 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a57";
+ reg = <0x101>;
+ enable-method = "qcom,8994-arm-cortex-acc";
+ qcom,acc = <&acc5>;
+ next-level-cache = <&L2_1>;
+ };
+
+ CPU6: cpu@102 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a57";
+ reg = <0x102>;
+ enable-method = "qcom,8994-arm-cortex-acc";
+ qcom,acc = <&acc6>;
+ next-level-cache = <&L2_1>;
+ };
+
+ CPU7: cpu@103 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a57";
+ reg = <0x103>;
+ enable-method = "qcom,8994-arm-cortex-acc";
+ qcom,acc = <&acc7>;
+ next-level-cache = <&L2_1>;
+ };
+ };
+
+ soc: soc { };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ secure_mem: secure_region {
+ compatible = "shared-dma-pool";
+ reusable;
+ alignment = <0 0x400000>;
+ size = <0 0xfc00000>;
+ };
+
+ adsp_mem: adsp_region {
+ compatible = "shared-dma-pool";
+ reusable;
+ alignment = <0 0x400000>;
+ size = <0 0x4000000>;
+ };
+
+ qsecom_mem: qsecom_region {
+ compatible = "shared-dma-pool";
+ reusable;
+ alignment = <0 0x400000>;
+ size = <0 0x1400000>;
+ };
+
+ audio_mem: audio_region {
+ compatible = "shared-dma-pool";
+ reusable;
+ alignment = <0 0x400000>;
+ size = <0 0x800000>;
+ };
+
+ removed_regions: removed_regions@6300000 {
+ compatible = "removed-dma-pool";
+ no-map;
+ reg = <0 0x06300000 0 0xD00000>;
+ };
+
+ peripheral_mem: peripheral_region@c800000 {
+ compatible = "removed-dma-pool";
+ no-map;
+ reg = <0 0x0c800000 0 0x1b00000>;
+ };
+
+ modem_mem: modem_region@7000000 {
+ compatible = "removed-dma-pool";
+ no-map;
+ reg = <0 0x07000000 0 0x5800000>;
+ };
+ };
+};
+
+#include "msm-gdsc.dtsi"
+#include "msm8994-smp2p.dtsi"
+#include "msm8994-ipcrouter.dtsi"
+#include "msm8994-coresight.dtsi"
+#include "msm8994-mdss.dtsi"
+#include "msm8994-mdss-pll.dtsi"
+
+&soc {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0 0 0 0xffffffff>;
+ compatible = "simple-bus";
+
+ arm64-cpu-erp@f9100000 {
+ compatible = "arm,arm64-cpu-erp";
+ reg = <0xf9100000 0x1000>;
+ reg-names = "cci";
+ interrupts = <0 328 0>,
+ <0 329 0>,
+ <0 330 0>,
+ <0 331 0>,
+ <0 22 0>,
+ <1 14 0>;
+ interrupt-names = "pri-dbe-irq",
+ "sec-dbe-irq",
+ "pri-ext-irq",
+ "sec-ext-irq",
+ "cci-irq",
+ "sbe-irq";
+ };
+
+ acc0:clock-controller@f908b004 {
+ compatible = "qcom,arm-cortex-acc";
+ reg = <0xf9070000 0x1000>,
+ <0xf908b000 0x1000>,
+ <0xf900b000 0x1000>;
+ };
+
+ acc1:clock-controller@f909b004 {
+ compatible = "qcom,arm-cortex-acc";
+ reg = <0xf9071000 0x1000>,
+ <0xf909b000 0x1000>,
+ <0xf900b000 0x1000>;
+ };
+
+ acc2:clock-controller@f90ab004 {
+ compatible = "qcom,arm-cortex-acc";
+ reg = <0xf9072000 0x1000>,
+ <0xf90ab000 0x1000>,
+ <0xf900b000 0x1000>;
+ };
+
+ acc3:clock-controller@f90bb004 {
+ compatible = "qcom,arm-cortex-acc";
+ reg = <0xf9073000 0x1000>,
+ <0xf90bb000 0x1000>,
+ <0xf900b000 0x1000>;
+ };
+
+ acc4:clock-controller@f90cb004 {
+ compatible = "qcom,arm-cortex-acc";
+ reg = <0xf9074000 0x1000>,
+ <0xf90cb000 0x1000>,
+ <0xf900b000 0x1000>;
+ };
+
+ acc5:clock-controller@f90db004 {
+ compatible = "qcom,arm-cortex-acc";
+ reg = <0xf9075000 0x1000>,
+ <0xf90db000 0x1000>,
+ <0xf900b000 0x1000>;
+ };
+
+ acc6:clock-controller@f90eb004 {
+ compatible = "qcom,arm-cortex-acc";
+ reg = <0xf9076000 0x1000>,
+ <0xf90eb000 0x1000>,
+ <0xf900b000 0x1000>;
+ };
+
+ acc7:clock-controller@f90fb004 {
+ compatible = "qcom,arm-cortex-acc";
+ reg = <0xf9077000 0x1000>,
+ <0xf90fb000 0x1000>,
+ <0xf900b000 0x1000>;
+ };
+
+ l2ccc_0: clock-controller@f900d000 {
+ compatible = "qcom,8994-l2ccc";
+ reg = <0xf900d000 0x1000>,
+ <0xf911210c 0x4>;
+ qcom,vctl-node = <&cluster0_spm>;
+ };
+
+ l2ccc_1: clock-controller@f900f000 {
+ compatible = "qcom,8994-l2ccc";
+ reg = <0xf900f000 0x1000>,
+ <0xf911210c 0x4>;
+ qcom,vctl-node = <&cluster1_spm>;
+ qcom,vctl-val = <0xb8>;
+ };
+
+ intc: interrupt-controller@f9000000 {
+ compatible = "qcom,msm-qgic2";
+ interrupt-controller;
+ #interrupt-cells = <3>;
+ reg = <0xf9000000 0x1000>,
+ <0xf9002000 0x1000>;
+ };
+
+ timer {
+ compatible = "arm,armv8-timer";
+ interrupts = <1 2 0xff08>,
+ <1 3 0xff08>,
+ <1 4 0xff08>,
+ <1 1 0xff08>;
+ clock-frequency = <19200000>;
+ };
+
+ qcom,mpm2-sleep-counter@fc4a3000 {
+ compatible = "qcom,mpm2-sleep-counter";
+ reg = <0xfc4a3000 0x1000>;
+ clock-frequency = <32768>;
+ };
+
+ timer@f9020000 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ compatible = "arm,armv7-timer-mem";
+ reg = <0xf9020000 0x1000>;
+ clock-frequency = <19200000>;
+
+ frame@f9021000 {
+ frame-number = <0>;
+ interrupts = <0 9 0x4>,
+ <0 8 0x4>;
+ reg = <0xf9021000 0x1000>,
+ <0xf9022000 0x1000>;
+ };
+
+ frame@f9023000 {
+ frame-number = <1>;
+ interrupts = <0 10 0x4>;
+ reg = <0xf9023000 0x1000>;
+ status = "disabled";
+ };
+
+ frame@f9024000 {
+ frame-number = <2>;
+ interrupts = <0 11 0x4>;
+ reg = <0xf9024000 0x1000>;
+ status = "disabled";
+ };
+
+ frame@f9025000 {
+ frame-number = <3>;
+ interrupts = <0 12 0x4>;
+ reg = <0xf9025000 0x1000>;
+ status = "disabled";
+ };
+
+ frame@f9026000 {
+ frame-number = <4>;
+ interrupts = <0 13 0x4>;
+ reg = <0xf9026000 0x1000>;
+ status = "disabled";
+ };
+
+ frame@f9027000 {
+ frame-number = <5>;
+ interrupts = <0 14 0x4>;
+ reg = <0xf9027000 0x1000>;
+ status = "disabled";
+ };
+
+ frame@f9028000 {
+ frame-number = <6>;
+ interrupts = <0 15 0x4>;
+ reg = <0xf9028000 0x1000>;
+ status = "disabled";
+ };
+ };
+
+ restart@fc4ab000 {
+ compatible = "qcom,pshold";
+ reg = <0xfc4ab000 0x4>;
+ };
+
+ blsp1_uart3: serial@f991f000 {
+ compatible = "qcom,msm-lsuart-v14", "qcom,msm-uartdm-v1.4",
+ "qcom,msm-uartdm";
+ reg = <0xf991f000 0x1000>;
+ interrupts = <0 109 0>;
+ status = "disabled";
+ clock-names = "core", "iface";
+ clocks = <&clock_gcc clk_gcc_blsp1_uart3_apps_clk>,
+ <&clock_gcc clk_gcc_blsp1_ahb_clk>;
+ };
+
+ blsp1_uart2: serial@f991e000 {
+ compatible = "qcom,msm-lsuart-v14", "qcom,msm-uartdm-v1.4",
+ "qcom,msm-uartdm";
+ reg = <0xf991e000 0x1000>;
+ interrupts = <0 108 0>;
+ status = "disabled";
+ clock-names = "core", "iface";
+ clocks = <&clock_gcc clk_gcc_blsp1_uart2_apps_clk>,
+ <&clock_gcc clk_gcc_blsp1_ahb_clk>;
+ };
+
+ blsp2_uart2: uart@f995e000 { /* BLSP2 UART2 */
+ compatible = "qcom,msm-hsuart-v14";
+ reg = <0xf995e000 0x1000>,
+ <0xf9944000 0x19000>;
+ status = "disabled";
+ reg-names = "core_mem", "bam_mem";
+ interrupt-names = "core_irq", "bam_irq", "wakeup_irq";
+ #address-cells = <0>;
+ interrupt-parent = <&blsp2_uart2>;
+ interrupts = <0 1 2>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0xffffffff>;
+ interrupt-map = <0 &intc 0 114 0
+ 1 &intc 0 239 0
+ 2 &msm_gpio 46 0>;
+
+ qcom,inject-rx-on-wakeup = <1>;
+ qcom,rx-char-to-inject = <0xFD>;
+
+ qcom,bam-tx-ep-pipe-index = <2>;
+ qcom,bam-rx-ep-pipe-index = <3>;
+ qcom,master-id = <84>;
+ clock-names = "core_clk", "iface_clk";
+ clocks = <&clock_gcc clk_gcc_blsp2_uart2_apps_clk>,
+ <&clock_gcc clk_gcc_blsp2_ahb_clk>;
+ pinctrl-names = "sleep", "default";
+ pinctrl-0 = <&hsuart_sleep>;
+ pinctrl-1 = <&hsuart_active>;
+
+ qcom,msm-bus,name = "buart8";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <84 512 0 0>,
+ <84 512 500 800>;
+ };
+
+ qcom,sps@f9984000 {
+ compatible = "qcom,msm_sps";
+ reg-names = "bam_mem", "core_mem";
+ reg = <0xf9984000 0x15000>,
+ <0xf9999000 0xb000>;
+ interrupts = <0 94 0>;
+ qcom,pipe-attr-ee;
+ clocks = <&clock_rpm clk_pnoc_sps_clk>,
+ <&clock_gcc clk_gcc_bam_dma_ahb_clk>;
+ clock-names = "dfab_clk", "dma_bam_pclk";
+ };
+
+ pcie0: qcom,pcie@fc520000 {
+ compatible = "qcom,pci-msm";
+ cell-index = <0>;
+
+ reg = <0xfc520000 0x2000>,
+ <0xfc526000 0x1000>,
+ <0xff000000 0xf1d>,
+ <0xff000f20 0xa8>,
+ <0xff100000 0x100000>,
+ <0xff200000 0x100000>,
+ <0xff300000 0xd00000>;
+
+ reg-names = "parf", "phy", "dm_core", "elbi",
+ "conf", "io", "bars";
+
+ #address-cells = <0>;
+ interrupt-parent = <&pcie0>;
+ interrupts = <0 1 2 3 4 5 6 7 8 9 10 11 12>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0xffffffff>;
+ interrupt-map = <0 &intc 0 243 0
+ 1 &intc 0 244 0
+ 2 &intc 0 245 0
+ 3 &intc 0 247 0
+ 4 &intc 0 248 0
+ 5 &intc 0 249 0
+ 6 &intc 0 250 0
+ 7 &intc 0 251 0
+ 8 &intc 0 252 0
+ 9 &intc 0 253 0
+ 10 &intc 0 254 0
+ 11 &intc 0 255 0>;
+
+ interrupt-names = "int_msi", "int_a", "int_b", "int_c", "int_d",
+ "int_pls_pme", "int_pme_legacy", "int_pls_err",
+ "int_aer_legacy", "int_pls_link_up",
+ "int_pls_link_down", "int_bridge_flush_n";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pcie0_clkreq_default &pcie0_perst_default &pcie0_wake_default>;
+
+ perst-gpio = <&msm_gpio 53 0>;
+ wake-gpio = <&msm_gpio 55 0>;
+
+ gdsc-vdd-supply = <&gdsc_pcie_0>;
+ vreg-1.8-supply = <&pm8994_l12>;
+ vreg-0.9-supply = <&pm8994_l28>;
+
+ qcom,ep-latency = <10>;
+
+ qcom,msi-gicm-addr = <0xf9006040>;
+ qcom,msi-gicm-base = <0x180>;
+
+ qcom,msm-bus,name = "pcie0";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <45 512 0 0>,
+ <45 512 500 800>;
+
+ clocks = <&clock_gcc clk_gcc_pcie_0_pipe_clk>,
+ <&clock_rpm clk_ln_bb_clk>,
+ <&clock_gcc clk_gcc_pcie_0_aux_clk>,
+ <&clock_gcc clk_gcc_pcie_0_cfg_ahb_clk>,
+ <&clock_gcc clk_gcc_pcie_0_mstr_axi_clk>,
+ <&clock_gcc clk_gcc_pcie_0_slv_axi_clk>,
+ <&clock_gcc clk_pcie_0_phy_ldo>,
+ <&clock_gcc clk_gcc_pcie_phy_0_reset>;
+
+ clock-names = "pcie_0_pipe_clk", "pcie_0_ref_clk_src", "pcie_0_aux_clk",
+ "pcie_0_cfg_ahb_clk", "pcie_0_mstr_axi_clk",
+ "pcie_0_slv_axi_clk", "pcie_0_ldo", "pcie_0_phy_reset";
+
+ max-clock-frequency-hz = <125000000>, <0>, <1011000>, <0>, <0>, <0>, <0>, <0>;
+ };
+
+ pcie1: qcom,pcie@fc528000 {
+ compatible = "qcom,pci-msm";
+ cell-index = <1>;
+
+ reg = <0xfc528000 0x2000>,
+ <0xfc52e000 0x1000>,
+ <0xf8800000 0xf1d>,
+ <0xf8800F20 0xa8>,
+ <0xf8900000 0x100000>,
+ <0xf8a00000 0x100000>,
+ <0xf8b00000 0x500000>;
+
+ reg-names = "parf", "phy", "dm_core", "elbi",
+ "conf", "io", "bars";
+
+ #address-cells = <0>;
+ interrupt-parent = <&pcie1>;
+ interrupts = <0 1 2 3 4 5 6 7 8 9 10 11 12>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0xffffffff>;
+ interrupt-map = <0 &intc 0 271 0
+ 1 &intc 0 272 0
+ 2 &intc 0 273 0
+ 3 &intc 0 274 0
+ 4 &intc 0 275 0
+ 5 &intc 0 276 0
+ 6 &intc 0 277 0
+ 7 &intc 0 278 0
+ 8 &intc 0 279 0
+ 9 &intc 0 280 0
+ 10 &intc 0 281 0
+ 11 &intc 0 282 0>;
+
+ interrupt-names = "int_msi", "int_a", "int_b", "int_c", "int_d",
+ "int_pls_pme", "int_pme_legacy", "int_pls_err",
+ "int_aer_legacy", "int_pls_link_up",
+ "int_pls_link_down", "int_bridge_flush_n";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pcie1_clkreq_default &pcie1_perst_default &pcie1_wake_default>;
+
+ perst-gpio = <&msm_gpio 35 0>;
+ wake-gpio = <&msm_gpio 37 0>;
+
+ gdsc-vdd-supply = <&gdsc_pcie_1>;
+ vreg-1.8-supply = <&pm8994_l12>;
+ vreg-0.9-supply = <&pm8994_l28>;
+
+ qcom,l1-supported;
+ qcom,l1ss-supported;
+ qcom,aux-clk-sync;
+
+ qcom,ep-latency = <10>;
+
+ qcom,msi-gicm-addr = <0xf9007040>;
+ qcom,msi-gicm-base = <0x1a0>;
+
+ qcom,ep-wakeirq;
+
+ qcom,msm-bus,name = "pcie1";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <100 512 0 0>,
+ <100 512 500 800>;
+
+ clocks = <&clock_gcc clk_gcc_pcie_1_pipe_clk>,
+ <&clock_rpm clk_ln_bb_clk>,
+ <&clock_gcc clk_gcc_pcie_1_aux_clk>,
+ <&clock_gcc clk_gcc_pcie_1_cfg_ahb_clk>,
+ <&clock_gcc clk_gcc_pcie_1_mstr_axi_clk>,
+ <&clock_gcc clk_gcc_pcie_1_slv_axi_clk>,
+ <&clock_gcc clk_pcie_1_phy_ldo>,
+ <&clock_gcc clk_gcc_pcie_phy_1_reset>;
+
+ clock-names = "pcie_1_pipe_clk", "pcie_1_ref_clk_src", "pcie_1_aux_clk",
+ "pcie_1_cfg_ahb_clk", "pcie_1_mstr_axi_clk",
+ "pcie_1_slv_axi_clk", "pcie_1_ldo", "pcie_1_phy_reset";
+
+ max-clock-frequency-hz = <125000000>, <0>, <1011000>, <0>, <0>, <0>, <0>, <0>;
+ };
+
+ ipa_hw: qcom,ipa@fd4c0000 {
+ compatible = "qcom,ipa";
+ reg = <0xfd4c0000 0x29000>,
+ <0xfd4c4000 0x15820>;
+ reg-names = "ipa-base", "bam-base";
+ interrupts = <0 301 0>,
+ <0 300 0>;
+ interrupt-names = "ipa-irq", "bam-irq";
+ qcom,ipa-hw-ver = <3>; /* IPA core version = IPAv2.0 */
+ qcom,ipa-hw-mode = <0>; /* IPA hw type = Normal */
+ qcom,ee = <2>;
+ clock-names = "core_clk";
+ clocks = <&clock_rpm clk_ipa_clk>;
+ };
+
+ qcom,rmnet-ipa {
+ compatible = "qcom,rmnet-ipa";
+ qcom,rmnet-ipa-ssr;
+ qcom,ipa-loaduC;
+ };
+
+ qcom,ipc-spinlock@fd484000 {
+ compatible = "qcom,ipc-spinlock-sfpb";
+ reg = <0xfd484000 0x400>;
+ qcom,num-locks = <8>;
+ };
+
+ qcom,smem@6a00000 {
+ compatible = "qcom,smem";
+ reg = <0x6a00000 0x200000>,
+ <0xf900d008 0x4>,
+ <0xfc428000 0x4000>;
+ reg-names = "smem", "irq-reg-base", "aux-mem1";
+ qcom,mpu-enabled;
+
+ qcom,smd-modem {
+ compatible = "qcom,smd";
+ qcom,smd-edge = <0>;
+ qcom,smd-irq-offset = <0x0>;
+ qcom,smd-irq-bitmask = <0x1000>;
+ interrupts = <0 25 1>;
+ label = "modem";
+ };
+
+ qcom,smsm-modem {
+ compatible = "qcom,smsm";
+ qcom,smsm-edge = <0>;
+ qcom,smsm-irq-offset = <0x0>;
+ qcom,smsm-irq-bitmask = <0x2000>;
+ interrupts = <0 26 1>;
+ };
+
+ qcom,smd-adsp {
+ compatible = "qcom,smd";
+ qcom,smd-edge = <1>;
+ qcom,smd-irq-offset = <0x0>;
+ qcom,smd-irq-bitmask = <0x100>;
+ interrupts = <0 156 1>;
+ label = "adsp";
+ };
+
+ qcom,smsm-adsp {
+ compatible = "qcom,smsm";
+ qcom,smsm-edge = <1>;
+ qcom,smsm-irq-offset = <0x0>;
+ qcom,smsm-irq-bitmask = <0x200>;
+ interrupts = <0 157 1>;
+ };
+
+ qcom,smd-rpm {
+ compatible = "qcom,smd";
+ qcom,smd-edge = <15>;
+ qcom,smd-irq-offset = <0x0>;
+ qcom,smd-irq-bitmask = <0x1>;
+ interrupts = <0 168 1>;
+ label = "rpm";
+ qcom,irq-no-suspend;
+ qcom,not-loadable;
+ };
+ };
+
+ qcom,msm-imem@fe87f000 {
+ compatible = "qcom,msm-imem";
+ reg = <0xfe87f000 0x1000>; /* Address and size of IMEM */
+ ranges = <0x0 0xfe87f000 0x1000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ download_mode@0 {
+ compatible = "qcom,msm-imem-download_mode";
+ reg = <0x0 8>;
+ };
+
+ mem_dump_table@10 {
+ compatible = "qcom,msm-imem-mem_dump_table";
+ reg = <0x10 8>;
+ };
+
+ restart_reason@65c {
+ compatible = "qcom,msm-imem-restart_reason";
+ reg = <0x65c 4>;
+ };
+
+ boot_stats@6b0 {
+ compatible = "qcom,msm-imem-boot_stats";
+ reg = <0x6b0 32>;
+ };
+
+ pil@94c {
+ compatible = "qcom,msm-imem-pil";
+ reg = <0x94c 200>;
+ };
+ };
+
+ qcom,wdt@f9017000 {
+ compatible = "qcom,msm-watchdog";
+ reg = <0xf9017000 0x1000>;
+ reg-names = "wdt-base";
+ interrupts = <0 3 0>, <0 4 0>;
+ qcom,bark-time = <11000>;
+ qcom,pet-time = <10000>;
+ qcom,ipi-ping;
+ };
+
+ qcom,msm-rtb {
+ compatible = "qcom,msm-rtb";
+ qcom,rtb-size = <0x100000>;
+ };
+
+ jtag_fuse: jtagfuse@fc4be024 {
+ compatible = "qcom,jtag-fuse";
+ reg = <0xfc4be024 0x8>;
+ reg-names = "fuse-base";
+ };
+
+ jtag_mm0: jtagmm@fb840000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0xfb840000 0x1000>,
+ <0xfb810000 0x1000>;
+ reg-names = "etm-base","debug-base";
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ jtag_mm1: jtagmm@fb940000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0xfb940000 0x1000>,
+ <0xfb910000 0x1000>;
+ reg-names = "etm-base","debug-base";
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ jtag_mm2: jtagmm@fba40000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0xfba40000 0x1000>,
+ <0xfba10000 0x1000>;
+ reg-names = "etm-base","debug-base";
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ jtag_mm3: jtagmm@fbb40000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0xfbb40000 0x1000>,
+ <0xfbb10000 0x1000>;
+ reg-names = "etm-base","debug-base";
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ jtag_mm4: jtagmm@fbc40000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0xfbc40000 0x1000>,
+ <0xfbc10000 0x1000>;
+ reg-names = "etm-base","debug-base";
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ jtag_mm5: jtagmm@fbd40000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0xfbd40000 0x1000>,
+ <0xfbd10000 0x1000>;
+ reg-names = "etm-base","debug-base";
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ jtag_mm6: jtagmm@fbe40000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0xfbe40000 0x1000>,
+ <0xfbe10000 0x1000>;
+ reg-names = "etm-base","debug-base";
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ jtag_mm7: jtagmm@fbf40000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0xfbf40000 0x1000>,
+ <0xfbf10000 0x1000>;
+ reg-names = "etm-base","debug-base";
+
+ clocks = <&clock_rpm clk_qdss_clk>,
+ <&clock_rpm clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ rpm_bus: qcom,rpm-smd {
+ compatible = "qcom,rpm-smd";
+ rpm-channel-name = "rpm_requests";
+ rpm-channel-type = <15>; /* SMD_APPS_RPM */
+ };
+
+ qcom,msm-rng@f9bff000 {
+ compatible = "qcom,msm-rng";
+ reg = <0xf9bff000 0x200>;
+ qcom,msm-bus,name = "msm-rng-noc";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <88 618 0 0>,
+ <88 618 0 800>;
+ qcom,msm-rng-iface-clk;
+ clocks = <&clock_gcc clk_gcc_prng_ahb_clk>;
+ clock-names = "iface_clk";
+ };
+
+ qcom,rmtfs_sharedmem@00000000 {
+ compatible = "qcom,sharedmem-uio";
+ reg = <0x00000000 0x00180000>;
+ reg-names = "rmtfs";
+ qcom,client-id = <0x00000001>;
+ };
+
+ qcom,dsp_sharedmem@00000000 {
+ compatible = "qcom,sharedmem-uio";
+ reg = <0x00000000 0x00010000>;
+ reg-names = "rfsa_dsp";
+ qcom,client-id = <0x011013ec>;
+ };
+
+ qcom,mdm_sharedmem@00000000 {
+ compatible = "qcom,sharedmem-uio";
+ reg = <0x00000000 0x00010000>;
+ reg-names = "rfsa_mdm";
+ qcom,client-id = <0x011013ed>;
+ };
+
+ sdhc_1: sdhci@f9824900 {
+ compatible = "qcom,sdhci-msm";
+ reg = <0xf9824900 0x1a0>, <0xf9824000 0x800>;
+ reg-names = "hc_mem", "core_mem";
+
+ interrupts = <0 123 0>, <0 138 0>;
+ interrupt-names = "hc_irq", "pwr_irq";
+
+ qcom,bus-width = <8>;
+ qcom,cpu-dma-latency-us = <701>;
+
+ qcom,msm-bus,name = "sdhc1";
+ qcom,msm-bus,num-cases = <9>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps = <78 512 0 0>, /* No vote */
+ <78 512 1600 3200>, /* 400 KB/s*/
+ <78 512 80000 160000>, /* 20 MB/s */
+ <78 512 100000 200000>, /* 25 MB/s */
+ <78 512 200000 400000>, /* 50 MB/s */
+ <78 512 400000 800000>, /* 100 MB/s */
+ <78 512 400000 800000>, /* 200 MB/s */
+ <78 512 400000 800000>, /* 400 MB/s */
+ <78 512 2048000 4096000>; /* Max. bandwidth */
+ qcom,bus-bw-vectors-bps = <0 400000 20000000 25000000 50000000
+ 100000000 200000000 400000000 4294967295>;
+
+ clock-names = "iface_clk", "core_clk";
+ clocks = <&clock_gcc clk_gcc_sdcc1_ahb_clk>,
+ <&clock_gcc clk_gcc_sdcc1_apps_clk>;
+
+ status = "disabled";
+ };
+
+ sdhc_2: sdhci@f98a4900 {
+ compatible = "qcom,sdhci-msm";
+ reg = <0xf98a4900 0x11c>, <0xf98a4000 0x800>;
+ reg-names = "hc_mem", "core_mem";
+
+ interrupts = <0 125 0>, <0 221 0>;
+ interrupt-names = "hc_irq", "pwr_irq";
+
+ clock-names = "iface_clk", "core_clk";
+ clocks = <&clock_gcc clk_gcc_sdcc2_ahb_clk>,
+ <&clock_gcc clk_gcc_sdcc2_apps_clk>;
+
+ qcom,bus-width = <4>;
+ qcom,cpu-dma-latency-us = <701>;
+
+ qcom,msm-bus,name = "sdhc2";
+ qcom,msm-bus,num-cases = <8>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps = <81 512 0 0>, /* No vote */
+ <81 512 1600 3200>, /* 400 KB/s*/
+ <81 512 80000 160000>, /* 20 MB/s */
+ <81 512 100000 200000>, /* 25 MB/s */
+ <81 512 200000 400000>, /* 50 MB/s */
+ <81 512 400000 800000>, /* 100 MB/s */
+ <81 512 800000 800000>, /* 200 MB/s */
+ <81 512 2048000 4096000>; /* Max. bandwidth */
+ qcom,bus-bw-vectors-bps = <0 400000 20000000 25000000 50000000
+ 100000000 200000000 4294967295>;
+
+ status = "disabled";
+ };
+
+ ufsphy1: ufsphy@fc597000 {
+ compatible = "qcom,ufs-msm-phy-qmp-20nm";
+ reg = <0xfc597000 0xda8>;
+ #phy-cells = <0>;
+ vdda-phy-supply = <&pm8994_l28>;
+ vdda-pll-supply = <&pm8994_l12>;
+ vdda-phy-max-microamp = <45000>;
+ vdda-pll-max-microamp = <100>;
+ clock-names = "ref_clk_src",
+ "ref_clk_parent",
+ "ref_clk",
+ "tx_iface_clk",
+ "rx_iface_clk";
+ clocks = <&clock_rpm clk_ln_bb_clk>,
+ <&clock_gcc clk_pcie_1_phy_ldo >,
+ <&clock_gcc clk_ufs_phy_ldo>,
+ <&clock_gcc clk_gcc_ufs_tx_cfg_clk>,
+ <&clock_gcc clk_gcc_ufs_rx_cfg_clk>;
+ status = "disabled";
+ };
+
+ ufs1: ufshc@fc594000 {
+ compatible = "qcom,ufshc";
+ reg = <0xfc594000 0x2500>;
+ interrupts = <0 265 0>;
+ phys = <&ufsphy1>;
+ vdd-hba-supply = <&gdsc_ufs>;
+ vdd-hba-fixed-regulator;
+ vcc-supply = <&pm8994_l20>;
+ vccq-supply = <&pm8994_l31>;
+ vccq2-supply = <&pm8994_s4>;
+ vcc-max-microamp = <750000>;
+ vccq-max-microamp = <50000>;
+ vccq2-max-microamp = <750000>;
+
+ clock-names = "core_clk_src", "core_clk", "bus_clk", "iface_clk",
+ "ref_clk", "rx_lane0_sync_clk", "tx_lane0_sync_clk",
+ "rx_lane1_sync_clk", "tx_lane1_sync_clk";
+ clocks =
+ <&clock_gcc clk_ufs_axi_clk_src>,
+ <&clock_gcc clk_gcc_ufs_axi_clk>,
+ <&clock_gcc clk_gcc_sys_noc_ufs_axi_clk>,
+ <&clock_gcc clk_gcc_ufs_ahb_clk>,
+ <&clock_rpm clk_bb_clk1>,
+ <&clock_gcc clk_gcc_ufs_rx_symbol_0_clk>,
+ <&clock_gcc clk_gcc_ufs_tx_symbol_0_clk>,
+ <&clock_gcc clk_gcc_ufs_rx_symbol_1_clk>,
+ <&clock_gcc clk_gcc_ufs_tx_symbol_1_clk>;
+ freq-table-hz =
+ <100000000 171430000>, <0 0>, <0 0>, <0 0>, <0 0>, <0 0>, <0 0>, <0 0>, <0 0>;
+ qcom,msm-bus,name = "ufs1";
+ qcom,msm-bus,num-cases = <22>;
+ qcom,msm-bus,num-paths = <2>;
+ qcom,msm-bus,vectors-KBps =
+ <95 512 0 0>, <1 650 0 0>, /* No vote */
+ <95 512 922 0>, <1 650 1000 0>, /* PWM G1 */
+ <95 512 1844 0>, <1 650 1000 0>, /* PWM G2 */
+ <95 512 3688 0>, <1 650 1000 0>, /* PWM G3 */
+ <95 512 7376 0>, <1 650 1000 0>, /* PWM G4 */
+ <95 512 1844 0>, <1 650 1000 0>, /* PWM G1 L2 */
+ <95 512 3688 0>, <1 650 1000 0>, /* PWM G2 L2 */
+ <95 512 7376 0>, <1 650 1000 0>, /* PWM G3 L2 */
+ <95 512 14752 0>, <1 650 1000 0>, /* PWM G4 L2 */
+ <95 512 127796 0>, <1 650 1000 0>, /* HS G1 RA */
+ <95 512 255591 0>, <1 650 1000 0>, /* HS G2 RA */
+ <95 512 511181 0>, <1 650 1000 0>, /* HS G3 RA */
+ <95 512 255591 0>, <1 650 1000 0>, /* HS G1 RA L2 */
+ <95 512 511181 0>, <1 650 1000 0>, /* HS G2 RA L2 */
+ <95 512 1022362 0>, <1 650 1000 0>, /* HS G3 RA L2 */
+ <95 512 149422 0>, <1 650 1000 0>, /* HS G1 RB */
+ <95 512 298189 0>, <1 650 1000 0>, /* HS G2 RB */
+ <95 512 596378 0>, <1 650 1000 0>, /* HS G3 RB */
+ <95 512 298189 0>, <1 650 1000 0>, /* HS G1 RB L2 */
+ <95 512 596378 0>, <1 650 1000 0>, /* HS G2 RB L2 */
+ <95 512 1192756 0>, <1 650 1000 0>, /* HS G3 RB L2 */
+ <95 512 4096000 0>, <1 650 1000 0>; /* Max. bandwidth */
+ qcom,bus-vector-names = "MIN",
+ "PWM_G1_L1", "PWM_G2_L1", "PWM_G3_L1", "PWM_G4_L1",
+ "PWM_G1_L2", "PWM_G2_L2", "PWM_G3_L2", "PWM_G4_L2",
+ "HS_RA_G1_L1", "HS_RA_G2_L1", "HS_RA_G3_L1",
+ "HS_RA_G1_L2", "HS_RA_G2_L2", "HS_RA_G3_L2",
+ "HS_RB_G1_L1", "HS_RB_G2_L1", "HS_RB_G3_L1",
+ "HS_RB_G1_L2", "HS_RB_G2_L2", "HS_RB_G3_L2",
+ "MAX";
+ status = "disabled";
+ };
+
+ spi_0: spi@f9923000 { /* BLSP1 QUP1 */
+ compatible = "qcom,spi-qup-v2";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-names = "spi_physical", "spi_bam_physical";
+ reg = <0xf9923000 0x1000>,
+ <0xf9904000 0x19000>;
+ interrupt-names = "spi_irq", "spi_bam_irq";
+ interrupts = <0 95 0>, <0 238 0>;
+ spi-max-frequency = <19200000>;
+
+ qcom,infinite-mode = <0>;
+ qcom,use-bam;
+ qcom,ver-reg-exists;
+ qcom,bam-consumer-pipe-index = <12>;
+ qcom,bam-producer-pipe-index = <13>;
+ qcom,master-id = <86>;
+ qcom,use-pinctrl;
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&spi_0_active>;
+ pinctrl-1 = <&spi_0_sleep>;
+
+ clock-names = "iface_clk", "core_clk";
+
+ clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp1_qup1_spi_apps_clk>;
+ };
+
+ qcom,msm-ssc-sensors {
+ compatible = "qcom,msm-ssc-sensors";
+ };
+
+ wcd9xxx_intc: wcd9xxx-irq {
+ compatible = "qcom,wcd9xxx-irq";
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ interrupt-parent = <&msm_gpio>;
+ interrupts = <72 0>;
+ interrupt-names = "cdc-int";
+ };
+
+ tspp: msm_tspp@f99d8000 {
+ compatible = "qcom,msm_tspp";
+ reg = <0xf99d8000 0x1000>, /* MSM_TSIF0_PHYS */
+ <0xf99d9000 0x1000>, /* MSM_TSIF1_PHYS */
+ <0xf99da000 0x1000>, /* MSM_TSPP_PHYS */
+ <0xf99c4000 0x11000>; /* MSM_TSPP_BAM_PHYS */
+ reg-names = "MSM_TSIF0_PHYS",
+ "MSM_TSIF1_PHYS",
+ "MSM_TSPP_PHYS",
+ "MSM_TSPP_BAM_PHYS";
+ interrupts = <0 121 0>, /* TSIF_TSPP_IRQ */
+ <0 119 0>, /* TSIF0_IRQ */
+ <0 120 0>, /* TSIF1_IRQ */
+ <0 122 0>; /* TSIF_BAM_IRQ */
+ interrupt-names = "TSIF_TSPP_IRQ",
+ "TSIF0_IRQ",
+ "TSIF1_IRQ",
+ "TSIF_BAM_IRQ";
+
+ clock-names = "iface_clk", "ref_clk";
+ clocks = <&clock_gcc clk_gcc_tsif_ahb_clk>,
+ <&clock_gcc clk_gcc_tsif_ref_clk>;
+
+ qcom,msm-bus,name = "tsif";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <82 512 0 0>, /* No vote */
+ <82 512 12288 24576>; /* Max. bandwidth, 2xTSIF, each max of 96Mbps */
+
+ pinctrl-names = "disabled",
+ "tsif0-mode1", "tsif0-mode2",
+ "tsif1-mode1", "tsif1-mode2",
+ "dual-tsif-mode1", "dual-tsif-mode2";
+
+ pinctrl-0 = <>; /* disabled */
+ pinctrl-1 = <&tsif0_signals_active>; /* tsif0-mode1 */
+ pinctrl-2 = <&tsif0_signals_active
+ &tsif0_sync_active>; /* tsif0-mode2 */
+ pinctrl-3 = <&tsif1_signals_active>; /* tsif1-mode1 */
+ pinctrl-4 = <&tsif1_signals_active
+ &tsif1_sync_active>; /* tsif1-mode2 */
+ pinctrl-5 = <&tsif0_signals_active
+ &tsif1_signals_active>; /* dual-tsif-mode1 */
+ pinctrl-6 = <&tsif0_signals_active
+ &tsif0_sync_active
+ &tsif1_signals_active
+ &tsif1_sync_active>; /* dual-tsif-mode2 */
+ };
+
+ slim_msm: slim@fe12f000 {
+ cell-index = <1>;
+ compatible = "qcom,slim-ngd";
+ reg = <0xfe12f000 0x2C000>,
+ <0xfe104000 0x20000>;
+ reg-names = "slimbus_physical", "slimbus_bam_physical";
+ interrupts = <0 163 0>, <0 164 0>;
+ interrupt-names = "slimbus_irq", "slimbus_bam_irq";
+ qcom,apps-ch-pipes = <0x60000000>;
+ qcom,ea-pc = <0x130>;
+
+ tomtom_codec {
+ compatible = "qcom,tomtom-slim-pgd";
+ elemental-addr = [00 01 30 01 17 02];
+
+ interrupt-parent = <&wcd9xxx_intc>;
+ interrupts = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+ 17 18 19 20 21 22 23 24 25 26 27 28 29
+ 30 31>;
+
+ qcom,cdc-reset-gpio = <&msm_gpio 68 0>;
+
+ cdc-vdd-buck-supply = <&pm8994_s5>;
+ qcom,cdc-vdd-buck-voltage = <2150000 2150000>;
+ qcom,cdc-vdd-buck-current = <650000>;
+
+ cdc-vdd-tx-h-supply = <&pm8994_s4>;
+ qcom,cdc-vdd-tx-h-voltage = <1800000 1800000>;
+ qcom,cdc-vdd-tx-h-current = <25000>;
+
+ cdc-vdd-rx-h-supply = <&pm8994_s4>;
+ qcom,cdc-vdd-rx-h-voltage = <1800000 1800000>;
+ qcom,cdc-vdd-rx-h-current = <25000>;
+
+ cdc-vddpx-1-supply = <&pm8994_s4>;
+ qcom,cdc-vddpx-1-voltage = <1800000 1800000>;
+ qcom,cdc-vddpx-1-current = <10000>;
+
+ cdc-vdd-a-1p2v-supply = <&pm8994_l11>;
+ qcom,cdc-vdd-a-1p2v-voltage = <1200000 1200000>;
+ qcom,cdc-vdd-a-1p2v-current = <2000>;
+
+ cdc-vddcx-1-supply = <&pm8994_l11>;
+ qcom,cdc-vddcx-1-voltage = <1200000 1200000>;
+ qcom,cdc-vddcx-1-current = <33000>;
+
+ cdc-vddcx-2-supply = <&pm8994_l11>;
+ qcom,cdc-vddcx-2-voltage = <1200000 1200000>;
+ qcom,cdc-vddcx-2-current = <33000>;
+
+ qcom,cdc-static-supplies = "cdc-vdd-buck",
+ "cdc-vdd-tx-h",
+ "cdc-vdd-rx-h",
+ "cdc-vddpx-1",
+ "cdc-vdd-a-1p2v",
+ "cdc-vddcx-1",
+ "cdc-vddcx-2";
+
+ qcom,cdc-micbias-ldoh-v = <0x3>;
+ qcom,cdc-micbias-cfilt1-mv = <1800>;
+ qcom,cdc-micbias-cfilt2-mv = <2700>;
+ qcom,cdc-micbias-cfilt3-mv = <1800>;
+ qcom,cdc-micbias1-cfilt-sel = <0x0>;
+ qcom,cdc-micbias2-cfilt-sel = <0x1>;
+ qcom,cdc-micbias3-cfilt-sel = <0x2>;
+ qcom,cdc-micbias4-cfilt-sel = <0x2>;
+ qcom,cdc-mclk-clk-rate = <9600000>;
+ qcom,cdc-slim-ifd = "tomtom-slim-ifd";
+ qcom,cdc-slim-ifd-elemental-addr = [00 00 30 01 17 02];
+ qcom,cdc-dmic-sample-rate = <4800000>;
+ qcom,cdc-variant = "WCD9330";
+ };
+ };
+
+ spmi_bus: qcom,spmi@fc4c0000 {
+ compatible = "qcom,spmi-pmic-arb";
+ reg-names = "core", "intr", "cnfg";
+ reg = <0xfc4cf000 0x1000>,
+ <0xfc4cb000 0x1000>,
+ <0xfc4ca000 0x1000>;
+ /* 190,ee0_krait_hlos_spmi_periph_irq */
+ /* 187,channel_0_krait_hlos_trans_done_irq */
+ interrupts = <0 190 0>, <0 187 0>;
+ qcom,pmic-arb-channel = <0>;
+ qcom,pmic-arb-ee = <0>;
+ #interrupt-cells = <3>;
+ interrupt-controller;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ cell-index = <0>;
+ };
+
+ usb3: ssusb@f9200000 {
+ compatible = "qcom,dwc-usb3-msm";
+ status = "disabled";
+ reg = <0xf9200000 0xfc000>,
+ <0xfd4ab000 0x4>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ interrupt-parent = <&usb3>;
+ interrupts = <0 1>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0x0 0xffffffff>;
+ interrupt-map = <0x0 0 &intc 0 133 0
+ 0x0 1 &intc 0 180 0
+ 0x0 1 &spmi_bus 0x0 0x0 0x9 0x0>;
+ interrupt-names = "hs_phy_irq", "pwr_event_irq", "pmic_id_irq";
+
+ USB3_GDSC-supply = <&gdsc_usb30>;
+ vbus_dwc3-supply = <&pmi8994_otg_supply>;
+ qcom,dwc-usb3-msm-tx-fifo-size = <29696>;
+ qcom,dwc-usb3-msm-qdss-tx-fifo-size = <8192>;
+ qcom,otg-capability;
+ qcom,usb-dbm = <&dbm_1p5>;
+
+ qcom,msm-bus,name = "usb3";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <61 512 0 0>,
+ <61 512 240000 960000>;
+
+ qcom,power-collapse-on-cable-disconnect;
+ qcom,por-after-power-collapse;
+
+ clocks = <&clock_gcc clk_gcc_usb30_master_clk>,
+ <&clock_gcc clk_gcc_sys_noc_usb3_axi_clk>,
+ <&clock_gcc clk_gcc_usb30_mock_utmi_clk>,
+ <&clock_gcc clk_gcc_usb30_sleep_clk>,
+ <&clock_rpm clk_ln_bb_clk>,
+ <&clock_rpm clk_cxo_dwc3_clk>;
+ clock-names = "core_clk", "iface_clk", "utmi_clk", "sleep_clk",
+ "ref_clk", "xo";
+
+ dwc3@f9200000 {
+ compatible = "synopsys,dwc3";
+ reg = <0xf9200000 0xfc000>;
+ interrupt-parent = <&intc>;
+ interrupts = <0 131 0>, <0 179 0>;
+ interrupt-names = "irq", "otg_irq";
+ tx-fifo-resize;
+ usb-phy = <&hsphy0>, <&ssphy0>;
+ snps,core-reset-after-phy-init;
+ };
+ };
+
+ hsphy0: hsphy@f92f8800 {
+ compatible = "qcom,usb-hsphy";
+ status = "disabled";
+ reg = <0xf92f8800 0x3ff>;
+ qcom,hsphy-init = <0x00D191A4>;
+ vdd-supply = <&pm8994_s2_corner>;
+ vdda18-supply = <&pm8994_l6>;
+ vdda33-supply = <&pm8994_l24>;
+ qcom,vdd-voltage-level = <1 5 7>;
+ qcom,ext-vbus-id;
+ qcom,vbus-valid-override;
+ qcom,set-pllbtune;
+ qcom,sleep-clk-reset;
+ clocks = <&clock_gcc clk_gcc_usb2_hs_phy_sleep_clk>;
+ clock-names = "phy_sleep_clk";
+ };
+
+ ssphy0: ssphy@f9b38000 {
+ compatible = "qcom,usb-ssphy-qmp";
+ status = "disabled";
+ reg = <0xf9b38000 0x800>,
+ <0xf9b3e000 0x3ff>;
+ reg-names = "qmp_phy_base",
+ "qmp_ahb2phy_base";
+ vdd-supply = <&pm8994_l28>;
+ vdda18-supply = <&pm8994_l6>;
+ qcom,vdd-voltage-level = <0 1000000 1000000>;
+ qcom,vbus-valid-override;
+ qcom,no-pipe-clk-switch;
+
+ clocks = <&clock_gcc clk_gcc_usb3_phy_aux_clk>,
+ <&clock_gcc clk_gcc_usb3_phy_pipe_clk>,
+ <&clock_gcc clk_gcc_usb_phy_cfg_ahb2phy_clk>,
+ <&clock_gcc clk_gcc_usb3_phy_reset>,
+ <&clock_gcc clk_usb_ss_phy_ldo>;
+ clock-names = "aux_clk", "pipe_clk", "cfg_ahb_clk", "phy_reset",
+ "ldo_clk";
+ };
+
+ dbm_1p5: dbm@f92f8000 {
+ compatible = "qcom,usb-dbm-1p5";
+ reg = <0xf92f8000 0x1000>;
+ qcom,reset-ep-after-lpm-resume;
+ };
+
+ qcom,usbbam@f9304000 {
+ compatible = "qcom,usb-bam-msm";
+ reg = <0xf9304000 0x9000>,
+ <0xf92f880c 0x4>;
+ reg-names = "ssusb", "qscratch_ram1_reg";
+ interrupts = <0 132 0>;
+ interrupt-names = "ssusb";
+ clocks = <&clock_gcc clk_gcc_usb30_master_clk>,
+ <&clock_gcc clk_gcc_sys_noc_usb3_axi_clk>;
+ clock-names = "mem_clk", "mem_iface_clk";
+
+ qcom,usb-bam-fifo-baseaddr = <0xf9200000>;
+ qcom,usb-bam-num-pipes = <16>;
+ qcom,ignore-core-reset-ack;
+ qcom,disable-clk-gating;
+ qcom,usb-bam-override-threshold = <0x4001>;
+ qcom,usb-bam-max-mbps-highspeed = <400>;
+ qcom,usb-bam-max-mbps-superspeed = <3600>;
+
+ qcom,pipe0 {
+ label = "ssusb-ipa-out-0";
+ qcom,usb-bam-mem-type = <2>;
+ qcom,bam-type = <0>;
+ qcom,dir = <0>;
+ qcom,pipe-num = <0>;
+ qcom,peer-bam = <2>;
+ qcom,src-bam-physical-address = <0xf9304000>;
+ qcom,src-bam-pipe-index = <1>;
+ qcom,data-fifo-size = <0x8000>;
+ qcom,descriptor-fifo-size = <0x2000>;
+ qcom,reset-bam-on-connect;
+ qcom,pipe-connection-type = <1>;
+ };
+ qcom,pipe1 {
+ label = "ssusb-ipa-in-0";
+ qcom,usb-bam-mem-type = <2>;
+ qcom,bam-type = <0>;
+ qcom,dir = <1>;
+ qcom,pipe-num = <0>;
+ qcom,peer-bam = <2>;
+ qcom,dst-bam-physical-address = <0xf9304000>;
+ qcom,dst-bam-pipe-index = <0>;
+ qcom,data-fifo-size = <0x8000>;
+ qcom,descriptor-fifo-size = <0x2000>;
+ qcom,reset-bam-on-connect;
+ };
+ qcom,pipe2 {
+ label = "ssusb-qdss-in-0";
+ qcom,usb-bam-mem-type = <1>;
+ qcom,bam-type = <0>;
+ qcom,dir = <1>;
+ qcom,pipe-num = <0>;
+ qcom,peer-bam = <1>;
+ qcom,src-bam-physical-address = <0xfc37C000>;
+ qcom,src-bam-pipe-index = <0>;
+ qcom,dst-bam-physical-address = <0xf9304000>;
+ qcom,dst-bam-pipe-index = <2>;
+ qcom,data-fifo-offset = <0xf0000>;
+ qcom,data-fifo-size = <0x1800>;
+ qcom,descriptor-fifo-offset = <0xf4000>;
+ qcom,descriptor-fifo-size = <0x1400>;
+ qcom,reset-bam-on-connect;
+ };
+ };
+
+ usb_otg: usb@f9a55000 {
+ compatible = "qcom,hsusb-otg";
+ status = "disabled";
+
+ reg = <0xf9a55000 0x400>;
+ interrupts = <0 134 0 0 140 0>;
+ interrupt-names = "core_irq", "async_irq";
+
+ HSUSB_VDDCX-supply = <&pm8994_s2_corner>;
+ HSUSB_1p8-supply = <&pm8994_l6>;
+ HSUSB_3p3-supply = <&pm8994_l24>;
+ qcom,vdd-voltage-level = <1 5 7>;
+
+ clocks = <&clock_gcc clk_gcc_usb_hs_system_clk>,
+ <&clock_gcc clk_gcc_usb_hs_ahb_clk>,
+ <&clock_gcc clk_gcc_usb2_hs_phy_sleep_clk>,
+ <&clock_rpm clk_cxo_otg_clk>;
+ clock-names = "core_clk", "iface_clk", "sleep_clk", "xo";
+
+ qcom,hsusb-otg-phy-type = <2>;
+ qcom,hsusb-otg-phy-init-seq = <0x63 0x81 0xffffffff>;
+ qcom,hsusb-otg-mode = <1>;
+ qcom,hsusb-otg-otg-control = <1>;
+ };
+
+ usb_ehci: ehci@f9a55000 {
+ compatible = "qcom,ehci-host";
+ status = "disabled";
+ reg = <0xf9a55000 0x400>;
+ interrupts = <0 134 0>, <0 140 0>;
+ interrupt-names = "core_irq", "async_irq";
+ hsusb_vdd_dig-supply = <&pm8994_s2_corner>;
+ HSUSB_1p8-supply = <&pm8994_l6>;
+ HSUSB_3p3-supply = <&pm8994_l24>;
+ qcom,vdd-voltage-level = <1 2 3 5 7>;
+ qcom,usb2-power-budget = <500>;
+ usb-phy = <&qusb_phy>;
+
+ clocks = <&clock_gcc clk_gcc_usb_hs_system_clk>,
+ <&clock_gcc clk_gcc_usb_hs_ahb_clk>,
+ <&clock_rpm clk_cxo_otg_clk>;
+ clock-names = "core_clk", "iface_clk", "xo";
+ };
+
+ qusb_phy: qusb@f9b39000 {
+ compatible = "qcom,qusb2phy";
+ status = "disabled";
+ reg = <0xf9b39000 0x17f>;
+ vdd-supply = <&pm8994_s2_corner>;
+ vdda18-supply = <&pm8994_l6>;
+ vdda33-supply = <&pm8994_l24>;
+ qcom,vdd-voltage-level = <1 5 7>;
+
+ clocks = <&clock_rpm clk_ln_bb_clk>,
+ <&clock_gcc clk_gcc_usb_phy_cfg_ahb2phy_clk>,
+ <&clock_gcc clk_gcc_qusb2_phy_reset>;
+ clock-names = "ref_clk", "cfg_ahb_clk", "phy_reset";
+ };
+
+ android_usb@fe87f0c8 {
+ compatible = "qcom,android-usb";
+ reg = <0xfe87f0c8 0xc8>;
+ qcom,pm-qos-latency = <2 1001 30001>;
+ };
+
+ qcom,venus@fdce0000 {
+ compatible = "qcom,pil-tz-generic";
+ reg = <0xfdce0000 0x4000>;
+
+ vdd-supply = <&gdsc_venus>;
+ qcom,proxy-reg-names = "vdd";
+ clock-names = "core_clk", "iface_clk",
+ "bus_clk", "mem_clk", "scm_ce1_clk";
+ qcom,proxy-clock-names = "core_clk", "iface_clk",
+ "bus_clk", "mem_clk", "scm_ce1_clk";
+ qcom,scm_ce1_clk-freq = <85710000>;
+
+ clocks = <&clock_mmss clk_venus0_vcodec0_clk>,
+ <&clock_mmss clk_venus0_ahb_clk>,
+ <&clock_mmss clk_venus0_axi_clk>,
+ <&clock_mmss clk_venus0_ocmemnoc_clk>,
+ <&clock_rpm clk_scm_ce1_clk>;
+
+ qcom,msm-bus,name = "pil-venus";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <63 512 0 0>,
+ <63 512 0 304000>;
+ qcom,pas-id = <9>;
+ qcom,proxy-timeout-ms = <5000>;
+ qcom,firmware-name = "venus";
+ contiguous-region = <&peripheral_mem>;
+ };
+
+ qcom,mss@fc880000 {
+ compatible = "qcom,pil-q6v55-mss";
+ reg = <0xfc880000 0x100>,
+ <0xfd485000 0x400>,
+ <0xfc820000 0x020>,
+ <0xfc401680 0x004>;
+ reg-names = "qdsp6_base", "halt_base", "rmb_base",
+ "restart_reg";
+
+ clocks = <&clock_rpm clk_cxo_clk_src>,
+ <&clock_gcc clk_gcc_mss_cfg_ahb_clk>,
+ <&clock_gcc clk_gcc_mss_q6_bimc_axi_clk>,
+ <&clock_gcc clk_gcc_boot_rom_ahb_clk>,
+ <&clock_gcc clk_gpll0_out_msscc>;
+ clock-names = "xo", "iface_clk", "bus_clk", "mem_clk",
+ "gpll0_mss_clk";
+ qcom,proxy-clock-names = "xo";
+ qcom,active-clock-names = "iface_clk", "bus_clk", "mem_clk",
+ "gpll0_mss_clk";
+
+ interrupts = <0 24 1>;
+ vdd_mss-supply = <&pm8994_s7>;
+ vdd_cx-supply = <&pm8994_s1_corner>;
+ vdd_mx-supply = <&pm8994_s2_corner>;
+ vdd_mx-uV = <7>;
+ vdd_pll-supply = <&pm8994_l12>;
+ qcom,vdd_pll = <1800000>;
+ qcom,firmware-name = "modem";
+ qcom,pil-self-auth;
+ qcom,mba-image-is-not-elf;
+ qcom,sysmon-id = <0>;
+
+ /* GPIO inputs from mss */
+ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_1_in 0 0>;
+ qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_1_in 1 0>;
+ qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_1_in 2 0>;
+ qcom,gpio-stop-ack = <&smp2pgpio_ssr_smp2p_1_in 3 0>;
+
+ /* GPIO output to mss */
+ qcom,gpio-force-stop = <&smp2pgpio_ssr_smp2p_1_out 0 0>;
+
+ contiguous-region = <&modem_mem>;
+ };
+
+ qcom,lpass@fe200000 {
+ compatible = "qcom,pil-tz-generic";
+ reg = <0xfe200000 0x00100>;
+ interrupts = <0 162 1>;
+
+ vdd_cx-supply = <&pm8994_s1_corner>;
+ qcom,proxy-reg-names = "vdd_cx";
+ qcom,vdd_cx-uV-uA = <7 100000>;
+
+ clocks = <&clock_gcc clk_gcc_lpass_q6_axi_clk>,
+ <&clock_rpm clk_cxo_pil_lpass_clk>,
+ <&clock_rpm clk_scm_ce1_clk>;
+ clock-names = "bus_clk", "xo", "scm_ce1_clk";
+ qcom,active-clock-names = "bus_clk";
+ qcom,proxy-clock-names = "xo", "scm_ce1_clk";
+ qcom,scm_ce1_clk-freq = <85710000>;
+
+ qcom,pas-id = <1>;
+ qcom,proxy-timeout-ms = <10000>;
+ qcom,smem-id = <423>;
+ qcom,sysmon-id = <1>;
+ qcom,firmware-name = "adsp";
+
+ /* GPIO inputs from lpass */
+ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_2_in 0 0>;
+ qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_2_in 2 0>;
+ qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_2_in 1 0>;
+ qcom,gpio-stop-ack = <&smp2pgpio_ssr_smp2p_2_in 3 0>;
+
+ /* GPIO output to lpass */
+ qcom,gpio-force-stop = <&smp2pgpio_ssr_smp2p_2_out 0 0>;
+
+ contiguous-region = <&peripheral_mem>;
+ };
+
+ clock_rpm: qcom,rpmcc@fc401880 {
+ compatible = "qcom,rpmcc-8994";
+ reg = <0xfc401880 0x4>;
+ reg-names = "cc_base";
+ #clock-cells = <1>;
+ };
+
+ clock_gcc: qcom,gcc@fc400000 {
+ compatible = "qcom,gcc-8994";
+ reg = <0xfc400000 0x2000>;
+ reg-names = "cc_base";
+ vdd_dig-supply = <&pm8994_s1_corner>;
+ clock-names = "xo", "xo_a_clk";
+ clocks = <&clock_rpm clk_cxo_clk_src>,
+ <&clock_rpm clk_cxo_clk_src_ao>;
+ #clock-cells = <1>;
+ };
+
+ clock_mmss: qcom,mmsscc@fd8c0000 {
+ compatible = "qcom,mmsscc-8994";
+ reg = <0xfd8c0000 0x5200>;
+ reg-names = "cc_base";
+ vdd_dig-supply = <&pm8994_s1_corner>;
+ mmpll4_dig-supply = <&pm8994_s1_corner>;
+ mmpll4_analog-supply = <&pm8994_l12>;
+ clock-names = "xo", "gpll0", "mmssnoc_ahb",
+ "oxili_gfx3d_clk", "pclk0_src", "pclk1_src",
+ "byte0_src", "byte1_src", "extpclk_src";
+ clocks = <&clock_rpm clk_cxo_clk_src>,
+ <&clock_gcc clk_gpll0_out_mmsscc>,
+ <&clock_rpm clk_mmssnoc_ahb_clk>,
+ <&clock_rpm clk_oxili_gfx3d_clk_src>,
+ <&mdss_dsi0_pll clk_pixel_clk_src>,
+ <&mdss_dsi0_pll clk_pixel_clk_src>,
+ <&mdss_dsi0_pll clk_byte_clk_src>,
+ <&mdss_dsi0_pll clk_byte_clk_src>,
+ <&mdss_hdmi_pll clk_hdmi_20nm_vco_clk>;
+ #clock-cells = <1>;
+ };
+
+ clock_debug: qcom,cc-debug@fc401880 {
+ compatible = "qcom,cc-debug-8994";
+ reg = <0xfc401880 0x4>;
+ reg-names = "cc_base";
+ clock-names = "debug_mmss_clk", "debug_rpm_clk",
+ "debug_cpu_clk";
+ clocks = <&clock_mmss clk_mmss_debug_mux>,
+ <&clock_rpm clk_rpm_debug_mux>,
+ <&clock_cpu clk_cpu_debug_mux>;
+ #clock-cells = <1>;
+ };
+
+ cci_cache: qcom,cci {
+ compatible = "devfreq-simple-dev";
+ clock-names = "devfreq_clk";
+ clocks = <&clock_cpu clk_cci_clk>;
+ governor = "cpufreq";
+ freq-tbl-khz =
+ < 150000 >,
+ < 200000 >,
+ < 249600 >,
+ < 300000 >,
+ < 384000 >,
+ < 499200 >,
+ < 600000 >;
+ };
+
+ cpubw: qcom,cpubw {
+ compatible = "qcom,devbw";
+ governor = "cpufreq";
+ qcom,src-dst-ports = <1 512>;
+ qcom,active-only;
+ qcom,bw-tbl =
+ < 762 /* 100 MHz */ >,
+ < 1144 /* 150 MHz */ >,
+ < 1525 /* 200 MHz */ >,
+ < 2288 /* 300 MHz */ >,
+ < 3562 /* 467 MHz */ >,
+ < 4066 /* 533 MHz */ >,
+ < 5126 /* 672 MHz */ >,
+ < 6072 /* 796 MHz */ >;
+ };
+
+ qcom,cpu-bwmon {
+ compatible = "qcom,bimc-bwmon";
+ reg = <0xfc388000 0x300>, <0xfc381000 0x200>;
+ reg-names = "base", "global_base";
+ interrupts = <0 183 1>;
+ qcom,mport = <0>;
+ qcom,target-dev = <&cpubw>;
+ };
+
+ devfreq-cpufreq {
+ cpubw-cpufreq {
+ target-dev = <&cpubw>;
+ cpu-to-dev-map-0 =
+ < 199200 762 >,
+ < 302400 762 >,
+ < 384000 1144 >,
+ < 600000 1525 >,
+ < 691200 2288 >,
+ < 768000 3562 >,
+ < 844800 4066 >,
+ < 921600 5126 >,
+ < 940800 6072 >;
+ cpu-to-dev-map-4 =
+ < 199200 762 >,
+ < 302400 1144 >,
+ < 384000 1525 >,
+ < 600000 2288 >,
+ < 691200 3562 >,
+ < 768000 4066 >,
+ < 844800 5126 >,
+ < 921600 6072 >;
+ };
+ cci-cpufreq {
+ target-dev = <&cci_cache>;
+ cpu-to-dev-map-0 =
+ < 199200 150000 >,
+ < 302400 200000 >,
+ < 384000 249600 >,
+ < 600000 300000 >,
+ < 691200 384000 >,
+ < 768000 384000 >,
+ < 844800 499200 >,
+ < 921600 600000 >,
+ < 940800 600000 >;
+ cpu-to-dev-map-4 =
+ < 199200 150000 >,
+ < 302400 200000 >,
+ < 384000 249600 >,
+ < 600000 300000 >,
+ < 691200 384000 >,
+ < 768000 499200 >,
+ < 844800 600000 >,
+ < 921600 600000 >;
+ };
+ };
+
+ msm_cpufreq: qcom,msm-cpufreq {
+ compatible = "qcom,msm-cpufreq";
+ clock-names = "l2_clk", "cpu0_clk", "cpu1_clk", "cpu2_clk",
+ "cpu3_clk", "cpu4_clk", "cpu5_clk",
+ "cpu6_clk", "cpu7_clk";
+ clocks = <&clock_cpu clk_cci_clk>,
+ <&clock_cpu clk_a53_clk>,
+ <&clock_cpu clk_a53_clk>,
+ <&clock_cpu clk_a53_clk>,
+ <&clock_cpu clk_a53_clk>,
+ <&clock_cpu clk_a57_clk>,
+ <&clock_cpu clk_a57_clk>,
+ <&clock_cpu clk_a57_clk>,
+ <&clock_cpu clk_a57_clk>;
+
+ qcom,governor-per-policy;
+
+ qcom,cpufreq-table-0 =
+ < 199200 >,
+ < 302400 >,
+ < 384000 >,
+ < 600000 >,
+ < 691200 >,
+ < 768000 >,
+ < 844800 >,
+ < 921600 >,
+ < 940800 >;
+
+ qcom,cpufreq-table-4 =
+ < 199200 >,
+ < 302400 >,
+ < 384000 >,
+ < 600000 >,
+ < 691200 >,
+ < 768000 >,
+ < 844800 >,
+ < 921600 >;
+ };
+
+ clock_cpu: qcom,cpu-clock-8994@f9015000 {
+ compatible = "qcom,cpu-clock-8994";
+ reg = <0xf9015000 0x1000>,
+ <0xf9016000 0x1000>,
+ <0xf9011000 0x1000>,
+ <0xf900d000 0x1000>,
+ <0xf900f000 0x1000>,
+ <0xf9112000 0x1000>;
+ reg-names = "c0_pll", "c1_pll", "cci_pll", "c0_mux", "c1_mux", "cci_mux";
+ vdd-a53-supply = <&apc0_vreg_corner>;
+ vdd-a57-supply = <&apc1_vreg_corner>;
+ vdd-cci-supply = <&apc0_vreg_corner>;
+ vdd-dig-supply = <&pm8994_s1_corner_ao>;
+ qcom,a53-speedbin0-v0 =
+ < 0 0>,
+ < 199200000 1>,
+ < 302400000 2>,
+ < 384000000 3>,
+ < 600000000 4>,
+ < 691200000 5>,
+ < 768000000 6>,
+ < 844800000 7>,
+ < 921600000 8>,
+ < 940800000 9>;
+ qcom,a57-speedbin0-v0 =
+ < 0 0>,
+ < 199200000 1>,
+ < 302400000 2>,
+ < 384000000 3>,
+ < 600000000 4>,
+ < 691200000 5>,
+ < 768000000 6>,
+ < 844800000 7>,
+ < 921600000 8>;
+ qcom,cci-speedbin0-v0 =
+ < 0 0>,
+ < 150000000 1>,
+ < 200000000 2>,
+ < 249600000 3>,
+ < 300000000 4>,
+ < 384000000 4>,
+ < 499200000 7>,
+ < 600000000 9>;
+ clock-names = "xo_ao", "aux_clk";
+ clocks = <&clock_rpm clk_cxo_clk_src_ao>,
+ <&clock_gcc clk_gpll0_ao>;
+ #clock-cells = <1>;
+ };
+
+ ocmem: qcom,ocmem@fdd00000 {
+ compatible = "qcom,msm-ocmem";
+ reg = <0xfdd00000 0x2000>,
+ <0xfdd02000 0x2000>,
+ <0xfe039000 0x400>,
+ <0xfec00000 0x200000>;
+ reg-names = "ocmem_ctrl_physical", "dm_ctrl_physical", "br_ctrl_physical", "ocmem_physical";
+ interrupts = <0 76 0 0 77 0>;
+ interrupt-names = "ocmem_irq", "dm_irq";
+ qcom,ocmem-num-regions = <0x4>;
+ qcom,ocmem-num-macros = <0x20>;
+ qcom,resource-type = <0x706d636f>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x0 0xfec00000 0x200000>;
+ clocks = <&clock_rpm clk_ocmemgx_core_clk>,
+ <&clock_mmss clk_ocmemcx_ocmemnoc_clk>;
+ clock-names = "core_clk", "iface_clk";
+
+ partition@0 {
+ reg = <0x0 0x180000>;
+ qcom,ocmem-part-name = "graphics";
+ qcom,ocmem-part-min = <0x80000>;
+ };
+
+ partition@100000 {
+ reg = <0x180000 0x80000>;
+ qcom,ocmem-part-name = "video";
+ qcom,ocmem-part-min = <0x55000>;
+ };
+
+ };
+
+ msm_vidc: qcom,vidc@fdc00000 {
+ compatible = "qcom,msm-vidc";
+ reg = <0xfdc00000 0xff000>;
+ interrupts = <0 44 0>;
+ qcom,hfi = "venus";
+ qcom,reg-presets = <0x800D8 0x707>,
+ <0xe0020 0x55555556>,
+ <0xe0024 0x55555556>,
+ <0x80124 0x3>;
+ qcom,ocmem-size = <524288>; /* 512 * 1024*/
+ qcom,max-hw-load = <1281600>; /* Full 4k @ 30 + 1080p @ 30 */
+ qcom,clock-names = "core_clk", "core0_clk", "core1_clk", "core2_clk",
+ "iface_clk", "bus_clk", "mem_clk";
+ clock-names = "core_clk", "core0_clk", "core1_clk", "core2_clk",
+ "iface_clk", "bus_clk", "mem_clk";
+ venus-supply = <&gdsc_venus>;
+ venus-core0-supply = <&gdsc_venus_core0>;
+ venus-core1-supply = <&gdsc_venus_core1>;
+ venus-core2-supply = <&gdsc_venus_core2>;
+ qcom,clock-configs = <0x3 0x0 0x0 0x0 0x0 0x0 0x0>;
+ qcom,sw-power-collapse;
+ clocks = <&clock_mmss clk_venus0_vcodec0_clk>,
+ <&clock_mmss clk_venus0_core0_vcodec_clk>,
+ <&clock_mmss clk_venus0_core1_vcodec_clk>,
+ <&clock_mmss clk_venus0_core2_vcodec_clk>,
+ <&clock_mmss clk_venus0_ahb_clk>,
+ <&clock_mmss clk_venus0_axi_clk>,
+ <&clock_mmss clk_venus0_ocmemnoc_clk>;
+ qcom,load-freq-tbl =
+ <979200 465000000 0x0c000000>,
+ <979200 465000000 0x01000414>,
+ <979200 465000000 0x030fcfff>,
+ <979200 465000000 0x04000000>,
+ <783360 465000000 0x0c000000>,
+ <783360 465000000 0x01000414>,
+ <783360 465000000 0x030fcfff>,
+ <783360 465000000 0x04000000>,
+ <489600 240000000 0x0c000000>,
+ <489600 240000000 0x01000414>,
+ <489600 240000000 0x030fcfff>,
+ <489600 240000000 0x04000000>,
+ <244800 133330000 0x0c000000>,
+ <244800 133330000 0x01000414>,
+ <244800 133330000 0x030fcfff>,
+ <244800 133330000 0x04000000>;
+
+ qcom,buffer-type-tz-usage-table = <0x241 0x1>,
+ <0x106 0x2>,
+ <0x480 0x3>;
+ qcom,vidc-iommu-domains {
+ qcom,domain-ns {
+ qcom,vidc-domain-phandle = <&venus_domain_ns>;
+ qcom,vidc-partition-buffer-types = <0x7ff>,
+ <0x800>;
+ };
+ qcom,domain-sec-bs {
+ qcom,vidc-domain-phandle = <&venus_domain_sec_bitstream>;
+ qcom,vidc-partition-buffer-types = <0x241>;
+ };
+ qcom,domain-sec-px {
+ qcom,vidc-domain-phandle = <&venus_domain_sec_pixel>;
+ qcom,vidc-partition-buffer-types = <0x106>;
+ };
+ qcom,domain-sec-np {
+ qcom,vidc-domain-phandle = <&venus_domain_sec_non_pixel>;
+ qcom,vidc-partition-buffer-types = <0x480>;
+ };
+ };
+ qcom,msm-bus-clients {
+ qcom,msm-bus-client@0 {
+ qcom,msm-bus,name = "venc-core0-ddr";
+ qcom,msm-bus,num-cases = <8>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <63 512 0 0>,
+ <63 512 133600 0>,
+ <63 512 402200 0>,
+ <63 512 916600 0>,
+ <63 512 1778400 0>,
+ <63 512 2812400 0>,
+ <63 512 3501800 0>,
+ <63 512 5567600 0>;
+ qcom,bus-configs = <0x1000414>;
+ };
+
+ qcom,msm-bus-client@1 {
+ qcom,msm-bus,name = "vdec-core0-ddr";
+ qcom,msm-bus,num-cases = <8>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <63 512 0 0>,
+ <63 512 303200 0>,
+ <63 512 787200 0>,
+ <63 512 1498200 0>,
+ <63 512 2921400 0>,
+ <63 512 4629200 0>,
+ <63 512 5767800 0>,
+ <63 512 6299000 0>;
+ qcom,bus-configs = <0xc000000>;
+ };
+
+ qcom,msm-bus-client@2 {
+ qcom,msm-bus,name = "vdec-core1-ddr";
+ qcom,msm-bus,num-cases = <8>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <63 512 0 0>,
+ <63 512 227800 0>,
+ <63 512 593400 0>,
+ <63 512 1142800 0>,
+ <63 512 2177000 0>,
+ <63 512 3417800 0>,
+ <63 512 4245000 0>,
+ <63 512 4773800 0>;
+ qcom,bus-configs = <0x30fcfff>;
+ };
+
+ qcom,msm-bus-client@3 {
+ qcom,msm-bus,name = "venc-core2-ddr";
+ qcom,msm-bus,num-cases = <8>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <63 512 0 0>,
+ <63 512 178000 0>,
+ <63 512 540000 0>,
+ <63 512 1518000 0>,
+ <63 512 2100000 0>,
+ <63 512 2798000 0>,
+ <63 512 3262000 0>,
+ <63 512 8114000 0>;
+ qcom,bus-configs = <0x04000000>;
+ };
+ qcom,msm-bus-client@4 {
+ qcom,msm-bus,name = "venc-core1-ocmem";
+ qcom,msm-bus,num-cases = <8>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <68 604 0 0>,
+ <68 604 138000 2384000>,
+ <68 604 414000 2384000>,
+ <68 604 940000 2384000>,
+ <68 604 1880000 3632000>,
+ <68 604 3574000 3632000>,
+ <68 604 3812000 3632000>,
+ <68 604 4467000 3632000>;
+ qcom,bus-configs = <0x10000414>;
+ };
+ qcom,msm-bus-client@5 {
+ qcom,msm-bus,name = "venc-core2-ocmem";
+ qcom,msm-bus,num-cases = <8>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <68 604 0 0>,
+ <68 604 142000 2384000>,
+ <68 604 428000 2384000>,
+ <68 604 1128000 2384000>,
+ <68 604 20050000 3632000>,
+ <68 604 40800000 3632000>,
+ <68 604 46970000 3632000>,
+ <68 604 5101000 3632000>;
+ qcom,bus-configs = <0x04000000>;
+ };
+
+ qcom,msm-bus-client@6 {
+ qcom,msm-bus,name = "vdec-core0-ocmem";
+ qcom,msm-bus,num-cases = <8>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <68 604 0 0>,
+ <68 604 158000 2384000>,
+ <68 604 401000 2384000>,
+ <68 604 734000 2384000>,
+ <68 604 1469000 3632000>,
+ <68 604 2350000 3632000>,
+ <68 604 2507000 3632000>,
+ <68 604 2938000 3632000>;
+ qcom,bus-configs = <0xc000000>;
+ };
+
+ qcom,msm-bus-client@7 {
+ qcom,msm-bus,name = "vdec-core1-ocmem";
+ qcom,msm-bus,num-cases = <8>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <68 604 0 0>,
+ <68 604 176000 2384000>,
+ <68 604 456000 2384000>,
+ <68 604 864000 2384000>,
+ <68 604 1729000 3632000>,
+ <68 604 2747000 3632000>,
+ <68 604 2930000 3632000>,
+ <68 604 3433000 3632000>;
+ qcom,bus-configs = <0x30fcfff>;
+ };
+ };
+ };
+
+ i2c_2: i2c@f9924000 { /* BLSP1 QUP2 */
+ compatible = "qcom,i2c-msm-v2";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-names = "qup_phys_addr", "bam_phys_addr";
+ reg = <0xf9924000 0x1000>,
+ <0xf9904000 0x19000>;
+ interrupt-names = "qup_irq", "bam_irq";
+ interrupts = <0 96 0>, <0 238 0>;
+ qcom,clk-freq-out = <100000>;
+ qcom,clk-freq-in = <19200000>;
+ clock-names = "iface_clk", "core_clk";
+ clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp1_qup2_i2c_apps_clk>;
+
+ pinctrl-names = "i2c_active", "i2c_sleep";
+ pinctrl-0 = <&i2c_2_active>;
+ pinctrl-1 = <&i2c_2_sleep>;
+ qcom,noise-rjct-scl = <0>;
+ qcom,noise-rjct-sda = <0>;
+ qcom,bam-pipe-idx-cons = <14>;
+ qcom,bam-pipe-idx-prod = <15>;
+ qcom,master-id = <86>;
+ };
+
+ i2c_5: i2c@f9967000 { /* BLSP2 QUP5 */
+ compatible = "qcom,i2c-msm-v2";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-names = "qup_phys_addr", "bam_phys_addr";
+ reg = <0xf9967000 0x1000>,
+ <0xf9944000 0x19000>;
+ interrupt-names = "qup_irq", "bam_irq";
+ interrupts = <0 105 0>, <0 239 0>;
+ qcom,clk-freq-out = <100000>;
+ qcom,clk-freq-in = <19200000>;
+ clock-names = "iface_clk", "core_clk";
+ clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp2_qup5_i2c_apps_clk>;
+
+ pinctrl-names = "i2c_active", "i2c_sleep";
+ pinctrl-0 = <&i2c_5_active>;
+ pinctrl-1 = <&i2c_5_sleep>;
+ qcom,noise-rjct-scl = <0>;
+ qcom,noise-rjct-sda = <0>;
+ qcom,bam-pipe-idx-cons = <20>;
+ qcom,bam-pipe-idx-prod = <21>;
+ qcom,master-id = <84>;
+ };
+
+ i2c_6: i2c@f9928000 { /* BLSP1 QUP6 */
+ compatible = "qcom,i2c-msm-v2";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ reg-names = "qup_phys_addr", "bam_phys_addr";
+ reg = <0xf9928000 0x1000>,
+ <0xf9904000 0x19000>;
+ interrupt-names = "qup_irq", "bam_irq";
+ interrupts = <0 100 0>, <0 238 0>;
+ qcom,clk-freq-out = <400000>;
+ qcom,clk-freq-in = <19200000>;
+ clock-names = "iface_clk", "core_clk";
+ clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp1_qup6_i2c_apps_clk>;
+
+ pinctrl-names = "i2c_active", "i2c_sleep";
+ pinctrl-0 = <&i2c_6_active>;
+ pinctrl-1 = <&i2c_6_sleep>;
+ qcom,noise-rjct-scl = <0>;
+ qcom,noise-rjct-sda = <0>;
+ qcom,bam-pipe-idx-cons = <22>;
+ qcom,bam-pipe-idx-prod = <23>;
+ qcom,master-id = <86>;
+ };
+
+ sound {
+ compatible = "qcom,msm8994-asoc-snd";
+ qcom,model = "msm8994-tomtom-snd-card";
+ reg = <0xfe034000 0x4>,
+ <0xfe035000 0x4>,
+ <0xfe036000 0x4>,
+ <0xfe037000 0x4>;
+ reg-names = "lpaif_pri_mode_muxsel",
+ "lpaif_sec_mode_muxsel",
+ "lpaif_tert_mode_muxsel",
+ "lpaif_quat_mode_muxsel";
+
+ qcom,audio-routing =
+ "AIF4 VI", "MCLK",
+ "RX_BIAS", "MCLK",
+ "LDO_H", "MCLK",
+ "AIF4 MAD", "MCLK",
+ "AMIC1", "MIC BIAS1 Internal1",
+ "MIC BIAS1 Internal1", "Handset Mic",
+ "AMIC2", "MIC BIAS2 External",
+ "MIC BIAS2 External", "Headset Mic",
+ "AMIC3", "MIC BIAS2 External",
+ "MIC BIAS2 External", "ANCRight Headset Mic",
+ "AMIC4", "MIC BIAS2 External",
+ "MIC BIAS2 External", "ANCLeft Headset Mic",
+ "DMIC1", "MIC BIAS1 External",
+ "MIC BIAS1 External", "Digital Mic1",
+ "DMIC2", "MIC BIAS1 External",
+ "MIC BIAS1 External", "Digital Mic2",
+ "DMIC3", "MIC BIAS3 External",
+ "MIC BIAS3 External", "Digital Mic3",
+ "DMIC4", "MIC BIAS3 External",
+ "MIC BIAS3 External", "Digital Mic4",
+ "DMIC5", "MIC BIAS4 External",
+ "MIC BIAS4 External", "Digital Mic5",
+ "DMIC6", "MIC BIAS4 External",
+ "MIC BIAS4 External", "Digital Mic6";
+
+ clock-names = "osr_clk";
+ clocks = <&clock_rpm clk_div_clk1>;
+ qcom,cdc-mclk-gpios = <&pm8994_gpios 15 0>;
+ qcom,tomtom-mclk-clk-freq = <9600000>;
+ pinctrl-names = "mi2s-sleep",
+ "mi2s-active",
+ "auxpcm-sleep",
+ "auxpcm-active";
+ pinctrl-0 = <&pri_mi2s_sleep>, <&pri_mi2s_sd0_sleep>;
+ pinctrl-1 = <&pri_mi2s_active>, <&pri_mi2s_sd0_active>;
+ pinctrl-2 = <&sec_aux_pcm_sleep>, <&sec_aux_pcm_din_sleep>;
+ pinctrl-3 = <&sec_aux_pcm_active>, <&sec_aux_pcm_din_active>;
+ };
+
+ qcom,msm-adsp-loader {
+ compatible = "qcom,adsp-loader";
+ qcom,adsp-state = <0>;
+ };
+
+ qcom,msm-audio-ion {
+ compatible = "qcom,msm-audio-ion";
+ };
+
+ qcom,msm-pcm {
+ compatible = "qcom,msm-pcm-dsp";
+ qcom,msm-pcm-dsp-id = <0>;
+ };
+
+ qcom,msm-pcm-lpa {
+ compatible = "qcom,msm-pcm-lpa";
+ };
+
+ qcom,msm-pcm-low-latency {
+ compatible = "qcom,msm-pcm-dsp";
+ qcom,msm-pcm-dsp-id = <1>;
+ qcom,msm-pcm-low-latency;
+ qcom,latency-level = "regular";
+ };
+
+ qcom,msm-pcm-routing {
+ compatible = "qcom,msm-pcm-routing";
+ };
+
+ qcom,msm-compr-dsp {
+ compatible = "qcom,msm-compr-dsp";
+ };
+
+ qcom,msm-compress-dsp {
+ compatible = "qcom,msm-compress-dsp";
+ };
+
+ qcom,msm-voip-dsp {
+ compatible = "qcom,msm-voip-dsp";
+ };
+
+ qcom,msm-pcm-voice {
+ compatible = "qcom,msm-pcm-voice";
+ };
+
+ qcom,msm-stub-codec {
+ compatible = "qcom,msm-stub-codec";
+ };
+
+ qcom,msm-dai-fe {
+ compatible = "qcom,msm-dai-fe";
+ };
+
+ qcom,msm-pcm-afe {
+ compatible = "qcom,msm-pcm-afe";
+ };
+
+ qcom,msm-dai-q6-hdmi {
+ compatible = "qcom,msm-dai-q6-hdmi";
+ qcom,msm-dai-q6-dev-id = <8>;
+ };
+
+ qcom,msm-lsm-client {
+ compatible = "qcom,msm-lsm-client";
+ };
+
+ qcom,msm-pcm-loopback {
+ compatible = "qcom,msm-pcm-loopback";
+ };
+
+ qcom,msm-dai-q6 {
+ compatible = "qcom,msm-dai-q6";
+ qcom,msm-dai-q6-sb-0-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16384>;
+ };
+
+ qcom,msm-dai-q6-sb-0-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16385>;
+ };
+
+ qcom,msm-dai-q6-sb-1-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16386>;
+ };
+
+ qcom,msm-dai-q6-sb-1-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16387>;
+ };
+
+ qcom,msm-dai-q6-sb-2-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16388>;
+ };
+
+ qcom,msm-dai-q6-sb-2-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16389>;
+ };
+
+ qcom,msm-dai-q6-sb-3-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16390>;
+ };
+
+ qcom,msm-dai-q6-sb-3-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16391>;
+ };
+
+ qcom,msm-dai-q6-sb-4-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16392>;
+ };
+
+ qcom,msm-dai-q6-sb-4-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16393>;
+ };
+
+ qcom,msm-dai-q6-sb-5-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16395>;
+ };
+
+ qcom,msm-dai-q6-bt-sco-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <12288>;
+ };
+
+ qcom,msm-dai-q6-bt-sco-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <12289>;
+ };
+
+ qcom,msm-dai-q6-int-fm-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <12292>;
+ };
+
+ qcom,msm-dai-q6-int-fm-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <12293>;
+ };
+
+ qcom,msm-dai-q6-be-afe-pcm-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <224>;
+ };
+
+ qcom,msm-dai-q6-be-afe-pcm-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <225>;
+ };
+
+ qcom,msm-dai-q6-afe-proxy-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <241>;
+ };
+
+ qcom,msm-dai-q6-afe-proxy-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <240>;
+ };
+
+ qcom,msm-dai-q6-incall-record-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <32771>;
+ };
+
+ qcom,msm-dai-q6-incall-record-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <32772>;
+ };
+
+ qcom,msm-dai-q6-incall-music-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <32773>;
+ };
+
+ qcom,msm-dai-q6-incall-music-2-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <32770>;
+ };
+ };
+
+ qcom,msm-pri-auxpcm {
+ compatible = "qcom,msm-auxpcm-dev";
+ qcom,msm-cpudai-auxpcm-mode = <0>, <0>;
+ qcom,msm-cpudai-auxpcm-sync = <1>, <1>;
+ qcom,msm-cpudai-auxpcm-frame = <5>, <4>;
+ qcom,msm-cpudai-auxpcm-quant = <2>, <2>;
+ qcom,msm-cpudai-auxpcm-num-slots = <1>, <1>;
+ qcom,msm-cpudai-auxpcm-slot-mapping = <1>, <1>;
+ qcom,msm-cpudai-auxpcm-data = <0>, <0>;
+ qcom,msm-cpudai-auxpcm-pcm-clk-rate = <2048000>, <2048000>;
+ qcom,msm-auxpcm-interface = "primary";
+ };
+
+ qcom,msm-sec-auxpcm {
+ compatible = "qcom,msm-auxpcm-dev";
+ qcom,msm-cpudai-auxpcm-mode = <0>, <0>;
+ qcom,msm-cpudai-auxpcm-sync = <1>, <1>;
+ qcom,msm-cpudai-auxpcm-frame = <5>, <4>;
+ qcom,msm-cpudai-auxpcm-quant = <2>, <2>;
+ qcom,msm-cpudai-auxpcm-num-slots = <1>, <1>;
+ qcom,msm-cpudai-auxpcm-slot-mapping = <1>, <1>;
+ qcom,msm-cpudai-auxpcm-data = <0>, <0>;
+ qcom,msm-cpudai-auxpcm-pcm-clk-rate = <2048000>, <2048000>;
+ qcom,msm-auxpcm-interface = "secondary";
+ };
+
+ qcom,msm-dai-mi2s {
+ compatible = "qcom,msm-dai-mi2s";
+ qcom,msm-dai-q6-mi2s-prim {
+ compatible = "qcom,msm-dai-q6-mi2s";
+ qcom,msm-dai-q6-mi2s-dev-id = <0>;
+ qcom,msm-mi2s-rx-lines = <2>;
+ qcom,msm-mi2s-tx-lines = <1>;
+ };
+ };
+
+ qcom,msm-pcm-hostless {
+ compatible = "qcom,msm-pcm-hostless";
+ };
+
+ tsens: tsens@fc4a8000 {
+ compatible = "qcom,msm8994-tsens";
+ reg = <0xfc4a8000 0x2000>,
+ <0xfc4bc000 0x1000>;
+ reg-names = "tsens_physical", "tsens_eeprom_physical";
+ interrupts = <0 184 0>;
+ qcom,sensors = <16>;
+ qcom,slope = <2901 2846 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200>;
+ };
+
+ qcom_tzlog: tz-log@fe87f720 {
+ compatible = "qcom,tz-log";
+ reg = <0xfe87f720 0x1000>;
+ };
+
+ qcom_crypto: qcrypto@fd440000 {
+ compatible = "qcom,qcrypto";
+ reg = <0xfd440000 0x20000>,
+ <0xfd444000 0x9000>;
+ reg-names = "crypto-base","crypto-bam-base";
+ interrupts = <0 236 0>;
+ qcom,bam-pipe-pair = <2>;
+ qcom,ce-hw-instance = <0>;
+ qcom,ce-device = <0>;
+ qcom,msm-bus,name = "qcrypto-noc";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <55 512 0 0>,
+ <55 512 3936000 393600>;
+ clock-names = "core_clk", "iface_clk", "bus_clk";
+ clocks = <&clock_rpm clk_ce2_clk>,
+ <&clock_rpm clk_gcc_ce2_ahb_m_clk>,
+ <&clock_rpm clk_gcc_ce2_axi_m_clk>;
+ qcom,use-sw-aes-cbc-ecb-ctr-algo;
+ qcom,use-sw-aes-xts-algo;
+ qcom,use-sw-aes-ccm-algo;
+ qcom,use-sw-ahash-algo;
+ status = "disabled";
+ };
+
+ qcom_cedev: qcedev@fd440000 {
+ compatible = "qcom,qcedev";
+ reg = <0xfd440000 0x20000>,
+ <0xfd444000 0x9000>;
+ reg-names = "crypto-base","crypto-bam-base";
+ interrupts = <0 236 0>;
+ qcom,bam-pipe-pair = <1>;
+ qcom,ce-hw-instance = <0>;
+ qcom,ce-device = <0>;
+ qcom,msm-bus,name = "qcedev-noc";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <55 512 0 0>,
+ <55 512 3936000 393600>;
+ clock-names = "core_clk", "iface_clk", "bus_clk";
+ clocks = <&clock_rpm clk_ce2_clk>,
+ <&clock_rpm clk_gcc_ce2_ahb_m_clk>,
+ <&clock_rpm clk_gcc_ce2_axi_m_clk>;
+ status = "disabled";
+ };
+
+ qcom,qseecom@6500000 {
+ compatible = "qcom,qseecom";
+ reg = <0x6500000 0x300000>;
+ reg-names = "secapp-region";
+ qcom,disk-encrypt-pipe-pair = <2>;
+ qcom,hlos-ce-hw-instance = <0>;
+ qcom,qsee-ce-hw-instance = <0>;
+ qcom,msm-bus,name = "qseecom-noc";
+ qcom,msm-bus,num-cases = <4>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,no-clock-support;
+ qcom,msm-bus,vectors-KBps =
+ <55 512 0 0>,
+ <55 512 0 0>,
+ <55 512 120000 1200000>,
+ <55 512 393600 3936000>;
+ clock-names = "core_clk";
+ clocks = <&clock_rpm clk_qseecom_ce1_clk>;
+ };
+
+ qcom,sensor-information {
+ compatible = "qcom,sensor-information";
+ sensor_information0: qcom,sensor-information@0 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor0";
+ };
+
+ sensor_information1: qcom,sensor-information@1 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor1";
+ };
+
+ sensor_information2: qcom,sensor-information@2 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor2";
+ };
+
+ sensor_information3: qcom,sensor-information@3 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor3";
+ };
+
+ sensor_information4: qcom,sensor-information@4 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor4";
+ };
+
+ sensor_information5: qcom,sensor-information@5 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor5";
+ };
+
+ sensor_information6: qcom,sensor-information@6 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor6";
+ qcom,alias-name = "cpu7";
+ };
+
+ sensor_information7: qcom,sensor-information@7 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor7";
+ qcom,alias-name = "cpu0";
+ };
+
+ sensor_information8: qcom,sensor-information@8 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor8";
+ qcom,alias-name = "cpu1";
+ };
+
+ sensor_information9: qcom,sensor-information@9 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor9";
+ qcom,alias-name = "cpu2";
+ };
+
+ sensor_information10: qcom,sensor-information@10 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor10";
+ qcom,alias-name = "cpu3";
+ };
+
+ sensor_information11: qcom,sensor-information@11 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor11";
+ };
+
+ sensor_information12: qcom,sensor-information@12 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor12";
+ };
+
+ sensor_information13: qcom,sensor-information@13 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor13";
+ qcom,alias-name = "cpu4";
+ };
+
+ sensor_information14: qcom,sensor-information@14 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor14";
+ qcom,alias-name = "cpu5";
+ };
+
+ sensor_information15: qcom,sensor-information@15 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor15";
+ qcom,alias-name = "cpu6";
+ };
+
+ sensor_information16: qcom,sensor-information@16 {
+ qcom,sensor-type = "alarm";
+ qcom,sensor-name = "pm8994_tz";
+ qcom,scaling-factor = <1000>;
+ };
+
+ sensor_information17: qcom,sensor-information@17 {
+ qcom,sensor-type = "adc";
+ qcom,sensor-name = "msm_therm";
+ };
+
+ sensor_information18: qcom,sensor-information@18 {
+ qcom,sensor-type = "adc";
+ qcom,sensor-name = "emmc_therm";
+ };
+
+ sensor_information19: qcom,sensor-information@19 {
+ qcom,sensor-type = "adc";
+ qcom,sensor-name = "pa_therm0";
+ };
+
+ sensor_information20: qcom,sensor-information@20 {
+ qcom,sensor-type = "adc";
+ qcom,sensor-name = "pa_therm1";
+ };
+
+ sensor_information21: qcom,sensor-information@21 {
+ qcom,sensor-type = "adc";
+ qcom,sensor-name = "quiet_therm";
+ };
+ };
+
+ qcom,msm-thermal {
+ compatible = "qcom,msm-thermal";
+ qcom,sensor-id = <7>;
+ qcom,poll-ms = <250>;
+ qcom,limit-temp = <60>;
+ qcom,temp-hysteresis = <10>;
+ qcom,therm-reset-temp = <115>;
+ qcom,freq-step = <2>;
+ qcom,freq-control-mask = <0xff>;
+ qcom,core-limit-temp = <80>;
+ qcom,core-temp-hysteresis = <10>;
+ qcom,core-control-mask = <0xfe>;
+ qcom,hotplug-temp = <105>;
+ qcom,hotplug-temp-hysteresis = <20>;
+ qcom,cpu-sensors = "tsens_tz_sensor7", "tsens_tz_sensor8",
+ "tsens_tz_sensor9", "tsens_tz_sensor10",
+ "tsens_tz_sensor13", "tsens_tz_sensor14",
+ "tsens_tz_sensor15", "tsens_tz_sensor6";
+ qcom,freq-mitigation-temp = <105>;
+ qcom,freq-mitigation-temp-hysteresis = <20>;
+ qcom,freq-mitigation-value = <302400>;
+ qcom,freq-mitigation-control-mask = <0x01>;
+ qcom,online-hotplug-core;
+ qcom,synchronous-cluster-id = <0 1>;
+ qcom,vdd-restriction-temp = <5>;
+ qcom,vdd-restriction-temp-hysteresis = <10>;
+
+ vdd-dig-supply = <&pm8994_s1_floor_corner>;
+ vdd-gfx-supply = <&pmi8994_s2_floor_corner>;
+
+ qcom,vdd-dig-rstr{
+ qcom,vdd-rstr-reg = "vdd-dig";
+ qcom,levels = <5 7 7>; /* Nominal, Super Turbo, Super Turbo */
+ qcom,min-level = <1>; /* No Request */
+ };
+
+ qcom,vdd-gfx-rstr{
+ qcom,vdd-rstr-reg = "vdd-gfx";
+ qcom,levels = <5 7 7>; /* Nominal, Super Turbo, Super Turbo */
+ qcom,min-level = <1>; /* No Request */
+ };
+
+ qcom,vdd-apps-rstr{
+ qcom,vdd-rstr-reg = "vdd-apps";
+ qcom,levels = <302400 600000 600000>;
+ qcom,freq-req;
+ };
+ };
+
+ qcom,bcl {
+ compatible = "qcom,bcl";
+ };
+
+ cnss: qcom,cnss@06300000 {
+ compatible = "qcom,cnss";
+ reg = <0x06300000 0x200000>;
+ reg-names = "ramdump";
+ wlan-en-gpio = <&msm_gpio 113 0>;
+ vdd-wlan-supply = <&bt_vreg>;
+ vdd-wlan-io-supply = <&pm8994_s4>;
+ vdd-wlan-xtal-supply = <&pm8994_l30>;
+ qcom,notify-modem-status;
+ pinctrl-names = "default";
+ pinctrl-0 = <&cnss_default>;
+ qcom,wlan-rc-num = <1>;
+ qcom,wlan-uart-access;
+
+ qcom,msm-bus,name = "msm-cnss";
+ qcom,msm-bus,num-cases = <4>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <45 512 0 0>, /* No vote */
+ <45 512 6250 200000>, /* 50 Mbps */
+ <45 512 25000 200000>, /* 200 Mbps */
+ <45 512 100000 200000>; /* 800 Mbps */
+ };
+
+ cpu-pmu {
+ compatible = "arm,armv8-pmuv3";
+ qcom,irq-is-percpu;
+ interrupts = <1 14 0xff00>;
+ };
+
+ audio_heap {
+ compatible = "qcom,msm-shared-memory";
+ qcom,proc-id = <1>;
+ contiguous-region = <&audio_mem>;
+ };
+
+ adsp_heap {
+ compatible = "qcom,msm-shared-memory";
+ qcom,proc-id = <1>;
+ contiguous-region = <&adsp_mem>;
+ };
+};
+
+&gdsc_usb30 {
+ reg = <0xfc4003c4 0x4>;
+ status = "ok";
+};
+
+&gdsc_pcie_0 {
+ status = "ok";
+};
+
+&gdsc_pcie_1 {
+ status = "ok";
+};
+
+&gdsc_ufs {
+ status = "ok";
+};
+
+&gdsc_venus {
+ clock-names = "ocmem_clk", "bus_clk", "core_clk";
+ clocks = <&clock_mmss clk_venus0_ocmemnoc_clk>,
+ <&clock_mmss clk_venus0_axi_clk>,
+ <&clock_mmss clk_venus0_vcodec0_clk>;
+ status = "ok";
+};
+
+&gdsc_venus_core0 {
+ qcom,support-hw-trigger;
+ clock-names = "core0_clk";
+ clocks = <&clock_mmss clk_venus0_core0_vcodec_clk>;
+ status = "ok";
+};
+
+&gdsc_venus_core1 {
+ qcom,support-hw-trigger;
+ clock-names = "core1_clk";
+ clocks = <&clock_mmss clk_venus0_core1_vcodec_clk>;
+ status = "ok";
+};
+
+&gdsc_venus_core2 {
+ qcom,support-hw-trigger;
+ clock-names = "core2_clk";
+ clocks = <&clock_mmss clk_venus0_core2_vcodec_clk>;
+ status = "ok";
+};
+
+&gdsc_mdss {
+ clock-names = "bus_clk", "core_clk";
+ clocks = <&clock_mmss clk_mdss_axi_clk>,
+ <&clock_mmss clk_mdss_mdp_clk>;
+ status = "ok";
+};
+
+&gdsc_camss_top {
+ clock-names = "csi0_clk", "csi1_clk", "bus_clk";
+ clocks = <&clock_mmss clk_camss_csi_vfe0_clk>,
+ <&clock_mmss clk_camss_csi_vfe1_clk>,
+ <&clock_mmss clk_camss_micro_ahb_clk>;
+ status = "ok";
+};
+
+&gdsc_jpeg {
+ clock-names = "bus_clk", "core0_clk", "core1_clk", "core2_clk";
+ clocks = <&clock_mmss clk_camss_jpeg_jpeg_axi_clk>,
+ <&clock_mmss clk_camss_jpeg_jpeg0_clk>,
+ <&clock_mmss clk_camss_jpeg_jpeg1_clk>,
+ <&clock_mmss clk_camss_jpeg_jpeg2_clk>;
+ parent-supply = <&gdsc_camss_top>;
+ status = "ok";
+};
+
+&gdsc_vfe {
+ clock-names = "bus_clk", "core0_clk", "core1_clk";
+ clocks = <&clock_mmss clk_camss_vfe_vfe_axi_clk>,
+ <&clock_mmss clk_camss_vfe_vfe0_clk>,
+ <&clock_mmss clk_camss_vfe_vfe1_clk>;
+ parent-supply = <&gdsc_camss_top>;
+ status = "ok";
+};
+
+&gdsc_cpp {
+ clock-names = "bus_clk", "core_clk";
+ clocks = <&clock_mmss clk_camss_vfe_cpp_axi_clk>,
+ <&clock_mmss clk_camss_vfe_cpp_clk>;
+ parent-supply = <&gdsc_camss_top>;
+ status = "ok";
+};
+
+&gdsc_fd {
+ clock-names = "bus_clk", "core_clk";
+ clocks = <&clock_mmss clk_fd_axi_clk>,
+ <&clock_mmss clk_fd_core_clk>;
+ status = "ok";
+};
+
+&gdsc_oxili_cx {
+ status = "ok";
+};
+
+&gdsc_oxili_gx {
+ clock-names = "core_clk";
+ clocks = <&clock_mmss clk_oxili_gfx3d_clk>;
+ status = "ok";
+ parent-supply = <&pmi8994_s2_corner>;
+};
+
+#include "msm-pm8994-rpm-regulator.dtsi"
+#include "msm-pm8994.dtsi"
+#include "msm-pmi8994.dtsi"
+#include "msm8994-regulator.dtsi"
+#include "msm8994-ion.dtsi"
+#include "msm8994-iommu.dtsi"
+#include "msm8994-iommu-domains.dtsi"
+#include "msm8994-camera.dtsi"
+#include "msm8994-gpu.dtsi"
+#include "msm8994-pm.dtsi"