summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorRohit Vaswani <rvaswani@codeaurora.org>2016-01-07 17:16:46 -0800
committerRohit Vaswani <rvaswani@codeaurora.org>2016-03-01 12:22:17 -0800
commiteb9d5a1557f25ff4ed1187e31df6c451df3c53e3 (patch)
treeff190417a26265980f7f2afaaed782c5b1d77966 /arch
parentdd25b386799a4fadb4829f73fefc6e8f3a11387e (diff)
arm: DTS: qcom: Snapshot of all 8996 Device Tree Files
Signed-off-by: Rohit Vaswani <rvaswani@codeaurora.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm64/boot/dts/qcom/Makefile78
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-auto-dragonboard.dtsi1060
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-camera-sensor-dragonboard.dtsi255
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-camera-sensor-sbc.dtsi237
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-dragonboard.dtsi873
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-sbc.dtsi783
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v2-auto-dragonboard.dts25
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v2-dragonboard.dts26
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v2-liquid.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-mtp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-pm8004-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-pm8004-pmk8001-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-pmk8001-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v2.dtsi24
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-auto-dragonboard.dts25
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-dragonboard.dts27
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-liquid.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-mdm9x55-i2s-cdp.dts66
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-mdm9x55-i2s-mtp.dts65
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-mdm9x55-slimbus-mtp.dts67
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-mtp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pm8004-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pm8004-mdm9x55-i2s-cdp.dts67
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pm8004-pmk8001-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pm8004-pmk8001-mdm9x55-i2s-cdp.dts67
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pmk8001-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pmk8001-mdm9x55-i2s-cdp.dts67
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-cdp.dts24
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-dragonboard.dts28
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-mdm9x55-i2s-cdp.dts67
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-mdm9x55-i2s-mtp.dts67
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-mdm9x55-slimbus-mtp.dts68
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-mtp.dts24
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3-sbc.dts26
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3.0-dragonboard.dts26
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3.0-liquid.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-mtp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-pm8004-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-pm8004-pmk8001-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-pmk8001-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8996-cdp.dts24
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8996-mtp.dts24
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3.0.dtsi24
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-v3.dtsi24
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-ascent-3450mAh.dtsi60
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-itech-3000mah-4200mv.dtsi56
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-itech-3000mah.dtsi59
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-liquid-7650-sanyo.dtsi62
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-mtp-3000mah.dtsi118
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-palladium.dtsi121
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-qrd-4v2-1300mah.dtsi106
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-qrd-4v2-1800mah.dtsi106
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-qrd-4v2-2000mah.dtsi106
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-qrd-4v2-2200mah.dtsi106
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-qrd-4v35-2000mah.dtsi110
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-qrd-4v35-2500mah.dtsi106
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-qrd-sku1-4v4-2800mah.dtsi62
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-qrd-skua-4v35-2000mah.dtsi122
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-qrd-skuh-4v35-2000mah.dtsi115
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-qrd-skuic-4v35-1850mah.dtsi121
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-qrd-skul-4v4-2920mah.dtsi120
-rw-r--r--arch/arm64/boot/dts/qcom/batterydata-qrd-skum-4v4-2920mah.dtsi61
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-adv7533-1080p.dtsi74
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-adv7533-720p.dtsi73
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-hx8379a-truly-fwvga-video.dtsi138
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-hx8394f-720p-video.dtsi108
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-jdi-4k-dualmipi-video-nofbc.dtsi68
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-jdi-4k-dualmipi-video.dtsi88
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi-cmd.dtsi134
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi-video.dtsi125
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-jdi-fhd-video.dtsi83
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-nt35597-dsc-wqxga-cmd.dtsi130
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-nt35597-dsc-wqxga-video.dtsi119
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-nt35597-dualmipi-wqxga-cmd.dtsi103
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-nt35597-dualmipi-wqxga-video.dtsi84
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-otm1906c-1080p-cmd.dtsi380
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-r69006-1080p-cmd.dtsi135
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-r69006-1080p-video.dtsi129
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-r69007-dualdsi-wqxga-cmd.dtsi107
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-sharp-dualmipi-wqxga-video.dtsi78
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-sim-cmd.dtsi91
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-sim-dualmipi-cmd.dtsi92
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-sim-dualmipi-video.dtsi59
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-sim-video.dtsi56
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-truly-1080p-cmd.dtsi93
-rw-r--r--arch/arm64/boot/dts/qcom/dsi-panel-truly-1080p-video.dtsi88
-rw-r--r--arch/arm64/boot/dts/qcom/external-soc.dtsi37
-rw-r--r--arch/arm64/boot/dts/qcom/msm-arm-smmu-8996.dtsi278
-rw-r--r--arch/arm64/boot/dts/qcom/msm-arm-smmu-impl-defs-8996-v2.dtsi643
-rw-r--r--arch/arm64/boot/dts/qcom/msm-arm-smmu-impl-defs-8996-v3.dtsi646
-rw-r--r--arch/arm64/boot/dts/qcom/msm-arm-smmu.dtsi99
-rw-r--r--arch/arm64/boot/dts/qcom/msm-gdsc-8996.dtsi209
-rw-r--r--arch/arm64/boot/dts/qcom/msm-pm8004.dtsi84
-rw-r--r--arch/arm64/boot/dts/qcom/msm-pm8994-rpm-regulator.dtsi697
-rw-r--r--arch/arm64/boot/dts/qcom/msm-pm8994.dtsi436
-rw-r--r--arch/arm64/boot/dts/qcom/msm-pmi8994.dtsi704
-rw-r--r--arch/arm64/boot/dts/qcom/msm-pmi8996.dtsi32
-rw-r--r--arch/arm64/boot/dts/qcom/msm-pmk8001.dtsi90
-rw-r--r--arch/arm64/boot/dts/qcom/msm-rdbg.dtsi75
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-agave-adp.dtsi885
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-bus.dtsi1813
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-camera-sensor-adp.dtsi233
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-camera-sensor-cdp.dtsi243
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-camera-sensor-dtp.dtsi233
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-camera-sensor-liquid.dtsi244
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-camera-sensor-mtp.dtsi246
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-camera.dtsi787
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-cdp.dtsi774
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-coresight-v2.dtsi1125
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-coresight-v3.dtsi1098
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-dtp.dtsi686
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-fluid.dtsi631
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-gpu.dtsi215
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-ion.dtsi46
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-ipcrouter.dtsi48
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-liquid.dtsi655
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-mdss-panels.dtsi208
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-mdss-pll.dtsi138
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-mdss.dtsi519
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-mmxf-adp.dtsi818
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-mtp.dtsi888
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-pinctrl.dtsi2433
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-pm.dtsi523
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-pm8994-pm8004-pmk8001.dtsi31
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-pm8994-pm8004.dtsi33
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-pm8994-pmi8994-pm8004-pmk8001.dtsi31
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-pm8994-pmi8994-pm8004.dtsi38
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-pm8994-pmi8994-pmk8001.dtsi30
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-pm8994-pmi8996-pmk8001.dtsi31
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-regulator.dtsi1446
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-sim.dtsi102
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-smp2p.dtsi247
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v2-dtp.dts22
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v2-fluid.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v2-liquid.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-mtp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pm8004-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pm8004-mtp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pm8004-pmk8001-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pm8004-pmk8001-mtp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pmk8001-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pmk8001-mtp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v2.dtsi713
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-dtp.dts22
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-fluid.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-liquid.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-pm8004-agave-adp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-pm8004-mmxf-adp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-mtp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pm8004-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pm8004-mtp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pm8004-pmk8001-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pm8004-pmk8001-mtp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pmk8001-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pmk8001-mtp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-pmi8996-cdp.dts24
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-pmi8996-mtp.dts24
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-pmi8996-pmk8001-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3-pmi8996-pmk8001-mtp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3.0-dtp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3.0-fluid.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3.0-liquid.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-mtp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-pm8004-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-pm8004-mtp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-pm8004-pmk8001-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-pmk8001-cdp.dts23
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8996-cdp.dts24
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8996-mtp.dts24
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3.0.dtsi131
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-v3.dtsi665
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-vidc.dtsi237
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996-wsa881x.dtsi45
-rw-r--r--arch/arm64/boot/dts/qcom/msm8996.dtsi3852
-rw-r--r--arch/arm64/boot/dts/qcom/skeleton64.dtsi15
181 files changed, 37068 insertions, 1 deletions
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 8e94af64ee94..e2ef759f08a8 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -1,4 +1,80 @@
-dtb-$(CONFIG_ARCH_QCOM) += apq8016-sbc.dtb msm8916-mtp.dtb
+dtb-$(CONFIG_ARCH_QCOM) += msm8996-v2-pmi8994-cdp.dtb \
+ msm8996-v2-pmi8994-mtp.dtb \
+ msm8996-v2-pmi8994-pmk8001-cdp.dtb \
+ msm8996-v2-pmi8994-pmk8001-mtp.dtb \
+ msm8996-v2-pmi8994-pm8004-cdp.dtb \
+ msm8996-v2-pmi8994-pm8004-mtp.dtb \
+ msm8996-v2-pmi8994-pm8004-pmk8001-cdp.dtb \
+ msm8996-v2-pmi8994-pm8004-pmk8001-mtp.dtb \
+ msm8996-v2-fluid.dtb \
+ msm8996-v2-liquid.dtb \
+ msm8996-v2-dtp.dtb \
+ msm8996-v3-pmi8994-cdp.dtb \
+ msm8996-v3-pmi8994-mtp.dtb \
+ msm8996-v3-pmi8994-pmk8001-cdp.dtb \
+ msm8996-v3-pmi8994-pmk8001-mtp.dtb \
+ msm8996-v3-pmi8994-pm8004-cdp.dtb \
+ msm8996-v3-pmi8994-pm8004-mtp.dtb \
+ msm8996-v3-pmi8994-pm8004-pmk8001-cdp.dtb \
+ msm8996-v3-pmi8994-pm8004-pmk8001-mtp.dtb \
+ msm8996-v3-pmi8996-cdp.dtb \
+ msm8996-v3-pmi8996-mtp.dtb \
+ msm8996-v3-pmi8996-pmk8001-cdp.dtb \
+ msm8996-v3-pmi8996-pmk8001-mtp.dtb \
+ msm8996-v3-fluid.dtb \
+ msm8996-v3-liquid.dtb \
+ msm8996-v3-dtp.dtb \
+ msm8996-v3-pm8004-mmxf-adp.dtb \
+ msm8996-v3-pm8004-agave-adp.dtb \
+ msm8996-v3.0-pmi8994-cdp.dtb \
+ msm8996-v3.0-pmi8994-mtp.dtb \
+ msm8996-v3.0-pmi8994-pm8004-cdp.dtb \
+ msm8996-v3.0-pmi8994-pm8004-mtp.dtb \
+ msm8996-v3.0-pmi8994-pm8004-pmk8001-cdp.dtb \
+ msm8996-v3.0-pmi8994-pmk8001-cdp.dtb \
+ msm8996-v3.0-pmi8996-cdp.dtb \
+ msm8996-v3.0-pmi8996-mtp.dtb \
+ msm8996-v3.0-fluid.dtb \
+ msm8996-v3.0-liquid.dtb \
+ msm8996-v3.0-dtp.dtb \
+ apq8096-v2-pmi8994-cdp.dtb \
+ apq8096-v2-pmi8994-mtp.dtb \
+ apq8096-v2-pmi8994-pmk8001-cdp.dtb \
+ apq8096-v2-pmi8994-pm8004-cdp.dtb \
+ apq8096-v2-pmi8994-pm8004-pmk8001-cdp.dtb \
+ apq8096-v2-liquid.dtb \
+ apq8096-v2-dragonboard.dtb \
+ apq8096-v2-auto-dragonboard.dtb \
+ apq8096-v3-pmi8994-cdp.dtb \
+ apq8096-v3-pmi8994-mtp.dtb \
+ apq8096-v3-pmi8994-pmk8001-cdp.dtb \
+ apq8096-v3-pmi8994-pm8004-cdp.dtb \
+ apq8096-v3-pmi8994-pm8004-pmk8001-cdp.dtb \
+ apq8096-v3-pmi8996-cdp.dtb \
+ apq8096-v3-pmi8996-mtp.dtb \
+ apq8096-v3-liquid.dtb \
+ apq8096-v3-dragonboard.dtb \
+ apq8096-v3-sbc.dtb \
+ apq8096-v3-auto-dragonboard.dtb \
+ apq8096-v3.0-pmi8994-cdp.dtb \
+ apq8096-v3.0-pmi8994-mtp.dtb \
+ apq8096-v3.0-pmi8994-pm8004-cdp.dtb \
+ apq8096-v3.0-pmi8994-pm8004-pmk8001-cdp.dtb \
+ apq8096-v3.0-pmi8994-pmk8001-cdp.dtb \
+ apq8096-v3.0-pmi8996-cdp.dtb \
+ apq8096-v3.0-pmi8996-mtp.dtb \
+ apq8096-v3.0-liquid.dtb \
+ apq8096-v3.0-dragonboard.dtb \
+ apq8096-v3-pmi8994-mdm9x55-i2s-cdp.dtb \
+ apq8096-v3-pmi8994-pm8004-mdm9x55-i2s-cdp.dtb \
+ apq8096-v3-pmi8994-pm8004-pmk8001-mdm9x55-i2s-cdp.dtb \
+ apq8096-v3-pmi8994-pmk8001-mdm9x55-i2s-cdp.dtb \
+ apq8096-v3-pmi8996-mdm9x55-i2s-cdp.dtb \
+ apq8096-v3-pmi8994-mdm9x55-i2s-mtp.dtb \
+ apq8096-v3-pmi8994-mdm9x55-slimbus-mtp.dtb \
+ apq8096-v3-pmi8996-mdm9x55-i2s-mtp.dtb \
+ apq8096-v3-pmi8996-mdm9x55-slimbus-mtp.dtb \
+ apq8096-v3-pmi8996-dragonboard.dtb
always := $(dtb-y)
subdir-y := $(dts-dirs)
diff --git a/arch/arm64/boot/dts/qcom/apq8096-auto-dragonboard.dtsi b/arch/arm64/boot/dts/qcom/apq8096-auto-dragonboard.dtsi
new file mode 100644
index 000000000000..2a6ac5285963
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-auto-dragonboard.dtsi
@@ -0,0 +1,1060 @@
+/* Copyright (c) 2015, 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 "msm8996-pinctrl.dtsi"
+#include "apq8096-camera-sensor-dragonboard.dtsi"
+
+/ {
+ bluetooth: bt_qca6174 {
+ compatible = "qca,qca6174";
+ qca,bt-reset-gpio = <&pm8994_gpios 19 0>; /* BT_EN */
+ qca,bt-vdd-core-supply = <&vph_pwr_vreg>;
+ qca,bt-vdd-pa-supply = <&vph_pwr_vreg>;
+ qca,bt-vdd-io-supply = <&pm8994_s4>;
+ qca,bt-vdd-xtal-supply = <&vph_pwr_vreg>;
+ qca,bt-chip-pwd-voltage-level = <1300000 1300000>;
+ qca,bt-vdd-io-voltage-level = <1800000 1800000>;
+ qca,bt-vdd-xtal-voltage-level = <1800000 1800000>;
+ };
+};
+
+&ufs_ice {
+ status = "ok";
+};
+
+&sdcc1_ice {
+ status = "ok";
+};
+
+&ufsphy1 {
+ status = "ok";
+};
+
+&ufs1 {
+ status = "ok";
+};
+
+&uartblsp2dm1 {
+ status = "ok";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart_console_active>;
+};
+
+&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 = <110 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,clk-rates = <400000 20000000 25000000 50000000
+ 96000000 192000000 384000000>;
+ qcom,ice-clk-rates = <300000000 150000000>;
+ qcom,nonremovable;
+ 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>;
+
+ 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>;
+
+ qcom,clk-rates = <400000 20000000 25000000 50000000
+ 100000000 200000000>;
+ qcom,bus-speed-mode = "SDR12", "SDR25", "SDR50", "DDR50", "SDR104";
+
+ cd-gpios = <&tlmm 95 0x1>;
+
+ 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>;
+ };
+
+ chan@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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>;
+ };
+};
+
+&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;
+ };
+
+ chan@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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>;
+ qcom,btm-channel-number = <0x88>;
+ qcom,thermal-node;
+ };
+};
+
+&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>;
+};
+
+&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 "msm8996-mdss-panels.dtsi"
+
+&dsi_hx8379a_fwvga_truly_vid {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <255>;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <50>;
+ qcom,mdss-dsi-bl-pmic-bank-select = <0>;
+ qcom,mdss-dsi-pwm-gpio = <&pm8994_gpios 5 0>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&mdss_dsi {
+ hw-config = "split_dsi";
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_adv7533_720p>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
+
+ 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 = <3300000>;
+ qcom,supply-max-voltage = <3300000>;
+ 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>;
+ };
+ };
+};
+
+&mdss_dsi1 {
+ qcom,dsi-pref-prim-pan = <&dsi_adv7533_720p>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
+
+ 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 = <3300000>;
+ qcom,supply-max-voltage = <3300000>;
+ 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>;
+ };
+ };
+};
+
+&labibb {
+ status = "ok";
+ qpnp,qpnp-labibb-mode = "lcd";
+};
+
+&ibb_regulator {
+ qcom,qpnp-ibb-discharge-resistor = <32>;
+};
+
+&rpm_bus {
+ rpm-regulator-bstb {
+ status = "disabled";
+ regulator-bst {
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa22 {
+ pm8994_l22: regulator-l22 {
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3000000>;
+ qcom,init-voltage = <3000000>;
+ };
+ };
+};
+
+&pmi8994_charger {
+ /delete-property/ otg-parent-supply;
+ qcom,charging-disabled;
+ smbcharger_charger_otg {
+ parent-supply = <&pmi8994_boost_5v>;
+ };
+};
+
+&pmi8994_fg {
+ status = "disabled";
+};
+
+&pmi8994_charger {
+ status = "disabled";
+};
+
+&usb_otg_switch {
+ gpio = <&pm8994_gpios 11 0>;
+ enable-active-high;
+ status = "ok";
+};
+
+&usb3 {
+ qcom,charging-disabled;
+ vbus_dwc3-supply = <&usb_otg_switch>;
+};
+
+&usb2s {
+ status = "ok";
+ pinctrl-0 = <&usb_hub_reset_active>;
+ pinctrl-1 = <&usb_hub_reset_suspend>;
+ qcom,ext-hub-reset-gpio = <&tlmm 103 0>;
+ qcom,disable-host-mode-pm;
+ dwc3@7600000 {
+ dr_mode = "host";
+ };
+};
+
+&usb_nop_phy {
+ status = "ok";
+};
+
+&qusb_phy1 {
+ status = "ok";
+};
+
+&rome_vreg {
+ status = "disabled";
+};
+
+&pm8994_mpps {
+ 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 */
+ qcom,invert = <0>;
+ status = "okay";
+ };
+
+ mpp@a200 { /* MPP 3 */
+ 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>;
+ status = "okay";
+ };
+
+ 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>;
+ status = "okay";
+ };
+
+ mpp@a500 { /* MPP 6 */
+ 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>;
+ status = "okay";
+ };
+};
+
+
+&pmi8994_gpios {
+ gpio@c100 { /* GPIO 2 SPKR_SD_N */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c200 { /* GPIO 3 SPKR_SD_N */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c300 { /* GPIO 4 USB2_ID */
+ qcom,mode = <0>; /* DIGITAL INPUT */
+ qcom,pull = <5>; /* No Pull */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ status = "okay";
+ };
+
+ gpio@c500 { /* GPIO 6 USB2_VBUS_DET*/
+ qcom,mode = <0>; /* DIGITAL INPUT */
+ qcom,pull = <5>; /* No Pull */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ status = "okay";
+ };
+};
+
+&pmi8994_mpps {
+ mpp@a300 { /* MPP 4 */
+ /* WLED FET */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,vin-sel = <0>; /* VIN0 */
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+};
+
+&soc {
+ qcom,cnss {
+ wlan-bootstrap-gpio = <&tlmm 46 0>;
+ wlan-en-gpio = <&pm8994_gpios 8 0>;
+ vdd-wlan-io-supply = <&pm8994_s4>;
+ /* removing unneeded regulators */
+ /delete-property/ vdd-wlan-supply;
+ /delete-property/ vdd-wlan-xtal-supply;
+ /delete-property/ vdd-wlan-core-supply;
+ };
+
+ i2c@75ba000 {
+ synaptics@20 {
+ compatible = "synaptics,dsx";
+ reg = <0x20>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <125 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 480 854>;
+ synaptics,panel-coords = <0 0 480 854>;
+ synaptics,reset-gpio = <&tlmm 89 0x00>;
+ synaptics,irq-gpio = <&tlmm 125 0x2008>;
+ synaptics,button-map = <139 102 158>;
+ synaptics,disable-gpios;
+ /* Underlying clocks used by secure touch */
+ clock-names = "iface_clk", "core_clk";
+ clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp2_qup6_i2c_apps_clk>;
+ };
+ };
+
+ i2c@75b6000 { /* BLSP8 */
+ /* ADV7533 configuration */
+ adv7533@3d {
+ compatible = "adv7533";
+ instance_id = <0>;
+ reg = <0x3d>;
+ adi,video-mode = <3>; /* 3 = 1080p */
+ adi,main-addr = <0x3D>;
+ adi,cec-dsi-addr = <0x3E>;
+ adi,enable-audio;
+ pinctrl-names = "pmx_adv7533_active",
+ "pmx_adv7533_suspend";
+ pinctrl-0 = <&adv7533_0_int_active
+ &adv7533_0_hpd_int_active
+ &adv7533_0_switch_active>;
+ pinctrl-1 = <&adv7533_0_int_suspend
+ &adv7533_0_hpd_int_suspend
+ &adv7533_0_switch_suspend>;
+ adi,irq-gpio = <&tlmm 106 0x2002>;
+ adi,hpd-irq-gpio = <&tlmm 106 0x2003>;
+ adi,switch-gpio = <&tlmm 105 0x0>;
+ };
+
+ adv7533@39 {
+ compatible = "adv7533";
+ instance_id = <1>;
+ reg = <0x39>;
+ adi,video-mode = <3>; /* 3 = 1080p */
+ adi,main-addr = <0x39>;
+ adi,cec-dsi-addr = <0x3C>;
+ adi,enable-audio;
+ pinctrl-names = "pmx_adv7533_active",
+ "pmx_adv7533_suspend";
+ pinctrl-0 = <&adv7533_1_int_active
+ &adv7533_1_hpd_int_active
+ &adv7533_1_switch_active>;
+ pinctrl-1 = <&adv7533_1_int_suspend
+ &adv7533_1_hpd_int_suspend
+ &adv7533_1_switch_suspend>;
+ adi,irq-gpio = <&tlmm 108 0x2002>;
+ adi,hpd-irq-gpio = <&tlmm 106 0x2003>;
+ adi,switch-gpio = <&tlmm 107 0x0>;
+ };
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+
+ vol_up {
+ label = "volume_up";
+ gpios = <&pm8994_gpios 2 0x1>;
+ linux,input-type = <1>;
+ linux,code = <115>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+
+
+ gp_switch_gpio {
+ label = "gp_switch_gpio";
+ pinctrl-0 = <&gp_switch_active>;
+ pinctrl-1 = <&gp_switch_suspend>;
+ gpios = <&tlmm 127 0x1>;
+ linux,input-type = <1>;
+ linux,code = <158>; /* By default mapped to BACK */
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+ };
+
+ /*
+ * 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;
+ };
+
+
+ sound {
+ status = "disabled";
+ };
+
+ sound-9335 {
+ status = "disabled";
+ };
+
+ sound-auto {
+ compatible = "qcom,apq8096-asoc-snd-auto";
+ qcom,model = "apq8096-auto-snd-card";
+
+ asoc-platform = <&pcm0>, <&pcm1>, <&pcm2>, <&voip>, <&voice>,
+ <&loopback>, <&compress>, <&hostless>,
+ <&afe>, <&lsm>, <&routing>, <&compr>;
+ asoc-platform-names = "msm-pcm-dsp.0", "msm-pcm-dsp.1",
+ "msm-pcm-dsp.2", "msm-voip-dsp",
+ "msm-pcm-voice", "msm-pcm-loopback",
+ "msm-compress-dsp", "msm-pcm-hostless",
+ "msm-pcm-afe", "msm-lsm-client",
+ "msm-pcm-routing", "msm-compr-dsp";
+ asoc-cpu = <&dai_pri_auxpcm>, <&dai_sec_auxpcm>, <&dai_hdmi>,
+ <&dai_mi2s>, <&dai_mi2s_quat>,
+ <&afe_pcm_rx>, <&afe_pcm_tx>,
+ <&afe_proxy_rx>, <&afe_proxy_tx>,
+ <&incall_record_rx>, <&incall_record_tx>,
+ <&incall_music_rx>, <&incall_music2_rx>,
+ <&dai_tert_tdm_rx_0>, <&dai_tert_tdm_rx_1>,
+ <&dai_tert_tdm_rx_2>, <&dai_tert_tdm_rx_3>,
+ <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>,
+ <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>,
+ <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>,
+ <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>,
+ <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>,
+ <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>;
+ asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2",
+ "msm-dai-q6-hdmi.8",
+ "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3",
+ "msm-dai-q6-dev.224", "msm-dai-q6-dev.225",
+ "msm-dai-q6-dev.241", "msm-dai-q6-dev.240",
+ "msm-dai-q6-dev.32771", "msm-dai-q6-dev.32772",
+ "msm-dai-q6-dev.32773", "msm-dai-q6-dev.32770",
+ "msm-dai-q6-tdm.36896", "msm-dai-q6-tdm.36898",
+ "msm-dai-q6-tdm.36900", "msm-dai-q6-tdm.36902",
+ "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899",
+ "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903",
+ "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914",
+ "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918",
+ "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915",
+ "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919";
+ asoc-codec = <&stub_codec>;
+ asoc-codec-names = "msm-stub-codec.1";
+ };
+
+ usb_detect {
+ compatible = "qcom,gpio-usbdetect";
+ interrupt-parent = <&spmi_bus>;
+ interrupts = <0x0 0xd5 0x0>; /* PM8994 GPIO22 */
+ interrupt-names = "vbus_det_irq";
+ vin-supply = <&vph_pwr_vreg>;
+ };
+
+ spi@7575000 { /* BLSP1 QUP1 */
+ status = "disabled";
+ };
+
+ qcom,msm-dai-mi2s {
+ compatible = "qcom,msm-dai-mi2s";
+ dai_mi2s_quat: qcom,msm-dai-q6-mi2s-quat {
+ compatible = "qcom,msm-dai-q6-mi2s";
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&quat_mi2s_active &quat_mi2s_sd0_active>;
+ pinctrl-1 = <&quat_mi2s_sleep &quat_mi2s_sd0_sleep>;
+ };
+ };
+
+ qcom,msm-dai-tdm-tert-tx {
+ compatible = "qcom,msm-dai-tdm";
+ dai_tert_tdm_tx_0: qcom,msm-dai-q6-tdm-tert-tx-0 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-num-offset = <1>, <2>,
+ <3>, <4>;
+ qcom,msm-cpudai-tdm-offset = <0>, <0 4>,
+ <0 4 8>, <0 4 8 12>;
+ qcom,msm-cpudai-tdm-offset-data-align = <0>;
+ };
+
+ dai_tert_tdm_tx_1: qcom,msm-dai-q6-tdm-tert-tx-1 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-num-offset = <1>, <2>;
+ qcom,msm-cpudai-tdm-offset = <16>, <16 20>;
+ qcom,msm-cpudai-tdm-offset-data-align = <0>;
+ };
+
+ dai_tert_tdm_tx_2: qcom,msm-dai-q6-tdm-tert-tx-2 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-num-offset = <1>, <2>;
+ qcom,msm-cpudai-tdm-offset = <24>, <24 28>;
+ qcom,msm-cpudai-tdm-offset-data-align = <0>;
+ };
+ };
+
+ qcom,msm-dai-tdm-quat-rx {
+ compatible = "qcom,msm-dai-tdm";
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&quat_tdm_dout_active>;
+ pinctrl-1 = <&quat_tdm_dout_sleep>;
+ dai_quat_tdm_rx_0: qcom,msm-dai-q6-tdm-quat-rx-0 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-num-offset = <1>, <2>, <3>,
+ <4>, <5>, <6>;
+ qcom,msm-cpudai-tdm-offset = <0>, <0 4>, <0 4 8>,
+ <0 4 8 12>, <0 4 8 12 16>,
+ <0 4 8 12 16 20>;
+ qcom,msm-cpudai-tdm-offset-data-align = <0>;
+ qcom,msm-cpudai-tdm-header-start-offset = <0>;
+ qcom,msm-cpudai-tdm-header-width = <2>;
+ qcom,msm-cpudai-tdm-header-num-frame-repeat = <8>;
+ };
+
+ dai_quat_tdm_rx_1: qcom,msm-dai-q6-tdm-quat-rx-1 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-num-offset = <1>;
+ qcom,msm-cpudai-tdm-offset = <24>;
+ qcom,msm-cpudai-tdm-offset-data-align = <0>;
+ qcom,msm-cpudai-tdm-header-start-offset = <0>;
+ qcom,msm-cpudai-tdm-header-width = <2>;
+ qcom,msm-cpudai-tdm-header-num-frame-repeat = <8>;
+ };
+
+ dai_quat_tdm_rx_2: qcom,msm-dai-q6-tdm-quat-rx-2 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-num-offset = <1>;
+ qcom,msm-cpudai-tdm-offset = <28>;
+ qcom,msm-cpudai-tdm-offset-data-align = <0>;
+ qcom,msm-cpudai-tdm-header-start-offset = <0>;
+ qcom,msm-cpudai-tdm-header-width = <2>;
+ qcom,msm-cpudai-tdm-header-num-frame-repeat = <8>;
+ };
+ };
+
+ qcom,msm-dai-tdm-quat-tx {
+ compatible = "qcom,msm-dai-tdm";
+ dai_quat_tdm_tx_0: qcom,msm-dai-q6-tdm-quat-tx-0 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-num-offset = <1>, <2>,
+ <3>, <4>;
+ qcom,msm-cpudai-tdm-offset = <0>, <0 4>,
+ <0 4 8>, <0 4 8 12>;
+ qcom,msm-cpudai-tdm-offset-data-align = <0>;
+ };
+
+ dai_quat_tdm_tx_1: qcom,msm-dai-q6-tdm-quat-tx-1 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-num-offset = <1>, <2>;
+ qcom,msm-cpudai-tdm-offset = <16>, <16 20>;
+ qcom,msm-cpudai-tdm-offset-data-align = <0>;
+ };
+
+ dai_quat_tdm_tx_2: qcom,msm-dai-q6-tdm-quat-tx-2 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-num-offset = <1>, <2>;
+ qcom,msm-cpudai-tdm-offset = <24>, <24 28>;
+ qcom,msm-cpudai-tdm-offset-data-align = <0>;
+ };
+ };
+};
+
+&spmi_bus {
+ qcom,pm8994@1 {
+ pwm@b100 {
+ qcom,lpg-dtest-line = <4>;
+ qcom,dtest-output = <1>;
+ status = "okay";
+ };
+ };
+};
+
+&pm8994_gpios {
+ gpio@c100 { /* GPIO 2 - KYPD_VOLP_N */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c300 { /* GPIO 4 - BL1_PWM */
+ qcom,mode = <1>;
+ qcom,pull = <1>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <4>;
+ status = "okay";
+ };
+
+ gpio@c400 { /* GPIO 5 - BL0_PWM */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,pull = <1>; /* PULL DOWN */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <7>; /* LPG4 */
+ qcom,master-en = <1>; /* Enable GPIO */
+ status = "okay";
+ };
+
+ gpio@c600 { /* GPIO 7 */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ status = "okay";
+ };
+
+ gpio@c700 { /* GPIO 8 - WLAN_EN */
+ qcom,mode = <1>; /* Digital output*/
+ qcom,out-strength = <2>;/* QPNP_PIN_OUT_STRENGTH_MED */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c900 { /* GPIO 10 */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ status = "okay";
+ };
+
+ gpio@ca00 { /* GPIO 11 - USB enb1 (otg switch) */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,pull = <1>; /* PULL DOWN */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,master-en = <1>; /* Enable GPIO */
+ status = "okay";
+ };
+
+ gpio@cc00 { /* GPIO 13 */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,master-en = <1>; /* Enable GPIO */
+ status = "okay";
+ };
+
+ gpio@ce00 { /* GPIO 15 - DIVCLK1 */
+ 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>;
+ status = "okay";
+ };
+
+ gpio@cf00 { /* GPIO 16 - DIVCLK2 */
+ 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>;
+ status = "okay";
+ };
+
+ gpio@d000 { /* GPIO 17 - DIVCLK3 */
+ 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>;
+ status = "okay";
+ };
+
+ gpio@d100 { /* GPIO 18 - Rome Sleep Clock */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@d200 { /* GPIO 19 - Rome BT Reset */
+ qcom,mode = <1>; /* Digital output*/
+ qcom,out-strength = <2>; /* QPNP_PIN_OUT_STRENGTH_MED */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@d500 { /* GPIO 22 - USB1 VBUS detect */
+ qcom,mode = <0>; /* Digital Input*/
+ qcom,pull = <5>; /* No pull */
+ qcom,vin-sel = <2>; /* 1.8 V */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,invert = <0>; /* Invert */
+ qcom,master-en = <1>; /* Enable GPIO */
+ status = "okay";
+ };
+};
+
+&pmi8994_haptics {
+ status = "okay";
+};
+
+&blsp1_uart2 {
+ status = "ok";
+};
+
+&slim_msm {
+ tasha_codec {
+ qcom,cdc-micbias2-headset-only;
+ qcom,cdc-micbias1-ext-cap;
+ qcom,cdc-micbias2-ext-cap;
+ qcom,cdc-micbias3-ext-cap;
+ qcom,cdc-micbias4-ext-cap;
+ };
+};
+
+&cam_sensor_mclk0_active { /* MCLK0 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
+
+&cam_sensor_mclk0_suspend { /* MCLK0 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
+
+&cam_sensor_mclk1_active { /* MCLK1 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
+
+&cam_sensor_mclk1_suspend { /* MCLK1 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
+
+&cam_sensor_mclk2_active { /* MCLK2 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
+
+&cam_sensor_mclk2_suspend { /* MCLK2 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-camera-sensor-dragonboard.dtsi b/arch/arm64/boot/dts/qcom/apq8096-camera-sensor-dragonboard.dtsi
new file mode 100644
index 000000000000..fab3415f6ad0
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-camera-sensor-dragonboard.dtsi
@@ -0,0 +1,255 @@
+/*
+ * Copyright (c) 2015 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.
+ */
+
+/*
+ * Note: default configuration is for the camera modules to be powered
+ * by the PMIC from the CSI connector. Alternative configuration is for
+ * self-powered camera modules.
+ */
+&cci {
+ actuator0: qcom,actuator@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ compatible = "qcom,actuator";
+ qcom,cci-master = <0>;
+ cam_vaf-supply = <&pm8994_l23>;
+ /* cam_vaf-supply = <&vph_pwr_vreg>; */
+ qcom,cam-vreg-name = "cam_vaf";
+ 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 = <1>;
+ cam_vaf-supply = <&pm8994_l23>;
+ /* cam_vaf-supply = <&vph_pwr_vreg>; */
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ };
+
+ eeprom0: qcom,eeprom@0 {
+ cell-index = <0>;
+ reg = <0>;
+ qcom,eeprom-name = "onsemi_cat24c32";
+ compatible = "qcom,eeprom";
+ qcom,slave-addr = <0xa0>;
+ qcom,cci-master = <0>;
+ qcom,num-blocks = <1>;
+ qcom,page0 = <0 0 0 0 0 0>;
+ qcom,poll0 = <0 0 0 0 0 0>;
+ qcom,saddr0 = <0xa0>;
+ qcom,mem0 = <2245 0x00 2 0 1 0>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ /* cam_vio-supply = <&vph_pwr_vreg>; */
+ qcom,cam-vreg-name = "cam_vio";
+ qcom,cam-vreg-min-voltage = <0>;
+ qcom,cam-vreg-max-voltage = <0>;
+ qcom,cam-vreg-op-mode = <0>;
+ qcom,cam-power-seq-type = "sensor_vreg";
+ qcom,cam-power-seq-val = "cam_vio";
+ qcom,cam-power-seq-cfg-val = <1>;
+ qcom,cam-power-seq-delay = <1>;
+ };
+
+ eeprom1: qcom,eeprom@1 {
+ cell-index = <1>;
+ reg = <0x1>;
+ qcom,eeprom-name = "onsemi_cat24c16";
+ compatible = "qcom,eeprom";
+ qcom,slave-addr = <0xa0>;
+ qcom,cci-master = <1>;
+ qcom,num-blocks = <7>;
+
+ qcom,page0 = <0 0 0 0 0 0>;
+ qcom,poll0 = <0 0 0 0 0 0>;
+ qcom,saddr0 = <0xa0>;
+ qcom,mem0 = <256 0x00 1 0 1 0>;
+
+ qcom,page1 = <0 0 0 0 0 0>;
+ qcom,poll1 = <0 0 0 0 0 0>;
+ qcom,saddr1 = <0xa2>;
+ qcom,mem1 = <256 0x00 1 0 1 0>;
+
+ qcom,page2 = <0 0 0 0 0 0>;
+ qcom,poll2 = <0 0 0 0 0 0>;
+ qcom,saddr2 = <0xa4>;
+ qcom,mem2 = <256 0x00 1 0 1 0>;
+
+ qcom,page3 = <0 0 0 0 0 0>;
+ qcom,poll3 = <0 0 0 0 0 0>;
+ qcom,saddr3 = <0xa6>;
+ qcom,mem3 = <256 0x00 1 0 1 0>;
+
+ qcom,page4 = <0 0 0 0 0 0>;
+ qcom,poll4 = <0 0 0 0 0 0>;
+ qcom,saddr4 = <0xa8>;
+ qcom,mem4 = <256 0x00 1 0 1 0>;
+
+ qcom,page5 = <0 0 0 0 0 0>;
+ qcom,poll5 = <0 0 0 0 0 0>;
+ qcom,saddr5 = <0xaa>;
+ qcom,mem5 = <256 0x00 1 0 1 0>;
+
+ qcom,page6 = <0 0 0 0 0 0>;
+ qcom,poll6 = <0 0 0 0 0 0>;
+ qcom,saddr6 = <0xac>;
+ qcom,mem6 = <254 0x00 1 0 1 0>;
+
+ cam_vio-supply = <&pm8994_lvs1>;
+ /* cam_vio-supply = <&vph_pwr_vreg>; */
+ qcom,cam-vreg-name = "cam_vio";
+ qcom,cam-vreg-min-voltage = <0>;
+ qcom,cam-vreg-max-voltage = <0>;
+ qcom,cam-vreg-op-mode = <0>;
+ qcom,cam-power-seq-type = "sensor_vreg";
+ qcom,cam-power-seq-val = "cam_vio";
+ qcom,cam-power-seq-cfg-val = <1>;
+ qcom,cam-power-seq-delay = <1>;
+ };
+
+ 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>;
+ qcom,eeprom-src = <&eeprom0>;
+ cam_vdig-supply = <&vph_pwr_vreg>;
+ /* Cameras powered by PMIC: */
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ /* Self-powered cameras: */
+ /* cam_vio-supply = <&vph_pwr_vreg>; */
+ /* cam_vana-supply = <&vph_pwr_vreg>; */
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1300000 0 2500000>;
+ qcom,cam-vreg-max-voltage = <1300000 0 2500000>;
+ 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_csi0_sensor_active>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_csi0_sensor_suspend>;
+ gpios = <&tlmm 13 0>,
+ <&tlmm 25 0>,
+ <&tlmm 26 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 = <0>;
+ cam_vdig-supply = <&vph_pwr_vreg>;
+ /* Cameras powered by PMIC: */
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l18>;
+ /* Self-powered cameras: */
+ /* cam_vio-supply = <&vph_pwr_vreg>; */
+ /* cam_vana-supply = <&vph_pwr_vreg>; */
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1000000 0 3150000>;
+ qcom,cam-vreg-max-voltage = <1000000 0 3600000>;
+ 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_csi1_sensor_active>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_csi1_sensor_suspend>;
+ gpios = <&tlmm 14 0>,
+ <&tlmm 104 0>,
+ <&tlmm 98 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 = <0>;
+ qcom,eeprom-src = <&eeprom1>;
+ qcom,actuator-src = <&actuator1>;
+ /* Cameras powered by PMIC: */
+ cam_vdig-supply = <&vph_pwr_vreg>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l29>;
+ /* Self-powered cameras: */
+ /* cam_vio-supply = <&vph_pwr_vreg>; */
+ /* cam_vana-supply = <&vph_pwr_vreg>; */
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1000000 0 2800000>;
+ qcom,cam-vreg-max-voltage = <1000000 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_csi2_sensor_active>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_csi2_sensor_suspend>;
+ gpios = <&tlmm 15 0>,
+ <&tlmm 23 0>,
+ <&tlmm 133 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 = <1>;
+ 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/apq8096-camera-sensor-sbc.dtsi b/arch/arm64/boot/dts/qcom/apq8096-camera-sensor-sbc.dtsi
new file mode 100644
index 000000000000..cd94cc41593d
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-camera-sensor-sbc.dtsi
@@ -0,0 +1,237 @@
+/*
+ * Copyright (c) 2015 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.
+ */
+
+/*
+ * Note: default configuration is for self-powered camera modules.
+ */
+&cci {
+ actuator0: qcom,actuator@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ compatible = "qcom,actuator";
+ qcom,cci-master = <0>;
+ cam_vaf-supply = <&vph_pwr_vreg>;
+ qcom,cam-vreg-name = "cam_vaf";
+ 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 = <1>;
+ cam_vaf-supply = <&vph_pwr_vreg>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ };
+
+ eeprom0: qcom,eeprom@0 {
+ cell-index = <0>;
+ reg = <0>;
+ qcom,eeprom-name = "onsemi_cat24c32";
+ compatible = "qcom,eeprom";
+ qcom,slave-addr = <0xa0>;
+ qcom,cci-master = <0>;
+ qcom,num-blocks = <1>;
+ qcom,page0 = <0 0 0 0 0 0>;
+ qcom,poll0 = <0 0 0 0 0 0>;
+ qcom,saddr0 = <0xa0>;
+ qcom,mem0 = <2245 0x00 2 0 1 0>;
+ cam_vio-supply = <&vph_pwr_vreg>;
+ qcom,cam-vreg-name = "cam_vio";
+ qcom,cam-vreg-min-voltage = <0>;
+ qcom,cam-vreg-max-voltage = <0>;
+ qcom,cam-vreg-op-mode = <0>;
+ qcom,cam-power-seq-type = "sensor_vreg";
+ qcom,cam-power-seq-val = "cam_vio";
+ qcom,cam-power-seq-cfg-val = <1>;
+ qcom,cam-power-seq-delay = <1>;
+ };
+
+ eeprom1: qcom,eeprom@1 {
+ cell-index = <1>;
+ reg = <0x1>;
+ qcom,eeprom-name = "onsemi_cat24c16";
+ compatible = "qcom,eeprom";
+ qcom,slave-addr = <0xa0>;
+ qcom,cci-master = <1>;
+ qcom,num-blocks = <7>;
+
+ qcom,page0 = <0 0 0 0 0 0>;
+ qcom,poll0 = <0 0 0 0 0 0>;
+ qcom,saddr0 = <0xa0>;
+ qcom,mem0 = <256 0x00 1 0 1 0>;
+
+ qcom,page1 = <0 0 0 0 0 0>;
+ qcom,poll1 = <0 0 0 0 0 0>;
+ qcom,saddr1 = <0xa2>;
+ qcom,mem1 = <256 0x00 1 0 1 0>;
+
+ qcom,page2 = <0 0 0 0 0 0>;
+ qcom,poll2 = <0 0 0 0 0 0>;
+ qcom,saddr2 = <0xa4>;
+ qcom,mem2 = <256 0x00 1 0 1 0>;
+
+ qcom,page3 = <0 0 0 0 0 0>;
+ qcom,poll3 = <0 0 0 0 0 0>;
+ qcom,saddr3 = <0xa6>;
+ qcom,mem3 = <256 0x00 1 0 1 0>;
+
+ qcom,page4 = <0 0 0 0 0 0>;
+ qcom,poll4 = <0 0 0 0 0 0>;
+ qcom,saddr4 = <0xa8>;
+ qcom,mem4 = <256 0x00 1 0 1 0>;
+
+ qcom,page5 = <0 0 0 0 0 0>;
+ qcom,poll5 = <0 0 0 0 0 0>;
+ qcom,saddr5 = <0xaa>;
+ qcom,mem5 = <256 0x00 1 0 1 0>;
+
+ qcom,page6 = <0 0 0 0 0 0>;
+ qcom,poll6 = <0 0 0 0 0 0>;
+ qcom,saddr6 = <0xac>;
+ qcom,mem6 = <254 0x00 1 0 1 0>;
+
+ cam_vio-supply = <&vph_pwr_vreg>;
+ qcom,cam-vreg-name = "cam_vio";
+ qcom,cam-vreg-min-voltage = <0>;
+ qcom,cam-vreg-max-voltage = <0>;
+ qcom,cam-vreg-op-mode = <0>;
+ qcom,cam-power-seq-type = "sensor_vreg";
+ qcom,cam-power-seq-val = "cam_vio";
+ qcom,cam-power-seq-cfg-val = <1>;
+ qcom,cam-power-seq-delay = <1>;
+ };
+
+ 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>;
+ qcom,eeprom-src = <&eeprom0>;
+ cam_vdig-supply = <&vph_pwr_vreg>;
+ cam_vio-supply = <&vph_pwr_vreg>;
+ cam_vana-supply = <&vph_pwr_vreg>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1300000 0 2500000>;
+ qcom,cam-vreg-max-voltage = <1300000 0 2500000>;
+ 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_csi0_sensor_active>;
+ pinctrl-1 = <&cam_sensor_mclk0_suspend
+ &cam_csi0_sensor_suspend>;
+ gpios = <&tlmm 13 0>,
+ <&tlmm 25 0>,
+ <&tlmm 26 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 = <0>;
+ cam_vdig-supply = <&vph_pwr_vreg>;
+ cam_vio-supply = <&vph_pwr_vreg>;
+ cam_vana-supply = <&vph_pwr_vreg>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1000000 0 3150000>;
+ qcom,cam-vreg-max-voltage = <1000000 0 3600000>;
+ 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_csi1_sensor_active>;
+ pinctrl-1 = <&cam_sensor_mclk1_suspend
+ &cam_csi1_sensor_suspend>;
+ gpios = <&tlmm 14 0>,
+ <&tlmm 104 0>,
+ <&tlmm 98 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 = <0>;
+ qcom,eeprom-src = <&eeprom1>;
+ qcom,actuator-src = <&actuator1>;
+ cam_vdig-supply = <&vph_pwr_vreg>;
+ cam_vio-supply = <&vph_pwr_vreg>;
+ cam_vana-supply = <&vph_pwr_vreg>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1000000 0 2800000>;
+ qcom,cam-vreg-max-voltage = <1000000 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_csi2_sensor_active>;
+ pinctrl-1 = <&cam_sensor_mclk2_suspend
+ &cam_csi2_sensor_suspend>;
+ gpios = <&tlmm 15 0>,
+ <&tlmm 23 0>,
+ <&tlmm 133 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 = <1>;
+ 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/apq8096-dragonboard.dtsi b/arch/arm64/boot/dts/qcom/apq8096-dragonboard.dtsi
new file mode 100644
index 000000000000..2830c055d224
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-dragonboard.dtsi
@@ -0,0 +1,873 @@
+/* Copyright (c) 2015, 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 "msm8996-pinctrl.dtsi"
+#include "apq8096-camera-sensor-dragonboard.dtsi"
+
+/ {
+ bluetooth: bt_qca6174 {
+ compatible = "qca,qca6174";
+ qca,bt-reset-gpio = <&pm8994_gpios 19 0>; /* BT_EN */
+ qca,bt-vdd-core-supply = <&vph_pwr_vreg>;
+ qca,bt-vdd-pa-supply = <&vph_pwr_vreg>;
+ qca,bt-vdd-io-supply = <&pm8994_s4>;
+ qca,bt-vdd-xtal-supply = <&vph_pwr_vreg>;
+ qca,bt-chip-pwd-voltage-level = <1300000 1300000>;
+ qca,bt-vdd-io-voltage-level = <1800000 1800000>;
+ qca,bt-vdd-xtal-voltage-level = <1800000 1800000>;
+ };
+};
+
+&ufs_ice {
+ status = "ok";
+};
+
+&sdcc1_ice {
+ status = "ok";
+};
+
+&ufsphy1 {
+ status = "ok";
+};
+
+&ufs1 {
+ status = "ok";
+};
+
+&uartblsp2dm1 {
+ status = "ok";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart_console_active>;
+};
+
+&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 = <110 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,clk-rates = <400000 20000000 25000000 50000000
+ 96000000 192000000 384000000>;
+ qcom,ice-clk-rates = <300000000 150000000>;
+ qcom,nonremovable;
+ 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>;
+
+ 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>;
+
+ qcom,clk-rates = <400000 20000000 25000000 50000000
+ 100000000 200000000>;
+ qcom,bus-speed-mode = "SDR12", "SDR25", "SDR50", "DDR50", "SDR104";
+
+ cd-gpios = <&tlmm 95 0x1>;
+
+ 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>;
+ };
+
+ chan@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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>;
+ };
+};
+
+&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;
+ };
+
+ chan@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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>;
+ qcom,btm-channel-number = <0x88>;
+ qcom,thermal-node;
+ };
+};
+
+&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>;
+};
+
+&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 "msm8996-mdss-panels.dtsi"
+
+&dsi_hx8379a_fwvga_truly_vid {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <255>;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <50>;
+ qcom,mdss-dsi-bl-pmic-bank-select = <0>;
+ qcom,mdss-dsi-pwm-gpio = <&pm8994_gpios 5 0>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&mdss_dsi {
+ hw-config = "single_dsi";
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_hx8379a_fwvga_truly_vid>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active &mdss_disp_bkl_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend &mdss_disp_bkl_suspend>;
+ qcom,platform-te-gpio = <&tlmm 10 0>;
+ qcom,platform-reset-gpio = <&tlmm 8 0>;
+ qcom,platform-bklight-en-gpio = <&tlmm 135 0>;
+};
+
+&mdss_dsi1 {
+ status = "disabled";
+};
+
+&labibb {
+ status = "ok";
+ qpnp,qpnp-labibb-mode = "lcd";
+};
+
+&rpm_bus {
+ rpm-regulator-bstb {
+ status = "disabled";
+ regulator-bst {
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa22 {
+ pm8994_l22: regulator-l22 {
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3000000>;
+ qcom,init-voltage = <3000000>;
+ };
+ };
+};
+
+&pmi8994_charger {
+ /delete-property/ otg-parent-supply;
+ qcom,charging-disabled;
+ smbcharger_charger_otg {
+ parent-supply = <&pmi8994_boost_5v>;
+ };
+};
+
+&pmi8994_fg {
+ status = "disabled";
+};
+
+&pmi8994_charger {
+ status = "disabled";
+};
+
+&usb_otg_switch {
+ gpio = <&pm8994_gpios 11 0>;
+ enable-active-high;
+ status = "ok";
+};
+
+&usb3 {
+ qcom,charging-disabled;
+ vbus_dwc3-supply = <&usb_otg_switch>;
+};
+
+&usb2s {
+ status = "ok";
+ pinctrl-0 = <&usb_hub_reset_active>;
+ pinctrl-1 = <&usb_hub_reset_suspend>;
+ qcom,ext-hub-reset-gpio = <&tlmm 103 0>;
+ qcom,disable-host-mode-pm;
+ dwc3@7600000 {
+ dr_mode = "host";
+ };
+};
+
+&usb_nop_phy {
+ status = "ok";
+};
+
+&qusb_phy0 {
+ qcom,qusb-phy-init-seq = <0xF8 0x80
+ 0x63 0x84
+ 0x83 0x88
+ 0xC5 0x8C
+ 0x30 0x08
+ 0x79 0x0C
+ 0x21 0x10
+ 0x14 0x9C
+ 0x9F 0x1C
+ 0x00 0x18>;
+};
+
+&qusb_phy1 {
+ status = "ok";
+};
+
+&rome_vreg {
+ status = "disabled";
+};
+
+&pm8994_l16 { /* GPS ELNA */
+ status = "okay";
+ regulator-always-on;
+};
+
+&pm8994_mpps {
+ 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 */
+ qcom,invert = <0>;
+ status = "okay";
+ };
+
+ mpp@a200 { /* MPP 3 */
+ 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>;
+ status = "okay";
+ };
+
+ 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>;
+ status = "okay";
+ };
+
+ mpp@a500 { /* MPP 6 */
+ 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>;
+ status = "okay";
+ };
+};
+
+
+&pmi8994_gpios {
+ gpio@c100 { /* GPIO 2 SPKR_SD_N */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c200 { /* GPIO 3 SPKR_SD_N */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c300 { /* GPIO 4 USB2_ID */
+ qcom,mode = <0>; /* DIGITAL INPUT */
+ qcom,pull = <5>; /* No Pull */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ status = "okay";
+ };
+
+ gpio@c500 { /* GPIO 6 USB2_VBUS_DET*/
+ qcom,mode = <0>; /* DIGITAL INPUT */
+ qcom,pull = <5>; /* No Pull */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ status = "okay";
+ };
+};
+
+&pmi8994_mpps {
+ mpp@a300 { /* MPP 4 */
+ /* WLED FET */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,vin-sel = <0>; /* VIN0 */
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+};
+
+&soc {
+ qcom,cnss {
+ wlan-bootstrap-gpio = <&tlmm 46 0>;
+ wlan-en-gpio = <&pm8994_gpios 8 0>;
+ vdd-wlan-io-supply = <&pm8994_s4>;
+ // removing unneeded regulators
+ /delete-property/ vdd-wlan-supply;
+ /delete-property/ vdd-wlan-xtal-supply;
+ /delete-property/ vdd-wlan-core-supply;
+ };
+
+ i2c@75ba000 {
+ synaptics@20 {
+ compatible = "synaptics,dsx";
+ reg = <0x20>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <125 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 480 854>;
+ synaptics,panel-coords = <0 0 480 854>;
+ synaptics,reset-gpio = <&tlmm 89 0x00>;
+ synaptics,irq-gpio = <&tlmm 125 0x2008>;
+ synaptics,button-map = <139 102 158>;
+ synaptics,disable-gpios;
+ /* Underlying clocks used by secure touch */
+ clock-names = "iface_clk", "core_clk";
+ clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp2_qup6_i2c_apps_clk>;
+ };
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+
+ vol_up {
+ label = "volume_up";
+ gpios = <&pm8994_gpios 2 0x1>;
+ linux,input-type = <1>;
+ linux,code = <115>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+
+
+ gp_switch_gpio {
+ label = "gp_switch_gpio";
+ pinctrl-0 = <&gp_switch_active>;
+ pinctrl-1 = <&gp_switch_suspend>;
+ gpios = <&tlmm 127 0x1>;
+ linux,input-type = <1>;
+ linux,code = <158>; /* By default mapped to BACK */
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+ };
+
+ /*
+ * 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;
+ };
+
+
+ sound {
+ status = "disabled";
+ };
+
+ sound-9335 {
+ qcom,model = "msm8996-tasha-db-snd-card";
+
+ qcom,audio-routing =
+ "RX_BIAS", "MCLK",
+ "AMIC1", "MIC BIAS3",
+ "MIC BIAS3", "Analog Mic4",
+ "AMIC2", "MIC BIAS2",
+ "MIC BIAS2", "Headset Mic",
+ "AMIC3", "MIC BIAS2",
+ "MIC BIAS2", "ANCLeft Headset Mic",
+ "AMIC4", "MIC BIAS2",
+ "MIC BIAS2", "ANCRight Headset Mic",
+ "AMIC5", "MIC BIAS3",
+ "MIC BIAS3", "Analog Mic6",
+ "AMIC6", "MIC BIAS4",
+ "MIC BIAS4", "Analog Mic7",
+ "DMIC0", "MIC BIAS1",
+ "MIC BIAS1", "Digital Mic0",
+ "DMIC1", "MIC BIAS3",
+ "MIC BIAS3", "Digital Mic1",
+ "DMIC2", "MIC BIAS4",
+ "MIC BIAS4", "Digital Mic2",
+ "DMIC3", "MIC BIAS1",
+ "MIC BIAS1", "Digital Mic3",
+ "DMIC4", "MIC BIAS3",
+ "MIC BIAS3", "Digital Mic4",
+ "DMIC5", "MIC BIAS4",
+ "MIC BIAS4", "Digital Mic5";
+
+ qcom,hdmi-audio-rx;
+ asoc-codec = <&stub_codec>, <&hdmi_audio>;
+ asoc-codec-names = "msm-stub-codec.1",
+ "msm-hdmi-audio-codec-rx";
+ };
+
+ usb_detect {
+ compatible = "qcom,gpio-usbdetect";
+ interrupt-parent = <&spmi_bus>;
+ interrupts = <0x0 0xd5 0x0>; /* PM8994 GPIO22 */
+ interrupt-names = "vbus_det_irq";
+ vin-supply = <&vph_pwr_vreg>;
+ };
+
+ spi@7575000 { /* BLSP1 QUP1 */
+ status = "disabled";
+ };
+};
+
+&spmi_bus {
+ qcom,pm8994@1 {
+ pwm@b100 {
+ qcom,lpg-dtest-line = <4>;
+ qcom,dtest-output = <1>;
+ status = "okay";
+ };
+ };
+};
+
+&pm8994_gpios {
+ gpio@c100 { /* GPIO 2 - KYPD_VOLP_N */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c300 { /* GPIO 4 - BL1_PWM */
+ qcom,mode = <1>;
+ qcom,pull = <1>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <4>;
+ status = "okay";
+ };
+
+ gpio@c400 { /* GPIO 5 - BL0_PWM */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,pull = <1>; /* PULL DOWN */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <7>; /* LPG4 */
+ qcom,master-en = <1>; /* Enable GPIO */
+ status = "okay";
+ };
+
+ gpio@c600 { /* GPIO 7 */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ status = "okay";
+ };
+
+ gpio@c700 { /* GPIO 8 - WLAN_EN */
+ qcom,mode = <1>; /* Digital output*/
+ qcom,out-strength = <2>;/* QPNP_PIN_OUT_STRENGTH_MED */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c900 { /* GPIO 10 */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ status = "okay";
+ };
+
+ gpio@ca00 { /* GPIO 11 - USB enb1 (otg switch) */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,pull = <1>; /* PULL DOWN */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,master-en = <1>; /* Enable GPIO */
+ status = "okay";
+ };
+
+ gpio@cc00 { /* GPIO 13 */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,master-en = <1>; /* Enable GPIO */
+ status = "okay";
+ };
+
+ gpio@ce00 { /* GPIO 15 - DIVCLK1 */
+ 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>;
+ status = "okay";
+ };
+
+ gpio@cf00 { /* GPIO 16 - DIVCLK2 */
+ 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>;
+ status = "okay";
+ };
+
+ gpio@d000 { /* GPIO 17 - DIVCLK3 */
+ 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>;
+ status = "okay";
+ };
+
+ gpio@d100 { /* GPIO 18 - Rome Sleep Clock */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@d200 { /* GPIO 19 - Rome BT Reset */
+ qcom,mode = <1>; /* Digital output*/
+ qcom,out-strength = <2>; /* QPNP_PIN_OUT_STRENGTH_MED */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@d500 { /* GPIO 22 - USB1 VBUS detect */
+ qcom,mode = <0>; /* Digital Input*/
+ qcom,pull = <5>; /* No pull */
+ qcom,vin-sel = <2>; /* 1.8 V */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,invert = <0>; /* Invert */
+ qcom,master-en = <1>; /* Enable GPIO */
+ status = "okay";
+ };
+};
+
+&pmi8994_haptics {
+ status = "okay";
+};
+
+&blsp1_uart2 {
+ status = "ok";
+};
+
+&slim_msm {
+ tasha_codec {
+ qcom,cdc-micbias2-headset-only;
+ qcom,cdc-micbias1-ext-cap;
+ qcom,cdc-micbias2-ext-cap;
+ qcom,cdc-micbias3-ext-cap;
+ qcom,cdc-micbias4-ext-cap;
+ };
+};
+
+&cam_sensor_mclk0_active { /* MCLK0 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
+
+&cam_sensor_mclk0_suspend { /* MCLK0 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
+
+&cam_sensor_mclk1_active { /* MCLK1 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
+
+&cam_sensor_mclk1_suspend { /* MCLK1 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
+
+&cam_sensor_mclk2_active { /* MCLK2 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
+
+&cam_sensor_mclk2_suspend { /* MCLK2 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
+
+&wil6210 {
+ status = "ok";
+ /delete-property/ qcom,wigig-en;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-sbc.dtsi b/arch/arm64/boot/dts/qcom/apq8096-sbc.dtsi
new file mode 100644
index 000000000000..098a524ca3cb
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-sbc.dtsi
@@ -0,0 +1,783 @@
+/* Copyright (c) 2015, 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 "msm8996-pinctrl.dtsi"
+#include "apq8096-camera-sensor-sbc.dtsi"
+
+/ {
+ bluetooth: bt_qca6174 {
+ compatible = "qca,qca6174";
+ qca,bt-reset-gpio = <&pm8994_gpios 19 0>; /* BT_EN */
+ qca,bt-vdd-core-supply = <&vph_pwr_vreg>;
+ qca,bt-vdd-pa-supply = <&vph_pwr_vreg>;
+ qca,bt-vdd-io-supply = <&pm8994_s4>;
+ qca,bt-vdd-xtal-supply = <&vph_pwr_vreg>;
+ qca,bt-chip-pwd-voltage-level = <1300000 1300000>;
+ qca,bt-vdd-io-voltage-level = <1800000 1800000>;
+ qca,bt-vdd-xtal-voltage-level = <1800000 1800000>;
+ };
+};
+
+&ufs_ice {
+ status = "ok";
+};
+
+&ufsphy1 {
+ status = "ok";
+};
+
+&ufs1 {
+ status = "ok";
+};
+
+&uartblsp2dm1 {
+ status = "ok";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart_console_active>;
+};
+
+&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 = <110 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,clk-rates = <400000 20000000 25000000 50000000
+ 96000000 192000000 384000000>;
+ qcom,nonremovable;
+ 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>;
+
+ pinctrl-names = "active", "sleep";
+ pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on
+ &sdc2_cd_on_sbc>;
+ pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off
+ &sdc2_cd_off_sbc>;
+
+ qcom,clk-rates = <400000 20000000 25000000 50000000
+ 100000000 200000000>;
+ qcom,bus-speed-mode = "SDR12", "SDR25", "SDR50", "DDR50", "SDR104";
+
+ cd-gpios = <&tlmm 38 0x1>;
+
+ 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>;
+ };
+
+ chan@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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>;
+ };
+};
+
+&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;
+ };
+
+ chan@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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>;
+ qcom,btm-channel-number = <0x88>;
+ qcom,thermal-node;
+ };
+};
+
+&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>;
+};
+
+&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 "msm8996-mdss-panels.dtsi"
+
+&dsi_hx8379a_fwvga_truly_vid {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <255>;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <50>;
+ qcom,mdss-dsi-bl-pmic-bank-select = <0>;
+ qcom,mdss-dsi-pwm-gpio = <&pm8994_gpios 5 0>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&mdss_dsi {
+ hw-config = "single_dsi";
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_hx8379a_fwvga_truly_vid>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active &mdss_disp_bkl_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend &mdss_disp_bkl_suspend>;
+ qcom,platform-te-gpio = <&tlmm 10 0>;
+ qcom,platform-reset-gpio = <&tlmm 8 0>;
+};
+
+&mdss_dsi1 {
+ status = "disabled";
+};
+
+&labibb {
+ status = "ok";
+ qpnp,qpnp-labibb-mode = "lcd";
+};
+
+&ibb_regulator {
+ qcom,qpnp-ibb-discharge-resistor = <32>;
+};
+
+&rpm_bus {
+ rpm-regulator-bstb {
+ status = "disabled";
+ regulator-bst {
+ status = "disabled";
+ };
+ };
+
+ rpm-regulator-ldoa22 {
+ pm8994_l22: regulator-l22 {
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3000000>;
+ qcom,init-voltage = <3000000>;
+ };
+ };
+};
+
+&pmi8994_charger {
+ /delete-property/ otg-parent-supply;
+ qcom,charging-disabled;
+ smbcharger_charger_otg {
+ parent-supply = <&pmi8994_boost_5v>;
+ };
+};
+
+&pmi8994_fg {
+ status = "disabled";
+};
+
+&pmi8994_charger {
+ status = "disabled";
+};
+
+&usb_otg_switch {
+ gpio = <&pm8994_gpios 11 0>;
+ enable-active-high;
+ status = "ok";
+};
+
+&usb3 {
+ status = "disabled";
+ qcom,charging-disabled;
+ vbus_dwc3-supply = <&usb_otg_switch>;
+ qcom,ext-hub-reset-gpio = <&tlmm 103 0>;
+ qcom,disable-host-mode-pm;
+ dwc3@6a00000{
+ dr_mode = "host";
+ };
+};
+
+&usb2s {
+ status = "ok";
+ qcom,charging-disabled;
+ vbus_dwc3-supply = <&vph_pwr_vreg>;
+ qcom,usbin-vadc = <&pmi8994_vadc>;
+ vdda33-supply = <&pm8994_l24>;
+};
+
+&usb_nop_phy {
+ status = "ok";
+};
+
+&qusb_phy1 {
+ status = "ok";
+};
+
+&rome_vreg {
+ status = "disabled";
+};
+
+&pm8994_mpps {
+ mpp@a100 { /* MPP 2 */
+ qcom,mode = <0>; /* DIGITAL INPUT */
+ qcom,vin-sel = <0>; /* VPH_PWR */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,master-en = <1>; /* Enable GPIO */
+ qcom,invert = <0>;
+ status = "okay";
+ };
+
+ mpp@a300 { /* MPP 4 */
+ qcom,mode = <0>; /* DIGITAL INPUT */
+ qcom,vin-sel = <0>; /* VPH_PWR */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,master-en = <1>; /* Enable GPIO */
+ qcom,invert = <0>;
+ status = "okay";
+ };
+};
+
+
+&pmi8994_gpios {
+ gpio@c100 { /* GPIO 2 SPKR_SD_N */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c200 { /* GPIO 3 SPKR_SD_N */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c500 { /* GPIO 6 USB2_VBUS_DET*/
+ qcom,mode = <0>; /* DIGITAL INPUT */
+ qcom,pull = <5>; /* No Pull */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ status = "okay";
+ };
+};
+
+&pmi8994_mpps {
+ mpp@a100 { /* MPP 2 */
+ /* USER LED4 */
+ qcom,mode = <0>; /* DIGITAL INPUT */
+ qcom,vin-sel = <0>; /* VPH_PWR */
+ qcom,master-en = <1>; /* Enable GPIO */
+ status = "okay";
+ };
+};
+
+&soc {
+ qcom,cnss {
+ wlan-bootstrap-gpio = <&tlmm 46 0>;
+ wlan-en-gpio = <&pm8994_gpios 8 0>;
+ vdd-wlan-io-supply = <&pm8994_s4>;
+ // removing unneeded regulators
+ /delete-property/ vdd-wlan-supply;
+ /delete-property/ vdd-wlan-xtal-supply;
+ /delete-property/ vdd-wlan-core-supply;
+ };
+
+ i2c@75ba000 {
+ synaptics@20 {
+ compatible = "synaptics,dsx";
+ reg = <0x20>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <125 0x2008>;
+ vdd-supply = <&vph_pwr_vreg>;
+ avdd-supply = <&vph_pwr_vreg>;
+ pinctrl-names = "pmx_ts_active", "pmx_ts_suspend";
+ pinctrl-0 = <&ts_active_sbc>;
+ pinctrl-1 = <&ts_suspend_sbc>;
+ synaptics,display-coords = <0 0 480 854>;
+ synaptics,panel-coords = <0 0 480 854>;
+ synaptics,reset-gpio = <&tlmm 29 0x00>;
+ synaptics,irq-gpio = <&tlmm 125 0x2008>;
+ synaptics,button-map = <139 102 158>;
+ synaptics,disable-gpios;
+ /* Underlying clocks used by secure touch */
+ clock-names = "iface_clk", "core_clk";
+ clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp2_qup6_i2c_apps_clk>;
+ };
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+
+ vol_up {
+ label = "volume_up";
+ gpios = <&pm8994_gpios 2 0x1>;
+ linux,input-type = <1>;
+ linux,code = <115>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+ };
+
+ /*
+ * 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;
+ };
+
+
+ sound {
+ status = "disabled";
+ };
+
+ sound-9335 {
+ qcom,model = "msm8996-tasha-db-snd-card";
+
+ qcom,audio-routing =
+ "RX_BIAS", "MCLK",
+ "AMIC1", "MIC BIAS3",
+ "MIC BIAS3", "Analog Mic4",
+ "AMIC2", "MIC BIAS2",
+ "MIC BIAS2", "Headset Mic",
+ "AMIC3", "MIC BIAS2",
+ "MIC BIAS2", "ANCLeft Headset Mic",
+ "AMIC4", "MIC BIAS2",
+ "MIC BIAS2", "ANCRight Headset Mic",
+ "AMIC5", "MIC BIAS3",
+ "MIC BIAS3", "Analog Mic6",
+ "AMIC6", "MIC BIAS4",
+ "MIC BIAS4", "Analog Mic7",
+ "DMIC0", "MIC BIAS1",
+ "MIC BIAS1", "Digital Mic0",
+ "DMIC1", "MIC BIAS3",
+ "MIC BIAS3", "Digital Mic1",
+ "DMIC2", "MIC BIAS4",
+ "MIC BIAS4", "Digital Mic2",
+ "DMIC3", "MIC BIAS1",
+ "MIC BIAS1", "Digital Mic3",
+ "DMIC4", "MIC BIAS3",
+ "MIC BIAS3", "Digital Mic4",
+ "DMIC5", "MIC BIAS4",
+ "MIC BIAS4", "Digital Mic5";
+
+ qcom,hdmi-audio-rx;
+ asoc-codec = <&stub_codec>, <&hdmi_audio>;
+ asoc-codec-names = "msm-stub-codec.1",
+ "msm-hdmi-audio-codec-rx";
+ };
+
+ usb_detect {
+ compatible = "qcom,gpio-usbdetect";
+ interrupt-parent = <&spmi_bus>;
+ interrupts = <0x2 0xc5 0x0>; /* PMI8994 GPIO 6 */
+ interrupt-names = "vbus_det_irq";
+ vin-supply = <&vph_pwr_vreg>;
+ };
+
+ spi@7575000 { /* BLSP1 QUP1 */
+ status = "disabled";
+ };
+};
+
+&spmi_bus {
+ qcom,pm8994@1 {
+ pwm@b100 {
+ qcom,lpg-dtest-line = <4>;
+ qcom,dtest-output = <1>;
+ status = "okay";
+ };
+ };
+};
+
+&pm8994_gpios {
+ gpio@c100 { /* GPIO 2 - KYPD_VOLP_N */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c300 { /* GPIO 4 - BL1_PWM */
+ qcom,mode = <1>;
+ qcom,pull = <1>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <4>;
+ status = "okay";
+ };
+
+ gpio@c400 { /* GPIO 5 - BL0_PWM */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,pull = <1>; /* PULL DOWN */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <7>; /* LPG4 */
+ qcom,master-en = <1>; /* Enable GPIO */
+ status = "okay";
+ };
+
+ gpio@c700 { /* GPIO 8 - WLAN_EN */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@ca00 { /* GPIO 11 - USB enb1 (otg switch) */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,pull = <1>; /* PULL DOWN */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,master-en = <1>; /* Enable GPIO */
+ status = "okay";
+ };
+
+ gpio@ce00 { /* GPIO 15 - DIVCLK1 */
+ 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>;
+ status = "okay";
+ };
+
+ gpio@cf00 { /* GPIO 16 - DIVCLK2 */
+ 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>;
+ status = "okay";
+ };
+
+ gpio@d000 { /* GPIO 17 - DIVCLK3 */
+ 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>;
+ status = "okay";
+ };
+
+ gpio@d100 { /* GPIO 18 - Rome Sleep Clock */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@d200 { /* GPIO 19 - Rome BT Reset */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@d500 { /* GPIO 22 - USB1 VBUS detect */
+ qcom,mode = <0>; /* Digital Input*/
+ qcom,pull = <5>; /* No pull */
+ qcom,vin-sel = <2>; /* 1.8 V */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,invert = <0>; /* Invert */
+ qcom,master-en = <1>; /* Enable GPIO */
+ status = "okay";
+ };
+};
+
+&pmi8994_haptics {
+ status = "okay";
+};
+
+&blsp1_uart2 {
+ status = "ok";
+};
+
+&slim_msm {
+ tasha_codec {
+ qcom,cdc-micbias2-headset-only;
+ qcom,cdc-micbias1-ext-cap;
+ qcom,cdc-micbias2-ext-cap;
+ qcom,cdc-micbias3-ext-cap;
+ qcom,cdc-micbias4-ext-cap;
+ };
+};
+
+&cam_sensor_mclk0_active { /* MCLK0 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
+
+&cam_sensor_mclk0_suspend { /* MCLK0 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
+
+&cam_sensor_mclk1_active { /* MCLK1 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
+
+&cam_sensor_mclk1_suspend { /* MCLK1 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
+
+&cam_sensor_mclk2_active { /* MCLK2 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
+
+&cam_sensor_mclk2_suspend { /* MCLK2 */
+ config {
+ drive-strength = <8>; /* 8 MA */
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v2-auto-dragonboard.dts b/arch/arm64/boot/dts/qcom/apq8096-v2-auto-dragonboard.dts
new file mode 100644
index 000000000000..11eb24c215c2
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v2-auto-dragonboard.dts
@@ -0,0 +1,25 @@
+/* Copyright (c) 2015, 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 "apq8096-v2.dtsi"
+#include "apq8096-auto-dragonboard.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ8096v2.1 + PMI8994 DragonBoard";
+ compatible = "qcom,apq8096-dragonboard", "qcom,msm8996",
+ "qcom,apq8096", "qcom,dragonboard";
+ qcom,msm-id = <246 0x20001>, <291 0x20001>;
+ qcom,board-id = <10 1>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v2-dragonboard.dts b/arch/arm64/boot/dts/qcom/apq8096-v2-dragonboard.dts
new file mode 100644
index 000000000000..c3bdcea982f4
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v2-dragonboard.dts
@@ -0,0 +1,26 @@
+/* Copyright (c) 2015, 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 "apq8096-v2.dtsi"
+#include "apq8096-dragonboard.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ8096v2.1 + PMI8994 DragonBoard";
+ compatible = "qcom,apq8096-dragonboard", "qcom,msm8996",
+ "qcom,apq8096", "qcom,dragonboard";
+ qcom,msm-id = <246 0x20001>, <291 0x20001>;
+ qcom,board-id = <10 0>;
+};
+
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v2-liquid.dts b/arch/arm64/boot/dts/qcom/apq8096-v2-liquid.dts
new file mode 100644
index 000000000000..b6eddb01ee3e
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v2-liquid.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v2.dtsi"
+#include "msm8996-liquid.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v2 LiQUID";
+ compatible = "qcom,apq8096-liquid", "qcom,apq8096", "qcom,liquid";
+ qcom,board-id = <9 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-cdp.dts
new file mode 100644
index 000000000000..1277731b07a9
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v2.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v2 + PMI8994 CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 0>, <0x01000001 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-mtp.dts b/arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-mtp.dts
new file mode 100644
index 000000000000..1d85af130f48
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-mtp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v2.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v2 + PMI8994 MTP";
+ compatible = "qcom,apq8096-mtp", "qcom,apq8096", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-pm8004-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-pm8004-cdp.dts
new file mode 100644
index 000000000000..e956240cc963
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-pm8004-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v2.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v2 + PMI8994 + PM8004 CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 0>, <0x01000001 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-pm8004-pmk8001-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-pm8004-pmk8001-cdp.dts
new file mode 100644
index 000000000000..113aa0873923
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-pm8004-pmk8001-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v2.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004-pmk8001.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v2 + PMI8994 + PM8004 + PMK8001 CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-pmk8001-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-pmk8001-cdp.dts
new file mode 100644
index 000000000000..c291921d46e8
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v2-pmi8994-pmk8001-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v2.dtsi"
+#include "msm8996-pm8994-pmi8994-pmk8001.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v2 + PMI8994 + PMK8001 CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v2.dtsi b/arch/arm64/boot/dts/qcom/apq8096-v2.dtsi
new file mode 100644
index 000000000000..2199c9061ceb
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v2.dtsi
@@ -0,0 +1,24 @@
+/* Copyright (c) 2014-2015, 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.
+ */
+
+/*
+ * As a general rule, only version-specific property overrides should be placed
+ * inside this file. Common device definitions should be placed inside the
+ * msm8996.dtsi file.
+ */
+
+#include "msm8996-v2.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v2";
+ qcom,msm-id = <291 0x20001>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-auto-dragonboard.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-auto-dragonboard.dts
new file mode 100644
index 000000000000..75a9c6a6dd13
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-auto-dragonboard.dts
@@ -0,0 +1,25 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "apq8096-auto-dragonboard.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ8096v3 + PMI8994 DragonBoard";
+ compatible = "qcom,apq8096-dragonboard", "qcom,msm8996",
+ "qcom,apq8096", "qcom,dragonboard";
+ qcom,msm-id = <246 0x30000>, <291 0x30000>;
+ qcom,board-id = <10 1>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-dragonboard.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-dragonboard.dts
new file mode 100644
index 000000000000..b8df40d64808
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-dragonboard.dts
@@ -0,0 +1,27 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "apq8096-dragonboard.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ8096v3 + PMI8994 DragonBoard";
+ compatible = "qcom,apq8096-dragonboard", "qcom,msm8996",
+ "qcom,apq8096", "qcom,dragonboard";
+ qcom,msm-id = <246 0x30000>, <291 0x30000>,
+ <246 0x30001>, <291 0x30001>;
+ qcom,board-id = <10 0>;
+};
+
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-liquid.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-liquid.dts
new file mode 100644
index 000000000000..6f175fffb005
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-liquid.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm8996-liquid.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 LiQUID";
+ compatible = "qcom,apq8096-liquid", "qcom,apq8096", "qcom,liquid";
+ qcom,board-id = <9 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-cdp.dts
new file mode 100644
index 000000000000..bb1962c46f08
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 + PMI8994 CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 0>, <0x01000001 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-mdm9x55-i2s-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-mdm9x55-i2s-cdp.dts
new file mode 100644
index 000000000000..ce46b0224731
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-mdm9x55-i2s-cdp.dts
@@ -0,0 +1,66 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm8996-cdp.dtsi"
+#include "external-soc.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 + PMI8994, MDM9x55 I2S CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 2>;
+};
+
+&pil_modem {
+ status = "disabled";
+};
+
+&pm8994_l9 {
+ regulator-always-on;
+};
+
+&pm8994_l10 {
+ regulator-always-on;
+};
+
+&mdm3 {
+ pinctrl-names = "mdm_active", "mdm_suspend";
+ pinctrl-0 = <&ap2mdm_active &mdm2ap_active>;
+ pinctrl-1 = <&ap2mdm_sleep &mdm2ap_sleep>;
+ interrupt-map = <0 &tlmm 108 0x3
+ 1 &tlmm 107 0x3
+ 2 &tlmm 112 0x3>;
+ qcom,mdm2ap-errfatal-gpio = <&tlmm 108 0x00>;
+ qcom,ap2mdm-errfatal-gpio = <&tlmm 109 0x00>;
+ qcom,mdm2ap-status-gpio = <&tlmm 106 0x00>;
+ qcom,ap2mdm-status-gpio = <&tlmm 107 0x00>;
+ qcom,ap2mdm-soft-reset-gpio = <&pm8994_mpps 2 0>;
+ qcom,ap2mdm-vddmin-gpio = <&tlmm 111 0x00>;
+ qcom,mdm2ap-vddmin-gpio = <&tlmm 112 0x00>;
+ status = "ok";
+};
+
+&pm8994_mpps {
+ mpp@a100 { /* MPP 2*/
+ /* MDM PON conrol*/
+ 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>;
+ status = "okay";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-mdm9x55-i2s-mtp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-mdm9x55-i2s-mtp.dts
new file mode 100644
index 000000000000..56d72694d5d1
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-mdm9x55-i2s-mtp.dts
@@ -0,0 +1,65 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm8996-mtp.dtsi"
+#include "external-soc.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 + PMI8994, MDM9x55 I2S MTP";
+ compatible = "qcom,apq8096-mtp", "qcom,apq8096", "qcom,mtp";
+ qcom,board-id = <8 1>;
+};
+
+&pil_modem {
+ status = "disabled";
+};
+
+&pm8994_l9 {
+ regulator-always-on;
+};
+
+&pm8994_l10 {
+ regulator-always-on;
+};
+&mdm3 {
+ pinctrl-names = "mdm_active", "mdm_suspend";
+ pinctrl-0 = <&ap2mdm_active &mdm2ap_active>;
+ pinctrl-1 = <&ap2mdm_sleep &mdm2ap_sleep>;
+ interrupt-map = <0 &tlmm 108 0x3
+ 1 &tlmm 107 0x3
+ 2 &tlmm 112 0x3>;
+ qcom,mdm2ap-errfatal-gpio = <&tlmm 108 0x00>;
+ qcom,ap2mdm-errfatal-gpio = <&tlmm 109 0x00>;
+ qcom,mdm2ap-status-gpio = <&tlmm 106 0x00>;
+ qcom,ap2mdm-status-gpio = <&tlmm 107 0x00>;
+ qcom,ap2mdm-soft-reset-gpio = <&pm8994_mpps 2 0>;
+ qcom,ap2mdm-vddmin-gpio = <&tlmm 111 0x00>;
+ qcom,mdm2ap-vddmin-gpio = <&tlmm 112 0x00>;
+ status = "ok";
+};
+
+&pm8994_mpps {
+ mpp@a100 { /* MPP 2*/
+ /* MDM PON conrol*/
+ 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>;
+ status = "okay";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-mdm9x55-slimbus-mtp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-mdm9x55-slimbus-mtp.dts
new file mode 100644
index 000000000000..2ab8030004ef
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-mdm9x55-slimbus-mtp.dts
@@ -0,0 +1,67 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm8996-mtp.dtsi"
+#include "external-soc.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 + PMI8994, MDM9x55 Slimbus MTP";
+ compatible = "qcom,apq8096-mtp", "qcom,apq8096", "qcom,mtp";
+ qcom,board-id = <8 2>;
+};
+
+&pil_modem {
+ status = "disabled";
+};
+
+&pm8994_l9 {
+ regulator-always-on;
+};
+
+&pm8994_l10 {
+ regulator-always-on;
+};
+
+&mdm3 {
+ pinctrl-names = "mdm_active", "mdm_suspend";
+ pinctrl-0 = <&ap2mdm_active &mdm2ap_active>;
+ pinctrl-1 = <&ap2mdm_sleep &mdm2ap_sleep>;
+ interrupt-map = <0 &tlmm 108 0x3
+ 1 &tlmm 107 0x3
+ 2 &tlmm 112 0x3>;
+ qcom,mdm2ap-errfatal-gpio = <&tlmm 108 0x00>;
+ qcom,ap2mdm-errfatal-gpio = <&tlmm 109 0x00>;
+ qcom,mdm2ap-status-gpio = <&tlmm 106 0x00>;
+ qcom,ap2mdm-status-gpio = <&tlmm 107 0x00>;
+ qcom,ap2mdm-soft-reset-gpio = <&pm8994_mpps 2 0>;
+ qcom,ap2mdm-vddmin-gpio = <&tlmm 111 0x00>;
+ qcom,mdm2ap-vddmin-gpio = <&tlmm 112 0x00>;
+ status = "ok";
+};
+
+&pm8994_mpps {
+ mpp@a100 { /* MPP 2*/
+ /* MDM PON conrol*/
+ 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>;
+ status = "okay";
+ };
+};
+
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-mtp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-mtp.dts
new file mode 100644
index 000000000000..0417c5bc1ef4
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-mtp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 + PMI8994 MTP";
+ compatible = "qcom,apq8096-mtp", "qcom,apq8096", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pm8004-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pm8004-cdp.dts
new file mode 100644
index 000000000000..f08e5b675e27
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pm8004-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 + PMI8994 + PM8004 CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 0>, <0x01000001 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pm8004-mdm9x55-i2s-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pm8004-mdm9x55-i2s-cdp.dts
new file mode 100644
index 000000000000..696e37361983
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pm8004-mdm9x55-i2s-cdp.dts
@@ -0,0 +1,67 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004.dtsi"
+#include "msm8996-cdp.dtsi"
+#include "external-soc.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 + PMI8994 + PM8004, MDM9x55 I2S CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 2>;
+};
+
+&pil_modem {
+ status = "disabled";
+};
+
+&pm8994_l9 {
+ regulator-always-on;
+};
+
+&pm8994_l10 {
+ regulator-always-on;
+};
+
+&mdm3 {
+ pinctrl-names = "mdm_active", "mdm_suspend";
+ pinctrl-0 = <&ap2mdm_active &mdm2ap_active>;
+ pinctrl-1 = <&ap2mdm_sleep &mdm2ap_sleep>;
+ interrupt-map = <0 &tlmm 108 0x3
+ 1 &tlmm 107 0x3
+ 2 &tlmm 112 0x3>;
+ qcom,mdm2ap-errfatal-gpio = <&tlmm 108 0x00>;
+ qcom,ap2mdm-errfatal-gpio = <&tlmm 109 0x00>;
+ qcom,mdm2ap-status-gpio = <&tlmm 106 0x00>;
+ qcom,ap2mdm-status-gpio = <&tlmm 107 0x00>;
+ qcom,ap2mdm-soft-reset-gpio = <&pm8994_mpps 2 0>;
+ qcom,ap2mdm-vddmin-gpio = <&tlmm 111 0x00>;
+ qcom,mdm2ap-vddmin-gpio = <&tlmm 112 0x00>;
+ status = "ok";
+};
+
+&pm8994_mpps {
+ mpp@a100 { /* MPP 2*/
+ /* MDM PON conrol*/
+ 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>;
+ status = "okay";
+ };
+};
+
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pm8004-pmk8001-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pm8004-pmk8001-cdp.dts
new file mode 100644
index 000000000000..639b073820a0
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pm8004-pmk8001-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004-pmk8001.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 + PMI8994 + PM8004 + PMK8001 CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pm8004-pmk8001-mdm9x55-i2s-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pm8004-pmk8001-mdm9x55-i2s-cdp.dts
new file mode 100644
index 000000000000..4afe4d4f19f5
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pm8004-pmk8001-mdm9x55-i2s-cdp.dts
@@ -0,0 +1,67 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004-pmk8001.dtsi"
+#include "msm8996-cdp.dtsi"
+#include "external-soc.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 + PMI8994 + PM8004 + PMK8001, MDM9x55 I2S CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 2>;
+};
+
+&pil_modem {
+ status = "disabled";
+};
+
+&pm8994_l9 {
+ regulator-always-on;
+};
+
+&pm8994_l10 {
+ regulator-always-on;
+};
+
+&mdm3 {
+ pinctrl-names = "mdm_active", "mdm_suspend";
+ pinctrl-0 = <&ap2mdm_active &mdm2ap_active>;
+ pinctrl-1 = <&ap2mdm_sleep &mdm2ap_sleep>;
+ interrupt-map = <0 &tlmm 108 0x3
+ 1 &tlmm 107 0x3
+ 2 &tlmm 112 0x3>;
+ qcom,mdm2ap-errfatal-gpio = <&tlmm 108 0x00>;
+ qcom,ap2mdm-errfatal-gpio = <&tlmm 109 0x00>;
+ qcom,mdm2ap-status-gpio = <&tlmm 106 0x00>;
+ qcom,ap2mdm-status-gpio = <&tlmm 107 0x00>;
+ qcom,ap2mdm-soft-reset-gpio = <&pm8994_mpps 2 0>;
+ qcom,ap2mdm-vddmin-gpio = <&tlmm 111 0x00>;
+ qcom,mdm2ap-vddmin-gpio = <&tlmm 112 0x00>;
+ status = "ok";
+};
+
+&pm8994_mpps {
+ mpp@a100 { /* MPP 2*/
+ /* MDM PON conrol*/
+ 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>;
+ status = "okay";
+ };
+};
+
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pmk8001-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pmk8001-cdp.dts
new file mode 100644
index 000000000000..ef8b5f17ba6e
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pmk8001-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm8996-pm8994-pmi8994-pmk8001.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 + PMI8994 + PMK8001 CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pmk8001-mdm9x55-i2s-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pmk8001-mdm9x55-i2s-cdp.dts
new file mode 100644
index 000000000000..f3916b70524a
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8994-pmk8001-mdm9x55-i2s-cdp.dts
@@ -0,0 +1,67 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm8996-pm8994-pmi8994-pmk8001.dtsi"
+#include "msm8996-cdp.dtsi"
+#include "external-soc.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 + PMI8994 + PMK8001, MDM9x55 I2S CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 2>;
+};
+
+&pil_modem {
+ status = "disabled";
+};
+
+&pm8994_l9 {
+ regulator-always-on;
+};
+
+&pm8994_l10 {
+ regulator-always-on;
+};
+
+&mdm3 {
+ pinctrl-names = "mdm_active", "mdm_suspend";
+ pinctrl-0 = <&ap2mdm_active &mdm2ap_active>;
+ pinctrl-1 = <&ap2mdm_sleep &mdm2ap_sleep>;
+ interrupt-map = <0 &tlmm 108 0x3
+ 1 &tlmm 107 0x3
+ 2 &tlmm 112 0x3>;
+ qcom,mdm2ap-errfatal-gpio = <&tlmm 108 0x00>;
+ qcom,ap2mdm-errfatal-gpio = <&tlmm 109 0x00>;
+ qcom,mdm2ap-status-gpio = <&tlmm 106 0x00>;
+ qcom,ap2mdm-status-gpio = <&tlmm 107 0x00>;
+ qcom,ap2mdm-soft-reset-gpio = <&pm8994_mpps 2 0>;
+ qcom,ap2mdm-vddmin-gpio = <&tlmm 111 0x00>;
+ qcom,mdm2ap-vddmin-gpio = <&tlmm 112 0x00>;
+ status = "ok";
+};
+
+&pm8994_mpps {
+ mpp@a100 { /* MPP 2*/
+ /* MDM PON conrol*/
+ 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>;
+ status = "okay";
+ };
+};
+
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-cdp.dts
new file mode 100644
index 000000000000..923fa1573a5b
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-cdp.dts
@@ -0,0 +1,24 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm-pmi8996.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 + PMI8996 CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 0>, <0x01000001 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-dragonboard.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-dragonboard.dts
new file mode 100644
index 000000000000..da45de0cc1ec
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-dragonboard.dts
@@ -0,0 +1,28 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm-pmi8996.dtsi"
+#include "apq8096-dragonboard.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ8096v3 + PMI8996 DragonBoard";
+ compatible = "qcom,apq8096-dragonboard", "qcom,msm8996",
+ "qcom,apq8096", "qcom,dragonboard";
+ qcom,msm-id = <246 0x30000>, <291 0x30000>,
+ <246 0x30001>, <291 0x30001>;
+ qcom,board-id = <10 0>;
+};
+
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-mdm9x55-i2s-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-mdm9x55-i2s-cdp.dts
new file mode 100644
index 000000000000..d6c927625b66
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-mdm9x55-i2s-cdp.dts
@@ -0,0 +1,67 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm-pmi8996.dtsi"
+#include "msm8996-cdp.dtsi"
+#include "external-soc.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 + PMI8996, MDM9x55 I2S CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 2>;
+};
+
+&pil_modem {
+ status = "disabled";
+};
+
+&pm8994_l9 {
+ regulator-always-on;
+};
+
+&pm8994_l10 {
+ regulator-always-on;
+};
+
+&mdm3 {
+ pinctrl-names = "mdm_active", "mdm_suspend";
+ pinctrl-0 = <&ap2mdm_active &mdm2ap_active>;
+ pinctrl-1 = <&ap2mdm_sleep &mdm2ap_sleep>;
+ interrupt-map = <0 &tlmm 108 0x3
+ 1 &tlmm 107 0x3
+ 2 &tlmm 112 0x3>;
+ qcom,mdm2ap-errfatal-gpio = <&tlmm 108 0x00>;
+ qcom,ap2mdm-errfatal-gpio = <&tlmm 109 0x00>;
+ qcom,mdm2ap-status-gpio = <&tlmm 106 0x00>;
+ qcom,ap2mdm-status-gpio = <&tlmm 107 0x00>;
+ qcom,ap2mdm-soft-reset-gpio = <&pm8994_mpps 2 0>;
+ qcom,ap2mdm-vddmin-gpio = <&tlmm 111 0x00>;
+ qcom,mdm2ap-vddmin-gpio = <&tlmm 112 0x00>;
+ status = "ok";
+};
+
+&pm8994_mpps {
+ mpp@a100 { /* MPP 2*/
+ /* MDM PON conrol*/
+ 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>;
+ status = "okay";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-mdm9x55-i2s-mtp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-mdm9x55-i2s-mtp.dts
new file mode 100644
index 000000000000..6869b19876a8
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-mdm9x55-i2s-mtp.dts
@@ -0,0 +1,67 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm-pmi8996.dtsi"
+#include "msm8996-mtp.dtsi"
+#include "external-soc.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 + PMI8996, MDM9x55 I2S MTP";
+ compatible = "qcom,apq8096-mtp", "qcom,apq8096", "qcom,mtp";
+ qcom,board-id = <8 1>;
+};
+
+&pil_modem {
+ status = "disabled";
+};
+
+&pm8994_l9 {
+ regulator-always-on;
+};
+
+&pm8994_l10 {
+ regulator-always-on;
+};
+
+&mdm3 {
+ pinctrl-names = "mdm_active", "mdm_suspend";
+ pinctrl-0 = <&ap2mdm_active &mdm2ap_active>;
+ pinctrl-1 = <&ap2mdm_sleep &mdm2ap_sleep>;
+ interrupt-map = <0 &tlmm 108 0x3
+ 1 &tlmm 107 0x3
+ 2 &tlmm 112 0x3>;
+ qcom,mdm2ap-errfatal-gpio = <&tlmm 108 0x00>;
+ qcom,ap2mdm-errfatal-gpio = <&tlmm 109 0x00>;
+ qcom,mdm2ap-status-gpio = <&tlmm 106 0x00>;
+ qcom,ap2mdm-status-gpio = <&tlmm 107 0x00>;
+ qcom,ap2mdm-soft-reset-gpio = <&pm8994_mpps 2 0>;
+ qcom,ap2mdm-vddmin-gpio = <&tlmm 111 0x00>;
+ qcom,mdm2ap-vddmin-gpio = <&tlmm 112 0x00>;
+ status = "ok";
+};
+
+&pm8994_mpps {
+ mpp@a100 { /* MPP 2*/
+ /* MDM PON conrol*/
+ 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>;
+ status = "okay";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-mdm9x55-slimbus-mtp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-mdm9x55-slimbus-mtp.dts
new file mode 100644
index 000000000000..b0c1b1a50467
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-mdm9x55-slimbus-mtp.dts
@@ -0,0 +1,68 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm-pmi8996.dtsi"
+#include "msm8996-mtp.dtsi"
+#include "external-soc.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 + PMI8996, MDM9x55 Slimbus MTP";
+ compatible = "qcom,apq8096-mtp", "qcom,apq8096", "qcom,mtp";
+ qcom,board-id = <8 2>;
+};
+
+&pil_modem {
+ status = "disabled";
+};
+
+&pm8994_l9 {
+ regulator-always-on;
+};
+
+&pm8994_l10 {
+ regulator-always-on;
+};
+
+&mdm3 {
+ pinctrl-names = "mdm_active", "mdm_suspend";
+ pinctrl-0 = <&ap2mdm_active &mdm2ap_active>;
+ pinctrl-1 = <&ap2mdm_sleep &mdm2ap_sleep>;
+ interrupt-map = <0 &tlmm 108 0x3
+ 1 &tlmm 107 0x3
+ 2 &tlmm 112 0x3>;
+ qcom,mdm2ap-errfatal-gpio = <&tlmm 108 0x00>;
+ qcom,ap2mdm-errfatal-gpio = <&tlmm 109 0x00>;
+ qcom,mdm2ap-status-gpio = <&tlmm 106 0x00>;
+ qcom,ap2mdm-status-gpio = <&tlmm 107 0x00>;
+ qcom,ap2mdm-soft-reset-gpio = <&pm8994_mpps 2 0>;
+ qcom,ap2mdm-vddmin-gpio = <&tlmm 111 0x00>;
+ qcom,mdm2ap-vddmin-gpio = <&tlmm 112 0x00>;
+ status = "ok";
+};
+
+&pm8994_mpps {
+ mpp@a100 { /* MPP 2*/
+ /* MDM PON conrol*/
+ 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>;
+ status = "okay";
+ };
+};
+
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-mtp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-mtp.dts
new file mode 100644
index 000000000000..712eedeae08e
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-pmi8996-mtp.dts
@@ -0,0 +1,24 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm-pmi8996.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3 + PMI8996 MTP";
+ compatible = "qcom,apq8096-mtp", "qcom,apq8096", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3-sbc.dts b/arch/arm64/boot/dts/qcom/apq8096-v3-sbc.dts
new file mode 100644
index 000000000000..c37ebb8bc08e
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3-sbc.dts
@@ -0,0 +1,26 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.dtsi"
+#include "msm-pmi8996.dtsi"
+#include "apq8096-sbc.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ8096v3";
+ compatible = "qcom,apq8096-sbc", "qcom,msm8996",
+ "qcom,apq8096", "qcom,sbc";
+ qcom,board-id = <24 0>;
+};
+
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3.0-dragonboard.dts b/arch/arm64/boot/dts/qcom/apq8096-v3.0-dragonboard.dts
new file mode 100644
index 000000000000..9484d04d01e7
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3.0-dragonboard.dts
@@ -0,0 +1,26 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.0.dtsi"
+#include "apq8096-dragonboard.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ8096v3.0 + PMI8994 DragonBoard";
+ compatible = "qcom,apq8096-dragonboard", "qcom,msm8996",
+ "qcom,apq8096", "qcom,dragonboard";
+ qcom,msm-id = <246 0x30000>, <291 0x30000>;
+ qcom,board-id = <10 0>;
+};
+
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3.0-liquid.dts b/arch/arm64/boot/dts/qcom/apq8096-v3.0-liquid.dts
new file mode 100644
index 000000000000..bddd7de04646
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3.0-liquid.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.0.dtsi"
+#include "msm8996-liquid.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3.0 LiQUID";
+ compatible = "qcom,apq8096-liquid", "qcom,apq8096", "qcom,liquid";
+ qcom,board-id = <9 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-cdp.dts
new file mode 100644
index 000000000000..a812b98d01f6
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.0.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3.0 + PMI8994 CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 0>, <0x01000001 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-mtp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-mtp.dts
new file mode 100644
index 000000000000..91705183b023
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-mtp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.0.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3.0 + PMI8994 MTP";
+ compatible = "qcom,apq8096-mtp", "qcom,apq8096", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-pm8004-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-pm8004-cdp.dts
new file mode 100644
index 000000000000..5d6e6ab74df4
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-pm8004-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.0.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3.0 + PMI8994 + PM8004 CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 0>, <0x01000001 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-pm8004-pmk8001-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-pm8004-pmk8001-cdp.dts
new file mode 100644
index 000000000000..0414b24a4dd5
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-pm8004-pmk8001-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.0.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004-pmk8001.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3.0 + PMI8994 + PM8004 + PMK8001 CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-pmk8001-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-pmk8001-cdp.dts
new file mode 100644
index 000000000000..e1b385873f9c
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8994-pmk8001-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.0.dtsi"
+#include "msm8996-pm8994-pmi8994-pmk8001.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3.0 + PMI8994 + PMK8001 CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8996-cdp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8996-cdp.dts
new file mode 100644
index 000000000000..ce04cc836354
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8996-cdp.dts
@@ -0,0 +1,24 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.0.dtsi"
+#include "msm-pmi8996.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3.0 + PMI8996 CDP";
+ compatible = "qcom,apq8096-cdp", "qcom,apq8096", "qcom,cdp";
+ qcom,board-id = <1 0>, <0x01000001 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8996-mtp.dts b/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8996-mtp.dts
new file mode 100644
index 000000000000..ac0a96bc2404
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3.0-pmi8996-mtp.dts
@@ -0,0 +1,24 @@
+/* Copyright (c) 2015, 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 "apq8096-v3.0.dtsi"
+#include "msm-pmi8996.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3.0 + PMI8996 MTP";
+ compatible = "qcom,apq8096-mtp", "qcom,apq8096", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3.0.dtsi b/arch/arm64/boot/dts/qcom/apq8096-v3.0.dtsi
new file mode 100644
index 000000000000..51c690f6a305
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3.0.dtsi
@@ -0,0 +1,24 @@
+/* Copyright (c) 2014-2015, 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.
+ */
+
+/*
+ * As a general rule, only version-specific property overrides should be placed
+ * inside this file. Common device definitions should be placed inside the
+ * msm8996.dtsi file.
+ */
+
+#include "msm8996-v3.0.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3.0";
+ qcom,msm-id = <291 0x30000>;
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8096-v3.dtsi b/arch/arm64/boot/dts/qcom/apq8096-v3.dtsi
new file mode 100644
index 000000000000..7ec5d505ac8b
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8096-v3.dtsi
@@ -0,0 +1,24 @@
+/* Copyright (c) 2014-2015, 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.
+ */
+
+/*
+ * As a general rule, only version-specific property overrides should be placed
+ * inside this file. Common device definitions should be placed inside the
+ * msm8996.dtsi file.
+ */
+
+#include "msm8996-v3.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. APQ 8096 v3";
+ qcom,msm-id = <291 0x30001>;
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-ascent-3450mAh.dtsi b/arch/arm64/boot/dts/qcom/batterydata-ascent-3450mAh.dtsi
new file mode 100644
index 000000000000..3eed42aca5bf
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-ascent-3450mAh.dtsi
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2015, 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,ascent-3450mah {
+ /* #Ascent_860_82209_0000_3450mAh_averaged_MasterSlave_Sept28th2015*/
+ qcom,max-voltage-uv = <4350000>;
+ qcom,nom-batt-capacity-mah = <3450>;
+ qcom,batt-id-kohm = <60>;
+ qcom,battery-beta = <3435>;
+ qcom,battery-type = "ascent_3450mah";
+ qcom,chg-rslow-comp-c1 = <6834679>;
+ qcom,chg-rslow-comp-c2 = <20647220>;
+ qcom,chg-rs-to-rslow = <915002>;
+ qcom,chg-rslow-comp-thr = <0xD5>;
+ qcom,checksum = <0xE50C>;
+ qcom,fg-profile-data = [
+ C5 83 25 77
+ AB 7B CA 74
+ 4C 83 7F 5B
+ EB 80 ED 8C
+ EA 81 61 9B
+ A6 BE 2B D0
+ 55 0E D6 83
+ 09 77 25 7B
+ 03 74 49 83
+ CC 70 0C 70
+ 0C 85 67 82
+ E6 93 27 B5
+ 61 C0 58 10
+ 23 0D 50 59
+ CE 6E 71 FD
+ CD 15 CC 3F
+ 1D 36 00 00
+ B9 47 29 3B
+ 1D 2E 00 00
+ 00 00 00 00
+ 00 00 00 00
+ D8 6A E7 69
+ B3 7C 4E 7A
+ 7E 77 77 70
+ 40 77 0D 73
+ 22 76 96 6A
+ 71 65 20 B0
+ 2C 97 63 12
+ 64 A0 71 0C
+ 28 00 FF 36
+ F0 11 30 03
+ 00 00 00 0C
+ ];
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-itech-3000mah-4200mv.dtsi b/arch/arm64/boot/dts/qcom/batterydata-itech-3000mah-4200mv.dtsi
new file mode 100644
index 000000000000..374c5abfca66
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-itech-3000mah-4200mv.dtsi
@@ -0,0 +1,56 @@
+/* Copyright (c) 2015, 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,itech-3000mah-4200mv {
+ /* #Itech_B00761LF_3000mAh_averaged_MasterSlave_Feb27th2015*/
+ qcom,max-voltage-uv = <4200000>;
+ qcom,v-cutoff-uv = <3400000>;
+ qcom,chg-term-ua = <100000>;
+ qcom,batt-id-kohm = <150>;
+ qcom,battery-beta = <3500>;
+ qcom,battery-type = "itech_3000mah_4200mv";
+ qcom,checksum = <0x5194>;
+ qcom,fg-profile-data = [
+ CD 83 23 77
+ F1 7A 88 74
+ 78 83 DB 7C
+ 10 90 29 96
+ 29 82 9B 98
+ DF B5 FF C0
+ 58 18 F5 83
+ 5F 7C C3 7B
+ 1A 75 57 83
+ B3 61 0A 80
+ 0B 8C 85 82
+ 98 93 8A B5
+ 6C C1 5E 11
+ D5 0B B3 58
+ FB 6A 71 FD
+ 27 46 A8 37
+ AF 41 00 00
+ 5F 46 E4 2B
+ 5E 34 00 00
+ 00 00 00 00
+ 00 00 00 00
+ AF 71 DA 70
+ 0B 76 8E 78
+ A4 76 8B 69
+ 9F 6C 14 78
+ 77 75 60 63
+ E2 75 4F C3
+ 0F 66 58 13
+ 54 A0 71 0C
+ 28 00 FF 36
+ F0 11 30 03
+ 00 00 00 00
+ ];
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-itech-3000mah.dtsi b/arch/arm64/boot/dts/qcom/batterydata-itech-3000mah.dtsi
new file mode 100644
index 000000000000..1e2df9cff6b7
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-itech-3000mah.dtsi
@@ -0,0 +1,59 @@
+/* Copyright (c) 2014-2015, 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,itech-3000mah {
+ /* #Itech_B00826LF_3000mAh_Feb24th_Averaged*/
+ qcom,max-voltage-uv = <4350000>;
+ qcom,v-cutoff-uv = <3400000>;
+ qcom,chg-term-ua = <100000>;
+ qcom,batt-id-kohm = <100>;
+ qcom,battery-type = "itech_3000mah";
+ qcom,chg-rslow-comp-c1 = <4365000>;
+ qcom,chg-rslow-comp-c2 = <8609000>;
+ qcom,chg-rslow-comp-thr = <0xBE>;
+ qcom,chg-rs-to-rslow = <761000>;
+ qcom,checksum = <0x0B7C>;
+ qcom,fg-profile-data = [
+ F0 83 6B 7D
+ 66 81 EC 77
+ 43 83 E3 5A
+ 7C 81 33 8D
+ E1 81 EC 98
+ 7B B5 F8 BB
+ 5B 12 E2 83
+ 4A 7C 63 80
+ CF 75 50 83
+ FD 5A 83 82
+ E6 8E 12 82
+ B6 9A 1A BE
+ BE CB 55 0E
+ 96 0B E0 5A
+ CE 6E 71 FD
+ 2A 31 7E 47
+ CF 40 00 00
+ DB 45 0F 32
+ AF 31 00 00
+ 00 00 00 00
+ 00 00 00 00
+ E3 6A 60 69
+ 9E 6D 47 83
+ 13 7C 23 70
+ 0B 74 8F 80
+ DB 75 17 68
+ BA 75 BF B3
+ 21 5B 69 B5
+ 6C A0 71 0C
+ 28 00 FF 36
+ F0 11 30 03
+ 00 00 00 0E
+ ];
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-liquid-7650-sanyo.dtsi b/arch/arm64/boot/dts/qcom/batterydata-liquid-7650-sanyo.dtsi
new file mode 100644
index 000000000000..fc4e0907f750
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-liquid-7650-sanyo.dtsi
@@ -0,0 +1,62 @@
+/* Copyright (c) 2015, 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,liquid8996_sanyo {
+ /* #Liquid8996_860_79873_ES00_7560mAh_averaged_MasterSlave_June4th2015*/
+ qcom,max-voltage-uv = <4350000>;
+ qcom,v-cutoff-uv = <3400000>;
+ qcom,chg-term-ua = <100000>;
+ qcom,nom-batt-capacity-mah = <7560>;
+ qcom,batt-id-kohm = <50>;
+ qcom,battery-beta = <3380>;
+ qcom,battery-type = "liquid8996_860_79873_es00_7560mah";
+ qcom,chg-rslow-comp-c1 = <5647648>;
+ qcom,chg-rslow-comp-c2 = <14300640>;
+ qcom,chg-rs-to-rslow = <785202>;
+ qcom,chg-rslow-comp-thr = <0xCD>;
+ qcom,checksum = <0xE5C0>;
+ qcom,gui-version = "PMI8994GUI - 2.1.6.5";
+ qcom,fg-profile-data = [
+ EA 83 27 7D
+ 03 81 EE 76
+ 3E 83 93 59
+ 06 82 AD 8D
+ F1 81 36 93
+ 6F AD 00 AB
+ 5C 14 2F 83
+ EE 6B 8C 5D
+ 5B 69 14 83
+ 8B 7B CC 8C
+ 94 88 0F 82
+ C4 99 8F BC
+ 00 C9 77 14
+ 8C 1D E8 58
+ CE 6E E1 FA
+ F5 2A 8B 4D
+ CA 49 00 00
+ 21 46 A3 33
+ 55 3E 00 00
+ 00 00 00 00
+ 00 00 00 00
+ 5A 6A D2 69
+ 7B 66 29 89
+ 60 7D B9 71
+ 55 74 33 83
+ EC 7C A8 70
+ 4B 68 22 B8
+ 29 C8 60 B8
+ 5D A0 71 0C
+ 28 00 FF 36
+ F0 11 30 03
+ 00 00 00 0C
+ ];
+};
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 000000000000..198fbea2ef0a
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-mtp-3000mah.dtsi
@@ -0,0 +1,118 @@
+/* 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,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>;
+ };
+
+ qcom,ibat-acc-lut {
+ qcom,lut-col-legend = <(-20) 0 25>;
+ qcom,lut-row-legend = <0 250 500 1000>;
+ qcom,lut-data = <3030 3033 3037>,
+ <1898 2943 2960>,
+ <1184 2855 2948>,
+ <209 2464 2921>;
+ };
+};
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 000000000000..4c4435189256
--- /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>,
+ <601 1406 1430>,
+ <89 1247 1414>,
+ <8 764 1338>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-qrd-4v2-1300mah.dtsi b/arch/arm64/boot/dts/qcom/batterydata-qrd-4v2-1300mah.dtsi
new file mode 100644
index 000000000000..23ca26c9e970
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-qrd-4v2-1300mah.dtsi
@@ -0,0 +1,106 @@
+/* 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.
+ */
+
+qcom,qrd-4v2-1300mah-data {
+ qcom,fcc-mah = <1300>;
+ qcom,default-rbatt-mohm = <172>;
+ qcom,rbatt-capacitive-mohm = <0>;
+ 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 = <100>;
+ qcom,battery-type = "qrd_4v2_1300mah";
+
+ 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 = <604 192 100 79 71>,
+ <605 192 100 79 71>,
+ <641 205 103 81 72>,
+ <641 221 108 84 75>,
+ <622 238 115 87 77>,
+ <612 254 123 92 79>,
+ <605 252 137 96 83>,
+ <607 219 154 104 87>,
+ <613 202 135 109 89>,
+ <626 200 106 90 77>,
+ <656 201 101 82 75>,
+ <684 204 100 84 77>,
+ <710 211 100 85 79>,
+ <747 224 106 89 82>,
+ <806 241 116 90 80>,
+ <905 260 119 87 77>,
+ <1046 291 113 87 77>,
+ <1309 329 116 90 79>,
+ <1476 300 126 97 83>,
+ <1598 311 127 98 84>,
+ <1771 323 130 99 85>,
+ <1984 342 136 101 86>,
+ <2438 368 140 101 86>,
+ <3381 388 137 100 84>,
+ <4913 414 141 99 86>,
+ <6979 468 155 104 90>,
+ <9968 565 192 113 98>,
+ <16163 833 350 140 120>,
+ <36511 6483 4872 472 1095>;
+ };
+
+ qcom,fcc-temp-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-data = <1343 1353 1408 1345 1342>;
+ };
+
+ 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 = <4177 4174 4199 4167 4162>,
+ <4107 4112 4141 4109 4106>,
+ <4058 4064 4091 4061 4059>,
+ <3996 4015 4044 4017 4015>,
+ <3947 3975 4001 3978 3976>,
+ <3909 3939 3962 3943 3940>,
+ <3874 3901 3926 3911 3907>,
+ <3845 3858 3892 3882 3878>,
+ <3821 3826 3851 3849 3846>,
+ <3801 3804 3815 3810 3808>,
+ <3788 3789 3793 3789 3787>,
+ <3778 3780 3778 3776 3773>,
+ <3769 3776 3770 3767 3764>,
+ <3757 3772 3766 3762 3757>,
+ <3740 3765 3762 3754 3744>,
+ <3714 3747 3750 3739 3724>,
+ <3668 3706 3717 3710 3697>,
+ <3602 3644 3662 3662 3654>,
+ <3533 3571 3601 3607 3605>,
+ <3518 3557 3583 3592 3590>,
+ <3500 3543 3565 3576 3574>,
+ <3478 3528 3546 3559 3557>,
+ <3451 3506 3521 3538 3534>,
+ <3417 3473 3481 3505 3496>,
+ <3377 3423 3424 3454 3444>,
+ <3327 3361 3351 3391 3380>,
+ <3261 3279 3258 3310 3297>,
+ <3165 3165 3138 3198 3182>,
+ <3000 3000 3000 3000 3000>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-qrd-4v2-1800mah.dtsi b/arch/arm64/boot/dts/qcom/batterydata-qrd-4v2-1800mah.dtsi
new file mode 100644
index 000000000000..4cd4b2cb7400
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-qrd-4v2-1800mah.dtsi
@@ -0,0 +1,106 @@
+/* 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.
+ */
+
+qcom,qrd-4v2-1800mah-data {
+ qcom,fcc-mah = <1800>;
+ qcom,default-rbatt-mohm = <146>;
+ qcom,rbatt-capacitive-mohm = <0>;
+ 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 = <47>;
+ qcom,battery-type = "qrd_4v2_1800mah";
+
+ 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 = <904 234 100 85 80>,
+ <905 234 100 85 80>,
+ <934 244 102 86 81>,
+ <928 254 105 87 82>,
+ <933 268 109 89 84>,
+ <924 280 114 91 85>,
+ <913 283 123 96 88>,
+ <916 267 135 103 91>,
+ <930 252 137 110 95>,
+ <954 247 117 106 95>,
+ <990 247 103 88 85>,
+ <1036 253 104 86 84>,
+ <1101 264 108 89 85>,
+ <1211 286 112 93 88>,
+ <1366 340 120 95 87>,
+ <1601 394 128 95 87>,
+ <2178 402 128 97 89>,
+ <5419 423 126 97 89>,
+ <10789 528 128 97 91>,
+ <13463 589 132 100 91>,
+ <17695 678 137 102 92>,
+ <23046 814 145 104 93>,
+ <30725 1019 153 106 93>,
+ <41382 1359 156 106 93>,
+ <56311 1959 165 108 95>,
+ <77209 3523 189 117 99>,
+ <104609 6039 235 127 105>,
+ <138858 9711 352 141 112>,
+ <165825 15373 1069 246 226>;
+ };
+
+ qcom,fcc-temp-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-data = <1859 1868 1873 1861 1859>;
+ };
+
+ 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 = <4178 4176 4174 4169 4163>,
+ <4090 4100 4105 4101 4099>,
+ <4029 4049 4053 4050 4048>,
+ <3973 3998 4006 4004 4002>,
+ <3932 3959 3965 3962 3960>,
+ <3891 3920 3928 3925 3922>,
+ <3855 3882 3894 3891 3889>,
+ <3825 3844 3862 3862 3859>,
+ <3803 3813 3829 3834 3831>,
+ <3788 3792 3797 3802 3800>,
+ <3777 3780 3778 3776 3773>,
+ <3764 3775 3771 3767 3763>,
+ <3749 3769 3766 3763 3757>,
+ <3725 3756 3758 3755 3750>,
+ <3687 3727 3736 3735 3729>,
+ <3631 3675 3698 3698 3691>,
+ <3571 3607 3637 3642 3637>,
+ <3514 3548 3568 3572 3570>,
+ <3458 3506 3519 3522 3522>,
+ <3444 3498 3511 3516 3515>,
+ <3430 3489 3503 3509 3508>,
+ <3413 3477 3493 3500 3500>,
+ <3395 3461 3478 3488 3486>,
+ <3373 3433 3446 3463 3456>,
+ <3346 3394 3397 3418 3410>,
+ <3307 3341 3334 3361 3352>,
+ <3251 3270 3254 3287 3277>,
+ <3160 3167 3152 3183 3172>,
+ <3000 3000 3000 3000 3000>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-qrd-4v2-2000mah.dtsi b/arch/arm64/boot/dts/qcom/batterydata-qrd-4v2-2000mah.dtsi
new file mode 100644
index 000000000000..0919060ca610
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-qrd-4v2-2000mah.dtsi
@@ -0,0 +1,106 @@
+/* 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.
+ */
+
+qcom,qrd-4v2-2000mah-data {
+ qcom,fcc-mah = <2000>;
+ qcom,default-rbatt-mohm = <138>;
+ qcom,rbatt-capacitive-mohm = <0>;
+ 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 = <130 115>;
+ qcom,battery-type = "qrd_4v2_2000mah";
+
+ 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 = <1191 250 100 78 69>,
+ <1192 250 100 78 69>,
+ <1242 263 102 80 70>,
+ <1192 277 105 81 71>,
+ <1202 294 108 83 72>,
+ <1205 308 113 86 73>,
+ <1234 313 118 90 76>,
+ <1255 294 131 96 80>,
+ <1284 276 139 103 84>,
+ <1321 271 115 89 74>,
+ <1363 273 104 81 72>,
+ <1400 283 103 79 71>,
+ <1404 295 105 81 71>,
+ <1428 313 108 84 73>,
+ <1489 341 112 87 74>,
+ <1615 374 115 84 73>,
+ <1813 404 117 85 73>,
+ <2121 387 127 89 76>,
+ <2310 366 115 88 77>,
+ <2543 386 116 89 77>,
+ <2879 415 118 92 78>,
+ <3633 457 122 93 78>,
+ <5901 507 128 94 79>,
+ <9939 561 131 93 79>,
+ <16631 634 129 94 78>,
+ <26968 794 134 97 81>,
+ <42610 1203 145 102 85>,
+ <64024 2628 174 115 94>,
+ <115224 17430 577 620 4155>;
+ };
+
+ qcom,fcc-temp-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-data = <2024 2033 2035 2031 2027>;
+ };
+
+ 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 = <4179 4177 4173 4170 4164>,
+ <4097 4107 4108 4106 4104>,
+ <4040 4060 4059 4057 4054>,
+ <3974 4007 4012 4012 4009>,
+ <3929 3968 3972 3972 3969>,
+ <3889 3933 3937 3935 3933>,
+ <3852 3896 3905 3904 3900>,
+ <3822 3859 3876 3875 3872>,
+ <3797 3827 3846 3847 3844>,
+ <3777 3803 3809 3809 3806>,
+ <3758 3787 3788 3786 3784>,
+ <3740 3779 3777 3774 3771>,
+ <3717 3774 3771 3768 3763>,
+ <3685 3767 3767 3764 3758>,
+ <3649 3757 3761 3756 3749>,
+ <3613 3734 3747 3738 3724>,
+ <3578 3689 3711 3706 3694>,
+ <3538 3615 3649 3648 3643>,
+ <3483 3543 3564 3568 3567>,
+ <3470 3533 3553 3556 3556>,
+ <3453 3522 3542 3545 3545>,
+ <3434 3509 3531 3534 3533>,
+ <3414 3492 3519 3521 3519>,
+ <3388 3467 3498 3499 3492>,
+ <3358 3428 3457 3459 3447>,
+ <3321 3374 3397 3400 3387>,
+ <3268 3300 3318 3323 3307>,
+ <3182 3188 3207 3213 3191>,
+ <3000 3000 3000 3000 3000>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-qrd-4v2-2200mah.dtsi b/arch/arm64/boot/dts/qcom/batterydata-qrd-4v2-2200mah.dtsi
new file mode 100644
index 000000000000..92ea7d8306cd
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-qrd-4v2-2200mah.dtsi
@@ -0,0 +1,106 @@
+/* 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.
+ */
+
+qcom,qrd-4v2-2200mah-data {
+ qcom,default-rbatt-mohm = <163>;
+ qcom,max-voltage-uv = <4200>;
+ qcom,fcc-mah = <2200>;
+ qcom,rbatt-capacitive-mohm = <0>;
+ qcom,v-cutoff-uv = <3400000>;
+ qcom,chg-term-ua = <100000>;
+ qcom,batt-id-kohm = <10>;
+ qcom,flat-ocv-threshold-uv = <3800000>;
+ qcom,battery-type = "qrd_4v2_2200mah";
+
+ qcom,fcc-temp-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-data = <2167 2179 2234 2178 2164>;
+ };
+
+ 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 = <4188 4184 4199 4176 4170>,
+ <4109 4124 4145 4124 4118>,
+ <4051 4082 4097 4077 4072>,
+ <3963 4024 4055 4034 4029>,
+ <3920 3971 4002 3993 3989>,
+ <3880 3932 3963 3957 3952>,
+ <3846 3892 3920 3913 3910>,
+ <3822 3859 3881 3873 3871>,
+ <3805 3834 3851 3845 3844>,
+ <3790 3813 3828 3823 3822>,
+ <3777 3796 3808 3805 3803>,
+ <3764 3784 3792 3790 3788>,
+ <3750 3775 3778 3777 3774>,
+ <3736 3766 3766 3761 3751>,
+ <3721 3752 3755 3745 3732>,
+ <3704 3733 3737 3729 3716>,
+ <3684 3707 3713 3707 3694>,
+ <3655 3686 3688 3682 3672>,
+ <3598 3661 3677 3671 3659>,
+ <3585 3655 3673 3669 3656>,
+ <3571 3644 3664 3663 3650>,
+ <3551 3626 3643 3648 3631>,
+ <3523 3598 3609 3618 3600>,
+ <3489 3561 3565 3578 3561>,
+ <3445 3514 3510 3529 3512>,
+ <3389 3453 3440 3468 3450>,
+ <3313 3372 3345 3386 3366>,
+ <3207 3252 3209 3262 3239>,
+ <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 = <1371 224 100 79 74>,
+ <1358 242 100 80 74>,
+ <1358 242 103 80 74>,
+ <1195 257 107 82 75>,
+ <1171 256 112 84 77>,
+ <1149 250 119 89 79>,
+ <1144 232 114 90 79>,
+ <1150 225 101 83 76>,
+ <1175 227 98 81 76>,
+ <1210 232 98 82 76>,
+ <1260 236 98 82 77>,
+ <1329 242 100 84 77>,
+ <1421 251 100 86 79>,
+ <1536 263 101 81 76>,
+ <1671 280 100 80 74>,
+ <1830 304 100 81 75>,
+ <2036 338 101 82 76>,
+ <2326 443 103 82 76>,
+ <2788 708 112 88 79>,
+ <2890 747 115 90 80>,
+ <2755 676 117 89 79>,
+ <2750 716 118 87 78>,
+ <2916 765 119 87 79>,
+ <3336 833 123 89 80>,
+ <4214 920 133 92 81>,
+ <5615 1031 151 96 83>,
+ <7923 1188 192 104 89>,
+ <13252 1886 585 137 122>,
+ <43764 20050 47711 3680 16847>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-qrd-4v35-2000mah.dtsi b/arch/arm64/boot/dts/qcom/batterydata-qrd-4v35-2000mah.dtsi
new file mode 100644
index 000000000000..53739fe58336
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-qrd-4v35-2000mah.dtsi
@@ -0,0 +1,110 @@
+/* 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.
+ */
+
+qcom,qrd-4v35-2000mAh-data {
+ qcom,fcc-mah = <2000>;
+ qcom,default-rbatt-mohm = <172>;
+ qcom,rbatt-capacitive-mohm = <0>;
+ qcom,flat-ocv-threshold-uv = <3800000>;
+ qcom,max-voltage-uv = <4350000>;
+ qcom,v-cutoff-uv = <3400000>;
+ qcom,chg-term-ua = <100000>;
+ qcom,batt-id-kohm = <200>;
+ qcom,battery-type = "qrd_4v35_2000mah";
+
+ 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 = <2422 324 100 79 72>,
+ <2417 325 100 79 71>,
+ <2344 327 100 80 72>,
+ <2416 336 102 81 73>,
+ <2072 354 107 82 73>,
+ <1961 372 113 84 75>,
+ <1929 341 118 87 77>,
+ <1929 321 130 93 80>,
+ <2041 306 140 104 85>,
+ <2202 292 119 96 83>,
+ <2374 290 98 80 73>,
+ <2550 292 98 79 72>,
+ <2727 294 99 81 73>,
+ <2904 303 100 82 75>,
+ <3091 323 100 81 73>,
+ <3278 348 100 80 73>,
+ <3470 376 99 79 72>,
+ <3627 386 100 79 72>,
+ <3672 398 100 80 71>,
+ <3812 424 100 80 73>,
+ <3895 443 101 80 73>,
+ <3985 465 102 82 75>,
+ <4094 497 105 83 76>,
+ <4211 533 109 85 79>,
+ <4335 579 113 87 80>,
+ <4505 612 113 85 76>,
+ <4693 643 113 86 77>,
+ <4930 712 120 90 81>,
+ <5283 835 145 111 107>,
+ <10293 15765 5566 6904 2547>;
+ };
+
+ qcom,fcc-temp-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-data = <2096 2124 2121 2118 2103>;
+ };
+
+ 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 = <4340 4340 4335 4330 4323>,
+ <4217 4260 4265 4263 4258>,
+ <4135 4203 4207 4205 4201>,
+ <4084 4150 4152 4150 4146>,
+ <3992 4101 4101 4097 4093>,
+ <3934 4049 4051 4046 4044>,
+ <3889 3974 3995 3998 3999>,
+ <3852 3926 3958 3961 3959>,
+ <3832 3892 3921 3923 3921>,
+ <3819 3859 3874 3877 3877>,
+ <3807 3831 3838 3838 3838>,
+ <3796 3809 3815 3815 3814>,
+ <3784 3792 3797 3797 3796>,
+ <3770 3780 3783 3782 3781>,
+ <3754 3770 3772 3769 3764>,
+ <3737 3758 3763 3754 3742>,
+ <3717 3737 3744 3735 3720>,
+ <3700 3713 3718 3710 3696>,
+ <3687 3701 3692 3683 3671>,
+ <3674 3695 3689 3681 3669>,
+ <3667 3692 3688 3680 3669>,
+ <3659 3690 3687 3680 3668>,
+ <3649 3687 3685 3678 3667>,
+ <3636 3683 3683 3676 3664>,
+ <3618 3674 3679 3671 3658>,
+ <3596 3652 3663 3652 3632>,
+ <3566 3611 3620 3606 3584>,
+ <3522 3547 3555 3540 3517>,
+ <3460 3449 3461 3446 3424>,
+ <3356 3282 3312 3299 3273>,
+ <3000 3000 3000 3000 3000>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-qrd-4v35-2500mah.dtsi b/arch/arm64/boot/dts/qcom/batterydata-qrd-4v35-2500mah.dtsi
new file mode 100644
index 000000000000..1f55a8851b37
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-qrd-4v35-2500mah.dtsi
@@ -0,0 +1,106 @@
+/* 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.
+ */
+
+qcom,qrd-4v35-2500mAh-data {
+ qcom,fcc-mah = <2500>;
+ qcom,default-rbatt-mohm = <198>;
+ qcom,rbatt-capacitive-mohm = <0>;
+ qcom,flat-ocv-threshold-uv = <3800000>;
+ qcom,max-voltage-uv = <4350000>;
+ qcom,v-cutoff-uv = <3400000>;
+ qcom,chg-term-ua = <100000>;
+ qcom,batt-id-kohm = <470>;
+ qcom,battery-type = "qrd_4v35_2500mah";
+
+ 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 = <1809 428 100 64 57>,
+ <1805 428 100 64 57>,
+ <1674 443 103 65 57>,
+ <1611 447 108 66 58>,
+ <1407 474 113 69 59>,
+ <1379 462 122 74 61>,
+ <1335 381 124 74 63>,
+ <1346 388 135 79 66>,
+ <1410 382 123 82 68>,
+ <1479 372 101 68 60>,
+ <1542 363 100 66 59>,
+ <1605 368 101 66 60>,
+ <1665 406 102 68 61>,
+ <1722 460 103 70 61>,
+ <1779 525 103 68 61>,
+ <1840 593 104 66 59>,
+ <1914 669 104 65 58>,
+ <2016 779 104 65 59>,
+ <1955 827 107 67 60>,
+ <2006 855 112 69 61>,
+ <2057 882 116 71 63>,
+ <2103 925 123 72 66>,
+ <2162 955 128 73 62>,
+ <2218 991 123 69 61>,
+ <2286 1035 122 69 62>,
+ <2382 1083 130 72 65>,
+ <2780 1158 153 83 81>,
+ <5073 1464 724 393 147>,
+ <46882 49515 42109 55595 11697>;
+ };
+
+ qcom,fcc-temp-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-data = <2578 2580 2590 2584 2573>;
+ };
+
+ 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 = <4326 4323 4321 4319 4311>,
+ <4192 4235 4253 4254 4249>,
+ <4110 4175 4198 4199 4194>,
+ <4058 4121 4146 4146 4141>,
+ <3952 4076 4096 4096 4091>,
+ <3906 4017 4052 4048 4043>,
+ <3859 3942 3990 3997 3999>,
+ <3828 3905 3954 3962 3959>,
+ <3813 3869 3911 3918 3916>,
+ <3799 3836 3866 3870 3868>,
+ <3786 3808 3837 3840 3840>,
+ <3772 3788 3815 3818 3817>,
+ <3758 3777 3796 3799 3798>,
+ <3743 3765 3780 3783 3781>,
+ <3726 3751 3767 3767 3761>,
+ <3707 3733 3753 3749 3736>,
+ <3684 3713 3731 3727 3713>,
+ <3654 3697 3699 3697 3685>,
+ <3616 3678 3683 3680 3669>,
+ <3605 3673 3682 3679 3667>,
+ <3594 3667 3680 3678 3666>,
+ <3578 3660 3676 3675 3662>,
+ <3561 3647 3666 3667 3647>,
+ <3541 3628 3637 3640 3610>,
+ <3514 3598 3586 3590 3556>,
+ <3478 3550 3515 3523 3485>,
+ <3425 3476 3414 3429 3387>,
+ <3330 3350 3272 3276 3222>,
+ <3000 3000 3000 3000 3000>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-qrd-sku1-4v4-2800mah.dtsi b/arch/arm64/boot/dts/qcom/batterydata-qrd-sku1-4v4-2800mah.dtsi
new file mode 100644
index 000000000000..0b5072209c8f
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-qrd-sku1-4v4-2800mah.dtsi
@@ -0,0 +1,62 @@
+/* Copyright (c) 2015, 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_msm8937_sku1_2920mah {
+ /* #QRD8937_2800mAh_China_data_averaged_MasterSlave_Oct30th2015*/
+ qcom,max-voltage-uv = <4400000>;
+ qcom,nom-batt-capacity-mah = <2800>;
+ qcom,batt-id-kohm = <90>;
+ qcom,battery-beta = <3380>;
+ qcom,battery-type = "qrd_msm8937_sku1_2800mah";
+ qcom,fastchg-current-ma = <3000>;
+ qcom,fg-cc-cv-threshold-mv = <4390>;
+ qcom,chg-rslow-comp-c1 = <6733839>;
+ qcom,chg-rslow-comp-c2 = <23336040>;
+ qcom,chg-rs-to-rslow = <1049243>;
+ qcom,chg-rslow-comp-thr = <0xDB>;
+ qcom,checksum = <0x7E2A>;
+ qcom,gui-version = "PMI8950GUI - 2.0.0.14";
+ qcom,fg-profile-data = [
+ C6 83 8A 77
+ 3E 80 84 75
+ 72 83 A1 7C
+ A0 90 FC 97
+ 3F 82 09 99
+ 92 B7 97 C3
+ 4C 14 EB 83
+ A7 7C CE 80
+ 79 76 60 83
+ 3B 64 34 88
+ 19 94 49 82
+ 07 9A 7F BD
+ BF CA 53 0D
+ 32 0B 68 59
+ 14 70 71 FD
+ 8C 28 9C 45
+ 3F 21 00 00
+ B6 47 FE 30
+ 0B 40 00 00
+ 00 00 00 00
+ 00 00 00 00
+ 3A 70 78 6B
+ F7 77 7F 88
+ 32 7C F2 70
+ 64 75 0B 79
+ 2B 77 F3 6B
+ CA 70 7D B1
+ 21 57 6B 6B
+ 6D A0 71 0C
+ 28 00 FF 36
+ F0 11 30 03
+ 00 00 00 0C
+ ];
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-qrd-skua-4v35-2000mah.dtsi b/arch/arm64/boot/dts/qcom/batterydata-qrd-skua-4v35-2000mah.dtsi
new file mode 100644
index 000000000000..6013efec43fd
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-qrd-skua-4v35-2000mah.dtsi
@@ -0,0 +1,122 @@
+/* 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-skua-4v35-2000mAh-data {
+ qcom,battery-type = "qrd_skua_4v35_2000mAh";
+ qcom,batt-id-kohm = <200>;
+ qcom,chg-term-ua = <100000>;
+ qcom,default-rbatt-mohm = <146>;
+ qcom,fcc-mah = <2000>;
+ qcom,max-voltage-uv = <4350000>;
+ qcom,rbatt-capacitive-mohm = <50>;
+ qcom,v-cutoff-uv = <3400000>;
+ qcom,flat-ocv-threshold-uv = <3800000>;
+
+ qcom,fcc-temp-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-data = <2064 2067 2067 2066 2063>;
+ };
+
+ qcom,ibat-acc-lut {
+ qcom,lut-col-legend = <(-20) 0 25>;
+ qcom,lut-row-legend = <0 250 500 1000>;
+ qcom,lut-data = <2022 2046 2046>,
+ <1151 1962 2024>,
+ <680 1864 2008>,
+ <51 1548 1970>;
+ };
+
+ 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 = <1355 273 100 81 74>,
+ <1352 273 100 81 74>,
+ <1268 280 102 83 75>,
+ <1197 286 106 85 76>,
+ <1143 285 110 87 78>,
+ <1109 281 116 90 79>,
+ <1090 272 124 94 82>,
+ <1080 269 134 100 85>,
+ <1077 267 133 108 91>,
+ <1079 266 111 100 90>,
+ <1090 266 101 83 76>,
+ <1116 267 101 84 77>,
+ <1156 268 103 86 79>,
+ <1205 270 103 88 83>,
+ <1266 274 106 88 82>,
+ <1337 276 108 87 78>,
+ <1431 276 107 85 79>,
+ <1560 284 104 84 78>,
+ <1680 293 99 81 75>,
+ <2078 306 99 81 77>,
+ <2438 318 100 83 78>,
+ <2875 333 102 85 80>,
+ <3411 354 104 87 81>,
+ <4092 392 108 89 84>,
+ <5118 448 116 92 86>,
+ <6939 551 121 95 85>,
+ <10433 791 120 90 81>,
+ <17054 1280 121 93 84>,
+ <29375 2077 133 101 92>,
+ <52518 3457 173 135 133>,
+ <230352 176376 150360 117059 92159>;
+ };
+
+ 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 = <4328 4328 4322 4318 4310>,
+ <4234 4252 4252 4250 4245>,
+ <4164 4191 4193 4191 4186>,
+ <4098 4132 4137 4135 4131>,
+ <4036 4074 4084 4082 4078>,
+ <3980 4019 4035 4033 4029>,
+ <3932 3967 3990 3989 3985>,
+ <3891 3923 3950 3950 3945>,
+ <3856 3886 3909 3912 3909>,
+ <3825 3855 3862 3868 3867>,
+ <3800 3828 3829 3829 3826>,
+ <3782 3805 3807 3806 3804>,
+ <3768 3786 3789 3789 3786>,
+ <3753 3770 3775 3774 3772>,
+ <3737 3757 3764 3761 3755>,
+ <3718 3740 3753 3746 3734>,
+ <3695 3719 3733 3725 3712>,
+ <3671 3702 3705 3698 3684>,
+ <3650 3691 3677 3668 3656>,
+ <3630 3681 3670 3662 3651>,
+ <3619 3676 3668 3660 3649>,
+ <3605 3670 3665 3658 3647>,
+ <3590 3664 3662 3655 3644>,
+ <3573 3655 3658 3651 3641>,
+ <3553 3643 3652 3647 3635>,
+ <3529 3622 3639 3632 3618>,
+ <3498 3590 3605 3595 3576>,
+ <3460 3543 3547 3535 3519>,
+ <3401 3476 3467 3455 3443>,
+ <3306 3368 3347 3336 3313>,
+ <3000 3000 3000 3000 3000>;
+ };
+};
+
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 000000000000..9be634b713bd
--- /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/batterydata-qrd-skuic-4v35-1850mah.dtsi b/arch/arm64/boot/dts/qcom/batterydata-qrd-skuic-4v35-1850mah.dtsi
new file mode 100644
index 000000000000..a71fd40255d6
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-qrd-skuic-4v35-1850mah.dtsi
@@ -0,0 +1,121 @@
+/* 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-skuic-4v35-1850mah-data {
+ qcom,battery-type = "qrd-skuic-4v35-1850mah";
+ qcom,batt-id-kohm = <105>;
+ qcom,chg-term-ua = <100000>;
+ qcom,default-rbatt-mohm = <191>;
+ qcom,fcc-mah = <1850>;
+ qcom,max-voltage-uv = <4350000>;
+ qcom,rbatt-capacitive-mohm = <50>;
+ qcom,v-cutoff-uv = <3400000>;
+ qcom,flat-ocv-threshold-uv = <3800000>;
+
+ qcom,fcc-temp-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-data = <1832 1824 1823 1820 1809>;
+ };
+
+ qcom,ibat-acc-lut {
+ qcom,lut-col-legend = <(-20) 0 25>;
+ qcom,lut-row-legend = <0 250 500 1000>;
+ qcom,lut-data = <1795 1787 1786>,
+ <1275 1752 1761>,
+ <590 1628 1743>,
+ <45 968 1661>;
+ };
+
+ 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 = <4324 4320 4316 4313 4306>,
+ <4239 4247 4247 4246 4242>,
+ <4177 4191 4191 4190 4187>,
+ <4115 4139 4139 4137 4134>,
+ <4070 4093 4089 4087 4085>,
+ <3993 4040 4043 4042 4038>,
+ <3930 3966 3990 3995 3995>,
+ <3899 3927 3957 3958 3956>,
+ <3868 3892 3917 3921 3920>,
+ <3838 3860 3869 3872 3873>,
+ <3808 3834 3837 3838 3839>,
+ <3787 3812 3814 3815 3815>,
+ <3771 3793 3796 3797 3796>,
+ <3759 3781 3781 3780 3781>,
+ <3748 3774 3772 3767 3760>,
+ <3738 3764 3760 3752 3739>,
+ <3726 3742 3739 3730 3716>,
+ <3715 3717 3709 3700 3688>,
+ <3702 3704 3692 3683 3670>,
+ <3691 3699 3687 3678 3667>,
+ <3685 3697 3686 3677 3666>,
+ <3675 3695 3684 3676 3665>,
+ <3664 3692 3683 3675 3663>,
+ <3645 3686 3679 3670 3658>,
+ <3619 3670 3664 3653 3638>,
+ <3584 3637 3631 3618 3601>,
+ <3535 3586 3580 3567 3551>,
+ <3467 3520 3514 3500 3486>,
+ <3368 3429 3424 3409 3398>,
+ <3231 3299 3287 3265 3263>,
+ <3005 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 = <714 184 100 85 77>,
+ <714 184 100 85 77>,
+ <707 193 104 88 79>,
+ <674 202 110 91 81>,
+ <670 209 114 95 84>,
+ <623 219 121 100 87>,
+ <588 194 124 104 90>,
+ <593 189 131 108 94>,
+ <591 183 127 112 98>,
+ <590 178 106 95 87>,
+ <587 178 100 88 81>,
+ <605 179 103 91 83>,
+ <644 181 106 94 87>,
+ <704 186 108 95 91>,
+ <790 198 111 95 86>,
+ <898 208 112 92 82>,
+ <1012 206 111 92 83>,
+ <1095 198 107 91 81>,
+ <1133 206 106 91 81>,
+ <1100 218 110 94 85>,
+ <1036 225 114 97 86>,
+ <789 216 114 98 88>,
+ <823 214 116 99 88>,
+ <865 221 118 100 88>,
+ <922 223 116 97 85>,
+ <991 222 111 94 84>,
+ <1069 229 111 95 86>,
+ <1212 249 116 99 90>,
+ <1665 284 128 108 96>,
+ <4956 452 178 153 109>,
+ <52816 21422 16264 30119 400>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-qrd-skul-4v4-2920mah.dtsi b/arch/arm64/boot/dts/qcom/batterydata-qrd-skul-4v4-2920mah.dtsi
new file mode 100644
index 000000000000..969bed48e996
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-qrd-skul-4v4-2920mah.dtsi
@@ -0,0 +1,120 @@
+/* Copyright (c) 2015, 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-skul-4v4-2920mah-batterydata {
+ qcom,battery-type = "qrd-skul-4v4-2920mah";
+ qcom,batt-id-kohm = <1000>;
+ qcom,chg-term-ua = <100000>;
+ qcom,default-rbatt-mohm = <183>;
+ qcom,fcc-mah = <2920>;
+ qcom,max-voltage-uv = <4400000>;
+ qcom,rbatt-capacitive-mohm = <50>;
+ qcom,v-cutoff-uv = <3400000>;
+
+ qcom,fcc-temp-lut {
+ qcom,lut-col-legend = <(-20) 0 25 40 60>;
+ qcom,lut-data = <2965 2985 2985 2981 2960>;
+ };
+
+ qcom,ibat-acc-lut {
+ qcom,lut-col-legend = <(-20) 0 25>;
+ qcom,lut-row-legend = <0 250 500 1000>;
+ qcom,lut-data = <2906 2925 2925>,
+ <1429 2837 2914>,
+ <782 2530 2887>,
+ <79 1818 2814>;
+ };
+
+ 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 = <4382 4379 4372 4366 4358>,
+ <4247 4287 4296 4295 4288>,
+ <4161 4224 4234 4232 4227>,
+ <4092 4166 4175 4174 4169>,
+ <4044 4111 4120 4118 4113>,
+ <3946 4059 4066 4065 4061>,
+ <3903 3987 4016 4016 4013>,
+ <3858 3933 3969 3971 3968>,
+ <3825 3895 3920 3924 3924>,
+ <3807 3860 3875 3878 3879>,
+ <3793 3831 3842 3843 3843>,
+ <3779 3806 3818 3819 3818>,
+ <3764 3788 3798 3799 3798>,
+ <3749 3776 3782 3783 3781>,
+ <3734 3765 3769 3767 3763>,
+ <3719 3749 3757 3750 3737>,
+ <3702 3727 3738 3729 3716>,
+ <3685 3707 3714 3707 3694>,
+ <3667 3695 3690 3683 3674>,
+ <3652 3689 3685 3680 3669>,
+ <3642 3686 3685 3679 3668>,
+ <3630 3683 3683 3677 3667>,
+ <3615 3679 3681 3676 3665>,
+ <3598 3673 3678 3673 3662>,
+ <3578 3663 3673 3666 3652>,
+ <3553 3637 3648 3640 3625>,
+ <3516 3594 3601 3592 3578>,
+ <3464 3532 3538 3530 3516>,
+ <3382 3440 3450 3447 3432>,
+ <3251 3295 3315 3325 3301>,
+ <3000 3000 3000 3052 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 = <1029 231 100 86 81>,
+ <1029 231 100 86 81>,
+ <956 233 100 87 82>,
+ <899 236 101 88 82>,
+ <873 238 104 89 83>,
+ <773 241 107 90 84>,
+ <762 217 113 93 85>,
+ <743 200 118 97 88>,
+ <739 198 112 99 89>,
+ <761 195 101 92 87>,
+ <797 196 98 87 82>,
+ <844 196 98 87 82>,
+ <896 199 99 88 83>,
+ <955 209 100 90 85>,
+ <1017 227 100 89 85>,
+ <1089 252 100 87 82>,
+ <1172 278 101 87 82>,
+ <1253 301 103 88 82>,
+ <1306 323 101 87 82>,
+ <1246 323 101 88 82>,
+ <1298 339 104 88 83>,
+ <1351 357 105 90 84>,
+ <1451 377 108 91 85>,
+ <1637 402 111 93 87>,
+ <1855 431 115 95 87>,
+ <2128 459 115 92 85>,
+ <2562 493 117 93 85>,
+ <3249 556 124 96 87>,
+ <4616 660 138 101 92>,
+ <10855 3698 256 124 113>,
+ <142404 102851 83715 2038 57906>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/batterydata-qrd-skum-4v4-2920mah.dtsi b/arch/arm64/boot/dts/qcom/batterydata-qrd-skum-4v4-2920mah.dtsi
new file mode 100644
index 000000000000..e19a45fa115b
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/batterydata-qrd-skum-4v4-2920mah.dtsi
@@ -0,0 +1,61 @@
+/* Copyright (c) 2015, 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_msm8952_skum_2920mah {
+ qcom,max-voltage-uv = <4400000>;
+ qcom,nom-batt-capacity-mah = <2920>;
+ qcom,batt-id-kohm = <50 90>;
+ qcom,battery-beta = <0>;
+ qcom,battery-type = "qrd_msm8952_skum_2920mah";
+ qcom,fastchg-current-ma = <3000>;
+ qcom,fg-cc-cv-threshold-mv = <4390>;
+ qcom,chg-rslow-comp-c1 = <4847657>;
+ qcom,chg-rslow-comp-c2 = <11109950>;
+ qcom,chg-rs-to-rslow = <819081>;
+ qcom,chg-rslow-comp-thr = <0xC7>;
+ qcom,checksum = <0x13EE>;
+ qcom,gui-version = "PMI8950GUI - 0.0.0.32";
+ qcom,fg-profile-data = [
+ C7 83 0E 77
+ EE 7A 0A 6E
+ 3A 83 D3 70
+ 5B 71 3F 86
+ B0 81 82 A0
+ 3E C4 77 D1
+ 54 0D D4 83
+ 8A 76 4C 7A
+ D0 6C 4F 83
+ 77 6B 2E 79
+ 05 8C 20 82
+ 70 9A 79 BD
+ 3C CA 54 0D
+ D3 0B A0 62
+ 14 70 71 FD
+ 35 2F CD 35
+ FE 1A 00 00
+ 9C 4D 14 3B
+ FE 3A 00 00
+ 00 00 00 00
+ 00 00 00 00
+ 0D 6B A9 69
+ A2 76 CE 81
+ 8B 7D A0 72
+ 95 6F 64 78
+ 46 7C 34 70
+ 9B 49 85 93
+ 50 4B 61 22
+ 5E A0 71 0C
+ 28 00 FF 36
+ F0 11 30 03
+ 00 00 00 00
+ ];
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-adv7533-1080p.dtsi b/arch/arm64/boot/dts/qcom/dsi-adv7533-1080p.dtsi
new file mode 100644
index 000000000000..1926f9c2863d
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-adv7533-1080p.dtsi
@@ -0,0 +1,74 @@
+/* Copyright (c) 2015, 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_adv7533_1080p: qcom,mdss_dsi_adv7533_1080p {
+ label = "adv7533 1080p video mode dsi panel";
+ qcom,mdss-dsi-panel-name = "dsi_adv7533_1080p";
+ 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 = <1080>;
+ qcom,mdss-dsi-h-front-porch = <88>;
+ qcom,mdss-dsi-h-back-porch = <148>;
+ qcom,mdss-dsi-h-pulse-width = <44>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <36>;
+ qcom,mdss-dsi-v-front-porch = <4>;
+ qcom,mdss-dsi-v-pulse-width = <5>;
+ 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 = [
+ 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 = "non_burst_sync_pulse";
+ 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 = [
+ E6 38 26 00 68 6C 2A 3A 2C 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x02>;
+ qcom,mdss-dsi-t-clk-pre = <0x2B>;
+ 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 = <160>;
+ qcom,mdss-pan-physical-height-dimension = <90>;
+ qcom,mdss-dsi-force-clock-lane-hs;
+ qcom,mdss-dsi-always-on;
+ qcom,mdss-dsi-panel-timings-8996 = [1d 1a 03 05 01 03 04 a0
+ 1d 1a 03 05 01 03 04 a0
+ 1d 1a 03 05 01 03 04 a0
+ 1d 1a 03 05 01 03 04 a0
+ 1d 1a 03 05 01 03 04 a0];
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-adv7533-720p.dtsi b/arch/arm64/boot/dts/qcom/dsi-adv7533-720p.dtsi
new file mode 100644
index 000000000000..080ab3dfd74b
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-adv7533-720p.dtsi
@@ -0,0 +1,73 @@
+/* Copyright (c) 2015, 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_adv7533_720p: qcom,mdss_dsi_adv7533_720p {
+ label = "adv7533 720p video mode dsi panel";
+ qcom,mdss-dsi-panel-name = "dsi_adv7533_720p";
+ 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 = <720>;
+ qcom,mdss-dsi-h-front-porch = <110>;
+ qcom,mdss-dsi-h-back-porch = <220>;
+ qcom,mdss-dsi-h-pulse-width = <40>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <20>;
+ qcom,mdss-dsi-v-front-porch = <5>;
+ qcom,mdss-dsi-v-pulse-width = <5>;
+ 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 = [
+ 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 = "non_burst_sync_pulse";
+ 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-panel-timings = [
+ A4 24 18 00 4E 52 1C 28 1C 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x03>;
+ qcom,mdss-dsi-t-clk-pre = <0x20>;
+ 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 = <160>;
+ qcom,mdss-pan-physical-height-dimension = <90>;
+ qcom,mdss-dsi-force-clock-lane-hs;
+ qcom,mdss-dsi-always-on;
+ qcom,mdss-dsi-panel-timings-8996 = [1c 19 02 03 01 03 04 a0
+ 1c 19 02 03 01 03 04 a0
+ 1c 19 02 03 01 03 04 a0
+ 1c 19 02 03 01 03 04 a0
+ 1c 08 02 03 01 03 04 a0];
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-hx8379a-truly-fwvga-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-hx8379a-truly-fwvga-video.dtsi
new file mode 100644
index 000000000000..772bb8350311
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-hx8379a-truly-fwvga-video.dtsi
@@ -0,0 +1,138 @@
+/* Copyright (c) 2014-2015, 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_hx8379a_fwvga_truly_vid: qcom,mdss_dsi_hx8379a_fwvga_truly_vid {
+ qcom,mdss-dsi-panel-name = "HX8379A fwvga video mode dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ 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 = <100>;
+ qcom,mdss-dsi-h-back-porch = <94>;
+ qcom,mdss-dsi-h-pulse-width = <40>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <4>;
+ qcom,mdss-dsi-v-front-porch = <6>;
+ qcom,mdss-dsi-v-pulse-width = <6>;
+ 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 = [
+ 39 01 00 00 00 00 04
+ B9 FF 83 79
+ 39 01 00 00 00 00 15
+ B1 44 18 18
+ 31 51 90 D0
+ EE D4 80 38
+ 38 F8 44 44
+ 42 00 80 30
+ 00
+ 39 01 00 00 00 00 0A
+ B2 80 FE 0A
+ 03 30 50 11
+ 42 1D
+ 39 01 00 00 00 00 0E
+ B4 01 28 00
+ 34 00 34 17
+ 3A 17 3A B0
+ 00 FF
+ 23 01 00 00 00 00 02
+ cc 02
+ 39 01 00 00 00 00 02
+ D2 33
+ 39 01 00 00 00 00 1E
+ D3 00 07 00
+ 00 00 06 06
+ 32 10 03 00
+ 03 03 5F 03
+ 5F 00 08 00
+ 08 35 33 07
+ 07 37 07 07
+ 37 07
+ 39 01 00 00 00 00 21
+ D5 18 18 19
+ 19 18 18 20
+ 21 24 25 18
+ 18 18 18 00
+ 01 04 05 02
+ 03 06 07 18
+ 18 18 18 18
+ 18 18 18 18
+ 18
+ 39 01 00 00 00 00 21
+ D6 18 18 18
+ 18 19 19 25
+ 24 21 20 18
+ 18 18 18 05
+ 04 01 00 03
+ 02 07 06 18
+ 18 18 18 18
+ 18 18 18 18
+ 18
+ 39 01 00 00 00 00 2B
+ E0 00 05 09
+ 26 26 3E 1E
+ 45 08 0C 0D
+ 17 0E 12 15
+ 13 14 12 1F
+ 1F 1F 00 05
+ 09 26 26 3E
+ 1E 45 08 0C
+ 0D 17 0E 12
+ 15 13 14 12
+ 1F 1F 1F
+ 39 01 00 00 00 00 03
+ B6 54 54
+ 39 01 00 00 00 00 02
+ 35 00
+ 39 01 00 00 00 00 02
+ 51 ff
+ 39 01 00 00 00 00 02
+ 53 2c
+ 39 01 00 00 00 00 02
+ 55 01
+ 05 01 00 00 96 00 02
+ 11 00
+ 05 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-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-panel-timings =
+ [8B 1f 14 00 45 4A 19 23 23 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x04>;
+ qcom,mdss-dsi-t-clk-pre = <0x1D>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-reset-sequence = <1 20>, <0 2>, <1 20>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-hx8394f-720p-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-hx8394f-720p-video.dtsi
new file mode 100644
index 000000000000..f3ff7b2e583f
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-hx8394f-720p-video.dtsi
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2015, 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_hx8394f_720p_video: qcom,mdss_dsi_hx8394f_720p_video {
+ qcom,mdss-dsi-panel-name = "hx8394f 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 = <16>;
+ qcom,mdss-dsi-h-back-porch = <16>;
+ qcom,mdss-dsi-h-pulse-width = <10>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <12>;
+ qcom,mdss-dsi-v-front-porch = <15>;
+ 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 = [29 01 00 00 00 00 04 B9 FF 83 94
+ 29 01 00 00 00 00 07
+ BA 63 03 68 6b b2 c0
+ 29 01 00 00 00 00 0B
+ B1 50 12 72 09 32 34 71 31 70 2f
+ 29 01 00 00 00 00 07
+ B2 00 80 64 0E 0D 2F
+ 29 01 00 00 00 00 16
+ B4 6C 6D 6C 6D 6C 6D 01 01 FF 75
+ 00 3f 6C 6D 6C 6D 6C 6D 01 01 FF
+ 29 01 00 00 00 00 22
+ D3 00 00 07 07 40 07 10 00 08 10
+ 08 00 08 54 15 0E 05 0E 02 15 06
+ 05 06 47 44 0A 0A 4B 10 07 07 0e
+ 40
+ 29 01 00 00 00 00 2d
+ D5 1A 1A 1B 1B 00 01 02 03 04 05
+ 06 07 08 09 0A 0B 24 25 18 18 26
+ 27 18 18 18 18 18 18 18 18 18 18
+ 18 18 18 18 18 18 20 21 18 18 18
+ 18
+ 29 01 00 00 00 00 2d
+ D6 1A 1A 1B 1B 0B 0A 09 08 07 06
+ 05 04 03 02 01 00 21 20 18 18 27
+ 26 18 18 18 18 18 18 18 18 18 18
+ 18 18 18 18 18 18 25 24 18 18 18
+ 18
+ 29 01 00 00 00 00 3B
+ E0 00 0C 19 20 23 26 29 28 51 61
+ 70 6F 76 86 89 8D 99 9A 95 A1 B0
+ 57 55 58 5C 5e 64 6b 7f 00 0C 19
+ 20 23 26 29 28 51 61 70 6F 76 86
+ 89 8D 99 9A 95 A1 B0 57 55 58 5C
+ 5e 64 6b 7f
+ 29 01 00 00 00 00 03 C0 1f 73
+ 29 01 00 00 00 00 02 CC 0B
+ 29 01 00 00 00 00 02 d4 02
+ 29 01 00 00 00 00 03 B6 7E 7E
+ 05 01 00 00 96 00 02 11 00
+ 05 01 00 00 0a 00 02 29 00];
+ qcom,mdss-dsi-off-command = [05 01 00 00 78 00 02 28 00
+ 05 01 00 00 96 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
+ = [72 16 0e 00 38 3c 12 1a 10 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x04>;
+ qcom,mdss-dsi-t-clk-pre = <0x18>;
+ 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 2>, <1 20>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-jdi-4k-dualmipi-video-nofbc.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-4k-dualmipi-video-nofbc.dtsi
new file mode 100644
index 000000000000..6db2e51208de
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-4k-dualmipi-video-nofbc.dtsi
@@ -0,0 +1,68 @@
+/* Copyright (c) 2015, 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_nofbc_video: qcom,dsi_jdi_4k_nofbc_video {
+ qcom,mdss-dsi-panel-name = "JDI 4K no FBC Dual video mode dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-framerate = <40>;
+ 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 = <0x12>;
+ qcom,mdss-dsi-t-clk-pre = <0x34>;
+ 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 c9 00 01 11
+ 23 01 00 00 0a 00 02 b0 04
+ 29 01 00 00 0a 00 08 b3 14 08 00 00 00 00 00
+ 23 01 00 00 0a 00 02 d6 01
+ 05 01 00 00 50 00 01 29];
+
+ 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>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-jdi-4k-dualmipi-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-4k-dualmipi-video.dtsi
new file mode 100644
index 000000000000..655913226db5
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-4k-dualmipi-video.dtsi
@@ -0,0 +1,88 @@
+/* Copyright (c) 2014-2015, 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: qcom,dsi_jdi_4k_video {
+ qcom,mdss-dsi-panel-name = "JDI 4K Dual video mode dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-panel-clockrate = <849520000>;
+ 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
+ /* beginning of additional sequence */
+ /* Manufacturer Command Access Protect */
+ 23 01 00 00 50 00 02 B0 04
+ /* Qualcomm's IP control */
+ 29 01 00 00 0a 00 07 ED 80 00 34 5B 04 B0
+ /* Manufacturer Command Access Protect */
+ 23 01 00 00 50 00 02 B0 03
+ 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 = <0>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi-cmd.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi-cmd.dtsi
new file mode 100644
index 000000000000..dcd27cbaa27b
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi-cmd.dtsi
@@ -0,0 +1,134 @@
+/* Copyright (c) 2013-2015, 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: qcom,mdss_dsi_jdi_qhd_dualmipi_cmd{
+ qcom,mdss-dsi-panel-name = "Dual cmd mode dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_cmd_mode";
+ 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-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,ulps-enabled;
+ 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-post-mode-switch-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-post-mode-switch-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,dynamic-mode-switch-enabled;
+ qcom,dynamic-mode-switch-type = "dynamic-switch-immediate";
+ qcom,video-to-cmd-mode-switch-commands =
+ [23 00 00 00 00 00 02 b0 00
+ 29 00 00 00 00 00 02 b3 0c
+ 23 01 00 00 00 00 02 b0 03];
+ qcom,cmd-to-video-mode-switch-commands =
+ [23 00 00 00 00 00 02 b0 00
+ 29 00 00 00 00 00 02 b3 1c
+ 23 01 00 00 00 00 02 b0 03];
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi-video.dtsi
new file mode 100644
index 000000000000..10a61a4aa2d0
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-dualmipi-video.dtsi
@@ -0,0 +1,125 @@
+/* Copyright (c) 2013-2015, 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: qcom,dsi_jdi_qhd_video {
+ qcom,mdss-dsi-panel-name = "Dual JDI video mode dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ 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-post-mode-switch-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-post-mode-switch-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>;
+ qcom,dynamic-mode-switch-enabled;
+ qcom,dynamic-mode-switch-type = "dynamic-switch-immediate";
+ qcom,video-to-cmd-mode-switch-commands =
+ [23 00 00 00 00 00 02 b0 00
+ 29 00 00 00 00 00 02 b3 0c
+ 23 01 00 00 00 00 02 b0 03];
+ qcom,cmd-to-video-mode-switch-commands =
+ [23 00 00 00 00 00 02 b0 00
+ 29 00 00 00 00 00 02 b3 1c
+ 23 01 00 00 00 00 02 b0 03];
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-jdi-fhd-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-fhd-video.dtsi
new file mode 100644
index 000000000000..b0757c75865c
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-jdi-fhd-video.dtsi
@@ -0,0 +1,83 @@
+/* Copyright (c) 2014-2015, 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_fhd_video: qcom,mdss_dsi_jdi_fhd_video {
+ qcom,mdss-dsi-panel-name =
+ "jdi fhd 6inch A155A video mode dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ 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 = <12>;
+ qcom,mdss-dsi-h-back-porch = <28>;
+ qcom,mdss-dsi-h-pulse-width = <4>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <3>;
+ qcom,mdss-dsi-v-front-porch = <18>;
+ 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-panel-operating-mode = <1>;
+ qcom,mdss-dsi-on-command = [13 01 00 00 0a 00 02 FF F0
+ 13 01 00 00 0a 00 02 DD 02
+ 13 01 00 00 0a 00 02 E3 00
+ 13 01 00 00 0a 00 02 FB 01
+ 13 01 00 00 0a 00 02 FF 00
+ 15 01 00 00 0a 00 02 35 00
+ 15 01 00 00 0a 00 02 51 FF
+ 15 01 00 00 0a 00 02 53 2C
+ 13 01 00 00 0a 00 02 FF 26
+ 13 01 00 00 0a 00 02 02 FF
+ 13 01 00 00 0a 00 02 FF 10
+ 13 01 00 00 0a 00 02 BB 13
+ 13 01 00 00 0a 00 02 FF 00
+ 05 01 00 00 C8 00 01 11
+ 05 01 00 00 28 00 01 29];
+ 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 = <0>;
+ 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 =
+ [ce 2e 1e 00 5a 5c 24 30 24 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x0a>;
+ 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 200>, <1 20>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-nt35597-dsc-wqxga-cmd.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-nt35597-dsc-wqxga-cmd.dtsi
new file mode 100644
index 000000000000..57c6301f2074
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-nt35597-dsc-wqxga-cmd.dtsi
@@ -0,0 +1,130 @@
+/* Copyright (c) 2015, 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_nt35597_dsc_cmd: qcom,mdss_dsi_nt35597_dsc_wqxga_cmd {
+ qcom,mdss-dsi-panel-name = "NT35597 cmd mode dsc dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_cmd_mode";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <1440>;
+ qcom,mdss-dsi-panel-height = <2560>;
+ qcom,mdss-dsi-h-front-porch = <100>;
+ 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 = <7>;
+ qcom,mdss-dsi-v-front-porch = <8>;
+ qcom,mdss-dsi-v-pulse-width = <1>;
+ qcom,mdss-dsi-bpp = <24>;
+ qcom,mdss-dsi-border-color = <0>;
+ 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-timings = [e2 36 24 00 66 6a 28 38 2a 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0xb>;
+ qcom,mdss-dsi-t-clk-pre = <0x24>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-reset-sequence = <1 20>, <0 20>, <1 50>;
+ 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,ulps-enabled;
+
+ qcom,adjust-timer-wakeup-ms = <1>;
+ qcom,mdss-dsi-on-command = [15 01 00 00 0a 00 02 ff 10
+ 15 01 00 00 0a 00 02 fb 01
+ 15 01 00 00 0a 00 02 ba 03
+ 15 01 00 00 0a 00 02 e5 01
+ 15 01 00 00 0a 00 02 b0 03
+ 15 01 00 00 0a 00 02 ff 28
+ 15 01 00 00 0a 00 02 7a 02
+ 15 01 00 00 0a 00 02 fb 01
+ 15 01 00 00 0a 00 02 ff 10
+ 15 01 00 00 0a 00 02 fb 01
+ 15 01 00 00 0a 00 02 c0 03
+ 15 01 00 00 0a 00 02 bb 10
+ 15 01 00 00 0a 00 02 ff e0
+ 15 01 00 00 0a 00 02 fb 01
+ 15 01 00 00 0a 00 02 6b 3d
+ 15 01 00 00 0a 00 02 6c 3d
+ 15 01 00 00 0a 00 02 6d 3d
+ 15 01 00 00 0a 00 02 6e 3d
+ 15 01 00 00 0a 00 02 6f 3d
+ 15 01 00 00 0a 00 02 35 02
+ 15 01 00 00 0a 00 02 36 72
+ 15 01 00 00 0a 00 02 37 10
+ 15 01 00 00 0a 00 02 08 c0
+ 15 01 00 00 0a 00 02 ff 24
+ 15 01 00 00 0a 00 02 fb 01
+ 15 01 00 00 0a 00 02 c6 06
+ 15 01 00 00 0a 00 02 ff 10
+ 05 01 00 00 f0 00 01 11
+ 05 01 00 00 f0 00 01 29
+ 07 01 00 00 0a 00 02 01 00];
+
+ qcom,mdss-dsi-post-panel-on-command = [05 01 00 00 a0 00 01 29];
+
+ qcom,mdss-dsi-off-command = [05 01 00 00 78 00 02 28 00
+ 05 01 00 00 78 00 02 10 00];
+
+ qcom,compression-mode = "dsc";
+ qcom,config-select = <&dsi_nt35597_dsc_cmd_config2>;
+
+ dsi_nt35597_dsc_cmd_config0: config0 {
+ qcom,mdss-dsc-encoders = <1>;
+ qcom,mdss-dsc-slice-height = <16>;
+ qcom,mdss-dsc-slice-width = <720>;
+ qcom,mdss-dsc-slice-per-pkt = <2>;
+
+ qcom,mdss-dsc-bit-per-component = <8>;
+ qcom,mdss-dsc-bit-per-pixel = <8>;
+ qcom,mdss-dsc-block-prediction-enable;
+ };
+
+ dsi_nt35597_dsc_cmd_config1: config1 {
+ qcom,lm-split = <720 720>;
+ qcom,mdss-dsc-encoders = <1>; /* 3D Mux */
+ qcom,mdss-dsc-slice-height = <16>;
+ qcom,mdss-dsc-slice-width = <720>;
+ qcom,mdss-dsc-slice-per-pkt = <2>;
+
+ qcom,mdss-dsc-bit-per-component = <8>;
+ qcom,mdss-dsc-bit-per-pixel = <8>;
+ qcom,mdss-dsc-block-prediction-enable;
+ };
+
+ dsi_nt35597_dsc_cmd_config2: config2 {
+ qcom,lm-split = <720 720>;
+ qcom,mdss-dsc-encoders = <2>; /* DSC Merge */
+ qcom,mdss-dsc-slice-height = <16>;
+ qcom,mdss-dsc-slice-width = <720>;
+ qcom,mdss-dsc-slice-per-pkt = <2>;
+
+ qcom,mdss-dsc-bit-per-component = <8>;
+ qcom,mdss-dsc-bit-per-pixel = <8>;
+ qcom,mdss-dsc-block-prediction-enable;
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-nt35597-dsc-wqxga-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-nt35597-dsc-wqxga-video.dtsi
new file mode 100644
index 000000000000..1c515f506e9d
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-nt35597-dsc-wqxga-video.dtsi
@@ -0,0 +1,119 @@
+/* Copyright (c) 2015, 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_nt35597_dsc_video: qcom,mdss_dsi_nt35597_dsc_wqxga_video {
+ qcom,mdss-dsi-panel-name = "NT35597 video mode dsc dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ qcom,mdss-dsi-panel-framerate = <60>;
+ qcom,mdss-dsi-virtual-channel-id = <0>;
+ qcom,mdss-dsi-stream = <0>;
+ qcom,mdss-dsi-panel-width = <1440>;
+ qcom,mdss-dsi-panel-height = <2560>;
+ qcom,mdss-dsi-h-front-porch = <100>;
+ 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 = <7>;
+ qcom,mdss-dsi-v-front-porch = <8>;
+ qcom,mdss-dsi-v-pulse-width = <1>;
+ 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 0a 00 02 ff 10
+ 15 01 00 00 0a 00 02 fb 01
+ 15 01 00 00 0a 00 02 ba 03
+ 15 01 00 00 0a 00 02 e5 01
+ 15 01 00 00 0a 00 02 b0 03
+ 39 01 00 00 0a 00 06 3B 03 08 08 2e 64
+ 15 01 00 00 0a 00 02 ff 28
+ 15 01 00 00 0a 00 02 7a 02
+ 15 01 00 00 0a 00 02 fb 01
+ 15 01 00 00 0a 00 02 ff 10
+ 15 01 00 00 0a 00 02 fb 01
+ 15 01 00 00 0a 00 02 c0 03
+ 15 01 00 00 0a 00 02 bb 03
+ 15 01 00 00 0a 00 02 ff e0
+ 15 01 00 00 0a 00 02 fb 01
+ 15 01 00 00 0a 00 02 6b 3d
+ 15 01 00 00 0a 00 02 6c 3d
+ 15 01 00 00 0a 00 02 6d 3d
+ 15 01 00 00 0a 00 02 6e 3d
+ 15 01 00 00 0a 00 02 6f 3d
+ 15 01 00 00 0a 00 02 35 02
+ 15 01 00 00 0a 00 02 36 72
+ 15 01 00 00 0a 00 02 37 10
+ 15 01 00 00 0a 00 02 08 c0
+ 15 01 00 00 0a 00 02 ff 10
+ 05 01 00 00 a0 00 01 11
+ 05 01 00 00 a0 00 01 29
+ 07 01 00 00 a0 00 01 01];
+
+ qcom,mdss-dsi-off-command = [05 01 00 00 78 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 = <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 = [e2 36 24 00 66 6a 28 38 2a 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0xb>;
+ qcom,mdss-dsi-t-clk-pre = <0x24>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-reset-sequence = <1 20>, <0 20>, <1 50>;
+
+ qcom,compression-mode = "dsc";
+ qcom,config-select = <&dsi_nt35597_dsc_video_config0>;
+
+ dsi_nt35597_dsc_video_config0: config0 {
+ qcom,mdss-dsc-encoders = <1>;
+ qcom,mdss-dsc-slice-height = <16>;
+ qcom,mdss-dsc-slice-width = <720>;
+ qcom,mdss-dsc-slice-per-pkt = <2>;
+
+ qcom,mdss-dsc-bit-per-component = <8>;
+ qcom,mdss-dsc-bit-per-pixel = <8>;
+ qcom,mdss-dsc-block-prediction-enable;
+ };
+
+ dsi_nt35597_dsc_video_config1: config1 {
+ qcom,lm-split = <720 720>;
+ qcom,mdss-dsc-encoders = <1>; /* 3D Mux */
+ qcom,mdss-dsc-slice-height = <16>;
+ qcom,mdss-dsc-slice-width = <720>;
+ qcom,mdss-dsc-slice-per-pkt = <2>;
+
+ qcom,mdss-dsc-bit-per-component = <8>;
+ qcom,mdss-dsc-bit-per-pixel = <8>;
+ qcom,mdss-dsc-block-prediction-enable;
+ };
+
+ dsi_nt35597_dsc_video_config2: config2 {
+ qcom,lm-split = <720 720>;
+ qcom,mdss-dsc-encoders = <2>; /* DSC Merge */
+ qcom,mdss-dsc-slice-height = <16>;
+ qcom,mdss-dsc-slice-width = <720>;
+ qcom,mdss-dsc-slice-per-pkt = <2>;
+
+ qcom,mdss-dsc-bit-per-component = <8>;
+ qcom,mdss-dsc-bit-per-pixel = <8>;
+ qcom,mdss-dsc-block-prediction-enable;
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-nt35597-dualmipi-wqxga-cmd.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-nt35597-dualmipi-wqxga-cmd.dtsi
new file mode 100644
index 000000000000..b6f19b78ea70
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-nt35597-dualmipi-wqxga-cmd.dtsi
@@ -0,0 +1,103 @@
+/* Copyright (c) 2015, 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_nt35597_cmd: qcom,mdss_dsi_nt35597_wqxga_cmd{
+ qcom,mdss-dsi-panel-name =
+ "Dual nt35597 cmd mode dsi panel without DSC";
+ qcom,mdss-dsi-panel-type = "dsi_cmd_mode";
+ 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 = <2560>;
+ qcom,mdss-dsi-h-front-porch = <100>;
+ 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 = <7>;
+ qcom,mdss-dsi-v-front-porch = <8>;
+ 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-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 = [cd 32 22 00 60 64 26 34 29 03
+ 04 00];
+ qcom,adjust-timer-wakeup-ms = <1>;
+ qcom,mdss-dsi-reset-sequence = <1 10>, <0 10>, <1 10>;
+ qcom,mdss-dsi-t-clk-post = <0x0d>;
+ qcom,mdss-dsi-t-clk-pre = <0x2d>;
+ 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,ulps-enabled;
+ qcom,mdss-dsi-on-command = [15 01 00 00 10 00 02 ff 10
+ 15 01 00 00 10 00 02 fb 01
+ 15 01 00 00 10 00 02 ba 03
+ 15 01 00 00 10 00 02 e5 01
+ 15 01 00 00 10 00 02 35 00
+ 15 01 00 00 10 00 02 bb 10
+ 15 01 00 00 10 00 02 b0 03
+ 15 01 00 00 10 00 02 ff e0
+ 15 01 00 00 10 00 02 fb 01
+ 15 01 00 00 10 00 02 6b 3d
+ 15 01 00 00 10 00 02 6c 3d
+ 15 01 00 00 10 00 02 6d 3d
+ 15 01 00 00 10 00 02 6e 3d
+ 15 01 00 00 10 00 02 6f 3d
+ 15 01 00 00 10 00 02 35 02
+ 15 01 00 00 10 00 02 36 72
+ 15 01 00 00 10 00 02 37 10
+ 15 01 00 00 10 00 02 08 c0
+ 15 01 00 00 10 00 02 ff 24
+ 15 01 00 00 10 00 02 fb 01
+ 15 01 00 00 10 00 02 c6 06
+ 15 01 00 00 10 00 02 ff 10
+ 05 01 00 00 a0 00 02 11 00
+ 05 01 00 00 a0 00 02 29 00];
+
+ qcom,mdss-dsi-off-command = [05 01 00 00 78 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,config-select = <&dsi_dual_nt35597_cmd_config0>;
+
+ dsi_dual_nt35597_cmd_config0: config0 {
+ qcom,split-mode = "dualctl-split";
+ };
+
+ dsi_dual_nt35597_cmd_config1: config1 {
+ qcom,split-mode = "pingpong-split";
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-nt35597-dualmipi-wqxga-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-nt35597-dualmipi-wqxga-video.dtsi
new file mode 100644
index 000000000000..bb111ba8e2d4
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-nt35597-dualmipi-wqxga-video.dtsi
@@ -0,0 +1,84 @@
+/* Copyright (c) 2015, 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_nt35597_video: qcom,mdss_dsi_nt35597_wqxga_video {
+ qcom,mdss-dsi-panel-name = "Dual nt35597 video mode dsi panel without DSC";
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ 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 = <2560>;
+ qcom,mdss-dsi-h-front-porch = <100>;
+ 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 = <7>;
+ qcom,mdss-dsi-v-front-porch = <8>;
+ qcom,mdss-dsi-v-pulse-width = <1>;
+ 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 10 00 02 ff 10
+ 15 01 00 00 10 00 02 fb 01
+ 15 01 00 00 10 00 02 ba 03
+ 15 01 00 00 10 00 02 e5 01
+ 15 01 00 00 10 00 02 35 00
+ 15 01 00 00 10 00 02 bb 03
+ 15 01 00 00 10 00 02 b0 03
+ 39 01 00 00 10 00 06 3b 03 08 08 64 9a
+ 15 01 00 00 10 00 02 ff e0
+ 15 01 00 00 10 00 02 fb 01
+ 15 01 00 00 10 00 02 6b 3d
+ 15 01 00 00 10 00 02 6c 3d
+ 15 01 00 00 10 00 02 6d 3d
+ 15 01 00 00 10 00 02 6e 3d
+ 15 01 00 00 10 00 02 6f 3d
+ 15 01 00 00 10 00 02 35 02
+ 15 01 00 00 10 00 02 36 72
+ 15 01 00 00 10 00 02 37 10
+ 15 01 00 00 10 00 02 08 c0
+ 15 01 00 00 10 00 02 ff 10
+ 05 01 00 00 a0 00 02 11 00
+ 05 01 00 00 a0 00 02 29 00];
+ qcom,mdss-dsi-off-command = [05 01 00 00 78 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 = <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,mdss-dsi-panel-timings = [e2 36 24 00 66 6a 28 38 2a 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x0d>;
+ qcom,mdss-dsi-t-clk-pre = <0x2d>;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-reset-sequence = <1 20>, <0 20>, <1 50>;
+
+ qcom,config-select = <&dsi_dual_nt35597_video_config0>;
+
+ dsi_dual_nt35597_video_config0: config0 {
+ qcom,split-mode = "dualctl-split";
+ };
+
+ dsi_dual_nt35597_video_config1: config1 {
+ qcom,split-mode = "pingpong-split";
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-otm1906c-1080p-cmd.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-otm1906c-1080p-cmd.dtsi
new file mode 100644
index 000000000000..07a3b4766433
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-otm1906c-1080p-cmd.dtsi
@@ -0,0 +1,380 @@
+/*
+ * Copyright (c) 2015, 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_otm1906c_1080p_cmd: qcom,mdss_dsi_otm1906c_1080p_cmd {
+ qcom,mdss-dsi-panel-name = "otm1906c 1080p 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 = <45>;
+ qcom,mdss-dsi-h-back-porch = <45>;
+ qcom,mdss-dsi-h-pulse-width = <8>;
+ 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 = <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 19 06 01
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 03 FF 19 06
+ 29 01 00 00 00 00 02 00 A0
+ 29 01 00 00 00 00 04 C1 00 C0 10
+ 29 01 00 00 00 00 02 00 91
+ 29 01 00 00 00 00 03 C5 14 28
+ 29 01 00 00 00 00 02 00 95
+ 29 01 00 00 00 00 02 C5 11
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 02 D9 00
+ 29 01 00 00 00 00 02 00 01
+ 29 01 00 00 00 00 02 D9 b4
+ 29 01 00 00 00 00 02 00 02
+ 29 01 00 00 00 00 02 D9 00
+ 29 01 00 00 00 00 02 00 03
+ 29 01 00 00 00 00 02 D9 cd
+ 29 01 00 00 00 00 02 00 04
+ 29 01 00 00 00 00 02 D9 00
+ 29 01 00 00 00 00 02 00 05
+ 29 01 00 00 00 00 02 D9 cd
+ 29 01 00 00 00 00 02 00 06
+ 29 01 00 00 00 00 02 D9 00
+ 29 01 00 00 00 00 02 00 07
+ 29 01 00 00 00 00 02 D9 cd
+ 29 01 00 00 00 00 02 00 81
+ 29 01 00 00 00 00 02 A5 01
+ 29 01 00 00 00 00 02 00 A5
+ 29 01 00 00 00 00 02 C5 11
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 05 F5 09 16 09 16
+ 29 01 00 00 00 00 02 00 A7
+ 29 01 00 00 00 00 02 F5 1A
+ 29 01 00 00 00 00 02 00 9D
+ 29 01 00 00 00 00 02 F5 1A
+ 29 01 00 00 00 00 02 00 A5
+ 29 01 00 00 00 00 02 F5 16
+ 29 01 00 00 00 00 02 00 8D
+ 29 01 00 00 00 00 02 F5 17
+ 29 01 00 00 00 00 02 00 E3
+ 29 01 00 00 00 00 02 F5 11
+ 29 01 00 00 00 00 02 00 ED
+ 29 01 00 00 00 00 02 F5 16
+ 29 01 00 00 00 00 02 00 E5
+ 29 01 00 00 00 00 02 F5 16
+ 29 01 00 00 00 00 02 00 81
+ 29 01 00 00 00 00 02 F5 16
+ 29 01 00 00 00 00 02 00 83
+ 29 01 00 00 00 00 02 F5 16
+ 29 01 00 00 00 00 02 00 E1
+ 29 01 00 00 00 00 02 F5 16
+ 29 01 00 00 00 00 02 00 C0
+ 29 01 00 00 00 00 10 CC 0c 0c 00 00 0c 0c 0c 0c
+ 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 D0
+ 29 01 00 00 00 00 10 CC 00 00 00 00 00 00 00 00
+ 00 00 00 33 33 33 33
+ 29 01 00 00 00 00 02 00 E0
+ 29 01 00 00 00 00 10 CC 33 33 00 00 00 00 00 00
+ 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 03 C1 55 55
+ 29 01 00 00 00 00 02 00 94
+ 29 01 00 00 00 00 02 C5 88
+ 29 01 00 00 00 00 02 00 A4
+ 29 01 00 00 00 00 02 C5 88
+ 29 01 00 00 00 00 02 00 C1
+ 29 01 00 00 00 00 02 C5 f5
+ 29 01 00 00 00 00 02 00 B3
+ 29 01 00 00 00 00 02 C0 88
+ 29 01 00 00 00 00 02 00 B4
+ 29 01 00 00 00 00 02 C0 50
+ 29 01 00 00 00 00 02 00 E0
+ 29 01 00 00 00 00 02 C5 01
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 03 D8 23 23
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 02 C4 81
+ 29 01 00 00 00 00 02 00 A0
+ 29 01 00 00 00 00 02 B3 33
+ 29 01 00 00 00 00 02 00 A6
+ 29 01 00 00 00 00 02 B3 30
+ 29 01 00 00 00 00 02 00 E0
+ 29 01 00 00 00 00 0b B4 1C 19 3F 01 64 5C 01 A0
+ 5F A0
+ 29 01 00 00 00 00 02 00 F0
+ 29 01 00 00 00 00 02 B4 64
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0f C0 00 70 00 1A 16 00 70 1A
+ 16 00 70 00 1A 16
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 07 C0 00 00 00 02 00 04
+ 29 01 00 00 00 00 02 00 A0
+ 29 01 00 00 00 00 10 C0 00 00 02 00 04 15 04 00
+ 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 D0
+ 29 01 00 00 00 00 10 C0 00 00 02 00 04 15 04 00
+ 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0d C2 83 01 00 00 82 01 00 00
+ 00 00 00 00
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 0d C2 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 0e C2 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 C2 82 02 00 00 88 81 02 00
+ 00 88 00 02 00 00 88
+ 29 01 00 00 00 00 02 00 C0
+ 29 01 00 00 00 00 10 C2 01 02 00 00 88 00 00 00
+ 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 D0
+ 29 01 00 00 00 00 10 C2 00 00 00 00 00 00 00 00
+ 00 00 33 33 33 33 00
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 10 C3 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 0d C3 83 01 00 00 82 01 00 00
+ 00 00 00 00
+ 29 01 00 00 00 00 02 00 B0
+ 29 01 00 00 00 00 0f C3 00 00 00 00 82 02 00 00
+ 88 81 02 00 00 88
+ 29 01 00 00 00 00 02 00 C0
+ 29 01 00 00 00 00 10 C3 00 02 00 00 88 01 02 00
+ 00 88 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 D0
+ 29 01 00 00 00 00 10 C3 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 E0
+ 29 01 00 00 00 00 06 C3 33 33 33 33 00
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0C CB 00 00 00 00 30 00 03 00
+ 00 00 70
+ 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 BF 00 00 00 00
+ 00 FF 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 B0
+ 29 01 00 00 00 00 0d CB 00 00 00 00 00 00 00 00
+ 00 00 77 77
+ 29 01 00 00 00 00 02 00 C0
+ 29 01 00 00 00 00 10 CB 01 01 01 01 01 01 01 01
+ 01 01 01 01 01 01 01
+ 29 01 00 00 00 00 02 00 D0
+ 29 01 00 00 00 00 10 CB 01 01 01 F3 01 01 01 01
+ 00 F3 00 00 01 00 01
+ 29 01 00 00 00 00 02 00 E0
+ 29 01 00 00 00 00 0d CB 00 01 00 01 00 01 00 01
+ 00 00 77 07
+ 29 01 00 00 00 00 02 00 F0
+ 29 01 00 00 00 00 0c CB FF FF FF FF FF FF 03 33
+ 03 00 70
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0d CC 08 09 18 19 0C 0D 0E 0F
+ 07 07 07 07
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 0d CC 09 08 19 18 0F 0E 0D 0C
+ 07 07 07 07
+ 29 01 00 00 00 00 02 00 A0
+ 29 01 00 00 00 00 10 CC 14 15 16 17 1C 1D 1E 1F
+ 01 04 20 07 07 07 00
+ 29 01 00 00 00 00 02 00 B0
+ 29 01 00 00 00 00 0a CC 01 02 03 04 05 06 07
+ 07 00
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 10 CD 1A 01 11 12 1A 05 18 07
+ 1A 1A 23 23 23 1F 1E
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 04 CD 1D 23 23
+ 29 01 00 00 00 00 02 00 A0
+ 29 01 00 00 00 00 10 CD 1A 02 11 12 1A 06 18 08
+ 1A 1A 23 23 23 1F 1E
+ 29 01 00 00 00 00 02 00 B0
+ 29 01 00 00 00 00 04 CD 1D 23 23
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0b A4 AF 00 20 04 00 17 15 03
+ 60 00
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 04 A4 00 00 00
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0d A7 FF 0F 1E 00 20 00 01 98
+ 00 00 00 00
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 0b A7 1D 20 3D 00 00 BE 80 BE
+ 05 F0
+ 29 01 00 00 00 00 02 00 A0
+ 29 01 00 00 00 00 02 A7 30
+ 29 01 00 00 00 00 02 00 B0
+ 29 01 00 00 00 00 06 A7 00 1E 1E 00 00
+ 29 01 00 00 00 00 02 00 C0
+ 29 01 00 00 00 00 0d A7 FF 3A 49 00 1E 00 01 00
+ 00 00 00 00
+ 29 01 00 00 00 00 02 00 D0
+ 29 01 00 00 00 00 0b A7 FF FF 1D 00 01 7C 81 7C
+ 0B E0
+ 29 01 00 00 00 00 02 00 E0
+ 29 01 00 00 00 00 02 A7 30
+ 29 01 00 00 00 00 02 00 F0
+ 29 01 00 00 00 00 06 A7 00 3C 3C 00 00
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 0d A9 00 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 0b A9 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 02 A9 00
+ 29 01 00 00 00 00 02 00 B0
+ 29 01 00 00 00 00 06 A9 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 C0
+ 29 01 00 00 00 00 0f A9 FF 3A 49 00 1E 00 01 00
+ 00 00 00 00 00 77
+ 29 01 00 00 00 00 02 00 D0
+ 29 01 00 00 00 00 0B A9 FF FF 1D 00 01 7C 81 7C
+ 0B E0
+ 29 01 00 00 00 00 02 00 E0
+ 29 01 00 00 00 00 02 A9 30
+ 29 01 00 00 00 00 02 00 F0
+ 29 01 00 00 00 00 06 A9 00 3C 3C 00 00
+ 29 01 00 00 00 00 02 00 B0
+ 29 01 00 00 00 00 09 A4 05 F0 0B E0 00 00 0B E0
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 10 AB 05 14 00 00 FF 6A 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 AB 00 00 00 00 00 00 00 01
+ 00 00 00 00 01 00 00
+ 29 01 00 00 00 00 02 00 B0
+ 29 01 00 00 00 00 0D AB 00 00 08 0A 00 00 44 04
+ 00 00 00 00
+ 29 01 00 00 00 00 02 00 93
+ 29 01 00 00 00 00 02 B3 01
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 08 CE 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 00 87
+ 29 01 00 00 00 00 08 CE 00 00 33 00 33 00 00
+ 29 01 00 00 00 00 02 00 F0
+ 29 01 00 00 00 00 05 CE 00 00 00 00
+ 29 01 00 00 00 00 02 00 90
+ 29 01 00 00 00 00 10 CE 00 00 00 F0 00 00 00 00
+ FC 00 FC 00 00 00 00
+ 29 01 00 00 00 00 02 00 A0
+ 29 01 00 00 00 00 08 CE 00 00 40 40 40 00 00
+ 29 01 00 00 00 00 02 00 B0
+ 29 01 00 00 00 00 10 CE 01 01 01 01 01 01 01 01
+ F1 01 F1 01 01 01 01
+ 29 01 00 00 00 00 02 00 C0
+ 29 01 00 00 00 00 08 CE 01 01 01 01 01 01 01
+ 29 01 00 00 00 00 02 00 D0
+ 29 01 00 00 00 00 10 CE 04 04 04 04 04 04 04 04
+ F7 04 F7 04 04 00 00
+ 29 01 00 00 00 00 02 00 E0
+ 29 01 00 00 00 00 08 CE 00 00 15 15 15 04 04
+ 29 01 00 00 00 00 02 00 F4
+ 29 01 00 00 00 00 02 CE 25
+ 29 01 00 00 00 00 02 00 A0
+ 29 01 00 00 00 00 0d D6 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 0d D6 fd fd fd fd fd fd fd fd
+ fd fd fd fd
+ 29 01 00 00 00 00 02 00 C0
+ 29 01 00 00 00 00 0d D6 a9 a9 a9 a9 a9 a9 a9 a9
+ a9 a9 a9 a9
+ 29 01 00 00 00 00 02 00 D0
+ 29 01 00 00 00 00 0d D6 54 54 54 54 54 54 54 54
+ 54 54 54 54
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 19 e1 00 06 0B 15 1d 25 32 47
+ 54 67 73 7C 7C 74 6B 5A 47 34 28 21 18
+ 09 05 00
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 19 e2 00 06 0B 15 1d 25 32 47
+ 54 67 73 7C 7C 74 6B 5A 47 34 28 21 18
+ 09 05 00
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 19 e3 00 06 0B 15 1d 25 32 47
+ 54 67 73 7C 7C 74 6B 5A 47 34 28 21 18
+ 09 05 00
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 19 e4 00 06 0B 15 1d 25 32 47
+ 54 67 73 7C 7C 74 6B 5A 47 34 28 21 18
+ 09 05 00
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 19 e5 00 06 0B 15 1d 25 32 47
+ 54 67 73 7C 7C 74 6B 5A 47 34 28 21 18
+ 09 05 00
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 19 e6 00 06 0B 15 1d 25 32 47
+ 54 67 73 7C 7C 74 6B 5A 47 34 28 21 18
+ 09 05 00
+ 29 01 00 00 00 00 02 00 80
+ 29 01 00 00 00 00 03 FF 00 00
+ 29 01 00 00 00 00 02 00 00
+ 29 01 00 00 00 00 04 FF 00 00 00
+ 29 01 00 00 78 00 02 11 00
+ 29 01 00 00 05 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-lp11-init;
+ qcom,mdss-dsi-init-delay-us = <5>;
+ 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 = [6E 3F 36 00 5A 4F 38 41 54 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x1E>;
+ qcom,mdss-dsi-t-clk-pre = <0x30>;
+ 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_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,mdss-dsi-reset-sequence = <1 1>, <0 1>, <1 5>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-r69006-1080p-cmd.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-r69006-1080p-cmd.dtsi
new file mode 100644
index 000000000000..56c88f092d32
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-r69006-1080p-cmd.dtsi
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2015, 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_r69006_1080p_cmd: qcom,mdss_dsi_r69006_1080p_cmd {
+ qcom,mdss-dsi-panel-name = "r69006 1080p cmd mode dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_cmd_mode";
+ 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 = <20>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <9>;
+ qcom,mdss-dsi-v-front-porch = <3>;
+ qcom,mdss-dsi-v-pulse-width = <15>;
+ 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 = [23 01 00 00 00 00 02 B0 00
+ 29 01 00 00 00 00 06
+ B3 04 10 00 00 00
+ 29 01 00 00 00 00 03 B4 0c 00
+ 29 01 00 00 00 00 04 B6 3b c3 00
+ 23 01 00 00 00 00 02 C0 00
+ 15 01 00 00 00 00 02 36 98
+ 23 01 00 00 00 00 02 CC 04
+ 29 01 00 00 00 00 20
+ C1 84 00 10 EF 8B
+ F1 FF FF DF 9C C5
+ 9A 73 8D AD 63 FE
+ FF FF CB F8 01 00
+ AA 40 00 C2 01 08
+ 00 01
+ 29 01 00 00 00 00 0A
+ CB 0D FE 1F 2C 00
+ 00 00 00 00
+ 29 01 00 00 00 00 0B
+ C2 01 F7 80 04 63
+ 00 60 00 01 30
+ 29 01 00 00 00 00 07
+ C3 55 01 00 01 00
+ 00
+ 29 01 00 00 00 00 12
+ C4 70 00 00 00 00
+ 00 00 00 00 02 01
+ 00 05 01 00 00 00
+ 29 01 00 00 00 00 0F
+ C6 59 07 4a 07 4a
+ 01 0E 01 02 01 02
+ 09 15 07
+ 29 01 00 00 00 00 1F
+ C7 00 30 32 34 42
+ 4E 56 62 44 4A 54
+ 62 6B 73 7F 08 30
+ 32 34 42 4E 56 62
+ 44 4A 54 62 6B 73
+ 7F
+ 29 01 00 00 00 00 14
+ C8 00 00 00 00 00
+ FC 00 00 00 00 00
+ FC 00 00 00 00 00
+ FC 00
+ 29 01 00 00 00 00 09
+ C9 1F 68 1F 68 4C
+ 4C C4 11
+ 29 01 00 00 00 00 11
+ D0 33 01 91 0B D9
+ 19 19 00 00 00 19
+ 99 00 00 00 00
+ 29 01 00 00 00 00 1D
+ D3 1B 3B BB AD A5
+ 33 33 33 00 80 AD
+ A8 6f 6f 33 33 33
+ F7 F2 1F 7D 7C FF
+ 0F 99 00 FF FF
+ 29 01 00 00 00 00 04
+ D4 57 33 03
+ 29 01 00 00 00 00 0C
+ D5 66 00 00 01 27
+ 01 27 00 6D 00 6D
+ 23 01 00 00 00 00 02 D6 81
+ 05 01 00 00 78 00 02 11 00
+ 05 01 00 00 78 00 02 29 00];
+ qcom,mdss-dsi-off-command = [05 01 00 00 78 00 02 28 00
+ 05 01 00 00 96 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-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-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-panel-timings = [6E 3F 36 00 5A 4F
+ 38 41 54 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x1e>;
+ qcom,mdss-dsi-t-clk-pre = <0x30>;
+ 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 2>, <1 20>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-r69006-1080p-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-r69006-1080p-video.dtsi
new file mode 100644
index 000000000000..692f5e09b83f
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-r69006-1080p-video.dtsi
@@ -0,0 +1,129 @@
+/* Copyright (c) 2015, 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_r69006_1080p_video: qcom,mdss_dsi_r69006_1080p_video {
+ qcom,mdss-dsi-panel-name = "r69006 1080p video mode dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ 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 = <20>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <9>;
+ qcom,mdss-dsi-v-front-porch = <3>;
+ qcom,mdss-dsi-v-pulse-width = <15>;
+ 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 = [23 01 00 00 00 00 02 B0 00
+ 29 01 00 00 00 00 06
+ B3 05 10 00 00 00
+ 29 01 00 00 00 00 03 B4 0c 00
+ 29 01 00 00 00 00 04 B6 3b c3 00
+ 23 01 00 00 00 00 02 C0 00
+ 15 01 00 00 00 00 02 36 98
+ 23 01 00 00 00 00 02 CC 04
+ 29 01 00 00 00 00 20
+ C1 84 00 10 EF 8B
+ F1 FF FF DF 9C C5
+ 9A 73 8D AD 63 FE
+ FF FF CB F8 01 00
+ AA 40 00 C2 01 08
+ 00 01
+ 29 01 00 00 00 00 0A
+ CB 0D FE 1F 2C 00
+ 00 00 00 00
+ 29 01 00 00 00 00 0B
+ C2 01 F7 80 04 63
+ 00 60 00 01 30
+ 29 01 00 00 00 00 07
+ C3 55 01 00 01 00
+ 00
+ 29 01 00 00 00 00 12
+ C4 70 00 00 00 00
+ 00 00 00 00 02 01
+ 00 05 01 00 00 00
+ 29 01 00 00 00 00 0F
+ C6 59 07 4a 07 4a
+ 01 0E 01 02 01 02
+ 09 15 07
+ 29 01 00 00 00 00 1F
+ C7 00 30 32 34 42
+ 4E 56 62 44 4A 54
+ 62 6B 73 7F 08 30
+ 32 34 42 4E 56 62
+ 44 4A 54 62 6B 73
+ 7F
+ 29 01 00 00 00 00 14
+ C8 00 00 00 00 00
+ FC 00 00 00 00 00
+ FC 00 00 00 00 00
+ FC 00
+ 29 01 00 00 00 00 09
+ C9 1F 68 1F 68 4C
+ 4C C4 11
+ 29 01 00 00 00 00 11
+ D0 33 01 91 0B D9
+ 19 19 00 00 00 19
+ 99 00 00 00 00
+ 29 01 00 00 00 00 1D
+ D3 1B 3B BB AD A5
+ 33 33 33 00 80 AD
+ A8 6f 6f 33 33 33
+ F7 F2 1F 7D 7C FF
+ 0F 99 00 FF FF
+ 29 01 00 00 00 00 04
+ D4 57 33 03
+ 29 01 00 00 00 00 0C
+ D5 66 00 00 01 27
+ 01 27 00 6D 00 6D
+ 23 01 00 00 00 00 02 D6 81
+ 05 01 00 00 78 00 02 11 00
+ 05 01 00 00 78 00 02 29 00];
+ qcom,mdss-dsi-off-command = [05 01 00 00 78 00 02 28 00
+ 05 01 00 00 96 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 = [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 2>, <1 20>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-r69007-dualdsi-wqxga-cmd.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-r69007-dualdsi-wqxga-cmd.dtsi
new file mode 100644
index 000000000000..abe823b149a1
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-r69007-dualdsi-wqxga-cmd.dtsi
@@ -0,0 +1,107 @@
+/* Copyright (c) 2015, 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_r69007_wqxga_cmd: qcom,mdss_dsi_r69007_wqxga_cmd{
+ qcom,mdss-dsi-panel-name = "r69007 command mode dual dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_cmd_mode";
+ 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 = <2560>;
+ qcom,mdss-dsi-h-front-porch = <112>;
+ qcom,mdss-dsi-h-back-porch = <70>;
+ qcom,mdss-dsi-h-pulse-width = <10>;
+ qcom,mdss-dsi-h-sync-skew = <0>;
+ qcom,mdss-dsi-v-back-porch = <8>;
+ qcom,mdss-dsi-v-front-porch = <9>;
+ 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 b0 00
+ 29 01 00 00 00 00 04 b3 04 00 00
+ 29 01 00 00 00 00 04 b6 3b d3 00
+ 29 01 00 00 00 00 28 c1 80 08 11 1f fc f2 c9 1f 5f 98 b3 fe ff f7 fe ff d7 31 f1 cb 3f 3f fd ef 03 24 69 18 aa 40 01 42 02 08 00 01 00 01 00
+ 29 01 00 00 00 00 0f c2 01 fa 00 04 64 08 00 60 00 38 70 00 00 00
+ 29 01 00 00 00 00 09 c3 07 01 08 01 00 00 00 00
+ 29 01 00 00 00 00 12 c4 70 00 00 00 02 00 00 00 00 02 01 00 01 01 00 00 00
+ 29 01 00 00 00 00 11 c6 3c 00 3c 02 37 01 0e 01 02 01 02 03 0f 04 3c 46
+ 29 01 00 00 00 00 1f c7 00 11 1c 28 37 44 4e 5b 3e 46 52 5f 68 72 78 00 11 1c 28 37 44 4e 5b 3e 46 52 5f 68 72 78
+ 29 01 00 00 00 00 14 c8 00 00 00 00 00 fc 00 00 00 00 00 fc 00 00 00 00 00 fc 00
+ 29 01 00 00 00 00 14 c9 00 00 00 00 00 fc 00 00 00 00 00 fc 00 00 00 00 00 fc 00
+ 29 01 00 00 00 00 14 cb aa 1e e3 55 f1 ff 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 29 01 00 00 00 00 02 cc 07
+ 29 01 00 00 00 00 0b cd 3a 86 3a 86 8d 8d 04 04 00 00
+ 29 01 00 00 00 00 11 d0 19 01 91 6a dc 59 19 00 00 00 19 99 04 00 00 00
+ 29 01 00 00 00 00 21 d3 1b 3b bb 77 77 77 bb b3 33 00 80 a7 af 5b 5b 33 33 33 c0 00 f2 0f 7d 7c ff 0f 99 00 33 00 ff ff
+ 29 01 00 00 00 00 06 d4 57 33 07 00 f4
+ 29 01 00 00 00 00 0c d5 66 00 00 01 3d 01 3d 00 38 00 38
+ 29 01 00 00 00 00 22 d7 04 ff 23 15 75 a4 c3 1f c3 1f d9 07 1c 1f 30 8e 87 c7 e3 f1 cc f0 1f f0 0d 70 00 2a 00 7e 1d 07 00
+ 29 01 00 00 00 00 05 de 00 3f ff 10
+ 29 01 00 00 00 00 02 d6 01
+ 39 01 00 00 00 00 02 35 00
+ 39 01 00 00 00 00 05 2a 00 00 05 9f
+ 39 01 00 00 00 00 05 2b 00 00 09 ff
+ 39 01 00 00 00 00 02 2c 00
+ 39 01 00 00 00 00 02 36 40
+ 05 01 00 00 78 00 02 29 00
+ 05 01 00 00 40 00 02 11 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 = [da 34 24 00 64 68 28 38 2a 03 04 00];
+
+ qcom,mdss-dsi-t-clk-pre = <0x29>;
+ qcom,mdss-dsi-t-clk-post = <0x03>;
+
+ 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-te-pin-select = <1>;
+ qcom,mdss-dsi-te-v-sync-rd-ptr-irq-line = <0x2c>;
+ qcom,mdss-dsi-te-dcs-command = <1>;
+ qcom,mdss-dsi-te-using-te-pin;
+
+ qcom,mdss-tear-check-sync-cfg-height = <2589>;
+ qcom,mdss-tear-check-frame-rate = <6000>;
+
+ qcom,esd-check-enabled;
+ qcom,mdss-dsi-panel-status-check-mode = "te_signal_check";
+ qcom,mdss-dsi-reset-sequence = <1 1>, <0 1>, <1 5>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-sharp-dualmipi-wqxga-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-sharp-dualmipi-wqxga-video.dtsi
new file mode 100644
index 000000000000..2a5b8a248730
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-sharp-dualmipi-wqxga-video.dtsi
@@ -0,0 +1,78 @@
+/* Copyright (c) 2014-2015, 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: qcom,mdss_dsi_sharp_wqxga_video {
+ qcom,mdss-dsi-panel-name = "Dual SHARP video mode dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ 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 = <11>;
+ qcom,mdss-dsi-v-front-porch = <2>;
+ qcom,mdss-dsi-v-pulse-width = <1>;
+ 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,cmd-sync-wait-broadcast;
+ qcom,mdss-dsi-panel-timings = [e2 36 24 00 66 6a 28 38 2a 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x02>;
+ qcom,mdss-dsi-t-clk-pre = <0x2a>;
+ 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>;
+ qcom,mdss-dsi-min-refresh-rate = <53>;
+ qcom,mdss-dsi-max-refresh-rate = <60>;
+ qcom,mdss-dsi-pan-enable-dynamic-fps;
+ qcom,mdss-dsi-pan-fps-update = "dfps_immediate_porch_mode_vfp";
+ qcom,mdss-dsi-panel-status-check-mode = "bta_check";
+ qcom,mdss-dsi-tx-eot-append;
+ qcom,esd-check-enabled;
+
+ qcom,config-select = <&dsi_dual_sharp_video_config0>;
+
+ dsi_dual_sharp_video_config0: config0 {
+ qcom,split-mode = "dualctl-split";
+ };
+
+ dsi_dual_sharp_video_config1: config1 {
+ qcom,split-mode = "pingpong-split";
+ };
+ };
+};
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 000000000000..01b733565dd5
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-sim-cmd.dtsi
@@ -0,0 +1,91 @@
+/* Copyright (c) 2014-2015, 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-type = "dsi_cmd_mode";
+ 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-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-dualmipi-cmd.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-sim-dualmipi-cmd.dtsi
new file mode 100644
index 000000000000..080b6e283928
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-sim-dualmipi-cmd.dtsi
@@ -0,0 +1,92 @@
+/* Copyright (c) 2014-2015, 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_sim_cmd: qcom,mdss_dsi_dual_sim_cmd {
+ qcom,mdss-dsi-panel-name = "Sim dual cmd mode dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_cmd_mode";
+ 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-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-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-dualmipi-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-sim-dualmipi-video.dtsi
new file mode 100644
index 000000000000..31ebdb6f3293
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-sim-dualmipi-video.dtsi
@@ -0,0 +1,59 @@
+/* Copyright (c) 2014-2015, 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_sim_vid: qcom,mdss_dsi_dual_sim_video {
+ qcom,mdss-dsi-panel-name = "Sim dual video mode dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ 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-panel-broadcast-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 = [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-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 20>, <0 200>, <1 20>;
+ 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 000000000000..36e3022e4d1f
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-sim-video.dtsi
@@ -0,0 +1,56 @@
+/* Copyright (c) 2012-2015, 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_vid: qcom,mdss_dsi_sim_video {
+ qcom,mdss-dsi-panel-name = "Simulator video mode dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ 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 0>, <0 0>, <1 0>;
+ qcom,panel-ack-disabled;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-truly-1080p-cmd.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-truly-1080p-cmd.dtsi
new file mode 100644
index 000000000000..3f9fd89925b4
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-truly-1080p-cmd.dtsi
@@ -0,0 +1,93 @@
+/* Copyright (c) 2015, 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_truly_1080_cmd: qcom,mdss_dsi_truly_1080p_cmd {
+ qcom,mdss-dsi-panel-name = "truly 1080p cmd mode dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_cmd_mode";
+ 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-te-pin-select = <1>;
+ qcom,mdss-dsi-te-dcs-command = <1>;
+ qcom,mdss-dsi-te-check-enable;
+ qcom,mdss-dsi-te-using-te-pin;
+ 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 = [e6 38 26 00 68 6e 2a 3c 44 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x02>;
+ qcom,mdss-dsi-t-clk-pre = <0x2d>;
+ qcom,mdss-dsi-tx-eot-append;
+ qcom,mdss-dsi-dma-trigger = "trigger_sw";
+ qcom,mdss-dsi-mdp-trigger = "none";
+ qcom,mdss-dsi-on-command = [23 01 00 00 00 00 02 d6 01
+ 15 01 00 00 00 00 02 35 00
+ 15 01 00 00 00 00 02 51 ff
+ 15 01 00 00 00 00 02 53 2c
+ 15 01 00 00 00 00 02 55 00
+ 05 01 00 00 78 00 02 11 00
+ 23 01 00 00 00 00 02 b0 04
+ 29 01 00 00 00 00 07 b3 04 00 00 00 00 00
+ 29 01 00 00 00 00 03 b6 3a d3
+ 29 01 00 00 00 00 03 c0 00 00
+ 29 01 00 00 00 00 23 c1 84 60 10 eb ff 6f ce ff ff 17 02
+ 58 73 ae b1 20 c6 ff ff 1f f3 ff 5f 10 10 10 10 00 02 01
+ 22 22 00 01
+ 29 01 00 00 00 00 08 c2 31 f7 80 06 08 00 00
+ 29 01 00 00 00 00 17 c4 70 00 00 00 00 04 00 00 00 0c 06
+ 00 00 00 00 00 04 00 00 00 0c 06
+ 29 01 00 00 00 00 29 c6 78 69 00 69 00 69 00 00 00 00 00
+ 69 00 69 00 69 10 19 07 00 78 00 69 00 69 00 69 00 00 00
+ 00 00 69 00 69 00 69 10 19 07
+ 29 01 00 00 00 00 0a cb 31 fc 3f 8c 00 00 00 00 c0
+ 23 01 00 00 00 00 02 cc 0b
+ 29 01 00 00 00 00 0b d0 11 81 bb 1e 1e 4c 19 19 0c 00
+ 29 01 00 00 00 00 1a d3 1b 33 bb bb b3 33 33 33 00 01 00
+ a0 d8 a0 0d 4e 4e 33 3b 22 72 07 3d bf 33
+ 29 01 00 00 00 00 08 d5 06 00 00 01 51 01 32
+ 29 01 00 00 00 00 1f c7 01 0a 11 18 26 33 3e 50 38 42 52
+ 60 67 6e 77 01 0a 11 18 26 33 3e 50 38 42 52 60 67 6e 77
+ 29 01 00 00 c8 00 14 c8 01 00 00 00 00 fc 00 00 00 00 00 fc
+ 00 00 00 00 00 fc 00
+ 05 01 00 00 14 00 02 29 00];
+ qcom,mdss-dsi-off-command = [05 01 00 00 96 00 02 28 00
+ 05 01 00 00 96 00 02 10 00];
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-reset-sequence = <1 200>, <0 200>, <1 200>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-truly-1080p-video.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-truly-1080p-video.dtsi
new file mode 100644
index 000000000000..e7cee9f0f884
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-truly-1080p-video.dtsi
@@ -0,0 +1,88 @@
+/* Copyright (c) 2015, 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_truly_1080_vid: qcom,mdss_dsi_truly_1080p_video {
+ qcom,mdss-dsi-panel-name = "truly 1080p video mode dsi panel";
+ qcom,mdss-dsi-panel-type = "dsi_video_mode";
+ 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-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 = [e6 38 26 00 68 6e 2a 3c 44 03 04 00];
+ qcom,mdss-dsi-t-clk-post = <0x02>;
+ qcom,mdss-dsi-t-clk-pre = <0x2d>;
+ 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 00 00 02 35 00
+ 15 01 00 00 00 00 02 51 ff
+ 15 01 00 00 00 00 02 53 2c
+ 15 01 00 00 00 00 02 55 00
+ 05 01 00 00 c8 00 02 11 00
+ 23 01 00 00 00 00 02 b0 00
+ 29 01 00 00 00 00 07 b3 14 00 00 00 00 00
+ 29 01 00 00 00 00 03 b6 3a d3
+ 29 01 00 00 00 00 03 c0 00 00
+ 29 01 00 00 00 00 23 c1 84 60 10 eb ff 6f ce ff ff 17 02
+ 58 73 ae b1 20 c6 ff ff 1f f3 ff 5f 10 10 10 10 00 02 01
+ 22 22 00 01
+ 29 01 00 00 00 00 08 c2 31 f7 80 06 08 00 00
+ 29 01 00 00 00 00 17 c4 70 00 00 00 00 04 00 00 00 0c 06
+ 00 00 00 00 00 04 00 00 00 0c 06
+ 29 01 00 00 00 00 29 c6 00 69 00 69 00 69 00 00 00 00 00
+ 69 00 69 00 69 10 19 07 00 01 00 69 00 69 00 69 00 00 00
+ 00 00 69 00 69 00 69 10 19 07
+ 29 01 00 00 00 00 0a cb 31 fc 3f 8c 00 00 00 00 c0
+ 23 01 00 00 00 00 02 cc 0b
+ 29 01 00 00 00 00 0b d0 11 81 bb 1e 1e 4c 19 19 0c 00
+ 29 01 00 00 00 00 1a d3 1b 33 bb bb b3 33 33 33 00 01 00
+ a0 d8 a0 0d 4e 4e 33 3b 22 72 07 3d bf 33
+ 29 01 00 00 00 00 08 d5 06 00 00 01 51 01 32
+ 29 01 00 00 00 00 1f c7 01 0a 11 18 26 33 3e 50 38 42 52
+ 60 67 6e 77 01 0a 11 18 26 33 3e 50 38 42 52 60 67 6e 77
+ 29 01 00 00 c8 00 14 c8 01 00 00 00 00 fc 00 00 00 00 00 fc
+ 00 00 00 00 00 fc 00
+ 05 01 00 00 c8 00 02 29 00];
+ qcom,mdss-dsi-off-command = [05 01 00 00 96 00 02 28 00
+ 05 01 00 00 96 00 02 10 00];
+ qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-off-command-state = "dsi_lp_mode";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-reset-sequence = <1 200>, <0 200>, <1 200>;
+ qcom,mdss-dsi-tx-eot-append;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/external-soc.dtsi b/arch/arm64/boot/dts/qcom/external-soc.dtsi
new file mode 100644
index 000000000000..6a96d0ea01f5
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/external-soc.dtsi
@@ -0,0 +1,37 @@
+/* Copyright (c) 2015, 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 {
+ mdm3: qcom,mdm3 {
+ compatible = "qcom,ext-mdm9x55";
+ cell-index = <0>;
+ #address-cells = <0>;
+ interrupt-parent = <&mdm3>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0xffffffff>;
+ interrupt-names =
+ "err_fatal_irq",
+ "status_irq",
+ "mdm2ap_vddmin_irq";
+ /* modem attributes */
+ qcom,ramdump-delays-ms = <2000>;
+ qcom,ramdump-timeout-ms = <120000>;
+ qcom,vddmin-modes = "normal";
+ qcom,vddmin-drive-strength = <8>;
+ qcom,sfr-query;
+ qcom,sysmon-id = <20>;
+ qcom,ssctl-instance-id = <0x10>;
+ qcom,support-shutdown;
+ qcom,pil-force-shutdown;
+ status = "disabled";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-arm-smmu-8996.dtsi b/arch/arm64/boot/dts/qcom/msm-arm-smmu-8996.dtsi
new file mode 100644
index 000000000000..cf22be75c9dc
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-arm-smmu-8996.dtsi
@@ -0,0 +1,278 @@
+/* Copyright (c) 2015, 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-arm-smmu.dtsi"
+#include <dt-bindings/msm/msm-bus-ids.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+&anoc0_smmu {
+ status = "ok";
+ qcom,register-save;
+ qcom,skip-init;
+ #global-interrupts = <1>;
+ interrupts = <GIC_SPI 362 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 359 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH>;
+ vdd-supply = <&gdsc_aggre0_noc>;
+ clocks = <&clock_gcc clk_gcc_smmu_aggre0_axi_clk>,
+ <&clock_gcc clk_gcc_smmu_aggre0_ahb_clk>;
+ clock-names = "smmu_aggre0_axi_clk", "smmu_aggre0_ahb_clk";
+ #clock-cells = <1>;
+ #iommu-cells = <0>;
+};
+
+&anoc1_smmu {
+ status = "ok";
+ qcom,register-save;
+ qcom,skip-init;
+ #global-interrupts = <1>;
+ interrupts = <GIC_SPI 371 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 364 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 365 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 366 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 367 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 369 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 370 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 431 IRQ_TYPE_LEVEL_HIGH>;
+ #iommu-cells = <1>;
+ clocks = <&clock_gcc clk_aggre1_noc_clk>;
+ clock-names = "smmu_aggre1_noc_clk";
+ #clock-cells = <1>;
+};
+
+&anoc2_smmu {
+ status = "ok";
+ qcom,register-save;
+ qcom,skip-init;
+ #global-interrupts = <1>;
+ interrupts = <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 376 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 377 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 378 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 462 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 463 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 464 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 465 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 466 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 467 IRQ_TYPE_LEVEL_HIGH>;
+ #iommu-cells = <1>;
+ clocks = <&clock_gcc clk_aggre2_noc_clk>;
+ clock-names = "smmu_aggre2_noc_clk";
+ #clock-cells = <1>;
+};
+
+&lpass_q6_smmu {
+ status = "ok";
+ qcom,register-save;
+ qcom,skip-init;
+ #global-interrupts = <1>;
+ interrupts = <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 226 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 393 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 394 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 395 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 396 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 397 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 398 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 399 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 401 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 402 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 403 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 310 IRQ_TYPE_LEVEL_HIGH>;
+ vdd-supply = <&gdsc_hlos1_vote_lpass_adsp>;
+ clocks = <&clock_gcc clk_hlos1_vote_lpass_adsp_smmu_clk>;
+ clock-names = "lpass_q6_smmu_clocks";
+ #clock-cells = <1>;
+};
+
+&jpeg_smmu {
+ status = "ok";
+ qcom,register-save;
+ qcom,skip-init;
+ qcom,fatal-asf;
+ #global-interrupts = <1>;
+ interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
+ vdd-supply = <&gdsc_mmagic_camss>;
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_mmss_mmagic_cfg_ahb_clk>,
+ <&clock_mmss clk_smmu_jpeg_ahb_clk>,
+ <&clock_mmss clk_smmu_jpeg_axi_clk>,
+ <&clock_mmss clk_mmagic_camss_axi_clk>;
+ clock-names = "mmagic_ahb_clk", "mmagic_cfg_ahb_clk",
+ "jpeg_ahb_clk", "jpeg_axi_clk",
+ "mmagic_camss_axi_clk";
+ #clock-cells = <1>;
+ qcom,bus-master-id = <MSM_BUS_MASTER_JPEG>;
+};
+
+&vfe_smmu {
+ status = "ok";
+ qcom,register-save;
+ qcom,skip-init;
+ qcom,fatal-asf;
+ #global-interrupts = <1>;
+ interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 343 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 344 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 345 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 346 IRQ_TYPE_LEVEL_HIGH>;
+ vdd-supply = <&gdsc_mmagic_camss>;
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_mmss_mmagic_cfg_ahb_clk>,
+ <&clock_mmss clk_smmu_vfe_ahb_clk>,
+ <&clock_mmss clk_smmu_vfe_axi_clk>,
+ <&clock_mmss clk_mmagic_camss_axi_clk>;
+ clock-names = "mmagic_ahb_clk", "mmagic_cfg_ahb_clk",
+ "vfe_ahb_clk", "vfe_axi_clk",
+ "mmagic_camss_axi_clk";
+ #clock-cells = <1>;
+ qcom,bus-master-id = <MSM_BUS_MASTER_VFE>;
+};
+
+&cpp_fd_smmu {
+ status = "ok";
+ qcom,register-save;
+ qcom,skip-init;
+ qcom,fatal-asf;
+ #global-interrupts = <1>;
+ interrupts = <GIC_SPI 264 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 263 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 267 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>;
+ vdd-supply = <&gdsc_mmagic_camss>;
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_mmss_mmagic_cfg_ahb_clk>,
+ <&clock_mmss clk_smmu_cpp_ahb_clk>,
+ <&clock_mmss clk_smmu_cpp_axi_clk>,
+ <&clock_mmss clk_mmagic_camss_axi_clk>;
+ clock-names = "mmagic_ahb_clk", "mmagic_cfg_ahb_clk",
+ "cpp_ahb_clk", "cpp_axi_clk",
+ "mmagic_camss_axi_clk";
+ #clock-cells = <1>;
+ qcom,bus-master-id = <MSM_BUS_MASTER_CPP>;
+};
+
+&venus_smmu {
+ status = "ok";
+ qcom,register-save;
+ qcom,skip-init;
+ #global-interrupts = <1>;
+ interrupts = <GIC_SPI 286 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 336 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 338 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 339 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 340 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 341 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 342 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 288 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 289 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 290 IRQ_TYPE_LEVEL_HIGH>;
+ vdd-supply = <&gdsc_mmagic_video>;
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_mmss_mmagic_cfg_ahb_clk>,
+ <&clock_mmss clk_smmu_video_ahb_clk>,
+ <&clock_mmss clk_smmu_video_axi_clk>,
+ <&clock_mmss clk_mmagic_video_axi_clk>;
+ clock-names = "mmagic_ahb_clk", "mmagic_cfg_ahb_clk",
+ "video_ahb_clk", "video_axi_clk",
+ "mmagic_video_axi_clk";
+ #clock-cells = <1>;
+ qcom,bus-master-id = <MSM_BUS_MASTER_VIDEO_P0>;
+};
+
+&mdp_smmu {
+ status = "ok";
+ qcom,register-save;
+ qcom,skip-init;
+ qcom,no-smr-check;
+ #global-interrupts = <1>;
+ interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 322 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 323 IRQ_TYPE_LEVEL_HIGH>;
+ vdd-supply = <&gdsc_mmagic_mdss>;
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_mmss_mmagic_cfg_ahb_clk>,
+ <&clock_mmss clk_smmu_mdp_ahb_clk>,
+ <&clock_mmss clk_smmu_mdp_axi_clk>,
+ <&clock_mmss clk_mmagic_mdss_axi_clk>;
+ clock-names = "mmagic_ahb_clk", "mmagic_cfg_ahb_clk",
+ "mdp_ahb_clk", "mdp_axi_clk",
+ "mmagic_mdss_axi_clk";
+ #clock-cells = <1>;
+ qcom,bus-master-id = <MSM_BUS_MASTER_MDP_PORT0>;
+};
+
+&rot_smmu {
+ status = "ok";
+ qcom,register-save;
+ qcom,skip-init;
+ #global-interrupts = <1>;
+ interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 348 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 349 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 350 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 351 IRQ_TYPE_LEVEL_HIGH>;
+ vdd-supply = <&gdsc_mmagic_mdss>;
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_mmss_mmagic_cfg_ahb_clk>,
+ <&clock_mmss clk_smmu_rot_ahb_clk>,
+ <&clock_mmss clk_smmu_rot_axi_clk>,
+ <&clock_mmss clk_mmagic_mdss_axi_clk>;
+ clock-names = "mmagic_ahb_clk", "mmagic_cfg_ahb_clk",
+ "rot_ahb_clk", "rot_axi_clk",
+ "mmagic_mdss_axi_clk";
+ #clock-cells = <1>;
+ qcom,bus-master-id = <MSM_BUS_MASTER_ROTATOR>;
+};
+
+&kgsl_smmu {
+ status = "ok";
+ qcom,register-save;
+ qcom,skip-init;
+ qcom,dynamic;
+ #global-interrupts = <1>;
+ interrupts = <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 331 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 332 IRQ_TYPE_LEVEL_HIGH>;
+ vdd-supply = <&gdsc_gpu>;
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_mmss_mmagic_cfg_ahb_clk>,
+ <&clock_gpu clk_gpu_ahb_clk>,
+ <&clock_gcc clk_gcc_mmss_bimc_gfx_clk>,
+ <&clock_gcc clk_gcc_bimc_gfx_clk>;
+ clock-names = "mmagic_ahb_clk", "mmagic_cfg_ahb_clk", "gpu_ahb_clk",
+ "gcc_mmss_bimc_gfx_clk", "gcc_bimc_gfx_clk";
+ #clock-cells = <1>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-arm-smmu-impl-defs-8996-v2.dtsi b/arch/arm64/boot/dts/qcom/msm-arm-smmu-impl-defs-8996-v2.dtsi
new file mode 100644
index 000000000000..4a8fa08df531
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-arm-smmu-impl-defs-8996-v2.dtsi
@@ -0,0 +1,643 @@
+/* Copyright (c) 2015, 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.
+ */
+
+
+&jpeg_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0x30>,
+ <0x6074 0x30>,
+ <0x6078 0x30>,
+ <0x607c 0x30>,
+ <0x6080 0x30>,
+ <0x6084 0x30>,
+ <0x6088 0x30>,
+ <0x608c 0x30>,
+ <0x6170 0x24>,
+ <0x6174 0x26>,
+ <0x6178 0x28>,
+ <0x617c 0x2a>,
+ <0x6180 0x2c>,
+ <0x6184 0x2d>,
+ <0x6188 0x2e>,
+ <0x618c 0x2f>,
+ <0x6270 0x0>,
+ <0x6274 0x4>,
+ <0x6278 0xc>,
+ <0x627c 0xe>,
+ <0x6280 0x12>,
+ <0x6284 0x16>,
+ <0x6288 0x18>,
+ <0x628c 0x1c>,
+ <0x6470 0x0>,
+ <0x6474 0x1>,
+ <0x6478 0x1>,
+ <0x647c 0x1>,
+ <0x6480 0x2>,
+ <0x6484 0x2>,
+ <0x6488 0x3>,
+ <0x648c 0x3>,
+ <0x6570 0x3>,
+ <0x6574 0x5>,
+ <0x6578 0x7>,
+ <0x657c 0x9>,
+ <0x6580 0xb>,
+ <0x6584 0xd>,
+ <0x6588 0xf>,
+ <0x658c 0x11>,
+ <0x6670 0x13>,
+ <0x6674 0x16>,
+ <0x6678 0x1c>,
+ <0x667c 0x1e>,
+ <0x6680 0x21>,
+ <0x6684 0x24>,
+ <0x6688 0x26>,
+ <0x668c 0x2a>,
+ <0x67a0 0x0>,
+ <0x67a4 0x0>,
+ <0x67a8 0xc>,
+ <0x67b0 0x0>,
+ <0x67b4 0x3>,
+ <0x67b8 0x83>,
+ <0x67d0 0x10>,
+ <0x67dc 0x8>,
+ <0x67e0 0x10>,
+ <0x6800 0x0>,
+ <0x6804 0x1>,
+ <0x6808 0x2>,
+ <0x680c 0x3>,
+ <0x6810 0x4>,
+ <0x6814 0x5>,
+ <0x6818 0x6>,
+ <0x681c 0x7>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6b18 0xff>,
+ <0x6b24 0x204>,
+ <0x6b28 0x10800>,
+ <0x6b30 0x400>,
+ <0x678c 0x6>,
+ <0x6794 0x24>;
+};
+
+&kgsl_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6b18 0x3>,
+ <0x6b24 0x204>,
+ <0x6b28 0x11000>,
+ <0x6b30 0x800>,
+ <0x678c 0x8>,
+ <0x6794 0x28>;
+};
+
+&vfe_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0x50>,
+ <0x6074 0x50>,
+ <0x6078 0x50>,
+ <0x607c 0x50>,
+ <0x6080 0x50>,
+ <0x6084 0x50>,
+ <0x6088 0x50>,
+ <0x608c 0x50>,
+ <0x6090 0x50>,
+ <0x6094 0x50>,
+ <0x6098 0x50>,
+ <0x609c 0x50>,
+ <0x60a0 0x50>,
+ <0x60a4 0x50>,
+ <0x60a8 0x50>,
+ <0x60ac 0x50>,
+ <0x6170 0x44>,
+ <0x6174 0x45>,
+ <0x6178 0x46>,
+ <0x617c 0x47>,
+ <0x6180 0x48>,
+ <0x6184 0x49>,
+ <0x6188 0x4a>,
+ <0x618c 0x4b>,
+ <0x6190 0x4c>,
+ <0x6194 0x4d>,
+ <0x6198 0x4e>,
+ <0x619c 0x4f>,
+ <0x61a0 0x50>,
+ <0x61a4 0x50>,
+ <0x61a8 0x50>,
+ <0x61ac 0x50>,
+ <0x6270 0x0>,
+ <0x6274 0x14>,
+ <0x6278 0x16>,
+ <0x627c 0x18>,
+ <0x6280 0x1a>,
+ <0x6284 0x1c>,
+ <0x6288 0x1e>,
+ <0x628c 0x20>,
+ <0x6290 0x22>,
+ <0x6294 0x36>,
+ <0x6298 0x38>,
+ <0x629c 0x3a>,
+ <0x62a0 0x3c>,
+ <0x62a4 0x3e>,
+ <0x62a8 0x40>,
+ <0x62ac 0x42>,
+ <0x6470 0x0>,
+ <0x6474 0x1>,
+ <0x6478 0x2>,
+ <0x647c 0x3>,
+ <0x6480 0x4>,
+ <0x6484 0x4>,
+ <0x6488 0x4>,
+ <0x648c 0x4>,
+ <0x6490 0x4>,
+ <0x6494 0x5>,
+ <0x6498 0x6>,
+ <0x649c 0x7>,
+ <0x64a0 0x8>,
+ <0x64a4 0x8>,
+ <0x64a8 0x8>,
+ <0x64ac 0x8>,
+ <0x6570 0x8>,
+ <0x6574 0xb>,
+ <0x6578 0xe>,
+ <0x657c 0x11>,
+ <0x6580 0x13>,
+ <0x6584 0x15>,
+ <0x6588 0x17>,
+ <0x658c 0x19>,
+ <0x6590 0x1b>,
+ <0x6594 0x1e>,
+ <0x6598 0x21>,
+ <0x659c 0x24>,
+ <0x65a0 0x26>,
+ <0x65a4 0x28>,
+ <0x65a8 0x2a>,
+ <0x65ac 0x2c>,
+ <0x6670 0x2e>,
+ <0x6674 0x38>,
+ <0x6678 0x39>,
+ <0x667c 0x3a>,
+ <0x6680 0x3b>,
+ <0x6684 0x3c>,
+ <0x6688 0x3d>,
+ <0x668c 0x3e>,
+ <0x6690 0x3f>,
+ <0x6694 0x49>,
+ <0x6698 0x4a>,
+ <0x669c 0x4b>,
+ <0x66a0 0x4c>,
+ <0x66a4 0x4d>,
+ <0x66a8 0x4e>,
+ <0x66ac 0x4f>,
+ <0x67a0 0x0>,
+ <0x67a4 0x0>,
+ <0x67a8 0xc>,
+ <0x67b0 0x0>,
+ <0x67b4 0x8>,
+ <0x67b8 0x138>,
+ <0x67d0 0x10>,
+ <0x67dc 0x8>,
+ <0x67e0 0x10>,
+ <0x6800 0x0>,
+ <0x6804 0x1>,
+ <0x6808 0x2>,
+ <0x680c 0x3>,
+ <0x6810 0x4>,
+ <0x6814 0x5>,
+ <0x6818 0x6>,
+ <0x681c 0x7>,
+ <0x6820 0x8>,
+ <0x6824 0x9>,
+ <0x6828 0xa>,
+ <0x682c 0xb>,
+ <0x6830 0xc>,
+ <0x6834 0xd>,
+ <0x6838 0xe>,
+ <0x683c 0xf>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6b18 0xffff>,
+ <0x6b24 0x204>,
+ <0x6b28 0x10a00>,
+ <0x6b30 0x500>,
+ <0x678c 0xb>,
+ <0x6794 0x2f>;
+};
+
+&venus_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0x110>,
+ <0x6074 0x110>,
+ <0x6078 0x110>,
+ <0x607c 0x110>,
+ <0x6080 0x110>,
+ <0x6084 0x110>,
+ <0x6088 0x110>,
+ <0x608c 0x110>,
+ <0x6170 0xe1>,
+ <0x6174 0xe5>,
+ <0x6178 0xfc>,
+ <0x617c 0x100>,
+ <0x6180 0x104>,
+ <0x6184 0x108>,
+ <0x6188 0x10c>,
+ <0x618c 0x10e>,
+ <0x6270 0x0>,
+ <0x6274 0x8>,
+ <0x6278 0x28>,
+ <0x627c 0x69>,
+ <0x6280 0x8d>,
+ <0x6284 0xa5>,
+ <0x6288 0xc9>,
+ <0x628c 0xd9>,
+ <0x6470 0x0>,
+ <0x6474 0x0>,
+ <0x6478 0x0>,
+ <0x647c 0x0>,
+ <0x6480 0x0>,
+ <0x6484 0x0>,
+ <0x6488 0x0>,
+ <0x648c 0x0>,
+ <0x6570 0x0>,
+ <0x6574 0x4>,
+ <0x6578 0x1c>,
+ <0x657c 0x21>,
+ <0x6580 0x26>,
+ <0x6584 0x2a>,
+ <0x6588 0x2e>,
+ <0x658c 0x30>,
+ <0x6670 0x32>,
+ <0x6674 0x36>,
+ <0x6678 0x46>,
+ <0x667c 0x58>,
+ <0x6680 0x62>,
+ <0x6684 0x6d>,
+ <0x6688 0x75>,
+ <0x668c 0x7d>,
+ <0x67a0 0x0>,
+ <0x67a4 0x0>,
+ <0x67a8 0x2f>,
+ <0x67b0 0x0>,
+ <0x67b4 0x0>,
+ <0x67b8 0x190>,
+ <0x67d0 0x8>,
+ <0x67dc 0x8>,
+ <0x67e0 0x8>,
+ <0x6800 0x0>,
+ <0x6804 0x1>,
+ <0x6808 0x2>,
+ <0x680c 0x3>,
+ <0x6810 0x4>,
+ <0x6814 0x5>,
+ <0x6818 0x6>,
+ <0x681c 0x7>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6b18 0xff>,
+ <0x6b24 0x203>,
+ <0x6b28 0x10a00>,
+ <0x6b30 0x500>,
+ <0x678c 0x18>,
+ <0x6794 0x43>;
+};
+
+&mdp_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0x70>,
+ <0x6074 0x70>,
+ <0x6170 0x52>,
+ <0x6174 0x68>,
+ <0x6270 0x0>,
+ <0x6274 0x3e>,
+ <0x6470 0x0>,
+ <0x6474 0x8>,
+ <0x6570 0x8>,
+ <0x6574 0x13>,
+ <0x6670 0x1e>,
+ <0x6674 0x5c>,
+ <0x67a0 0x0>,
+ <0x67a4 0x0>,
+ <0x67a8 0x1e>,
+ <0x67b0 0x0>,
+ <0x67b4 0x8>,
+ <0x67b8 0xb8>,
+ <0x67d0 0x10>,
+ <0x67dc 0x8>,
+ <0x67e0 0x10>,
+ <0x6800 0x0>,
+ <0x6804 0x1>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x678c 0x8>,
+ <0x6794 0x24>;
+};
+
+&rot_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0xc0>,
+ <0x6074 0xc0>,
+ <0x6078 0xc0>,
+ <0x6170 0xae>,
+ <0x6174 0xb6>,
+ <0x6178 0xbe>,
+ <0x6270 0x0>,
+ <0x6274 0x52>,
+ <0x6278 0xa6>,
+ <0x6470 0x0>,
+ <0x6474 0x2>,
+ <0x6478 0x4>,
+ <0x6570 0x4>,
+ <0x6574 0xc>,
+ <0x6578 0x15>,
+ <0x6670 0x19>,
+ <0x6674 0x42>,
+ <0x6678 0x6c>,
+ <0x67a0 0x0>,
+ <0x67a4 0x0>,
+ <0x67a8 0x12>,
+ <0x67b0 0x0>,
+ <0x67b4 0x4>,
+ <0x67b8 0xac>,
+ <0x67d0 0x10>,
+ <0x67dc 0x8>,
+ <0x67e0 0x10>,
+ <0x6800 0x0>,
+ <0x6804 0x2>,
+ <0x6808 0x1>,
+ <0x680c 0x2>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6b18 0xf>,
+ <0x6b24 0x204>,
+ <0x6b28 0x10a00>,
+ <0x6b30 0x500>,
+ <0x678c 0xc>,
+ <0x6794 0x44>;
+};
+
+&cpp_fd_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0xa0>,
+ <0x6074 0xa0>,
+ <0x6078 0xa0>,
+ <0x607c 0xa0>,
+ <0x6080 0xa0>,
+ <0x6084 0xa0>,
+ <0x6170 0x8a>,
+ <0x6174 0x8e>,
+ <0x6178 0x92>,
+ <0x617c 0x96>,
+ <0x6180 0x9a>,
+ <0x6184 0x9d>,
+ <0x6270 0x0>,
+ <0x6274 0x18>,
+ <0x6278 0x24>,
+ <0x627c 0x30>,
+ <0x6280 0x3c>,
+ <0x6284 0x54>,
+ <0x6470 0x0>,
+ <0x6474 0x0>,
+ <0x6478 0x1>,
+ <0x647c 0x2>,
+ <0x6480 0x2>,
+ <0x6484 0x2>,
+ <0x6570 0x3>,
+ <0x6574 0x12>,
+ <0x6578 0x1a>,
+ <0x657c 0x22>,
+ <0x6580 0x2a>,
+ <0x6584 0x39>,
+ <0x6670 0x3b>,
+ <0x6674 0x47>,
+ <0x6678 0x4d>,
+ <0x667c 0x53>,
+ <0x6680 0x59>,
+ <0x6684 0x65>,
+ <0x67a0 0x0>,
+ <0x67a4 0x0>,
+ <0x67a8 0x16>,
+ <0x67b0 0x0>,
+ <0x67b4 0x3>,
+ <0x67b8 0x1c3>,
+ <0x67d0 0x10>,
+ <0x67dc 0x8>,
+ <0x67e0 0x10>,
+ <0x6800 0x0>,
+ <0x6804 0x1>,
+ <0x6808 0x2>,
+ <0x680c 0x3>,
+ <0x6810 0x4>,
+ <0x6814 0x5>,
+ <0x6818 0x0>,
+ <0x681c 0x0>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6b18 0xff>,
+ <0x6b24 0x204>,
+ <0x6b28 0x10a00>,
+ <0x6b30 0x500>,
+ <0x678c 0x8>,
+ <0x6794 0x2f>;
+};
+
+&lpass_q6_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x67a0 0x0>,
+ <0x67a4 0x0>,
+ <0x67a8 0x20>,
+ <0x67b0 0x0>,
+ <0x67b4 0x8>,
+ <0x67b8 0xc8>,
+ <0x67d0 0x4>,
+ <0x67dc 0x8>,
+ <0x67e0 0x8>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6b18 0xffff>,
+ <0x6b24 0x202>,
+ <0x6b28 0x10a00>,
+ <0x6b30 0x500>,
+ <0x6784 0x0>,
+ <0x678c 0x10>;
+};
+
+&anoc0_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0x8>,
+ <0x6074 0x30>,
+ <0x6078 0x40>,
+ <0x6170 0x0>,
+ <0x6174 0x3>,
+ <0x6178 0x5>,
+ <0x6270 0x0>,
+ <0x6274 0x0>,
+ <0x6278 0x0>,
+ <0x6470 0x0>,
+ <0x6474 0x2>,
+ <0x6478 0x4>,
+ <0x6570 0x6>,
+ <0x6574 0x12>,
+ <0x6578 0x1c>,
+ <0x6670 0x26>,
+ <0x6674 0x30>,
+ <0x6678 0x40>,
+ <0x67a0 0x0>,
+ <0x67a4 0x58>,
+ <0x67a8 0x60>,
+ <0x67b0 0x0>,
+ <0x67b4 0x6>,
+ <0x67b8 0x86>,
+ <0x67d0 0x0>,
+ <0x67dc 0x4>,
+ <0x67e0 0x4>,
+ <0x6800 0x0>,
+ <0x6804 0x1>,
+ <0x6808 0x2>,
+ <0x680c 0x0>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6784 0x0>,
+ <0x678c 0x10>;
+};
+
+&anoc1_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0x6>,
+ <0x6074 0x8>,
+ <0x6078 0xb>,
+ <0x607c 0x4b>,
+ <0x6170 0x0>,
+ <0x6174 0x1>,
+ <0x6178 0x2>,
+ <0x617c 0x5>,
+ <0x6270 0x0>,
+ <0x6274 0x0>,
+ <0x6278 0x0>,
+ <0x627c 0x0>,
+ <0x6470 0x0>,
+ <0x6474 0x2>,
+ <0x6478 0x2>,
+ <0x647c 0x4>,
+ <0x6570 0x4>,
+ <0x6574 0x6>,
+ <0x6578 0x7>,
+ <0x657c 0xd>,
+ <0x6670 0xe>,
+ <0x6674 0x12>,
+ <0x6678 0x15>,
+ <0x667c 0x1f>,
+ <0x67a0 0x0>,
+ <0x67a4 0x4a>,
+ <0x67a8 0x50>,
+ <0x67b0 0x0>,
+ <0x67b4 0x4>,
+ <0x67b8 0x2c>,
+ <0x67d0 0x0>,
+ <0x67dc 0x4>,
+ <0x67e0 0x8>,
+ <0x6800 0x2>,
+ <0x6804 0x2>,
+ <0x6808 0x0>,
+ <0x680c 0x0>,
+ <0x6810 0x3>,
+ <0x6814 0x3>,
+ <0x6818 0x1>,
+ <0x681c 0x0>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>;
+};
+
+&anoc2_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0x13>,
+ <0x6074 0x1b>,
+ <0x6078 0x1f>,
+ <0x607c 0x55>,
+ <0x6080 0x58>,
+ <0x6084 0x78>,
+ <0x6088 0x80>,
+ <0x6170 0x0>,
+ <0x6174 0x0>,
+ <0x6178 0x0>,
+ <0x617c 0xe>,
+ <0x6180 0xf>,
+ <0x6184 0x10>,
+ <0x6188 0x11>,
+ <0x6270 0x0>,
+ <0x6274 0x0>,
+ <0x6278 0x0>,
+ <0x627c 0x0>,
+ <0x6280 0x0>,
+ <0x6284 0x0>,
+ <0x6288 0x0>,
+ <0x6470 0x0>,
+ <0x6474 0x2>,
+ <0x6478 0x2>,
+ <0x647c 0x6>,
+ <0x6480 0x6>,
+ <0x6484 0x8>,
+ <0x6488 0x8>,
+ <0x6570 0xc>,
+ <0x6574 0xe>,
+ <0x6578 0x16>,
+ <0x657c 0x1a>,
+ <0x6580 0x1d>,
+ <0x6584 0x21>,
+ <0x6588 0x23>,
+ <0x6670 0x27>,
+ <0x6674 0x2f>,
+ <0x6678 0x3f>,
+ <0x667c 0x47>,
+ <0x6680 0x4c>,
+ <0x6684 0x54>,
+ <0x6688 0x58>,
+ <0x67a0 0x0>,
+ <0x67a4 0x8d>,
+ <0x67a8 0xa0>,
+ <0x67b0 0x0>,
+ <0x67b4 0xc>,
+ <0x67b8 0x78>,
+ <0x67d0 0x0>,
+ <0x67dc 0x4>,
+ <0x67e0 0x8>,
+ <0x6800 0x0>,
+ <0x6804 0x0>,
+ <0x6808 0x1>,
+ <0x680c 0x1>,
+ <0x6810 0x0>,
+ <0x6814 0x0>,
+ <0x6818 0x1>,
+ <0x681c 0x1>,
+ <0x6820 0x3>,
+ <0x6824 0x2>,
+ <0x6828 0x5>,
+ <0x682c 0x4>,
+ <0x6830 0x6>,
+ <0x6834 0x6>,
+ <0x6838 0x0>,
+ <0x683c 0x0>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x678c 0xa>,
+ <0x6794 0x1a>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-arm-smmu-impl-defs-8996-v3.dtsi b/arch/arm64/boot/dts/qcom/msm-arm-smmu-impl-defs-8996-v3.dtsi
new file mode 100644
index 000000000000..d310f65f33c7
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-arm-smmu-impl-defs-8996-v3.dtsi
@@ -0,0 +1,646 @@
+/* Copyright (c) 2015, 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.
+ */
+
+
+&jpeg_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0x30>,
+ <0x6074 0x30>,
+ <0x6078 0x30>,
+ <0x607c 0x30>,
+ <0x6080 0x30>,
+ <0x6084 0x30>,
+ <0x6088 0x30>,
+ <0x608c 0x30>,
+ <0x6170 0x24>,
+ <0x6174 0x26>,
+ <0x6178 0x28>,
+ <0x617c 0x2a>,
+ <0x6180 0x2c>,
+ <0x6184 0x2d>,
+ <0x6188 0x2e>,
+ <0x618c 0x2f>,
+ <0x6270 0x0>,
+ <0x6274 0x4>,
+ <0x6278 0xc>,
+ <0x627c 0xe>,
+ <0x6280 0x12>,
+ <0x6284 0x16>,
+ <0x6288 0x18>,
+ <0x628c 0x1c>,
+ <0x6470 0x0>,
+ <0x6474 0x1>,
+ <0x6478 0x1>,
+ <0x647c 0x1>,
+ <0x6480 0x2>,
+ <0x6484 0x2>,
+ <0x6488 0x3>,
+ <0x648c 0x3>,
+ <0x6570 0x3>,
+ <0x6574 0x5>,
+ <0x6578 0x7>,
+ <0x657c 0x9>,
+ <0x6580 0xb>,
+ <0x6584 0xd>,
+ <0x6588 0xf>,
+ <0x658c 0x11>,
+ <0x6670 0x13>,
+ <0x6674 0x16>,
+ <0x6678 0x1c>,
+ <0x667c 0x1e>,
+ <0x6680 0x21>,
+ <0x6684 0x24>,
+ <0x6688 0x26>,
+ <0x668c 0x2a>,
+ <0x67a0 0x0>,
+ <0x67a4 0x0>,
+ <0x67a8 0xc>,
+ <0x67b0 0x0>,
+ <0x67b4 0x3>,
+ <0x67b8 0x83>,
+ <0x67d0 0x10>,
+ <0x67dc 0x8>,
+ <0x67e0 0x10>,
+ <0x6800 0x0>,
+ <0x6804 0x1>,
+ <0x6808 0x2>,
+ <0x680c 0x3>,
+ <0x6810 0x4>,
+ <0x6814 0x5>,
+ <0x6818 0x6>,
+ <0x681c 0x7>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6b18 0xff>,
+ <0x6b24 0x204>,
+ <0x6b28 0x10800>,
+ <0x6b30 0x400>,
+ <0x678c 0x6>,
+ <0x6794 0x24>;
+};
+
+&kgsl_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6b18 0x3>,
+ <0x6b24 0x204>,
+ <0x6b28 0x11000>,
+ <0x6b30 0x800>,
+ <0x678c 0x8>,
+ <0x6794 0x28>;
+};
+
+&vfe_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0x50>,
+ <0x6074 0x50>,
+ <0x6078 0x50>,
+ <0x607c 0x50>,
+ <0x6080 0x50>,
+ <0x6084 0x50>,
+ <0x6088 0x50>,
+ <0x608c 0x50>,
+ <0x6090 0x50>,
+ <0x6094 0x50>,
+ <0x6098 0x50>,
+ <0x609c 0x50>,
+ <0x60a0 0x50>,
+ <0x60a4 0x50>,
+ <0x60a8 0x50>,
+ <0x60ac 0x50>,
+ <0x6170 0x44>,
+ <0x6174 0x45>,
+ <0x6178 0x46>,
+ <0x617c 0x47>,
+ <0x6180 0x48>,
+ <0x6184 0x49>,
+ <0x6188 0x4a>,
+ <0x618c 0x4b>,
+ <0x6190 0x4c>,
+ <0x6194 0x4d>,
+ <0x6198 0x4e>,
+ <0x619c 0x4f>,
+ <0x61a0 0x50>,
+ <0x61a4 0x50>,
+ <0x61a8 0x50>,
+ <0x61ac 0x50>,
+ <0x6270 0x0>,
+ <0x6274 0x14>,
+ <0x6278 0x16>,
+ <0x627c 0x18>,
+ <0x6280 0x1a>,
+ <0x6284 0x1c>,
+ <0x6288 0x1e>,
+ <0x628c 0x20>,
+ <0x6290 0x22>,
+ <0x6294 0x36>,
+ <0x6298 0x38>,
+ <0x629c 0x3a>,
+ <0x62a0 0x3c>,
+ <0x62a4 0x3e>,
+ <0x62a8 0x40>,
+ <0x62ac 0x42>,
+ <0x6470 0x0>,
+ <0x6474 0x1>,
+ <0x6478 0x2>,
+ <0x647c 0x3>,
+ <0x6480 0x4>,
+ <0x6484 0x4>,
+ <0x6488 0x4>,
+ <0x648c 0x4>,
+ <0x6490 0x4>,
+ <0x6494 0x5>,
+ <0x6498 0x6>,
+ <0x649c 0x7>,
+ <0x64a0 0x8>,
+ <0x64a4 0x8>,
+ <0x64a8 0x8>,
+ <0x64ac 0x8>,
+ <0x6570 0x8>,
+ <0x6574 0xb>,
+ <0x6578 0xe>,
+ <0x657c 0x11>,
+ <0x6580 0x13>,
+ <0x6584 0x15>,
+ <0x6588 0x17>,
+ <0x658c 0x19>,
+ <0x6590 0x1b>,
+ <0x6594 0x1e>,
+ <0x6598 0x21>,
+ <0x659c 0x24>,
+ <0x65a0 0x26>,
+ <0x65a4 0x28>,
+ <0x65a8 0x2a>,
+ <0x65ac 0x2c>,
+ <0x6670 0x2e>,
+ <0x6674 0x38>,
+ <0x6678 0x39>,
+ <0x667c 0x3a>,
+ <0x6680 0x3b>,
+ <0x6684 0x3c>,
+ <0x6688 0x3d>,
+ <0x668c 0x3e>,
+ <0x6690 0x3f>,
+ <0x6694 0x49>,
+ <0x6698 0x4a>,
+ <0x669c 0x4b>,
+ <0x66a0 0x4c>,
+ <0x66a4 0x4d>,
+ <0x66a8 0x4e>,
+ <0x66ac 0x4f>,
+ <0x67a0 0x0>,
+ <0x67a4 0x0>,
+ <0x67a8 0xc>,
+ <0x67b0 0x0>,
+ <0x67b4 0x8>,
+ <0x67b8 0x138>,
+ <0x67d0 0x10>,
+ <0x67dc 0x8>,
+ <0x67e0 0x10>,
+ <0x6800 0x0>,
+ <0x6804 0x1>,
+ <0x6808 0x2>,
+ <0x680c 0x3>,
+ <0x6810 0x4>,
+ <0x6814 0x5>,
+ <0x6818 0x6>,
+ <0x681c 0x7>,
+ <0x6820 0x8>,
+ <0x6824 0x9>,
+ <0x6828 0xa>,
+ <0x682c 0xb>,
+ <0x6830 0xc>,
+ <0x6834 0xd>,
+ <0x6838 0xe>,
+ <0x683c 0xf>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6b18 0xffff>,
+ <0x6b24 0x204>,
+ <0x6b28 0x10a00>,
+ <0x6b30 0x500>,
+ <0x678c 0xb>,
+ <0x6794 0x2f>;
+};
+
+&venus_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0x110>,
+ <0x6074 0x110>,
+ <0x6078 0x110>,
+ <0x607c 0x110>,
+ <0x6080 0x110>,
+ <0x6084 0x110>,
+ <0x6088 0x110>,
+ <0x608c 0x110>,
+ <0x6170 0xe1>,
+ <0x6174 0xe5>,
+ <0x6178 0xfc>,
+ <0x617c 0x100>,
+ <0x6180 0x104>,
+ <0x6184 0x108>,
+ <0x6188 0x10c>,
+ <0x618c 0x10e>,
+ <0x6270 0x0>,
+ <0x6274 0x8>,
+ <0x6278 0x28>,
+ <0x627c 0x69>,
+ <0x6280 0x8d>,
+ <0x6284 0xa5>,
+ <0x6288 0xc9>,
+ <0x628c 0xd9>,
+ <0x6470 0x0>,
+ <0x6474 0x0>,
+ <0x6478 0x0>,
+ <0x647c 0x0>,
+ <0x6480 0x0>,
+ <0x6484 0x0>,
+ <0x6488 0x0>,
+ <0x648c 0x0>,
+ <0x6570 0x0>,
+ <0x6574 0x4>,
+ <0x6578 0x1c>,
+ <0x657c 0x21>,
+ <0x6580 0x26>,
+ <0x6584 0x2a>,
+ <0x6588 0x2e>,
+ <0x658c 0x30>,
+ <0x6670 0x32>,
+ <0x6674 0x36>,
+ <0x6678 0x46>,
+ <0x667c 0x58>,
+ <0x6680 0x62>,
+ <0x6684 0x6d>,
+ <0x6688 0x75>,
+ <0x668c 0x7d>,
+ <0x67a0 0x0>,
+ <0x67a4 0x0>,
+ <0x67a8 0x2f>,
+ <0x67b0 0x0>,
+ <0x67b4 0x0>,
+ <0x67b8 0x190>,
+ <0x67d0 0x8>,
+ <0x67dc 0x8>,
+ <0x67e0 0x8>,
+ <0x6800 0x0>,
+ <0x6804 0x1>,
+ <0x6808 0x2>,
+ <0x680c 0x3>,
+ <0x6810 0x4>,
+ <0x6814 0x5>,
+ <0x6818 0x6>,
+ <0x681c 0x7>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6b18 0xff>,
+ <0x6b24 0x203>,
+ <0x6b28 0x10a00>,
+ <0x6b30 0x500>,
+ <0x678c 0x18>,
+ <0x6794 0x43>;
+};
+
+&mdp_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0x70>,
+ <0x6074 0x70>,
+ <0x6170 0x52>,
+ <0x6174 0x68>,
+ <0x6270 0x0>,
+ <0x6274 0x3e>,
+ <0x6470 0x0>,
+ <0x6474 0x8>,
+ <0x6570 0x8>,
+ <0x6574 0x13>,
+ <0x6670 0x1e>,
+ <0x6674 0x5c>,
+ <0x67a0 0x0>,
+ <0x67a4 0x0>,
+ <0x67a8 0x1e>,
+ <0x67b0 0x0>,
+ <0x67b4 0x8>,
+ <0x67b8 0xb8>,
+ <0x67d0 0x10>,
+ <0x67dc 0x8>,
+ <0x67e0 0x10>,
+ <0x6800 0x0>,
+ <0x6804 0x1>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x678c 0x8>,
+ <0x6794 0x24>;
+};
+
+&rot_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0xc0>,
+ <0x6074 0xc0>,
+ <0x6078 0xc0>,
+ <0x6170 0xae>,
+ <0x6174 0xb6>,
+ <0x6178 0xbe>,
+ <0x6270 0x0>,
+ <0x6274 0x52>,
+ <0x6278 0xa6>,
+ <0x6470 0x0>,
+ <0x6474 0x2>,
+ <0x6478 0x4>,
+ <0x6570 0x4>,
+ <0x6574 0xc>,
+ <0x6578 0x15>,
+ <0x6670 0x19>,
+ <0x6674 0x42>,
+ <0x6678 0x6c>,
+ <0x67a0 0x0>,
+ <0x67a4 0x0>,
+ <0x67a8 0x12>,
+ <0x67b0 0x0>,
+ <0x67b4 0x4>,
+ <0x67b8 0xac>,
+ <0x67d0 0x10>,
+ <0x67dc 0x8>,
+ <0x67e0 0x10>,
+ <0x6800 0x0>,
+ <0x6804 0x2>,
+ <0x6808 0x1>,
+ <0x680c 0x2>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6b18 0xf>,
+ <0x6b24 0x204>,
+ <0x6b28 0x10a00>,
+ <0x6b30 0x500>,
+ <0x678c 0xc>,
+ <0x6794 0x44>;
+};
+
+&cpp_fd_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0xa0>,
+ <0x6074 0xa0>,
+ <0x6078 0xa0>,
+ <0x607c 0xa0>,
+ <0x6080 0xa0>,
+ <0x6084 0xa0>,
+ <0x6170 0x8a>,
+ <0x6174 0x8e>,
+ <0x6178 0x92>,
+ <0x617c 0x96>,
+ <0x6180 0x9a>,
+ <0x6184 0x9d>,
+ <0x6270 0x0>,
+ <0x6274 0x18>,
+ <0x6278 0x24>,
+ <0x627c 0x30>,
+ <0x6280 0x3c>,
+ <0x6284 0x54>,
+ <0x6470 0x0>,
+ <0x6474 0x0>,
+ <0x6478 0x1>,
+ <0x647c 0x2>,
+ <0x6480 0x2>,
+ <0x6484 0x2>,
+ <0x6570 0x3>,
+ <0x6574 0x12>,
+ <0x6578 0x1a>,
+ <0x657c 0x22>,
+ <0x6580 0x2a>,
+ <0x6584 0x39>,
+ <0x6670 0x3b>,
+ <0x6674 0x47>,
+ <0x6678 0x4d>,
+ <0x667c 0x53>,
+ <0x6680 0x59>,
+ <0x6684 0x65>,
+ <0x67a0 0x0>,
+ <0x67a4 0x0>,
+ <0x67a8 0x16>,
+ <0x67b0 0x0>,
+ <0x67b4 0x3>,
+ <0x67b8 0x1c3>,
+ <0x67d0 0x10>,
+ <0x67dc 0x8>,
+ <0x67e0 0x10>,
+ <0x6800 0x0>,
+ <0x6804 0x1>,
+ <0x6808 0x2>,
+ <0x680c 0x3>,
+ <0x6810 0x4>,
+ <0x6814 0x5>,
+ <0x6818 0x0>,
+ <0x681c 0x0>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6b18 0xff>,
+ <0x6b24 0x204>,
+ <0x6b28 0x10a00>,
+ <0x6b30 0x500>,
+ <0x678c 0x8>,
+ <0x6794 0x2f>;
+};
+
+&lpass_q6_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x67a0 0x0>,
+ <0x67a4 0x0>,
+ <0x67a8 0x20>,
+ <0x67b0 0x0>,
+ <0x67b4 0x8>,
+ <0x67b8 0xc8>,
+ <0x67d0 0x4>,
+ <0x67dc 0x8>,
+ <0x67e0 0x8>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6b18 0xffff>,
+ <0x6b24 0x202>,
+ <0x6b28 0x10a00>,
+ <0x6b30 0x500>,
+ <0x6784 0x0>,
+ <0x678c 0x10>;
+};
+
+&anoc0_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0x8>,
+ <0x6074 0x30>,
+ <0x6078 0x40>,
+ <0x6170 0x0>,
+ <0x6174 0x3>,
+ <0x6178 0x5>,
+ <0x6270 0x0>,
+ <0x6274 0x0>,
+ <0x6278 0x0>,
+ <0x6470 0x0>,
+ <0x6474 0x2>,
+ <0x6478 0x4>,
+ <0x6570 0x6>,
+ <0x6574 0x12>,
+ <0x6578 0x1c>,
+ <0x6670 0x26>,
+ <0x6674 0x30>,
+ <0x6678 0x40>,
+ <0x67a0 0x0>,
+ <0x67a4 0x58>,
+ <0x67a8 0x60>,
+ <0x67b0 0x0>,
+ <0x67b4 0x6>,
+ <0x67b8 0x86>,
+ <0x67d0 0x0>,
+ <0x67dc 0x4>,
+ <0x67e0 0x4>,
+ <0x6800 0x0>,
+ <0x6804 0x1>,
+ <0x6808 0x2>,
+ <0x680c 0x0>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6d30 0x41bd>,
+ <0x6784 0x0>,
+ <0x678c 0x10>;
+};
+
+&anoc1_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0x6>,
+ <0x6074 0x8>,
+ <0x6078 0xb>,
+ <0x607c 0x4b>,
+ <0x6170 0x0>,
+ <0x6174 0x1>,
+ <0x6178 0x2>,
+ <0x617c 0x5>,
+ <0x6270 0x0>,
+ <0x6274 0x0>,
+ <0x6278 0x0>,
+ <0x627c 0x0>,
+ <0x6470 0x0>,
+ <0x6474 0x2>,
+ <0x6478 0x2>,
+ <0x647c 0x4>,
+ <0x6570 0x4>,
+ <0x6574 0x6>,
+ <0x6578 0x7>,
+ <0x657c 0xd>,
+ <0x6670 0xe>,
+ <0x6674 0x12>,
+ <0x6678 0x15>,
+ <0x667c 0x1f>,
+ <0x67a0 0x0>,
+ <0x67a4 0x4a>,
+ <0x67a8 0x50>,
+ <0x67b0 0x0>,
+ <0x67b4 0x4>,
+ <0x67b8 0x2c>,
+ <0x67d0 0x0>,
+ <0x67dc 0x4>,
+ <0x67e0 0x8>,
+ <0x6800 0x2>,
+ <0x6804 0x2>,
+ <0x6808 0x0>,
+ <0x680c 0x0>,
+ <0x6810 0x3>,
+ <0x6814 0x3>,
+ <0x6818 0x1>,
+ <0x681c 0x0>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6d30 0x41bd>;
+};
+
+&anoc2_smmu {
+ attach-impl-defs = <0x6000 0x70>,
+ <0x6060 0x1055>,
+ <0x6070 0x13>,
+ <0x6074 0x1b>,
+ <0x6078 0x1f>,
+ <0x607c 0x55>,
+ <0x6080 0x58>,
+ <0x6084 0x78>,
+ <0x6088 0x80>,
+ <0x6170 0x0>,
+ <0x6174 0x0>,
+ <0x6178 0x0>,
+ <0x617c 0xe>,
+ <0x6180 0xf>,
+ <0x6184 0x10>,
+ <0x6188 0x11>,
+ <0x6270 0x0>,
+ <0x6274 0x0>,
+ <0x6278 0x0>,
+ <0x627c 0x0>,
+ <0x6280 0x0>,
+ <0x6284 0x0>,
+ <0x6288 0x0>,
+ <0x6470 0x0>,
+ <0x6474 0x2>,
+ <0x6478 0x2>,
+ <0x647c 0x6>,
+ <0x6480 0x6>,
+ <0x6484 0x8>,
+ <0x6488 0x8>,
+ <0x6570 0xc>,
+ <0x6574 0xe>,
+ <0x6578 0x16>,
+ <0x657c 0x1a>,
+ <0x6580 0x1d>,
+ <0x6584 0x21>,
+ <0x6588 0x23>,
+ <0x6670 0x27>,
+ <0x6674 0x2f>,
+ <0x6678 0x3f>,
+ <0x667c 0x47>,
+ <0x6680 0x4c>,
+ <0x6684 0x54>,
+ <0x6688 0x58>,
+ <0x67a0 0x0>,
+ <0x67a4 0x8d>,
+ <0x67a8 0xa0>,
+ <0x67b0 0x0>,
+ <0x67b4 0xc>,
+ <0x67b8 0x78>,
+ <0x67d0 0x0>,
+ <0x67dc 0x4>,
+ <0x67e0 0x8>,
+ <0x6800 0x0>,
+ <0x6804 0x0>,
+ <0x6808 0x1>,
+ <0x680c 0x1>,
+ <0x6810 0x0>,
+ <0x6814 0x0>,
+ <0x6818 0x1>,
+ <0x681c 0x1>,
+ <0x6820 0x3>,
+ <0x6824 0x2>,
+ <0x6828 0x5>,
+ <0x682c 0x4>,
+ <0x6830 0x6>,
+ <0x6834 0x6>,
+ <0x6838 0x0>,
+ <0x683c 0x0>,
+ <0x6a00 0x6>,
+ <0x6b00 0x3ff>,
+ <0x6d30 0x41bd>,
+ <0x678c 0xa>,
+ <0x6794 0x1a>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-arm-smmu.dtsi b/arch/arm64/boot/dts/qcom/msm-arm-smmu.dtsi
new file mode 100644
index 000000000000..7c1cd3d26112
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-arm-smmu.dtsi
@@ -0,0 +1,99 @@
+/* Copyright (c) 2014-2015, 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_smmu: arm,smmu-jpeg@d80000 {
+ status = "disabled";
+ compatible = "qcom,smmu-v2";
+ qcom,tz-device-id = "JPEG";
+ reg = <0xd80000 0x10000>;
+ #iommu-cells = <1>;
+ };
+
+ kgsl_smmu: arm,smmu-kgsl@b40000 {
+ status = "disabled";
+ compatible = "qcom,smmu-v2";
+ qcom,tz-device-id = "GPU";
+ qcom,dynamic;
+ reg = <0xb40000 0x10000>;
+ #iommu-cells = <1>;
+ };
+
+ vfe_smmu: arm,smmu-vfe@da0000 {
+ status = "disabled";
+ compatible = "qcom,smmu-v2";
+ qcom,tz-device-id = "VFE";
+ reg = <0xda0000 0x10000>;
+ #iommu-cells = <1>;
+ };
+
+ venus_smmu: arm,smmu-venus@d40000 {
+ status = "disabled";
+ compatible = "qcom,smmu-v2";
+ qcom,tz-device-id = "VIDEO";
+ reg = <0xd40000 0x20000>;
+ #iommu-cells = <1>;
+ };
+
+ mdp_smmu: arm,smmu-mdp@d00000 {
+ status = "disabled";
+ compatible = "qcom,smmu-v2";
+ qcom,tz-device-id = "MDSS";
+ reg = <0xd00000 0x10000>;
+ #iommu-cells = <1>;
+ };
+
+ rot_smmu: arm,smmu-rot@d20000 {
+ status = "disabled";
+ compatible = "qcom,smmu-v2";
+ qcom,tz-device-id = "ROT";
+ reg = <0xd20000 0x10000>;
+ #iommu-cells = <1>;
+ };
+
+ cpp_fd_smmu: arm,smmu-cpp_fd@d60000 {
+ status = "disabled";
+ compatible = "qcom,smmu-v2";
+ qcom,tz-device-id = "CPP";
+ reg = <0xd60000 0x10000>;
+ #iommu-cells = <1>;
+ };
+
+ lpass_q6_smmu: arm,smmu-lpass_q6@1600000 {
+ status = "disabled";
+ compatible = "qcom,smmu-v2";
+ qcom,tz-device-id = "LPASS";
+ reg = <0x1600000 0x20000>;
+ #iommu-cells = <1>;
+ };
+
+ anoc0_smmu: arm,smmu-anoc0@1640000 {
+ status = "disabled";
+ compatible = "qcom,smmu-v2";
+ reg = <0x1640000 0x10000>;
+ #iommu-cells = <1>;
+ };
+
+ anoc1_smmu: arm,smmu-anoc1@1660000 {
+ status = "disabled";
+ compatible = "qcom,smmu-v2";
+ reg = <0x1660000 0x10000>;
+ #iommu-cells = <1>;
+ };
+
+ anoc2_smmu: arm,smmu-anoc2@1680000 {
+ status = "disabled";
+ compatible = "qcom,smmu-v2";
+ reg = <0x1680000 0x20000>;
+ #iommu-cells = <1>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-gdsc-8996.dtsi b/arch/arm64/boot/dts/qcom/msm-gdsc-8996.dtsi
new file mode 100644
index 000000000000..3c536e158f2d
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-gdsc-8996.dtsi
@@ -0,0 +1,209 @@
+/*
+ * Copyright (c) 2014-2015, 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_mmagic_bimc: qcom,gdsc@8c529c {
+ compatible = "regulator-fixed";
+ regulator-name = "gdsc_mmagic_bimc";
+ reg = <0x8c529c 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_mmagic_video: qcom,gdsc@8c119c {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_mmagic_video";
+ reg = <0x8c119c 0x4>,
+ <0x8c120c 0x4>;
+ reg-names = "base", "hw_ctrl_addr";
+ qcom,no-status-check-on-disable;
+ status = "disabled";
+ };
+
+ gdsc_mmagic_mdss: qcom,gdsc@8c247c {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_mmagic_mdss";
+ reg = <0x8c247c 0x4>,
+ <0x8c2480 0x4>;
+ reg-names = "base", "hw_ctrl_addr";
+ qcom,no-status-check-on-disable;
+ status = "disabled";
+ };
+
+ gdsc_mmagic_camss: qcom,gdsc@8c3c4c {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_mmagic_camss";
+ reg = <0x8c3c4c 0x4>,
+ <0x8c3c50 0x4>;
+ reg-names = "base", "hw_ctrl_addr";
+ qcom,no-status-check-on-disable;
+ status = "disabled";
+ };
+
+ gdsc_venus: qcom,gdsc@8c1024 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_venus";
+ reg = <0x8c1024 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_venus_core0: qcom,gdsc@8c1040 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_venus_core0";
+ reg = <0x8c1040 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_venus_core1: qcom,gdsc@8c1044 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_venus_core1";
+ reg = <0x8c1044 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_camss_top: qcom,gdsc@8c34a0 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_camss_top";
+ reg = <0x8c34a0 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_vfe0: qcom,gdsc@8c3664 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_vfe0";
+ reg = <0x8c3664 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_vfe1: qcom,gdsc@8c3674 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_vfe1";
+ reg = <0x8c3674 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_mdss: qcom,gdsc@8c2304 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_mdss";
+ reg = <0x8c2304 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_jpeg: qcom,gdsc@8c35a4 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_jpeg";
+ reg = <0x8c35a4 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_cpp: qcom,gdsc@8c36d4 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_cpp";
+ reg = <0x8c36d4 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_pcie_0: qcom,gdsc@36b004 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_pcie_0";
+ reg = <0x36b004 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_pcie_1: qcom,gdsc@36d004 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_pcie_1";
+ reg = <0x36d004 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_pcie_2: qcom,gdsc@36e004 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_pcie_2";
+ reg = <0x36e004 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_usb30: qcom,gdsc@30f004 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_usb30";
+ reg = <0x30f004 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_ufs: qcom,gdsc@375004 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_ufs";
+ reg = <0x375004 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_fd: qcom,gdsc@8c3b64 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_fd";
+ reg = <0x8c3b64 0x4>;
+ status = "disabled";
+ };
+
+ gdsc_gpu: qcom,gdsc@8c4034 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_gpu";
+ reg = <0x8c4034 0x4>,
+ <0x8c4038 0x4>;
+ reg-names = "base", "hw_ctrl_addr";
+ qcom,no-status-check-on-disable;
+ status = "disabled";
+ };
+
+ gdsc_gpu_gx: qcom,gdsc@8c4024 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_gpu_gx";
+ reg = <0x8c4024 0x4>,
+ <0x8c4300 0x4>;
+ reg-names = "base", "domain_addr";
+ status = "disabled";
+ };
+
+ gdsc_hlos1_vote_aggre0_noc: qcom,gdsc@37d024 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_hlos1_vote_aggre0_noc";
+ reg = <0x37d024 0x4>;
+ qcom,no-status-check-on-disable;
+ status = "disabled";
+ };
+
+ gdsc_hlos1_vote_lpass_adsp: qcom,gdsc@37d034 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_hlos1_vote_lpass_adsp";
+ reg = <0x37d034 0x4>;
+ qcom,no-status-check-on-disable;
+ status = "disabled";
+ };
+
+ gdsc_hlos1_vote_lpass_core: qcom,gdsc@37d038 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_hlos1_vote_lpass_core";
+ reg = <0x37d038 0x4>;
+ qcom,no-status-check-on-disable;
+ status = "disabled";
+ };
+
+ gdsc_aggre0_noc: qcom,gdsc@381004 {
+ compatible = "qcom,gdsc";
+ regulator-name = "gdsc_aggre0_noc";
+ reg = <0x381004 0x4>,
+ <0x381028 0x4>;
+ reg-names = "base", "hw_ctrl_addr";
+ qcom,no-status-check-on-disable;
+ status = "disabled";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-pm8004.dtsi b/arch/arm64/boot/dts/qcom/msm-pm8004.dtsi
new file mode 100644
index 000000000000..517d73fd6cde
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-pm8004.dtsi
@@ -0,0 +1,84 @@
+/* Copyright (c) 2014-2015, 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,pm8004@4 {
+ spmi-slave-container;
+ reg = <0x4>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ pm8004_revid: qcom,revid@100 {
+ compatible = "qcom,qpnp-revid";
+ reg = <0x100 0x100>;
+ };
+
+ qcom,power-on@800 {
+ compatible = "qcom,qpnp-power-on";
+ reg = <0x800 0x100>;
+ qcom,secondary-pon-reset;
+ qcom,s3-debounce = <32>;
+ qcom,s3-src = "kpdpwr-and-resin";
+ status = "disabled";
+ };
+
+ qcom,temp-alarm@2400 {
+ compatible = "qcom,qpnp-temp-alarm";
+ reg = <0x2400 0x100>;
+ interrupts = <0x4 0x24 0x0>;
+ label = "pm8004_tz";
+ qcom,threshold-set = <0>;
+ qcom,default-temp = <37000>;
+ };
+
+ pm8004_mpps: mpps {
+ spmi-dev-container;
+ compatible = "qcom,qpnp-pin";
+ gpio-controller;
+ #gpio-cells = <2>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ label = "pm8004-mpp";
+
+ mpp@a000 {
+ reg = <0xa000 0x100>;
+ qcom,pin-num = <1>;
+ status = "disabled";
+ };
+
+ mpp@a100 {
+ reg = <0xa100 0x100>;
+ qcom,pin-num = <2>;
+ status = "disabled";
+ };
+
+ mpp@a200 {
+ reg = <0xa200 0x100>;
+ qcom,pin-num = <3>;
+ status = "disabled";
+ };
+
+ mpp@a300 {
+ reg = <0xa300 0x100>;
+ qcom,pin-num = <4>;
+ status = "disabled";
+ };
+ };
+ };
+
+ qcom,pm8004@5 {
+ spmi-slave-container;
+ reg = <0x5>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ };
+};
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 000000000000..8c32136aabd4
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-pm8994-rpm-regulator.dtsi
@@ -0,0 +1,697 @@
+/* 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";
+ };
+ };
+
+ rpm-regulator-smpc2 {
+ compatible = "qcom,rpm-smd-regulator-resource";
+ qcom,resource-name = "smpc";
+ qcom,resource-id = <2>;
+ qcom,regulator-type = <1>;
+ qcom,hpm-min-load = <100000>;
+ status = "disabled";
+
+ regulator-s2 {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8004_s2";
+ 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 000000000000..c913f53ce9ae
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-pm8994.dtsi
@@ -0,0 +1,436 @@
+/* Copyright (c) 2014-2015, 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,store-hard-reset-reason;
+
+ 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>;
+ status = "disabled";
+ };
+
+ gpio@c100 {
+ reg = <0xc100 0x100>;
+ qcom,pin-num = <2>;
+ status = "disabled";
+ };
+
+ gpio@c200 {
+ reg = <0xc200 0x100>;
+ qcom,pin-num = <3>;
+ status = "disabled";
+ };
+
+ gpio@c300 {
+ reg = <0xc300 0x100>;
+ qcom,pin-num = <4>;
+ status = "disabled";
+ };
+
+ gpio@c400 {
+ reg = <0xc400 0x100>;
+ qcom,pin-num = <5>;
+ status = "disabled";
+ };
+
+ gpio@c500 {
+ reg = <0xc500 0x100>;
+ qcom,pin-num = <6>;
+ status = "disabled";
+ };
+
+ gpio@c600 {
+ reg = <0xc600 0x100>;
+ qcom,pin-num = <7>;
+ status = "disabled";
+ };
+
+ gpio@c700 {
+ reg = <0xc700 0x100>;
+ qcom,pin-num = <8>;
+ status = "disabled";
+ };
+
+ gpio@c800 {
+ reg = <0xc800 0x100>;
+ qcom,pin-num = <9>;
+ status = "disabled";
+ };
+
+ gpio@c900 {
+ reg = <0xc900 0x100>;
+ qcom,pin-num = <10>;
+ status = "disabled";
+ };
+
+ gpio@ca00 {
+ reg = <0xca00 0x100>;
+ qcom,pin-num = <11>;
+ status = "disabled";
+ };
+
+ gpio@cb00 {
+ reg = <0xcb00 0x100>;
+ qcom,pin-num = <12>;
+ status = "disabled";
+ };
+
+ gpio@cc00 {
+ reg = <0xcc00 0x100>;
+ qcom,pin-num = <13>;
+ status = "disabled";
+ };
+
+ gpio@cd00 {
+ reg = <0xcd00 0x100>;
+ qcom,pin-num = <14>;
+ status = "disabled";
+ };
+
+ gpio@ce00 {
+ reg = <0xce00 0x100>;
+ qcom,pin-num = <15>;
+ status = "disabled";
+ };
+
+ gpio@cf00 {
+ reg = <0xcf00 0x100>;
+ qcom,pin-num = <16>;
+ status = "disabled";
+ };
+
+ gpio@d000 {
+ reg = <0xd000 0x100>;
+ qcom,pin-num = <17>;
+ status = "disabled";
+ };
+
+ gpio@d100 {
+ reg = <0xd100 0x100>;
+ qcom,pin-num = <18>;
+ status = "disabled";
+ };
+
+ gpio@d200 {
+ reg = <0xd200 0x100>;
+ qcom,pin-num = <19>;
+ status = "disabled";
+ };
+
+ gpio@d300 {
+ reg = <0xd300 0x100>;
+ qcom,pin-num = <20>;
+ status = "disabled";
+ };
+
+ gpio@d500 {
+ reg = <0xd500 0x100>;
+ qcom,pin-num = <22>;
+ status = "disabled";
+ };
+ };
+
+ 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>;
+ status = "disabled";
+ };
+
+ mpp@a100 {
+ reg = <0xa100 0x100>;
+ qcom,pin-num = <2>;
+ status = "disabled";
+ };
+
+ mpp@a200 {
+ reg = <0xa200 0x100>;
+ qcom,pin-num = <3>;
+ status = "disabled";
+ };
+
+ mpp@a300 {
+ reg = <0xa300 0x100>;
+ qcom,pin-num = <4>;
+ status = "disabled";
+ };
+
+ mpp@a400 {
+ reg = <0xa400 0x100>;
+ qcom,pin-num = <5>;
+ status = "disabled";
+ };
+
+ mpp@a500 {
+ reg = <0xa500 0x100>;
+ qcom,pin-num = <6>;
+ status = "disabled";
+ };
+
+ mpp@a600 {
+ reg = <0xa600 0x100>;
+ qcom,pin-num = <7>;
+ status = "disabled";
+ };
+
+ mpp@a700 {
+ reg = <0xa700 0x100>;
+ qcom,pin-num = <8>;
+ status = "disabled";
+ };
+ };
+
+ 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>;
+ };
+
+ pm8994_rtc: 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>;
+ #pwm-cells = <2>;
+ 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>;
+ #pwm-cells = <2>;
+ 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>;
+ #pwm-cells = <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>;
+ #pwm-cells = <2>;
+ 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>;
+ #pwm-cells = <2>;
+ 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>;
+ #pwm-cells = <2>;
+ 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 000000000000..cbfc8a3e82b6
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-pmi8994.dtsi
@@ -0,0 +1,704 @@
+/* Copyright (c) 2014-2015, 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>;
+ };
+
+ qcom,power-on@800 {
+ compatible = "qcom,qpnp-power-on";
+ reg = <0x800 0x100>;
+ qcom,secondary-pon-reset;
+ pon_perph_reg: qcom,pon_perph_reg {
+ regulator-name = "pon_spare_reg";
+ qcom,pon-spare-reg-addr = <0x8c>;
+ qcom,pon-spare-reg-bit = <1>;
+ };
+ };
+
+ 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>;
+ status = "disabled";
+ };
+
+ gpio@c100 {
+ reg = <0xc100 0x100>;
+ qcom,pin-num = <2>;
+ status = "disabled";
+ };
+
+ gpio@c200 {
+ reg = <0xc200 0x100>;
+ qcom,pin-num = <3>;
+ status = "disabled";
+ };
+
+ gpio@c300 {
+ reg = <0xc300 0x100>;
+ qcom,pin-num = <4>;
+ status = "disabled";
+ };
+
+ gpio@c400 {
+ reg = <0xc400 0x100>;
+ qcom,pin-num = <5>;
+ status = "disabled";
+ };
+
+ gpio@c500 {
+ reg = <0xc500 0x100>;
+ qcom,pin-num = <6>;
+ status = "disabled";
+ };
+
+ gpio@c600 {
+ reg = <0xc600 0x100>;
+ qcom,pin-num = <7>;
+ status = "disabled";
+ };
+
+ gpio@c700 {
+ reg = <0xc700 0x100>;
+ qcom,pin-num = <8>;
+ status = "disabled";
+ };
+
+ gpio@c800 {
+ reg = <0xc800 0x100>;
+ qcom,pin-num = <9>;
+ status = "disabled";
+ };
+
+ gpio@c900 {
+ reg = <0xc900 0x100>;
+ qcom,pin-num = <10>;
+ status = "disabled";
+ };
+ };
+
+ 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>;
+ status = "disabled";
+ };
+
+ mpp@a100 {
+ reg = <0xa100 0x100>;
+ qcom,pin-num = <2>;
+ status = "disabled";
+ };
+
+ mpp@a200 {
+ reg = <0xa200 0x100>;
+ qcom,pin-num = <3>;
+ status = "disabled";
+ };
+
+ mpp@a300 {
+ reg = <0xa300 0x100>;
+ qcom,pin-num = <4>;
+ status = "disabled";
+ };
+ };
+
+ bcl@4200 {
+ compatible = "qcom,msm-bcl";
+ reg = <0x4200 0xFF 0x88E 0x2>;
+ reg-names = "fg_user_adc", "pon_spare";
+ interrupts = <0x2 0x42 0x0>,
+ <0x2 0x42 0x1>;
+ interrupt-names = "bcl-high-ibat-int",
+ "bcl-low-vbat-int";
+ qcom,vbat-scaling-factor = <39000>;
+ qcom,vbat-gain-numerator = <1>;
+ qcom,vbat-gain-denominator = <128>;
+ qcom,vbat-polling-delay-ms = <100>;
+ qcom,ibat-scaling-factor = <39000>;
+ qcom,ibat-gain-numerator = <1>;
+ qcom,ibat-gain-denominator = <128>;
+ qcom,ibat-offset-numerator = <1200>;
+ qcom,ibat-offset-denominator = <1>;
+ qcom,ibat-polling-delay-ms = <100>;
+ qcom,inhibit-derating-ua = <550000>;
+ };
+
+ pmi8994_vadc: vadc@3100 {
+ compatible = "qcom,qpnp-vadc";
+ reg = <0x3100 0x100>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ interrupts = <0x2 0x31 0x0>,
+ <0x2 0x31 0x3>,
+ <0x2 0x31 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,vadc-poll-eoc;
+ qcom,vadc-meas-int-mode;
+ qcom,pmic-revid = <&pmi8994_revid>;
+
+ chan@d {
+ label = "chg_temp";
+ reg = <0xd>;
+ qcom,decimation = <0>;
+ qcom,pre-div-channel-scaling = <0>;
+ qcom,calibration-type = "absolute";
+ qcom,scale-function = <16>;
+ qcom,hw-settle-time = <0>;
+ qcom,fast-avg-setup = <0>;
+ };
+ };
+
+ pmi8994_charger: qcom,qpnp-smbcharger {
+ spmi-dev-container;
+ compatible = "qcom,qpnp-smbcharger";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ qcom,iterm-ma = <100>;
+ qcom,fastchg-current-ma = <2000>;
+ qcom,float-voltage-mv = <4350>;
+ qcom,resume-delta-mv = <200>;
+ qcom,chg-inhibit-fg;
+ qcom,dc-psy-type = "Mains";
+ qcom,dc-psy-ma = <1500>;
+ qcom,rparasitic-uohm = <100000>;
+ qcom,bms-psy-name = "bms";
+ qcom,thermal-mitigation = <1500 700 600 0>;
+ qcom,parallel-usb-min-current-ma = <1400>;
+ qcom,parallel-usb-9v-min-current-ma = <900>;
+ qcom,parallel-allowed-lowering-ma = <500>;
+ qcom,autoadjust-vfloat;
+ qcom,pmic-revid = <&pmi8994_revid>;
+ qcom,force-aicl-rerun;
+ qcom,aicl-rerun-period-s = <180>;
+
+ 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",
+ "wdog-timeout",
+ "flash-fail",
+ "otst2",
+ "otst3";
+ };
+ };
+
+ pmi8994_fg: qcom,fg {
+ spmi-dev-container;
+ compatible = "qcom,qpnp-fg";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ qcom,resume-soc = <95>;
+ status = "okay";
+ qcom,bcl-lm-threshold-ma = <127>;
+ qcom,bcl-mh-threshold-ma = <405>;
+ qcom,fg-iterm-ma = <125>;
+ qcom,fg-chg-iterm-ma = <100>;
+ qcom,cycle-counter-en;
+ qcom,capacity-learning-on;
+ qcom,fg-cc-cv-threshold-mv = <4340>;
+ qcom,pmic-revid = <&pmi8994_revid>;
+
+ 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-batt";
+ };
+
+ qcom,fg-batt@4100 {
+ reg = <0x4100 0x100>;
+ interrupts = <0x2 0x41 0x0>,
+ <0x2 0x41 0x1>,
+ <0x2 0x41 0x2>,
+ <0x2 0x41 0x3>,
+ <0x2 0x41 0x4>,
+ <0x2 0x41 0x5>,
+ <0x2 0x41 0x6>,
+ <0x2 0x41 0x7>;
+
+ interrupt-names = "soft-cold",
+ "soft-hot",
+ "vbatt-low",
+ "batt-ided",
+ "batt-id-req",
+ "batt-unknown",
+ "batt-missing",
+ "batt-match";
+ };
+
+ qcom,fg-adc-vbat@4254 {
+ reg = <0x4254 0x1>;
+ };
+
+ qcom,fg-adc-ibat@4255 {
+ reg = <0x4255 0x1>;
+ };
+
+ qcom,revid-tp-rev@1f1 {
+ reg = <0x1f1 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>;
+
+ pmi8994_pwm_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>, <9>;
+ qcom,ramp-index = <0>;
+ #pwm-cells = <2>;
+ };
+
+ pmi8994_pwm_2: 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>, <9>;
+ qcom,ramp-index = <1>;
+ #pwm-cells = <2>;
+ };
+
+ pmi8994_pwm_3: 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>, <9>;
+ qcom,ramp-index = <2>;
+ #pwm-cells = <2>;
+ };
+
+ pmi8994_pwm_4: 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>, <9>;
+ qcom,ramp-index = <3>;
+ #pwm-cells = <2>;
+ };
+
+ labibb: qpnp-labibb-regulator {
+ status = "disabled";
+ spmi-dev-container;
+ compatible = "qcom,qpnp-labibb-regulator";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ ibb_regulator: qcom,ibb@dc00 {
+ reg = <0xdc00 0x100>;
+ reg-names = "ibb_reg";
+ regulator-name = "ibb_reg";
+
+ regulator-min-microvolt = <4600000>;
+ regulator-max-microvolt = <6000000>;
+
+ qcom,qpnp-ibb-min-voltage = <1400000>;
+ qcom,qpnp-ibb-step-size = <100000>;
+ qcom,qpnp-ibb-slew-rate = <2000000>;
+ qcom,qpnp-ibb-use-default-voltage;
+ qcom,qpnp-ibb-init-voltage = <5500000>;
+ qcom,qpnp-ibb-init-amoled-voltage = <4000000>;
+ qcom,qpnp-ibb-init-lcd-voltage = <5500000>;
+
+ qcom,qpnp-ibb-soft-start = <1000>;
+
+ qcom,qpnp-ibb-discharge-resistor = <32>;
+ qcom,qpnp-ibb-lab-pwrup-delay = <8000>;
+ qcom,qpnp-ibb-lab-pwrdn-delay = <8000>;
+ qcom,qpnp-ibb-en-discharge;
+
+ qcom,qpnp-ibb-full-pull-down;
+ qcom,qpnp-ibb-pull-down-enable;
+ qcom,qpnp-ibb-switching-clock-frequency = <1480>;
+ qcom,qpnp-ibb-limit-maximum-current = <1550>;
+ qcom,qpnp-ibb-debounce-cycle = <16>;
+ qcom,qpnp-ibb-limit-max-current-enable;
+ qcom,qpnp-ibb-ps-enable;
+ };
+
+ lab_regulator: qcom,lab@de00 {
+ reg = <0xde00 0x100>;
+ reg-names = "lab";
+ regulator-name = "lab_reg";
+
+ regulator-min-microvolt = <4600000>;
+ regulator-max-microvolt = <6000000>;
+
+ qcom,qpnp-lab-min-voltage = <4600000>;
+ qcom,qpnp-lab-step-size = <100000>;
+ qcom,qpnp-lab-slew-rate = <5000>;
+ qcom,qpnp-lab-use-default-voltage;
+ qcom,qpnp-lab-init-voltage = <5500000>;
+ qcom,qpnp-lab-init-amoled-voltage = <4600000>;
+ qcom,qpnp-lab-init-lcd-voltage = <5500000>;
+
+ qcom,qpnp-lab-soft-start = <800>;
+
+ qcom,qpnp-lab-full-pull-down;
+ qcom,qpnp-lab-pull-down-enable;
+ qcom,qpnp-lab-switching-clock-frequency =
+ <1600>;
+ qcom,qpnp-lab-limit-maximum-current = <800>;
+ qcom,qpnp-lab-limit-max-current-enable;
+ qcom,qpnp-lab-ps-threshold = <20>;
+ qcom,qpnp-lab-ps-enable;
+ qcom,qpnp-lab-nfet-size = <100>;
+ qcom,qpnp-lab-pfet-size = <100>;
+ qcom,qpnp-lab-max-precharge-time = <300>;
+ };
+ };
+
+ pmi8994_wled: 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";
+ interrupts = <0x3 0xd8 0x2>;
+ interrupt-names = "sc-irq";
+ 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 = <9600>;
+ qcom,dim-mode = "hybrid";
+ qcom,hyb-thres = <625>;
+ qcom,sync-dly-us = <800>;
+ qcom,fs-curr-ua = <25000>;
+ qcom,cons-sync-write-delay-us = <1000>;
+ qcom,en-phase-stag;
+ qcom,led-strings-list = [00 01 02 03];
+ qcom,en-ext-pfet-sc-pro;
+ };
+
+ 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";
+ vcc_pon-supply = <&pon_perph_reg>;
+ 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,en-brake;
+ qcom,brake-pattern = [03 03 00 00];
+ 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,lra-high-z = "opt1";
+ qcom,lra-auto-res-mode = "qwd";
+ qcom,lra-res-cal-period = <4>;
+ };
+
+ qcom,leds@d000 {
+ compatible = "qcom,leds-qpnp";
+ reg = <0xd000 0x100>;
+ label = "rgb";
+ status = "okay";
+
+ red_led: qcom,rgb_0 {
+ label = "rgb";
+ qcom,id = <3>;
+ qcom,mode = "pwm";
+ pwms = <&pmi8994_pwm_3 0 0>;
+ qcom,pwm-us = <1000>;
+ qcom,max-current = <12>;
+ qcom,default-state = "off";
+ linux,name = "red";
+ linux,default-trigger =
+ "battery-charging";
+ };
+
+ green_led: qcom,rgb_1 {
+ label = "rgb";
+ qcom,id = <4>;
+ qcom,mode = "pwm";
+ pwms = <&pmi8994_pwm_2 0 0>;
+ qcom,pwm-us = <1000>;
+ qcom,max-current = <12>;
+ qcom,default-state = "off";
+ linux,name = "green";
+ linux,default-trigger = "battery-full";
+ };
+
+ blue_led: qcom,rgb_2 {
+ label = "rgb";
+ qcom,id = <5>;
+ qcom,mode = "pwm";
+ pwms = <&pmi8994_pwm_1 0 0>;
+ qcom,pwm-us = <1000>;
+ qcom,max-current = <12>;
+ qcom,default-state = "off";
+ linux,name = "blue";
+ linux,default-trigger = "boot-indication";
+ };
+ };
+
+ flash_led: 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 = <105>;
+ qcom,thermal-derate-rate = "5_PERCENT";
+ qcom,current-ramp-enabled;
+ qcom,ramp_up_step = "6P7_US";
+ qcom,ramp_dn_step = "6P7_US";
+ qcom,vph-pwr-droop-enabled;
+ qcom,vph-pwr-droop-threshold = <3000>;
+ qcom,vph-pwr-droop-debounce-time = <10>;
+ qcom,headroom-sense-ch0-enabled;
+ qcom,headroom-sense-ch1-enabled;
+ qcom,power-detect-enabled;
+
+ pmi8994_flash0: qcom,flash_0 {
+ label = "flash";
+ qcom,led-name = "led:flash_0";
+ qcom,default-led-trigger =
+ "flash0_trigger";
+ qcom,id = <0>;
+ qcom,duration = <1280>;
+ qcom,current = <625>;
+ qcom,max-current = <1000>;
+ };
+
+ pmi8994_flash1: qcom,flash_1 {
+ label = "flash";
+ qcom,led-name = "led:flash_1";
+ qcom,default-led-trigger =
+ "flash1_trigger";
+ qcom,id = <1>;
+ qcom,duration = <1280>;
+ qcom,current = <625>;
+ qcom,max-current = <1000>;
+ };
+
+ pmi8994_torch0: qcom,torch_0 {
+ label = "torch";
+ qcom,led-name = "led:torch_0";
+ qcom,default-led-trigger =
+ "torch0_trigger";
+ qcom,id = <0>;
+ qcom,current = <120>;
+ qcom,max-current = <200>;
+ };
+
+ pmi8994_torch1: qcom,torch_1 {
+ label = "torch";
+ qcom,led-name = "led:torch_1";
+ qcom,default-led-trigger =
+ "torch1_trigger";
+ qcom,id = <1>;
+ qcom,current = <120>;
+ qcom,max-current = <200>;
+ };
+
+ pmi8994_switch: qcom,switch {
+ label = "switch";
+ qcom,led-name = "led:switch";
+ qcom,default-led-trigger =
+ "switch_trigger";
+ qcom,id = <2>;
+ qcom,current = <625>;
+ qcom,max-current = <1000>;
+ qcom,duration = <1280>;
+ reg0 {
+ regulator-name =
+ "pmi8994_boostbypass";
+ max-voltage = <3600000>;
+ };
+ reg1 {
+ regulator-name = "pon_spare_reg";
+ };
+ };
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-pmi8996.dtsi b/arch/arm64/boot/dts/qcom/msm-pmi8996.dtsi
new file mode 100644
index 000000000000..6f73374969d9
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-pmi8996.dtsi
@@ -0,0 +1,32 @@
+/* Copyright (c) 2015, 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.
+ */
+
+/*
+ * As a general rule, only properties which override PMI8994 should be placed
+ * inside this file.
+ */
+
+/ {
+ qcom,pmic-id = <0x20009 0x10013 0x0 0x0>;
+};
+
+&ibb_regulator {
+ qcom,qpnp-ibb-discharge-resistor = <300>;
+};
+
+&spmi_bus {
+ qcom,pmi8994@2 {
+ bcl@4200 {
+ qcom,inhibit-derating-ua = <0>;
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-pmk8001.dtsi b/arch/arm64/boot/dts/qcom/msm-pmk8001.dtsi
new file mode 100644
index 000000000000..569257047ca7
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-pmk8001.dtsi
@@ -0,0 +1,90 @@
+/* Copyright (c) 2015, 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,pmk8001@6 {
+ spmi-slave-container;
+ reg = <0x6>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ pmk8001_revid: qcom,revid@100 {
+ compatible = "qcom,qpnp-revid";
+ reg = <0x100 0x100>;
+ };
+
+ qcom,power-on@800 {
+ compatible = "qcom,qpnp-power-on";
+ reg = <0x800 0x100>;
+ qcom,secondary-pon-reset;
+ status = "disabled";
+ };
+
+ pmk8001_gpios: gpios {
+ spmi-dev-container;
+ compatible = "qcom,qpnp-pin";
+ gpio-controller;
+ #gpio-cells = <2>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ label = "pmk8001-gpio";
+
+ gpio@c000 {
+ reg = <0xc000 0x100>;
+ qcom,pin-num = <1>;
+ status = "disabled";
+ };
+
+ gpio@c100 {
+ reg = <0xc100 0x100>;
+ qcom,pin-num = <2>;
+ status = "disabled";
+ };
+
+ gpio@c200 {
+ reg = <0xc200 0x100>;
+ qcom,pin-num = <3>;
+ status = "disabled";
+ };
+
+ gpio@c300 {
+ reg = <0xc300 0x100>;
+ qcom,pin-num = <4>;
+ status = "disabled";
+ };
+ };
+
+ qcom,pmk8001_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,pmk8001_rtc_rw@6000 {
+ reg = <0x6000 0x100>;
+ };
+ qcom,pmk8001_rtc_alarm@6100 {
+ reg = <0x6100 0x100>;
+ interrupts = <0x6 0x61 0x1>;
+ };
+ };
+ };
+
+ qcom,pmk8001@7 {
+ spmi-slave-container;
+ reg = <0x7>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm-rdbg.dtsi b/arch/arm64/boot/dts/qcom/msm-rdbg.dtsi
new file mode 100644
index 000000000000..d0c91f9e72ae
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm-rdbg.dtsi
@@ -0,0 +1,75 @@
+/* Copyright (c) 2015, 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 {
+ smp2pgpio_rdbg_2_in: qcom,smp2pgpio-rdbg-2-in {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "rdbg";
+ qcom,remote-pid = <2>;
+ qcom,is-inbound;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_client_rdbg_2_in {
+ compatible = "qcom,smp2pgpio_client_rdbg_2_in";
+ gpios = <&smp2pgpio_rdbg_2_in 0 0>;
+ };
+
+ smp2pgpio_rdbg_2_out: qcom,smp2pgpio-rdbg-2-out {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "rdbg";
+ qcom,remote-pid = <2>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_client_rdbg_2_out {
+ compatible = "qcom,smp2pgpio_client_rdbg_2_out";
+ gpios = <&smp2pgpio_rdbg_2_out 0 0>;
+ };
+
+ smp2pgpio_rdbg_1_in: qcom,smp2pgpio-rdbg-1-in {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "rdbg";
+ qcom,remote-pid = <1>;
+ qcom,is-inbound;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_client_rdbg_1_in {
+ compatible = "qcom,smp2pgpio_client_rdbg_1_in";
+ gpios = <&smp2pgpio_rdbg_1_in 0 0>;
+ };
+
+ smp2pgpio_rdbg_1_out: qcom,smp2pgpio-rdbg-1-out {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "rdbg";
+ qcom,remote-pid = <1>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_client_rdbg_1_out {
+ compatible = "qcom,smp2pgpio_client_rdbg_1_out";
+ gpios = <&smp2pgpio_rdbg_1_out 0 0>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-agave-adp.dtsi b/arch/arm64/boot/dts/qcom/msm8996-agave-adp.dtsi
new file mode 100644
index 000000000000..5f326f5225d4
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-agave-adp.dtsi
@@ -0,0 +1,885 @@
+/* Copyright (c) 2015, 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 "msm8996-pinctrl.dtsi"
+#include "msm8996-camera-sensor-adp.dtsi"
+#include "msm8996-wsa881x.dtsi"
+
+/ {
+ bluetooth: bt_qca6174 {
+ compatible = "qca,qca6174";
+ qca,bt-reset-gpio = <&pm8994_gpios 19 0>; /* BT_EN */
+ qca,bt-vdd-core-supply = <&pm8994_s3>;
+ qca,bt-vdd-pa-supply = <&rome_vreg>;
+ qca,bt-vdd-io-supply = <&pm8994_s4>;
+ qca,bt-vdd-xtal-supply = <&pm8994_l30>;
+ qca,bt-chip-pwd-voltage-level = <1300000 1300000>;
+ qca,bt-vdd-io-voltage-level = <1800000 1800000>;
+ qca,bt-vdd-xtal-voltage-level = <1800000 1800000>;
+ };
+};
+
+&ufs_ice {
+ status = "ok";
+};
+
+&sdcc1_ice {
+ status = "ok";
+};
+
+&ufsphy1 {
+ status = "ok";
+};
+
+&ufs1 {
+ status = "ok";
+};
+
+&uartblsp2dm1 {
+ status = "ok";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart_console_active>;
+};
+
+&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 = <110 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,clk-rates = <400000 20000000 25000000 50000000
+ 96000000 192000000 384000000>;
+ qcom,ice-clk-rates = <300000000 150000000>;
+ qcom,nonremovable;
+ 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>;
+
+ 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>;
+
+ qcom,clk-rates = <400000 20000000 25000000
+ 50000000 100000000 200000000>;
+ qcom,bus-speed-mode = "SDR12", "SDR25", "SDR50", "DDR50", "SDR104";
+
+ cd-gpios = <&tlmm 95 0x1>;
+
+ 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>;
+ };
+
+ chan@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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>;
+ };
+};
+
+&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;
+ };
+
+ chan@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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>;
+ qcom,btm-channel-number = <0x88>;
+ qcom,thermal-node;
+ };
+};
+
+&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>;
+};
+
+#include "msm8996-mdss-panels.dtsi"
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&mdss_dsi {
+ hw-config = "single_dsi";
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_adv7533_720p>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
+
+ 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 = <3300000>;
+ qcom,supply-max-voltage = <3300000>;
+ 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>;
+ };
+ };
+};
+
+&mdss_dsi1 {
+ status = "disabled";
+};
+
+&dsi_dual_sharp_video {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,cont-splash-enabled;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_dual_nt35597_video {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,cont-splash-enabled;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_dual_nt35597_cmd {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,cont-splash-enabled;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+ qcom,partial-update-enabled;
+ qcom,panel-roi-alignment = <720 128 720 64 720 64>;
+};
+
+&dsi_nt35597_dsc_video {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,cont-splash-enabled;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_nt35597_dsc_cmd {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,cont-splash-enabled;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_dual_jdi_video {
+ pwms = <&pmi8994_pwm_4 0 0>;
+ pwm-names = "backlight";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pwm-pmi;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,5v-boost-gpio = <&pmi8994_gpios 8 0>;
+ qcom,cont-splash-enabled;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_dual_jdi_cmd {
+ pwms = <&pmi8994_pwm_4 0 0>;
+ pwm-names = "backlight";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pwm-pmi;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,5v-boost-gpio = <&pmi8994_gpios 8 0>;
+ qcom,cont-splash-enabled;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+ qcom,partial-update-enabled;
+ qcom,panel-roi-alignment = <4 4 2 2 20 20>;
+};
+
+&dsi_dual_jdi_4k_nofbc_video {
+ pwms = <&pmi8994_pwm_4 0 0>;
+ pwm-names = "backlight";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pwm-pmi;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,cont-splash-enabled;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+/{
+ mtp_batterydata: qcom,battery-data {
+ qcom,batt-id-range-pct = <15>;
+ #include "batterydata-itech-3000mah.dtsi"
+ };
+};
+
+&pm8994_mpps {
+ 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 */
+ status = "okay";
+ };
+
+ 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>;
+ status = "okay";
+ };
+};
+
+&soc {
+ i2c@75ba000 {
+ synaptics@20 {
+ compatible = "synaptics,dsx";
+ reg = <0x20>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <125 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 = <&tlmm 89 0x00>;
+ synaptics,irq-gpio = <&tlmm 125 0x2008>;
+ synaptics,disable-gpios;
+ synaptics,fw-name = "PR1702898-s3528t_00350002.img";
+ /* Underlying clocks used by secure touch */
+ clock-names = "iface_clk", "core_clk";
+ clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp2_qup6_i2c_apps_clk>;
+ };
+ };
+
+ i2c@75b6000 { /* BLSP8 */
+ /* ADV7533 configuration */
+ adv7533@3d {
+ compatible = "adv7533";
+ instance_id = <0>;
+ reg = <0x3d>;
+ adi,video-mode = <3>; /* 3 = 1080p */
+ adi,main-addr = <0x3D>;
+ adi,cec-dsi-addr = <0x3E>;
+ adi,enable-audio;
+ pinctrl-names = "pmx_adv7533_active",
+ "pmx_adv7533_suspend";
+ pinctrl-0 = <&adv7533_0_int_active
+ &adv7533_0_hpd_int_active
+ &adv7533_0_switch_active>;
+ pinctrl-1 = <&adv7533_0_int_suspend
+ &adv7533_0_hpd_int_suspend
+ &adv7533_0_switch_suspend>;
+ adi,irq-gpio = <&tlmm 106 0x2002>;
+ adi,hpd-irq-gpio = <&tlmm 106 0x2003>;
+ adi,switch-gpio = <&tlmm 105 0x1>;
+ };
+
+ adv7533@39 {
+ compatible = "adv7533";
+ instance_id = <1>;
+ reg = <0x39>;
+ adi,video-mode = <3>; /* 3 = 1080p */
+ adi,main-addr = <0x39>;
+ adi,cec-dsi-addr = <0x3C>;
+ adi,enable-audio;
+ pinctrl-names = "pmx_adv7533_active",
+ "pmx_adv7533_suspend";
+ pinctrl-0 = <&adv7533_1_int_active
+ &adv7533_1_hpd_int_active
+ &adv7533_1_switch_active>;
+ pinctrl-1 = <&adv7533_1_int_suspend
+ &adv7533_1_hpd_int_suspend
+ &adv7533_1_switch_suspend>;
+ adi,irq-gpio = <&tlmm 108 0x2002>;
+ adi,hpd-irq-gpio = <&tlmm 106 0x2003>;
+ adi,switch-gpio = <&tlmm 107 0x0>;
+ };
+ };
+
+ 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>;
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+
+ vol_up {
+ label = "volume_up";
+ gpios = <&pm8994_gpios 2 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-9335 {
+ status = "disabled";
+ };
+
+ sound-auto {
+ compatible = "qcom,msm8996-asoc-snd-auto";
+ qcom,model = "msm8996-auto-snd-card";
+
+ asoc-platform = <&pcm0>, <&pcm1>, <&pcm2>, <&voip>, <&voice>,
+ <&loopback>, <&compress>, <&hostless>,
+ <&afe>, <&lsm>, <&routing>, <&cpe>, <&compr>;
+ asoc-platform-names = "msm-pcm-dsp.0", "msm-pcm-dsp.1",
+ "msm-pcm-dsp.2", "msm-voip-dsp",
+ "msm-pcm-voice", "msm-pcm-loopback",
+ "msm-compress-dsp", "msm-pcm-hostless",
+ "msm-pcm-afe", "msm-lsm-client",
+ "msm-pcm-routing", "msm-cpe-lsm",
+ "msm-compr-dsp";
+ asoc-cpu = <&dai_pri_auxpcm>, <&dai_sec_auxpcm>, <&dai_hdmi>,
+ <&dai_mi2s>, <&dai_mi2s_quat>,
+ <&afe_pcm_rx>, <&afe_pcm_tx>,
+ <&afe_proxy_rx>, <&afe_proxy_tx>,
+ <&incall_record_rx>, <&incall_record_tx>,
+ <&incall_music_rx>, <&incall_music2_rx>;
+ asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2",
+ "msm-dai-q6-hdmi.8",
+ "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3",
+ "msm-dai-q6-dev.224", "msm-dai-q6-dev.225",
+ "msm-dai-q6-dev.241", "msm-dai-q6-dev.240",
+ "msm-dai-q6-dev.32771", "msm-dai-q6-dev.32772",
+ "msm-dai-q6-dev.32773", "msm-dai-q6-dev.32770";
+ asoc-codec = <&stub_codec>;
+ asoc-codec-names = "msm-stub-codec.1";
+ };
+
+ usb_detect {
+ compatible = "qcom,gpio-usbdetect";
+ interrupt-parent = <&spmi_bus>;
+ interrupts = <0x0 0xd0 0x0>; /* PM8994 GPIO17 */
+ interrupt-names = "vbus_det_irq";
+ };
+};
+
+&pm8994_gpios {
+ gpio@c600 { /* GPIO 7 - NFC DWL REQ */
+ qcom,mode = <1>;
+ qcom,output-type = <0>;
+ qcom,pull = <5>;
+ qcom,vin-sel = <2>;
+ qcom,out-strength = <3>;
+ qcom,src-sel = <0>;
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+
+ gpio@c700 { /* GPIO 8 - WLAN_EN */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c800 { /* GPIO 9 - Rome 3.3V control */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* MOS 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 */
+ status = "okay";
+ };
+
+ gpio@c900 { /* GPIO 10 - NFC CLK _REQ*/
+ qcom,mode = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+
+ gpio@cd00 { /* GPIO 14 - lcd_bklt_reg_en */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,invert = <1>; /* output hight initially */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,out-strength = <1>; /* Low drive strength */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ status = "okay";
+ };
+ gpio@c100 { /* GPIO 2 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c300 { /* GPIO 4 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c400 { /* GPIO 5 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@ca00 { /* GPIO 11 - USB enb1 (otg switch) */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,master-en = <1>; /* Enable GPIO */
+ status = "okay";
+ };
+
+ gpio@cc00 { /* GPIO 13 - HPH_EN0 */
+ 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>;
+ status = "okay";
+ };
+
+ 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>;
+ status = "okay";
+ };
+
+ gpio@d000 { /* GPIO 17 - USB1 VBUS detect */
+ qcom,mode = <0>; /* Digital Input*/
+ qcom,pull = <5>; /* No pull */
+ qcom,vin-sel = <2>; /* 1.8 V */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,master-en = <1>; /* Enable GPIO */
+ status = "okay";
+ };
+
+ gpio@d100 { /* GPIO 18 - Rome Sleep Clock */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@d200 { /* GPIO 19 - Rome BT Reset */
+ 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 */
+ status = "okay";
+ };
+};
+
+&usb2s {
+ status = "ok";
+ dwc3@7600000 {
+ dr_mode = "host";
+ };
+};
+
+&usb3 {
+ interrupt-parent = <&usb3>;
+ interrupts = <0 1 2>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0x0 0xffffffff>;
+ interrupt-map = <0x0 0 &intc 0 133 0
+ 0x0 1 &intc 0 180 0
+ 0x0 2 &spmi_bus 0x0 0x0 0x9 0x0>;
+ interrupt-names = "hs_phy_irq", "pwr_event_irq", "pmic_id_irq";
+
+ vbus_dwc3-supply = <&usb_otg_switch>;
+ vdda33-supply = <&pm8994_l24>;
+ vdda18-supply = <&pm8994_l12>;
+};
+
+&blsp1_uart2 {
+ status = "ok";
+};
+
+&i2c_6 {
+ at24@51 {
+ compatible = "atmel,24c32";
+ reg = <0x51>;
+ };
+};
+
+&i2c_7 {
+ 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>;
+ va-supply = <&rome_vreg>;
+ silabs,va-supply-voltage = <3300000 3300000>;
+ pinctrl-names = "pmx_fm_active","pmx_fm_suspend";
+ pinctrl-0 = <&fm_int_active &fm_status_int_active
+ &fm_rst_active>;
+ pinctrl-1 = <&fm_int_suspend &fm_status_int_suspend
+ &fm_rst_suspend>;
+ silabs,reset-gpio = <&tlmm 39 0>;
+ silabs,int-gpio = <&tlmm 38 0>;
+ silabs,status-gpio = <&tlmm 78 0>;
+ #address-cells = <0>;
+ interrupts = <0 1>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0xffffffff>;
+ interrupt-map = <
+ 0 &tlmm 38 2
+ 1 &tlmm 78 1
+ >;
+ interrupt-names = "silabs_fm_int", "silabs_fm_status_int";
+ };
+};
+
+&i2c_8 { /* BLSP2 QUP2 */
+ nq@28 {
+ compatible = "qcom,nq-nci";
+ reg = <0x28>;
+ qcom,nq-irq = <&tlmm 9 0x00>;
+ qcom,nq-ven = <&tlmm 12 0x00>;
+ qcom,nq-firm = <&pm8994_gpios 7 0x00>;
+ qcom,nq-clkreq = <&pm8994_gpios 10 0x00>;
+ interrupt-parent = <&tlmm>;
+ qcom,clk-src = "BBCLK2";
+ interrupts = <9 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>;
+ clocks = <&clock_gcc clk_bb_clk2_pin>;
+ clock-names = "ref_clk";
+ };
+};
+
+&dsi_dual_jdi_video {
+ /delete-property/ pwms;
+ /delete-property/ qcom,5v-boost-gpio;
+};
+
+&dsi_dual_jdi_cmd {
+ /delete-property/ pwms;
+ /delete-property/ qcom,5v-boost-gpio;
+};
+
+&dsi_dual_jdi_4k_nofbc_video {
+ /delete-property/ pwms;
+};
+
+&soc {
+ sound-9335 {
+ /delete-property/ qcom,hph-en1-gpio;
+ };
+};
+
+/delete-node/ &led_flash0;
+
+&mdss_dsi0 {
+ /delete-property/ lab-supply;
+ /delete-property/ ibb-supply;
+};
+
+&mdss_dsi1 {
+ /delete-property/ lab-supply;
+ /delete-property/ ibb-supply;
+};
+
+&cci {
+ qcom,camera@0 {
+ /delete-property/ qcom,led-flash-src;
+ };
+
+ qcom,camera@1 {
+ /delete-property/ cam_vana-supply;
+ };
+};
+
+&usb_otg_switch {
+ gpio = <&pm8994_gpios 11 0>;
+ enable-active-high;
+ status = "ok";
+ /delete-property/ vin-supply;
+};
+
+&wsa881x_211 {
+ /delete-property/ qcom,spkr-sd-n-gpio;
+};
+
+&wsa881x_212 {
+ /delete-property/ qcom,spkr-sd-n-gpio;
+};
+
+&wsa881x_213 {
+ /delete-property/ qcom,spkr-sd-n-gpio;
+};
+
+&wsa881x_214 {
+ /delete-property/ qcom,spkr-sd-n-gpio;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-bus.dtsi b/arch/arm64/boot/dts/qcom/msm8996-bus.dtsi
new file mode 100644
index 000000000000..a93d3aa2c06f
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-bus.dtsi
@@ -0,0 +1,1813 @@
+/* Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
+ *
+ * This program is Mree 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-ids.h>
+
+&soc {
+ ad_hoc_bus: ad-hoc-bus {
+ /* Version = 16 */
+ compatible = "qcom,msm-bus-device";
+ reg = <0x520000 0x40000>,
+ <0x400000 0x62000>,
+ <0x5C0000 0x3000>,
+ <0x500000 0x1000>,
+ <0x5A0000 0x40000>,
+ <0x5A0000 0x40000>,
+ <0x540000 0x9000>,
+ <0x560000 0x7000>,
+ <0x580000 0xA000>;
+ reg-names = "snoc-base", "bimc-base", "pnoc-base", "cnoc-base",
+ "mmnoc-base", "mmnoc-ahb-base", "a0noc-base",
+ "a1noc-base", "a2noc-base";
+
+ /*Buses*/
+ fab_a0noc: fab-a0noc {
+ cell-id = <MSM_BUS_FAB_A0_NOC>;
+ label = "fab-a0noc";
+ qcom,fab-dev;
+ qcom,base-name = "a0noc-base";
+ qcom,bus-type = <1>;
+ qcom,qos-off = <4096>;
+ qcom,base-offset = <12288>;
+ qcom,enable-only-clk;
+ clock-names = "bus_clk", "bus_a_clk";
+ clocks = <&clock_gcc clk_gcc_aggre0_snoc_axi_clk>,
+ <&clock_gcc clk_gcc_aggre0_snoc_axi_clk>;
+ bus-gdsc-supply = <&gdsc_aggre0_noc>;
+ bus-a-gdsc-supply = <&gdsc_aggre0_noc>;
+
+ coresight-id = <206>;
+ coresight-name = "coresight-a0noc";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in1>;
+ coresight-child-ports = <7>;
+ aggre0-snoc-axi-no-rate-supply =<&gdsc_aggre0_noc>;
+ qcom,node-qos-clks {
+ clock-names = "aggre0-snoc-axi-no-rate",
+ "aggre0-cnoc-ahb-no-rate",
+ "aggre0-noc-mpu-cfg-no-rate";
+ clocks =
+ <&clock_gcc clk_gcc_aggre0_snoc_axi_clk>,
+ <&clock_gcc clk_gcc_aggre0_cnoc_ahb_clk>,
+ <&clock_gcc clk_gcc_aggre0_noc_mpu_cfg_ahb_clk>;
+ };
+ };
+
+ fab_a1noc: fab-a1noc {
+ cell-id = <MSM_BUS_FAB_A1_NOC>;
+ label = "fab-a1noc";
+ qcom,fab-dev;
+ qcom,base-name = "a1noc-base";
+ qcom,bus-type = <1>;
+ qcom,qos-off = <4096>;
+ qcom,base-offset = <8192>;
+ clock-names = "bus_clk", "bus_a_clk";
+ clocks = <&clock_gcc clk_aggre1_noc_clk>,
+ <&clock_gcc clk_aggre1_noc_a_clk>;
+ coresight-id = <205>;
+ coresight-name = "coresight-a1noc";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <6>;
+ };
+
+ fab_a2noc: fab-a2noc {
+ cell-id = <MSM_BUS_FAB_A2_NOC>;
+ label = "fab-a2noc";
+ qcom,fab-dev;
+ qcom,base-name = "a2noc-base";
+ qcom,bus-type = <1>;
+ qcom,qos-off = <4096>;
+ qcom,base-offset = <12288>;
+ clock-names = "bus_clk", "bus_a_clk";
+ clocks = <&clock_gcc clk_aggre2_noc_clk>,
+ <&clock_gcc clk_aggre2_noc_a_clk>;
+ coresight-id = <204>;
+ coresight-name = "coresight-a2noc";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in1>;
+ coresight-child-ports = <5>;
+ qcom,node-qos-clks {
+ clock-names = "clk-aggre2-noc-clk-no-rate",
+ "clk-gcc-ufs-axi-clk",
+ "clk-aggre2-ufs-axi-clk-no-rate";
+ clocks = <&clock_gcc clk_aggre2_noc_clk>,
+ <&clock_gcc clk_gcc_ufs_axi_clk>,
+ <&clock_gcc clk_gcc_aggre2_ufs_axi_clk>;
+ };
+ };
+
+ fab_bimc: fab-bimc {
+ cell-id = <MSM_BUS_FAB_BIMC>;
+ label = "fab-bimc";
+ qcom,fab-dev;
+ qcom,base-name = "bimc-base";
+ qcom,base-offset = <0x8000>;
+ qcom,qos-off = <0x4000>;
+ qcom,util-fact = <154>;
+ qcom,bus-type = <2>;
+ clock-names = "bus_clk", "bus_a_clk";
+ clocks = <&clock_gcc clk_bimc_msmbus_clk>,
+ <&clock_gcc clk_bimc_msmbus_a_clk>;
+ coresight-id = <203>;
+ coresight-name = "coresight-bimc";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in1>;
+ coresight-child-ports = <4>;
+ };
+
+ fab_cnoc: fab-cnoc {
+ cell-id = <MSM_BUS_FAB_CONFIG_NOC>;
+ label = "fab-cnoc";
+ qcom,fab-dev;
+ qcom,base-name = "cnoc-base";
+ qcom,bypass-qos-prg;
+ qcom,bus-type = <1>;
+ clock-names = "bus_clk", "bus_a_clk";
+ clocks = <&clock_gcc clk_cnoc_msmbus_clk>,
+ <&clock_gcc clk_cnoc_msmbus_a_clk>;
+ };
+
+ fab_mnoc: fab-mnoc {
+ cell-id = <MSM_BUS_FAB_MMSS_NOC>;
+ label = "fab-mnoc";
+ qcom,fab-dev;
+ qcom,base-name = "mmnoc-base";
+ qcom,qos-off = <4096>;
+ qcom,base-offset = <16384>;
+ qcom,bus-type = <1>;
+ qcom,util-fact = <154>;
+ clock-names = "bus_clk", "bus_a_clk";
+ clocks = <&clock_gcc clk_mmssnoc_axi_clk>,
+ <&clock_gcc clk_mmssnoc_axi_a_clk>;
+ coresight-id = <202>;
+ coresight-name = "coresight-mnoc";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in1>;
+ coresight-child-ports = <0>;
+ mmagic-ahb-no-rate-supply = <&gdsc_mmagic_bimc>;
+ mmagic-mdss-axi-no-rate-supply =
+ <&gdsc_mmagic_mdss>;
+ mmagic-camss-axi-no-rate-supply =
+ <&gdsc_mmagic_camss>;
+ mmagic-video-axi-no-rate-supply =
+ <&gdsc_mmagic_video>;
+ qcom,node-qos-clks {
+ clock-names = "mmagic-ahb-no-rate",
+ "mmagic-cfg-ahb-no-rate",
+ "mmagic-mdss-axi-no-rate",
+ "mmagic-mdss-cfg-noc-ahb-no-rate",
+ "mmagic-camss-axi-no-rate",
+ "mmagic-camss-cfg-noc-ahb-no-rate",
+ "mmagic-video-axi-no-rate",
+ "mmagic-video-cfg-noc-ahb-no-rate";
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_mmss_mmagic_cfg_ahb_clk>,
+ <&clock_mmss clk_mmagic_mdss_axi_clk>,
+ <&clock_mmss clk_mmagic_mdss_noc_cfg_ahb_clk>,
+ <&clock_mmss clk_mmagic_camss_axi_clk>,
+ <&clock_mmss clk_mmagic_camss_noc_cfg_ahb_clk>,
+ <&clock_mmss clk_mmagic_video_axi_clk>,
+ <&clock_mmss clk_mmagic_video_noc_cfg_ahb_clk>;
+ };
+ };
+
+ fab_mnoc_ahb: fab-mnoc-ahb {
+ cell-id = <MSM_BUS_FAB_MMSS_AHB>;
+ label = "fab-mnoc-ahb";
+ qcom,fab-dev;
+ qcom,base-name = "mmnoc-ahb-base";
+ qcom,bypass-qos-prg;
+ qcom,setrate-only-clk;
+ qcom,bus-type = <1>;
+ clock-names = "bus_clk", "bus_a_clk";
+ clocks = <&clock_mmss clk_ahb_clk_src>,
+ <&clock_mmss clk_ahb_clk_src>;
+ bus-gdsc-supply = <&gdsc_mmagic_bimc>;
+ bus-a-gdsc-supply = <&gdsc_mmagic_bimc>;
+ };
+
+ fab_pnoc: fab-pnoc {
+ cell-id = <MSM_BUS_FAB_PERIPH_NOC>;
+ label = "fab-pnoc";
+ qcom,fab-dev;
+ qcom,base-name = "pnoc-base";
+ qcom,bypass-qos-prg;
+ qcom,bus-type = <1>;
+ clock-names = "bus_clk", "bus_a_clk";
+ clocks = <&clock_gcc clk_pnoc_msmbus_clk>,
+ <&clock_gcc clk_pnoc_msmbus_a_clk>;
+ coresight-id = <201>;
+ coresight-name = "coresight-pnoc";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in1>;
+ coresight-child-ports = <2>;
+ };
+
+ fab_snoc: fab-snoc {
+ cell-id = <MSM_BUS_FAB_SYS_NOC>;
+ label = "fab-snoc";
+ qcom,fab-dev;
+ qcom,base-name = "snoc-base";
+ qcom,bus-type = <1>;
+ qcom,qos-off = <4096>;
+ qcom,base-offset = <16384>;
+ clock-names = "bus_clk", "bus_a_clk";
+ clocks = <&clock_gcc clk_snoc_msmbus_clk>,
+ <&clock_gcc clk_snoc_msmbus_a_clk>;
+ coresight-id = <200>;
+ coresight-name = "coresight-snoc";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <5>;
+ };
+
+ /*Masters*/
+
+ mas_pcie_0: mas-pcie-0 {
+ cell-id = <MSM_BUS_MASTER_PCIE>;
+ label = "mas-pcie-0";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,qport = <0>;
+ qcom,qos-mode = "fixed";
+ qcom,connections = <&slv_a0noc_snoc>;
+ qcom,prio1 = <1>;
+ qcom,prio0 = <1>;
+ qcom,bus-dev = <&fab_a0noc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_PCIE_0>;
+ };
+
+ mas_pcie_1: mas-pcie-1 {
+ cell-id = <MSM_BUS_MASTER_PCIE_1>;
+ label = "mas-pcie-1";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,qport = <1>;
+ qcom,qos-mode = "fixed";
+ qcom,connections = <&slv_a0noc_snoc>;
+ qcom,prio1 = <1>;
+ qcom,prio0 = <1>;
+ qcom,bus-dev = <&fab_a0noc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_PCIE_1>;
+ };
+
+ mas_pcie_2: mas-pcie-2 {
+ cell-id = <MSM_BUS_MASTER_PCIE_2>;
+ label = "mas-pcie-2";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,qport = <2>;
+ qcom,qos-mode = "fixed";
+ qcom,connections = <&slv_a0noc_snoc>;
+ qcom,prio1 = <1>;
+ qcom,prio0 = <1>;
+ qcom,bus-dev = <&fab_a0noc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_PCIE_2>;
+ };
+
+ mas_cnoc_a1noc: mas-cnoc-a1noc {
+ cell-id = <MSM_BUS_CNOC_A1NOC_MAS>;
+ label = "mas-cnoc-a1noc";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,connections = <&slv_a1noc_snoc>;
+ qcom,bus-dev = <&fab_a1noc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_CNOC_A1NOC>;
+ };
+
+ mas_crypto_c0: mas-crypto-c0 {
+ cell-id = <MSM_BUS_MASTER_CRYPTO_CORE0>;
+ label = "mas-crypto-c0";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,qport = <0>;
+ qcom,qos-mode = "fixed";
+ qcom,connections = <&slv_a1noc_snoc>;
+ qcom,prio1 = <1>;
+ qcom,prio0 = <1>;
+ qcom,bus-dev = <&fab_a1noc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_CRYPTO_CORE0>;
+ };
+
+ mas_pnoc_a1noc: mas-pnoc-a1noc {
+ cell-id = <MSM_BUS_PNOC_A1NOC_MAS>;
+ label = "mas-pnoc-a1noc";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,qport = <1>;
+ qcom,qos-mode = "fixed";
+ qcom,connections = <&slv_a1noc_snoc>;
+ qcom,bus-dev = <&fab_a1noc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_PNOC_A1NOC>;
+ };
+
+ mas_usb3: mas-usb3 {
+ cell-id = <MSM_BUS_MASTER_USB3>;
+ label = "mas-usb3";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,qport = <3>;
+ qcom,qos-mode = "fixed";
+ qcom,connections = <&slv_a2noc_snoc>;
+ qcom,prio1 = <1>;
+ qcom,prio0 = <1>;
+ qcom,bus-dev = <&fab_a2noc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_USB3_0>;
+ };
+
+ mas_ipa: mas-ipa {
+ cell-id = <MSM_BUS_MASTER_IPA>;
+ label = "mas-ipa";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,qos-mode = "fixed";
+ qcom,connections = <&slv_a2noc_snoc>;
+ qcom,bus-dev = <&fab_a2noc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_IPA>;
+ };
+
+ mas_ufs: mas-ufs {
+ cell-id = <MSM_BUS_MASTER_UFS>;
+ label = "mas-ufs";
+ qcom,buswidth = <8>;
+ qcom,qport = <2>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,qos-mode = "fixed";
+ qcom,connections = <&slv_a2noc_snoc>;
+ qcom,prio1 = <1>;
+ qcom,prio0 = <1>;
+ qcom,bus-dev = <&fab_a2noc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_UFS>;
+ };
+
+ mas_apps_proc: mas-apps-proc {
+ cell-id = <MSM_BUS_MASTER_AMPSS_M0>;
+ label = "mas-apps-proc";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <2>;
+ qcom,ap-owned;
+ qcom,qport = <0>;
+ qcom,qos-mode = "fixed";
+ qcom,connections = < &slv_bimc_snoc_1&slv_ebi &slv_bimc_snoc_0>;
+ qcom,prio-lvl = <0>;
+ qcom,prio-rd = <0>;
+ qcom,prio-wr = <0>;
+ qcom,bus-dev = <&fab_bimc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_APPSS_PROC>;
+ };
+
+ mas_oxili: mas-oxili {
+ cell-id = <MSM_BUS_MASTER_GRAPHICS_3D>;
+ label = "mas-oxili";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <2>;
+ qcom,ap-owned;
+ qcom,qport = <1>;
+ qcom,qos-mode = "bypass";
+ qcom,connections = < &slv_bimc_snoc_1 &slv_hmss_l3&slv_ebi
+ &slv_bimc_snoc_0>;
+ qcom,bus-dev = <&fab_bimc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_GFX3D>;
+ };
+
+ mas_mnoc_bimc: mas-mnoc-bimc {
+ cell-id = <MSM_BUS_MNOC_BIMC_MAS>;
+ label = "mas-mnoc-bimc";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <2>;
+ qcom,ap-owned;
+ qcom,qport = <2>;
+ qcom,qos-mode = "bypass";
+ qcom,connections = < &slv_bimc_snoc_1 &slv_hmss_l3&slv_ebi
+ &slv_bimc_snoc_0>;
+ qcom,bus-dev = <&fab_bimc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_MNOC_BIMC>;
+ };
+
+ mas_snoc_bimc: mas-snoc-bimc {
+ cell-id = <MSM_BUS_SNOC_BIMC_MAS>;
+ label = "mas-snoc-bimc";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <2>;
+ qcom,qos-mode = "bypass";
+ qcom,connections = < &slv_hmss_l3&slv_ebi>;
+ qcom,bus-dev = <&fab_bimc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_SNOC_BIMC>;
+ };
+
+ mas_snoc_cnoc: mas-snoc-cnoc {
+ cell-id = <MSM_BUS_SNOC_CNOC_MAS>;
+ label = "mas-snoc-cnoc";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,connections = <&slv_clk_ctl &slv_rbcpr_cx &slv_a2noc_smmu_cfg
+ &slv_a0noc_mpu_cfg &slv_message_ram
+ &slv_cnoc_mnoc_mmss_cfg &slv_pcie_0_cfg
+ &slv_tlmm &slv_mpm
+ &slv_a0noc_smmu_cfg &slv_ebi1_phy_cfg
+ &slv_bimc_cfg &slv_pimem_cfg
+ &slv_rbcpr_mx &slv_prng
+ &slv_pcie20_ahb2phy &slv_a2noc_mpu_cfg
+ &slv_qdss_cfg &slv_a2noc_cfg
+ &slv_a0noc_cfg &slv_ufs_cfg
+ &slv_crypto0_cfg &slv_pcie_1_cfg
+ &slv_snoc_cfg &slv_snoc_mpu_cfg
+ &slv_a1noc_mpu_cfg &slv_a1noc_smmu_cfg
+ &slv_pcie_2_cfg &slv_cnoc_mnoc_cfg
+ &slv_cpr_apu_cfg &slv_pmic_arb
+ &slv_imem_cfg &slv_a1noc_cfg
+ &slv_ssc_cfg &slv_tcsr
+ &slv_lpass_smmu_cfg &slv_dcc_cfg>;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_SNOC_CNOC>;
+ };
+
+ mas_qdss_dap: mas-qdss-dap {
+ cell-id = <MSM_BUS_MASTER_QDSS_DAP>;
+ label = "mas-qdss-dap";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,connections = < &slv_cpr_apu_cfg &slv_rbcpr_cx &slv_a2noc_smmu_cfg
+ &slv_a0noc_mpu_cfg &slv_message_ram
+ &slv_pcie_0_cfg &slv_tlmm
+ &slv_mpm &slv_a0noc_smmu_cfg
+ &slv_ebi1_phy_cfg &slv_bimc_cfg
+ &slv_pimem_cfg &slv_rbcpr_mx
+ &slv_clk_ctl &slv_prng
+ &slv_pcie20_ahb2phy &slv_a2noc_mpu_cfg
+ &slv_qdss_cfg &slv_a2noc_cfg
+ &slv_a0noc_cfg &slv_ufs_cfg
+ &slv_crypto0_cfg&slv_cnoc_a1noc
+ &slv_pcie_1_cfg &slv_snoc_cfg
+ &slv_snoc_mpu_cfg &slv_a1noc_mpu_cfg
+ &slv_a1noc_smmu_cfg &slv_pcie_2_cfg
+ &slv_cnoc_mnoc_cfg &slv_cnoc_mnoc_mmss_cfg
+ &slv_pmic_arb &slv_imem_cfg
+ &slv_a1noc_cfg &slv_ssc_cfg
+ &slv_tcsr &slv_lpass_smmu_cfg
+ &slv_dcc_cfg>;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_QDSS_DAP>;
+ };
+
+ mas_cnoc_mnoc_mmss_cfg: mas-cnoc-mnoc-mmss-cfg {
+ cell-id = <MSM_BUS_MASTER_CNOC_MNOC_MMSS_CFG>;
+ label = "mas-cnoc-mnoc-mmss-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,connections = <&slv_mmagic_cfg &slv_dsa_mpu_cfg &slv_mnoc_clocks_cfg
+ &slv_camera_throttle_cfg &slv_venus_cfg
+ &slv_smmu_vfe_cfg &slv_misc_cfg
+ &slv_smmu_cpp_cfg &slv_oxili_cfg
+ &slv_display_throttle_cfg &slv_venus_throttle_cfg
+ &slv_camera_cfg &slv_display_cfg
+ &slv_cpr_cfg &slv_smmu_rot_cfg
+ &slv_dsa_cfg &slv_smmu_venus_cfg
+ &slv_vmem_cfg &slv_smmu_jpeg_cfg
+ &slv_smmu_mdp_cfg &slv_mnoc_mpu_cfg>;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,mas-rpm-id = <ICBID_MASTER_CNOC_MNOC_MMSS_CFG>;
+ };
+
+ mas_cnoc_mnoc_cfg: mas-cnoc-mnoc-cfg {
+ cell-id = <MSM_BUS_MASTER_CNOC_MNOC_CFG>;
+ label = "mas-cnoc-mnoc-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,connections = <&slv_srvc_mnoc>;
+ qcom,bus-dev = <&fab_mnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_CNOC_MNOC_CFG>;
+ };
+
+ mas_cpp: mas-cpp {
+ cell-id = <MSM_BUS_MASTER_CPP>;
+ label = "mas-cpp";
+ qcom,buswidth = <32>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,qport = <5>;
+ qcom,qos-mode = "bypass";
+ qcom,connections = <&slv_mnoc_bimc>;
+ qcom,bus-dev = <&fab_mnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_CPP>;
+ };
+
+ mas_jpeg: mas-jpeg {
+ cell-id = <MSM_BUS_MASTER_JPEG>;
+ label = "mas-jpeg";
+ qcom,buswidth = <32>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,qport = <7>;
+ qcom,qos-mode = "bypass";
+ qcom,connections = <&slv_mnoc_bimc>;
+ qcom,bus-dev = <&fab_mnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_JPEG>;
+ };
+
+ mas_mdp_p0: mas-mdp-p0 {
+ cell-id = <MSM_BUS_MASTER_MDP_PORT0>;
+ label = "mas-mdp-p0";
+ qcom,buswidth = <32>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,qport = <1>;
+ qcom,qos-mode = "bypass";
+ qcom,connections = <&slv_mnoc_bimc>;
+ qcom,bus-dev = <&fab_mnoc>;
+ qcom,vrail-comp = <25>;
+ qcom,mas-rpm-id = <ICBID_MASTER_MDP0>;
+ };
+
+ mas_mdp_p1: mas-mdp-p1 {
+ cell-id = <MSM_BUS_MASTER_MDP_PORT1>;
+ label = "mas-mdp-p1";
+ qcom,buswidth = <32>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,qport = <2>;
+ qcom,qos-mode = "bypass";
+ qcom,connections = <&slv_mnoc_bimc>;
+ qcom,bus-dev = <&fab_mnoc>;
+ qcom,vrail-comp = <25>;
+ qcom,mas-rpm-id = <ICBID_MASTER_MDP1>;
+ };
+
+ mas_rotator: mas-rotator {
+ cell-id = <MSM_BUS_MASTER_ROTATOR>;
+ label = "mas-rotator";
+ qcom,buswidth = <32>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,qport = <0>;
+ qcom,qos-mode = "bypass";
+ qcom,connections = <&slv_mnoc_bimc>;
+ qcom,bus-dev = <&fab_mnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_ROTATOR>;
+ };
+
+ mas_venus: mas-venus {
+ cell-id = <MSM_BUS_MASTER_VIDEO_P0>;
+ label = "mas-venus";
+ qcom,buswidth = <32>;
+ qcom,agg-ports = <2>;
+ qcom,ap-owned;
+ qcom,qport = <3 4>;
+ qcom,qos-mode = "bypass";
+ qcom,connections = <&slv_mnoc_bimc>;
+ qcom,bus-dev = <&fab_mnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_VIDEO>;
+ };
+
+ mas_vfe: mas-vfe {
+ cell-id = <MSM_BUS_MASTER_VFE>;
+ label = "mas-vfe";
+ qcom,buswidth = <32>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,qport = <6>;
+ qcom,qos-mode = "bypass";
+ qcom,connections = <&slv_mnoc_bimc>;
+ qcom,bus-dev = <&fab_mnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_VFE>;
+ };
+
+ mas_snoc_vmem: mas-snoc-vmem {
+ cell-id = <MSM_BUS_MASTER_SNOC_VMEM>;
+ label = "mas-snoc-vmem";
+ qcom,buswidth = <32>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,connections = <&slv_vmem>;
+ qcom,bus-dev = <&fab_mnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_SNOC_VMEM>;
+ };
+
+ mas_venus_vmem: mas-venus-vmem {
+ cell-id = <MSM_BUS_MASTER_VIDEO_P0_OCMEM>;
+ label = "mas-venus-vmem";
+ qcom,buswidth = <32>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,connections = <&slv_vmem>;
+ qcom,bus-dev = <&fab_mnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_VENUS_VMEM>;
+ };
+
+ mas_snoc_pnoc: mas-snoc-pnoc {
+ cell-id = <MSM_BUS_SNOC_PNOC_MAS>;
+ label = "mas-snoc-pnoc";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,connections = < &slv_blsp_1 &slv_blsp_2&slv_usb_hs
+ &slv_sdcc_1 &slv_sdcc_2
+ &slv_sdcc_4 &slv_tsif
+ &slv_pdm &slv_ahb2phy>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_SNOC_PNOC>;
+ };
+
+ mas_sdcc_1: mas-sdcc-1 {
+ cell-id = <MSM_BUS_MASTER_SDCC_1>;
+ label = "mas-sdcc-1";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,connections = <&slv_pnoc_a1noc>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_SDCC_1>;
+ };
+
+ mas_sdcc_2: mas-sdcc-2 {
+ cell-id = <MSM_BUS_MASTER_SDCC_2>;
+ label = "mas-sdcc-2";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,connections = <&slv_pnoc_a1noc>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_SDCC_2>;
+ };
+
+ mas_sdcc_4: mas-sdcc-4 {
+ cell-id = <MSM_BUS_MASTER_SDCC_4>;
+ label = "mas-sdcc-4";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,connections = <&slv_pnoc_a1noc>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_SDCC_4>;
+ };
+
+ mas_usb_hs: mas-usb-hs {
+ cell-id = <MSM_BUS_MASTER_USB_HS>;
+ label = "mas-usb-hs";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,connections = <&slv_pnoc_a1noc>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_USB_HS>;
+ };
+
+ mas_blsp_1: mas-blsp-1 {
+ cell-id = <MSM_BUS_MASTER_BLSP_1>;
+ label = "mas-blsp-1";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,connections = <&slv_pnoc_a1noc>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_BLSP_1>;
+ };
+
+ mas_blsp_2: mas-blsp-2 {
+ cell-id = <MSM_BUS_MASTER_BLSP_2>;
+ label = "mas-blsp-2";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,connections = <&slv_pnoc_a1noc>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_BLSP_2>;
+ };
+
+ mas_tsif: mas-tsif {
+ cell-id = <MSM_BUS_MASTER_TSIF>;
+ label = "mas-tsif";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,connections = <&slv_pnoc_a1noc>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_TSIF>;
+ };
+
+ mas_hmss: mas-hmss {
+ cell-id = <MSM_BUS_MASTER_HMSS>;
+ label = "mas-hmss";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,qport = <4>;
+ qcom,qos-mode = "fixed";
+ qcom,connections = < &slv_pimem &slv_imem&slv_snoc_bimc>;
+ qcom,prio1 = <1>;
+ qcom,prio0 = <1>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_HMSS>;
+ };
+
+ mas_qdss_bam: mas-qdss-bam {
+ cell-id = <MSM_BUS_MASTER_QDSS_BAM>;
+ label = "mas-qdss-bam";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,qport = <2>;
+ qcom,qos-mode = "fixed";
+ qcom,connections = < &slv_pimem&slv_usb3 &slv_imem
+ &slv_snoc_bimc &slv_snoc_pnoc>;
+ qcom,prio1 = <1>;
+ qcom,prio0 = <1>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_QDSS_BAM>;
+ };
+
+ mas_snoc_cfg: mas-snoc-cfg {
+ cell-id = <MSM_BUS_MASTER_SNOC_CFG>;
+ label = "mas-snoc-cfg";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,connections = <&slv_srvc_snoc>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_SNOC_CFG>;
+ };
+
+ mas_bimc_snoc_0: mas-bimc-snoc-0 {
+ cell-id = <MSM_BUS_BIMC_SNOC_MAS>;
+ label = "mas-bimc-snoc-0";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,connections = < &slv_snoc_vmem &slv_usb3 &slv_pimem
+ &slv_lpass &slv_hmss
+ &slv_snoc_cnoc &slv_snoc_pnoc
+ &slv_imem &slv_qdss_stm>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,ap-owned;
+ qcom,mas-rpm-id = <ICBID_MASTER_BIMC_SNOC>;
+ };
+
+ mas_bimc_snoc_1: mas-bimc-snoc-1 {
+ cell-id = <MSM_BUS_BIMC_SNOC_1_MAS>;
+ label = "mas-bimc-snoc-1";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,connections = < &slv_pcie_2 &slv_pcie_1&slv_pcie_0>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_BIMC_SNOC_1>;
+ };
+
+ mas_a0noc_snoc: mas-a0noc-snoc {
+ cell-id = <MSM_BUS_A0NOC_SNOC_MAS>;
+ label = "mas-a0noc-snoc";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,connections = < &slv_snoc_pnoc &slv_imem&slv_hmss
+ &slv_snoc_bimc &slv_pimem>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_A0NOC_SNOC>;
+ };
+
+ mas_a1noc_snoc: mas-a1noc-snoc {
+ cell-id = <MSM_BUS_A1NOC_SNOC_MAS>;
+ label = "mas-a1noc-snoc";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,connections = < &slv_snoc_vmem &slv_usb3 &slv_pcie_0
+ &slv_pimem &slv_pcie_2
+ &slv_lpass &slv_pcie_1
+ &slv_hmss &slv_snoc_bimc
+ &slv_snoc_cnoc &slv_snoc_pnoc
+ &slv_imem &slv_qdss_stm>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_A1NOC_SNOC>;
+ };
+
+ mas_a2noc_snoc: mas-a2noc-snoc {
+ cell-id = <MSM_BUS_A2NOC_SNOC_MAS>;
+ label = "mas-a2noc-snoc";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,connections = < &slv_snoc_vmem &slv_usb3 &slv_pcie_1
+ &slv_pimem &slv_pcie_2
+ &slv_qdss_stm&slv_lpass
+ &slv_snoc_bimc &slv_snoc_cnoc
+ &slv_snoc_pnoc &slv_imem
+ &slv_pcie_0>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_A2NOC_SNOC>;
+ };
+
+ mas_qdss_etr: mas-qdss-etr {
+ cell-id = <MSM_BUS_MASTER_QDSS_ETR>;
+ label = "mas-qdss-etr";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,qport = <3>;
+ qcom,qos-mode = "fixed";
+ qcom,connections = < &slv_pimem&slv_usb3 &slv_imem
+ &slv_snoc_bimc &slv_snoc_pnoc>;
+ qcom,prio1 = <1>;
+ qcom,prio0 = <1>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,mas-rpm-id = <ICBID_MASTER_QDSS_ETR>;
+ };
+
+ /*Internal nodes*/
+
+ /*Slaves*/
+
+ slv_a0noc_snoc: slv-a0noc-snoc {
+ cell-id = <MSM_BUS_A0NOC_SNOC_SLV>;
+ label = "slv-a0noc-snoc";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,connections = <&mas_a0noc_snoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_A0NOC_SNOC>;
+ qcom,enable-only-clk;
+ clock-names = "node_clk";
+ clocks = <&clock_gcc clk_gcc_aggre0_cnoc_ahb_clk>;
+ };
+
+ slv_a1noc_snoc: slv-a1noc-snoc {
+ cell-id = <MSM_BUS_A1NOC_SNOC_SLV>;
+ label = "slv-a1noc-snoc";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,connections = <&mas_a1noc_snoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_A1NOC_SNOC>;
+ };
+
+ slv_a2noc_snoc: slv-a2noc-snoc {
+ cell-id = <MSM_BUS_A2NOC_SNOC_SLV>;
+ label = "slv-a2noc-snoc";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,connections = <&mas_a2noc_snoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_A2NOC_SNOC>;
+ };
+
+ slv_ebi: slv-ebi {
+ cell-id = <MSM_BUS_SLAVE_EBI_CH0>;
+ label = "slv-ebi";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <2>;
+ qcom,bus-dev = <&fab_bimc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_EBI1>;
+ };
+
+ slv_hmss_l3: slv-hmss-l3 {
+ cell-id = <MSM_BUS_SLAVE_HMSS_L3>;
+ label = "slv-hmss-l3";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_bimc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_HMSS_L3>;
+ };
+
+ slv_bimc_snoc_0: slv-bimc-snoc-0 {
+ cell-id = <MSM_BUS_BIMC_SNOC_SLV>;
+ label = "slv-bimc-snoc-0";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_bimc>;
+ qcom,ap-owned;
+ qcom,connections = <&mas_bimc_snoc_0>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_BIMC_SNOC>;
+ };
+
+ slv_bimc_snoc_1: slv-bimc-snoc-1 {
+ cell-id = <MSM_BUS_BIMC_SNOC_1_SLV>;
+ label = "slv-bimc-snoc-1";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_bimc>;
+ qcom,connections = <&mas_bimc_snoc_1>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_BIMC_SNOC_1>;
+ };
+
+ slv_cnoc_a1noc: slv-cnoc-a1noc {
+ cell-id = <MSM_BUS_CNOC_SNOC_SLV>;
+ label = "slv-cnoc-a1noc";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,connections = <&mas_cnoc_a1noc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_CNOC_SNOC>;
+ };
+
+ slv_clk_ctl: slv-clk-ctl {
+ cell-id = <MSM_BUS_SLAVE_CLK_CTL>;
+ label = "slv-clk-ctl";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_CLK_CTL>;
+ };
+
+ slv_tcsr: slv-tcsr {
+ cell-id = <MSM_BUS_SLAVE_TCSR>;
+ label = "slv-tcsr";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_TCSR>;
+ };
+
+ slv_tlmm: slv-tlmm {
+ cell-id = <MSM_BUS_SLAVE_TLMM>;
+ label = "slv-tlmm";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_TLMM>;
+ };
+
+ slv_crypto0_cfg:slv-crypto0-cfg {
+ cell-id = <MSM_BUS_SLAVE_CRYPTO_0_CFG>;
+ label = "slv-crypto0-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_CRYPTO_0_CFG>;
+ };
+
+ slv_mpm: slv-mpm {
+ cell-id = <MSM_BUS_SLAVE_MPM>;
+ label = "slv-mpm";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_MPM>;
+ };
+
+ slv_pimem_cfg: slv-pimem-cfg {
+ cell-id = <MSM_BUS_SLAVE_PIMEM_CFG>;
+ label = "slv-pimem-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_PIMEM_CFG>;
+ };
+
+ slv_imem_cfg: slv-imem-cfg {
+ cell-id = <MSM_BUS_SLAVE_IMEM_CFG>;
+ label = "slv-imem-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_IMEM_CFG>;
+ };
+
+ slv_message_ram: slv-message-ram {
+ cell-id = <MSM_BUS_SLAVE_MESSAGE_RAM>;
+ label = "slv-message-ram";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_MESSAGE_RAM>;
+ };
+
+ slv_bimc_cfg: slv-bimc-cfg {
+ cell-id = <MSM_BUS_SLAVE_BIMC_CFG>;
+ label = "slv-bimc-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_BIMC_CFG>;
+ };
+
+ slv_pmic_arb: slv-pmic-arb {
+ cell-id = <MSM_BUS_SLAVE_PMIC_ARB>;
+ label = "slv-pmic-arb";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_PMIC_ARB>;
+ };
+
+ slv_prng: slv-prng {
+ cell-id = <MSM_BUS_SLAVE_PRNG>;
+ label = "slv-prng";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_PRNG>;
+ };
+
+ slv_dcc_cfg:slv-dcc-cfg {
+ cell-id = <MSM_BUS_SLAVE_DCC_CFG>;
+ label = "slv-dcc-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_DCC_CFG>;
+ };
+
+ slv_rbcpr_mx: slv-rbcpr-mx {
+ cell-id = <MSM_BUS_SLAVE_RBCPR_MX>;
+ label = "slv-rbcpr-mx";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_RBCPR_MX>;
+ };
+
+ slv_qdss_cfg: slv-qdss-cfg {
+ cell-id = <MSM_BUS_SLAVE_QDSS_CFG>;
+ label = "slv-qdss-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_QDSS_CFG>;
+ };
+
+ slv_rbcpr_cx: slv-rbcpr-cx {
+ cell-id = <MSM_BUS_SLAVE_RBCPR_CX>;
+ label = "slv-rbcpr-cx";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_RBCPR_CX>;
+ };
+
+ slv_cpr_apu_cfg:slv-cpr-apu-cfg {
+ cell-id = <MSM_BUS_SLAVE_QDSS_RBCPR_APU_CFG>;
+ label = "slv-cpr-apu-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_QDSS_RBCPR_APU_CFG>;
+ };
+
+ slv_cnoc_mnoc_cfg: slv-cnoc-mnoc-cfg {
+ cell-id = <MSM_BUS_SLAVE_CNOC_MNOC_CFG>;
+ label = "slv-cnoc-mnoc-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,connections = <&mas_cnoc_mnoc_cfg>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_CNOC_MNOC_CFG>;
+ };
+
+ slv_snoc_cfg: slv-snoc-cfg {
+ cell-id = <MSM_BUS_SLAVE_SNOC_CFG>;
+ label = "slv-snoc-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SNOC_CFG>;
+ };
+
+ slv_snoc_mpu_cfg: slv-snoc-mpu-cfg {
+ cell-id = <MSM_BUS_SLAVE_SNOC_MPU_CFG>;
+ label = "slv-snoc-mpu-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SNOC_MPU_CFG>;
+ };
+
+ slv_ebi1_phy_cfg: slv-ebi1-phy-cfg {
+ cell-id = <MSM_BUS_SLAVE_EBI1_PHY_CFG>;
+ label = "slv-ebi1-phy-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_EBI1_PHY_CFG>;
+ };
+
+ slv_a0noc_cfg: slv-a0noc-cfg {
+ cell-id = <MSM_BUS_SLAVE_A0NOC_CFG>;
+ label = "slv-a0noc-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_A0NOC_CFG>;
+ };
+
+ slv_pcie_1_cfg: slv-pcie-1-cfg {
+ cell-id = <MSM_BUS_SLAVE_PCIE_1_CFG>;
+ label = "slv-pcie-1-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_PCIE_1_CFG>;
+ };
+
+ slv_pcie_2_cfg: slv-pcie-2-cfg {
+ cell-id = <MSM_BUS_SLAVE_PCIE_2_CFG>;
+ label = "slv-pcie-2-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_PCIE_2_CFG>;
+ };
+
+ slv_pcie_0_cfg: slv-pcie-0-cfg {
+ cell-id = <MSM_BUS_SLAVE_PCIE_0_CFG>;
+ label = "slv-pcie-0-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_PCIE_0_CFG>;
+ };
+
+ slv_pcie20_ahb2phy: slv-pcie20-ahb2phy {
+ cell-id = <MSM_BUS_SLAVE_PCIE20_AHB2PHY>;
+ label = "slv-pcie20-ahb2phy";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_PCIE20_AHB2PHY>;
+ };
+
+ slv_a0noc_mpu_cfg: slv-a0noc-mpu-cfg {
+ cell-id = <MSM_BUS_SLAVE_A0NOC_MPU_CFG>;
+ label = "slv-a0noc-mpu-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_A0NOC_MPU_CFG>;
+ };
+
+ slv_ufs_cfg: slv-ufs-cfg {
+ cell-id = <MSM_BUS_SLAVE_UFS_CFG>;
+ label = "slv-ufs-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_UFS_CFG>;
+ };
+
+ slv_a1noc_cfg: slv-a1noc-cfg {
+ cell-id = <MSM_BUS_SLAVE_A1NOC_CFG>;
+ label = "slv-a1noc-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_A1NOC_CFG>;
+ };
+
+ slv_a1noc_mpu_cfg: slv-a1noc-mpu-cfg {
+ cell-id = <MSM_BUS_SLAVE_A1NOC_MPU_CFG>;
+ label = "slv-a1noc-mpu-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_A1NOC_MPU_CFG>;
+ };
+
+ slv_a2noc_cfg: slv-a2noc-cfg {
+ cell-id = <MSM_BUS_SLAVE_A2NOC_CFG>;
+ label = "slv-a2noc-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_A2NOC_CFG>;
+ };
+
+ slv_a2noc_mpu_cfg: slv-a2noc-mpu-cfg {
+ cell-id = <MSM_BUS_SLAVE_A2NOC_MPU_CFG>;
+ label = "slv-a2noc-mpu-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_A2NOC_MPU_CFG>;
+ };
+
+ slv_ssc_cfg: slv-ssc-cfg {
+ cell-id = <MSM_BUS_SLAVE_SSC_CFG>;
+ label = "slv-ssc-cfg";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SSC_CFG>;
+ };
+
+ slv_a0noc_smmu_cfg: slv-a0noc-smmu-cfg {
+ cell-id = <MSM_BUS_SLAVE_A0NOC_SMMU_CFG>;
+ label = "slv-a0noc-smmu-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_A0NOC_SMMU_CFG>;
+ };
+
+ slv_a1noc_smmu_cfg: slv-a1noc-smmu-cfg {
+ cell-id = <MSM_BUS_SLAVE_A1NOC_SMMU_CFG>;
+ label = "slv-a1noc-smmu-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_A1NOC_SMMU_CFG>;
+ };
+
+ slv_a2noc_smmu_cfg: slv-a2noc-smmu-cfg {
+ cell-id = <MSM_BUS_SLAVE_A2NOC_SMMU_CFG>;
+ label = "slv-a2noc-smmu-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_A2NOC_SMMU_CFG>;
+ };
+
+ slv_lpass_smmu_cfg: slv-lpass-smmu-cfg {
+ cell-id = <MSM_BUS_SLAVE_LPASS_SMMU_CFG>;
+ label = "slv-lpass-smmu-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_LPASS_SMMU_CFG>;
+ };
+
+ slv_cnoc_mnoc_mmss_cfg: slv-cnoc-mnoc-mmss-cfg {
+ cell-id = <MSM_BUS_SLAVE_CNOC_MNOC_MMSS_CFG>;
+ label = "slv-cnoc-mnoc-mmss-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_cnoc>;
+ qcom,connections = <&mas_cnoc_mnoc_mmss_cfg>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_CNOC_MNOC_MMSS_CFG>;
+ };
+
+ slv_mmagic_cfg: slv-mmagic-cfg {
+ cell-id = <MSM_BUS_SLAVE_MMAGIC_CFG>;
+ label = "slv-mmagic-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_MMAGIC_CFG>;
+ };
+
+ slv_cpr_cfg: slv-cpr-cfg {
+ cell-id = <MSM_BUS_SLAVE_CPR_CFG>;
+ label = "slv-cpr-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_CPR_CFG>;
+ };
+
+ slv_misc_cfg: slv-misc-cfg {
+ cell-id = <MSM_BUS_SLAVE_MISC_CFG>;
+ label = "slv-misc-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_MISC_CFG>;
+ };
+
+ slv_venus_throttle_cfg: slv-venus-throttle-cfg {
+ cell-id = <MSM_BUS_SLAVE_VENUS_THROTTLE_CFG>;
+ label = "slv-venus-throttle-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_VENUS_THROTTLE_CFG>;
+ };
+
+ slv_venus_cfg: slv-venus-cfg {
+ cell-id = <MSM_BUS_SLAVE_VENUS_CFG>;
+ label = "slv-venus-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_VENUS_CFG>;
+ };
+
+ slv_vmem_cfg: slv-vmem-cfg {
+ cell-id = <MSM_BUS_SLAVE_VMEM_CFG>;
+ label = "slv-vmem-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_VMEM_CFG>;
+ qcom,enable-only-clk;
+ clock-names = "node_clk";
+ clocks = <&clock_mmss clk_mmss_mmagic_maxi_clk>;
+ node-gdsc-supply = <&gdsc_mmagic_video>;
+ };
+
+ slv_dsa_cfg: slv-dsa-cfg {
+ cell-id = <MSM_BUS_SLAVE_DSA_CFG>;
+ label = "slv-dsa-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_DSA_CFG>;
+ };
+
+ slv_mnoc_clocks_cfg: slv-mnoc-clocks-cfg {
+ cell-id = <MSM_BUS_SLAVE_MMSS_CLK_CFG>;
+ label = "slv-mnoc-clocks-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_MMSS_CLK_CFG>;
+ };
+
+ slv_dsa_mpu_cfg: slv-dsa-mpu-cfg {
+ cell-id = <MSM_BUS_SLAVE_DSA_MPU_CFG>;
+ label = "slv-dsa-mpu-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_DSA_MPU_CFG>;
+ };
+
+ slv_mnoc_mpu_cfg: slv-mnoc-mpu-cfg {
+ cell-id = <MSM_BUS_SLAVE_MNOC_MPU_CFG>;
+ label = "slv-mnoc-mpu-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_MNOC_MPU_CFG>;
+ };
+
+ slv_display_cfg: slv-display-cfg {
+ cell-id = <MSM_BUS_SLAVE_DISPLAY_CFG>;
+ label = "slv-display-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_DISPLAY_CFG>;
+ };
+
+ slv_display_throttle_cfg: slv-display-throttle-cfg {
+ cell-id = <MSM_BUS_SLAVE_DISPLAY_THROTTLE_CFG>;
+ label = "slv-display-throttle-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_DISPLAY_THROTTLE_CFG>;
+ };
+
+ slv_camera_cfg: slv-camera-cfg {
+ cell-id = <MSM_BUS_SLAVE_CAMERA_CFG>;
+ label = "slv-camera-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_CAMERA_CFG>;
+ };
+
+ slv_camera_throttle_cfg: slv-camera-throttle-cfg {
+ cell-id = <MSM_BUS_SLAVE_CAMERA_THROTTLE_CFG>;
+ label = "slv-camera-throttle-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_CAMERA_THROTTLE_CFG>;
+ };
+
+ slv_oxili_cfg: slv-oxili-cfg {
+ cell-id = <MSM_BUS_SLAVE_GRAPHICS_3D_CFG>;
+ label = "slv-oxili-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_GFX3D_CFG>;
+ };
+
+ slv_smmu_mdp_cfg: slv-smmu-mdp-cfg {
+ cell-id = <MSM_BUS_SLAVE_SMMU_MDP_CFG>;
+ label = "slv-smmu-mdp-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SMMU_MDP_CFG>;
+ };
+
+ slv_smmu_rot_cfg: slv-smmu-rot-cfg {
+ cell-id = <MSM_BUS_SLAVE_SMMU_ROTATOR_CFG>;
+ label = "slv-smmu-rot-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SMMU_ROTATOR_CFG>;
+ };
+
+ slv_smmu_venus_cfg: slv-smmu-venus-cfg {
+ cell-id = <MSM_BUS_SLAVE_SMMU_VENUS_CFG>;
+ label = "slv-smmu-venus-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SMMU_VENUS_CFG>;
+ };
+
+ slv_smmu_cpp_cfg: slv-smmu-cpp-cfg {
+ cell-id = <MSM_BUS_SLAVE_SMMU_CPP_CFG>;
+ label = "slv-smmu-cpp-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SMMU_CPP_CFG>;
+ };
+
+ slv_smmu_jpeg_cfg: slv-smmu-jpeg-cfg {
+ cell-id = <MSM_BUS_SLAVE_SMMU_JPEG_CFG>;
+ label = "slv-smmu-jpeg-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SMMU_JPEG_CFG>;
+ };
+
+ slv_smmu_vfe_cfg: slv-smmu-vfe-cfg {
+ cell-id = <MSM_BUS_SLAVE_SMMU_VFE_CFG>;
+ label = "slv-smmu-vfe-cfg";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc_ahb>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SMMU_VFE_CFG>;
+ };
+
+ slv_mnoc_bimc: slv-mnoc-bimc {
+ cell-id = <MSM_BUS_MNOC_BIMC_SLV>;
+ label = "slv-mnoc-bimc";
+ qcom,buswidth = <32>;
+ qcom,agg-ports = <2>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc>;
+ qcom,connections = <&mas_mnoc_bimc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_MNOC_BIMC>;
+ qcom,enable-only-clk;
+ clock-names = "node_clk";
+ clocks = <&clock_gcc clk_mmssnoc_axi_clk>;
+ };
+
+ slv_vmem: slv-vmem {
+ cell-id = <MSM_BUS_SLAVE_VMEM>;
+ label = "slv-vmem";
+ qcom,buswidth = <32>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_VMEM>;
+ clock-names = "node_clk";
+ clocks = <&clock_mmss clk_mmss_mmagic_maxi_clk>;
+ node-gdsc-supply = <&gdsc_mmagic_video>;
+ };
+
+ slv_srvc_mnoc: slv-srvc-mnoc {
+ cell-id = <MSM_BUS_SLAVE_SERVICE_MNOC>;
+ label = "slv-srvc-mnoc";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_mnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SERVICE_MNOC>;
+ };
+
+ slv_pnoc_a1noc: slv-pnoc-a1noc {
+ cell-id = <MSM_BUS_PNOC_A1NOC_SLV>;
+ label = "slv-pnoc-a1noc";
+ qcom,buswidth = <8>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,connections = <&mas_pnoc_a1noc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_PNOC_A1NOC>;
+ };
+
+ slv_usb_hs: slv-usb-hs {
+ cell-id = <MSM_BUS_SLAVE_USB_HS>;
+ label = "slv-usb-hs";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_USB_HS>;
+ };
+
+ slv_sdcc_2: slv-sdcc-2 {
+ cell-id = <MSM_BUS_SLAVE_SDCC_2>;
+ label = "slv-sdcc-2";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SDCC_2>;
+ };
+
+ slv_sdcc_4: slv-sdcc-4 {
+ cell-id = <MSM_BUS_SLAVE_SDCC_4>;
+ label = "slv-sdcc-4";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SDCC_4>;
+ };
+
+ slv_tsif: slv-tsif {
+ cell-id = <MSM_BUS_SLAVE_TSIF>;
+ label = "slv-tsif";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_TSIF>;
+ };
+
+ slv_blsp_2: slv-blsp-2 {
+ cell-id = <MSM_BUS_SLAVE_BLSP_2>;
+ label = "slv-blsp-2";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_BLSP_2>;
+ };
+
+ slv_sdcc_1:slv-sdcc-1 {
+ cell-id = <MSM_BUS_SLAVE_SDCC_1>;
+ label = "slv-sdcc-1";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SDCC_1>;
+ };
+
+ slv_blsp_1: slv-blsp-1 {
+ cell-id = <MSM_BUS_SLAVE_BLSP_1>;
+ label = "slv-blsp-1";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_BLSP_1>;
+ };
+
+ slv_pdm: slv-pdm {
+ cell-id = <MSM_BUS_SLAVE_PDM>;
+ label = "slv-pdm";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_PDM>;
+ };
+
+ slv_ahb2phy: slv-ahb2phy {
+ cell-id = <MSM_BUS_SLAVE_AHB2PHY>;
+ label = "slv-ahb2phy";
+ qcom,buswidth = <4>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_pnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_AHB2PHY>;
+ };
+
+ slv_hmss: slv-hmss {
+ cell-id = <MSM_BUS_SLAVE_APPSS>;
+ label = "slv-hmss";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_APPSS>;
+ };
+
+ slv_lpass: slv-lpass {
+ cell-id = <MSM_BUS_SLAVE_LPASS>;
+ label = "slv-lpass";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_LPASS>;
+ };
+
+ slv_usb3: slv-usb3 {
+ cell-id = <MSM_BUS_SLAVE_USB3>;
+ label = "slv-usb3";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_USB3_0>;
+ };
+
+ slv_snoc_bimc: slv-snoc-bimc {
+ cell-id = <MSM_BUS_SNOC_BIMC_SLV>;
+ label = "slv-snoc-bimc";
+ qcom,buswidth = <32>;
+ qcom,agg-ports = <2>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,connections = <&mas_snoc_bimc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SNOC_BIMC>;
+ };
+
+ slv_snoc_cnoc: slv-snoc-cnoc {
+ cell-id = <MSM_BUS_SNOC_CNOC_SLV>;
+ label = "slv-snoc-cnoc";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,connections = <&mas_snoc_cnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SNOC_CNOC>;
+ };
+
+ slv_imem: slv-imem {
+ cell-id = <MSM_BUS_SLAVE_OCIMEM>;
+ label = "slv-imem";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_IMEM>;
+ };
+
+ slv_pimem: slv-pimem {
+ cell-id = <MSM_BUS_SLAVE_PIMEM>;
+ label = "slv-pimem";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_PIMEM>;
+ };
+
+ slv_snoc_vmem: slv-snoc-vmem {
+ cell-id = <MSM_BUS_SLAVE_SNOC_VMEM>;
+ label = "slv-snoc-vmem";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,connections = <&mas_snoc_vmem>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SNOC_VMEM>;
+ };
+
+ slv_snoc_pnoc: slv-snoc-pnoc {
+ cell-id = <MSM_BUS_SNOC_PNOC_SLV>;
+ label = "slv-snoc-pnoc";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,connections = <&mas_snoc_pnoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SNOC_PNOC>;
+ };
+
+ slv_qdss_stm: slv-qdss-stm {
+ cell-id = <MSM_BUS_SLAVE_QDSS_STM>;
+ label = "slv-qdss-stm";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_QDSS_STM>;
+ };
+
+ slv_pcie_0: slv-pcie-0 {
+ cell-id = <MSM_BUS_SLAVE_PCIE_0>;
+ label = "slv-pcie-0";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_PCIE_0>;
+ };
+
+ slv_pcie_1: slv-pcie-1 {
+ cell-id = <MSM_BUS_SLAVE_PCIE_1>;
+ label = "slv-pcie-1";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_PCIE_1>;
+ };
+
+ slv_pcie_2: slv-pcie-2 {
+ cell-id = <MSM_BUS_SLAVE_PCIE_2>;
+ label = "slv-pcie-2";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_PCIE_2>;
+ };
+
+ slv_srvc_snoc: slv-srvc-snoc {
+ cell-id = <MSM_BUS_SLAVE_SERVICE_SNOC>;
+ label = "slv-srvc-snoc";
+ qcom,buswidth = <16>;
+ qcom,agg-ports = <1>;
+ qcom,ap-owned;
+ qcom,bus-dev = <&fab_snoc>;
+ qcom,slv-rpm-id = <ICBID_SLAVE_SERVICE_SNOC>;
+ };
+ };
+
+ devfreq_spdm_cpu {
+ compatible = "qcom,devfreq_spdm";
+ qcom,msm-bus,name = "devfreq_spdm";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <1 512 0 0>,
+ <1 512 0 0>;
+ qcom,msm-bus,active-only;
+ qcom,spdm-client = <0>;
+
+ clock-names = "cci_clk";
+ clocks = <&clock_cpu clk_cbf_clk>;
+
+ qcom,bw-upstep = <1000>;
+ qcom,bw-dwnstep = <1000>;
+ qcom,max-vote = <10000>;
+ qcom,up-step-multp = <2>;
+ qcom,spdm-interval = <100>;
+
+ qcom,ports = <24>;
+ qcom,alpha-up = <12>;
+ qcom,alpha-down = <15>;
+ qcom,bucket-size = <8>;
+
+ /*max pl1 freq, max pl2 freq*/
+ qcom,pl-freqs = <260000 770000>;
+
+ /* pl1 low, pl1 high, pl2 low, pl2 high, pl3 low, pl3 high */
+ qcom,reject-rate = <5000 5000 5000 5000 5000 5000>;
+ /* pl1 low, pl1 high, pl2 low, pl2 high, pl3 low, pl3 high */
+ qcom,response-time-us = <10000 10000 10000 10000 10000 10000>;
+ /* pl1 low, pl1 high, pl2 low, pl2 high, pl3 low, pl3 high */
+ qcom,cci-response-time-us = <10000 10000 10000 10000 10000 10000>;
+ qcom,max-cci-freq = <1036800> ;
+ };
+
+ devfreq_spdm_gov {
+ compatible = "qcom,gov_spdm_hyp";
+ interrupt-names = "spdm-irq";
+ interrupts = <0 192 0>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-camera-sensor-adp.dtsi b/arch/arm64/boot/dts/qcom/msm8996-camera-sensor-adp.dtsi
new file mode 100644
index 000000000000..5589d808d5b1
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-camera-sensor-adp.dtsi
@@ -0,0 +1,233 @@
+/*
+ * Copyright (c) 2015 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-flash {
+ cell-index = <0>;
+ compatible = "qcom,camera-flash";
+ qcom,flash-source = <&pmi8994_flash0 &pmi8994_flash1>;
+ qcom,torch-source = <&pmi8994_torch0 &pmi8994_torch1>;
+ qcom,switch-source = <&pmi8994_switch>;
+ };
+};
+
+&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-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 = <1>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ };
+
+ eeprom0: qcom,eeprom@0 {
+ cell-index = <0>;
+ reg = <0>;
+ compatible = "qcom,eeprom";
+ qcom,cci-master = <0>;
+ cam_vdig-supply = <&pm8994_s3>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana",
+ "cam_vaf";
+ qcom,cam-vreg-min-voltage = <1300000 0 2500000 2800000>;
+ qcom,cam-vreg-max-voltage = <1300000 0 2500000 2800000>;
+ qcom,cam-vreg-op-mode = <105000 0 80000 100000>;
+ 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 = <&tlmm 13 0>,
+ <&tlmm 30 0>,
+ <&tlmm 29 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";
+ clocks = <&clock_mmss clk_mclk0_clk_src>,
+ <&clock_mmss clk_camss_mclk0_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ eeprom1: qcom,eeprom@1 {
+ cell-index = <1>;
+ reg = <0x1>;
+ compatible = "qcom,eeprom";
+ qcom,cci-master = <1>;
+ cam_vdig-supply = <&pm8994_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l29>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1000000 0 2800000>;
+ qcom,cam-vreg-max-voltage = <1000000 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 = <&tlmm 15 0>,
+ <&tlmm 23 0>,
+ <&tlmm 26 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";
+ clocks = <&clock_mmss clk_mclk2_clk_src>,
+ <&clock_mmss clk_camss_mclk2_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,led-flash-src = <&led_flash0>;
+ qcom,actuator-src = <&actuator0>;
+ qcom,eeprom-src = <&eeprom0>;
+ cam_vdig-supply = <&pm8994_s3>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1300000 0 2500000>;
+ qcom,cam-vreg-max-voltage = <1300000 0 2500000>;
+ 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 = <&tlmm 13 0>,
+ <&tlmm 30 0>,
+ <&tlmm 29 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_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pmi8994_boostbypass>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1000000 0 3150000>;
+ qcom,cam-vreg-max-voltage = <1000000 0 3600000>;
+ 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 = <&tlmm 14 0>,
+ <&tlmm 63 0>,
+ <&tlmm 62 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>;
+ qcom,eeprom-src = <&eeprom1>;
+ qcom,actuator-src = <&actuator1>;
+ cam_vdig-supply = <&pm8994_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l29>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1000000 0 2800000>;
+ qcom,cam-vreg-max-voltage = <1000000 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 = <&tlmm 15 0>,
+ <&tlmm 23 0>,
+ <&tlmm 26 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 = <1>;
+ 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/msm8996-camera-sensor-cdp.dtsi b/arch/arm64/boot/dts/qcom/msm8996-camera-sensor-cdp.dtsi
new file mode 100644
index 000000000000..435d1626d3cc
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-camera-sensor-cdp.dtsi
@@ -0,0 +1,243 @@
+/*
+ * Copyright (c) 2015 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-flash {
+ cell-index = <0>;
+ compatible = "qcom,camera-flash";
+ qcom,flash-source = <&pmi8994_flash0 &pmi8994_flash1>;
+ qcom,torch-source = <&pmi8994_torch0 &pmi8994_torch1>;
+ qcom,switch-source = <&pmi8994_switch>;
+ };
+};
+
+&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-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 = <1>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ };
+
+ ois0: qcom,ois@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ compatible = "qcom,ois";
+ qcom,cci-master = <0>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ };
+
+ eeprom0: qcom,eeprom@0 {
+ cell-index = <0>;
+ reg = <0>;
+ compatible = "qcom,eeprom";
+ qcom,cci-master = <0>;
+ cam_vdig-supply = <&pm8994_s3>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana",
+ "cam_vaf";
+ qcom,cam-vreg-min-voltage = <1300000 0 2500000 2800000>;
+ qcom,cam-vreg-max-voltage = <1300000 0 2500000 2800000>;
+ qcom,cam-vreg-op-mode = <105000 0 80000 100000>;
+ 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 = <&tlmm 13 0>,
+ <&tlmm 30 0>,
+ <&tlmm 29 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";
+ clocks = <&clock_mmss clk_mclk0_clk_src>,
+ <&clock_mmss clk_camss_mclk0_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ eeprom1: qcom,eeprom@1 {
+ cell-index = <1>;
+ reg = <0x1>;
+ compatible = "qcom,eeprom";
+ qcom,cci-master = <1>;
+ cam_vdig-supply = <&pm8994_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l29>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1000000 0 2800000>;
+ qcom,cam-vreg-max-voltage = <1000000 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 = <&tlmm 15 0>,
+ <&tlmm 23 0>,
+ <&tlmm 26 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";
+ clocks = <&clock_mmss clk_mclk2_clk_src>,
+ <&clock_mmss clk_camss_mclk2_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 = <0>;
+ qcom,led-flash-src = <&led_flash0>;
+ qcom,actuator-src = <&actuator0>;
+ qcom,ois-src = <&ois0>;
+ qcom,eeprom-src = <&eeprom0>;
+ cam_vdig-supply = <&pm8994_s3>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1300000 0 2500000>;
+ qcom,cam-vreg-max-voltage = <1300000 0 2500000>;
+ 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 = <&tlmm 13 0>,
+ <&tlmm 30 0>,
+ <&tlmm 29 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_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pmi8994_boostbypass>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1000000 0 3150000>;
+ qcom,cam-vreg-max-voltage = <1000000 0 3600000>;
+ 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 = <&tlmm 14 0>,
+ <&tlmm 63 0>,
+ <&tlmm 62 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>;
+ qcom,eeprom-src = <&eeprom1>;
+ qcom,actuator-src = <&actuator1>;
+ cam_vdig-supply = <&pm8994_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l29>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1000000 0 2800000>;
+ qcom,cam-vreg-max-voltage = <1000000 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 = <&tlmm 15 0>,
+ <&tlmm 23 0>,
+ <&tlmm 26 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 = <1>;
+ 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/msm8996-camera-sensor-dtp.dtsi b/arch/arm64/boot/dts/qcom/msm8996-camera-sensor-dtp.dtsi
new file mode 100644
index 000000000000..fa2053100892
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-camera-sensor-dtp.dtsi
@@ -0,0 +1,233 @@
+/*
+ * Copyright (c) 2015 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-flash {
+ cell-index = <0>;
+ compatible = "qcom,camera-flash";
+ qcom,flash-source = <&pmi8994_flash0 &pmi8994_flash1>;
+ qcom,torch-source = <&pmi8994_torch0 &pmi8994_torch1>;
+ qcom,switch-source = <&pmi8994_switch>;
+ };
+};
+
+&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-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 = <1>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ };
+
+ eeprom0: qcom,eeprom@0 {
+ cell-index = <0>;
+ reg = <0>;
+ compatible = "qcom,eeprom";
+ qcom,cci-master = <0>;
+ cam_vdig-supply = <&pm8994_s3>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana",
+ "cam_vaf";
+ qcom,cam-vreg-min-voltage = <1300000 0 2500000 2800000>;
+ qcom,cam-vreg-max-voltage = <1300000 0 2500000 2800000>;
+ qcom,cam-vreg-op-mode = <105000 0 80000 100000>;
+ 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 = <&tlmm 13 0>,
+ <&tlmm 30 0>,
+ <&tlmm 29 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";
+ clocks = <&clock_mmss clk_mclk0_clk_src>,
+ <&clock_mmss clk_camss_mclk0_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ eeprom1: qcom,eeprom@1 {
+ cell-index = <1>;
+ reg = <0x1>;
+ compatible = "qcom,eeprom";
+ qcom,cci-master = <1>;
+ cam_vdig-supply = <&pm8994_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l29>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ 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 = <&tlmm 15 0>,
+ <&tlmm 23 0>,
+ <&tlmm 26 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";
+ clocks = <&clock_mmss clk_mclk2_clk_src>,
+ <&clock_mmss clk_camss_mclk2_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,led-flash-src = <&led_flash0>;
+ qcom,actuator-src = <&actuator0>;
+ qcom,eeprom-src = <&eeprom0>;
+ cam_vdig-supply = <&pm8994_s3>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1300000 0 2500000>;
+ qcom,cam-vreg-max-voltage = <1300000 0 2500000>;
+ 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 = <&tlmm 13 0>,
+ <&tlmm 30 0>;
+ qcom,gpio-standby = <1>;
+ qcom,gpio-req-tbl-num = <0 1>;
+ qcom,gpio-req-tbl-flags = <1 0>;
+ qcom,gpio-req-tbl-label = "CAMIF_MCLK0",
+ "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_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pmi8994_boostbypass>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1000000 0 3150000>;
+ qcom,cam-vreg-max-voltage = <1000000 0 3600000>;
+ 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 = <&tlmm 14 0>,
+ <&tlmm 63 0>,
+ <&tlmm 62 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 = <270>;
+ qcom,eeprom-src = <&eeprom1>;
+ qcom,actuator-src = <&actuator1>;
+ cam_vdig-supply = <&pm8994_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l29>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ 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 = <&tlmm 15 0>,
+ <&tlmm 23 0>,
+ <&tlmm 26 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 = <1>;
+ 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/msm8996-camera-sensor-liquid.dtsi b/arch/arm64/boot/dts/qcom/msm8996-camera-sensor-liquid.dtsi
new file mode 100644
index 000000000000..962b85a64c9d
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-camera-sensor-liquid.dtsi
@@ -0,0 +1,244 @@
+/*
+ * Copyright (c) 2015 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-flash {
+ cell-index = <0>;
+ compatible = "qcom,camera-flash";
+ qcom,flash-source = <&pmi8994_flash0 &pmi8994_flash1>;
+ qcom,torch-source = <&pmi8994_torch0 &pmi8994_torch1>;
+ qcom,switch-source = <&pmi8994_switch>;
+ };
+};
+
+&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-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 = <1>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ };
+
+ ois0: qcom,ois@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ compatible = "qcom,ois";
+ qcom,cci-master = <0>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ };
+
+ eeprom0: qcom,eeprom@0 {
+ cell-index = <0>;
+ reg = <0>;
+ compatible = "qcom,eeprom";
+ qcom,cci-master = <0>;
+ cam_vdig-supply = <&pm8994_s3>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1300000 0 2500000>;
+ qcom,cam-vreg-max-voltage = <1300000 0 2500000>;
+ 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 = <&tlmm 13 0>,
+ <&tlmm 30 0>,
+ <&tlmm 29 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";
+ clocks = <&clock_mmss clk_mclk0_clk_src>,
+ <&clock_mmss clk_camss_mclk0_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ eeprom1: qcom,eeprom@1 {
+ cell-index = <1>;
+ reg = <0x1>;
+ compatible = "qcom,eeprom";
+ qcom,cci-master = <1>;
+ cam_vdig-supply = <&pm8994_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l29>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1000000 0 2800000>;
+ qcom,cam-vreg-max-voltage = <1000000 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 = <&tlmm 15 0>,
+ <&tlmm 23 0>,
+ <&tlmm 26 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";
+ clocks = <&clock_mmss clk_mclk2_clk_src>,
+ <&clock_mmss clk_camss_mclk2_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 = <180>;
+ qcom,led-flash-src = <&led_flash0>;
+ qcom,actuator-src = <&actuator0>;
+ qcom,ois-src = <&ois0>;
+ qcom,eeprom-src = <&eeprom0>;
+ cam_vdig-supply = <&pm8994_s3>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1300000 0 2500000>;
+ qcom,cam-vreg-max-voltage = <1300000 0 2500000>;
+ 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 = <&tlmm 13 0>,
+ <&tlmm 30 0>,
+ <&tlmm 29 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_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pmi8994_boostbypass>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1000000 0 3150000>;
+ qcom,cam-vreg-max-voltage = <1000000 0 3600000>;
+ 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 = <&tlmm 14 0>,
+ <&tlmm 63 0>,
+ <&tlmm 62 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 = <360>;
+ qcom,eeprom-src = <&eeprom1>;
+ qcom,actuator-src = <&actuator1>;
+ cam_vdig-supply = <&pm8994_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l29>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1000000 0 2800000>;
+ qcom,cam-vreg-max-voltage = <1000000 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 = <&tlmm 15 0>,
+ <&tlmm 23 0>,
+ <&tlmm 26 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 = <1>;
+ 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/msm8996-camera-sensor-mtp.dtsi b/arch/arm64/boot/dts/qcom/msm8996-camera-sensor-mtp.dtsi
new file mode 100644
index 000000000000..243e517154d1
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-camera-sensor-mtp.dtsi
@@ -0,0 +1,246 @@
+/*
+ * Copyright (c) 2015 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-flash {
+ cell-index = <0>;
+ compatible = "qcom,camera-flash";
+ qcom,flash-source = <&pmi8994_flash0 &pmi8994_flash1>;
+ qcom,torch-source = <&pmi8994_torch0 &pmi8994_torch1>;
+ qcom,switch-source = <&pmi8994_switch>;
+ };
+};
+
+&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-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 = <1>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ };
+
+ ois0: qcom,ois@0 {
+ cell-index = <0>;
+ reg = <0x0>;
+ compatible = "qcom,ois";
+ qcom,cci-master = <0>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vaf";
+ qcom,cam-vreg-min-voltage = <2800000>;
+ qcom,cam-vreg-max-voltage = <2800000>;
+ qcom,cam-vreg-op-mode = <100000>;
+ };
+
+ eeprom0: qcom,eeprom@0 {
+ cell-index = <0>;
+ reg = <0>;
+ compatible = "qcom,eeprom";
+ qcom,cci-master = <0>;
+ cam_vdig-supply = <&pm8994_s3>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ cam_vaf-supply = <&pm8994_l23>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana",
+ "cam_vaf";
+ qcom,cam-vreg-min-voltage = <1300000 0 2500000 2800000>;
+ qcom,cam-vreg-max-voltage = <1300000 0 2500000 2800000>;
+ qcom,cam-vreg-op-mode = <105000 0 80000 100000>;
+ 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 = <&tlmm 13 0>,
+ <&tlmm 30 0>,
+ <&tlmm 29 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";
+ clocks = <&clock_mmss clk_mclk0_clk_src>,
+ <&clock_mmss clk_camss_mclk0_clk>;
+ clock-names = "cam_src_clk", "cam_clk";
+ };
+
+ eeprom1: qcom,eeprom@1 {
+ cell-index = <1>;
+ reg = <0x1>;
+ compatible = "qcom,eeprom";
+ qcom,cci-master = <1>;
+ cam_vdig-supply = <&pm8994_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l29>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1000000 0 2800000>;
+ qcom,cam-vreg-max-voltage = <1000000 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 = <&tlmm 15 0>,
+ <&tlmm 23 0>,
+ <&tlmm 26 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";
+ clocks = <&clock_mmss clk_mclk2_clk_src>,
+ <&clock_mmss clk_camss_mclk2_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,led-flash-src = <&led_flash0>;
+ qcom,actuator-src = <&actuator0>;
+ qcom,ois-src = <&ois0>;
+ qcom,eeprom-src = <&eeprom0>;
+ cam_vdig-supply = <&pm8994_s3>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1300000 0 2500000>;
+ qcom,cam-vreg-max-voltage = <1300000 0 2500000>;
+ 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 = <&tlmm 13 0>,
+ <&tlmm 30 0>,
+ <&tlmm 29 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>;
+ qcom,eeprom-src = <&eeprom1>;
+ qcom,actuator-src = <&actuator1>;
+ cam_vdig-supply = <&pm8994_s3>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l17>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1300000 0 2500000>;
+ qcom,cam-vreg-max-voltage = <1300000 0 2500000>;
+ 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 = <&tlmm 13 0>,
+ <&tlmm 30 0>,
+ <&tlmm 29 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 = <1>;
+ qcom,sensor-mode = <0>;
+ qcom,cci-master = <1>;
+ status = "ok";
+ clocks = <&clock_mmss clk_mclk0_clk_src>,
+ <&clock_mmss clk_camss_mclk0_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,eeprom-src = <&eeprom1>;
+ qcom,actuator-src = <&actuator1>;
+ cam_vdig-supply = <&pm8994_l27>;
+ cam_vio-supply = <&pm8994_lvs1>;
+ cam_vana-supply = <&pm8994_l29>;
+ qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
+ qcom,cam-vreg-min-voltage = <1000000 0 2800000>;
+ qcom,cam-vreg-max-voltage = <1000000 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 = <&tlmm 15 0>,
+ <&tlmm 23 0>,
+ <&tlmm 26 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 = <1>;
+ 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/msm8996-camera.dtsi b/arch/arm64/boot/dts/qcom/msm8996-camera.dtsi
new file mode 100644
index 000000000000..e93558969f04
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-camera.dtsi
@@ -0,0 +1,787 @@
+/*
+ * Copyright (c) 2014-2015, 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@8c0000 {
+ compatible = "qcom,msm-cam";
+ reg = <0x8c0000 0x40000>;
+ reg-names = "msm-cam";
+ status = "ok";
+ bus-vectors = "suspend", "svs", "nominal", "turbo";
+ qcom,bus-votes = <0 300000000 640000000 640000000>;
+ };
+
+ qcom,csiphy@a34000 {
+ cell-index = <0>;
+ compatible = "qcom,csiphy-v3.5", "qcom,csiphy";
+ reg = <0xa34000 0x1000>, <0xA00030 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_csi0phytimer_clk_src>,
+ <&clock_mmss clk_camss_csi0phytimer_clk>,
+ <&clock_mmss clk_camss_ahb_clk>,
+ <&clock_mmss clk_csiphy0_3p_clk_src>,
+ <&clock_mmss clk_camss_csiphy0_3p_clk>;
+ clock-names = "camss_top_ahb_clk",
+ "ispif_ahb_clk", "csiphy_timer_src_clk",
+ "csiphy_timer_clk", "camss_ahb_clk",
+ "csiphy_3p_clk_src", "csi_phy_3p_clk";
+ qcom,clock-rates = <0 0 266670000 0 0 200000000 0>;
+ };
+
+ qcom,csiphy@a35000 {
+ cell-index = <1>;
+ compatible = "qcom,csiphy-v3.5", "qcom,csiphy";
+ reg = <0xa35000 0x1000>, <0xA00038 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_csi1phytimer_clk_src>,
+ <&clock_mmss clk_camss_csi1phytimer_clk>,
+ <&clock_mmss clk_camss_ahb_clk>,
+ <&clock_mmss clk_csiphy1_3p_clk_src>,
+ <&clock_mmss clk_camss_csiphy1_3p_clk>;
+ clock-names = "camss_top_ahb_clk",
+ "ispif_ahb_clk", "csiphy_timer_src_clk",
+ "csiphy_timer_clk", "camss_ahb_clk",
+ "csiphy_3p_clk_src", "csi_phy_3p_clk";
+ qcom,clock-rates = <0 0 266670000 0 0 200000000 0>;
+ };
+
+ qcom,csiphy@a36000 {
+ cell-index = <2>;
+ compatible = "qcom,csiphy-v3.5", "qcom,csiphy";
+ reg = <0xa36000 0x1000>, <0xA00040 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_csi2phytimer_clk_src>,
+ <&clock_mmss clk_camss_csi2phytimer_clk>,
+ <&clock_mmss clk_camss_ahb_clk>,
+ <&clock_mmss clk_csiphy2_3p_clk_src>,
+ <&clock_mmss clk_camss_csiphy2_3p_clk>;
+ clock-names = "camss_top_ahb_clk",
+ "ispif_ahb_clk", "csiphy_timer_src_clk",
+ "csiphy_timer_clk", "camss_ahb_clk",
+ "csiphy_3p_clk_src", "csi_phy_3p_clk";
+ qcom,clock-rates = <0 0 266670000 0 0 200000000 0>;
+ };
+
+ qcom,csid@a30000 {
+ cell-index = <0>;
+ compatible = "qcom,csid-v3.5", "qcom,csid";
+ reg = <0xa30000 0x400>;
+ reg-names = "csid";
+ interrupts = <0 296 0>;
+ interrupt-names = "csid";
+ qcom,csi-vdd-voltage = <1250000>;
+ qcom,mipi-csi-vdd-supply = <&pm8994_l2>;
+ mmagic-supply = <&gdsc_mmagic_camss>;
+ gdscr-supply = <&gdsc_camss_top>;
+ qcom,cam-vreg-name = "mmagic", "gdscr";
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&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_csi0phy_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 = "mmagic_camss_ahb_clk", "camss_top_ahb_clk",
+ "ispif_ahb_clk", "csi_src_clk", "csi_clk",
+ "csi_phy_clk", "csi_ahb_clk", "csi_rdi_clk",
+ "csi_pix_clk", "camss_ahb_clk";
+ qcom,clock-rates = <0 0 0 200000000 0 0 0 0 0 0>;
+ status = "ok";
+ };
+
+ qcom,csid@a30400 {
+ cell-index = <1>;
+ compatible = "qcom,csid-v3.5", "qcom,csid";
+ reg = <0xa30400 0x400>;
+ reg-names = "csid";
+ interrupts = <0 297 0>;
+ interrupt-names = "csid";
+ qcom,csi-vdd-voltage = <1250000>;
+ qcom,mipi-csi-vdd-supply = <&pm8994_l2>;
+ mmagic-supply = <&gdsc_mmagic_camss>;
+ gdscr-supply = <&gdsc_camss_top>;
+ qcom,cam-vreg-name = "mmagic", "gdscr";
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&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_csi1phy_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 = "mmagic_camss_ahb_clk", "camss_top_ahb_clk",
+ "ispif_ahb_clk", "csi_src_clk", "csi_clk",
+ "csi_phy_clk", "csi_ahb_clk", "csi_rdi_clk",
+ "csi_pix_clk", "camss_ahb_clk";
+ qcom,clock-rates = <0 0 0 200000000 0 0 0 0 0 0>;
+ };
+
+ qcom,csid@a30800 {
+ cell-index = <2>;
+ compatible = "qcom,csid-v3.5", "qcom,csid";
+ reg = <0xa30800 0x400>;
+ reg-names = "csid";
+ interrupts = <0 298 0>;
+ interrupt-names = "csid";
+ qcom,csi-vdd-voltage = <1250000>;
+ qcom,mipi-csi-vdd-supply = <&pm8994_l2>;
+ mmagic-supply = <&gdsc_mmagic_camss>;
+ gdscr-supply = <&gdsc_camss_top>;
+ qcom,cam-vreg-name = "mmagic", "gdscr";
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&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_csi2phy_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 = "mmagic_camss_ahb_clk", "camss_top_ahb_clk",
+ "ispif_ahb_clk", "csi_src_clk", "csi_clk",
+ "csi_phy_clk", "csi_ahb_clk", "csi_rdi_clk",
+ "csi_pix_clk", "camss_ahb_clk";
+ qcom,clock-rates = <0 0 0 200000000 0 0 0 0 0 0>;
+ };
+
+ qcom,csid@a30c00 {
+ cell-index = <3>;
+ compatible = "qcom,csid-v3.5", "qcom,csid";
+ reg = <0xa30c00 0x400>;
+ reg-names = "csid";
+ interrupts = <0 299 0>;
+ interrupt-names = "csid";
+ qcom,csi-vdd-voltage = <1250000>;
+ qcom,mipi-csi-vdd-supply = <&pm8994_l2>;
+ mmagic-supply = <&gdsc_mmagic_camss>;
+ gdscr-supply = <&gdsc_camss_top>;
+ qcom,cam-vreg-name = "mmagic", "gdscr";
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&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_csi3phy_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 = "mmagic_camss_ahb_clk", "camss_top_ahb_clk",
+ "ispif_ahb_clk", "csi_src_clk", "csi_clk",
+ "csi_phy_clk", "csi_ahb_clk", "csi_rdi_clk",
+ "csi_pix_clk", "camss_ahb_clk";
+ qcom,clock-rates = <0 0 0 200000000 0 0 0 0 0 0>;
+ };
+
+ qcom,ispif@a31000 {
+ cell-index = <0>;
+ compatible = "qcom,ispif-v3.0", "qcom,ispif";
+ reg = <0xa31000 0xc00>,
+ <0xa00020 0x4>;
+ reg-names = "ispif", "csi_clk_mux";
+ interrupts = <0 309 0>;
+ interrupt-names = "ispif";
+ qcom,num-isps = <0x2>;
+ camss-vdd-supply = <&gdsc_camss_top>;
+ mmagic-vdd-supply = <&gdsc_mmagic_camss>;
+ vfe0-vdd-supply = <&gdsc_vfe0>;
+ vfe1-vdd-supply = <&gdsc_vfe1>;
+ qcom,vdd-names = "camss-vdd", "mmagic-vdd", "vfe0-vdd",
+ "vfe1-vdd";
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_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_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_vfe0_clk>,
+ <&clock_mmss clk_camss_csi_vfe0_clk>,
+ <&clock_mmss clk_vfe1_clk_src>,
+ <&clock_mmss clk_camss_vfe1_clk>,
+ <&clock_mmss clk_camss_csi_vfe1_clk>;
+ clock-names = "mmagic_camss_ahb_clk",
+ "camss_top_ahb_clk",
+ "camss_ahb_clk", "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 0 0 0
+ 200000000 0 0 0
+ 200000000 0 0 0
+ 200000000 0 0 0
+ 200000000 0 0 0
+ 0 0 0
+ 0 0 0>;
+ qcom,clock-control = "NO_SET_RATE", "NO_SET_RATE",
+ "NO_SET_RATE", "NO_SET_RATE",
+ "SET_RATE", "NO_SET_RATE", "NO_SET_RATE", "NO_SET_RATE",
+ "SET_RATE", "NO_SET_RATE", "NO_SET_RATE", "NO_SET_RATE",
+ "SET_RATE", "NO_SET_RATE", "NO_SET_RATE", "NO_SET_RATE",
+ "SET_RATE", "NO_SET_RATE", "NO_SET_RATE", "NO_SET_RATE",
+ "INIT_RATE", "NO_SET_RATE", "NO_SET_RATE",
+ "INIT_RATE", "NO_SET_RATE", "NO_SET_RATE";
+ status = "ok";
+ };
+
+ vfe0: qcom,vfe0@a10000 {
+ cell-index = <0>;
+ compatible = "qcom,vfe47";
+ reg = <0xa10000 0x4000>,
+ <0xa40000 0x3000>;
+ reg-names = "vfe", "vfe_vbif";
+ interrupts = <0 314 0>;
+ interrupt-names = "vfe";
+ vdd-supply = <&gdsc_vfe0>;
+ mmagic-vdd-supply = <&gdsc_mmagic_camss>;
+ camss-vdd-supply = <&gdsc_camss_top>;
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_mmagic_camss_axi_clk>,
+ <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ahb_clk>,
+ <&clock_mmss clk_vfe0_clk_src>,
+ <&clock_mmss clk_camss_vfe0_clk>,
+ <&clock_mmss clk_camss_csi_vfe0_clk>,
+ <&clock_mmss clk_camss_vfe_ahb_clk>,
+ <&clock_mmss clk_camss_vfe0_ahb_clk>,
+ <&clock_mmss clk_camss_vfe_axi_clk>,
+ <&clock_mmss clk_camss_vfe0_stream_clk>,
+ <&clock_mmss clk_smmu_vfe_axi_clk>;
+ clock-names = "mmagic_ahb_clk",
+ "camss_axi_clk",
+ "camss_top_ahb_clk" , "camss_ahb_clk",
+ "vfe_clk_src", "camss_vfe_clk",
+ "camss_csi_vfe_clk",
+ "vfe_vbif_ahb_clk", "vfe_ahb_clk",
+ "bus_clk", "vfe_stream_clk", "smmu_vfe_axi_clk";
+ qcom,clock-rates = <0 0 0 0 320000000 0 0 0 0 0 0 0>;
+ status = "ok";
+ qos-entries = <8>;
+ qos-regs = <0x404 0x408 0x40c 0x410 0x414 0x418
+ 0x41c 0x420>;
+ qos-settings = <0xaaa9aaa9
+ 0xaaa9aaa9
+ 0xaaa9aaa9
+ 0xaaa9aaa9
+ 0xaaa9aaa9
+ 0xaaa9aaa9
+ 0xaaa9aaa9
+ 0x0001aaa9>;
+ vbif-entries = <1>;
+ vbif-regs = <0x124>;
+ vbif-settings = <0x3>;
+ ds-entries = <17>;
+ ds-regs = <0x424 0x428 0x42c 0x430 0x434
+ 0x438 0x43c 0x440 0x444 0x448 0x44c
+ 0x450 0x454 0x458 0x45c 0x460 0x464>;
+ ds-settings = <0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0x40000103>;
+ max-clk-svs = <300000000>;
+ max-clk-nominal = <465000000>;
+ max-clk-turbo = <600000000>;
+ };
+
+ vfe1: qcom,vfe1@a14000 {
+ cell-index = <1>;
+ compatible = "qcom,vfe47";
+ reg = <0xa14000 0x4000>,
+ <0xa40000 0x3000>;
+ reg-names = "vfe", "vfe_vbif";
+ interrupts = <0 315 0>;
+ interrupt-names = "vfe";
+ vdd-supply = <&gdsc_vfe1>;
+ mmagic-vdd-supply = <&gdsc_mmagic_camss>;
+ camss-vdd-supply = <&gdsc_camss_top>;
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_mmagic_camss_axi_clk>,
+ <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ahb_clk>,
+ <&clock_mmss clk_vfe1_clk_src>,
+ <&clock_mmss clk_camss_vfe1_clk>,
+ <&clock_mmss clk_camss_csi_vfe1_clk>,
+ <&clock_mmss clk_camss_vfe_ahb_clk>,
+ <&clock_mmss clk_camss_vfe1_ahb_clk>,
+ <&clock_mmss clk_camss_vfe_axi_clk>,
+ <&clock_mmss clk_camss_vfe1_stream_clk>,
+ <&clock_mmss clk_smmu_vfe_axi_clk>;
+ clock-names = "mmagic_ahb_clk",
+ "camss_axi_clk",
+ "camss_top_ahb_clk" , "camss_ahb_clk",
+ "vfe_clk_src", "camss_vfe_clk",
+ "camss_csi_vfe_clk",
+ "vfe_vbif_ahb_clk", "vfe_ahb_clk",
+ "bus_clk", "vfe_stream_clk", "smmu_vfe_axi_clk";
+ qcom,clock-rates = <0 0 0 0 320000000 0 0 0 0 0 0 0>;
+ status = "ok";
+ qos-entries = <8>;
+ qos-regs = <0x404 0x408 0x40c 0x410 0x414 0x418
+ 0x41c 0x420>;
+ qos-settings = <0xaaa9aaa9
+ 0xaaa9aaa9
+ 0xaaa9aaa9
+ 0xaaa9aaa9
+ 0xaaa9aaa9
+ 0xaaa9aaa9
+ 0xaaa9aaa9
+ 0x0001aaa9>;
+ vbif-entries = <1>;
+ vbif-regs = <0x124>;
+ vbif-settings = <0x3>;
+ ds-entries = <17>;
+ ds-regs = <0x424 0x428 0x42c 0x430 0x434
+ 0x438 0x43c 0x440 0x444 0x448 0x44c
+ 0x450 0x454 0x458 0x45c 0x460 0x464>;
+ ds-settings = <0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0xcccc0011
+ 0x40000103>;
+ max-clk-svs = <300000000>;
+ max-clk-nominal = <465000000>;
+ max-clk-turbo = <600000000>;
+ };
+
+ qcom,vfe {
+ compatible = "qcom,vfe";
+ num_child = <2>;
+ };
+
+ qcom,cam_smmu {
+ compatible = "qcom,msm-cam-smmu";
+
+ msm_cam_smmu_cb1 {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&vfe_smmu 0>,
+ <&vfe_smmu 1>,
+ <&vfe_smmu 2>,
+ <&vfe_smmu 3>;
+ label = "vfe";
+ qcom,scratch-buf-support;
+ };
+
+ msm_cam_smmu_cb3 {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&cpp_fd_smmu 0>;
+ label = "cpp";
+ };
+
+ msm_cam_smmu_cb4 {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&cpp_fd_smmu 1>;
+ label = "camera_fd";
+ };
+
+ msm_cam_smmu_cb5 {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&jpeg_smmu 0>;
+ label = "jpeg_enc0";
+ };
+
+ msm_cam_smmu_cb6 {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&jpeg_smmu 1>;
+ label = "jpeg_dma";
+ };
+
+ msm_cam_smmu_cb7 {
+ compatible = "qcom,msm-cam-smmu-cb";
+ iommus = <&jpeg_smmu 2>;
+ label = "jpeg_dec";
+ };
+ };
+
+ qcom,jpeg@a1c000 {
+ cell-index = <0>;
+ compatible = "qcom,jpeg";
+ reg = <0xa1c000 0x4000>,
+ <0xa60000 0x3000>;
+ reg-names = "jpeg";
+ interrupts = <0 316 0>;
+ interrupt-names = "jpeg";
+ mmagic-vdd-supply = <&gdsc_mmagic_camss>;
+ camss-vdd-supply = <&gdsc_camss_top>;
+ vdd-supply = <&gdsc_jpeg>;
+ qcom,vdd-names = "mmagic-vdd", "camss-vdd", "vdd";
+ clock-names = "mmss_mmagic_ahb_clk",
+ "core_clk", "iface_clk", "bus_clk0",
+ "camss_top_ahb_clk", "camss_ahb_clk",
+ "smmu_jpeg_axi_clk", "mmagic_camss_axi_clk";
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_camss_jpeg0_clk>,
+ <&clock_mmss clk_camss_jpeg_ahb_clk>,
+ <&clock_mmss clk_camss_jpeg_axi_clk>,
+ <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ahb_clk>,
+ <&clock_mmss clk_smmu_jpeg_axi_clk>,
+ <&clock_mmss clk_mmagic_camss_axi_clk>;
+ qcom,clock-rates = <0 320000000 0 0 0 0 0 0>;
+ qcom,vbif-reg-settings = <0x4 0x1>;
+ qcom,prefetch-reg-settings = <0x30c 0x1111>,
+ <0x318 0x31>,
+ <0x324 0x31>,
+ <0x330 0x31>,
+ <0x33c 0x0>;
+ status = "ok";
+ };
+
+ qcom,jpeg@a24000 {
+ cell-index = <2>;
+ compatible = "qcom,jpeg";
+ reg = <0xa24000 0x4000>,
+ <0xa60000 0x3000>;
+ reg-names = "jpeg";
+ interrupts = <0 318 0>;
+ interrupt-names = "jpeg";
+ mmagic-vdd-supply = <&gdsc_mmagic_camss>;
+ camss-vdd-supply = <&gdsc_camss_top>;
+ vdd-supply = <&gdsc_jpeg>;
+ qcom,vdd-names = "mmagic-vdd", "camss-vdd", "vdd";
+ clock-names = "mmss_mmagic_ahb_clk",
+ "core_clk", "iface_clk", "bus_clk0",
+ "camss_top_ahb_clk", "camss_ahb_clk",
+ "smmu_jpeg_axi_clk", "mmagic_camss_axi_clk";
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_camss_jpeg2_clk>,
+ <&clock_mmss clk_camss_jpeg_ahb_clk>,
+ <&clock_mmss clk_camss_jpeg_axi_clk>,
+ <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ahb_clk>,
+ <&clock_mmss clk_smmu_jpeg_axi_clk>,
+ <&clock_mmss clk_mmagic_camss_axi_clk>;
+ qcom,clock-rates = <0 266670000 0 0 0 0 0 0>;
+ qcom,vbif-reg-settings = <0x4 0x1>;
+ qcom,prefetch-reg-settings = <0x30c 0x1111>,
+ <0x318 0x0>,
+ <0x324 0x31>,
+ <0x330 0x31>,
+ <0x33c 0x31>;
+ status = "ok";
+ };
+
+ qcom,jpeg@aa0000 {
+ cell-index = <3>;
+ compatible = "qcom,jpeg_dma";
+ reg = <0xaa0000 0x4000>,
+ <0xa60000 0x3000>;
+ reg-names = "jpeg";
+ interrupts = <0 304 0>;
+ interrupt-names = "jpeg";
+ mmagic-vdd-supply = <&gdsc_mmagic_camss>;
+ camss-vdd-supply = <&gdsc_camss_top>;
+ vdd-supply = <&gdsc_jpeg>;
+ qcom,vdd-names = "mmagic-vdd", "camss-vdd", "vdd";
+ clock-names = "mmss_mmagic_ahb_clk",
+ "core_clk", "iface_clk", "bus_clk0",
+ "camss_top_ahb_clk", "camss_ahb_clk",
+ "smmu_jpeg_axi_clk", "mmagic_camss_axi_clk";
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_camss_jpeg_dma_clk>,
+ <&clock_mmss clk_camss_jpeg_ahb_clk>,
+ <&clock_mmss clk_camss_jpeg_axi_clk>,
+ <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_camss_ahb_clk>,
+ <&clock_mmss clk_smmu_jpeg_axi_clk>,
+ <&clock_mmss clk_mmagic_camss_axi_clk>;
+ qcom,clock-rates = <0 266670000 0 0 0 0 0 0>;
+ qcom,vbif-reg-settings = <0x4 0x1>;
+ qcom,prefetch-reg-settings = <0x18c 0x11>,
+ <0x1a0 0x31>,
+ <0x1b0 0x31>;
+ status = "ok";
+ };
+
+ qcom,irqrouter@a00000 {
+ cell-index = <0>;
+ compatible = "qcom,irqrouter";
+ reg = <0xa00000 0x4000>;
+ reg-names = "irqrouter";
+ };
+
+ cpp: qcom,cpp@a04000 {
+ cell-index = <0>;
+ compatible = "qcom,cpp";
+ reg = <0xa04000 0x100>,
+ <0xa80000 0x3000>,
+ <0xa18000 0x3000>,
+ <0x8c36D4 0x4>;
+ reg-names = "cpp", "cpp_vbif", "cpp_hw", "camss_cpp";
+ interrupts = <0 294 0>;
+ interrupt-names = "cpp";
+ mmagic-vdd-supply = <&gdsc_mmagic_camss>;
+ camss-vdd-supply = <&gdsc_camss_top>;
+ vdd-supply = <&gdsc_cpp>;
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_mmagic_camss_axi_clk>,
+ <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_cpp_clk_src>,
+ <&clock_mmss clk_camss_cpp_ahb_clk>,
+ <&clock_mmss clk_camss_cpp_axi_clk>,
+ <&clock_mmss clk_camss_cpp_clk>,
+ <&clock_mmss clk_camss_micro_ahb_clk>,
+ <&clock_mmss clk_camss_ahb_clk>,
+ <&clock_mmss clk_smmu_cpp_axi_clk>,
+ <&clock_mmss clk_camss_cpp_vbif_ahb_clk>;
+ clock-names = "mmss_mmagic_ahb_clk",
+ "mmagic_camss_axi_clk", "camss_top_ahb_clk",
+ "cpp_core_clk", "camss_cpp_ahb_clk",
+ "camss_cpp_axi_clk", "camss_cpp_clk",
+ "micro_iface_clk", "camss_ahb_clk",
+ "smmu_cpp_axi_clk", "cpp_vbif_ahb_clk";
+ qcom,clock-rates = <0 0 0 465000000 0 0 465000000 0 0 0 0>;
+ qcom,min-clock-rate = <200000000>;
+ qcom,bus-master = <1>;
+ qcom,vbif-qos-setting = <0x20 0x10000000>,
+ <0x24 0x10000000>,
+ <0x28 0x10000000>,
+ <0x2C 0x10000000>;
+ status = "ok";
+ qcom,cpp-fw-payload-info {
+ qcom,stripe-base = <553>;
+ qcom,plane-base = <481>;
+ qcom,stripe-size = <61>;
+ qcom,plane-size = <24>;
+ qcom,fe-ptr-off = <11>;
+ qcom,we-ptr-off = <23>;
+ qcom,ref-fe-ptr-off = <17>;
+ qcom,ref-we-ptr-off = <36>;
+ qcom,we-meta-ptr-off = <42>;
+ qcom,fe-mmu-pf-ptr-off = <6>;
+ qcom,ref-fe-mmu-pf-ptr-off = <9>;
+ qcom,we-mmu-pf-ptr-off = <12>;
+ qcom,dup-we-mmu-pf-ptr-off = <17>;
+ qcom,ref-we-mmu-pf-ptr-off = <22>;
+ qcom,set-group-buffer-len = <135>;
+ qcom,dup-frame-indicator-off = <70>;
+ };
+ };
+
+ qcom,fd@aa4000 {
+ cell-index = <0>;
+ compatible = "qcom,face-detection";
+ reg = <0xaa4000 0x800>,
+ <0xaa5000 0x400>,
+ <0xa80000 0x3000>;
+ reg-names = "fd_core", "fd_misc", "fd_vbif";
+ interrupts = <0 293 0>;
+ interrupt-names = "fd";
+ mmagic-vdd-supply = <&gdsc_mmagic_camss>;
+ camss-vdd-supply = <&gdsc_camss_top>;
+ vdd-supply = <&gdsc_fd>;
+ qcom,vdd-names = "mmagic-vdd", "camss-vdd", "vdd";
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_mmagic_camss_axi_clk>,
+ <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_fd_core_clk_src>,
+ <&clock_mmss clk_fd_core_clk>,
+ <&clock_mmss clk_fd_core_uar_clk>,
+ <&clock_mmss clk_fd_ahb_clk>,
+ <&clock_mmss clk_smmu_cpp_axi_clk>,
+ <&clock_mmss clk_camss_ahb_clk>,
+ <&clock_mmss clk_camss_cpp_axi_clk>,
+ <&clock_mmss clk_camss_cpp_vbif_ahb_clk>,
+ <&clock_mmss clk_smmu_cpp_ahb_clk>;
+ clock-names = "mmss_mmagic_ahb_clk",
+ "mmagic_camss_axi_clk", "camss_top_ahb_clk",
+ "fd_core_clk_src", "fd_core_clk",
+ "fd_core_uar_clk", "fd_ahb_clk",
+ "smmu_cpp_axi_clk", "camss_ahb_clk",
+ "camss_cpp_axi_clk", "cpp_vbif_ahb_clk",
+ "smmu_cpp_ahb_clk";
+ clock-rates = <0 0 0 400000000 400000000>,
+ <400000000 80000000 0 0 0 0 0>;
+ qcom,bus-bandwidth-vectors = <13000000 13000000>,
+ <45000000 45000000>,
+ <90000000 90000000>;
+ qcom,fd-vbif-reg-settings = <0x20 0x10000000 0x30000000>,
+ <0x24 0x10000000 0x30000000>,
+ <0x28 0x10000000 0x30000000>,
+ <0x2c 0x10000000 0x30000000>;
+ qcom,fd-misc-reg-settings = <0x20 0x2 0x3>,
+ <0x24 0x2 0x3>;
+ status = "ok";
+ };
+
+ cci: qcom,cci@a0c000 {
+ cell-index = <0>;
+ compatible = "qcom,cci";
+ reg = <0xa0c000 0x4000>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-names = "cci";
+ interrupts = <0 295 0>;
+ interrupt-names = "cci";
+ status = "ok";
+ mmagic-supply = <&gdsc_mmagic_camss>;
+ gdscr-supply = <&gdsc_camss_top>;
+ qcom,cam-vreg-name = "mmagic", "gdscr";
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_camss_top_ahb_clk>,
+ <&clock_mmss clk_cci_clk_src>,
+ <&clock_mmss clk_camss_cci_ahb_clk>,
+ <&clock_mmss clk_camss_cci_clk>,
+ <&clock_mmss clk_camss_ahb_clk>;
+ clock-names = "mmagic_camss_ahb_clk", "camss_top_ahb_clk",
+ "cci_src_clk", "cci_ahb_clk", "camss_cci_clk",
+ "camss_ahb_clk";
+ qcom,clock-rates = <0 0 19200000 0 0 0>,
+ <0 0 37500000 0 0 0>;
+ pinctrl-names = "cci_default", "cci_suspend";
+ pinctrl-0 = <&cci0_active &cci1_active>;
+ pinctrl-1 = <&cci0_suspend &cci1_suspend>;
+ gpios = <&tlmm 17 0>,
+ <&tlmm 18 0>,
+ <&tlmm 19 0>,
+ <&tlmm 20 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_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/msm8996-cdp.dtsi b/arch/arm64/boot/dts/qcom/msm8996-cdp.dtsi
new file mode 100644
index 000000000000..f458d7b0faed
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-cdp.dtsi
@@ -0,0 +1,774 @@
+/* Copyright (c) 2015, 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 "msm8996-pinctrl.dtsi"
+#include "msm8996-camera-sensor-cdp.dtsi"
+#include "msm8996-wsa881x.dtsi"
+
+/ {
+ bluetooth: bt_qca6174 {
+ compatible = "qca,qca6174";
+ qca,bt-reset-gpio = <&pm8994_gpios 19 0>; /* BT_EN */
+ qca,bt-vdd-core-supply = <&pm8994_s3>;
+ qca,bt-vdd-pa-supply = <&rome_vreg>;
+ qca,bt-vdd-io-supply = <&pm8994_s4>;
+ qca,bt-vdd-xtal-supply = <&pm8994_l30>;
+ qca,bt-vdd-core-voltage-level = <1300000 1800000>;
+ qca,bt-vdd-io-voltage-level = <1800000 1800000>;
+ qca,bt-vdd-xtal-voltage-level = <1800000 1800000>;
+ };
+};
+
+&spi_eth_vreg {
+ status = "ok";
+};
+
+&uartblsp2dm1 {
+ status = "ok";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart_console_active>;
+};
+
+&ufs_ice {
+ status = "ok";
+};
+
+&sdcc1_ice {
+ status = "ok";
+};
+
+&ufsphy1 {
+ status = "ok";
+};
+
+&ufs1 {
+ status = "ok";
+};
+
+&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 = <110 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,clk-rates = <400000 20000000 25000000 50000000 96000000 192000000 384000000>;
+ qcom,ice-clk-rates = <300000000 150000000>;
+ qcom,nonremovable;
+ 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>;
+
+ 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>;
+
+ qcom,clk-rates = <400000 20000000 25000000 50000000 100000000 200000000>;
+ qcom,bus-speed-mode = "SDR12", "SDR25", "SDR50", "DDR50", "SDR104";
+
+ cd-gpios = <&tlmm 95 0x1>;
+
+ status = "ok";
+};
+
+/* 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>;
+};
+
+&pmi8994_charger {
+ qcom,charging-disabled;
+};
+
+&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>;
+ };
+
+ chan@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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>;
+ };
+};
+
+&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;
+ };
+
+ chan@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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>;
+ qcom,btm-channel-number = <0x88>;
+ 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 "msm8996-mdss-panels.dtsi"
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&mdss_dsi {
+ hw-config = "split_dsi";
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_dual_sharp_video>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
+ qcom,platform-te-gpio = <&tlmm 10 0>;
+ qcom,platform-reset-gpio = <&tlmm 8 0>;
+ qcom,platform-bklight-en-gpio = <&pm8994_gpios 14 0>;
+};
+
+&mdss_dsi1 {
+ qcom,dsi-pref-prim-pan = <&dsi_dual_sharp_video>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
+ qcom,platform-te-gpio = <&tlmm 10 0>;
+ qcom,platform-reset-gpio = <&tlmm 8 0>;
+ qcom,platform-bklight-en-gpio = <&pm8994_gpios 14 0>;
+};
+
+&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>;
+};
+
+&labibb {
+ status = "ok";
+ qpnp,qpnp-labibb-mode = "lcd";
+};
+
+&dsi_dual_sharp_video {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_dual_nt35597_video {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_dual_nt35597_cmd {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+ qcom,partial-update-enabled;
+ qcom,panel-roi-alignment = <720 128 720 64 720 64>;
+};
+
+&dsi_nt35597_dsc_video {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_nt35597_dsc_cmd {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_dual_jdi_video {
+ pwms = <&pmi8994_pwm_4 0 0>;
+ pwm-names = "backlight";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pwm-pmi;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,5v-boost-gpio = <&pmi8994_gpios 8 0>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_dual_jdi_cmd {
+ pwms = <&pmi8994_pwm_4 0 0>;
+ pwm-names = "backlight";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pwm-pmi;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,5v-boost-gpio = <&pmi8994_gpios 8 0>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+ qcom,partial-update-enabled;
+ qcom,panel-roi-alignment = <4 2 4 2 20 20>;
+};
+
+&dsi_dual_jdi_4k_nofbc_video {
+ pwms = <&pmi8994_pwm_4 0 0>;
+ pwm-names = "backlight";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pwm-pmi;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&pm8994_gpios {
+ gpio@c700 { /* GPIO 8 - WLAN_EN */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c800 { /* GPIO 9 - Rome 3.3V control */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c100 { /* GPIO 2 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c300 { /* GPIO 4 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c400 { /* GPIO 5 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@cd00 { /* GPIO 14 - lcd_bklt_reg_en */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,invert = <1>; /* output hight initially */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,out-strength = <1>; /* Low drive strength */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ status = "okay";
+ };
+
+ 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>;
+ status = "okay";
+ };
+
+ gpio@d100 { /* GPIO 18 - Rome sleep clock */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@d200 { /* GPIO 19 - Rome BT Reset */
+ 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 */
+ status = "okay";
+ };
+};
+
+&soc {
+ i2c@75ba000 {
+ synaptics@20 {
+ compatible = "synaptics,dsx";
+ reg = <0x20>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <125 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 = <&tlmm 89 0x00>;
+ synaptics,irq-gpio = <&tlmm 125 0x2008>;
+ synaptics,disable-gpios;
+ synaptics,fw-name = "PR1702898-s3528t_00350002.img";
+ };
+ };
+
+ 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>;
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+
+ vol_up {
+ label = "volume_up";
+ gpios = <&pm8994_gpios 2 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-9335 {
+ qcom,model = "msm8996-tasha-cdp-snd-card";
+ qcom,hdmi-audio-rx;
+ asoc-codec = <&stub_codec>, <&hdmi_audio>;
+ asoc-codec-names = "msm-stub-codec.1", "msm-hdmi-audio-codec-rx";
+ qcom,us-euro-gpios = <&pm8994_mpps 2 0>;
+ qcom,wsa-max-devs = <2>;
+ qcom,wsa-devs = <&wsa881x_211>, <&wsa881x_212>,
+ <&wsa881x_213>, <&wsa881x_214>;
+ qcom,wsa-aux-dev-prefix = "SpkrLeft", "SpkrRight",
+ "SpkrLeft", "SpkrRight";
+ };
+};
+
+&pm8994_mpps {
+ 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 */
+ status = "okay";
+ };
+
+ 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>;
+ status = "okay";
+ };
+
+ mpp@a400 { /* MPP 5 */
+ 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 */
+ status = "okay";
+ };
+};
+
+&pmi8994_gpios {
+ gpio@c700 { /* GPIO 8, lcd_reg_en, 5V boost */
+ qcom,mode = <1>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ qcom,invert = <1>; /* need invert = 0 */
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+
+ gpio@c100 { /* GPIO 2 SPKR_SD_N */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c200 { /* GPIO 3 SPKR_SD_N */
+ 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 */
+ status = "okay";
+ };
+};
+
+&pmi8994_pwm_4 {
+ qcom,channel-owner = "lcd_bl";
+ qcom,lpg-dtest-line = <4>;
+ qcom,dtest-output = <1>;
+ status = "okay";
+};
+
+&pmi8994_mpps {
+ mpp@a000 { /* MPP 1 */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,vin-sel = <2>; /* S4 1.8V */
+ qcom,src-sel = <7>; /* DTEST4 */
+ qcom,master-en = <1>; /* Enable MPP */
+ status = "okay";
+ };
+ mpp@a300 { /* MPP 4 */
+ /* WLED FET */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,vin-sel = <0>; /* VIN0 */
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+};
+
+&pmi8994_haptics {
+ status = "okay";
+};
+
+&blsp1_uart2 {
+ status = "ok";
+};
+
+&usb2s {
+ status = "disabled";
+ dwc3@7600000 {
+ dr_mode = "host";
+ };
+};
+
+&i2c_7 {
+ 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>;
+ va-supply = <&rome_vreg>;
+ silabs,va-supply-voltage = <3300000 3300000>;
+ pinctrl-names = "pmx_fm_active","pmx_fm_suspend";
+ pinctrl-0 = <&fm_int_active &fm_status_int_active &fm_rst_active>;
+ pinctrl-1 = <&fm_int_suspend &fm_status_int_suspend &fm_rst_suspend>;
+ silabs,reset-gpio = <&tlmm 39 0>;
+ silabs,int-gpio = <&tlmm 38 0>;
+ silabs,status-gpio = <&tlmm 78 0>;
+ #address-cells = <0>;
+ interrupts = <0 1>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0xffffffff>;
+ interrupt-map = <
+ 0 &tlmm 38 2
+ 1 &tlmm 78 1
+ >;
+ interrupt-names = "silabs_fm_int", "silabs_fm_status_int";
+ };
+};
+
+&spi_0 {
+ ethernet@2 {
+ compatible = "micrel,ks8851";
+ reg = <2>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <11 0>;
+ spi-max-frequency = <960000>;
+ vdd-supply = <&spi_eth_vreg>;
+ reset-gpios = <&tlmm 79 0>;
+ };
+};
+
+&wil6210 {
+ status = "ok";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-coresight-v2.dtsi b/arch/arm64/boot/dts/qcom/msm8996-coresight-v2.dtsi
new file mode 100644
index 000000000000..16a77dd10250
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-coresight-v2.dtsi
@@ -0,0 +1,1125 @@
+/* Copyright (c) 2015, 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/interrupt-controller/arm-gic.h>
+
+&soc {
+ tmc_etr: tmc@3028000 {
+ compatible = "arm,coresight-tmc";
+ reg = <0x3028000 0x1000>,
+ <0x3084000 0x15000>;
+ reg-names = "tmc-base", "bam-base";
+ interrupts = <GIC_SPI 270 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "byte-cntr-irq";
+
+ qcom,memory-size = <0x400000>;
+ qcom,tmc-flush-powerdown;
+ qcom,sg-enable;
+
+ coresight-id = <0>;
+ coresight-name = "coresight-tmc-etr";
+ coresight-nr-inports = <1>;
+ coresight-ctis = <&cti0 &cti8>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpiu: tpiu@3020000 {
+ compatible = "arm,coresight-tpiu";
+ reg = <0x3020000 0x1000>;
+ reg-names = "tpiu-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_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ replicator: replicator@3026000 {
+ compatible = "qcom,coresight-replicator";
+ reg = <0x3026000 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_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tmc_etf: tmc@3027000 {
+ compatible = "arm,coresight-tmc";
+ reg = <0x3027000 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_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_merg: funnel@3025000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x3025000 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_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_in0: funnel@3021000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x3021000 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_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_in1: funnel@3022000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x3022000 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_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_in2: funnel@3023000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x3023000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <7>;
+ coresight-name = "coresight-funnel-in2";
+ coresight-nr-inports = <8>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_merg>;
+ coresight-child-ports = <2>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_apss_merge: funnel@3bc0000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x3bc0000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <8>;
+ coresight-name = "coresight-funnel-apss-merge";
+ coresight-nr-inports = <4>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in1>;
+ coresight-child-ports = <6>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_apss0: funnel@39b0000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x39b0000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <9>;
+ coresight-name = "coresight-funnel-apss0";
+ coresight-nr-inports = <2>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss_merge>;
+ coresight-child-ports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_apss1: funnel@3bb0000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x3bb0000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <10>;
+ coresight-name = "coresight-funnel-apss1";
+ coresight-nr-inports = <2>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss_merge>;
+ coresight-child-ports = <1>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_mmss: funnel@3184000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x3184000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <11>;
+ coresight-name = "coresight-funnel-mmss";
+ coresight-nr-inports = <8>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <1>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpda: tpda@3003000 {
+ compatible = "qcom,coresight-tpda";
+ reg = <0x3003000 0x1000>;
+ reg-names = "tpda-base";
+
+ coresight-id = <13>;
+ coresight-name = "coresight-tpda";
+ coresight-nr-inports = <32>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <3>;
+
+ qcom,tpda-atid = <65>;
+ qcom,bc-elem-size = <3 32>,
+ <6 32>;
+ qcom,tc-elem-size = <3 32>,
+ <6 32>;
+ qcom,dsb-elem-size = <3 32>,
+ <6 32>,
+ <7 32>;
+ qcom,cmb-elem-size = <0 32>,
+ <1 32>,
+ <2 32>,
+ <6 64>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpda_apss: tpda@39E0000 {
+ compatible = "qcom,coresight-tpda";
+ reg = <0x39E0000 0x1000>;
+ reg-names = "tpda-base";
+
+ coresight-id = <14>;
+ coresight-name = "coresight-tpda-apss";
+ coresight-nr-inports = <32>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss_merge>;
+ coresight-child-ports = <2>;
+
+ qcom,tpda-atid = <66>;
+ qcom,bc-elem-size = <0 32>,
+ <1 32>;
+ qcom,tc-elem-size = <0 32>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpdm_vsense: tpdm@3038000 {
+ compatible = "qcom,coresight-tpdm";
+ reg = <0x3038000 0x1000>;
+ reg-names = "tpdm-base";
+
+ coresight-id = <15>;
+ coresight-name = "coresight-tpdm-vsense";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tpda>;
+ coresight-child-ports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpdm_dcc: tpdm@3054000 {
+ compatible = "qcom,coresight-tpdm";
+ reg = <0x3054000 0x1000>;
+ reg-names = "tpdm-base";
+
+ coresight-id = <16>;
+ coresight-name = "coresight-tpdm-dcc";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tpda>;
+ coresight-child-ports = <1>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpdm_prng: tpdm@304c000 {
+ compatible = "qcom,coresight-tpdm";
+ reg = <0x304c000 0x1000>;
+ reg-names = "tpdm-base";
+
+ coresight-id = <17>;
+ coresight-name = "coresight-tpdm-prng";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tpda>;
+ coresight-child-ports = <2>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpdm_dsat: tpdm@3185000 {
+ compatible = "qcom,coresight-tpdm";
+ reg = <0x3185000 0x1000>;
+ reg-names = "tpdm-base";
+
+ coresight-id = <18>;
+ coresight-name = "coresight-tpdm-dsat";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tpda>;
+ coresight-child-ports = <3>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpdm_pimem: tpdm@3050000 {
+ compatible = "qcom,coresight-tpdm";
+ reg = <0x3050000 0x1000>;
+ reg-names = "tpdm-base";
+
+ coresight-id = <19>;
+ coresight-name = "coresight-tpdm-pimem";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tpda>;
+ coresight-child-ports = <6>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpdm_hwevents: tpdm@3004000 {
+ compatible = "qcom,coresight-tpdm";
+ reg = <0x3004000 0x1000>;
+ reg-names = "tpdm-base";
+
+ coresight-id = <20>;
+ coresight-name = "coresight-tpdm-hwevents";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tpda>;
+ coresight-child-ports = <7>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpdm_m4m: tpdm@38e0000 {
+ compatible = "qcom,coresight-tpdm";
+ reg = <0x38e0000 0x1000>;
+ reg-names = "tpdm-base";
+
+ coresight-id = <21>;
+ coresight-name = "coresight-tpdm-m4m";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tpda_apss>;
+ coresight-child-ports = <0>;
+
+ qcom,clk-enable;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpdm_l3pmu: tpdm@3aec000 {
+ compatible = "qcom,coresight-tpdm";
+ reg = <0x3aec000 0x1000>;
+ reg-names = "tpdm-base";
+
+ coresight-id = <22>;
+ coresight-name = "coresight-tpdm-l3pmu";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tpda_apss>;
+ coresight-child-ports = <1>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ stm: stm@3002000 {
+ compatible = "arm,coresight-stm";
+ reg = <0x3002000 0x1000>,
+ <0x8280000 0x180000>;
+ reg-names = "stm-base", "stm-data-base";
+
+ coresight-id = <23>;
+ coresight-name = "coresight-stm";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <7>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm0: etm@3840000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0x3840000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <24>;
+ coresight-name = "coresight-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss0>;
+ coresight-child-ports = <0>;
+ coresight-etm-cpu = <&CPU0>;
+
+ qcom,noovrflw-enable;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm1: etm@3940000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0x3940000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <25>;
+ coresight-name = "coresight-etm1";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss0>;
+ coresight-child-ports = <1>;
+ coresight-etm-cpu = <&CPU1>;
+
+ qcom,noovrflw-enable;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm2: etm@3a40000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0x3a40000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <26>;
+ coresight-name = "coresight-etm2";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss1>;
+ coresight-child-ports = <0>;
+ coresight-etm-cpu = <&CPU2>;
+
+ qcom,noovrflw-enable;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm3: etm@3b40000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0x3b40000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <27>;
+ coresight-name = "coresight-etm3";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss1>;
+ coresight-child-ports = <1>;
+ coresight-etm-cpu = <&CPU3>;
+
+ qcom,noovrflw-enable;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ audio_etm0 {
+ compatible = "qcom,coresight-remote-etm";
+
+ coresight-id = <28>;
+ coresight-name = "coresight-audio-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <2>;
+
+ qcom,inst-id = <5>;
+ };
+
+ rpm_etm0 {
+ compatible = "qcom,coresight-remote-etm";
+
+ coresight-id = <29>;
+ coresight-name = "coresight-rpm-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <0>;
+
+ qcom,inst-id = <4>;
+ };
+
+ modem_etm0 {
+ compatible = "qcom,coresight-remote-etm";
+
+ coresight-id = <30>;
+ coresight-name = "coresight-modem-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in2>;
+ coresight-child-ports = <0>;
+
+ qcom,inst-id = <2>;
+ };
+
+ csr: csr@3001000 {
+ compatible = "qcom,coresight-csr";
+ reg = <0x3001000 0x1000>;
+ reg-names = "csr-base";
+
+ coresight-id = <31>;
+ coresight-name = "coresight-csr";
+ coresight-nr-inports = <0>;
+
+ qcom,blk-size = <1>;
+ };
+
+ cti0: cti@3010000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3010000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <32>;
+ coresight-name = "coresight-cti0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti1: cti@3011000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3011000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <33>;
+ coresight-name = "coresight-cti1";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti2: cti@3012000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3012000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <34>;
+ coresight-name = "coresight-cti2";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti3: cti@3013000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3013000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <35>;
+ coresight-name = "coresight-cti3";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti4: cti@3014000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3014000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <36>;
+ coresight-name = "coresight-cti4";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti5: cti@3015000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3015000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <37>;
+ coresight-name = "coresight-cti5";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti6: cti@3016000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3016000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <38>;
+ coresight-name = "coresight-cti6";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc 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@3017000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3017000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <39>;
+ coresight-name = "coresight-cti7";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti8: cti@3018000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3018000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <40>;
+ coresight-name = "coresight-cti8";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti9: cti@3019000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3019000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <41>;
+ coresight-name = "coresight-cti9";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti10: cti@301a000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x301a000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <42>;
+ coresight-name = "coresight-cti10";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti11: cti@301b000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x301b000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <43>;
+ coresight-name = "coresight-cti11";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti12: cti@301c000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x301c000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <44>;
+ coresight-name = "coresight-cti12";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti13: cti@301d000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x301d000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <45>;
+ coresight-name = "coresight-cti13";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti14: cti@301e000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x301e000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <46>;
+ coresight-name = "coresight-cti14";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_cpu0: cti@3820000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3820000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <47>;
+ coresight-name = "coresight-cti-cpu0";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_cpu1: cti@3920000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3920000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <48>;
+ coresight-name = "coresight-cti-cpu1";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU1>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_cpu2: cti@3a20000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3a20000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <49>;
+ coresight-name = "coresight-cti-cpu2";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU2>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_cpu3: cti@3b20000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3b20000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <50>;
+ coresight-name = "coresight-cti-cpu3";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU3>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_pmu_cpu0: cti@38a0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x38a0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <51>;
+ coresight-name = "coresight-cti-pmu-cpu0";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_pmu_cpu1: cti@39a0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x39a0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <52>;
+ coresight-name = "coresight-cti-pmu-cpu1";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU1>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_pmu_cpu2: cti@3aa0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3aa0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <53>;
+ coresight-name = "coresight-cti-pmu-cpu2";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU2>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_pmu_cpu3: cti@3ba0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3ba0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <54>;
+ coresight-name = "coresight-cti-pmu-cpu3";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU3>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_l2pmu_cluster0: cti@38b0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x38b0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <55>;
+ coresight-name = "coresight-cti-l2pmu-cluster0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_l2pmu_cluster1: cti@3ab0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3ab0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <56>;
+ coresight-name = "coresight-cti-l2pmu-cluster1";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_l3: cti@3ad0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3ad0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <57>;
+ coresight-name = "coresight-cti-l3";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_lm_cluster0: cti@39c0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x39c0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <58>;
+ coresight-name = "coresight-cti-lm-cluster0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_lm_cluster1: cti@39d0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x39d0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <59>;
+ coresight-name = "coresight-cti-lm-cluster1";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_m4m: cti@38d0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x38d0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <60>;
+ coresight-name = "coresight-cti-m4m";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_tpda_apss: cti@39f0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x39f0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <61>;
+ coresight-name = "coresight-cti-tpda-apss";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_venus_cpu0: cti@3180000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3180000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <64>;
+ coresight-name = "coresight-cti-venus-cpu0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_audio_cpu0: cti@3044000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3044000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <65>;
+ coresight-name = "coresight-cti-audio-cpu0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_rpm_cpu0: cti@3048000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3048000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <66>;
+ coresight-name = "coresight-cti-rpm-cpu0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_modem_cpu0: cti@3040000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3040000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <67>;
+ coresight-name = "coresight-cti-modem-cpu0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ hwevent: hwevent@98200c0 {
+ compatible = "qcom,coresight-hwevent";
+ reg = <0x98200c0 0x100>,
+ <0x828018 0x80>,
+ <0x8b5260 0x80>,
+ <0x90137c 0x4>,
+ <0x7ab160 0x80>,
+ <0x358000 0x40>,
+ <0x359000 0x40>,
+ <0x600058 0x80>,
+ <0x608058 0x80>,
+ <0x610058 0x80>,
+ <0x7ab360 0x80>,
+ <0x7ab760 0x80>,
+ <0x7abf60 0x80>;
+ reg-names = "hmss-mux", "mmss-mux", "dsa-stm", "mdss-mdp",
+ "phss-hwev", "gcc-eve1", "gcc-eve2", "pcie0-hwev",
+ "pcie1-hwev", "pcie2-hwev", "tcsr-mux", "mss-mux0",
+ "mss-mux1";
+
+ coresight-id = <70>;
+ coresight-name = "coresight-hwevent";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>,
+ <&clock_mmss clk_mmss_misc_ahb_clk>;
+ clock-names = "core_clk", "core_a_clk", "core_mmss_clk";
+
+ qcom,hwevent-clks = "core_mmss_clk";
+ };
+
+ fuse: fuse@7602c {
+ compatible = "arm,coresight-fuse-v3";
+ reg = <0x7602c 0xc>,
+ <0x76014 0x4>;
+ reg-names = "fuse-base", "qpdi-fuse-base";
+
+ coresight-id = <71>;
+ coresight-name = "coresight-fuse";
+ coresight-nr-inports = <0>;
+ };
+
+ qpdi: qpdi@7a1000 {
+ compatible = "qcom,coresight-qpdi";
+ reg = <0x7a1000 0x4>;
+ reg-names = "qpdi-base";
+
+ coresight-id = <72>;
+ coresight-name = "coresight-qpdi";
+ coresight-nr-inports = <0>;
+
+ 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>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-coresight-v3.dtsi b/arch/arm64/boot/dts/qcom/msm8996-coresight-v3.dtsi
new file mode 100644
index 000000000000..cd7a319252b0
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-coresight-v3.dtsi
@@ -0,0 +1,1098 @@
+/* Copyright (c) 2015, 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@3028000 {
+ compatible = "arm,coresight-tmc";
+ reg = <0x3028000 0x1000>,
+ <0x3084000 0x15000>;
+ reg-names = "tmc-base", "bam-base";
+ interrupts = <0 270 0>;
+ interrupt-names = "byte-cntr-irq";
+
+ qcom,memory-size = <0x400000>;
+ qcom,tmc-flush-powerdown;
+ qcom,sg-enable;
+
+ coresight-id = <0>;
+ coresight-name = "coresight-tmc-etr";
+ coresight-nr-inports = <1>;
+ coresight-ctis = <&cti0 &cti8>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpiu: tpiu@3020000 {
+ compatible = "arm,coresight-tpiu";
+ reg = <0x3020000 0x1000>;
+ reg-names = "tpiu-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_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ replicator: replicator@3026000 {
+ compatible = "qcom,coresight-replicator";
+ reg = <0x3026000 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_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tmc_etf: tmc@3027000 {
+ compatible = "arm,coresight-tmc";
+ reg = <0x3027000 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_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_merg: funnel@3025000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x3025000 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_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_in0: funnel@3021000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x3021000 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_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_in1: funnel@3022000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x3022000 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_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_in2: funnel@3023000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x3023000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <7>;
+ coresight-name = "coresight-funnel-in2";
+ coresight-nr-inports = <8>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_merg>;
+ coresight-child-ports = <2>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_apss_merge: funnel@3bc0000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x3bc0000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <8>;
+ coresight-name = "coresight-funnel-apss-merge";
+ coresight-nr-inports = <4>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in1>;
+ coresight-child-ports = <6>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_apss0: funnel@39b0000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x39b0000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <9>;
+ coresight-name = "coresight-funnel-apss0";
+ coresight-nr-inports = <2>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss_merge>;
+ coresight-child-ports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_apss1: funnel@3bb0000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x3bb0000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <10>;
+ coresight-name = "coresight-funnel-apss1";
+ coresight-nr-inports = <2>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss_merge>;
+ coresight-child-ports = <1>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ funnel_mmss: funnel@3184000 {
+ compatible = "arm,coresight-funnel";
+ reg = <0x3184000 0x1000>;
+ reg-names = "funnel-base";
+
+ coresight-id = <11>;
+ coresight-name = "coresight-funnel-mmss";
+ coresight-nr-inports = <8>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <1>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpda: tpda@3003000 {
+ compatible = "qcom,coresight-tpda";
+ reg = <0x3003000 0x1000>;
+ reg-names = "tpda-base";
+
+ coresight-id = <13>;
+ coresight-name = "coresight-tpda";
+ coresight-nr-inports = <32>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <3>;
+
+ qcom,tpda-atid = <65>;
+ qcom,bc-elem-size = <3 32>,
+ <6 32>;
+ qcom,tc-elem-size = <3 32>,
+ <6 32>;
+ qcom,dsb-elem-size = <3 32>,
+ <6 32>,
+ <7 32>;
+ qcom,cmb-elem-size = <0 32>,
+ <1 32>,
+ <2 32>,
+ <6 64>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpda_apss: tpda@39e0000 {
+ compatible = "qcom,coresight-tpda";
+ reg = <0x39e0000 0x1000>;
+ reg-names = "tpda-base";
+
+ coresight-id = <14>;
+ coresight-name = "coresight-tpda-apss";
+ coresight-nr-inports = <32>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss_merge>;
+ coresight-child-ports = <2>;
+
+ qcom,tpda-atid = <66>;
+ qcom,bc-elem-size = <0 32>,
+ <1 32>;
+ qcom,tc-elem-size = <0 32>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpdm_vsense: tpdm@3038000 {
+ compatible = "qcom,coresight-tpdm";
+ reg = <0x3038000 0x1000>;
+ reg-names = "tpdm-base";
+
+ coresight-id = <15>;
+ coresight-name = "coresight-tpdm-vsense";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tpda>;
+ coresight-child-ports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpdm_dcc: tpdm@3054000 {
+ compatible = "qcom,coresight-tpdm";
+ reg = <0x3054000 0x1000>;
+ reg-names = "tpdm-base";
+
+ coresight-id = <16>;
+ coresight-name = "coresight-tpdm-dcc";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tpda>;
+ coresight-child-ports = <1>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpdm_prng: tpdm@304c000 {
+ compatible = "qcom,coresight-tpdm";
+ reg = <0x304c000 0x1000>;
+ reg-names = "tpdm-base";
+
+ coresight-id = <17>;
+ coresight-name = "coresight-tpdm-prng";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tpda>;
+ coresight-child-ports = <2>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpdm_dsat: tpdm@3185000 {
+ compatible = "qcom,coresight-tpdm";
+ reg = <0x3185000 0x1000>;
+ reg-names = "tpdm-base";
+
+ coresight-id = <18>;
+ coresight-name = "coresight-tpdm-dsat";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tpda>;
+ coresight-child-ports = <3>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpdm_pimem: tpdm@3050000 {
+ compatible = "qcom,coresight-tpdm";
+ reg = <0x3050000 0x1000>;
+ reg-names = "tpdm-base";
+
+ coresight-id = <19>;
+ coresight-name = "coresight-tpdm-pimem";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tpda>;
+ coresight-child-ports = <6>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpdm_hwevents: tpdm@3004000 {
+ compatible = "qcom,coresight-tpdm";
+ reg = <0x3004000 0x1000>;
+ reg-names = "tpdm-base";
+
+ coresight-id = <20>;
+ coresight-name = "coresight-tpdm-hwevents";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tpda>;
+ coresight-child-ports = <7>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ tpdm_m4m: tpdm@38e0000 {
+ compatible = "qcom,coresight-tpdm";
+ reg = <0x38e0000 0x1000>;
+ reg-names = "tpdm-base";
+
+ coresight-id = <21>;
+ coresight-name = "coresight-tpdm-m4m";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&tpda_apss>;
+ coresight-child-ports = <0>;
+
+ qcom,clk-enable;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ stm: stm@3002000 {
+ compatible = "arm,coresight-stm";
+ reg = <0x3002000 0x1000>,
+ <0x8280000 0x180000>;
+ reg-names = "stm-base", "stm-data-base";
+
+ coresight-id = <23>;
+ coresight-name = "coresight-stm";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <7>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm0: etm@3840000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0x3840000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <24>;
+ coresight-name = "coresight-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss0>;
+ coresight-child-ports = <0>;
+ coresight-etm-cpu = <&CPU0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm1: etm@3940000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0x3940000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <25>;
+ coresight-name = "coresight-etm1";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss0>;
+ coresight-child-ports = <1>;
+ coresight-etm-cpu = <&CPU1>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm2: etm@3a40000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0x3a40000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <26>;
+ coresight-name = "coresight-etm2";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss1>;
+ coresight-child-ports = <0>;
+ coresight-etm-cpu = <&CPU2>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ etm3: etm@3b40000 {
+ compatible = "arm,coresight-etmv4";
+ reg = <0x3b40000 0x1000>;
+ reg-names = "etm-base";
+
+ coresight-id = <27>;
+ coresight-name = "coresight-etm3";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_apss1>;
+ coresight-child-ports = <1>;
+ coresight-etm-cpu = <&CPU3>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ audio_etm0 {
+ compatible = "qcom,coresight-remote-etm";
+
+ coresight-id = <28>;
+ coresight-name = "coresight-audio-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <2>;
+
+ qcom,inst-id = <5>;
+ };
+
+ rpm_etm0 {
+ compatible = "qcom,coresight-remote-etm";
+
+ coresight-id = <29>;
+ coresight-name = "coresight-rpm-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <0>;
+
+ qcom,inst-id = <4>;
+ };
+
+ modem_etm0 {
+ compatible = "qcom,coresight-remote-etm";
+
+ coresight-id = <30>;
+ coresight-name = "coresight-modem-etm0";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in2>;
+ coresight-child-ports = <0>;
+
+ qcom,inst-id = <2>;
+ };
+
+ csr: csr@3001000 {
+ compatible = "qcom,coresight-csr";
+ reg = <0x3001000 0x1000>;
+ reg-names = "csr-base";
+
+ coresight-id = <31>;
+ coresight-name = "coresight-csr";
+ coresight-nr-inports = <0>;
+
+ qcom,blk-size = <1>;
+ };
+
+ cti0: cti@3010000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3010000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <32>;
+ coresight-name = "coresight-cti0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti1: cti@3011000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3011000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <33>;
+ coresight-name = "coresight-cti1";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti2: cti@3012000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3012000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <34>;
+ coresight-name = "coresight-cti2";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti3: cti@3013000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3013000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <35>;
+ coresight-name = "coresight-cti3";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti4: cti@3014000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3014000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <36>;
+ coresight-name = "coresight-cti4";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti5: cti@3015000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3015000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <37>;
+ coresight-name = "coresight-cti5";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti6: cti@3016000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3016000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <38>;
+ coresight-name = "coresight-cti6";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc 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@3017000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3017000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <39>;
+ coresight-name = "coresight-cti7";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti8: cti@3018000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3018000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <40>;
+ coresight-name = "coresight-cti8";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti9: cti@3019000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3019000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <41>;
+ coresight-name = "coresight-cti9";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti10: cti@301a000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x301a000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <42>;
+ coresight-name = "coresight-cti10";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti11: cti@301b000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x301b000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <43>;
+ coresight-name = "coresight-cti11";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti12: cti@301c000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x301c000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <44>;
+ coresight-name = "coresight-cti12";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti13: cti@301d000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x301d000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <45>;
+ coresight-name = "coresight-cti13";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti14: cti@301e000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x301e000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <46>;
+ coresight-name = "coresight-cti14";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_cpu0: cti@3820000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3820000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <47>;
+ coresight-name = "coresight-cti-cpu0";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_cpu1: cti@3920000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3920000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <48>;
+ coresight-name = "coresight-cti-cpu1";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU1>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_cpu2: cti@3a20000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3a20000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <49>;
+ coresight-name = "coresight-cti-cpu2";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU2>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_cpu3: cti@3b20000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3b20000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <50>;
+ coresight-name = "coresight-cti-cpu3";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU3>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_pmu_cpu0: cti@38a0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x38a0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <51>;
+ coresight-name = "coresight-cti-pmu-cpu0";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_pmu_cpu1: cti@39a0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x39a0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <52>;
+ coresight-name = "coresight-cti-pmu-cpu1";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU1>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_pmu_cpu2: cti@3aa0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3aa0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <53>;
+ coresight-name = "coresight-cti-pmu-cpu2";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU2>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_pmu_cpu3: cti@3ba0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3ba0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <54>;
+ coresight-name = "coresight-cti-pmu-cpu3";
+ coresight-nr-inports = <0>;
+ coresight-cti-cpu = <&CPU3>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_l2pmu_cluster0: cti@38b0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x38b0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <55>;
+ coresight-name = "coresight-cti-l2pmu-cluster0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_l2pmu_cluster1: cti@3ab0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3ab0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <56>;
+ coresight-name = "coresight-cti-l2pmu-cluster1";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_l3: cti@3ad0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3ad0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <57>;
+ coresight-name = "coresight-cti-l3";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_lm_cluster0: cti@39c0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x39c0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <58>;
+ coresight-name = "coresight-cti-lm-cluster0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_lm_cluster1: cti@39d0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x39d0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <59>;
+ coresight-name = "coresight-cti-lm-cluster1";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_m4m: cti@38d0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x38d0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <60>;
+ coresight-name = "coresight-cti-m4m";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_tpda_apss: cti@39f0000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x39f0000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <61>;
+ coresight-name = "coresight-cti-tpda-apss";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_venus_cpu0: cti@3180000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3180000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <64>;
+ coresight-name = "coresight-cti-venus-cpu0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_audio_cpu0: cti@3044000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3044000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <65>;
+ coresight-name = "coresight-cti-audio-cpu0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_rpm_cpu0: cti@3048000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3048000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <66>;
+ coresight-name = "coresight-cti-rpm-cpu0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ cti_modem_cpu0: cti@3040000 {
+ compatible = "arm,coresight-cti";
+ reg = <0x3040000 0x1000>;
+ reg-names = "cti-base";
+
+ coresight-id = <67>;
+ coresight-name = "coresight-cti-modem-cpu0";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+ };
+
+ hwevent: hwevent@98200c0 {
+ compatible = "qcom,coresight-hwevent";
+ reg = <0x98200c0 0x100>,
+ <0x828018 0x80>,
+ <0x8b5260 0x80>,
+ <0x90137c 0x4>,
+ <0x7ab160 0x80>,
+ <0x358000 0x40>,
+ <0x359000 0x40>,
+ <0x600058 0x80>,
+ <0x608058 0x80>,
+ <0x610058 0x80>,
+ <0x7ab360 0x80>,
+ <0x7ab760 0x80>,
+ <0x7abf60 0x80>;
+ reg-names = "hmss-mux", "mmss-mux", "dsa-stm", "mdss-mdp",
+ "phss-hwev", "gcc-eve1", "gcc-eve2", "pcie0-hwev",
+ "pcie1-hwev", "pcie2-hwev", "tcsr-mux", "mss-mux0",
+ "mss-mux1";
+
+ coresight-id = <70>;
+ coresight-name = "coresight-hwevent";
+ coresight-nr-inports = <0>;
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>,
+ <&clock_mmss clk_mmss_misc_ahb_clk>;
+ clock-names = "core_clk", "core_a_clk", "core_mmss_clk";
+
+ qcom,hwevent-clks = "core_mmss_clk";
+ };
+
+ fuse: fuse@7602c {
+ compatible = "arm,coresight-fuse-v3";
+ reg = <0x7602c 0xc>,
+ <0x76014 0x4>;
+ reg-names = "fuse-base", "qpdi-fuse-base";
+
+ coresight-id = <71>;
+ coresight-name = "coresight-fuse";
+ coresight-nr-inports = <0>;
+ };
+
+ qpdi: qpdi@7a1000 {
+ compatible = "qcom,coresight-qpdi";
+ reg = <0x7a1000 0x4>;
+ reg-names = "qpdi-base";
+
+ coresight-id = <72>;
+ coresight-name = "coresight-qpdi";
+ coresight-nr-inports = <0>;
+
+ 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>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-dtp.dtsi b/arch/arm64/boot/dts/qcom/msm8996-dtp.dtsi
new file mode 100644
index 000000000000..9e57eb1c48b4
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-dtp.dtsi
@@ -0,0 +1,686 @@
+/* Copyright (c) 2015, 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 "msm8996-pinctrl.dtsi"
+#include "msm8996-mdss-panels.dtsi"
+#include "msm8996-camera-sensor-dtp.dtsi"
+#include "msm8996-wsa881x.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM8996 DTP";
+ compatible = "qcom,msm8996-dtp", "qcom,msm8996", "qcom,qrd";
+
+ bluetooth: bt_qca6174 {
+ compatible = "qca,qca6174";
+ qca,bt-reset-gpio = <&pm8994_gpios 19 0>; /* BT_EN */
+ qca,bt-vdd-core-supply = <&pm8994_s3>;
+ qca,bt-vdd-pa-supply = <&rome_vreg>;
+ qca,bt-vdd-io-supply = <&pm8994_s4>;
+ qca,bt-vdd-xtal-supply = <&pm8994_l30>;
+ qca,bt-chip-pwd-voltage-level = <1300000 1300000>;
+ qca,bt-vdd-io-voltage-level = <1800000 1800000>;
+ qca,bt-vdd-xtal-voltage-level = <1800000 1800000>;
+ };
+};
+
+&uartblsp2dm1 {
+ status = "ok";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart_console_active>;
+};
+
+&blsp1_uart2 {
+ status = "ok";
+};
+
+&i2c_6 {
+ status = "disabled";
+};
+
+&i2c_7 {
+ smb1351-charger@1d {
+ compatible = "qcom,smb1351-charger";
+ reg = <0x1d>;
+ qcom,parallel-charger;
+ qcom,float-voltage-mv = <4450>;
+ qcom,recharge-mv = <100>;
+ };
+};
+
+/ {
+ qrd_batterydata: qcom,battery-data {
+ qcom,batt-id-range-pct = <15>;
+ #include "batterydata-qrd-skum-4v4-2920mah.dtsi"
+ };
+};
+
+&pmi8994_charger {
+ qcom,battery-data = <&qrd_batterydata>;
+};
+
+&pmi8994_fg {
+ qcom,battery-data = <&qrd_batterydata>;
+ qcom,ext-sense-type;
+ qcom,hold-soc-while-full;
+};
+
+&pmi8994_gpios {
+ gpio@c700 { /* GPIO 8, lcd_reg_en, 5V boost */
+ qcom,mode = <1>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ qcom,invert = <1>; /* need invert = 0 */
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+
+ gpio@c100 { /* GPIO 2 SPKR_SD_N */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c400 { /* GPIO 5 - USB3 OTG SWITCH EN */
+ qcom,mode = <1>; /* Digital output */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,master-en = <1>; /* Enable GPIO */
+ qcom,invert = <0>; /* Output low initially */
+ status = "okay";
+ };
+
+};
+
+&pmi8994_mpps {
+ mpp@a000 { /* MPP 1 */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,vin-sel = <2>; /* S4 1.8V */
+ qcom,src-sel = <7>; /* DTEST4 */
+ qcom,master-en = <1>; /* Enable MPP */
+ status = "okay";
+ };
+
+ mpp@a300 { /* MPP 4 */
+ /* WLED FET */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,vin-sel = <0>; /* VIN0 */
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+};
+
+&pm8994_gpios {
+ gpio@c700 { /* GPIO 8 - WLAN_EN */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c800 { /* GPIO 9 - Rome 3.3V control */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* MOS 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 */
+ status = "okay";
+ };
+
+ gpio@cd00 { /* GPIO 14 - lcd_bklt_reg_en */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,invert = <1>; /* output hight initially */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,out-strength = <1>; /* Low drive strength */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ status = "okay";
+ };
+
+ gpio@c100 { /* GPIO 2 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c300 { /* GPIO 4 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c400 { /* GPIO 5 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ 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>;
+ status = "okay";
+ };
+
+ gpio@d100 { /* GPIO 18 - Rome Sleep Clock */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@d200 { /* GPIO 19 - Rome BT Reset */
+ 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 */
+ status = "okay";
+ };
+};
+
+&pm8994_mpps {
+ 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 */
+ status = "okay";
+ };
+
+ 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>;
+ status = "okay";
+ };
+};
+
+&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>;
+ };
+};
+
+&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>;
+ };
+
+ chan@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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>;
+ };
+};
+
+&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;
+ };
+
+ chan@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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>;
+ qcom,btm-channel-number = <0x88>;
+ qcom,thermal-node;
+ };
+};
+
+&labibb {
+ status = "ok";
+ qpnp,qpnp-labibb-mode = "lcd";
+};
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&mdss_fb2 {
+ status = "disabled";
+};
+
+&mdss_hdmi_tx {
+ status = "disabled";
+};
+
+&mdss_dsi {
+ hw-config = "split_dsi";
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_r69007_wqxga_cmd>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
+ qcom,platform-te-gpio = <&tlmm 10 0>;
+ qcom,platform-reset-gpio = <&tlmm 8 0>;
+};
+
+&mdss_dsi1 {
+ qcom,dsi-pref-prim-pan = <&dsi_r69007_wqxga_cmd>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
+ qcom,platform-te-gpio = <&tlmm 10 0>;
+ qcom,platform-reset-gpio = <&tlmm 8 0>;
+};
+
+&ufs_ice {
+ status = "ok";
+};
+
+&sdcc1_ice {
+ status = "ok";
+};
+
+&ufsphy1 {
+ status = "ok";
+};
+
+&ufs1 {
+ status = "ok";
+};
+
+&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 = <110 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,clk-rates = <400000 20000000 25000000 50000000 96000000 192000000
+ 384000000>;
+ qcom,ice-clk-rates = <300000000>;
+ qcom,nonremovable;
+ qcom,bus-speed-mode = "HS400_1p8v", "HS200_1p8v", "DDR_1p8v";
+
+ status = "ok";
+};
+
+&dsi_r69007_wqxga_cmd {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+ qcom,dcs-cmd-by-left;
+};
+
+&sdhc_2 {
+ status = "disabled";
+};
+
+&pm8994_gpios {
+ gpio@c100 { /* GPIO 2 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+};
+
+&soc {
+ i2c@75ba000 {
+ synaptics@20 {
+ compatible = "synaptics,dsx";
+ reg = <0x20>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <125 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 1439 2559>;
+ synaptics,panel-coords = <0 0 1439 2559>;
+ synaptics,reset-gpio = <&tlmm 89 0x00>;
+ synaptics,irq-gpio = <&tlmm 125 0x2008>;
+ synaptics,disable-gpios;
+ synaptics,button-map = <102 139 158>;
+ };
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+
+ vol_up {
+ label = "volume_up";
+ gpios = <&pm8994_gpios 2 0x1>;
+ linux,input-type = <1>;
+ linux,code = <115>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+ };
+
+ sound {
+ status="disabled";
+ };
+
+ sound-9335 {
+ qcom,model = "msm8996-dtp-tasha-snd-card";
+
+ qcom,audio-routing =
+ "AIF4 VI", "MCLK",
+ "RX_BIAS", "MCLK",
+ "AMIC2", "MIC BIAS2",
+ "MIC BIAS2", "Headset Mic",
+ "DMIC0", "MIC BIAS1",
+ "MIC BIAS1", "Digital Mic0",
+ "DMIC2", "MIC BIAS3",
+ "MIC BIAS3", "Digital Mic2",
+ "DMIC3", "MIC BIAS3",
+ "MIC BIAS3", "Digital Mic3",
+ "SpkrLeft IN", "SPK1 OUT";
+
+ qcom,msm-mbhc-hphl-swh = <1>;
+ qcom,msm-mbhc-gnd-swh = <0>;
+
+ asoc-codec = <&stub_codec>;
+ asoc-codec-names = "msm-stub-codec.1";
+ qcom,wsa-max-devs = <1>;
+ qcom,wsa-devs = <&wsa881x_211>, <&wsa881x_213>;
+ qcom,wsa-aux-dev-prefix = "SpkrLeft", "SpkrLeft";
+ };
+};
+
+&qusb_phy0 {
+ qcom,qusb-phy-init-seq = <0xF8 0x80
+ 0x53 0x84
+ 0x83 0x88
+ 0xC5 0x8C
+ 0x30 0x08
+ 0x79 0x0C
+ 0x21 0x10
+ 0x14 0x9C
+ 0x80 0x04
+ 0x9F 0x1C
+ 0x00 0x18>;
+};
+
+&pmi8994_haptics {
+ status = "okay";
+ qcom,vmax-mv = <3000>;
+ qcom,actuator-type = "erm";
+};
+
+&red_led {
+ /delete-property/ linux,default-trigger;
+ qcom,start-idx = <1>;
+ qcom,idx-len = <10>;
+ qcom,duty-pcts = [00 19 32 4B 64
+ 64 4B 32 19 00];
+ qcom,lut-flags = <3>;
+ qcom,pause-lo = <0>;
+ qcom,pause-hi = <0>;
+ qcom,ramp-step-ms = <255>;
+ qcom,use-blink;
+};
+
+&green_led {
+ /delete-property/ linux,default-trigger;
+ qcom,start-idx = <1>;
+ qcom,idx-len = <10>;
+ qcom,duty-pcts = [00 19 32 4B 64
+ 64 4B 32 19 00];
+ qcom,lut-flags = <3>;
+ qcom,pause-lo = <0>;
+ qcom,pause-hi = <0>;
+ qcom,ramp-step-ms = <255>;
+ qcom,use-blink;
+};
+
+&blue_led {
+ /delete-property/ linux,default-trigger;
+ qcom,start-idx = <1>;
+ qcom,idx-len = <10>;
+ qcom,duty-pcts = [00 19 32 4B 64
+ 64 4B 32 19 00];
+ qcom,lut-flags = <3>;
+ qcom,pause-lo = <0>;
+ qcom,pause-hi = <0>;
+ qcom,ramp-step-ms = <255>;
+ qcom,use-blink;
+};
+
+&pmi8994_wled {
+ qcom,led-strings-list = [00 01];
+};
+
+&pm8994_l27{
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ qcom,init-voltage = <1200000>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-fluid.dtsi b/arch/arm64/boot/dts/qcom/msm8996-fluid.dtsi
new file mode 100644
index 000000000000..ef11922ef42f
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-fluid.dtsi
@@ -0,0 +1,631 @@
+/* Copyright (c) 2015, 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 "msm8996-pinctrl.dtsi"
+#include "msm8996-camera-sensor-mtp.dtsi"
+#include "msm8996-wsa881x.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 FLUID";
+ compatible = "qcom,msm8996-fluid", "qcom,msm8996", "qcom,fluid";
+ qcom,board-id = <3 0>;
+
+ bluetooth: bt_qca6174 {
+ compatible = "qca,qca6174";
+ qca,bt-reset-gpio = <&pm8994_gpios 19 0>; /* BT_EN */
+ qca,bt-vdd-core-supply = <&pm8994_s3>;
+ qca,bt-vdd-pa-supply = <&rome_vreg>;
+ qca,bt-vdd-io-supply = <&pm8994_s4>;
+ qca,bt-vdd-xtal-supply = <&pm8994_l30>;
+ qca,bt-vdd-core-voltage-level = <1300000 1800000>;
+ qca,bt-vdd-io-voltage-level = <1800000 1800000>;
+ qca,bt-vdd-xtal-voltage-level = <1800000 1800000>;
+ };
+};
+
+&i2c_7 {
+ smb1351-charger@1d {
+ compatible = "qcom,smb1351-charger";
+ reg = <0x1d>;
+ qcom,parallel-charger;
+ qcom,float-voltage-mv = <4400>;
+ qcom,recharge-mv = <100>;
+ };
+
+ ina231@40 {
+ compatible = "ina231";
+ reg = <0x40>;
+ shunt-resistor = <5000>;
+ };
+};
+
+&ufs_ice {
+ status = "ok";
+};
+
+&ufsphy1 {
+ status = "ok";
+};
+
+&ufs1 {
+ status = "ok";
+};
+
+&uartblsp2dm1 {
+ status = "ok";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart_console_active>;
+};
+
+
+&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 = <110 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,clk-rates = <400000 20000000 25000000 50000000 96000000 192000000 384000000>;
+ qcom,ice-clk-rates = <300000000 150000000>;
+ qcom,nonremovable;
+ 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>;
+
+ 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>;
+
+ qcom,clk-rates = <400000 20000000 25000000 50000000 100000000 200000000>;
+ qcom,bus-speed-mode = "SDR12", "SDR25", "SDR50", "DDR50", "SDR104";
+
+ cd-gpios = <&tlmm 95 0x1>;
+
+ 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_charger {
+ qcom,dc-psy-type = "Wipower";
+ qcom,dcin-vadc = <&pmi8994_vadc>;
+ qcom,wipower-default-ilim-map = <4000000 20000000 550 700 300>;
+ qcom,wipower-pt-ilim-map = <4000000 7140000 550 700 300>,
+ <7140000 8140000 550 700 300>,
+ <8140000 9140000 500 700 300>,
+ <9140000 9950000 500 700 300>;
+ qcom,wipower-div2-ilim-map = <4000000 4820000 550 700 300>,
+ <4820000 5820000 550 700 300>,
+ <5820000 6820000 550 650 650>,
+ <6820000 7820000 550 700 600>,
+ <7820000 8500000 550 700 550>;
+};
+
+&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>;
+ };
+};
+
+/{
+ mtp_batterydata: qcom,battery-data {
+ qcom,batt-id-range-pct = <15>;
+ #include "batterydata-itech-3000mah.dtsi"
+ };
+};
+
+&pmi8994_fg {
+ qcom,battery-data = <&mtp_batterydata>;
+ qcom,ext-sense-type;
+ qcom,fg-vbatt-low-threshold = <3700>;
+};
+
+&usb_otg_switch {
+ status = "okay";
+};
+
+&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>; /* S4 1.8V */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,master-en = <1>; /* Enable GPIO */
+ qcom,invert = <0>;
+ status = "okay";
+ };
+};
+
+&pmi8994_gpios {
+ gpio@c100 { /* GPIO 2 SPKR_SD_N */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c200 { /* GPIO 3 SPKR_SD_N */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c400 { /* GPIO 5 - USB3 OTG SWITCH EN */
+ qcom,mode = <1>; /* Digital output */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,master-en = <1>; /* Enable GPIO */
+ qcom,invert = <0>; /* Output low initially */
+ status = "okay";
+ };
+};
+
+&soc {
+ i2c@75ba000 {
+ synaptics@20 {
+ compatible = "synaptics,dsx";
+ reg = <0x20>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <125 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 = <&tlmm 89 0x00>;
+ synaptics,irq-gpio = <&tlmm 125 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>;
+ };
+
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+
+ home {
+ label = "home";
+ gpios = <&pm8994_gpios 1 0x1>;
+ linux,input-type = <1>;
+ linux,code = <102>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+
+ vol_up {
+ label = "volume_up";
+ gpios = <&pm8994_gpios 2 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-9335 {
+ qcom,model = "msm8996-tasha-fluid-snd-card";
+ qcom,hdmi-audio-rx;
+ asoc-codec = <&stub_codec>, <&hdmi_audio>;
+ asoc-codec-names = "msm-stub-codec.1",
+ "msm-hdmi-audio-codec-rx";
+ qcom,wsa-max-devs = <1>;
+ qcom,wsa-devs = <&wsa881x_211>, <&wsa881x_213>;
+ qcom,wsa-aux-dev-prefix = "SpkrLeft", "SpkrLeft";
+ };
+
+};
+
+&pm8994_gpios {
+ gpio@c700 { /* GPIO 8 - WLAN_EN */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c800 { /* GPIO 9 - Rome 3.3V control */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* MOS 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 */
+ status = "okay";
+ };
+
+ gpio@cd00 { /* GPIO 14 - lcd_bklt_reg_en */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,invert = <1>; /* output hight initially */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,out-strength = <1>; /* Low drive strength */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ status = "okay";
+ };
+
+ gpio@c000 { /* GPIO 1 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c100 { /* GPIO 2 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c300 { /* GPIO 4 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c400 { /* GPIO 5 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ 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>;
+ status = "okay";
+ };
+
+ gpio@d100 { /* GPIO 18 - Rome Sleep Clock */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@d200 { /* GPIO 19 - Rome BT Reset */
+ 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 */
+ status = "okay";
+ };
+};
+
+&pmi8994_haptics {
+ status = "okay";
+};
+
+&flash_led {
+ qcom,follow-otst2-rb-disabled;
+};
+
+&blsp1_uart2 {
+ status = "ok";
+};
+
+#include "msm8996-mdss-panels.dtsi"
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&mdss_dsi {
+ hw-config = "split_dsi";
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_dual_sharp_video>;
+ 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 = <&tlmm 8 0>;
+};
+
+&mdss_dsi1 {
+ qcom,dsi-pref-prim-pan = <&dsi_dual_sharp_video>;
+};
+
+&dsi_dual_sharp_video {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&labibb {
+ status = "ok";
+ qpnp,qpnp-labibb-mode = "lcd";
+};
+
+&pmi8994_mpps {
+ mpp@a000 { /* MPP 1 */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,vin-sel = <0>; /* S4 1.8V */
+ qcom,src-sel = <7>; /* DTEST4 */
+ qcom,master-en = <1>; /* Enable MPP */
+ status = "okay";
+ };
+
+ mpp@a300 { /* MPP 4 */
+ /* WLED FET */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,vin-sel = <0>; /* VIN0 */
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+};
+
+&wil6210 {
+ status = "ok";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-gpu.dtsi b/arch/arm64/boot/dts/qcom/msm8996-gpu.dtsi
new file mode 100644
index 000000000000..19ec95f7338a
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-gpu.dtsi
@@ -0,0 +1,215 @@
+/* Copyright (c) 2015, 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 {
+
+ pil_gpu: qcom,kgsl-hyp {
+ compatible = "qcom,pil-tz-generic";
+ qcom,pas-id = <13>;
+ qcom,firmware-name = "a530_zap";
+ memory-region = <&peripheral_mem>;
+ };
+
+ msm_bus: qcom,kgsl-busmon{
+ label = "kgsl-busmon";
+ compatible = "qcom,kgsl-busmon";
+ };
+
+ gpubw: qcom,gpubw {
+ compatible = "qcom,devbw";
+ governor = "bw_vbif";
+ qcom,src-dst-ports = <26 512>;
+ /*
+ * active-only flag is used while registering the bus
+ * governor.It helps release the bus vote when the CPU
+ * subsystem is inactiv3
+ */
+ qcom,active-only;
+ qcom,bw-tbl =
+ < 0 /* off */ >,
+ < 762 /* 100 MHz */ >,
+ < 1144 /* 150 MHz */ >,
+ < 1525 /* 200 MHz */ >,
+ < 2288 /* 300 MHz */ >,
+ < 3143 /* 412 MHz */ >,
+ < 4173 /* 547 MHz */ >,
+ < 5195 /* 681 MHz */ >,
+ < 5859 /* 768 MHz */ >,
+ < 7759 /* 1017 MHz */ >,
+ < 9887 /* 1296 MHz */ >,
+ < 11863 /* 1555 MHz */ >,
+ < 13763 /* 1804 MHz */ >;
+ };
+
+ msm_gpu: qcom,kgsl-3d0@b00000 {
+ label = "kgsl-3d0";
+ compatible = "qcom,kgsl-3d0", "qcom,kgsl-3d";
+ status = "ok";
+ reg = <0xb00000 0x3f000
+ 0x070000 0x04720>;
+ reg-names = "kgsl_3d0_reg_memory", "qfprom_memory";
+ interrupts = <0 300 0>;
+ interrupt-names = "kgsl_3d0_irq";
+ qcom,id = <0>;
+
+ qcom,chipid = <0x05030000>;
+ qcom,base-leakage-coefficient = <34>;
+ qcom,lm-limit = <6000>;
+
+ qcom,initial-pwrlevel = <2>;
+
+ qcom,idle-timeout = <8>; //<HZ/12>
+ /*
+ * Timeout to enter deeper power saving state
+ * from NAP.
+ */
+ qcom,deep-nap-timeout = <2>; //<HZ/50>
+ qcom,strtstp-sleepwake;
+
+ /* Trace bus */
+ coresight-id = <300>;
+ coresight-name = "coresight-gfx";
+ coresight-nr-inports = <0>;
+ coresight-outports = <0>;
+ coresight-child-list = <&funnel_in0>;
+ coresight-child-ports = <4>;
+
+ clocks = <&clock_gpu clk_gpu_gx_gfx3d_clk>,
+ <&clock_gpu clk_gpu_ahb_clk>,
+ <&clock_gpu clk_gpu_gx_rbbmtimer_clk>,
+ <&clock_gcc clk_gcc_bimc_gfx_clk>,
+ <&clock_gcc clk_gcc_mmss_bimc_gfx_clk>,
+ <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_gpu clk_gpu_mx_clk>;
+
+ clock-names = "core_clk", "iface_clk", "rbbmtimer_clk",
+ "mem_clk", "mem_iface_clk", "alt_mem_iface_clk",
+ "mx_clk";
+
+ /* Bus Scale Settings */
+ qcom,gpubw-dev = <&gpubw>;
+ qcom,bus-control;
+ qcom,msm-bus,name = "grp3d";
+ qcom,msm-bus,num-cases = <13>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <26 512 0 0>,
+
+ <26 512 0 800000>, // 1 bus=100
+ <26 512 0 1200000>, // 2 bus=150
+ <26 512 0 1600000>, // 3 bus=200
+ <26 512 0 2400000>, // 4 bus=300
+ <26 512 0 3296000>, // 5 bus=412
+ <26 512 0 4376000>, // 6 bus=547
+ <26 512 0 5448000>, // 7 bus=681
+ <26 512 0 6144000>, // 8 bus=768
+ <26 512 0 8136000>, // 9 bus=1017
+ <26 512 0 10368000>, // 10 bus=1296
+ <26 512 0 12440000>, // 11 bus=1555
+ <26 512 0 14432000>; // 12 bus=1804
+
+ /* GDSC regulator names */
+ regulator-names = "vddcx", "vdd";
+ /* GDSC oxili regulators */
+ vddcx-supply = <&gdsc_gpu>;
+ vdd-supply = <&gdsc_gpu_gx>;
+
+ /* Power levels */
+ qcom,gpu-pwrlevels {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ compatible = "qcom,gpu-pwrlevels";
+
+ qcom,gpu-pwrlevel@0 {
+ reg = <0>;
+ qcom,gpu-freq = <480000000>;
+ qcom,bus-freq = <11>;
+ qcom,bus-min = <10>;
+ qcom,bus-max = <11>;
+ };
+
+ qcom,gpu-pwrlevel@1 {
+ reg = <1>;
+ qcom,gpu-freq = <360000000>;
+ qcom,bus-freq = <10>;
+ qcom,bus-min = <9>;
+ qcom,bus-max = <11>;
+ };
+
+ qcom,gpu-pwrlevel@2 {
+ reg = <2>;
+ qcom,gpu-freq = <205000000>;
+ qcom,bus-freq = <7>;
+ qcom,bus-min = <6>;
+ qcom,bus-max = <8>;
+ };
+
+ qcom,gpu-pwrlevel@3 {
+ reg = <3>;
+ qcom,gpu-freq = <120000000>;
+ qcom,bus-freq = <4>;
+ qcom,bus-min = <3>;
+ qcom,bus-max = <5>;
+ };
+
+ qcom,gpu-pwrlevel@4 {
+ reg = <4>;
+ qcom,gpu-freq = <60000000>;
+ qcom,bus-freq = <2>;
+ qcom,bus-min = <1>;
+ qcom,bus-max = <3>;
+ };
+
+ qcom,gpu-pwrlevel@5 {
+ reg = <5>;
+ qcom,gpu-freq = <27000000>;
+ qcom,bus-freq = <0>;
+ qcom,bus-min = <0>;
+ qcom,bus-max = <0>;
+ };
+ };
+
+ };
+
+ kgsl_msm_iommu: qcom,kgsl-iommu {
+ compatible = "qcom,kgsl-smmu-v2";
+
+ reg = <0xb40000 0x20000>;
+ qcom,protect = <0x40000 0x20000>;
+ qcom,micro-mmu-control = <0x6000>;
+
+ clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
+ <&clock_mmss clk_mmss_mmagic_cfg_ahb_clk>,
+ <&clock_gpu clk_gpu_ahb_clk>,
+ <&clock_gcc clk_gcc_mmss_bimc_gfx_clk>,
+ <&clock_gcc clk_gcc_bimc_gfx_clk>;
+ clock-names = "mmagic_ahb_clk", "mmagic_cfg_ahb_clk", "gpu_ahb_clk",
+ "gcc_mmss_bimc_gfx_clk", "gcc_bimc_gfx_clk";
+
+ qcom,secure_align_mask = <0xfff>;
+ qcom,retention;
+ qcom,hyp_secure_alloc;
+
+ gfx3d_user: gfx3d_user {
+ compatible = "qcom,smmu-kgsl-cb";
+ label = "gfx3d_user";
+ iommus = <&kgsl_smmu 0>;
+ qcom,gpu-offset = <0x48000>;
+ };
+
+ gfx3d_secure: gfx3d_secure {
+ compatible = "qcom,smmu-kgsl-cb";
+ iommus = <&kgsl_smmu 2>;
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-ion.dtsi b/arch/arm64/boot/dts/qcom/msm8996-ion.dtsi
new file mode 100644
index 000000000000..2b581d737da8
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-ion.dtsi
@@ -0,0 +1,46 @@
+/* Copyright (c) 2014-2015, 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>;
+
+ system_heap: qcom,ion-heap@25 {
+ reg = <25>;
+ qcom,ion-heap-type = "SYSTEM";
+ };
+
+ system_contig_heap: qcom,ion-heap@21 {
+ reg = <21>;
+ qcom,ion-heap-type = "SYSTEM_CONTIG";
+ };
+
+ qcom,ion-heap@27 { /* QSEECOM HEAP */
+ reg = <27>;
+ memory-region = <&qseecom_mem>;
+ qcom,ion-heap-type = "DMA";
+ };
+
+ qcom,ion-heap@10 { /* SECURE DISPLAY HEAP */
+ reg = <10>;
+ memory-region = <&secure_display_memory>;
+ qcom,ion-heap-type = "HYP_CMA";
+ };
+
+ qcom,ion-heap@9 {
+ reg = <9>;
+ qcom,ion-heap-type = "SYSTEM_SECURE";
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-ipcrouter.dtsi b/arch/arm64/boot/dts/qcom/msm8996-ipcrouter.dtsi
new file mode 100644
index 000000000000..a443f90e4cb8
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-ipcrouter.dtsi
@@ -0,0 +1,48 @@
+/* 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_glink_xprt";
+ qcom,ch-name = "IPCRTR";
+ qcom,xprt-remote = "mpss";
+ qcom,glink-xprt = "smd_trans";
+ qcom,xprt-linkid = <1>;
+ qcom,xprt-version = <1>;
+ qcom,fragmented-data;
+ };
+
+ qcom,ipc_router_q6_xprt {
+ compatible = "qcom,ipc_router_glink_xprt";
+ qcom,ch-name = "IPCRTR";
+ qcom,xprt-remote = "lpass";
+ qcom,glink-xprt = "smd_trans";
+ qcom,xprt-linkid = <1>;
+ qcom,xprt-version = <1>;
+ qcom,fragmented-data;
+ };
+
+ qcom,ipc_router_dsps_xprt {
+ compatible = "qcom,ipc_router_glink_xprt";
+ qcom,ch-name = "IPCRTR";
+ qcom,xprt-remote = "dsps";
+ qcom,glink-xprt = "smd_trans";
+ qcom,xprt-linkid = <1>;
+ qcom,xprt-version = <1>;
+ qcom,fragmented-data;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-liquid.dtsi b/arch/arm64/boot/dts/qcom/msm8996-liquid.dtsi
new file mode 100644
index 000000000000..a1376fe1b454
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-liquid.dtsi
@@ -0,0 +1,655 @@
+/* Copyright (c) 2015, 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 "msm8996-pinctrl.dtsi"
+#include "msm8996-camera-sensor-liquid.dtsi"
+#include "msm8996-wsa881x.dtsi"
+
+/ {
+ bluetooth: bt_qca6174 {
+ compatible = "qca,qca6174";
+ qca,bt-reset-gpio = <&pm8994_gpios 19 0>; /* BT_EN */
+ qca,bt-vdd-core-supply = <&pm8994_s3>;
+ qca,bt-vdd-pa-supply = <&rome_vreg>;
+ qca,bt-vdd-io-supply = <&pm8994_s4>;
+ qca,bt-vdd-xtal-supply = <&pm8994_l30>;
+ qca,bt-vdd-core-voltage-level = <1300000 1800000>;
+ qca,bt-vdd-io-voltage-level = <1800000 1800000>;
+ qca,bt-vdd-xtal-voltage-level = <1800000 1800000>;
+ };
+};
+
+&ufs_ice {
+ status = "ok";
+};
+
+&ufsphy1 {
+ status = "ok";
+};
+
+&ufs1 {
+ status = "ok";
+};
+
+&uartblsp2dm1 {
+ status = "ok";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart_console_active>;
+};
+
+&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 = <110 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,clk-rates = <400000 20000000 25000000 50000000 96000000 192000000 384000000>;
+ qcom,nonremovable;
+ 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>;
+
+ 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>;
+
+ qcom,clk-rates = <400000 20000000 25000000 50000000 100000000 200000000>;
+ qcom,bus-speed-mode = "SDR12", "SDR25", "SDR50", "DDR50", "SDR104";
+
+ cd-gpios = <&tlmm 95 0x1>;
+ 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;
+ };
+};
+
+&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>;
+};
+
+&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 "msm8996-mdss-panels.dtsi"
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&mdss_dsi {
+ hw-config = "split_dsi";
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_dual_jdi_4k_nofbc_video>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
+ qcom,platform-reset-gpio = <&tlmm 8 0>;
+ qcom,platform-bklight-en-gpio = <&pm8994_gpios 14 0>;
+};
+
+&mdss_dsi1 {
+ qcom,dsi-pref-prim-pan = <&dsi_dual_jdi_4k_nofbc_video>;
+};
+
+&labibb {
+ status = "ok";
+ qpnp,qpnp-labibb-mode = "lcd";
+};
+
+&dsi_dual_jdi_4k_nofbc_video {
+ pwms = <&pmi8994_pwm_4 0 0>;
+ pwm-names = "backlight";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pwm-pmi;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&pmi8994_pwm_4 {
+ qcom,channel-owner = "lcd_bl";
+ qcom,lpg-dtest-line = <4>;
+ qcom,dtest-output = <1>;
+ status = "okay";
+};
+
+/{
+ mtp_batterydata: qcom,battery-data {
+ qcom,batt-id-range-pct = <15>;
+ #include "batterydata-liquid-7650-sanyo.dtsi"
+ };
+};
+
+&pmi8994_charger {
+ qcom,dc-psy-type = "Wipower";
+ qcom,dcin-vadc = <&pmi8994_vadc>;
+ qcom,wipower-default-ilim-map = <4000000 20000000 550 700 300>;
+ qcom,wipower-pt-ilim-map = <4000000 7140000 550 700 300>,
+ <7140000 8140000 550 700 300>,
+ <8140000 9140000 500 700 300>,
+ <9140000 9950000 500 700 300>;
+ qcom,wipower-div2-ilim-map = <4000000 4820000 550 700 300>,
+ <4820000 5820000 550 700 300>,
+ <5820000 6820000 550 650 650>,
+ <6820000 7820000 550 700 600>,
+ <7820000 8500000 550 700 550>;
+};
+
+&pmi8994_fg {
+ qcom,battery-data = <&mtp_batterydata>;
+ qcom,ext-sense-type;
+};
+
+&usb_otg_switch {
+ status = "okay";
+};
+
+&usb3 {
+ vbus_dwc3-supply = <&usb_otg_switch>;
+};
+
+&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>; /* S4 1.8V */
+ qcom,src-sel = <0>; /* Constant */
+ qcom,master-en = <1>; /* Enable GPIO */
+ qcom,invert = <0>;
+ status = "okay";
+ };
+};
+
+&pmi8994_gpios {
+ gpio@c400 { /* GPIO 5 - USB3 OTG SWITCH EN */
+ qcom,mode = <1>; /* Digital output */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,master-en = <1>; /* Enable GPIO */
+ qcom,invert = <0>; /* Output low initially */
+ status = "okay";
+ };
+};
+
+&pmi8994_gpios {
+ gpio@c100 { /* GPIO 2 SPKR_SD_N */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c200 { /* GPIO 3 SPKR_SD_N */
+ 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 */
+ status = "okay";
+ };
+};
+
+&pmi8994_mpps {
+ mpp@a000 { /* MPP 1 */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,vin-sel = <0>; /* S4 1.8V */
+ qcom,src-sel = <7>; /* DTEST4 */
+ qcom,master-en = <1>; /* Enable MPP */
+ status = "okay";
+ };
+
+ mpp@a300 { /* MPP 4 */
+ /* WLED FET */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,vin-sel = <0>; /* VIN0 */
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+};
+
+&soc {
+ drv2667_vreg: drv2667_vdd_vreg {
+ compatible = "regulator-fixed";
+ regulator-name = "vdd_drv2667";
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+
+ home {
+ label = "home";
+ gpios = <&pm8994_gpios 1 0x1>;
+ linux,input-type = <1>;
+ linux,code = <102>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+
+ vol_up {
+ label = "volume_up";
+ gpios = <&pm8994_gpios 2 0x1>;
+ linux,input-type = <1>;
+ linux,code = <115>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+ };
+
+ ts_xvdd_vreg: ts_xvdd_vreg {
+ compatible = "regulator-fixed";
+ regulator-name = "ts_xvdd_vreg";
+ startup-delay-us = <4000>;
+ enable-active-high;
+ gpio = <&pm8994_gpios 3 0>;
+ status = "ok";
+ };
+
+ sound-9335 {
+ qcom,model = "msm8996-tasha-mtp-snd-card";
+ qcom,hdmi-audio-rx;
+ asoc-codec = <&stub_codec>, <&hdmi_audio>;
+ asoc-codec-names = "msm-stub-codec.1", "msm-hdmi-audio-codec-rx";
+ qcom,wsa-max-devs = <2>;
+ qcom,wsa-devs = <&wsa881x_211>, <&wsa881x_212>,
+ <&wsa881x_213>, <&wsa881x_214>;
+ qcom,wsa-aux-dev-prefix = "SpkrLeft", "SpkrRight",
+ "SpkrLeft", "SpkrRight";
+ };
+};
+
+&pm8994_gpios {
+ gpio@c700 { /* GPIO 8 - WLAN_EN */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c800 { /* GPIO 9 - Rome 3.3V control */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* MOS 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 */
+ status = "okay";
+ };
+
+ gpio@cd00 { /* GPIO 14 - lcd_bklt_reg_en */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,invert = <1>; /* output hight initially */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,out-strength = <1>; /* Low drive strength */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ status = "okay";
+ };
+
+ gpio@c000 { /* GPIO 1 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c100 { /* GPIO 2 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c200 { /* GPIO 3 - TS_XVDD_EN */
+ qcom,mode = <1>; /* Digital output*/
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,vin-sel = <2>; /* VIN2 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,invert = <0>; /* Invert */
+ qcom,master-en = <1>; /* Enable GPIO */
+ status = "okay";
+ };
+
+
+ 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>;
+ status = "okay";
+ };
+
+ gpio@d100 { /* GPIO 18 - Rome Sleep Clock */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@d200 { /* GPIO 19 - Rome BT Reset */
+ 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 */
+ status = "okay";
+ };
+};
+
+&pmi8994_haptics {
+ status = "okay";
+};
+
+&flash_led {
+ qcom,follow-otst2-rb-disabled;
+};
+
+&blsp1_uart2 {
+ status = "ok";
+};
+
+&i2c_7 {
+ 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_12 {
+ atmel_maxtouch_ts@4a {
+ compatible = "atmel,maxtouch-ts";
+ reg = <0x4a>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <125 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 3839 2159>;
+ atmel,display-coords = <0 0 3839 2159>;
+ atmel,irq-gpio = <&tlmm 125 0x2008>;
+ atmel,reset-gpio = <&tlmm 89 0x00>;
+ atmel,i2cmode-gpio = <&tlmm 86 0x00>;
+ atmel,ignore-crc;
+ /* Underlying clocks used by secure touch */
+ clock-names = "iface_clk", "core_clk";
+ clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp2_qup6_i2c_apps_clk>;
+ atmel,cfg-name = "maxtouch_8996_liquid_cfg.raw";
+ atmel,cfg_1 {
+ atmel,version = <0x10>;
+ atmel,build = <0xaa>;
+ atmel,fw-name = "maxtouch_8996_liquid_v1_1_AB.fw";
+ };
+ atmel,cfg_2 {
+ atmel,version = <0x11>;
+ atmel,build = <0xab>;
+ };
+ };
+};
+
+&wil6210 {
+ status = "ok";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-mdss-panels.dtsi b/arch/arm64/boot/dts/qcom/msm8996-mdss-panels.dtsi
new file mode 100644
index 000000000000..569cd9a3b374
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-mdss-panels.dtsi
@@ -0,0 +1,208 @@
+/* Copyright (c) 2015, 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 "dsi-panel-sharp-dualmipi-wqxga-video.dtsi"
+#include "dsi-panel-nt35597-dualmipi-wqxga-video.dtsi"
+#include "dsi-panel-nt35597-dualmipi-wqxga-cmd.dtsi"
+#include "dsi-panel-nt35597-dsc-wqxga-video.dtsi"
+#include "dsi-panel-jdi-dualmipi-video.dtsi"
+#include "dsi-panel-jdi-dualmipi-cmd.dtsi"
+#include "dsi-panel-jdi-4k-dualmipi-video-nofbc.dtsi"
+#include "dsi-panel-sim-video.dtsi"
+#include "dsi-panel-sim-dualmipi-video.dtsi"
+#include "dsi-panel-sim-cmd.dtsi"
+#include "dsi-panel-sim-dualmipi-cmd.dtsi"
+#include "dsi-panel-nt35597-dsc-wqxga-cmd.dtsi"
+#include "dsi-panel-hx8379a-truly-fwvga-video.dtsi"
+#include "dsi-panel-r69007-dualdsi-wqxga-cmd.dtsi"
+#include "dsi-adv7533-720p.dtsi"
+#include "dsi-adv7533-1080p.dtsi"
+
+&soc {
+ dsi_panel_pwr_supply: dsi_panel_pwr_supply {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,panel-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "vddio";
+ qcom,supply-min-voltage = <1800000>;
+ qcom,supply-max-voltage = <1800000>;
+ qcom,supply-enable-load = <62000>;
+ qcom,supply-disable-load = <80>;
+ };
+
+ qcom,panel-supply-entry@1 {
+ reg = <1>;
+ qcom,supply-name = "lab";
+ qcom,supply-min-voltage = <4600000>;
+ qcom,supply-max-voltage = <6000000>;
+ qcom,supply-enable-load = <100000>;
+ qcom,supply-disable-load = <100>;
+ };
+
+ qcom,panel-supply-entry@2 {
+ reg = <2>;
+ qcom,supply-name = "ibb";
+ qcom,supply-min-voltage = <4600000>;
+ qcom,supply-max-voltage = <6000000>;
+ qcom,supply-enable-load = <100000>;
+ qcom,supply-disable-load = <100>;
+ qcom,supply-post-on-sleep = <10>;
+ };
+ };
+};
+
+&soc {
+ dsi_panel_pwr_supply_amoled: dsi_panel_pwr_supply_amoled {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,panel-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "vddio";
+ qcom,supply-min-voltage = <1800000>;
+ qcom,supply-max-voltage = <1800000>;
+ qcom,supply-enable-load = <62000>;
+ qcom,supply-disable-load = <80>;
+ qcom,supply-post-on-sleep = <20>;
+ };
+
+ qcom,panel-supply-entry@1 {
+ reg = <1>;
+ qcom,supply-name = "lab";
+ qcom,supply-min-voltage = <4600000>;
+ qcom,supply-max-voltage = <6000000>;
+ qcom,supply-enable-load = <100000>;
+ qcom,supply-disable-load = <100>;
+ };
+
+ qcom,panel-supply-entry@2 {
+ reg = <2>;
+ qcom,supply-name = "ibb";
+ qcom,supply-min-voltage = <4600000>;
+ qcom,supply-max-voltage = <6000000>;
+ qcom,supply-enable-load = <100000>;
+ qcom,supply-disable-load = <100>;
+ qcom,supply-post-on-sleep = <20>;
+ };
+
+ qcom,panel-supply-entry@3 {
+ reg = <3>;
+ qcom,supply-name = "oled-vdda";
+ qcom,supply-min-voltage = <3000000>;
+ qcom,supply-max-voltage = <3000000>;
+ qcom,supply-enable-load = <857000>;
+ qcom,supply-disable-load = <0>;
+ qcom,supply-post-on-sleep = <0>;
+ };
+ };
+};
+
+&soc {
+ dsi_panel_pwr_supply_no_labibb: dsi_panel_pwr_supply_no_labibb {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,panel-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "vddio";
+ qcom,supply-min-voltage = <1800000>;
+ qcom,supply-max-voltage = <1800000>;
+ qcom,supply-enable-load = <62000>;
+ qcom,supply-disable-load = <80>;
+ qcom,supply-post-on-sleep = <20>;
+ };
+ };
+};
+
+&dsi_dual_sharp_video {
+ qcom,mdss-dsi-panel-timings-8996 = [23 20 06 09 05 03 04 a0
+ 23 20 06 09 05 03 04 a0
+ 23 20 06 09 05 03 04 a0
+ 23 20 06 09 05 03 04 a0
+ 23 2e 06 08 05 03 04 a0];
+};
+
+&dsi_dual_jdi_cmd {
+ qcom,mdss-dsi-panel-timings-8996 = [22 1e 06 08 04 03 04 a0
+ 22 1e 06 08 04 03 04 a0
+ 22 1e 06 08 04 03 04 a0
+ 22 1e 06 08 04 03 04 a0
+ 22 2c 05 08 04 03 04 a0];
+ qcom,esd-check-enabled;
+ qcom,mdss-dsi-panel-status-check-mode = "te_signal_check";
+};
+
+&dsi_dual_jdi_video {
+ qcom,mdss-dsi-panel-timings-8996 = [22 1e 06 08 04 03 04 a0
+ 22 1e 06 08 04 03 04 a0
+ 22 1e 06 08 04 03 04 a0
+ 22 1e 06 08 04 03 04 a0
+ 22 2c 05 08 04 03 04 a0];
+};
+
+&dsi_dual_nt35597_video {
+ qcom,mdss-dsi-panel-timings-8996 = [23 1e 07 08 05 03 04 a0
+ 23 1e 07 08 05 03 04 a0
+ 23 1e 07 08 05 03 04 a0
+ 23 1e 07 08 05 03 04 a0
+ 23 18 07 08 04 03 04 a0];
+};
+
+&dsi_dual_nt35597_cmd {
+ qcom,mdss-dsi-panel-timings-8996 = [23 1e 07 08 05 03 04 a0
+ 23 1e 07 08 05 03 04 a0
+ 23 1e 07 08 05 03 04 a0
+ 23 1e 07 08 05 03 04 a0
+ 23 18 07 08 04 03 04 a0];
+};
+
+&dsi_nt35597_dsc_video {
+ qcom,mdss-dsi-panel-timings-8996 = [20 1d 05 07 03 03 04 a0
+ 20 1d 05 07 03 03 04 a0
+ 20 1d 05 07 03 03 04 a0
+ 20 1d 05 07 03 03 04 a0
+ 20 12 05 06 03 13 04 a0];
+};
+
+&dsi_nt35597_dsc_cmd {
+ qcom,mdss-dsi-panel-timings-8996 = [20 1d 05 07 03 03 04 a0
+ 20 1d 05 07 03 03 04 a0
+ 20 1d 05 07 03 03 04 a0
+ 20 1d 05 07 03 03 04 a0
+ 20 12 05 06 03 13 04 a0];
+};
+
+&dsi_dual_jdi_4k_nofbc_video {
+ qcom,mdss-dsi-panel-timings-8996 = [
+ 2c 27 0e 10 0a 03 04 a0
+ 2c 27 0e 10 0a 03 04 a0
+ 2c 27 0e 10 0a 03 04 a0
+ 2c 27 0e 10 0a 03 04 a0
+ 2c 32 0e 0f 0a 03 04 a0];
+};
+
+&dsi_hx8379a_fwvga_truly_vid {
+ qcom,mdss-dsi-panel-timings-8996 = [23 20 06 09 05 03 04 a0
+ 23 20 06 09 05 03 04 a0
+ 23 20 06 09 05 03 04 a0
+ 23 20 06 09 05 03 04 a0
+ 23 2e 06 08 05 03 04 a0];
+};
+&dsi_r69007_wqxga_cmd {
+ qcom,mdss-dsi-panel-timings-8996 = [23 1f 07 09 05 03 04 a0
+ 23 1f 07 09 05 03 04 a0
+ 23 1f 07 09 05 03 04 a0
+ 23 1f 07 09 05 03 04 a0
+ 23 19 08 08 05 03 04 a0];
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-mdss-pll.dtsi b/arch/arm64/boot/dts/qcom/msm8996-mdss-pll.dtsi
new file mode 100644
index 000000000000..53d47b16e821
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-mdss-pll.dtsi
@@ -0,0 +1,138 @@
+/* Copyright (c) 2014-2015, 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@994400 {
+ compatible = "qcom,mdss_dsi_pll_8996_v2";
+ label = "MDSS DSI 0 PLL";
+ cell-index = <0>;
+ #clock-cells = <1>;
+
+ reg = <0x00994400 0x588>,
+ <0x008C2300 0x8>,
+ <0x00994200 0x98>;
+ reg-names = "pll_base", "gdsc_base", "dynamic_pll_base";
+
+ gdsc-supply = <&gdsc_mdss>;
+
+ clocks = <&clock_mmss clk_mdss_ahb_clk>;
+ clock-names = "iface_clk";
+ clock-rate = <0>;
+ qcom,dsi-pll-ssc-en;
+ qcom,dsi-pll-ssc-mode = "down-spread";
+
+ /* Memory region for passing dynamic refresh pll codes */
+ memory-region = <&dfps_data_mem>;
+
+ 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>;
+ };
+
+ };
+ };
+
+ mdss_dsi1_pll: qcom,mdss_dsi_pll@996400 {
+ compatible = "qcom,mdss_dsi_pll_8996_v2";
+ label = "MDSS DSI 1 PLL";
+ cell-index = <1>;
+ #clock-cells = <1>;
+
+ reg = <0x00996400 0x588>,
+ <0x008C2300 0x8>,
+ <0x00996200 0x98>;
+ reg-names = "pll_base", "gdsc_base", "dynamic_pll_base";
+
+ gdsc-supply = <&gdsc_mdss>;
+
+ clocks = <&clock_mmss clk_mdss_ahb_clk>;
+ clock-names = "iface_clk";
+ clock-rate = <0>;
+ qcom,dsi-pll-ssc-en;
+ qcom,dsi-pll-ssc-mode = "down-spread";
+
+ 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>;
+ };
+ };
+ };
+
+ mdss_hdmi_pll: qcom,mdss_hdmi_pll@0x9a0600 {
+ compatible = "qcom,mdss_hdmi_pll_8996";
+ label = "MDSS HDMI PLL";
+ #clock-cells = <1>;
+
+ reg = <0x9a0600 0xb10>,
+ <0x9a1200 0x0c8>,
+ <0x8C2300 0x8>;
+ reg-names = "pll_base", "phy_base", "gdsc_base";
+
+ gdsc-supply = <&gdsc_mdss>;
+ vddio-supply = <&pm8994_l12>;
+ vcca-supply = <&pm8994_l28>;
+
+ clocks = <&clock_mmss clk_mdss_ahb_clk>,
+ <&clock_gcc clk_gcc_hdmi_clkref_clk>,
+ <&clock_gcc clk_ln_bb_clk>;
+ clock-names = "iface_clk", "ref_clk", "ref_clk_src";
+ 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 = <925000>;
+ qcom,supply-max-voltage = <925000>;
+ qcom,supply-enable-load = <10000>;
+ qcom,supply-disable-load = <100>;
+ };
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-mdss.dtsi b/arch/arm64/boot/dts/qcom/msm8996-mdss.dtsi
new file mode 100644
index 000000000000..3e3820a85bb1
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-mdss.dtsi
@@ -0,0 +1,519 @@
+/* Copyright (c) 2014-2015 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@900000 {
+ compatible = "qcom,mdss_mdp";
+ reg = <0x00900000 0x90000>,
+ <0x009b0000 0x1040>,
+ <0x009b8000 0x1040>;
+ reg-names = "mdp_phys", "vbif_phys", "vbif_nrt_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 = <3>;
+ qcom,msm-bus,vectors-KBps =
+ <22 512 0 0>, <23 512 0 0>, <25 512 0 0>,
+ <22 512 0 6400000>, <23 512 0 6400000>, <25 512 0 6400000>,
+ <22 512 0 6400000>, <23 512 0 6400000>, <25 512 0 6400000>;
+
+ qcom,mdss-num-nrt-paths = <1>;
+
+ /* Fudge factors */
+ qcom,mdss-ab-factor = <1 1>; /* 1 time */
+ qcom,mdss-ib-factor = <1 1>; /* 1 time */
+ qcom,mdss-clk-factor = <105 100>; /* 1.05 times */
+
+ qcom,max-mixer-width = <2560>;
+ qcom,max-pipe-width = <2560>;
+
+ /* VBIF QoS remapper settings*/
+ qcom,mdss-vbif-qos-rt-setting = <1 2 2 2>;
+ qcom,mdss-vbif-qos-nrt-setting = <1 1 1 1>;
+
+ qcom,mdss-has-panic-ctrl;
+ qcom,mdss-per-pipe-panic-luts = <0x000f>,
+ <0xffff>,
+ <0xfffc>,
+ <0xff00>;
+
+ qcom,mdss-mdp-reg-offset = <0x00001000>;
+ qcom,max-bandwidth-low-kbps = <9600000>;
+ qcom,max-bandwidth-high-kbps = <9600000>;
+ qcom,max-bandwidth-per-pipe-kbps = <4500000>;
+ qcom,max-clk-rate = <412500000>;
+ qcom,mdss-default-ot-rd-limit = <32>;
+ qcom,mdss-default-ot-wr-limit = <16>;
+ qcom,mdss-dram-channels = <2>;
+
+ 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-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>;
+
+ /* 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-cursor-clk-ctrl-offsets = <0x3A8 16 15>,
+ <0x3B0 16 15>;
+
+
+ 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>;
+ qcom,mdss-wb-off = <0x00065000 0x00065800 0x00066000>;
+ qcom,mdss-intf-off = <0x0006B000 0x0006B800
+ 0x0006C000 0x0006C800>;
+ qcom,mdss-pingpong-off = <0x00071000 0x00071800
+ 0x00072000 0x00072800>;
+ qcom,mdss-slave-pingpong-off = <0x00073000>;
+ qcom,mdss-ppb-off = <0x00000330 0x00000338>;
+ qcom,mdss-has-pingpong-split;
+
+ qcom,mdss-ad-off = <0x0079000 0x00079800 0x0007a000>;
+ qcom,mdss-cdm-off = <0x0007a200>;
+ qcom,mdss-dsc-off = <0x00081000 0x00081400>;
+ qcom,mdss-wfd-mode = "intf";
+ qcom,mdss-has-source-split;
+ qcom,mdss-highest-bank-bit = <0x2>;
+ qcom,mdss-has-decimation;
+ qcom,mdss-has-rotator-downscale;
+ qcom,mdss-idle-power-collapse-enabled;
+ clocks = <&clock_mmss clk_mdss_ahb_clk>,
+ <&clock_mmss clk_mdss_axi_clk>,
+ <&clock_mmss clk_mdp_clk_src>,
+ <&clock_mmss clk_mdss_mdp_vote_clk>,
+ <&clock_mmss clk_mdss_vsync_clk>;
+ clock-names = "iface_clk", "bus_clk", "core_clk_src",
+ "core_clk", "vsync_clk";
+
+ qcom,mdp-settings = <0x01190 0x00000000>,
+ <0x012ac 0xc0000ccc>,
+ <0x012b4 0xc0000ccc>,
+ <0x012bc 0x00cccccc>,
+ <0x012c4 0x000000cc>,
+ <0x013a8 0x0cccc0c0>,
+ <0x013b0 0xccccc0c0>,
+ <0x013b8 0xcccc0000>,
+ <0x013d0 0x00cc0000>,
+ <0x0506c 0x00000000>,
+ <0x0706c 0x00000000>,
+ <0x0906c 0x00000000>,
+ <0x0b06c 0x00000000>,
+ <0x1506c 0x00000000>,
+ <0x1706c 0x00000000>,
+ <0x1906c 0x00000000>,
+ <0x1b06c 0x00000000>,
+ <0x2506c 0x00000000>,
+ <0x2706c 0x00000000>;
+
+ qcom,regs-dump-mdp = <0x01000 0x01454>,
+ <0x02000 0x02064>,
+ <0x02200 0x02264>,
+ <0x02400 0x02464>,
+ <0x02600 0x02664>,
+ <0x02800 0x02864>,
+ <0x05000 0x05150>,
+ <0x05200 0x05230>,
+ <0x07000 0x07150>,
+ <0x07200 0x07230>,
+ <0x09000 0x09150>,
+ <0x09200 0x09230>,
+ <0x0b000 0x0b150>,
+ <0x0b200 0x0b230>,
+ <0x15000 0x15150>,
+ <0x15200 0x15230>,
+ <0x17000 0x17150>,
+ <0x17200 0x17230>,
+ <0x19000 0x19150>,
+ <0x19200 0x19230>,
+ <0x1b000 0x1b150>,
+ <0x1b200 0x1b230>,
+ <0x25000 0x25150>,
+ <0x27000 0x27150>,
+ <0x35000 0x35150>,
+ <0x37000 0x37150>,
+ <0x45000 0x452bc>,
+ <0x46000 0x462bc>,
+ <0x47000 0x472bc>,
+ <0x48000 0x482bc>,
+ <0x49000 0x492bc>,
+ <0x4a000 0x4a2bc>,
+ <0x55000 0x5522c>,
+ <0x57000 0x5722c>,
+ <0x65000 0x652c0>,
+ <0x65800 0x65ac0>,
+ <0x66000 0x662c0>,
+ <0x6b800 0x6ba68>,
+ <0x6c000 0x6c268>,
+ <0x6c800 0x6ca68>,
+ <0x71000 0x710d4>,
+ <0x71800 0x718d4>,
+ <0x73000 0x730d4>,
+ <0x81000 0x81140>,
+ <0x81400 0x81540>;
+
+ qcom,regs-dump-names-mdp = "MDP",
+ "CTL_0", "CTL_1", "CTL_2", "CTL_3", "CTL_4",
+ "VIG0_SSPP", "VIG0", "VIG1_SSPP", "VIG1",
+ "VIG2_SSPP", "VIG2", "VIG3_SSPP", "VIG3",
+ "RGB0_SSPP", "RGB0", "RGB1_SSPP", "RGB1",
+ "RGB2_SSPP", "RGB2", "RGB3_SSPP", "RGB3",
+ "DMA0_SSPP", "DMA1_SSPP",
+ "CURSOR0_SSPP", "CURSOR1_SSPP",
+ "LAYER_0", "LAYER_1", "LAYER_2",
+ "LAYER_3", "LAYER_4", "LAYER_5",
+ "DSPP_0", "DSPP_1",
+ "WB_0", "WB_1", "WB_2",
+ "INTF_1", "INTF_2", "INTF_3",
+ "PP_0", "PP_1", "PP_4",
+ "DSC_0", "DSC_1";
+
+ /* buffer parameters to calculate prefill bandwidth */
+ qcom,mdss-prefill-outstanding-buffer-bytes = <0>;
+ 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 = <2560>;
+ qcom,mdss-prefill-pingpong-buffer-pixels = <5120>;
+
+ qcom,mdss-pp-offsets {
+ qcom,mdss-sspp-mdss-igc-lut-off = <0x2000>;
+ qcom,mdss-sspp-vig-pcc-off = <0x1780>;
+ qcom,mdss-sspp-rgb-pcc-off = <0x380>;
+ qcom,mdss-sspp-dma-pcc-off = <0x380>;
+ qcom,mdss-lm-pgc-off = <0x3C0>;
+ qcom,mdss-dspp-gamut-off = <0x1600>;
+ qcom,mdss-dspp-pcc-off = <0x1700>;
+ qcom,mdss-dspp-pgc-off = <0x17C0>;
+ };
+
+ smmu_mdp_unsec: qcom,smmu_mdp_unsec_cb {
+ compatible = "qcom,smmu_mdp_unsec";
+ iommus = <&mdp_smmu 0>;
+ gdsc-mmagic-mdss-supply = <&gdsc_mmagic_mdss>;
+ clocks = <&clock_mmss clk_smmu_mdp_ahb_clk>,
+ <&clock_mmss clk_mmagic_mdss_axi_clk>,
+ <&clock_mmss clk_smmu_mdp_axi_clk>;
+ clock-names = "mdp_ahb_clk", "mmagic_mdss_axi_clk",
+ "mdp_axi_clk";
+ };
+
+ smmu_rot_unsec: qcom,smmu_rot_unsec_cb {
+ compatible = "qcom,smmu_rot_unsec";
+ iommus = <&rot_smmu 0>;
+ gdsc-mmagic-mdss-supply = <&gdsc_mmagic_mdss>;
+ clocks = <&clock_mmss clk_smmu_rot_ahb_clk>,
+ <&clock_mmss clk_mmagic_mdss_axi_clk>,
+ <&clock_mmss clk_smmu_rot_axi_clk>;
+ clock-names = "rot_ahb_clk", "mmagic_mdss_axi_clk",
+ "rot_axi_clk";
+ };
+
+ smmu_mdp_sec: qcom,smmu_mdp_sec_cb {
+ compatible = "qcom,smmu_mdp_sec";
+ iommus = <&mdp_smmu 1>;
+ gdsc-mmagic-mdss-supply = <&gdsc_mmagic_mdss>;
+ clocks = <&clock_mmss clk_smmu_mdp_ahb_clk>,
+ <&clock_mmss clk_mmagic_mdss_axi_clk>,
+ <&clock_mmss clk_smmu_mdp_axi_clk>;
+ clock-names = "mdp_ahb_clk", "mmagic_mdss_axi_clk",
+ "mdp_axi_clk";
+ };
+
+ smmu_rot_sec: qcom,smmu_rot_sec_cb {
+ compatible = "qcom,smmu_rot_sec";
+ iommus = <&rot_smmu 1>;
+ gdsc-mmagic-mdss-supply = <&gdsc_mmagic_mdss>;
+ clocks = <&clock_mmss clk_smmu_rot_ahb_clk>,
+ <&clock_mmss clk_mmagic_mdss_axi_clk>,
+ <&clock_mmss clk_smmu_rot_axi_clk>;
+ clock-names = "rot_ahb_clk", "mmagic_mdss_axi_clk",
+ "rot_axi_clk";
+ };
+
+ 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_fb2: qcom,mdss_fb_hdmi {
+ cell-index = <2>;
+ compatible = "qcom,mdss-fb";
+ };
+ };
+
+ mdss_dsi: qcom,mdss_dsi@0 {
+ compatible = "qcom,mdss-dsi";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ gdsc-supply = <&gdsc_mdss>;
+ vdda-supply = <&pm8994_l2>;
+ vcca-supply = <&pm8994_l28>;
+ ranges = <0x994000 0x994000 0x400
+ 0x994400 0x994400 0x558
+ 0x828000 0x828000 0x108
+ 0x996000 0x996000 0x400
+ 0x996400 0x996400 0x558
+ 0x828000 0x828000 0x108>;
+
+ /* Bus Scale Settings */
+ qcom,msm-bus,name = "mdss_dsi";
+ 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>;
+
+ qcom,mmss-ulp-clamp-ctrl-offset = <0x14>;
+ qcom,timing-db-mode;
+
+ clocks = <&clock_mmss clk_mdss_mdp_vote_clk>,
+ <&clock_mmss clk_mdss_ahb_clk>,
+ <&clock_mmss clk_mmss_misc_ahb_clk>,
+ <&clock_mmss clk_mdss_axi_clk>,
+ <&clock_mmss clk_ext_byte0_clk_src>,
+ <&clock_mmss clk_ext_byte1_clk_src>,
+ <&clock_mmss clk_ext_pclk0_clk_src>,
+ <&clock_mmss clk_ext_pclk1_clk_src>;
+ clock-names = "mdp_core_clk", "iface_clk",
+ "core_mmss_clk", "bus_clk",
+ "ext_byte0_clk", "ext_byte1_clk",
+ "ext_pixel0_clk", "ext_pixel1_clk";
+
+ 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 = <18160>;
+ qcom,supply-disable-load = <1>;
+ };
+ };
+
+ qcom,phy-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,phy-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "vcca";
+ qcom,supply-min-voltage = <925000>;
+ qcom,supply-max-voltage = <925000>;
+ qcom,supply-enable-load = <17000>;
+ qcom,supply-disable-load = <32>;
+ };
+ };
+
+ mdss_dsi0: qcom,mdss_dsi_ctrl0@994000 {
+ compatible = "qcom,mdss-dsi-ctrl";
+ label = "MDSS DSI CTRL->0";
+ cell-index = <0>;
+ reg = <0x994000 0x400>,
+ <0x994400 0x588>,
+ <0x828000 0x108>;
+ reg-names = "dsi_ctrl", "dsi_phy", "mmss_misc_phys";
+
+ oled-vdda-supply = <&pm8994_l19>;
+ vddio-supply = <&pm8994_l14>;
+ lab-supply = <&lab_regulator>;
+ ibb-supply = <&ibb_regulator>;
+ qcom,mdss-mdp = <&mdss_mdp>;
+ qcom,mdss-fb-map = <&mdss_fb0>;
+
+ clocks = <&clock_mmss clk_mdss_byte0_clk>,
+ <&clock_mmss clk_mdss_pclk0_clk>,
+ <&clock_mmss clk_mdss_esc0_clk>,
+ <&clock_mmss clk_byte0_clk_src>,
+ <&clock_mmss clk_pclk0_clk_src>,
+ <&mdss_dsi0_pll clk_dsi0pll_byte_clk_mux>,
+ <&mdss_dsi0_pll clk_dsi0pll_pixel_clk_mux>,
+ <&mdss_dsi0_pll clk_dsi0pll_byte_clk_src>,
+ <&mdss_dsi0_pll clk_dsi0pll_pixel_clk_src>;
+ clock-names = "byte_clk", "pixel_clk", "core_clk",
+ "byte_clk_rcg", "pixel_clk_rcg",
+ "pll_byte_clk_mux", "pll_pixel_clk_mux",
+ "pll_byte_clk_src", "pll_pixel_clk_src";
+
+ qcom,null-insertion-enabled;
+ qcom,platform-strength-ctrl = [ff 06
+ ff 06
+ ff 06
+ ff 06
+ ff 00];
+ qcom,platform-regulator-settings = [1d
+ 1d 1d 1d 1d];
+ qcom,platform-lane-config = [00 00 10 0f
+ 00 00 10 0f
+ 00 00 10 0f
+ 00 00 10 0f
+ 00 00 10 8f];
+ };
+
+ mdss_dsi1: qcom,mdss_dsi_ctrl1@996000 {
+ compatible = "qcom,mdss-dsi-ctrl";
+ label = "MDSS DSI CTRL->1";
+ cell-index = <1>;
+ reg = <0x996000 0x400>,
+ <0x996400 0x558>,
+ <0x828000 0x108>;
+ reg-names = "dsi_ctrl", "dsi_phy", "mmss_misc_phys";
+
+ oled-vdda-supply = <&pm8994_l19>;
+ vddio-supply = <&pm8994_l14>;
+ lab-supply = <&lab_regulator>;
+ ibb-supply = <&ibb_regulator>;
+ qcom,mdss-mdp = <&mdss_mdp>;
+ qcom,mdss-fb-map = <&mdss_fb0>;
+
+ clocks = <&clock_mmss clk_mdss_byte1_clk>,
+ <&clock_mmss clk_mdss_pclk1_clk>,
+ <&clock_mmss clk_mdss_esc1_clk>,
+ <&clock_mmss clk_byte1_clk_src>,
+ <&clock_mmss clk_pclk1_clk_src>,
+ <&mdss_dsi0_pll clk_dsi0pll_byte_clk_mux>,
+ <&mdss_dsi0_pll clk_dsi0pll_pixel_clk_mux>,
+ <&mdss_dsi0_pll clk_dsi0pll_byte_clk_src>,
+ <&mdss_dsi0_pll clk_dsi0pll_pixel_clk_src>;
+ clock-names = "byte_clk", "pixel_clk", "core_clk",
+ "byte_clk_rcg", "pixel_clk_rcg",
+ "pll_byte_clk_mux", "pll_pixel_clk_mux",
+ "pll_byte_clk_src", "pll_pixel_clk_src";
+
+ qcom,null-insertion-enabled;
+ qcom,platform-strength-ctrl = [ff 06
+ ff 06
+ ff 06
+ ff 06
+ ff 00];
+ qcom,platform-regulator-settings = [1d
+ 1d 1d 1d 1d];
+ qcom,platform-lane-config = [00 00 10 0f
+ 00 00 10 0f
+ 00 00 10 0f
+ 00 00 10 0f
+ 00 00 10 8f];
+ };
+ };
+
+ qcom,mdss_wb_panel {
+ compatible = "qcom,mdss_wb";
+ qcom,mdss_pan_res = <640 480>;
+ qcom,mdss_pan_bpp = <24>;
+ qcom,mdss-fb-map = <&mdss_fb1>;
+ };
+
+ mdss_hdmi_tx: qcom,hdmi_tx@9a0000 {
+ cell-index = <0>;
+ compatible = "qcom,hdmi-tx";
+
+ reg = <0x9a0000 0x50c>,
+ <0x70000 0x6158>,
+ <0x9e0000 0xFFF>;
+ reg-names = "core_physical", "qfprom_physical", "hdcp_physical";
+
+ hpd-gdsc-supply = <&gdsc_mdss>;
+
+ qcom,supply-names = "hpd-gdsc";
+ qcom,min-voltage-level = <0>;
+ qcom,max-voltage-level = <0>;
+ qcom,enable-load = <0>;
+ qcom,disable-load = <0>;
+
+ clocks = <&clock_mmss clk_mdss_mdp_vote_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_fb2>;
+
+ hdmi_audio: qcom,msm-hdmi-audio-rx {
+ compatible = "qcom,msm-hdmi-audio-codec-rx";
+ };
+ };
+
+ mdss_rotator: qcom,mdss_rotator {
+ compatible = "qcom,mdss_rotator";
+ qcom,mdss-wb-count = <2>;
+ qcom,mdss-has-downscale;
+ qcom,mdss-has-ubwc;
+ qcom,mdss-has-reg-bus;
+ /* Bus Scale Settings */
+ qcom,msm-bus,name = "mdss_rotator";
+ qcom,msm-bus,num-cases = <3>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <25 512 0 0>,
+ <25 512 0 6400000>,
+ <25 512 0 6400000>;
+
+ rot-vdd-supply = <&gdsc_mdss>;
+ rot-mmagic-mdss-gdsc-supply = <&gdsc_mmagic_mdss>;
+
+ qcom,supply-names = "rot-mmagic-mdss-gdsc", "rot-vdd";
+
+ clocks = <&clock_mmss clk_mmss_misc_ahb_clk>,
+ <&clock_mmss clk_mdss_rotator_vote_clk>;
+ clock-names = "iface_clk", "rot_core_clk";
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-mmxf-adp.dtsi b/arch/arm64/boot/dts/qcom/msm8996-mmxf-adp.dtsi
new file mode 100644
index 000000000000..73fbb9386f8d
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-mmxf-adp.dtsi
@@ -0,0 +1,818 @@
+/* Copyright (c) 2015, 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 "msm8996-pinctrl.dtsi"
+#include "msm8996-camera-sensor-adp.dtsi"
+#include "msm8996-wsa881x.dtsi"
+
+/ {
+ bluetooth: bt_qca6174 {
+ compatible = "qca,qca6174";
+ qca,bt-reset-gpio = <&pm8994_gpios 19 0>; /* BT_EN */
+ qca,bt-vdd-core-supply = <&pm8994_s3>;
+ qca,bt-vdd-pa-supply = <&rome_vreg>;
+ qca,bt-vdd-io-supply = <&pm8994_s4>;
+ qca,bt-vdd-xtal-supply = <&pm8994_l30>;
+ qca,bt-chip-pwd-voltage-level = <1300000 1300000>;
+ qca,bt-vdd-io-voltage-level = <1800000 1800000>;
+ qca,bt-vdd-xtal-voltage-level = <1800000 1800000>;
+ };
+};
+
+&ufs_ice {
+ status = "ok";
+};
+
+&sdcc1_ice {
+ status = "ok";
+};
+
+&ufsphy1 {
+ status = "ok";
+};
+
+&ufs1 {
+ status = "ok";
+};
+
+&uartblsp2dm1 {
+ status = "ok";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart_console_active>;
+};
+
+&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 = <110 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,clk-rates = <400000 20000000 25000000 50000000
+ 96000000 192000000 384000000>;
+ qcom,ice-clk-rates = <300000000 150000000>;
+ qcom,nonremovable;
+ 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>;
+
+ 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>;
+
+ qcom,clk-rates = <400000 20000000 25000000
+ 50000000 100000000 200000000>;
+ qcom,bus-speed-mode = "SDR12", "SDR25", "SDR50", "DDR50", "SDR104";
+
+ cd-gpios = <&tlmm 95 0x1>;
+
+ 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>;
+ };
+
+ chan@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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>;
+ };
+};
+
+&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;
+ };
+
+ chan@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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>;
+ qcom,btm-channel-number = <0x88>;
+ qcom,thermal-node;
+ };
+};
+
+&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>;
+};
+
+#include "msm8996-mdss-panels.dtsi"
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&mdss_dsi {
+ hw-config = "split_dsi";
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_dual_sharp_video>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
+ qcom,platform-te-gpio = <&tlmm 10 0>;
+ qcom,platform-reset-gpio = <&tlmm 8 0>;
+ qcom,platform-bklight-en-gpio = <&pm8994_gpios 14 0>;
+};
+
+&mdss_dsi1 {
+ qcom,dsi-pref-prim-pan = <&dsi_dual_sharp_video>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
+ qcom,platform-te-gpio = <&tlmm 10 0>;
+ qcom,platform-reset-gpio = <&tlmm 8 0>;
+ qcom,platform-bklight-en-gpio = <&pm8994_gpios 14 0>;
+};
+
+&dsi_dual_sharp_video {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,cont-splash-enabled;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_dual_nt35597_video {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,cont-splash-enabled;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_dual_nt35597_cmd {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,cont-splash-enabled;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+ qcom,partial-update-enabled;
+ qcom,panel-roi-alignment = <720 128 720 64 720 64>;
+};
+
+&dsi_nt35597_dsc_video {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,cont-splash-enabled;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_nt35597_dsc_cmd {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,cont-splash-enabled;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_dual_jdi_video {
+ pwms = <&pmi8994_pwm_4 0 0>;
+ pwm-names = "backlight";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pwm-pmi;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,5v-boost-gpio = <&pmi8994_gpios 8 0>;
+ qcom,cont-splash-enabled;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_dual_jdi_cmd {
+ pwms = <&pmi8994_pwm_4 0 0>;
+ pwm-names = "backlight";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pwm-pmi;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,5v-boost-gpio = <&pmi8994_gpios 8 0>;
+ qcom,cont-splash-enabled;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+ qcom,partial-update-enabled;
+ qcom,panel-roi-alignment = <4 4 2 2 20 20>;
+};
+
+&dsi_dual_jdi_4k_nofbc_video {
+ pwms = <&pmi8994_pwm_4 0 0>;
+ pwm-names = "backlight";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pwm-pmi;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,cont-splash-enabled;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+/{
+ mtp_batterydata: qcom,battery-data {
+ qcom,batt-id-range-pct = <15>;
+ #include "batterydata-itech-3000mah.dtsi"
+ };
+};
+
+&i2c_7 {
+ smb1351-charger@1d {
+ compatible = "qcom,smb1351-charger";
+ reg = <0x1d>;
+ qcom,parallel-charger;
+ qcom,float-voltage-mv = <4400>;
+ qcom,recharge-mv = <100>;
+ };
+};
+
+&usb_otg_switch {
+ status = "disabled";
+};
+
+&pm8994_mpps {
+ 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 */
+ status = "okay";
+ };
+
+ 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>;
+ status = "okay";
+ };
+};
+
+&soc {
+ i2c@75ba000 {
+ synaptics@20 {
+ compatible = "synaptics,dsx";
+ reg = <0x20>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <125 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 = <&tlmm 89 0x00>;
+ synaptics,irq-gpio = <&tlmm 125 0x2008>;
+ synaptics,disable-gpios;
+ synaptics,fw-name = "PR1702898-s3528t_00350002.img";
+ /* Underlying clocks used by secure touch */
+ clock-names = "iface_clk", "core_clk";
+ clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp2_qup6_i2c_apps_clk>;
+ };
+ };
+
+ 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>;
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+
+ vol_up {
+ label = "volume_up";
+ gpios = <&pm8994_gpios 2 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-9335 {
+ qcom,model = "msm8996-tasha-mtp-snd-card";
+
+ qcom,audio-routing =
+ "AIF4 VI", "MCLK",
+ "RX_BIAS", "MCLK",
+ "MADINPUT", "MCLK",
+ "hifi amp", "LINEOUT1",
+ "hifi amp", "LINEOUT2",
+ "AMIC2", "MIC BIAS2",
+ "MIC BIAS2", "Headset Mic",
+ "AMIC3", "MIC BIAS2",
+ "MIC BIAS2", "ANCRight Headset Mic",
+ "AMIC4", "MIC BIAS2",
+ "MIC BIAS2", "ANCLeft Headset Mic",
+ "AMIC5", "MIC BIAS3",
+ "MIC BIAS3", "Handset Mic",
+ "AMIC6", "MIC BIAS4",
+ "MIC BIAS4", "Analog Mic6",
+ "DMIC0", "MIC BIAS1",
+ "MIC BIAS1", "Digital Mic0",
+ "DMIC1", "MIC BIAS1",
+ "MIC BIAS1", "Digital Mic1",
+ "DMIC2", "MIC BIAS3",
+ "MIC BIAS3", "Digital Mic2",
+ "DMIC3", "MIC BIAS3",
+ "MIC BIAS3", "Digital Mic3",
+ "DMIC4", "MIC BIAS4",
+ "MIC BIAS4", "Digital Mic4",
+ "DMIC5", "MIC BIAS4",
+ "MIC BIAS4", "Digital Mic5",
+ "SpkrLeft IN", "SPK1 OUT",
+ "SpkrRight IN", "SPK2 OUT";
+
+ qcom,hdmi-audio-rx;
+ asoc-codec = <&stub_codec>, <&hdmi_audio>;
+ asoc-codec-names = "msm-stub-codec.1",
+ "msm-hdmi-audio-codec-rx";
+ qcom,hph-en1-gpio = <&pmi8994_gpios 10 0>;
+ qcom,hph-en0-gpio = <&pm8994_gpios 13 0>;
+ qcom,us-euro-gpios = <&pm8994_mpps 2 0>;
+ qcom,wsa-max-devs = <2>;
+ qcom,wsa-devs = <&wsa881x_211>, <&wsa881x_212>,
+ <&wsa881x_213>, <&wsa881x_214>;
+ qcom,wsa-aux-dev-prefix = "SpkrLeft", "SpkrRight",
+ "SpkrLeft", "SpkrRight";
+ };
+};
+
+&pm8994_gpios {
+ gpio@c600 { /* GPIO 7 - NFC DWL REQ */
+ qcom,mode = <1>;
+ qcom,output-type = <0>;
+ qcom,pull = <5>;
+ qcom,vin-sel = <2>;
+ qcom,out-strength = <3>;
+ qcom,src-sel = <0>;
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+
+ gpio@c700 { /* GPIO 8 - WLAN_EN */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c800 { /* GPIO 9 - Rome 3.3V control */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* MOS 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 */
+ status = "okay";
+ };
+
+ gpio@c900 { /* GPIO 10 - NFC CLK _REQ*/
+ qcom,mode = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+
+ gpio@cd00 { /* GPIO 14 - lcd_bklt_reg_en */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,invert = <1>; /* output hight initially */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,out-strength = <1>; /* Low drive strength */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ status = "okay";
+ };
+ gpio@c100 { /* GPIO 2 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c300 { /* GPIO 4 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c400 { /* GPIO 5 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@cc00 { /* GPIO 13 - HPH_EN0 */
+ 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>;
+ status = "okay";
+ };
+
+ 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>;
+ status = "okay";
+ };
+
+ gpio@d100 { /* GPIO 18 - Rome Sleep Clock */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@d200 { /* GPIO 19 - Rome BT Reset */
+ 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 */
+ status = "okay";
+ };
+};
+
+&blsp1_uart2 {
+ status = "ok";
+};
+
+&i2c_6 {
+ at24@51 {
+ compatible = "atmel,24c32";
+ reg = <0x51>;
+ };
+};
+
+&i2c_7 {
+ 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>;
+ va-supply = <&rome_vreg>;
+ silabs,va-supply-voltage = <3300000 3300000>;
+ pinctrl-names = "pmx_fm_active","pmx_fm_suspend";
+ pinctrl-0 = <&fm_int_active &fm_status_int_active
+ &fm_rst_active>;
+ pinctrl-1 = <&fm_int_suspend &fm_status_int_suspend
+ &fm_rst_suspend>;
+ silabs,reset-gpio = <&tlmm 39 0>;
+ silabs,int-gpio = <&tlmm 38 0>;
+ silabs,status-gpio = <&tlmm 78 0>;
+ #address-cells = <0>;
+ interrupts = <0 1>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0xffffffff>;
+ interrupt-map = <
+ 0 &tlmm 38 2
+ 1 &tlmm 78 1
+ >;
+ interrupt-names = "silabs_fm_int", "silabs_fm_status_int";
+ };
+};
+
+&i2c_8 { /* BLSP2 QUP2 */
+ nq@28 {
+ compatible = "qcom,nq-nci";
+ reg = <0x28>;
+ qcom,nq-irq = <&tlmm 9 0x00>;
+ qcom,nq-ven = <&tlmm 12 0x00>;
+ qcom,nq-firm = <&pm8994_gpios 7 0x00>;
+ qcom,nq-clkreq = <&pm8994_gpios 10 0x00>;
+ interrupt-parent = <&tlmm>;
+ qcom,clk-src = "BBCLK2";
+ interrupts = <9 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>;
+ clocks = <&clock_gcc clk_bb_clk2_pin>;
+ clock-names = "ref_clk";
+ };
+};
+
+&usb3 {
+ vdda33-supply = <&pm8994_l24>;
+ vdda18-supply = <&pm8994_l12>;
+};
+
+&dsi_dual_jdi_video {
+ /delete-property/ pwms;
+ /delete-property/ qcom,5v-boost-gpio;
+};
+
+&dsi_dual_jdi_cmd {
+ /delete-property/ pwms;
+ /delete-property/ qcom,5v-boost-gpio;
+};
+
+&dsi_dual_jdi_4k_nofbc_video {
+ /delete-property/ pwms;
+};
+
+&soc {
+ sound-9335 {
+ /delete-property/ qcom,hph-en1-gpio;
+ };
+};
+
+/delete-node/ &led_flash0;
+
+&mdss_dsi0 {
+ /delete-property/ lab-supply;
+ /delete-property/ ibb-supply;
+};
+
+&mdss_dsi1 {
+ /delete-property/ lab-supply;
+ /delete-property/ ibb-supply;
+};
+
+&usb3 {
+ /delete-property/ vbus_dwc3-supply;
+};
+
+&cci {
+ qcom,camera@0 {
+ /delete-property/ qcom,led-flash-src;
+ };
+
+ qcom,camera@1 {
+ /delete-property/ cam_vana-supply;
+ };
+};
+
+&usb_otg_switch {
+ /delete-property/ gpio;
+ /delete-property/ vin-supply;
+};
+
+&wsa881x_211 {
+ status = "disabled";
+ /delete-property/ qcom,spkr-sd-n-gpio;
+};
+
+&wsa881x_212 {
+ status = "disabled";
+ /delete-property/ qcom,spkr-sd-n-gpio;
+};
+
+&wsa881x_213 {
+ status = "disabled";
+ /delete-property/ qcom,spkr-sd-n-gpio;
+};
+
+&wsa881x_214 {
+ status = "disabled";
+ /delete-property/ qcom,spkr-sd-n-gpio;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-mtp.dtsi b/arch/arm64/boot/dts/qcom/msm8996-mtp.dtsi
new file mode 100644
index 000000000000..2e2f525d0a67
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-mtp.dtsi
@@ -0,0 +1,888 @@
+/* Copyright (c) 2015, 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 "msm8996-pinctrl.dtsi"
+#include "msm8996-camera-sensor-mtp.dtsi"
+#include "msm8996-wsa881x.dtsi"
+
+/ {
+ bluetooth: bt_qca6174 {
+ compatible = "qca,qca6174";
+ qca,bt-reset-gpio = <&pm8994_gpios 19 0>; /* BT_EN */
+ qca,bt-vdd-core-supply = <&pm8994_s3>;
+ qca,bt-vdd-pa-supply = <&rome_vreg>;
+ qca,bt-vdd-io-supply = <&pm8994_s4>;
+ qca,bt-vdd-xtal-supply = <&pm8994_l30>;
+ qca,bt-chip-pwd-voltage-level = <1300000 1300000>;
+ qca,bt-vdd-io-voltage-level = <1800000 1800000>;
+ qca,bt-vdd-xtal-voltage-level = <1800000 1800000>;
+ };
+};
+
+&ufs_ice {
+ status = "ok";
+};
+
+&sdcc1_ice {
+ status = "ok";
+};
+
+&ufsphy1 {
+ status = "ok";
+};
+
+&ufs1 {
+ status = "ok";
+};
+
+&uartblsp2dm1 {
+ status = "ok";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart_console_active>;
+
+};
+
+&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 = <110 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,clk-rates = <400000 20000000 25000000 50000000 96000000 192000000 384000000>;
+ qcom,ice-clk-rates = <300000000 150000000>;
+ qcom,nonremovable;
+ 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>;
+
+ 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>;
+
+ qcom,clk-rates = <400000 20000000 25000000 50000000 100000000 200000000>;
+ qcom,bus-speed-mode = "SDR12", "SDR25", "SDR50", "DDR50", "SDR104";
+
+ cd-gpios = <&tlmm 95 0x1>;
+
+ 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>;
+ };
+
+ chan@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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>;
+ };
+};
+
+&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;
+ };
+
+ chan@7c {
+ label = "xo_therm_buf";
+ reg = <0x7c>;
+ 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>;
+ qcom,btm-channel-number = <0x88>;
+ qcom,thermal-node;
+ };
+};
+
+&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>;
+};
+
+&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 "msm8996-mdss-panels.dtsi"
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&mdss_dsi {
+ hw-config = "split_dsi";
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_dual_sharp_video>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
+ qcom,platform-te-gpio = <&tlmm 10 0>;
+ qcom,platform-reset-gpio = <&tlmm 8 0>;
+ qcom,platform-bklight-en-gpio = <&pm8994_gpios 14 0>;
+};
+
+&mdss_dsi1 {
+ qcom,dsi-pref-prim-pan = <&dsi_dual_sharp_video>;
+ pinctrl-names = "mdss_default", "mdss_sleep";
+ pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
+ pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
+ qcom,platform-te-gpio = <&tlmm 10 0>;
+ qcom,platform-reset-gpio = <&tlmm 8 0>;
+ qcom,platform-bklight-en-gpio = <&pm8994_gpios 14 0>;
+};
+
+&labibb {
+ status = "ok";
+ qpnp,qpnp-labibb-mode = "lcd";
+};
+
+&dsi_dual_sharp_video {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_dual_nt35597_video {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_dual_nt35597_cmd {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+ qcom,partial-update-enabled;
+ qcom,panel-roi-alignment = <720 128 720 64 720 64>;
+};
+
+&dsi_nt35597_dsc_video {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_nt35597_dsc_cmd {
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_dual_jdi_video {
+ pwms = <&pmi8994_pwm_4 0 0>;
+ pwm-names = "backlight";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pwm-pmi;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,5v-boost-gpio = <&pmi8994_gpios 8 0>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+&dsi_dual_jdi_cmd {
+ pwms = <&pmi8994_pwm_4 0 0>;
+ pwm-names = "backlight";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pwm-pmi;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,5v-boost-gpio = <&pmi8994_gpios 8 0>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+ qcom,partial-update-enabled;
+ qcom,panel-roi-alignment = <4 4 2 2 20 20>;
+};
+
+&dsi_dual_jdi_4k_nofbc_video {
+ pwms = <&pmi8994_pwm_4 0 0>;
+ pwm-names = "backlight";
+ qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
+ qcom,mdss-dsi-bl-pwm-pmi;
+ qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;
+ qcom,mdss-dsi-bl-min-level = <1>;
+ qcom,mdss-dsi-bl-max-level = <4095>;
+ qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
+};
+
+/{
+ mtp_batterydata: qcom,battery-data {
+ qcom,batt-id-range-pct = <15>;
+ #include "batterydata-itech-3000mah.dtsi"
+ };
+};
+
+&pmi8994_charger {
+ qcom,dc-psy-type = "Wipower";
+ qcom,dcin-vadc = <&pmi8994_vadc>;
+ qcom,wipower-default-ilim-map = <4000000 20000000 550 700 300>;
+ qcom,wipower-pt-ilim-map = <4000000 7140000 550 700 300>,
+ <7140000 8140000 550 700 300>,
+ <8140000 9140000 500 700 300>,
+ <9140000 9950000 500 700 300>;
+ qcom,wipower-div2-ilim-map = <4000000 4820000 550 700 300>,
+ <4820000 5820000 550 700 300>,
+ <5820000 6820000 550 650 650>,
+ <6820000 7820000 550 700 600>,
+ <7820000 8500000 550 700 550>;
+};
+
+&i2c_7 {
+ smb1351-charger@1d {
+ compatible = "qcom,smb1351-charger";
+ reg = <0x1d>;
+ qcom,parallel-charger;
+ qcom,float-voltage-mv = <4400>;
+ qcom,recharge-mv = <100>;
+ };
+};
+
+&pmi8994_fg {
+ qcom,battery-data = <&mtp_batterydata>;
+ qcom,ext-sense-type;
+};
+
+&usb_otg_switch {
+ status = "okay";
+};
+
+&pm8994_mpps {
+ 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 */
+ status = "okay";
+ };
+
+ 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>;
+ status = "okay";
+ };
+};
+
+&pmi8994_gpios {
+ gpio@c400 { /* GPIO 5 - USB3 OTG SWITCH EN */
+ qcom,mode = <1>; /* Digital output */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* GPIO */
+ qcom,master-en = <1>; /* Enable GPIO */
+ qcom,invert = <0>; /* Output low initially */
+ status = "okay";
+ };
+};
+
+&pmi8994_gpios {
+ gpio@c700 { /* GPIO 8, lcd_reg_en, 5V boost */
+ qcom,mode = <1>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ qcom,invert = <1>; /* need invert = 0 */
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+
+ gpio@c100 { /* GPIO 2 SPKR_SD_N */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c200 { /* GPIO 3 SPKR_SD_N */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c900 { /* GPIO 10 - HPH_EN1 */
+ qcom,mode = <1>;
+ qcom,pull = <5>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <2>;
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+};
+
+&pmi8994_pwm_4 {
+ qcom,channel-owner = "lcd_bl";
+ qcom,lpg-dtest-line = <4>;
+ qcom,dtest-output = <1>;
+ status = "okay";
+};
+
+&pmi8994_mpps {
+ mpp@a000 { /* MPP 1 */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,vin-sel = <2>; /* S4 1.8V */
+ qcom,src-sel = <7>; /* DTEST4 */
+ qcom,master-en = <1>; /* Enable MPP */
+ status = "okay";
+ };
+
+ mpp@a300 { /* MPP 4 */
+ /* WLED FET */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,vin-sel = <0>; /* VIN0 */
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+};
+
+&soc {
+ i2c@75ba000 {
+ synaptics@20 {
+ compatible = "synaptics,dsx";
+ reg = <0x20>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <125 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 = <&tlmm 89 0x00>;
+ synaptics,irq-gpio = <&tlmm 125 0x2008>;
+ synaptics,disable-gpios;
+ synaptics,fw-name = "PR1702898-s3528t_00350002.img";
+ /* Underlying clocks used by secure touch */
+ clock-names = "iface_clk", "core_clk";
+ clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp2_qup6_i2c_apps_clk>;
+ };
+ };
+
+ 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>;
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+
+ vol_up {
+ label = "volume_up";
+ gpios = <&pm8994_gpios 2 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-9335 {
+ qcom,model = "msm8996-tasha-mtp-snd-card";
+
+ qcom,audio-routing =
+ "AIF4 VI", "MCLK",
+ "RX_BIAS", "MCLK",
+ "MADINPUT", "MCLK",
+ "hifi amp", "LINEOUT1",
+ "hifi amp", "LINEOUT2",
+ "AMIC2", "MIC BIAS2",
+ "MIC BIAS2", "Headset Mic",
+ "AMIC3", "MIC BIAS2",
+ "MIC BIAS2", "ANCRight Headset Mic",
+ "AMIC4", "MIC BIAS2",
+ "MIC BIAS2", "ANCLeft Headset Mic",
+ "AMIC5", "MIC BIAS3",
+ "MIC BIAS3", "Handset Mic",
+ "AMIC6", "MIC BIAS4",
+ "MIC BIAS4", "Analog Mic6",
+ "DMIC0", "MIC BIAS1",
+ "MIC BIAS1", "Digital Mic0",
+ "DMIC1", "MIC BIAS1",
+ "MIC BIAS1", "Digital Mic1",
+ "DMIC2", "MIC BIAS3",
+ "MIC BIAS3", "Digital Mic2",
+ "DMIC3", "MIC BIAS3",
+ "MIC BIAS3", "Digital Mic3",
+ "DMIC4", "MIC BIAS4",
+ "MIC BIAS4", "Digital Mic4",
+ "DMIC5", "MIC BIAS4",
+ "MIC BIAS4", "Digital Mic5",
+ "SpkrLeft IN", "SPK1 OUT",
+ "SpkrRight IN", "SPK2 OUT";
+
+ qcom,hdmi-audio-rx;
+ asoc-codec = <&stub_codec>, <&hdmi_audio>;
+ asoc-codec-names = "msm-stub-codec.1", "msm-hdmi-audio-codec-rx";
+ qcom,hph-en1-gpio = <&pmi8994_gpios 10 0>;
+ qcom,hph-en0-gpio = <&pm8994_gpios 13 0>;
+ qcom,us-euro-gpios = <&pm8994_mpps 2 0>;
+ qcom,wsa-max-devs = <2>;
+ qcom,wsa-devs = <&wsa881x_211>, <&wsa881x_212>,
+ <&wsa881x_213>, <&wsa881x_214>;
+ qcom,wsa-aux-dev-prefix = "SpkrLeft", "SpkrRight",
+ "SpkrLeft", "SpkrRight";
+ };
+};
+
+&pm8994_gpios {
+ gpio@c600 { /* GPIO 7 - NFC DWL REQ */
+ qcom,mode = <1>;
+ qcom,output-type = <0>;
+ qcom,pull = <5>;
+ qcom,vin-sel = <2>;
+ qcom,out-strength = <3>;
+ qcom,src-sel = <0>;
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+
+ gpio@c700 { /* GPIO 8 - WLAN_EN */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@c800 { /* GPIO 9 - Rome 3.3V control */
+ qcom,mode = <1>; /* Digital output */
+ qcom,output-type = <0>; /* MOS 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 */
+ status = "okay";
+ };
+
+ gpio@c900 { /* GPIO 10 - NFC CLK _REQ*/
+ qcom,mode = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ qcom,master-en = <1>;
+ status = "okay";
+ };
+
+ gpio@cd00 { /* GPIO 14 - lcd_bklt_reg_en */
+ qcom,mode = <1>; /* DIGITAL OUT */
+ qcom,output-type = <0>; /* CMOS logic */
+ qcom,invert = <1>; /* output hight initially */
+ qcom,vin-sel = <2>; /* 1.8 */
+ qcom,src-sel = <0>; /* CONSTANT */
+ qcom,out-strength = <1>; /* Low drive strength */
+ qcom,master-en = <1>; /* ENABLE GPIO */
+ status = "okay";
+ };
+ gpio@c100 { /* GPIO 2 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c300 { /* GPIO 4 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@c400 { /* GPIO 5 */
+ qcom,mode = <0>;
+ qcom,pull = <0>;
+ qcom,vin-sel = <2>;
+ qcom,src-sel = <0>;
+ status = "okay";
+ };
+
+ gpio@cc00 { /* GPIO 13 - HPH_EN0 */
+ 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>;
+ status = "okay";
+ };
+
+ 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>;
+ status = "okay";
+ };
+
+ gpio@d100 { /* GPIO 18 - Rome Sleep Clock */
+ 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 */
+ status = "okay";
+ };
+
+ gpio@d200 { /* GPIO 19 - Rome BT Reset */
+ 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 */
+ status = "okay";
+ };
+};
+
+&pmi8994_haptics {
+ status = "okay";
+};
+
+&flash_led {
+ qcom,follow-otst2-rb-disabled;
+};
+
+&blsp1_uart2 {
+ status = "ok";
+};
+
+&i2c_6 {
+ at24@51 {
+ compatible = "atmel,24c32";
+ reg = <0x51>;
+ };
+};
+
+&i2c_7 {
+ 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>;
+ va-supply = <&rome_vreg>;
+ silabs,va-supply-voltage = <3300000 3300000>;
+ pinctrl-names = "pmx_fm_active","pmx_fm_suspend";
+ pinctrl-0 = <&fm_int_active &fm_status_int_active &fm_rst_active>;
+ pinctrl-1 = <&fm_int_suspend &fm_status_int_suspend &fm_rst_suspend>;
+ silabs,reset-gpio = <&tlmm 39 0>;
+ silabs,int-gpio = <&tlmm 38 0>;
+ silabs,status-gpio = <&tlmm 78 0>;
+ #address-cells = <0>;
+ interrupts = <0 1>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0xffffffff>;
+ interrupt-map = <
+ 0 &tlmm 38 2
+ 1 &tlmm 78 1
+ >;
+ interrupt-names = "silabs_fm_int", "silabs_fm_status_int";
+ };
+};
+
+&i2c_8 { /* BLSP2 QUP2 */
+ nq@28 {
+ compatible = "qcom,nq-nci";
+ reg = <0x28>;
+ qcom,nq-irq = <&tlmm 9 0x00>;
+ qcom,nq-ven = <&tlmm 12 0x00>;
+ qcom,nq-firm = <&pm8994_gpios 7 0x00>;
+ qcom,nq-clkreq = <&pm8994_gpios 10 0x00>;
+ interrupt-parent = <&tlmm>;
+ qcom,clk-src = "BBCLK2";
+ interrupts = <9 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>;
+ clocks = <&clock_gcc clk_bb_clk2_pin>;
+ clock-names = "ref_clk";
+ };
+};
+
+&wil6210 {
+ status = "ok";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-pinctrl.dtsi b/arch/arm64/boot/dts/qcom/msm8996-pinctrl.dtsi
new file mode 100644
index 000000000000..421c98ac904e
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-pinctrl.dtsi
@@ -0,0 +1,2433 @@
+/* Copyright (c) 2014-2015, 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: pinctrl@01010000 {
+ compatible = "qcom,msm8996-pinctrl";
+ reg = <0x01010000 0x300000>;
+ interrupts = <0 208 0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ /* add pingrp for adv7533 */
+ pmx_adv7533: pmx_adv7533 {
+ adv7533_0_int_active: adv7533_0_int_active {
+ mux {
+ pins = "gpio106";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio106";
+ drive-strength = <16>; /* 16 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ adv7533_0_int_suspend: adv7533_0_int_suspend {
+ mux {
+ pins = "gpio106";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio106";
+ drive-strength = <16>; /* 16 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ adv7533_0_hpd_int_active: adv7533_0_hpd_int_active {
+ mux {
+ pins = "gpio104";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio104";
+ drive-strength = <16>; /* 16 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ adv7533_0_hpd_int_suspend: adv7533_0_hpd_int_suspend {
+ mux {
+ pins = "gpio104";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio104";
+ drive-strength = <16>; /* 16 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ adv7533_0_switch_active: adv7533_0_switch_active {
+ mux {
+ pins = "gpio105";
+ function = "gpio";
+ bias-pull-down; /* pull down */
+ };
+
+ config {
+ pins = "gpio105";
+ drive-strength = <16>; /* 16 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ adv7533_0_switch_suspend: adv7533_0_switch_suspend {
+ mux {
+ pins = "gpio105";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio105";
+ drive-strength = <16>; /* 16 mA */
+ };
+ };
+ adv7533_1_int_active: adv7533_1_int_active {
+ mux {
+ pins = "gpio108";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio108";
+ drive-strength = <16>; /* 16 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ adv7533_1_int_suspend: adv7533_1_int_suspend {
+ mux {
+ pins = "gpio108";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio108";
+ drive-strength = <16>; /* 16 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ adv7533_1_hpd_int_active: adv7533_1_hpd_int_active {
+ mux {
+ pins = "gpio103";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio103";
+ drive-strength = <16>; /* 16 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ adv7533_1_hpd_int_suspend: adv7533_1_hpd_int_suspend {
+ mux {
+ pins = "gpio103";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio103";
+ drive-strength = <16>; /* 16 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ adv7533_1_switch_active: adv7533_1_switch_active {
+ mux {
+ pins = "gpio107";
+ function = "gpio";
+ bias-pull-down; /* pull down */
+ };
+
+ config {
+ pins = "gpio107";
+ drive-strength = <16>; /* 16 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ adv7533_1_switch_suspend: adv7533_1_switch_suspend {
+ mux {
+ pins = "gpio107";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio107";
+ drive-strength = <16>; /* 16 mA */
+ };
+ };
+ };
+
+ uart_console_active: uart_console_active {
+ mux {
+ pins = "gpio4", "gpio5";
+ function = "blsp_uart8";
+ };
+
+ config {
+ pins = "gpio4", "gpio5";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ blsp1_uart2_active: blsp1_uart2_active {
+ mux {
+ pins = "gpio41", "gpio42", "gpio43", "gpio44";
+ function = "blsp_uart2";
+ };
+
+ config {
+ pins = "gpio41", "gpio42", "gpio43", "gpio44";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ blsp1_uart2_sleep: blsp1_uart2_sleep {
+ mux {
+ pins = "gpio41", "gpio42", "gpio43", "gpio44";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio41", "gpio42", "gpio43", "gpio44";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ pmx_mdss: pmx_mdss {
+ mdss_dsi_active: mdss_dsi_active {
+ mux {
+ pins = "gpio8";
+ function = "gpio";
+ };
+
+ pmx_mdss {
+ pins = "gpio8";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable = <0>; /* no pull */
+ output-high;
+ };
+ };
+ mdss_dsi_suspend: mdss_dsi_suspend {
+ mux {
+ pins = "gpio8";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio8";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+ };
+
+ mdss_te_active: mdss_te_active {
+ mux {
+ pins = "gpio10";
+ function = "mdp_vsync";
+ };
+ config {
+ pins = "gpio10";
+ drive-strength = <2>; /* 8 mA */
+ bias-pull-down; /* pull down*/
+ };
+ };
+
+
+ mdss_te_suspend: mdss_te_suspend {
+ mux {
+ pins = "gpio10";
+ function = "mdp_vsync";
+ };
+ config {
+ pins = "gpio10";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ mdss_disp_bkl_active: mdss_disp_bkl_active {
+ config {
+ pins = "gpio135";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* no pull */
+ output-high;
+ };
+ };
+
+ mdss_disp_bkl_suspend: mdss_disp_bkl_suspend {
+ config {
+ pins = "gpio135";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ mdss_hdmi_hpd_active: mdss_hdmi_hpd_active {
+ mux {
+ pins = "gpio34";
+ function = "hdmi_hot";
+ };
+
+ config {
+ pins = "gpio34";
+ bias-pull-down;
+ drive-strength = <16>;
+ };
+ };
+
+ mdss_hdmi_hpd_suspend: mdss_hdmi_hpd_suspend {
+ mux {
+ pins = "gpio34";
+ function = "hdmi_hot";
+ };
+
+ config {
+ pins = "gpio34";
+ bias-pull-down;
+ drive-strength = <2>;
+ };
+ };
+
+ mdss_hdmi_ddc_active: mdss_hdmi_ddc_active {
+ mux {
+ pins = "gpio32", "gpio33";
+ function = "hdmi_ddc";
+ };
+
+ config {
+ pins = "gpio32", "gpio33";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+
+ mdss_hdmi_ddc_suspend: mdss_hdmi_ddc_suspend {
+ mux {
+ pins = "gpio32", "gpio33";
+ function = "hdmi_ddc";
+ };
+
+ config {
+ pins = "gpio32", "gpio33";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+
+ mdss_hdmi_cec_active: mdss_hdmi_cec_active {
+ mux {
+ pins = "gpio31";
+ function = "hdmi_cec";
+ };
+
+ config {
+ pins = "gpio31";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+
+ mdss_hdmi_cec_suspend: mdss_hdmi_cec_suspend {
+ mux {
+ pins = "gpio31";
+ function = "hdmi_cec";
+ };
+
+ config {
+ pins = "gpio31";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+
+ usb_hub_reset_active: usb_hub_reset_active {
+ usb_hub_reset_active {
+ pins = "gpio103";
+ drive-strength = <8>; /* 8 mA */
+ bias-pull-up; /* pull up */
+ output-high;
+ };
+ };
+
+ usb_hub_reset_suspend: usb_hub_reset_suspend {
+ usb_hub_reset_suspend {
+ pins = "gpio103";
+ drive-strength = <2>; /* 2 mA */
+ bias-disable= <0>; /* no pull */
+ };
+ };
+
+
+ gp_switch_active: gp_switch_active {
+ gp_switch_active {
+ pins = "gpio127";
+ drive-strength = <8>; /* 8 mA */
+ bias-pull-up; /* pull up */
+ output-low;
+ };
+ };
+
+ gp_switch_suspend: gp_switch_suspend {
+ gp_switch_suspend {
+ pins = "gpio127";
+ drive-strength = <2>; /* 2 mA */
+ bias-disable= <0>; /* no pull */
+ };
+ };
+
+
+ sdc1_clk_on: sdc1_clk_on {
+ config {
+ pins = "sdc1_clk";
+ bias-disable; /* NO pull */
+ drive-strength = <16>; /* 16 MA */
+ };
+ };
+
+ sdc1_clk_off: sdc1_clk_off {
+ config {
+ pins = "sdc1_clk";
+ bias-disable; /* NO pull */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ sdc1_cmd_on: sdc1_cmd_on {
+ config {
+ pins = "sdc1_cmd";
+ bias-pull-up; /* pull up */
+ drive-strength = <10>; /* 10 MA */
+ };
+ };
+
+ sdc1_cmd_off: sdc1_cmd_off {
+ config {
+ pins = "sdc1_cmd";
+ num-grp-pins = <1>;
+ bias-pull-up; /* pull up */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ sdc1_data_on: sdc1_data_on {
+ config {
+ pins = "sdc1_data";
+ bias-pull-up; /* pull up */
+ drive-strength = <10>; /* 10 MA */
+ };
+ };
+
+ sdc1_data_off: sdc1_data_off {
+ config {
+ pins = "sdc1_data";
+ bias-pull-up; /* pull up */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ sdc1_rclk_on: sdc1_rclk_on {
+ config {
+ pins = "sdc1_rclk";
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ sdc1_rclk_off: sdc1_rclk_off {
+ config {
+ pins = "sdc1_rclk";
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ sdc2_clk_on: sdc2_clk_on {
+ config {
+ pins = "sdc2_clk";
+ bias-disable; /* NO pull */
+ drive-strength = <16>; /* 16 MA */
+ };
+ };
+
+ sdc2_clk_off: sdc2_clk_off {
+ config {
+ pins = "sdc2_clk";
+ bias-disable; /* NO pull */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ sdc2_cmd_on: sdc2_cmd_on {
+ config {
+ pins = "sdc2_cmd";
+ bias-pull-up; /* pull up */
+ drive-strength = <10>; /* 10 MA */
+ };
+ };
+
+ sdc2_cmd_off: sdc2_cmd_off {
+ config {
+ pins = "sdc2_cmd";
+ bias-pull-up; /* pull up */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ sdc2_data_on: sdc2_data_on {
+ config {
+ pins = "sdc2_data";
+ bias-pull-up; /* pull up */
+ drive-strength = <10>; /* 10 MA */
+ };
+ };
+
+ sdc2_data_off: sdc2_data_off {
+ config {
+ pins = "sdc2_data";
+ bias-pull-up; /* pull up */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ sdc2_cd_on: sdc2_cd_on {
+ mux {
+ pins = "gpio95";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio95";
+ bias-pull-up; /* pull up */
+ drive-strength = <16>; /* 16 MA */
+ };
+ };
+
+ sdc2_cd_off: sdc2_cd_off {
+ mux {
+ pins = "gpio95";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio95";
+ bias-pull-up; /* pull up */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ sdc2_cd_on_sbc: sdc2_cd_on_sbc {
+ mux {
+ pins = "gpio38";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio38";
+ bias-pull-up; /* pull up */
+ drive-strength = <16>; /* 16 MA */
+ };
+ };
+
+ sdc2_cd_off_sbc: sdc2_cd_off_sbc {
+ mux {
+ pins = "gpio38";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio38";
+ bias-pull-up; /* pull up */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ ts_mux {
+ ts_active: ts_active {
+ mux {
+ pins = "gpio89", "gpio125";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio89", "gpio125";
+ drive-strength = <16>;
+ bias-pull-up;
+ };
+ };
+
+ ts_suspend: ts_suspend {
+ mux {
+ pins = "gpio89", "gpio125";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio89", "gpio125";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+
+ ts_mux_sbc {
+ ts_active_sbc: ts_active_sbc {
+ mux {
+ pins = "gpio29", "gpio125";
+ function = "gpio";
+ };
+
+ config_sbc {
+ pins = "gpio29", "gpio125";
+ drive-strength = <16>;
+ bias-pull-up;
+ };
+ };
+
+ ts_suspend_sbc: ts_suspend_sbc {
+ mux {
+ pins = "gpio29", "gpio125";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio29", "gpio125";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+ i2c_12 {
+ i2c_12_active: i2c_12_active {
+ mux {
+ pins = "gpio87", "gpio88";
+ function = "blsp_i2c12";
+ };
+
+ config {
+ pins = "gpio87", "gpio88";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ i2c_12_sleep: i2c_12_sleep {
+ mux {
+ pins = "gpio87", "gpio88";
+ function = "blsp_i2c12";
+ };
+
+ config {
+ pins = "gpio87", "gpio88";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+ };
+
+ i2c_6 {
+ i2c_6_active: i2c_6_active {
+ mux {
+ pins = "gpio27", "gpio28";
+ function = "blsp_i2c6";
+ };
+
+ config {
+ pins = "gpio27", "gpio28";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ i2c_6_sleep: i2c_6_sleep {
+ mux {
+ pins = "gpio27", "gpio28";
+ function = "blsp_i2c6";
+ };
+
+ config {
+ pins = "gpio27", "gpio28";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+ };
+
+ i2c_7 {
+ i2c_7_active: i2c_7_active {
+ mux {
+ pins = "gpio55", "gpio56";
+ function = "blsp_i2c7";
+ };
+
+ config {
+ pins = "gpio55", "gpio56";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ i2c_7_sleep: i2c_7_sleep {
+ mux {
+ pins = "gpio55", "gpio56";
+ function = "blsp_i2c7";
+ };
+
+ config {
+ pins = "gpio55", "gpio56";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+ };
+
+ i2c_8 {
+ i2c_8_active: i2c_8_active {
+ mux {
+ pins = "gpio6", "gpio7";
+ function = "blsp_i2c8";
+ };
+
+ config {
+ pins = "gpio6", "gpio7";
+ drive-strength = <4>;
+ bias-disable;
+ };
+ };
+
+ i2c_8_sleep: i2c_8_sleep {
+ mux {
+ pins = "gpio6", "gpio7";
+ function = "blsp_i2c8";
+ };
+
+ config {
+ pins = "gpio6", "gpio7";
+ drive-strength = <4>;
+ bias-pull-up;
+ };
+ };
+ };
+
+ pmx_fm_int {
+ fm_int_active: fm_int_active {
+ mux {
+ pins = "gpio38";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio38";
+ drive-strength = <16>;
+ bias-pull-up;
+ };
+ };
+
+ fm_int_suspend: fm_int_suspend {
+ mux {
+ pins = "gpio38";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio38";
+ drive-strength = <16>;
+ bias-pull-up;
+ };
+ };
+ };
+
+ pmx_fm_status {
+ fm_status_int_active: fm_status_int_active {
+ mux {
+ pins = "gpio78";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio78";
+ drive-strength = <16>;
+ bias-pull-up;
+ };
+ };
+
+ fm_status_int_suspend: fm_status_int_suspend {
+ mux {
+ pins = "gpio78";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio78";
+ drive-strength = <16>;
+ bias-pull-up;
+ };
+ };
+ };
+
+ pmx_fm_rst {
+ fm_rst_active: fm_rst_active {
+ mux {
+ pins = "gpio39";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio39";
+ drive-strength = <16>;
+ bias-pull-down;
+ };
+ };
+
+ fm_rst_suspend: fm_rst_suspend {
+ mux {
+ pins = "gpio39";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio39";
+ drive-strength = <16>;
+ bias-pull-down;
+ };
+ };
+ };
+
+ pmx_rd_nfc_int {
+ nfc_int_active: active {
+ mux {
+ pins = "gpio9";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio9";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+
+ nfc_int_suspend: suspend {
+ mux {
+ pins = "gpio9";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio9";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+ };
+
+ pmx_nfc_reset {
+ nfc_disable_active: active {
+ mux {
+ pins = "gpio12";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio12";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+
+ nfc_disable_suspend: suspend {
+ mux {
+ pins = "gpio12";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio12";
+ drive-strength = <6>;
+ bias-disable;
+ };
+ };
+ };
+
+ spi_0 {
+ spi_0_active: spi_0_active {
+ mux {
+ pins = "gpio0", "gpio1",
+ "gpio2", "gpio3";
+ function = "blsp_spi1";
+ };
+
+ config {
+ pins = "gpio0", "gpio1",
+ "gpio2", "gpio3";
+ drive-strength = <6>;
+ bias-disable;
+ };
+ };
+
+ spi_0_sleep: spi_0_sleep {
+ mux {
+ pins = "gpio0", "gpio1",
+ "gpio2", "gpio3";
+ function = "blsp_spi1";
+ };
+
+ config {
+ pins = "gpio0", "gpio1",
+ "gpio2", "gpio3";
+ drive-strength = <6>;
+ bias-disable;
+ };
+ };
+ };
+
+ spi_0_cs {
+ spi_0_cs_active: spi_0_cs_active {
+ mux {
+ pins = "gpio24", "gpio90";
+ function = "blsp1_spi";
+ };
+
+ config {
+ pins = "gpio24", "gpio90";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+
+ spi_0_cs_sleep: spi_0_cs_sleep {
+ mux {
+ pins = "gpio24", "gpio90";
+ function = "blsp1_spi";
+ };
+
+ config {
+ pins = "gpio24", "gpio90";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+ };
+
+ pcie0 {
+ pcie0_clkreq_default: pcie0_clkreq_default {
+ mux {
+ pins = "gpio36";
+ function = "pci_e0";
+ };
+
+ config {
+ pins = "gpio36";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+
+ pcie0_perst_default: pcie0_perst_default {
+ mux {
+ pins = "gpio35";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio35";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+
+ pcie0_wake_default: pcie0_wake_default {
+ mux {
+ pins = "gpio37";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio37";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+
+ pcie0_clkreq_sleep: pcie0_clkreq_sleep {
+ mux {
+ pins = "gpio36";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio36";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ pcie0_wake_sleep: pcie0_wake_sleep {
+ mux {
+ pins = "gpio37";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio37";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+
+ pcie1 {
+ pcie1_clkreq_default: pcie1_clkreq_default {
+ mux {
+ pins = "gpio131";
+ function = "pci_e1";
+ };
+
+ config {
+ pins = "gpio131";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+
+ pcie1_perst_default: pcie1_perst_default {
+ mux {
+ pins = "gpio130";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio130";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+
+ pcie1_wake_default: pcie1_wake_default {
+ mux {
+ pins = "gpio132";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio132";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+
+ pcie1_clkreq_sleep: pcie1_clkreq_sleep {
+ mux {
+ pins = "gpio131";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio131";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ pcie1_wake_sleep: pcie1_wake_sleep {
+ mux {
+ pins = "gpio132";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio132";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+
+ pcie2 {
+ pcie2_clkreq_default: pcie2_clkreq_default {
+ mux {
+ pins = "gpio115";
+ function = "pci_e2";
+ };
+
+ config {
+ pins = "gpio115";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+
+ pcie2_perst_default: pcie2_perst_default {
+ mux {
+ pins = "gpio114";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio114";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+
+ pcie2_wake_default: pcie2_wake_default {
+ mux {
+ pins = "gpio116";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio116";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+ };
+
+ pcie2_clkreq_sleep: pcie2_clkreq_sleep {
+ mux {
+ pins = "gpio115";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio115";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ pcie2_wake_sleep: pcie2_wake_sleep {
+ mux {
+ pins = "gpio116";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio116";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+
+ pri_aux_pcm {
+ pri_aux_pcm_sleep: pri_aux_pcm_sleep {
+ mux {
+ pins = "gpio65", "gpio66";
+ function = "pri_mi2s";
+ };
+
+ config {
+ pins = "gpio65", "gpio66";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+ pri_aux_pcm_active: pri_aux_pcm_active {
+ mux {
+ pins = "gpio65", "gpio66";
+ function = "pri_mi2s";
+ };
+
+ config {
+ pins = "gpio65", "gpio66";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ output-high;
+ };
+ };
+ };
+
+ pri_aux_pcm_din {
+ pri_aux_pcm_din_sleep: pri_aux_pcm_din_sleep {
+ mux {
+ pins = "gpio67";
+ function = "pri_mi2s";
+ };
+
+ config {
+ pins = "gpio67";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+ pri_aux_pcm_din_active: pri_aux_pcm_din_active {
+ mux {
+ pins = "gpio67";
+ function = "pri_mi2s";
+ };
+
+ config {
+ pins = "gpio67";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ };
+ };
+ };
+
+ pri_aux_pcm_dout {
+ pri_aux_pcm_dout_sleep: pri_aux_pcm_dout_sleep {
+ mux {
+ pins = "gpio68";
+ function = "pri_mi2s";
+ };
+
+ config {
+ pins = "gpio68";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+ pri_aux_pcm_dout_active: pri_aux_pcm_dout_active {
+ mux {
+ pins = "gpio68";
+ function = "pri_mi2s";
+ };
+
+ config {
+ pins = "gpio68";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ };
+ };
+ };
+
+ spkr_i2s_clk_pin {
+ spkr_i2s_clk_sleep: spkr_i2s_clk_sleep {
+ mux {
+ pins = "gpio69";
+ function = "spkr_i2s";
+ };
+
+ config {
+ pins = "gpio69";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+ spkr_i2s_clk_active: spkr_i2s_clk_active {
+ mux {
+ pins = "gpio69";
+ function = "spkr_i2s";
+ };
+
+ config {
+ pins = "gpio69";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ };
+ };
+ };
+
+ cnss_pins {
+ cnss_default: cnss_default {
+ mux {
+ pins = "gpio46";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio46";
+ drive-strength = <16>;
+ bias-pull-down;
+ };
+ };
+ };
+
+ tert_mi2s {
+ tert_mi2s_sleep: tert_mi2s_sleep {
+ mux {
+ pins = "gpio75", "gpio76";
+ function = "ter_mi2s";
+ };
+
+ config {
+ pins = "gpio75", "gpio76";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+ tert_mi2s_active: tert_mi2s_active {
+ mux {
+ pins = "gpio75", "gpio76";
+ function = "ter_mi2s";
+ };
+
+ config {
+ pins = "gpio75", "gpio76";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ output-high;
+ };
+ };
+ };
+
+ tert_mi2s_sd0 {
+ tert_mi2s_sd0_sleep: tert_mi2s_sd0_sleep {
+ mux {
+ pins = "gpio77";
+ function = "ter_mi2s";
+ };
+
+ config {
+ pins = "gpio77";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+ tert_mi2s_sd0_active: tert_mi2s_sd0_active {
+ mux {
+ pins = "gpio77";
+ function = "ter_mi2s";
+ };
+
+ config {
+ pins = "gpio77";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ };
+ };
+ };
+
+ quat_mi2s {
+ quat_mi2s_sleep: quat_mi2s_sleep {
+ mux {
+ pins = "gpio58", "gpio59";
+ function = "qua_mi2s";
+ };
+
+ config {
+ pins = "gpio58", "gpio59";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+ quat_mi2s_active: quat_mi2s_active {
+ mux {
+ pins = "gpio58", "gpio59";
+ function = "qua_mi2s";
+ };
+
+ config {
+ pins = "gpio58", "gpio59";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ output-high;
+ };
+ };
+ };
+
+ quat_mi2s_sd0 {
+ quat_mi2s_sd0_sleep: quat_mi2s_sd0_sleep {
+ mux {
+ pins = "gpio60";
+ function = "qua_mi2s";
+ };
+
+ config {
+ pins = "gpio60";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+ quat_mi2s_sd0_active: quat_mi2s_sd0_active {
+ mux {
+ pins = "gpio60";
+ function = "qua_mi2s";
+ };
+
+ config {
+ pins = "gpio60";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ };
+ };
+ };
+
+ tert_tdm {
+ tert_tdm_sleep: tert_tdm_sleep {
+ mux {
+ pins = "gpio75", "gpio76";
+ function = "ter_mi2s";
+ };
+
+ config {
+ pins = "gpio75", "gpio76";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+ tert_tdm_active: tert_tdm_active {
+ mux {
+ pins = "gpio75", "gpio76";
+ function = "ter_mi2s";
+ };
+
+ config {
+ pins = "gpio75", "gpio76";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ output-high;
+ };
+ };
+ };
+
+ tert_tdm_din {
+ tert_tdm_din_sleep: tert_tdm_din_sleep {
+ mux {
+ pins = "gpio77";
+ function = "ter_mi2s";
+ };
+
+ config {
+ pins = "gpio77";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+ tert_tdm_din_active: tert_tdm_din_active {
+ mux {
+ pins = "gpio77";
+ function = "ter_mi2s";
+ };
+
+ config {
+ pins = "gpio77";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ };
+ };
+ };
+
+ tert_tdm_dout {
+ tert_tdm_dout_sleep: tert_tdm_dout_sleep {
+ mux {
+ pins = "gpio78";
+ function = "ter_mi2s";
+ };
+
+ config {
+ pins = "gpio78";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+ tert_tdm_dout_active: tert_tdm_dout_active {
+ mux {
+ pins = "gpio78";
+ function = "ter_mi2s";
+ };
+
+ config {
+ pins = "gpio78";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ };
+ };
+ };
+
+ quat_tdm {
+ quat_tdm_sleep: quat_tdm_sleep {
+ mux {
+ pins = "gpio58", "gpio59";
+ function = "qua_mi2s";
+ };
+
+ config {
+ pins = "gpio58", "gpio59";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+ quat_tdm_active: quat_tdm_active {
+ mux {
+ pins = "gpio58", "gpio59";
+ function = "qua_mi2s";
+ };
+
+ config {
+ pins = "gpio58", "gpio59";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ output-high;
+ };
+ };
+ };
+
+ quat_tdm_din {
+ quat_tdm_din_sleep: quat_tdm_din_sleep {
+ mux {
+ pins = "gpio60";
+ function = "qua_mi2s";
+ };
+
+ config {
+ pins = "gpio60";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+ quat_tdm_din_active: quat_tdm_din_active {
+ mux {
+ pins = "gpio60";
+ function = "qua_mi2s";
+ };
+
+ config {
+ pins = "gpio60";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ };
+ };
+ };
+
+ quat_tdm_dout {
+ quat_tdm_dout_sleep: quat_tdm_dout_sleep {
+ mux {
+ pins = "gpio61";
+ function = "qua_mi2s";
+ };
+
+ config {
+ pins = "gpio61";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ };
+ };
+ quat_tdm_dout_active: quat_tdm_dout_active {
+ mux {
+ pins = "gpio61";
+ function = "qua_mi2s";
+ };
+
+ config {
+ pins = "gpio61";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ };
+ };
+ };
+
+ cci0_active: cci0_active {
+ mux {
+ /* CLK, DATA */
+ pins = "gpio17","gpio18"; // Only 2
+ function = "cci_i2c";
+ };
+
+ config {
+ pins = "gpio17","gpio18";
+ bias-pull-up; /* PULL UP*/
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cci0_suspend: cci0_suspend {
+ mux {
+ /* CLK, DATA */
+ pins = "gpio17","gpio18";
+ function = "cci_i2c";
+ };
+
+ config {
+ pins = "gpio17","gpio18";
+ bias-pull-down; /* PULL DOWN */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cci1_active: cci1_active {
+ mux {
+ /* CLK, DATA */
+ pins = "gpio19","gpio20";
+ function = "cci_i2c";
+ };
+
+ config {
+ pins = "gpio19","gpio20";
+ bias-pull-up; /* PULL UP*/
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cci1_suspend: cci1_suspend {
+ mux {
+ /* CLK, DATA */
+ pins = "gpio19","gpio20";
+ function = "cci_i2c";
+ };
+
+ config {
+ pins = "gpio19","gpio20";
+ bias-pull-down; /* PULL DOWN */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_sensor_mclk0_active: cam_sensor_mclk0_active {
+ /* MCLK0 */
+ mux {
+ /* CLK, DATA */
+ pins = "gpio13";
+ function = "cam_mclk";
+ };
+
+ config {
+ pins = "gpio13";
+ bias-disable; /* No PULL */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_sensor_mclk0_suspend: cam_sensor_mclk0_suspend {
+ /* MCLK0 */
+ mux {
+ /* CLK, DATA */
+ pins = "gpio13";
+ function = "cam_mclk";
+ };
+
+ config {
+ pins = "gpio13";
+ bias-pull-down; /* PULL DOWN */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_sensor_rear_active: cam_sensor_rear_active {
+ /* RESET, STANDBY */
+ mux {
+ pins = "gpio30";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio30","gpio29";
+ bias-disable; /* No PULL */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_sensor_rear_suspend: cam_sensor_rear_suspend{
+ /* RESET, STANDBY */
+ mux {
+ pins = "gpio30","gpio29";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio30","gpio29";
+ bias-disable; /* No PULL */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_csi0_sensor_active: cam_csi0_sensor_active {
+ /* RESET, STANDBY */
+ cam_rear_active_cfg {
+ pins = "gpio25","gpio26";
+ bias-disable; /* No PULL */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_csi0_sensor_suspend: cam_csi0_sensor_suspend{
+ /* RESET, STANDBY */
+ cam_rear_suspend_cfg {
+ pins = "gpio25","gpio26";
+ bias-disable; /* No PULL */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_csi2_sensor_active: cam_csi2_sensor_active {
+ /* RESET, STANDBY */
+ cam_rear_active_cfg {
+ pins = "gpio23","gpio133";
+ bias-disable; /* No PULL */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_csi1_sensor_active: cam_csi1_sensor_active {
+ /* RESET, STANDBY */
+ cam_rear_active_cfg {
+ pins = "gpio104","gpio98";
+ bias-disable; /* No PULL */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_csi1_sensor_suspend: cam_csi1_sensor_suspend {
+ /* RESET, STANDBY */
+ cam_rear_suspend_cfg {
+ pins = "gpio104","gpio98";
+ bias-disable; /* No PULL */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_csi2_sensor_suspend: cam_csi2_sensor_suspend{
+ /* RESET, STANDBY */
+ cam_rear_suspend_cfg {
+ pins = "gpio23","gpio133";
+ bias-disable; /* No PULL */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_sensor_mclk1_active: cam_sensor_mclk1_active{
+ /* MCLK1 */
+ mux {
+ /* CLK, DATA */
+ pins = "gpio14";
+ function = "cam_mclk";
+ };
+
+ config {
+ pins = "gpio14";
+ bias-disable; /* No PULL */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_sensor_mclk1_suspend: cam_sensor_mclk1_suspend {
+ /* MCLK1 */
+ mux {
+ /* CLK, DATA */
+ pins = "gpio14";
+ function = "cam_mclk";
+ };
+
+ config {
+ pins = "gpio14";
+ bias-pull-down; /* PULL DOWN */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_sensor_rear2_active: cam_sensor_rear2_active {
+ /* RESET, STANDBY */
+ mux {
+ pins = "gpio63","gpio62";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio63","gpio62";
+ bias-disable; /* No PULL */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_sensor_rear2_sus {
+ cam_sensor_rear2_suspend: cam_sensor_rear2_suspend{
+ /* RESET, STANDBY */
+ mux {
+ pins = "gpio63","gpio62";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio63","gpio62";
+ bias-disable; /* No PULL */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+ };
+
+ cam_sensor_mclk2_active: cam_sensor_mclk2_active {
+ /* MCLK1 */
+ mux {
+ /* CLK, DATA */
+ pins = "gpio15";
+ function = "cam_mclk";
+ };
+
+ config {
+ pins = "gpio15";
+ bias-disable; /* No PULL */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_sensor_mclk2_suspend: cam_sensor_mclk2_suspend{
+ /* MCLK1 */
+ mux {
+ /* CLK, DATA */
+ pins = "gpio15";
+ function = "cam_mclk";
+ };
+
+ config {
+ pins = "gpio15";
+ bias-pull-down; /* PULL DOWN */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_sensor_front_active: cam_sensor_front_active{
+ /* RESET, STANDBY */
+ mux {
+ pins = "gpio23","gpio26";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio23","gpio26";
+ bias-disable; /* No PULL */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ cam_sensor_front_suspend: cam_sensor_front_suspend{
+ /* RESET, STANDBY */
+ mux {
+ pins = "gpio23","gpio26";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio23","gpio26";
+ bias-disable; /* No PULL */
+ drive-strength = <2>; /* 2 MA */
+ };
+ };
+
+ /* CoreSight */
+ seta_1: seta_1 {
+ mux {
+ pins = "gpio27";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio27";
+ function = "qdss_tracectl_a";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_2: seta_2 {
+ mux {
+ pins = "gpio28";
+ function = "qdss_tracectl_a";
+ };
+
+ config {
+ pins = "gpio28";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_3: seta_3 {
+ mux {
+ pins = "gpio53";
+ function = "qdss_tracedata_a";
+ };
+
+ config {
+ pins = "gpio53";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_4: seta_4 {
+ mux {
+ pins = "gpio54";
+ function = "qdss_tracedata_a";
+ };
+
+ config {
+ pins = "gpio54";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_5: seta_5 {
+ mux {
+ pins = "gpio63";
+ function = "qdss_tracedata_a";
+ };
+
+ config {
+ pins = "gpio63";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_6: seta_6 {
+ mux {
+ pins = "gpio64";
+ function = "qdss_tracedata_a";
+ };
+
+ config {
+ pins = "gpio64";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_7: seta_7 {
+ mux {
+ pins = "gpio65";
+ function = "qdss_tracedata_a";
+ };
+
+ config {
+ pins = "gpio65";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_8: seta_8 {
+ mux {
+ pins = "gpio66";
+ function = "qdss_tracedata_a";
+ };
+
+ config {
+ pins = "gpio66";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_9: seta_9 {
+ mux {
+ pins = "gpio67";
+ function = "qdss_tracedata_a";
+ };
+
+ config {
+ pins = "gpio67";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_10: seta_10 {
+ mux {
+ pins = "gpio74";
+ function = "qdss_tracedata_a";
+ };
+
+ config {
+ pins = "gpio74";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_11: seta_11 {
+ mux {
+ pins = "gpio75";
+ function = "qdss_tracedata_a";
+ };
+
+ config {
+ pins = "gpio75";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_12: seta_12 {
+ mux {
+ pins = "gpio76";
+ function = "qdss_tracedata_a";
+ };
+
+ config {
+ pins = "gpio76";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_13: seta_13 {
+ mux {
+ pins = "gpio77";
+ function = "qdss_tracedata_a";
+ };
+
+ config {
+ pins = "gpio77";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_14: seta_14 {
+ mux {
+ pins = "gpio85";
+ function = "qdss_tracedata_a";
+ };
+
+ config {
+ pins = "gpio85";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_15: seta_15 {
+ mux {
+ pins = "gpio86";
+ function = "qdss_tracedata_a";
+ };
+
+ config {
+ pins = "gpio86";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_16: seta_16 {
+ mux {
+ pins = "gpio87";
+ function = "qdss_tracedata_a";
+ };
+
+ config {
+ pins = "gpio87";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_17: seta_17 {
+ mux {
+ pins = "gpio89";
+ function = "qdss_tracedata_a";
+ };
+
+ config {
+ pins = "gpio89";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ seta_18: seta_18 {
+ mux {
+ pins = "gpio90";
+ function = "qdss_tracedata_a";
+ };
+
+ config {
+ pins = "gpio90";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_1: setb_1 {
+ mux {
+ pins = "gpio13";
+ function = "qdss_tracedata_b";
+ };
+
+ config {
+ pins = "gpio13";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_2: setb_2 {
+ mux {
+ pins = "gpio14";
+ function = "qdss_tracedata_b";
+ };
+
+ config {
+ pins = "gpio14";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_3: setb_3 {
+ mux {
+ pins = "gpio15";
+ function = "qdss_tracedata_b";
+ };
+
+ config {
+ pins = "gpio15";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_4: setb_4 {
+ mux {
+ pins = "gpio16";
+ function = "qdss_tracedata_b";
+ };
+
+ config {
+ pins = "gpio16";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_5: setb_5 {
+ mux {
+ pins = "gpio17";
+ function = "qdss_tracedata_b";
+ };
+
+ config {
+ pins = "gpio17";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_6: setb_6 {
+ mux {
+ pins = "gpio18";
+ function = "qdss_tracedata_b";
+ };
+
+ config {
+ pins = "gpio18";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_7: setb_7 {
+ mux {
+ pins = "gpio19";
+ function = "qdss_tracedata_b";
+ };
+
+ config {
+ pins = "gpio19";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_8: setb_8 {
+ mux {
+ pins = "gpio21";
+ function = "qdss_tracedata_b";
+ };
+
+ config {
+ pins = "gpio21";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_9: setb_9 {
+ mux {
+ pins = "gpio22";
+ function = "qdss_tracedata_b";
+ };
+
+ config {
+ pins = "gpio22";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_10: setb_10 {
+ mux {
+ pins = "gpio23";
+ function = "qdss_tracedata_b";
+ };
+
+ config {
+ pins = "gpio23";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_11: setb_11 {
+ mux {
+ pins = "gpio26";
+ function = "qdss_tracedata_b";
+ };
+
+ config {
+ pins = "gpio26";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_12: setb_12 {
+ mux {
+ pins = "gpio29";
+ function = "qdss_tracedata_b";
+ };
+
+ config {
+ pins = "gpio29";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_13: setb_13 {
+ mux {
+ pins = "gpio57";
+ function = "qdss_tracedata_b";
+ };
+
+ config {
+ pins = "gpio57";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_14: setb_14 {
+ mux {
+ pins = "gpio58";
+ function = "qdss_tracedata_b";
+ };
+
+ config {
+ pins = "gpio58";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_15: setb_15 {
+ mux {
+ pins = "gpio91";
+ function = "qdss_traceclk_b";
+ };
+
+ config {
+ pins = "gpio91";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_16: setb_16 {
+ mux {
+ pins = "gpio92";
+ function = "qdss_tracedata_b";
+ };
+
+ config {
+ pins = "gpio92";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_17: setb_17 {
+ mux {
+ pins = "gpio93";
+ function = "qdss_tracedata_b";
+ };
+
+ config {
+ pins = "gpio93";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ setb_18: setb_18 {
+ mux {
+ pins = "gpio94";
+ function = "qdss_tracectl_b";
+ };
+
+ config {
+ pins = "gpio94";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+
+ trigout_a: trigout_a {
+ mux {
+ pins = "gpio25";
+ function = "qdss_cti_trig_out_a";
+ };
+
+ config {
+ pins = "gpio25";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ tsif0_signals_active: tsif0_signals_active {
+ tsif1_clk {
+ pins = "gpio89"; /* TSIF0 CLK */
+ function = "tsif1_clk";
+ };
+ tsif1_en {
+ pins = "gpio90"; /* TSIF0 Enable */
+ function = "tsif1_en";
+ };
+ tsif1_data {
+ pins = "gpio91"; /* TSIF0 DATA */
+ function = "tsif1_data";
+ };
+ signals_cfg {
+ pins = "gpio89", "gpio90", "gpio91";
+ drive_strength = <2>; /* 2 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ /* sync signal is only used if configured to mode-2 */
+ tsif0_sync_active: tsif0_sync_active {
+ tsif1_sync {
+ pins = "gpio39"; /* TSIF0 SYNC */
+ function = "tsif1_sync";
+ drive_strength = <2>; /* 2 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ tsif1_signals_active: tsif1_signals_active {
+ tsif2_clk {
+ pins = "gpio93"; /* TSIF1 CLK */
+ function = "tsif2_clk";
+ };
+ tsif2_en {
+ pins = "gpio94"; /* TSIF1 Enable */
+ function = "tsif2_en";
+ };
+ tsif2_data {
+ pins = "gpio95"; /* TSIF1 DATA */
+ function = "tsif2_data";
+ };
+ signals_cfg {
+ pins = "gpio93", "gpio94", "gpio95";
+ drive_strength = <2>; /* 2 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ /* sync signal is only used if configured to mode-2 */
+ tsif1_sync_active: tsif1_sync_active {
+ tsif2_sync {
+ pins = "gpio96"; /* TSIF1 SYNC */
+ function = "tsif2_sync";
+ drive_strength = <2>; /* 2 mA */
+ bias-pull-down; /* pull down */
+ };
+ };
+
+ ap2mdm {
+ ap2mdm_active: ap2mdm_active {
+ mux {
+ /* ap2mdm-status
+ * ap2mdm-errfatal
+ * ap2mdm-vddmin
+ */
+ pins = "gpio107", "gpio109", "gpio111";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio107", "gpio109", "gpio111";
+ drive-strength = <16>;
+ bias-disable;
+ };
+ };
+ ap2mdm_sleep: ap2mdm_sleep {
+ mux {
+ /* ap2mdm-status
+ * ap2mdm-errfatal
+ * ap2mdm-vddmin
+ */
+ pins = "gpio107", "gpio109", "gpio111";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio107", "gpio109", "gpio111";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ };
+ };
+
+ mdm2ap {
+ mdm2ap_active: mdm2ap_active {
+ mux {
+ /* mdm2ap-status
+ * mdm2ap-errfatal
+ * mdm2ap-vddmin
+ */
+ pins = "gpio106", "gpio108", "gpio112";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio106", "gpio108", "gpio112";
+ drive-strength = <8>;
+ bias-disable;
+ };
+ };
+ mdm2ap_sleep: mdm2ap_sleep {
+ mux {
+ /* mdm2ap-status
+ * mdm2ap-errfatal
+ * mdm2ap-vddmin
+ */
+ pins = "gpio106", "gpio108", "gpio112";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio106", "gpio108", "gpio112";
+ drive-strength = <8>;
+ bias-disable;
+ };
+ };
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-pm.dtsi b/arch/arm64/boot/dts/qcom/msm8996-pm.dtsi
new file mode 100644
index 000000000000..964ee68096b8
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-pm.dtsi
@@ -0,0 +1,523 @@
+/* Copyright (c) 2015, 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/interrupt-controller/arm-gic.h>
+
+&soc {
+ qcom,spm@9A10000 {
+ compatible = "qcom,spm-v2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x9A10000 0x1000>;
+ qcom,name = "system-cbf"; /* CBF SAW */
+ qcom,saw2-ver-reg = <0xFD0>;
+ qcom,cpu-vctl-list = <&CPU0 &CPU1 &CPU2 &CPU3>;
+ qcom,vctl-timeout-us = <50>;
+ qcom,vctl-port = <0x0>;
+ qcom,phase-port = <0x1>;
+ qcom,saw2-avs-ctl = <0x1100>;
+ qcom,pfm-port = <0x2>;
+ };
+
+ qcom,lpm-levels {
+ compatible = "qcom,lpm-levels";
+ qcom,use-psci;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ qcom,pm-cluster@0 {
+ reg = <0>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ label = "system";
+ qcom,spm-device-names = "cbf", "l3";
+ qcom,default-level = <0>;
+ qcom,psci-mode-shift = <8>;
+ qcom,psci-mode-mask = <0xff>;
+
+ qcom,pm-cluster-level@0{
+ reg = <0>;
+ label = "system-wfi";
+ qcom,psci-mode = <0>;
+ qcom,latency-us = <100>;
+ qcom,ss-power = <725>;
+ qcom,energy-overhead = <85000>;
+ qcom,time-overhead = <120>;
+ };
+ qcom,pm-cluster-level@1{ /* E3-M2 */
+ reg = <1>;
+ label = "system-ret";
+ qcom,spm-cbf-mode = "fpc";
+ qcom,spm-l3-mode = "fpc";
+ qcom,psci-mode = <0x23>;
+ qcom,latency-us = <350>;
+ qcom,ss-power = <530>;
+ qcom,energy-overhead = <160000>;
+ qcom,time-overhead = <550>;
+ qcom,min-child-idx = <1>;
+ };
+ qcom,pm-cluster-level@2{ /* E4-M3 */
+ reg = <1>;
+ label = "system-fpc";
+ qcom,spm-cbf-mode = "fpc";
+ qcom,spm-l3-mode = "fpc";
+ qcom,psci-mode = <0x34>;
+ qcom,latency-us = <11000>;
+ qcom,ss-power = <120>;
+ qcom,energy-overhead = <280000>;
+ qcom,time-overhead = <3200>;
+ qcom,min-child-idx = <2>;
+ qcom,notify-rpm;
+ qcom,is-reset;
+ };
+
+ qcom,pm-cluster@0{
+ reg = <0>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ label = "pwr";
+ qcom,spm-device-names = "l2";
+ qcom,default-level=<0>;
+ qcom,cpu = <&CPU0 &CPU1>;
+ qcom,psci-mode-shift = <4>;
+ qcom,psci-mode-mask = <0xf>;
+
+ qcom,pm-cluster-level@0{ /* D1 */
+ reg = <0>;
+ label = "pwr-l2-wfi";
+ qcom,psci-mode = <1>;
+ qcom,latency-us = <40>;
+ qcom,ss-power = <740>;
+ qcom,energy-overhead = <65000>;
+ qcom,time-overhead = <85>;
+ };
+
+ qcom,pm-cluster-level@1{ /* D3 */
+ reg = <1>;
+ label = "pwr-l2-gdhs";
+ qcom,psci-mode = <3>;
+ qcom,latency-us = <90>;
+ qcom,ss-power = <660>;
+ qcom,energy-overhead = <135000>;
+ qcom,time-overhead = <180>;
+ qcom,min-child-idx = <1>;
+ };
+
+ qcom,pm-cluster-level@2{ /* D4 */
+ reg = <2>;
+ label = "pwr-l2-fpc";
+ qcom,psci-mode = <4>;
+ qcom,latency-us = <700>;
+ qcom,ss-power = <450>;
+ qcom,energy-overhead = <210000>;
+ qcom,time-overhead = <11500>;
+ qcom,min-child-idx = <1>;
+ qcom,is-reset;
+ };
+
+ qcom,pm-cpu {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ qcom,psci-mode-shift = <0>;
+ qcom,psci-mode-mask = <0xf>;
+
+ qcom,pm-cpu-level@0 { /* C1 */
+ reg = <0>;
+ qcom,psci-cpu-mode = <1>;
+ qcom,spm-cpu-mode = "wfi";
+ qcom,latency-us = <20>;
+ qcom,ss-power = <750>;
+ qcom,energy-overhead = <32000>;
+ qcom,time-overhead = <60>;
+ };
+
+ qcom,pm-cpu-level@1 { /* C4 */
+ reg = <1>;
+ qcom,spm-cpu-mode = "fpc";
+ qcom,psci-cpu-mode = <4>;
+ qcom,latency-us = <80>;
+ qcom,ss-power = <700>;
+ qcom,energy-overhead = <126480>;
+ qcom,time-overhead = <160>;
+ };
+ };
+ };
+
+ qcom,pm-cluster@1{
+ reg = <1>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ label = "perf";
+ qcom,spm-device-names = "l2";
+ qcom,default-level=<0>;
+ qcom,cpu = <&CPU2 &CPU3>;
+ qcom,psci-mode-shift = <4>;
+ qcom,psci-mode-mask = <0xf>;
+
+ qcom,pm-cluster-level@0{ /* D1 */
+ reg = <0>;
+ label = "perf-l2-wfi";
+ qcom,psci-mode = <1>;
+ qcom,latency-us = <40>;
+ qcom,ss-power = <740>;
+ qcom,energy-overhead = <70000>;
+ qcom,time-overhead = <80>;
+ };
+
+ qcom,pm-cluster-level@1{ /* D3 */
+ reg = <1>;
+ label = "perf-l2-gdhs";
+ qcom,psci-mode = <3>;
+ qcom,latency-us = <80>;
+ qcom,ss-power = <660>;
+ qcom,energy-overhead = <142000>;
+ qcom,time-overhead = <180>;
+ qcom,min-child-idx = <1>;
+ };
+
+ qcom,pm-cluster-level@2{ /* D4 */
+ reg = <2>;
+ label = "perf-l2-fpc";
+ qcom,psci-mode = <4>;
+ qcom,latency-us = <800>;
+ qcom,ss-power = <450>;
+ qcom,energy-overhead = <240000>;
+ qcom,time-overhead = <11500>;
+ qcom,min-child-idx = <1>;
+ qcom,is-reset;
+ };
+
+ qcom,pm-cpu {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ qcom,psci-mode-shift = <0>;
+ qcom,psci-mode-mask = <0xf>;
+
+ qcom,pm-cpu-level@0 { /* C1 */
+ reg = <0>;
+ qcom,psci-cpu-mode = <1>;
+ qcom,spm-cpu-mode = "wfi";
+ qcom,latency-us = <25>;
+ qcom,ss-power = <750>;
+ qcom,energy-overhead = <37000>;
+ qcom,time-overhead = <50>;
+ };
+
+ qcom,pm-cpu-level@1 { /* C4 */
+ reg = <1>;
+ qcom,spm-cpu-mode = "fpc";
+ qcom,psci-cpu-mode = <4>;
+ qcom,latency-us = <80>;
+ qcom,ss-power = <700>;
+ qcom,energy-overhead = <136480>;
+ qcom,time-overhead = <160>;
+ };
+ };
+ };
+ };
+ };
+
+ qcom,mpm@681b8 {
+ compatible = "qcom,mpm-v2";
+ reg = <0x681B8 0x1000>, /* MSM_RPM_MPM_BASE 4K */
+ <0x9820010 0x4>; /* MSM_APCS_GCC_BASE 4K */
+ reg-names = "vmpm", "ipc";
+ interrupts = <GIC_SPI 171 IRQ_TYPE_EDGE_RISING>;
+ clocks = <&clock_gcc clk_cxo_lpm_clk>;
+ clock-names = "xo";
+ qcom,num-mpm-irqs = <96>;
+
+ qcom,ipc-bit-offset = <1>;
+
+ qcom,gic-parent = <&intc>;
+ qcom,gic-map = <2 216>, /* tsens_upper_lower_int */
+ <52 212>, /* qmp_usb3_lfps_rxterm_irq */
+ <87 358>, /* ee0_krait_hlos_spmi_periph_irq */
+ <0xff 16>, /* APCj_qgicdrCpu0HwFaultIrptReq */
+ <0xff 23>, /* APCj_qgicdrCpu0PerfMonIrptReq */
+ <0xff 27>, /* APCj_qgicdrCpu0QTmrVirtIrptReq */
+ <0xff 32>, /* APCj_qgicdrL2PerfMonIrptReq */
+ <0xff 33>, /* APCC_qgicL2PerfMonIrptReq */
+ <0xff 34>, /* APCC_qgicL2ErrorIrptReq */
+ <0xff 35>, /* WDT_barkInt */
+ <0xff 40>, /* qtimer_phy_irq */
+ <0xff 41>, /* APCj_qgicdrL2HwFaultNonFatalIrptReq */
+ <0xff 42>, /* APCj_qgicdrL2HwFaultFatalIrptReq */
+ <0xff 49>, /* L3UX_qgicL3ErrorIrptReq */
+ <0xff 54>, /* M4M_sysErrorInterrupt */
+ <0xff 55>, /* M4M_sysDlmInterrupt */
+ <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 62>, /* QTMR_qgicFrm0VirtIrq */
+ <0xff 63>, /* QTMR_qgicFrm1PhysIrq */
+ <0xff 64>, /* QTMR_qgicFrm2PhysIrq */
+ <0xff 65>, /* QTMR_qgicFrm3PhysIrq */
+ <0xff 66>, /* QTMR_qgicFrm4PhysIrq */
+ <0xff 67>, /* QTMR_qgicFrm5PhysIrq */
+ <0xff 68>, /* QTMR_qgicFrm6PhysIrq */
+ <0xff 69>, /* QTMR_qgicFrm7PhysIrq */
+ <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 80>, /* CPR3_irq */
+ <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 108>, /* osmmu_PMIrpt */
+ <0xff 109>, /* ocmem_dm_nonsec_irq */
+ <0xff 110>, /* csiphy_0_irq */
+ <0xff 111>, /* csiphy_1_irq */
+ <0xff 112>, /* csiphy_2_irq */
+ <0xff 115>, /* mdss_irq */
+ <0xff 126>, /* bam_irq[0] */
+ <0xff 127>, /* blsp1_qup_irq(0) */
+ <0xff 132>, /* blsp1_qup_irq(5) */
+ <0xff 133>, /* blsp2_qup_irq(0) */
+ <0xff 134>, /* blsp2_qup_irq(1) */
+ <0xff 138>, /* blsp2_qup_irq(5) */
+ <0xff 140>, /* blsp1_uart_irq(1) */
+ <0xff 146>, /* blsp2_uart_irq(1) */
+ <0xff 155>, /* sdcc_irq[0] */
+ <0xff 157>, /* sdc2_irq[0] */
+ <0xff 163>, /* usb30_ee1_irq */
+ <0xff 164>, /* usb30_bam_irq(0) */
+ <0xff 165>, /* usb30_hs_phy_irq */
+ <0xff 166>, /* sdc1_pwr_cmd_irq */
+ <0xff 170>, /* sdcc_pwr_cmd_irq */
+ <0xff 173>, /* sdc1_irq[0] */
+ <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 180>, /* pcie20_2_int_pls_err */
+ <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 208>,
+ <0xff 210>,
+ <0xff 211>, /* usb_dwc3_otg */
+ <0xff 215>, /* o_bimc_intr(0) */
+ <0xff 224>, /* spdm_realtime_irq[1] */
+ <0xff 238>, /* crypto_bam_irq[0] */
+ <0xff 240>, /* summary_irq_kpss */
+ <0xff 253>, /* sdc2_pwr_cmd_irq */
+ <0xff 258>, /* lpass_irq_out_apcs[21] */
+ <0xff 268>, /* bam_irq[1] */
+ <0xff 270>, /* bam_irq[0] */
+ <0xff 271>, /* bam_irq[0] */
+ <0xff 276>, /* wlan_pci */
+ <0xff 283>, /* pcie20_0_int_pls_err */
+ <0xff 284>, /* pcie20_0_int_aer_legacy */
+ <0xff 286>, /* pcie20_0_int_pls_link_down */
+ <0xff 290>, /* ufs_ice_nonsec_level_irq */
+ <0xff 293>, /* pcie20_2_int_pls_link_down */
+ <0xff 295>, /* camss_cpp_mmu_cirpt[0] */
+ <0xff 296>, /* camss_cpp_mmu_pmirpt */
+ <0xff 297>, /* ufs_intrq */
+ <0xff 302>, /* qdss_etrbytecnt_irq */
+ <0xff 310>, /* pcie20_1_int_pls_err */
+ <0xff 311>, /* pcie20_1_int_aer_legacy */
+ <0xff 313>, /* pcie20_1_int_pls_link_down */
+ <0xff 318>, /* venus0_mmu_pmirpt */
+ <0xff 319>, /* venus0_irq */
+ <0xff 325>, /* camss_irq18 */
+ <0xff 326>, /* camss_irq0 */
+ <0xff 327>, /* camss_irq1 */
+ <0xff 328>, /* camss_irq2 */
+ <0xff 329>, /* camss_irq3 */
+ <0xff 330>, /* camss_irq4 */
+ <0xff 331>, /* camss_irq5 */
+ <0xff 332>, /* sps */
+ <0xff 346>, /* camss_irq8 */
+ <0xff 347>, /* camss_irq9 */
+ <0xff 352>, /* mdss_mmu_cirpt[0] */
+ <0xff 353>, /* mdss_mmu_cirpt[1] */
+ <0xff 361>, /* ogpu_mmu_cirpt[0] */
+ <0xff 362>, /* ogpu_mmu_cirpt[1] */
+ <0xff 365>, /* ipa_irq[0] */
+ <0xff 366>, /* ogpu_mmu_pmirpt */
+ <0xff 367>, /* venus0_mmu_cirpt[0] */
+ <0xff 368>, /* venus0_mmu_cirpt[1] */
+ <0xff 369>, /* venus0_mmu_cirpt[2] */
+ <0xff 370>, /* venus0_mmu_cirpt[3] */
+ <0xff 375>, /* camss_vfe_mmu_cirpt[0] */
+ <0xff 376>, /* camss_vfe_mmu_cirpt[1] */
+ <0xff 380>, /* mdss_dma_mmu_cirpt[0] */
+ <0xff 381>, /* mdss_dma_mmu_cirpt[1] */
+ <0xff 385>, /* mdss_dma_mmu_pmirpt */
+ <0xff 387>, /* osmmu_CIrpt[0] */
+ <0xff 394>, /* osmmu_PMIrpt */
+ <0xff 403>, /* osmmu_PMIrpt */
+ <0xff 405>, /* osmmu_CIrpt[0] */
+ <0xff 413>, /* osmmu_PMIrpt */
+ <0xff 422>, /* ssc_irq_out_apcs[5] */
+ <0xff 424>, /* ipa_irq[2] */
+ <0xff 425>, /* lpass_irq_out_apcs[22] */
+ <0xff 426>, /* lpass_irq_out_apcs[23] */
+ <0xff 427>, /* lpass_irq_out_apcs[24] */
+ <0xff 428>, /* lpass_irq_out_apcs[25] */
+ <0xff 429>, /* lpass_irq_out_apcs[26] */
+ <0xff 430>, /* lpass_irq_out_apcs[27] */
+ <0xff 431>, /* lpass_irq_out_apcs[28] */
+ <0xff 432>, /* lpass_irq_out_apcs[29] */
+ <0xff 436>, /* lpass_irq_out_apcs[37] */
+ <0xff 437>, /* pcie20_0_int_msi_dev0 */
+ <0xff 445>, /* pcie20_1_int_msi_dev0 */
+ <0xff 453>, /* pcie20_2_int_msi_dev0 */
+ <0xff 461>, /* o_vmem_nonsec_irq */
+ <0xff 462>, /* tsens1_tsens_critical_int */
+ <0xff 464>, /* ipa_bam_irq[0] */
+ <0xff 465>, /* ipa_bam_irq[2] */
+ <0xff 477>, /* tsens0_tsens_critical_int */
+ <0xff 480>, /* q6_wdog_expired_irq */
+ <0xff 481>, /* mss_ipc_out_irq(4) */
+ <0xff 483>, /* mss_ipc_out_irq(6) */
+ <0xff 484>, /* mss_ipc_out_irq(7) */
+ <0xff 487>, /* mss_ipc_out_irq(30) */
+ <0xff 490>, /* tsens0_tsens_upper_lower_int */
+ <0xff 493>; /* sdc1_ice_nonsec_level_irq */
+
+ qcom,gpio-parent = <&tlmm>;
+ qcom,gpio-map = <3 1>,
+ <4 5>,
+ <5 9>,
+ <6 11>,
+ <7 66>,
+ <8 22>,
+ <9 24>,
+ <10 26>,
+ <11 34>,
+ <12 36>,
+ <13 37>, /* PCIe0 */
+ <14 38>,
+ <15 40>,
+ <16 42>,
+ <17 46>,
+ <18 50>,
+ <19 53>,
+ <20 54>,
+ <21 56>,
+ <22 57>,
+ <23 58>,
+ <24 59>,
+ <25 60>,
+ <26 61>,
+ <27 62>,
+ <28 63>,
+ <29 64>,
+ <30 71>,
+ <31 73>,
+ <32 77>,
+ <33 78>,
+ <34 79>,
+ <35 80>,
+ <36 82>,
+ <37 86>,
+ <38 91>,
+ <39 92>,
+ <40 95>,
+ <41 97>,
+ <42 101>,
+ <43 104>,
+ <44 106>,
+ <45 108>,
+ <46 112>,
+ <47 113>,
+ <48 110>,
+ <50 127>,
+ <51 115>,
+ <54 116>, /* PCIe2 */
+ <55 117>,
+ <56 118>,
+ <57 119>,
+ <58 120>,
+ <59 121>,
+ <60 122>,
+ <61 123>,
+ <62 124>,
+ <63 125>,
+ <64 126>,
+ <65 129>,
+ <66 131>,
+ <67 132>, /* PCIe1 */
+ <68 133>,
+ <69 145>;
+ };
+
+ qcom,rpm-stats@200000 {
+ compatible = "qcom,rpm-stats";
+ reg = <0x200000 0x1000>,
+ <0x290014 0x4>,
+ <0x29001c 0x4>;
+ reg-names = "phys_addr_base",
+ "offset_addr",
+ "heap_phys_addrbase";
+ qcom,sleep-stats-version = <2>;
+ };
+
+ qcom,pm-snoc-client {
+ compatible = "qcom,pm-snoc-client";
+ qcom,msm-bus,name = "ocimem_snoc";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,active-only;
+ qcom,msm-bus,vectors-KBps =
+ <MSM_BUS_MASTER_AMPSS_M0 MSM_BUS_SLAVE_OCIMEM 0 0>,
+ <MSM_BUS_MASTER_AMPSS_M0 MSM_BUS_SLAVE_OCIMEM 0 800000>;
+ };
+
+ qcom,rpm-rail-stats@200000 {
+ compatible = "qcom,rpm-rail-stats";
+ reg = <0x200000 0x100>,
+ <0x29000c 0x4>;
+ reg-names = "phys_addr_base",
+ "offset_addr";
+ };
+
+ qcom,rpm-log@200000 {
+ compatible = "qcom,rpm-log";
+ reg = <0x200000 0x4000>,
+ <0x290018 0x4>;
+ 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>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-pm8994-pm8004-pmk8001.dtsi b/arch/arm64/boot/dts/qcom/msm8996-pm8994-pm8004-pmk8001.dtsi
new file mode 100644
index 000000000000..afbf082a327e
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-pm8994-pm8004-pmk8001.dtsi
@@ -0,0 +1,31 @@
+/* Copyright (c) 2015, 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.
+ */
+
+/*
+ * As a general rule, only chipset-specific property overrides should be placed
+ * inside this file.
+ */
+
+#include "msm8996-pm8994-pm8004.dtsi"
+#include "msm-pmk8001.dtsi"
+
+/ {
+ qcom,pmic-id = <0x20009 0x1000C 0x10012 0x0>;
+};
+
+/*
+ * Override PM8994 resources with proper PMK8001 resources for MSM8996 with
+ * PMK8001.
+ */
+&pm8994_rtc {
+ status = "disabled";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-pm8994-pm8004.dtsi b/arch/arm64/boot/dts/qcom/msm8996-pm8994-pm8004.dtsi
new file mode 100644
index 000000000000..05b5de612d7f
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-pm8994-pm8004.dtsi
@@ -0,0 +1,33 @@
+/* Copyright (c) 2015, 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.
+ */
+
+/*
+ * As a general rule, only chipset-specific property overrides should be placed
+ * inside this file.
+ */
+
+#include "msm8996-pm8994-pmi8994-pm8004.dtsi"
+
+/ {
+ qcom,pmic-id = <0x20009 0x1000C 0x0 0x0>;
+};
+
+&rpm_bus {
+ /delete-node/ rpm-regulator-bstb;
+ /delete-node/ rpm-regulator-bbyb;
+ /delete-node/ rpm-regulator-smpb1;
+};
+
+&spmi_bus {
+ /delete-node/ qcom,pmi8994@2;
+ /delete-node/ qcom,pmi8994@3;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-pm8994-pmi8994-pm8004-pmk8001.dtsi b/arch/arm64/boot/dts/qcom/msm8996-pm8994-pmi8994-pm8004-pmk8001.dtsi
new file mode 100644
index 000000000000..2294ee41975f
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-pm8994-pmi8994-pm8004-pmk8001.dtsi
@@ -0,0 +1,31 @@
+/* Copyright (c) 2015, 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.
+ */
+
+/*
+ * As a general rule, only chipset-specific property overrides should be placed
+ * inside this file.
+ */
+
+#include "msm8996-pm8994-pmi8994-pm8004.dtsi"
+#include "msm-pmk8001.dtsi"
+
+/ {
+ qcom,pmic-id = <0x20009 0x2000A 0x1000C 0x10012>;
+};
+
+/*
+ * Override PM8994 resources with proper PMK8001 resources for MSM8996 with
+ * PMK8001.
+ */
+&pm8994_rtc {
+ status = "disabled";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-pm8994-pmi8994-pm8004.dtsi b/arch/arm64/boot/dts/qcom/msm8996-pm8994-pmi8994-pm8004.dtsi
new file mode 100644
index 000000000000..f3ef9be36cd7
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-pm8994-pmi8994-pm8004.dtsi
@@ -0,0 +1,38 @@
+/* Copyright (c) 2015, 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.
+ */
+
+/*
+ * As a general rule, only chipset-specific property overrides should be placed
+ * inside this file.
+ */
+
+#include "msm-pm8004.dtsi"
+
+/ {
+ qcom,pmic-id = <0x20009 0x2000A 0x1000C 0x0>;
+};
+
+/*
+ * Override PMI8994 resources with proper PM8004 resources for MSM8996 with
+ * PM8004.
+ */
+&pmi8994_s2 {
+ status = "disabled";
+};
+
+&pm8004_s2 {
+ status = "ok";
+};
+
+&gfx_cpr {
+ vdd-supply = <&pm8004_s2>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-pm8994-pmi8994-pmk8001.dtsi b/arch/arm64/boot/dts/qcom/msm8996-pm8994-pmi8994-pmk8001.dtsi
new file mode 100644
index 000000000000..b7d8c458267a
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-pm8994-pmi8994-pmk8001.dtsi
@@ -0,0 +1,30 @@
+/* Copyright (c) 2015, 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.
+ */
+
+/*
+ * As a general rule, only chipset-specific property overrides should be placed
+ * inside this file.
+ */
+
+#include "msm-pmk8001.dtsi"
+
+/ {
+ qcom,pmic-id = <0x20009 0x2000A 0x10012 0x0>;
+};
+
+/*
+ * Override PM8994 resources with proper PMK8001 resources for MSM8996 with
+ * PMK8001.
+ */
+&pm8994_rtc {
+ status = "disabled";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-pm8994-pmi8996-pmk8001.dtsi b/arch/arm64/boot/dts/qcom/msm8996-pm8994-pmi8996-pmk8001.dtsi
new file mode 100644
index 000000000000..8a78d0c71abd
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-pm8994-pmi8996-pmk8001.dtsi
@@ -0,0 +1,31 @@
+/* Copyright (c) 2015, 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.
+ */
+
+/*
+ * As a general rule, only chipset-specific property overrides should be placed
+ * inside this file.
+ */
+
+#include "msm-pmi8996.dtsi"
+#include "msm-pmk8001.dtsi"
+
+/ {
+ qcom,pmic-id = <0x20009 0x10013 0x10012 0x0>;
+};
+
+/*
+ * Override PM8994 resources with proper PMK8001 resources for MSM8996 with
+ * PMK8001.
+ */
+&pm8994_rtc {
+ status = "disabled";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-regulator.dtsi b/arch/arm64/boot/dts/qcom/msm8996-regulator.dtsi
new file mode 100644
index 000000000000..e9e6eb43b394
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-regulator.dtsi
@@ -0,0 +1,1446 @@
+/* Copyright (c) 2014-2015, 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/interrupt-controller/arm-gic.h>
+
+&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 = <800000>;
+ regulator-max-microvolt = <800000>;
+ qcom,init-voltage = <800000>;
+ 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>;
+ proxy-supply = <&pm8994_l2>;
+ qcom,proxy-consumer-enable;
+ qcom,proxy-consumer-current = <10000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa3 {
+ status = "okay";
+ pm8994_l3: regulator-l3 {
+ regulator-min-microvolt = <850000>;
+ regulator-max-microvolt = <850000>;
+ qcom,init-voltage = <850000>;
+ 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 = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ qcom,init-voltage = <1200000>;
+ 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 = <1150000>;
+ regulator-max-microvolt = <1150000>;
+ qcom,init-voltage = <1150000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa12 {
+ status = "okay";
+ pm8994_l12: regulator-l12 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ qcom,init-voltage = <1800000>;
+ proxy-supply = <&pm8994_l12>;
+ qcom,proxy-consumer-enable;
+ qcom,proxy-consumer-current = <10000>;
+ 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>;
+ proxy-supply = <&pm8994_l14>;
+ qcom,proxy-consumer-enable;
+ qcom,proxy-consumer-current = <10000>;
+ 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 = <2500000>;
+ regulator-max-microvolt = <2500000>;
+ qcom,init-voltage = <2500000>;
+ 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 = <3000000>;
+ regulator-max-microvolt = <3000000>;
+ qcom,init-voltage = <3000000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa20 {
+ status = "okay";
+ pm8994_l20: regulator-l20 {
+ regulator-min-microvolt = <2950000>;
+ regulator-max-microvolt = <2950000>;
+ qcom,init-voltage = <2950000>;
+ 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 = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ qcom,init-voltage = <3300000>;
+ 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 = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ qcom,init-voltage = <1200000>;
+ proxy-supply = <&pm8994_l25>;
+ qcom,proxy-consumer-enable;
+ qcom,proxy-consumer-current = <10000>;
+ status = "okay";
+ };
+ };
+
+ /* PM8994 LDO26 = VDD_SS_CX supply */
+ rpm-regulator-ldoa26 {
+ status = "okay";
+ pm8994_l26_corner: regulator-l26-corner {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l26_corner";
+ qcom,set = <3>;
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <7>;
+ qcom,use-voltage-corner;
+ };
+
+ pm8994_l26_floor_corner: regulator-l26-floor-corner {
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pm8994_l26_floor_corner";
+ qcom,set = <3>;
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <7>;
+ qcom,use-voltage-floor-corner;
+ qcom,always-send-voltage;
+ };
+ };
+
+ rpm-regulator-ldoa27 {
+ status = "okay";
+ pm8994_l27: regulator-l27 {
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1000000>;
+ qcom,init-voltage = <1000000>;
+ status = "okay";
+ };
+ };
+
+ rpm-regulator-ldoa28 {
+ status = "okay";
+ pm8994_l28: regulator-l28 {
+ regulator-min-microvolt = <925000>;
+ regulator-max-microvolt = <925000>;
+ qcom,init-voltage = <925000>;
+ proxy-supply = <&pm8994_l28>;
+ qcom,proxy-consumer-enable;
+ qcom,proxy-consumer-current = <10000>;
+ 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-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";
+ };
+ };
+
+ rpm-regulator-bstb {
+ status = "okay";
+ pmi8994_boost_5v: regulator-bst {
+ /*
+ * When enabled, the PMI8994 Boost regulator always
+ * outputs 5V. This takes precedence over the pin
+ * control boost regulator request.
+ */
+ regulator-name = "pmi8994_boost_5v";
+ parent-supply = <&pon_perph_reg>;
+ status = "okay";
+ };
+ pmi8994_boost_pin_ctrl: regulator-bst-pin-ctrl {
+ /*
+ * When enabled, the output voltage of the PMI8994
+ * boost regulator is determined by the state of the
+ * REQ_5V_BST pin. If the pin signal is high, then the
+ * regulator outputs 5V. If the pin signal is low, then
+ * the regulator outputs VPH_PWR voltage.
+ */
+ compatible = "qcom,rpm-smd-regulator";
+ regulator-name = "pmi8994_boost_pin_ctrl";
+ parent-supply = <&pon_perph_reg>;
+ qcom,set = <3>;
+ qcom,enable-with-pin-ctrl = <0 1>;
+ };
+ };
+
+ 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 + S9 + S10 + S11 = 4 phase VDD_APCC 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 = <470000>;
+ regulator-max-microvolt = <1140000>;
+ qcom,max-voltage-step = <150000>;
+ qcom,cpu-num = <0>;
+ qcom,recal-mask = <3>;
+
+ pm8994_s11_limit: avs-limit-regulator {
+ regulator-name = "pm8994_s11_avs_limit";
+ regulator-min-microvolt = <470000>;
+ regulator-max-microvolt = <1140000>;
+ };
+ };
+ };
+};
+
+/* SPMI controlled regulators: */
+&spmi_bus {
+ qcom,pmi8994@3 {
+ /* PMI8994 S2 + S3 = 2 phase VDD_GFX supply */
+ pmi8994_s2: regulator@1700 {
+ compatible = "qcom,qpnp-regulator";
+ reg = <0x1700 0x100>;
+ regulator-name = "pmi8994_s2";
+ regulator-min-microvolt = <400000>;
+ regulator-max-microvolt = <1015000>;
+ qcom,enable-time = <500>;
+ };
+ };
+
+ qcom,pm8004@5 {
+ spmi-slave-container;
+ reg = <0x5>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ /*
+ * PM8004 S2 + S4 = 2 phase VDD_GFX supply when PM8004 is
+ * present on the board.
+ */
+ pm8004_s2: regulator@1700 {
+ compatible = "qcom,qpnp-regulator";
+ reg = <0x1700 0x100>;
+ regulator-name = "pm8004_s2";
+ regulator-min-microvolt = <400000>;
+ regulator-max-microvolt = <1015000>;
+ qcom,enable-time = <500>;
+ status = "disabled";
+ };
+ };
+};
+
+&soc {
+/* CPR controlled regulators */
+ apcc_cpr: cpr3-ctrl@99e8000 {
+ compatible = "qcom,cpr3-msm8996-hmss-regulator";
+ reg = <0x099e8000 0x4000>, <0x00074000 0x1000>;
+ reg-names = "cpr_ctrl", "fuse_base";
+ clocks = <&clock_gcc clk_gcc_hmss_rbcpr_clk>;
+ clock-names = "core_clk";
+ interrupts = <GIC_SPI 48 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 47 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "cpr", "ceiling";
+ qcom,cpr-ctrl-name = "apcc";
+
+ qcom,cpr-sensor-time = <1000>;
+ qcom,cpr-loop-time = <5000000>;
+ qcom,cpr-idle-cycles = <15>;
+ qcom,cpr-up-down-delay-time = <3000>;
+ qcom,cpr-step-quot-init-min = <11>;
+ qcom,cpr-step-quot-init-max = <13>;
+ qcom,cpr-count-mode = <0>; /* All-at-once min */
+ qcom,cpr-count-repeat = <25>;
+
+ qcom,apm-ctrl = <&apc_apm>;
+ qcom,apm-threshold-voltage = <850000>;
+ qcom,apm-hysteresis-voltage = <5000>;
+ qcom,system-supply-max-voltage = <1015000>;
+ qcom,mem-acc-supply-threshold-voltage = <700000>;
+ qcom,mem-acc-supply-corner-map = <1 2>;
+
+ vdd-supply = <&pm8994_s11>;
+ qcom,voltage-step = <5000>;
+ vdd-limit-supply = <&pm8994_s11_limit>;
+ mem-acc-thread0-supply = <&apc0_pwrcl_mem_acc_vreg>;
+ mem-acc-thread1-supply = <&apc1_perfcl_mem_acc_vreg>;
+ mem-acc-supply = <&apcc_l3_mem_acc_vreg>;
+ vdd-thread0-ldo-supply = <&kryo0_vreg>;
+ vdd-thread1-ldo-supply = <&kryo1_vreg>;
+ vdd-thread0-ldo-ret-supply = <&kryo0_retention_vreg>;
+ vdd-thread1-ldo-ret-supply = <&kryo1_retention_vreg>;
+ proxy-supply = <&apc0_cbf_vreg>;
+
+ qcom,cpr-enable;
+ qcom,cpr-clock-throttling = <0x20>;
+
+ qcom,cpr-aging-ref-voltage = <905000>;
+
+ thread@0 {
+ qcom,cpr-thread-id = <0>;
+ qcom,cpr-consecutive-up = <0>;
+ qcom,cpr-consecutive-down = <3>;
+ qcom,cpr-up-threshold = <2>;
+ qcom,cpr-down-threshold = <2>;
+
+ apc0_pwrcl_vreg: regulator-pwrcl {
+ regulator-name = "apc0_pwrcl_corner";
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <16>;
+
+ qcom,cpr-pd-bypass-mask = <0x07>;
+ qcom,cpr-fuse-corners = <5>;
+ qcom,cpr-fuse-combos = <16>;
+ qcom,cpr-speed-bins = <2>;
+ qcom,cpr-speed-bin-corners = <16 13>;
+ qcom,cpr-corners =
+ /* Speed bin 0 */
+ <16 16 16 16 16 16 16 16>,
+
+ /* Speed bin 1 */
+ <13 13 13 13 13 13 13 13>;
+
+ qcom,ldo-min-headroom-voltage = <150000>;
+ qcom,ldo-max-headroom-voltage = <470000>;
+ qcom,ldo-max-voltage = <890000>;
+ qcom,uses-mem-acc;
+
+ qcom,cpr-corner-fmax-map =
+ /* Speed bin 0 */
+ <1 2 7 12 16>,
+
+ /* Speed bin 1 */
+ <1 2 7 12 13>;
+
+ qcom,cpr-voltage-ceiling =
+ /* Speed bin 0 */
+ <670000 670000 745000 745000 745000
+ 745000 745000 905000 905000 905000
+ 905000 905000 1140000 1140000 1140000
+ 1140000>,
+
+ /* Speed bin 1 */
+ <670000 670000 745000 745000 745000
+ 745000 745000 905000 905000 905000
+ 905000 905000 1140000>;
+
+ qcom,cpr-voltage-floor =
+ /* Speed bin 0 */
+ <470000 470000 470000 470000 470000
+ 470000 470000 470000 470000 470000
+ 470000 470000 470000 470000 470000
+ 470000>,
+
+ /* Speed bin 1 */
+ <470000 470000 470000 470000 470000
+ 470000 470000 470000 470000 470000
+ 470000 470000 470000>;
+
+ qcom,cpr-floor-to-ceiling-max-range =
+ /* Speed bin 0 */
+ <80000 80000 80000 80000 80000
+ 80000 80000 80000 80000 80000
+ 80000 80000 80000 80000 80000
+ 80000>,
+
+ /* Speed bin 1 */
+ <80000 80000 80000 80000 80000
+ 80000 80000 80000 80000 80000
+ 80000 80000 80000>;
+
+ qcom,corner-frequencies =
+ /* Speed bin 0 */
+ <307200000 422400000 480000000
+ 556800000 652800000 729600000
+ 844800000 960000000 1036800000
+ 1113600000 1190400000 1228800000
+ 1324800000 1401600000 1478400000
+ 1593600000>,
+
+ /* Speed bin 1 */
+ <307200000 422400000 480000000
+ 556800000 652800000 729600000
+ 844800000 960000000 1036800000
+ 1113600000 1190400000 1228800000
+ 1363200000>;
+
+ qcom,cpr-ro-scaling-factor =
+ < 0 0 3112 2666 2947 2543 2271 1979
+ 2623 2317 2772 2450 0 0 0 0>,
+ < 0 0 3112 2666 2947 2543 2271 1979
+ 2623 2317 2772 2450 0 0 0 0>,
+ < 0 0 3112 2666 2947 2543 2271 1979
+ 2623 2317 2772 2450 0 0 0 0>,
+ < 0 0 3112 2666 2947 2543 2271 1979
+ 2623 2317 2772 2450 0 0 0 0>,
+ < 0 0 2889 2528 2740 2426 2310 2040
+ 2519 2257 2668 2372 0 0 0 0>;
+
+ qcom,cpr-open-loop-voltage-fuse-adjustment =
+ /* Speed bin 0 */
+ <20000 0 25000 (-5000) (-10000)>,
+ <20000 0 25000 (-5000) (-10000)>,
+ <20000 0 25000 (-5000) (-10000)>,
+ <45000 0 50000 20000 15000>,
+ <45000 0 50000 20000 15000>,
+ <45000 0 50000 20000 15000>,
+ <45000 0 50000 20000 15000>,
+ <45000 0 50000 20000 15000>,
+
+ /* Speed bin 1 */
+ <20000 0 25000 (-5000) (-10000)>,
+ <20000 0 25000 (-5000) (-10000)>,
+ <20000 0 25000 (-5000) (-10000)>,
+ <45000 0 50000 20000 15000>,
+ <45000 0 50000 20000 15000>,
+ <45000 0 50000 20000 15000>,
+ <45000 0 50000 20000 15000>,
+ <45000 0 50000 20000 15000>;
+
+ qcom,cpr-closed-loop-voltage-fuse-adjustment =
+ /* Speed bin 0 */
+ <35000 35000 40000 40000 40000>,
+ <20000 10000 5000 (-5000) (-5000)>,
+ <20000 10000 5000 (-5000) (-5000)>,
+ <20000 10000 5000 (-5000) (-5000)>,
+ <20000 10000 5000 (-5000) (-5000)>,
+ <20000 10000 5000 (-5000) (-5000)>,
+ <20000 10000 5000 (-5000) (-5000)>,
+ <20000 10000 5000 (-5000) (-5000)>,
+
+ /* Speed bin 1 */
+ <35000 35000 40000 40000 40000>,
+ <20000 10000 5000 (-5000) (-5000)>,
+ <20000 10000 5000 (-5000) (-5000)>,
+ <20000 10000 5000 (-5000) (-5000)>,
+ <20000 10000 5000 (-5000) (-5000)>,
+ <20000 10000 5000 (-5000) (-5000)>,
+ <20000 10000 5000 (-5000) (-5000)>,
+ <20000 10000 5000 (-5000) (-5000)>;
+
+ qcom,cpr-open-loop-voltage-adjustment =
+ /* Speed bin 0 */
+ <(-15000) (-15000) (-15000) (-15000)
+ (-13000) (-14000) (-15000) (-18000)
+ (-20000) (-22000) (-24000) (-25000)
+ (-26000) (-27000) (-28000) (-30000)>,
+
+ /* Speed bin 1 */
+ <(-15000) (-15000) (-15000) (-15000)
+ (-13000) (-14000) (-15000) (-18000)
+ (-20000) (-22000) (-24000) (-25000)
+ (-26000)>;
+
+ qcom,cpr-open-loop-voltage-min-diff =
+ /* Speed bin 0 */
+ <0 0 0 0 (-50000) 0 0 0 0 0 0 0 0 0 0 0>,
+
+ /* Speed bin 1 */
+ <0 0 0 0 (-50000) 0 0 0 0 0 0 0 0>;
+
+ qcom,cpr-closed-loop-voltage-adjustment =
+ /* Speed bin 0 */
+ <(-15000) (-15000) (-15000) (-15000)
+ (-13000) (-14000) (-15000) (-18000)
+ (-20000) (-22000) (-24000) (-25000)
+ (-26000) (-27000) (-28000) (-30000)>,
+
+ /* Speed bin 1 */
+ <(-15000) (-15000) (-15000) (-15000)
+ (-13000) (-14000) (-15000) (-18000)
+ (-20000) (-22000) (-24000) (-25000)
+ (-26000)>;
+
+ qcom,allow-voltage-interpolation;
+ qcom,allow-quotient-interpolation;
+ qcom,cpr-scaled-open-loop-voltage-as-ceiling;
+
+ qcom,cpr-aging-max-voltage-adjustment = <25000>;
+ qcom,cpr-aging-ref-corner = <12 12>;
+ qcom,cpr-aging-ro-scaling-factor = <3200>;
+ qcom,allow-aging-voltage-adjustment =
+ /* Speed bin 0 */
+ <0 0 0 1 1 1 1 1>,
+
+ /* Speed bin 1 */
+ <0 0 0 1 1 1 1 1>;
+ };
+
+ apc0_cbf_vreg: regulator-cbf {
+ regulator-name = "apc0_cbf_corner";
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <19>;
+
+ qcom,proxy-consumer-enable;
+ qcom,proxy-consumer-voltage = <13 19>;
+
+ qcom,cpr-pd-bypass-mask = <0x18>;
+ qcom,cpr-fuse-corners = <5>;
+ qcom,cpr-fuse-combos = <16>;
+ qcom,cpr-speed-bins = <2>;
+ qcom,cpr-speed-bin-corners = <19 15>;
+ qcom,cpr-corners =
+ /* Speed bin 0 */
+ <19 19 19 19 19 19 19 19>,
+
+ /* Speed bin 1 */
+ <15 15 15 15 15 15 15 15>;
+
+ qcom,cpr-corner-fmax-map =
+ /* Speed bin 0 */
+ <1 2 5 13 19>,
+
+ /* Speed bin 1 */
+ <1 2 5 13 15>;
+
+ qcom,cpr-voltage-ceiling =
+ /* Speed bin 0 */
+ <670000 670000 745000 745000 745000
+ 905000 905000 905000 905000 905000
+ 905000 905000 905000 1140000 1140000
+ 1140000 1140000 1140000 1140000>,
+
+ /* Speed bin 1 */
+ <670000 670000 745000 745000 745000
+ 905000 905000 905000 905000 905000
+ 905000 905000 905000 1140000 1140000>;
+
+ qcom,cpr-voltage-floor =
+ /* Speed bin 0 */
+ <470000 470000 470000 470000 470000
+ 470000 470000 470000 470000 470000
+ 470000 470000 470000 470000 470000
+ 470000 470000 470000 470000>,
+
+ /* Speed bin 1 */
+ <470000 470000 470000 470000 470000
+ 470000 470000 470000 470000 470000
+ 470000 470000 470000 470000 470000>;
+
+ qcom,cpr-floor-to-ceiling-max-range =
+ /* Speed bin 0 */
+ <80000 80000 80000 80000 80000
+ 80000 80000 80000 80000 80000
+ 80000 80000 80000 80000 80000
+ 80000 80000 80000 80000>,
+
+ /* Speed bin 1 */
+ <80000 80000 80000 80000 80000
+ 80000 80000 80000 80000 80000
+ 80000 80000 80000 80000 80000>;
+
+ qcom,corner-frequencies =
+ /* Speed bin 0 */
+ <307200000 384000000 460800000
+ 537600000 595200000 672000000
+ 748800000 825600000 902400000
+ 979200000 1056000000 1132800000
+ 1190400000 1228800000 1305600000
+ 1382400000 1459200000 1536000000
+ 1593600000>,
+
+ /* Speed bin 1 */
+ <307200000 384000000 460800000
+ 537600000 595200000 672000000
+ 748800000 825600000 902400000
+ 979200000 1056000000 1132800000
+ 1190400000 1228800000 1305600000>;
+
+ qcom,cpr-ro-scaling-factor =
+ < 0 0 3112 2666 2947 2543 2271 1979
+ 2623 2317 2772 2450 0 0 0 0>,
+ < 0 0 3112 2666 2947 2543 2271 1979
+ 2623 2317 2772 2450 0 0 0 0>,
+ < 0 0 3112 2666 2947 2543 2271 1979
+ 2623 2317 2772 2450 0 0 0 0>,
+ < 0 0 3112 2666 2947 2543 2271 1979
+ 2623 2317 2772 2450 0 0 0 0>,
+ < 0 0 2889 2528 2740 2426 2310 2040
+ 2519 2257 2668 2372 0 0 0 0>;
+
+ qcom,cpr-open-loop-voltage-fuse-adjustment =
+ /* Speed bin 0 */
+ <30000 0 (-10000) (-10000) (-40000)>,
+ <30000 0 (-10000) (-10000) (-40000)>,
+ <30000 0 (-10000) (-10000) (-40000)>,
+ <55000 0 15000 15000 (-15000)>,
+ <55000 0 15000 15000 (-15000)>,
+ <55000 0 15000 15000 (-15000)>,
+ <55000 0 15000 15000 (-15000)>,
+ <55000 0 15000 15000 (-15000)>,
+
+ /* Speed bin 1 */
+ <30000 0 (-10000) (-10000) (-40000)>,
+ <30000 0 (-10000) (-10000) (-40000)>,
+ <30000 0 (-10000) (-10000) (-40000)>,
+ <55000 0 15000 15000 (-15000)>,
+ <55000 0 15000 15000 (-15000)>,
+ <55000 0 15000 15000 (-15000)>,
+ <55000 0 15000 15000 (-15000)>,
+ <55000 0 15000 15000 (-15000)>;
+
+ qcom,cpr-closed-loop-voltage-fuse-adjustment =
+ /* Speed bin 0 */
+ <10000 5000 0 0 0>,
+ <10000 5000 (-20000) 0 (-35000)>,
+ <10000 5000 (-20000) 0 (-35000)>,
+ <10000 5000 (-20000) 0 (-35000)>,
+ <10000 5000 (-20000) 0 (-35000)>,
+ <10000 5000 (-20000) 0 (-35000)>,
+ <10000 5000 (-20000) 0 (-35000)>,
+ <10000 5000 (-20000) 0 (-35000)>,
+
+ /* Speed bin 1 */
+ <10000 5000 0 0 0>,
+ <10000 5000 (-20000) 0 (-35000)>,
+ <10000 5000 (-20000) 0 (-35000)>,
+ <10000 5000 (-20000) 0 (-35000)>,
+ <10000 5000 (-20000) 0 (-35000)>,
+ <10000 5000 (-20000) 0 (-35000)>,
+ <10000 5000 (-20000) 0 (-35000)>,
+ <10000 5000 (-20000) 0 (-35000)>;
+
+ qcom,allow-voltage-interpolation;
+ qcom,allow-quotient-interpolation;
+ qcom,cpr-scaled-open-loop-voltage-as-ceiling;
+
+ qcom,cpr-aging-max-voltage-adjustment = <25000>;
+ qcom,cpr-aging-ref-corner = <13 13>;
+ qcom,cpr-aging-ro-scaling-factor = <3200>;
+ qcom,allow-aging-voltage-adjustment =
+ /* Speed bin 0 */
+ <0 0 0 1 1 1 1 1>,
+
+ /* Speed bin 1 */
+ <0 0 0 1 1 1 1 1>;
+ };
+ };
+
+ thread@1 {
+ qcom,cpr-thread-id = <1>;
+ qcom,cpr-consecutive-up = <0>;
+ qcom,cpr-consecutive-down = <3>;
+ qcom,cpr-up-threshold = <2>;
+ qcom,cpr-down-threshold = <2>;
+
+ apc1_vreg: regulator {
+ regulator-name = "apc1_corner";
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <25>;
+
+ qcom,cpr-pd-bypass-mask = <0xe0>;
+ qcom,cpr-fuse-corners = <5>;
+ qcom,cpr-fuse-combos = <16>;
+ qcom,cpr-speed-bins = <2>;
+ qcom,cpr-speed-bin-corners = <25 21>;
+ qcom,cpr-corners =
+ /* Speed bin 0 */
+ <25 25 25 25 25 25 25 25>,
+
+ /* Speed bin 1 */
+ <21 21 21 21 21 21 21 21>;
+
+ qcom,ldo-min-headroom-voltage = <150000>;
+ qcom,ldo-max-headroom-voltage = <470000>;
+ qcom,ldo-max-voltage = <890000>;
+ qcom,uses-mem-acc;
+
+ qcom,cpr-corner-fmax-map =
+ /* Speed bin 0 */
+ <1 4 9 13 25>,
+
+ /* Speed bin 1 */
+ <1 4 9 13 21>;
+
+ qcom,cpr-voltage-ceiling =
+ /* Speed bin 0 */
+ <670000 670000 670000 670000 745000
+ 745000 745000 745000 745000 905000
+ 905000 905000 905000 1140000 1140000
+ 1140000 1140000 1140000 1140000 1140000
+ 1140000 1140000 1140000 1140000 1140000>,
+
+ /* Speed bin 1 */
+ <670000 670000 670000 670000 745000
+ 745000 745000 745000 745000 905000
+ 905000 905000 905000 1140000 1140000
+ 1140000 1140000 1140000 1140000 1140000
+ 1140000>;
+
+ qcom,cpr-voltage-floor =
+ /* Speed bin 0 */
+ <470000 470000 470000 470000 470000
+ 470000 470000 470000 470000 470000
+ 470000 470000 470000 470000 470000
+ 470000 470000 470000 470000 470000
+ 470000 470000 470000 470000 470000>,
+
+ /* Speed bin 1 */
+ <470000 470000 470000 470000 470000
+ 470000 470000 470000 470000 470000
+ 470000 470000 470000 470000 470000
+ 470000 470000 470000 470000 470000
+ 470000>;
+
+ qcom,cpr-floor-to-ceiling-max-range =
+ /* Speed bin 0 */
+ <80000 80000 80000 80000 80000
+ 80000 80000 80000 80000 80000
+ 80000 80000 80000 80000 80000
+ 80000 80000 80000 80000 80000
+ 80000 80000 80000 80000 80000>,
+
+ /* Speed bin 1 */
+ <80000 80000 80000 80000 80000
+ 80000 80000 80000 80000 80000
+ 80000 80000 80000 80000 80000
+ 80000 80000 80000 80000 80000
+ 80000>;
+
+ qcom,corner-frequencies =
+ /* Speed bin 0 */
+ <307200000 403200000 480000000
+ 556800000 652800000 729600000
+ 806400000 883200000 940800000
+ 1036800000 1113600000 1190400000
+ 1248000000 1324800000 1401600000
+ 1478400000 1555200000 1632000000
+ 1708800000 1785600000 1824000000
+ 1920000000 1996800000 2073600000
+ 2150400000>,
+
+ /* Speed bin 1 */
+ <307200000 403200000 480000000
+ 556800000 652800000 729600000
+ 806400000 883200000 940800000
+ 1036800000 1113600000 1190400000
+ 1248000000 1324800000 1401600000
+ 1478400000 1555200000 1632000000
+ 1708800000 1785600000 1804800000>;
+
+ qcom,cpr-ro-scaling-factor =
+ < 0 0 3112 2666 2947 2543 2271 1979
+ 2623 2317 2772 2450 0 0 0 0>,
+ < 0 0 3112 2666 2947 2543 2271 1979
+ 2623 2317 2772 2450 0 0 0 0>,
+ < 0 0 3112 2666 2947 2543 2271 1979
+ 2623 2317 2772 2450 0 0 0 0>,
+ < 0 0 3112 2666 2947 2543 2271 1979
+ 2623 2317 2772 2450 0 0 0 0>,
+ < 0 0 2889 2528 2740 2426 2310 2040
+ 2519 2257 2668 2372 0 0 0 0>;
+
+ qcom,cpr-open-loop-voltage-fuse-adjustment =
+ /* Speed bin 0 */
+ <20000 0 15000 (-55000) 0>,
+ <20000 0 15000 (-55000) 0>,
+ <20000 0 15000 0 0>,
+ <35000 0 40000 25000 25000>,
+ <35000 0 40000 25000 25000>,
+ <35000 0 40000 25000 25000>,
+ <35000 0 40000 25000 25000>,
+ <35000 0 40000 25000 25000>,
+
+ /* Speed bin 1 */
+ <20000 0 15000 (-55000) 0>,
+ <20000 0 15000 (-55000) 0>,
+ <20000 0 15000 0 0>,
+ <35000 0 40000 25000 25000>,
+ <35000 0 40000 25000 25000>,
+ <35000 0 40000 25000 25000>,
+ <35000 0 40000 25000 25000>,
+ <35000 0 40000 25000 25000>;
+
+ qcom,cpr-closed-loop-voltage-fuse-adjustment =
+ /* Speed bin 0 */
+ <35000 35000 40000 (-30000) 40000>,
+ < 0 0 0 (-70000) 0>,
+ < 0 0 0 0 0>,
+ < 0 0 0 0 0>,
+ < 0 0 0 0 0>,
+ < 0 0 0 0 0>,
+ < 0 0 0 0 0>,
+ < 0 0 0 0 0>,
+
+ /* Speed bin 1 */
+ <35000 35000 40000 (-30000) 40000>,
+ < 0 0 0 (-70000) 0>,
+ < 0 0 0 0 0>,
+ < 0 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,cpr-open-loop-voltage-adjustment =
+ /* Speed bin 0 */
+ <(-15000) (-15000) (-15000) (-15000)
+ (-11000) (-12000) (-13000) (-14000)
+ (-15000) (-18000) (-21000) (-23000)
+ (-25000) (-25000) (-26000) (-26000)
+ (-27000) (-27000) (-28000) (-28000)
+ (-28000) (-29000) (-29000) (-30000)
+ (-30000)>,
+
+ /* Speed bin 1 */
+ <(-15000) (-15000) (-15000) (-15000)
+ (-11000) (-12000) (-13000) (-14000)
+ (-15000) (-18000) (-21000) (-23000)
+ (-25000) (-25000) (-26000) (-26000)
+ (-27000) (-27000) (-28000) (-28000)
+ (-28000)>;
+ qcom,cpr-open-loop-voltage-min-diff =
+ /* Speed bin 0 */
+ <0 0 0 0 (-50000) 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0>,
+
+ /* Speed bin 1 */
+ <0 0 0 0 (-50000) 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0>;
+
+ qcom,cpr-closed-loop-voltage-adjustment =
+ /* Speed bin 0 */
+ <(-15000) (-15000) (-15000) (-15000)
+ (-11000) (-12000) (-13000) (-14000)
+ (-15000) (-18000) (-21000) (-23000)
+ (-25000) (-25000) (-26000) (-26000)
+ (-27000) (-27000) (-28000) (-28000)
+ (-28000) (-29000) (-29000) (-30000)
+ (-30000)>,
+
+ /* Speed bin 1 */
+ <(-15000) (-15000) (-15000) (-15000)
+ (-11000) (-12000) (-13000) (-14000)
+ (-15000) (-18000) (-21000) (-23000)
+ (-25000) (-25000) (-26000) (-26000)
+ (-27000) (-27000) (-28000) (-28000)
+ (-28000)>;
+
+ qcom,allow-voltage-interpolation;
+ qcom,allow-quotient-interpolation;
+ qcom,cpr-scaled-open-loop-voltage-as-ceiling;
+
+ qcom,cpr-aging-max-voltage-adjustment = <25000>;
+ qcom,cpr-aging-ref-corner = <13 13>;
+ qcom,cpr-aging-ro-scaling-factor = <3200>;
+ qcom,allow-aging-voltage-adjustment =
+ /* Speed bin 0 */
+ <0 0 0 1 1 1 1 1>,
+
+ /* Speed bin 1 */
+ <0 0 0 1 1 1 1 1>;
+
+ qcom,cpr-dynamic-floor-corner = <1>;
+ };
+ };
+ };
+
+ gfx_cpr: cpr3-ctrl@838000 {
+ compatible = "qcom,cpr3-msm8996-mmss-regulator";
+ reg = <0x00838000 0x4000>, <0x00074000 0x1000>;
+ reg-names = "cpr_ctrl", "fuse_base";
+ clocks = <&clock_mmss clk_mmss_rbcpr_clk>,
+ <&clock_mmss clk_mmss_rbcpr_ahb_clk>,
+ <&clock_mmss clk_mmss_mmagic_ahb_clk>;
+ clock-names = "core_clk", "iface_clk", "bus_clk";
+ interrupts = <GIC_SPI 166 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "cpr";
+ qcom,cpr-ctrl-name = "gfx";
+
+ qcom,cpr-sensor-time = <1000>;
+ qcom,cpr-loop-time = <5000000>;
+ qcom,cpr-idle-cycles = <15>;
+ qcom,cpr-step-quot-init-min = <10>;
+ qcom,cpr-step-quot-init-max = <13>;
+ qcom,cpr-count-mode = <2>; /* Staggered */
+
+ vdd-supply = <&pmi8994_s2>;
+ mem-acc-supply = <&gfx_mem_acc_vreg>;
+
+ qcom,voltage-step = <5000>;
+
+ qcom,cpr-enable;
+
+ qcom,cpr-aging-ref-voltage = <905000>;
+
+ thread@0 {
+ qcom,cpr-thread-id = <0>;
+ qcom,cpr-consecutive-up = <0>;
+ qcom,cpr-consecutive-down = <2>;
+ qcom,cpr-up-threshold = <0>;
+ qcom,cpr-down-threshold = <2>;
+
+ gfx_vreg: regulator {
+ regulator-name = "gfx_corner";
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <8>;
+
+ qcom,cpr-fuse-corners = <4>;
+ qcom,cpr-fuse-combos = <8>;
+ qcom,cpr-corners = <8>;
+
+ qcom,cpr-corner-fmax-map = <2 4 6 8>;
+
+ qcom,cpr-voltage-ceiling =
+ <400000 670000 670000 745000 825000
+ 905000 960000 1015000>;
+ qcom,cpr-voltage-floor =
+ <400000 520000 520000 520000 520000
+ 520000 520000 520000>;
+
+ qcom,mem-acc-voltage = <1 1 1 1 2 2 2 2>;
+
+ qcom,corner-frequencies =
+ <0 133000000 214000000 315000000
+ 401800000 510000000 560000000
+ 624000000>;
+
+ qcom,cpr-target-quotients =
+ < 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0>,
+ < 0 0 0 0 0 0 185 179
+ 291 299 304 319 0 0 0 0>,
+ < 0 0 0 0 0 0 287 273
+ 425 426 443 453 0 0 0 0>,
+ < 0 0 0 0 0 0 414 392
+ 584 576 608 612 0 0 0 0>,
+ < 0 0 0 0 0 0 459 431
+ 684 644 692 679 0 0 0 0>,
+ < 0 0 0 0 0 0 577 543
+ 798 768 823 810 0 0 0 0>,
+ < 0 0 0 0 0 0 669 629
+ 886 864 924 911 0 0 0 0>,
+ < 0 0 0 0 0 0 771 725
+ 984 970 1036 1024 0 0 0 0>;
+
+ qcom,cpr-ro-scaling-factor =
+ < 0 0 0 0 0 0 2035 1917
+ 1959 2131 2246 2253 0 0 0 0>,
+ < 0 0 0 0 0 0 2035 1917
+ 1959 2131 2246 2253 0 0 0 0>,
+ < 0 0 0 0 0 0 2035 1917
+ 1959 2131 2246 2253 0 0 0 0>,
+ < 0 0 0 0 0 0 2035 1917
+ 1959 2131 2246 2253 0 0 0 0>,
+ < 0 0 0 0 0 0 2035 1917
+ 1959 2131 2246 2253 0 0 0 0>,
+ < 0 0 0 0 0 0 2035 1917
+ 1959 2131 2246 2253 0 0 0 0>,
+ < 0 0 0 0 0 0 2035 1917
+ 1959 2131 2246 2253 0 0 0 0>,
+ < 0 0 0 0 0 0 2035 1917
+ 1959 2131 2246 2253 0 0 0 0>;
+
+ qcom,cpr-open-loop-voltage-fuse-adjustment =
+ < 0 0 30000 (-10000)>,
+ <(-30000) (-30000) 0 (-10000)>,
+ <(-30000) (-30000) 0 (-10000)>,
+ <(-70000) 0 0 0>,
+ <(-70000) 0 0 0>,
+ <(-70000) 0 0 0>,
+ <(-70000) 0 0 0>,
+ <(-70000) 0 0 0>;
+ qcom,cpr-closed-loop-voltage-adjustment =
+ < 0 45000 (-5000) 20000 20000 30000
+ 10000 (-5000)>,
+ < 0 45000 (-5000) 20000 20000 30000
+ 10000 (-5000)>,
+ < 0 30000 60000 40000 40000 45000
+ 25000 35000>,
+ < 0 0 30000 10000 10000 45000
+ 25000 25000>,
+ < 0 0 30000 10000 10000 45000
+ 25000 25000>,
+ < 0 0 30000 10000 10000 45000
+ 25000 25000>,
+ < 0 0 30000 10000 10000 45000
+ 25000 25000>,
+ < 0 0 30000 10000 10000 45000
+ 25000 25000>;
+ qcom,cpr-floor-to-ceiling-max-range =
+ <0 70000 70000 75000 80000 90000 95000
+ 100000>;
+
+ qcom,cpr-fused-closed-loop-voltage-adjustment-map =
+ <0 0 0 0 0 0 0 0>,
+ <0 0 0 0 0 0 0 0>,
+ <0 0 0 0 0 0 0 0>,
+ <0 0 0 0 0 0 0 0>,
+ <0 2 2 2 2 0 0 4>,
+ <0 2 2 2 2 0 0 4>,
+ <0 2 2 2 2 0 0 4>,
+ <0 2 2 2 2 0 0 4>;
+
+ qcom,allow-voltage-interpolation;
+ qcom,cpr-scaled-open-loop-voltage-as-ceiling;
+
+ qcom,cpr-aging-max-voltage-adjustment = <25000>;
+ qcom,cpr-aging-ref-corner = <6>;
+ qcom,cpr-aging-ro-scaling-factor = <2950>;
+ qcom,allow-aging-voltage-adjustment =
+ <0 0 0 1 1 1 1 1>;
+ };
+ };
+ };
+/* Memory accelerator regulators */
+ apc0_pwrcl_mem_acc_vreg: apc0-pwrcl-mem-acc-regulator {
+ compatible = "qcom,mem-acc-regulator";
+ reg = <0x099e00c0 0x4>;
+ reg-names = "acc-sel-l1";
+ regulator-name = "apc0_pwrcl_mem_acc_corner";
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <2>;
+ qcom,corner-acc-map = <0x3 0x0>;
+
+ qcom,acc-sel-l1-bit-pos = <0>;
+ qcom,acc-sel-l1-bit-size = <2>;
+ };
+
+ apc1_perfcl_mem_acc_vreg: apc1-perfcl-mem-acc-regulator {
+ compatible = "qcom,mem-acc-regulator";
+ reg = <0x099e00c0 0x4>;
+ reg-names = "acc-sel-l1";
+ regulator-name = "apc1_perfcl_mem_acc_corner";
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <2>;
+ qcom,corner-acc-map = <0x3 0x0>;
+
+ qcom,acc-sel-l1-bit-pos = <2>;
+ qcom,acc-sel-l1-bit-size = <2>;
+ };
+
+ apcc_l3_mem_acc_vreg: apcc-l3-mem-acc-regulator {
+ compatible = "qcom,mem-acc-regulator";
+ reg = <0x099e00c0 0x4>;
+ reg-names = "acc-sel-l1";
+ regulator-name = "apcc_l3_mem_acc_corner";
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <2>;
+ qcom,corner-acc-map = <0x1 0x0>;
+
+ qcom,acc-sel-l1-bit-pos = <4>;
+ qcom,acc-sel-l1-bit-size = <1>;
+ };
+
+ gfx_mem_acc_vreg: regulator@007af004 {
+ compatible = "qcom,mem-acc-regulator";
+ reg = <0x007af004 0x4>;
+ reg-names = "acc-sel-l1";
+ regulator-name = "gfx_mem_acc_corner";
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <2>;
+
+ qcom,corner-acc-map = <0x1 0x0>;
+ qcom,acc-sel-l1-bit-pos = <0>;
+ qcom,acc-sel-l1-bit-size = <1>;
+ };
+
+/* Kryo regulators */
+ kryo0_vreg: regulator@99a2000 {
+ compatible = "qcom,kryo-regulator";
+ regulator-name = "kryo0";
+ reg = <0x99a2000 0x1000>, <0x99e0000 0x1000>,
+ <0x9820000 0x1000>;
+ reg-names = "pm-apc", "pm-apcc", "apcs-csr";
+ regulator-min-microvolt = <468197>;
+ regulator-max-microvolt = <892467>;
+ qcom,ldo-default-voltage = <750000>;
+ qcom,retention-voltage = <520000>;
+ qcom,ldo-headroom-voltage = <150000>;
+ qcom,vref-functional-step-voltage = <4466>;
+ qcom,vref-functional-min-voltage = <325285>;
+ qcom,vref-retention-step-voltage = <4466>;
+ qcom,vref-retention-min-voltage = <325285>;
+ qcom,ldo-config-init = <0xf1f0e471>;
+ qcom,apm-config-init = <0x0>;
+ qcom,cluster-num = <0>;
+ kryo0_retention_vreg: regulator {
+ regulator-name = "kryo0-retention";
+ regulator-min-microvolt = <468197>;
+ regulator-max-microvolt = <892467>;
+ };
+ };
+
+ kryo1_vreg: regulator@99d2000 {
+ compatible = "qcom,kryo-regulator";
+ regulator-name = "kryo1";
+ reg = <0x99d2000 0x1000>, <0x99e0000 0x1000>,
+ <0x9820000 0x1000>;
+ reg-names = "pm-apc", "pm-apcc", "apcs-csr";
+ regulator-min-microvolt = <468197>;
+ regulator-max-microvolt = <892467>;
+ qcom,ldo-default-voltage = <750000>;
+ qcom,retention-voltage = <520000>;
+ qcom,ldo-headroom-voltage = <150000>;
+ qcom,vref-functional-step-voltage = <4466>;
+ qcom,vref-functional-min-voltage = <325285>;
+ qcom,vref-retention-step-voltage = <4466>;
+ qcom,vref-retention-min-voltage = <325285>;
+ qcom,cluster-num = <1>;
+ qcom,ldo-config-init = <0xf1f0e471>;
+ qcom,apm-config-init = <0x0>;
+ kryo1_retention_vreg: regulator {
+ regulator-name = "kryo1-retention";
+ regulator-min-microvolt = <468197>;
+ regulator-max-microvolt = <892467>;
+ };
+ };
+
+/* Miscellaneous regulators */
+ spi_eth_vreg: spi_eth_phy_vreg {
+ compatible = "regulator-fixed";
+ regulator-name = "ethernet_phy";
+ gpio = <&pm8994_mpps 5 0>;
+ enable-active-high;
+ status = "disabled";
+ };
+
+ usb_otg_switch: usb-otg-switch {
+ compatible = "regulator-fixed";
+ regulator-name = "usb_otg_vreg";
+ vin-supply = <&smbcharger_external_otg>;
+ enable-active-high;
+ gpio = <&pmi8994_gpios 5 0>;
+ status = "disabled";
+ };
+
+ /* Rome 3.3V supply */
+ rome_vreg: rome_vreg {
+ compatible = "regulator-fixed";
+ regulator-name = "rome_vreg";
+ startup-delay-us = <4000>;
+ enable-active-high;
+ gpio = <&pm8994_gpios 9 0>;
+ };
+};
+
+&pmi8994_charger {
+ otg-parent-supply = <&pmi8994_boost_5v>;
+ smbcharger_charger_otg: qcom,smbcharger-boost-otg {
+ regulator-name = "smbcharger_charger_otg";
+ };
+
+ smbcharger_external_otg: qcom,smbcharger-external-otg {
+ regulator-name = "smbcharger_external_otg";
+ };
+};
+
diff --git a/arch/arm64/boot/dts/qcom/msm8996-sim.dtsi b/arch/arm64/boot/dts/qcom/msm8996-sim.dtsi
new file mode 100644
index 000000000000..a88bd7554d5d
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-sim.dtsi
@@ -0,0 +1,102 @@
+/* Copyright (c) 2014-2015, 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 "msm8996-pinctrl.dtsi"
+#include "dsi-panel-sim-video.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 SIM";
+ compatible = "qcom,msm8996-sim", "qcom,msm8996", "qcom,sim";
+ qcom,board-id = <16 0>;
+};
+
+&uartblsp2dm1 {
+ status = "ok";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart_console_active>;
+};
+
+&blsp1_uart2 {
+ status = "ok";
+};
+
+&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 = <110 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,clk-rates = <400000 20000000 25000000 50000000 96000000 192000000 384000000>;
+ qcom,nonremovable;
+ 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>;
+
+ 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";
+};
+
+&mdss_mdp {
+ qcom,mdss-pref-prim-intf = "dsi";
+};
+
+&mdss_dsi0 {
+ qcom,dsi-pref-prim-pan = <&dsi_sim_vid>;
+};
+
+&ufsphy1 {
+ status = "ok";
+};
+
+&ufs1 {
+ status = "ok";
+};
+
+&usb3 {
+ qcom,skip-charger-detection;
+ qcom,vbus-present;
+ dwc3@6a00000 {
+ maximum-speed = "high-speed";
+ };
+};
+
+&ssphy {
+ qcom,emulation;
+};
+
+&cpp {
+ status = "disabled";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-smp2p.dtsi b/arch/arm64/boot/dts/qcom/msm8996-smp2p.dtsi
new file mode 100644
index 000000000000..35ec2d23e8cf
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-smp2p.dtsi
@@ -0,0 +1,247 @@
+/* Copyright (c) 2014-2015, 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/interrupt-controller/arm-gic.h>
+
+&soc {
+ qcom,smp2p-modem@9820010 {
+ compatible = "qcom,smp2p";
+ reg = <0x9820010 0x4>;
+ qcom,remote-pid = <1>;
+ qcom,irq-bitmask = <0x4000>;
+ interrupts = <GIC_SPI 451 IRQ_TYPE_EDGE_RISING>;
+ };
+
+ qcom,smp2p-adsp@9820010 {
+ compatible = "qcom,smp2p";
+ reg = <0x9820010 0x4>;
+ qcom,remote-pid = <2>;
+ qcom,irq-bitmask = <0x400>;
+ interrupts = <GIC_SPI 158 IRQ_TYPE_EDGE_RISING>;
+ };
+
+ qcom,smp2p-dsps@9820010 {
+ compatible = "qcom,smp2p";
+ reg = <0x9820010 0x4>;
+ qcom,remote-pid = <3>;
+ qcom,irq-bitmask = <0x4000000>;
+ interrupts = <GIC_SPI 178 IRQ_TYPE_EDGE_RISING>;
+ };
+
+ smp2pgpio_smp2p_15_in: qcom,smp2pgpio-smp2p-15-in {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "smp2p";
+ qcom,remote-pid = <15>;
+ qcom,is-inbound;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_test_smp2p_15_in {
+ compatible = "qcom,smp2pgpio_test_smp2p_15_in";
+ gpios = <&smp2pgpio_smp2p_15_in 0 0>;
+ };
+
+ smp2pgpio_smp2p_15_out: qcom,smp2pgpio-smp2p-15-out {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "smp2p";
+ qcom,remote-pid = <15>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_test_smp2p_15_out {
+ compatible = "qcom,smp2pgpio_test_smp2p_15_out";
+ gpios = <&smp2pgpio_smp2p_15_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>;
+ };
+
+ smp2pgpio_smp2p_3_in: qcom,smp2pgpio-smp2p-3-in {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "smp2p";
+ qcom,remote-pid = <3>;
+ qcom,is-inbound;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_test_smp2p_3_in {
+ compatible = "qcom,smp2pgpio_test_smp2p_3_in";
+ gpios = <&smp2pgpio_smp2p_3_in 0 0>;
+ };
+
+ smp2pgpio_smp2p_3_out: qcom,smp2pgpio-smp2p-3-out {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "smp2p";
+ qcom,remote-pid = <3>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio_test_smp2p_3_out {
+ compatible = "qcom,smp2pgpio_test_smp2p_3_out";
+ gpios = <&smp2pgpio_smp2p_3_out 0 0>;
+ };
+
+ smp2pgpio_sleepstate_3_out: qcom,smp2pgpio-sleepstate-gpio-3-out {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "sleepstate";
+ qcom,remote-pid = <3>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ qcom,smp2pgpio-sleepstate-3-out {
+ compatible = "qcom,smp2pgpio_sleepstate_3_out";
+ gpios = <&smp2pgpio_sleepstate_3_out 0 0>;
+ };
+
+ /* 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>;
+ };
+
+ /* 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 ssc */
+ smp2pgpio_ssr_smp2p_3_in: qcom,smp2pgpio-ssr-smp2p-3-in {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "slave-kernel";
+ qcom,remote-pid = <3>;
+ qcom,is-inbound;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ /* ssr - outbound entry to ssc */
+ smp2pgpio_ssr_smp2p_3_out: qcom,smp2pgpio-ssr-smp2p-3-out {
+ compatible = "qcom,smp2pgpio";
+ qcom,entry-name = "master-kernel";
+ qcom,remote-pid = <3>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v2-dtp.dts b/arch/arm64/boot/dts/qcom/msm8996-v2-dtp.dts
new file mode 100644
index 000000000000..4fce8ef672bd
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v2-dtp.dts
@@ -0,0 +1,22 @@
+/* Copyright (c) 2015, 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 "msm8996-v2.dtsi"
+#include "msm8996-dtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM8996 V2 DTP";
+ compatible = "qcom,msm8996-dtp", "qcom,msm8996", "qcom,qrd";
+ qcom,board-id= <0x1000b 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v2-fluid.dts b/arch/arm64/boot/dts/qcom/msm8996-v2-fluid.dts
new file mode 100644
index 000000000000..c104c86ba3a5
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v2-fluid.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v2.dtsi"
+#include "msm8996-fluid.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v2 FLUID";
+ compatible = "qcom,msm8996-fluid", "qcom,msm8996", "qcom,fluid";
+ qcom,board-id = <3 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v2-liquid.dts b/arch/arm64/boot/dts/qcom/msm8996-v2-liquid.dts
new file mode 100644
index 000000000000..a5aaee474836
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v2-liquid.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v2.dtsi"
+#include "msm8996-liquid.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v2 LiQUID";
+ compatible = "qcom,msm8996-liquid", "qcom,msm8996", "qcom,liquid";
+ qcom,board-id = <9 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-cdp.dts b/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-cdp.dts
new file mode 100644
index 000000000000..a8adcdc07b89
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v2.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v2 + PMI8994 CDP";
+ compatible = "qcom,msm8996-cdp", "qcom,msm8996", "qcom,cdp";
+ qcom,board-id = <1 0>, <0x01000001 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-mtp.dts b/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-mtp.dts
new file mode 100644
index 000000000000..e28a3eeaccb6
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-mtp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v2.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v2 + PMI8994 MTP";
+ compatible = "qcom,msm8996-mtp", "qcom,msm8996", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pm8004-cdp.dts b/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pm8004-cdp.dts
new file mode 100644
index 000000000000..f5cf0f62ce45
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pm8004-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v2.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v2 + PMI8994 + PM8004 CDP";
+ compatible = "qcom,msm8996-cdp", "qcom,msm8996", "qcom,cdp";
+ qcom,board-id = <1 0>, <0x01000001 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pm8004-mtp.dts b/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pm8004-mtp.dts
new file mode 100644
index 000000000000..97909c3ef16a
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pm8004-mtp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v2.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v2 + PMI8994 + PM8004 MTP";
+ compatible = "qcom,msm8996-mtp", "qcom,msm8996", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pm8004-pmk8001-cdp.dts b/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pm8004-pmk8001-cdp.dts
new file mode 100644
index 000000000000..080efc93abe1
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pm8004-pmk8001-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v2.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004-pmk8001.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v2 + PMI8994 + PM8004 + PMK8001 CDP";
+ compatible = "qcom,msm8996-cdp", "qcom,msm8996", "qcom,cdp";
+ qcom,board-id = <1 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pm8004-pmk8001-mtp.dts b/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pm8004-pmk8001-mtp.dts
new file mode 100644
index 000000000000..0b958073840b
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pm8004-pmk8001-mtp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v2.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004-pmk8001.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v2 + PMI8994 + PM8004 + PMK8001 MTP";
+ compatible = "qcom,msm8996-mtp", "qcom,msm8996", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pmk8001-cdp.dts b/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pmk8001-cdp.dts
new file mode 100644
index 000000000000..7c6a7dd36258
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pmk8001-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v2.dtsi"
+#include "msm8996-pm8994-pmi8994-pmk8001.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v2 + PMI8994 + PMK8001 CDP";
+ compatible = "qcom,msm8996-cdp", "qcom,msm8996", "qcom,cdp";
+ qcom,board-id = <1 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pmk8001-mtp.dts b/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pmk8001-mtp.dts
new file mode 100644
index 000000000000..673fd2264007
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v2-pmi8994-pmk8001-mtp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v2.dtsi"
+#include "msm8996-pm8994-pmi8994-pmk8001.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v2 + PMI8994 + PMK8001 MTP";
+ compatible = "qcom,msm8996-mtp", "qcom,msm8996", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v2.dtsi b/arch/arm64/boot/dts/qcom/msm8996-v2.dtsi
new file mode 100644
index 000000000000..042fb3234b9e
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v2.dtsi
@@ -0,0 +1,713 @@
+/* Copyright (c) 2014-2015, 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.
+ */
+
+/*
+ * As a general rule, only version-specific property overrides should be placed
+ * inside this file. Common device definitions should be placed inside the
+ * msm8996.dtsi file.
+ */
+
+#include "msm8996.dtsi"
+#include "msm8996-coresight-v2.dtsi"
+#include "msm-arm-smmu-impl-defs-8996-v2.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v2";
+ qcom,msm-id = <246 0x20001>;
+};
+
+&clock_gcc {
+ compatible = "qcom,gcc-8996-v2";
+};
+
+&clock_debug {
+ compatible = "qcom,cc-debug-8996-v2";
+};
+
+&clock_mmss {
+ compatible = "qcom,mmsscc-8996-v2";
+};
+
+&clock_gpu {
+ compatible = "qcom,gpucc-8996-v2";
+ qcom,gfx3d_clk_src_v2-opp-handle = <&msm_gpu>;
+ qcom,gfxfreq-speedbin0 =
+ < 0 0 0 >,
+ < 125000000 3 4 >,
+ < 210000000 3 4 >,
+ < 300000000 3 4 >,
+ < 500000000 4 5 >,
+ < 604800000 5 7 >;
+ qcom,gfxfreq-mx-speedbin0 =
+ < 0 0 >,
+ < 125000000 4 >,
+ < 210000000 4 >,
+ < 300000000 4 >,
+ < 500000000 5 >,
+ < 604800000 7 >;
+};
+
+&gdsc_gpu_gx {
+ clock-names = "core_clk", "core_root_clk";
+ clocks = <&clock_gpu clk_gpu_gx_gfx3d_clk>,
+ <&clock_gpu clk_gfx3d_clk_src_v2>;
+};
+
+&pm8994_s11 {
+ regulator-max-microvolt = <1015000>;
+ /delete-property/ qcom,recal-mask;
+};
+
+&pm8994_s11_limit {
+ regulator-max-microvolt = <1015000>;
+};
+
+&apc_apm {
+ /delete-property/ qcom,clock-source-override;
+};
+
+&apcc_cpr {
+ compatible = "qcom,cpr3-msm8996-v2-hmss-regulator";
+
+ qcom,cpr-count-mode = <2>; /* Staggered */
+ /delete-property/ qcom,cpr-count-repeat;
+
+ qcom,apm-ctrl = <&apc_apm>;
+ qcom,apm-threshold-voltage = <850000>;
+ qcom,apm-hysteresis-voltage = <5000>;
+
+ qcom,cpr-enable;
+ qcom,cpr-hw-closed-loop;
+
+ /delete-property/ qcom,cpr-aging-ref-voltage;
+ /delete-property/ proxy-supply;
+
+ thread@0 {
+ qcom,cpr-consecutive-down = <2>;
+ qcom,cpr-up-threshold = <0>;
+ };
+
+ thread@1 {
+ qcom,cpr-consecutive-down = <2>;
+ qcom,cpr-up-threshold = <0>;
+ };
+};
+
+&apc0_pwrcl_vreg {
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <19>;
+
+ qcom,cpr-fuse-corners = <5>;
+ qcom,cpr-fuse-combos = <4>;
+ /delete-property/ qcom,cpr-speed-bins;
+ /delete-property/ qcom,cpr-speed-bin-corners;
+ qcom,cpr-corners = <19>;
+
+ qcom,ldo-max-voltage = <805000>;
+
+ qcom,cpr-corner-fmax-map = <1 2 6 11 19>;
+
+ qcom,cpr-voltage-ceiling =
+ <670000 670000 745000 745000 745000 745000 905000 905000
+ 905000 905000 905000 1015000 1015000 1015000 1015000 1015000
+ 1015000 1015000 1015000>;
+ qcom,cpr-voltage-floor =
+ <470000 470000 470000 470000 470000 470000 470000 470000
+ 470000 470000 470000 470000 470000 470000 470000 470000
+ 470000 470000 470000>;
+ qcom,cpr-floor-to-ceiling-max-range =
+ <80000 80000 80000 80000 80000 80000 80000 80000
+ 80000 80000 80000 80000 80000 80000 80000 80000
+ 80000 80000 80000>;
+
+ qcom,corner-frequencies =
+ <192000000 268800000 307200000 345600000 403200000
+ 480000000 576000000 633600000 729600000 806400000
+ 883200000 960000000 1017600000 1113600000 1190400000
+ 1267200000 1344000000 1420800000 1459200000>;
+
+ qcom,cpr-ro-scaling-factor =
+ < 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0
+ 0 0 0>,
+ < 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0
+ 0 0 0>,
+ < 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0
+ 0 0 0>,
+ < 0 0 0 0 2147 2226 2310 2312 2450 2447 2603 2600 0
+ 0 0 0>,
+ < 0 0 0 0 1989 2079 2066 2083 2193 2201 2283 2296 0
+ 0 0 0>;
+
+ qcom,cpr-open-loop-voltage-fuse-adjustment =
+ <0 0 0 0 0>,
+ <0 0 0 0 0>,
+ <0 0 0 0 0>,
+ <0 0 0 0 0>;
+ qcom,cpr-closed-loop-voltage-fuse-adjustment =
+ <0 0 0 0 0>,
+ <0 0 0 0 0>,
+ <0 0 0 0 0>,
+ <0 0 0 0 0>;
+
+ /delete-property/ qcom,cpr-open-loop-voltage-adjustment;
+ /delete-property/ qcom,cpr-open-loop-voltage-min-diff;
+ /delete-property/ qcom,cpr-closed-loop-voltage-adjustment;
+
+ /delete-property/ qcom,cpr-aging-max-voltage-adjustment;
+ /delete-property/ qcom,cpr-aging-ref-corner;
+ /delete-property/ qcom,cpr-aging-ro-scaling-factor;
+ /delete-property/ qcom,allow-aging-voltage-adjustment;
+};
+
+&apc0_cbf_vreg {
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <10>;
+
+ qcom,cpr-fuse-corners = <5>;
+ qcom,cpr-fuse-combos = <4>;
+ /delete-property/ qcom,cpr-speed-bins;
+ /delete-property/ qcom,cpr-speed-bin-corners;
+ qcom,cpr-corners = <10>;
+
+ qcom,cpr-corner-fmax-map = <1 2 5 9 10>;
+
+ qcom,cpr-voltage-ceiling =
+ <605000 670000 745000 745000 745000 905000 905000 905000
+ 905000 1015000>;
+ qcom,cpr-voltage-floor =
+ <470000 470000 470000 470000 470000 470000 470000 470000
+ 470000 470000>;
+ qcom,cpr-floor-to-ceiling-max-range =
+ <80000 80000 80000 80000 80000 80000 80000 80000
+ 80000 80000>;
+
+ qcom,corner-frequencies =
+ <150000000 307200000 384000000 499200000 595200000
+ 691200000 787200000 883200000 960000000 1036800000>;
+
+ qcom,cpr-ro-scaling-factor =
+ < 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0
+ 0 0 0>,
+ < 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0
+ 0 0 0>,
+ < 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0
+ 0 0 0>,
+ < 0 0 0 0 2147 2226 2310 2312 2450 2447 2603 2600 0
+ 0 0 0>,
+ < 0 0 0 0 1989 2079 2066 2083 2193 2201 2283 2296 0
+ 0 0 0>;
+
+ qcom,cpr-open-loop-voltage-fuse-adjustment =
+ <0 0 0 0 0>,
+ <0 0 0 0 0>,
+ <0 0 0 0 (-130000)>,
+ <0 0 0 0 (-130000)>;
+ qcom,cpr-closed-loop-voltage-fuse-adjustment =
+ <0 0 0 0 0>,
+ <0 0 0 0 0>,
+ <0 0 0 0 (-115000)>,
+ <0 0 0 0 (-115000)>;
+
+ /delete-property/ qcom,cpr-aging-max-voltage-adjustment;
+ /delete-property/ qcom,cpr-aging-ref-corner;
+ /delete-property/ qcom,cpr-aging-ro-scaling-factor;
+ /delete-property/ qcom,allow-aging-voltage-adjustment;
+ /delete-property/ qcom,proxy-consumer-enable;
+ /delete-property/ qcom,proxy-consumer-voltage;
+};
+
+&apc1_vreg {
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <18>;
+
+ qcom,cpr-fuse-corners = <5>;
+ qcom,cpr-fuse-combos = <4>;
+ /delete-property/ qcom,cpr-speed-bins;
+ /delete-property/ qcom,cpr-speed-bin-corners;
+ qcom,cpr-corners = <18>;
+
+ qcom,ldo-max-voltage = <805000>;
+
+ qcom,cpr-corner-fmax-map = <1 3 5 11 18>;
+
+ qcom,cpr-voltage-ceiling =
+ <670000 670000 670000 745000 745000 905000 905000 905000
+ 905000 905000 905000 1015000 1015000 1015000 1015000 1015000
+ 1015000 1015000>;
+ qcom,cpr-voltage-floor =
+ <470000 470000 470000 470000 470000 470000 470000 470000
+ 470000 470000 470000 470000 470000 470000 470000 470000
+ 470000 470000>;
+ qcom,cpr-floor-to-ceiling-max-range =
+ <80000 80000 80000 80000 80000 80000 80000 80000
+ 80000 80000 80000 80000 80000 80000 80000 80000
+ 80000 80000>;
+
+ qcom,corner-frequencies =
+ <307200000 345600000 403200000 480000000 576000000
+ 633600000 729600000 806400000 883200000 960000000
+ 1017600000 1113600000 1190400000 1267200000 1344000000
+ 1420800000 1497600000 1593600000>;
+
+ qcom,cpr-ro-scaling-factor =
+ < 0 0 0 0 2212 2273 2517 2506 2663 2650 2908 2891 0
+ 0 0 0>,
+ < 0 0 0 0 2212 2273 2517 2506 2663 2650 2908 2891 0
+ 0 0 0>,
+ < 0 0 0 0 2212 2273 2517 2506 2663 2650 2908 2891 0
+ 0 0 0>,
+ < 0 0 0 0 2152 2237 2321 2337 2475 2469 2636 2612 0
+ 0 0 0>,
+ < 0 0 0 0 2001 2102 2092 2090 2203 2210 2297 2297 0
+ 0 0 0>;
+
+ qcom,cpr-open-loop-voltage-fuse-adjustment =
+ <0 0 0 5000 0>,
+ <0 0 0 5000 0>,
+ <0 0 0 0 0>,
+ <0 0 0 0 0>;
+ qcom,cpr-closed-loop-voltage-fuse-adjustment =
+ <0 0 0 20000 0>,
+ <0 0 0 20000 0>,
+ <0 0 0 0 0>,
+ <0 0 0 0 0>;
+
+ /delete-property/ qcom,cpr-open-loop-voltage-adjustment;
+ /delete-property/ qcom,cpr-open-loop-voltage-min-diff;
+ /delete-property/ qcom,cpr-closed-loop-voltage-adjustment;
+
+ /delete-property/ qcom,cpr-aging-max-voltage-adjustment;
+ /delete-property/ qcom,cpr-aging-ref-corner;
+ /delete-property/ qcom,cpr-aging-ro-scaling-factor;
+ /delete-property/ qcom,allow-aging-voltage-adjustment;
+
+ /delete-property/ qcom,cpr-dynamic-floor-corner;
+};
+
+&gfx_cpr {
+ system-supply = <&pm8994_s1_corner>;
+ qcom,cpr-enable;
+
+ /delete-property/ qcom,cpr-aging-ref-voltage;
+};
+
+&gfx_vreg {
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <5>;
+
+ qcom,cpr-fuse-corners = <4>;
+ qcom,cpr-fuse-combos = <8>;
+ qcom,cpr-corners = <5>;
+
+ qcom,cpr-corner-fmax-map = <2 3 4 5>;
+
+ qcom,cpr-voltage-ceiling =
+ <400000 670000 745000 905000 1015000>;
+ qcom,cpr-voltage-floor =
+ <400000 520000 520000 520000 520000>;
+
+ qcom,system-voltage = <2 2 2 2 4>;
+ qcom,mem-acc-voltage = <1 1 1 2 2>;
+
+ qcom,corner-frequencies =
+ <0 210000000 300000000 500000000 604800000>;
+
+ qcom,cpr-target-quotients =
+ < 0 0 0 0 249 232 0 394 0 422 0 0 0
+ 0 0 0>,
+ < 0 0 0 0 249 232 0 394 0 422 0 0 0
+ 0 0 0>,
+ < 0 0 0 0 400 363 0 565 0 603 0 0 0
+ 0 0 0>,
+ < 0 0 0 0 669 601 0 851 0 905 0 0 0
+ 0 0 0>,
+ < 0 0 0 0 899 806 0 1084 0 1149 0 0 0
+ 0 0 0>;
+
+ qcom,cpr-ro-scaling-factor =
+ < 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0
+ 0 0 0>,
+ < 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0
+ 0 0 0>,
+ < 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0
+ 0 0 0>,
+ < 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0
+ 0 0 0>,
+ < 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0
+ 0 0 0>;
+
+ qcom,cpr-open-loop-voltage-fuse-adjustment =
+ <0 (-5000) (-30000) (-115000)>;
+ qcom,cpr-closed-loop-voltage-adjustment =
+ <0 0 0 (-10000) (-65000)>;
+ qcom,cpr-floor-to-ceiling-max-range =
+ <0 130000 40000 85000 85000>;
+
+ /delete-property/ qcom,cpr-fused-closed-loop-voltage-adjustment-map;
+
+ /delete-property/ qcom,cpr-aging-max-voltage-adjustment;
+ /delete-property/ qcom,cpr-aging-ref-corner;
+ /delete-property/ qcom,cpr-aging-ro-scaling-factor;
+ /delete-property/ qcom,allow-aging-voltage-adjustment;
+};
+
+&kryo0_vreg {
+ regulator-min-microvolt = <468864>;
+ regulator-max-microvolt = <808896>;
+ qcom,vref-functional-step-voltage = <4048>;
+ qcom,vref-functional-min-voltage = <294800>;
+ qcom,vref-retention-step-voltage = <4462>;
+ qcom,vref-retention-min-voltage = <324950>;
+ qcom,ldo-config-init = <0x31f0e471>;
+};
+
+&kryo0_retention_vreg {
+ regulator-min-microvolt = <467734>;
+ regulator-max-microvolt = <891624>;
+};
+
+&kryo1_vreg {
+ regulator-min-microvolt = <468864>;
+ regulator-max-microvolt = <808896>;
+ qcom,vref-functional-step-voltage = <4048>;
+ qcom,vref-functional-min-voltage = <294800>;
+ qcom,vref-retention-step-voltage = <4462>;
+ qcom,vref-retention-min-voltage = <324950>;
+ qcom,ldo-config-init = <0x31f0e471>;
+};
+
+&kryo1_retention_vreg {
+ regulator-min-microvolt = <467734>;
+ regulator-max-microvolt = <891624>;
+};
+
+/* GPU overrides */
+&msm_gpu {
+ /* Updated chip ID */
+ qcom,chipid = <0x05030001>;
+
+ qcom,initial-pwrlevel = <3>;
+ qcom,bus-width = <32>;
+
+ /* Quirks */
+ qcom,gpu-quirk-two-pass-use-wfi;
+ qcom,gpu-quirk-iommu-sync;
+
+ /* Power levels */
+ qcom,gpu-pwrlevels {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ compatible = "qcom,gpu-pwrlevels";
+
+ qcom,gpu-pwrlevel@0 {
+ reg = <0>;
+ qcom,gpu-freq = <604800000>;
+ qcom,bus-freq = <11>;
+ qcom,bus-min = <10>;
+ qcom,bus-max = <11>;
+ };
+
+ qcom,gpu-pwrlevel@1 {
+ reg = <1>;
+ qcom,gpu-freq = <500000000>;
+ qcom,bus-freq = <9>;
+ qcom,bus-min = <8>;
+ qcom,bus-max = <10>;
+ };
+
+ qcom,gpu-pwrlevel@2 {
+ reg = <2>;
+ qcom,gpu-freq = <300000000>;
+ qcom,bus-freq = <6>;
+ qcom,bus-min = <5>;
+ qcom,bus-max = <7>;
+ };
+
+ qcom,gpu-pwrlevel@3 {
+ reg = <3>;
+ qcom,gpu-freq = <210000000>;
+ qcom,bus-freq = <4>;
+ qcom,bus-min = <3>;
+ qcom,bus-max = <5>;
+ };
+
+ qcom,gpu-pwrlevel@4 {
+ reg = <4>;
+ qcom,gpu-freq = <125000000>;
+ qcom,bus-freq = <2>;
+ qcom,bus-min = <1>;
+ qcom,bus-max = <3>;
+ };
+ qcom,gpu-pwrlevel@5 {
+ reg = <5>;
+ qcom,gpu-freq = <27000000>;
+ qcom,bus-freq = <0>;
+ qcom,bus-min = <0>;
+ qcom,bus-max = <0>;
+ };
+ };
+};
+
+&mdss_mdp {
+ gdsc-venus-supply = <&gdsc_venus>;
+};
+
+&mdss_dsi {
+ gdsc-venus-supply = <&gdsc_venus>;
+ qcom,core-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,core-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "gdsc-venus";
+ qcom,supply-min-voltage = <0>;
+ qcom,supply-max-voltage = <0>;
+ qcom,supply-enable-load = <0>;
+ qcom,supply-disable-load = <0>;
+ };
+
+ qcom,core-supply-entry@1 {
+ reg = <1>;
+ qcom,supply-name = "gdsc";
+ qcom,supply-min-voltage = <0>;
+ qcom,supply-max-voltage = <0>;
+ qcom,supply-enable-load = <0>;
+ qcom,supply-disable-load = <0>;
+ };
+ };
+};
+
+&mdss_hdmi_tx {
+ hpd-gdsc-venus-supply = <&gdsc_venus>;
+ qcom,supply-names = "hpd-gdsc-venus", "hpd-gdsc";
+ qcom,min-voltage-level = <0 0>;
+ qcom,max-voltage-level = <0 0>;
+ qcom,enable-load = <0 0>;
+ qcom,disable-load = <0 0>;
+};
+
+&mdss_dsi0_pll {
+ gdsc-venus-supply = <&gdsc_venus>;
+ qcom,platform-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,platform-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "gdsc-venus";
+ 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 = "gdsc";
+ qcom,supply-min-voltage = <0>;
+ qcom,supply-max-voltage = <0>;
+ qcom,supply-enable-load = <0>;
+ qcom,supply-disable-load = <0>;
+ };
+ };
+};
+
+&mdss_dsi1_pll {
+ gdsc-venus-supply = <&gdsc_venus>;
+ qcom,platform-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,platform-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "gdsc-venus";
+ 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 = "gdsc";
+ qcom,supply-min-voltage = <0>;
+ qcom,supply-max-voltage = <0>;
+ qcom,supply-enable-load = <0>;
+ qcom,supply-disable-load = <0>;
+ };
+ };
+};
+
+&mdss_hdmi_pll {
+ gdsc-venus-supply = <&gdsc_venus>;
+ qcom,platform-supply-entries {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,platform-supply-entry@0 {
+ reg = <0>;
+ qcom,supply-name = "gdsc-venus";
+ 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 = "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@2 {
+ reg = <2>;
+ 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@3 {
+ reg = <3>;
+ qcom,supply-name = "vcca";
+ qcom,supply-min-voltage = <925000>;
+ qcom,supply-max-voltage = <925000>;
+ qcom,supply-enable-load = <10000>;
+ qcom,supply-disable-load = <100>;
+ };
+ };
+};
+
+&gdsc_venus {
+ proxy-supply = <&gdsc_venus>;
+ qcom,proxy-consumer-enable;
+};
+
+&soc {
+ tsens1: tsens@4ad000 {
+ compatible = "qcom,msm8996-tsens";
+ reg = <0x4ac000 0x2000>,
+ <0x75230 0x1000>;
+ reg-names = "tsens_physical", "tsens_eeprom_physical";
+ interrupts = <0 184 0>, <0 430 0>;
+ interrupt-names = "tsens-upper-lower", "tsens-critical";
+ qcom,client-id = <13 14 15 16 17 18 19 20>;
+ qcom,sensor-id = <1 6 7 0 2 3 4 5>;
+ qcom,sensors = <8>;
+ qcom,slope = <2901 2846 3200 3200 3200 3200 3200 3200>;
+ };
+
+ ipa_hw: qcom,ipa@680000 {
+ compatible = "qcom,ipa";
+ reg = <0x680000 0x4effc>,
+ <0x684000 0x26934>;
+ reg-names = "ipa-base", "bam-base";
+ interrupts = <0 333 0>,
+ <0 432 0>;
+ interrupt-names = "ipa-irq", "bam-irq";
+ qcom,ipa-hw-ver = <5>; /* IPA core version = IPAv2.5 */
+ qcom,ipa-hw-mode = <0>;
+ qcom,ee = <0>;
+ qcom,use-ipa-tethering-bridge;
+ qcom,ipa-bam-remote-mode;
+ qcom,modem-cfg-emb-pipe-flt;
+ clocks = <&clock_gcc clk_ipa_clk>;
+ clock-names = "core_clk";
+ qcom,use-dma-zone;
+ };
+
+ qcom,msm-thermal{
+ qcom,vdd-gfx-rstr{
+ qcom,levels = <4 5 5>; /* Nominal, Turbo, Turbo */
+ };
+ };
+
+ jtag_mm0: jtagmm@3840000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0x3840000 0x1000>;
+ reg-names = "etm-base";
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,coresight-jtagmm-cpu = <&CPU0>;
+ qcom,si-enable;
+ qcom,save-restore-disable;
+ };
+
+ jtag_mm1: jtagmm@3940000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0x3940000 0x1000>;
+ reg-names = "etm-base";
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,coresight-jtagmm-cpu = <&CPU1>;
+ qcom,si-enable;
+ qcom,save-restore-disable;
+ };
+
+ jtag_mm2: jtagmm@3a40000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0x3a40000 0x1000>;
+ reg-names = "etm-base";
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,coresight-jtagmm-cpu = <&CPU2>;
+ qcom,si-enable;
+ qcom,save-restore-disable;
+ };
+
+ jtag_mm3: jtagmm@3b40000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0x3b40000 0x1000>;
+ reg-names = "etm-base";
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,coresight-jtagmm-cpu = <&CPU3>;
+ qcom,si-enable;
+ qcom,save-restore-disable;
+ };
+};
+
+&tsens0 {
+ interrupts = <0 458 0>, <0 445 0>;
+ qcom,sensors = <13>;
+ qcom,slope = <2901 2846 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200>;
+};
+
+&mdss_hdmi_pll {
+ compatible = "qcom,mdss_hdmi_pll_8996_v2";
+};
+
+&mdss_hdmi_tx {
+ status = "ok";
+};
+
+&ssphy {
+ qcom,qmp-misc-config;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-dtp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-dtp.dts
new file mode 100644
index 000000000000..a9a80a49d7fe
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-dtp.dts
@@ -0,0 +1,22 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm8996-dtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM8996 V3 DTP";
+ compatible = "qcom,msm8996-dtp", "qcom,msm8996", "qcom,qrd";
+ qcom,board-id= <0x3000b 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-fluid.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-fluid.dts
new file mode 100644
index 000000000000..f9d89e9c8962
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-fluid.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm8996-fluid.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3 FLUID";
+ compatible = "qcom,msm8996-fluid", "qcom,msm8996", "qcom,fluid";
+ qcom,board-id = <3 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-liquid.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-liquid.dts
new file mode 100644
index 000000000000..0910ef7e92df
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-liquid.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm8996-liquid.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3 LiQUID";
+ compatible = "qcom,msm8996-liquid", "qcom,msm8996", "qcom,liquid";
+ qcom,board-id = <9 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-pm8004-agave-adp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-pm8004-agave-adp.dts
new file mode 100644
index 000000000000..dbdd77200d0a
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-pm8004-agave-adp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm8996-pm8994-pm8004.dtsi"
+#include "msm8996-agave-adp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3 + PM8004 ADP";
+ compatible = "qcom,msm8996-adp", "qcom,msm8996", "qcom,adp";
+ qcom,board-id = <0x00010019 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-pm8004-mmxf-adp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-pm8004-mmxf-adp.dts
new file mode 100644
index 000000000000..57ed8aa47fd3
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-pm8004-mmxf-adp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm8996-pm8994-pm8004.dtsi"
+#include "msm8996-mmxf-adp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3 + PM8004 ADP";
+ compatible = "qcom,msm8996-adp", "qcom,msm8996", "qcom,adp";
+ qcom,board-id = <0x01010019 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-cdp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-cdp.dts
new file mode 100644
index 000000000000..bcd162c3538a
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3 + PMI8994 CDP";
+ compatible = "qcom,msm8996-cdp", "qcom,msm8996", "qcom,cdp";
+ qcom,board-id = <1 0>, <0x01000001 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-mtp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-mtp.dts
new file mode 100644
index 000000000000..182bd247ec84
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-mtp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3 + PMI8994 MTP";
+ compatible = "qcom,msm8996-mtp", "qcom,msm8996", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pm8004-cdp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pm8004-cdp.dts
new file mode 100644
index 000000000000..294555bf0ea7
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pm8004-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3 + PMI8994 + PM8004 CDP";
+ compatible = "qcom,msm8996-cdp", "qcom,msm8996", "qcom,cdp";
+ qcom,board-id = <1 0>, <0x01000001 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pm8004-mtp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pm8004-mtp.dts
new file mode 100644
index 000000000000..eaa769336e40
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pm8004-mtp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3 + PMI8994 + PM8004 MTP";
+ compatible = "qcom,msm8996-mtp", "qcom,msm8996", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pm8004-pmk8001-cdp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pm8004-pmk8001-cdp.dts
new file mode 100644
index 000000000000..8b6091ac2b44
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pm8004-pmk8001-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004-pmk8001.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3 + PMI8994 + PM8004 + PMK8001 CDP";
+ compatible = "qcom,msm8996-cdp", "qcom,msm8996", "qcom,cdp";
+ qcom,board-id = <1 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pm8004-pmk8001-mtp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pm8004-pmk8001-mtp.dts
new file mode 100644
index 000000000000..8e2dbb9edbc5
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pm8004-pmk8001-mtp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004-pmk8001.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3 + PMI8994 + PM8004 + PMK8001 MTP";
+ compatible = "qcom,msm8996-mtp", "qcom,msm8996", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pmk8001-cdp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pmk8001-cdp.dts
new file mode 100644
index 000000000000..68b5a23401e8
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pmk8001-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm8996-pm8994-pmi8994-pmk8001.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3 + PMI8994 + PMK8001 CDP";
+ compatible = "qcom,msm8996-cdp", "qcom,msm8996", "qcom,cdp";
+ qcom,board-id = <1 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pmk8001-mtp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pmk8001-mtp.dts
new file mode 100644
index 000000000000..a607a11490bc
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8994-pmk8001-mtp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm8996-pm8994-pmi8994-pmk8001.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3 + PMI8994 + PMK8001 MTP";
+ compatible = "qcom,msm8996-mtp", "qcom,msm8996", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8996-cdp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8996-cdp.dts
new file mode 100644
index 000000000000..3188c8718997
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8996-cdp.dts
@@ -0,0 +1,24 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm-pmi8996.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3 + PMI8996 CDP";
+ compatible = "qcom,msm8996-cdp", "qcom,msm8996", "qcom,cdp";
+ qcom,board-id = <1 0>, <0x01000001 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8996-mtp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8996-mtp.dts
new file mode 100644
index 000000000000..04ac37d5f131
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8996-mtp.dts
@@ -0,0 +1,24 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm-pmi8996.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3 + PMI8996 MTP";
+ compatible = "qcom,msm8996-mtp", "qcom,msm8996", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8996-pmk8001-cdp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8996-pmk8001-cdp.dts
new file mode 100644
index 000000000000..f772261e6180
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8996-pmk8001-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm8996-pm8994-pmi8996-pmk8001.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3 + PM8994 + PMI8996 + PMK8001 CDP";
+ compatible = "qcom,msm8996-cdp", "qcom,msm8996", "qcom,cdp";
+ qcom,board-id = <1 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8996-pmk8001-mtp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8996-pmk8001-mtp.dts
new file mode 100644
index 000000000000..16d9af7b5322
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3-pmi8996-pmk8001-mtp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.dtsi"
+#include "msm8996-pm8994-pmi8996-pmk8001.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3 + PM8994 + PMI8996 + PMK8001 MTP";
+ compatible = "qcom,msm8996-mtp", "qcom,msm8996", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3.0-dtp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3.0-dtp.dts
new file mode 100644
index 000000000000..e93baa99c5bd
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3.0-dtp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.0.dtsi"
+#include "msm8996-dtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM8996 V3.0 DTP";
+ compatible = "qcom,msm8996-dtp", "qcom,msm8996", "qcom,qrd";
+ qcom,board-id= <0x2000b 0>;
+};
+
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3.0-fluid.dts b/arch/arm64/boot/dts/qcom/msm8996-v3.0-fluid.dts
new file mode 100644
index 000000000000..70662b5caea9
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3.0-fluid.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.0.dtsi"
+#include "msm8996-fluid.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3.0 FLUID";
+ compatible = "qcom,msm8996-fluid", "qcom,msm8996", "qcom,fluid";
+ qcom,board-id = <3 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3.0-liquid.dts b/arch/arm64/boot/dts/qcom/msm8996-v3.0-liquid.dts
new file mode 100644
index 000000000000..2ff6a3c81af6
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3.0-liquid.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.0.dtsi"
+#include "msm8996-liquid.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3.0 LiQUID";
+ compatible = "qcom,msm8996-liquid", "qcom,msm8996", "qcom,liquid";
+ qcom,board-id = <9 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-cdp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-cdp.dts
new file mode 100644
index 000000000000..8a28d3b73b49
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.0.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3.0 + PMI8994 CDP";
+ compatible = "qcom,msm8996-cdp", "qcom,msm8996", "qcom,cdp";
+ qcom,board-id = <1 0>, <0x01000001 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-mtp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-mtp.dts
new file mode 100644
index 000000000000..016bd01a0a10
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-mtp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.0.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3.0 + PMI8994 MTP";
+ compatible = "qcom,msm8996-mtp", "qcom,msm8996", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-pm8004-cdp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-pm8004-cdp.dts
new file mode 100644
index 000000000000..3c85372a5371
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-pm8004-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.0.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3.0 + PMI8994 + PM8004 CDP";
+ compatible = "qcom,msm8996-cdp", "qcom,msm8996", "qcom,cdp";
+ qcom,board-id = <1 0>, <0x01000001 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-pm8004-mtp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-pm8004-mtp.dts
new file mode 100644
index 000000000000..b0c5710dda16
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-pm8004-mtp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.0.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3.0 + PMI8994 + PM8004 MTP";
+ compatible = "qcom,msm8996-mtp", "qcom,msm8996", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-pm8004-pmk8001-cdp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-pm8004-pmk8001-cdp.dts
new file mode 100644
index 000000000000..e1800bf79875
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-pm8004-pmk8001-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.0.dtsi"
+#include "msm8996-pm8994-pmi8994-pm8004-pmk8001.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3.0 + PMI8994 + PM8004 + PMK8001 CDP";
+ compatible = "qcom,msm8996-cdp", "qcom,msm8996", "qcom,cdp";
+ qcom,board-id = <1 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-pmk8001-cdp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-pmk8001-cdp.dts
new file mode 100644
index 000000000000..028bab2a5c1a
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8994-pmk8001-cdp.dts
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.0.dtsi"
+#include "msm8996-pm8994-pmi8994-pmk8001.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3.0 + PMI8994 + PMK8001 CDP";
+ compatible = "qcom,msm8996-cdp", "qcom,msm8996", "qcom,cdp";
+ qcom,board-id = <1 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8996-cdp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8996-cdp.dts
new file mode 100644
index 000000000000..84debfaeed85
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8996-cdp.dts
@@ -0,0 +1,24 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.0.dtsi"
+#include "msm-pmi8996.dtsi"
+#include "msm8996-cdp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3.0 + PMI8996 CDP";
+ compatible = "qcom,msm8996-cdp", "qcom,msm8996", "qcom,cdp";
+ qcom,board-id = <1 0>, <0x01000001 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8996-mtp.dts b/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8996-mtp.dts
new file mode 100644
index 000000000000..b07aa6163871
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3.0-pmi8996-mtp.dts
@@ -0,0 +1,24 @@
+/* Copyright (c) 2015, 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 "msm8996-v3.0.dtsi"
+#include "msm-pmi8996.dtsi"
+#include "msm8996-mtp.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3.0 + PMI8996 MTP";
+ compatible = "qcom,msm8996-mtp", "qcom,msm8996", "qcom,mtp";
+ qcom,board-id = <8 0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3.0.dtsi b/arch/arm64/boot/dts/qcom/msm8996-v3.0.dtsi
new file mode 100644
index 000000000000..2268d600287b
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3.0.dtsi
@@ -0,0 +1,131 @@
+/* Copyright (c) 2014-2015, 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 includes msm8996-v3.dtsi and therefore should only contain
+ * overrides on top of that which are specific to 8996v3.0.
+ */
+#include "msm8996-v3.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3.0";
+ qcom,msm-id = <246 0x30000>;
+};
+
+&gfx_cpr {
+ system-supply = <&pm8994_s1_corner>;
+ qcom,cpr-enable;
+
+ /delete-property/ qcom,cpr-aging-ref-voltage;
+};
+
+&gfx_vreg {
+ regulator-min-microvolt = <1>;
+ regulator-max-microvolt = <7>;
+
+ qcom,cpr-fuse-corners = <4>;
+ qcom,cpr-fuse-combos = <8>;
+ qcom,cpr-corners = <7>;
+
+ qcom,cpr-corner-fmax-map = <2 3 5 7>;
+
+ qcom,cpr-voltage-ceiling =
+ <400000 670000 745000 825000 905000
+ 960000 1015000>;
+ qcom,cpr-voltage-floor =
+ <400000 520000 520000 520000 520000
+ 520000 520000>;
+
+ qcom,system-voltage = <2 2 2 2 2 4 4>;
+ qcom,mem-acc-voltage = <1 1 1 2 2 2 2>;
+
+ qcom,corner-frequencies =
+ <0 214000000 315000000 401800000
+ 510000000 560000000 624000000>;
+
+ qcom,cpr-target-quotients =
+ < 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0>,
+ < 0 0 0 0 0 0 287 273
+ 425 426 443 453 0 0 0 0>,
+ < 0 0 0 0 0 0 414 392
+ 584 576 608 612 0 0 0 0>,
+ < 0 0 0 0 0 0 459 431
+ 684 644 692 679 0 0 0 0>,
+ < 0 0 0 0 0 0 577 543
+ 798 768 823 810 0 0 0 0>,
+ < 0 0 0 0 0 0 669 629
+ 886 864 924 911 0 0 0 0>,
+ < 0 0 0 0 0 0 771 725
+ 984 970 1036 1024 0 0 0 0>;
+
+ qcom,cpr-ro-scaling-factor =
+ < 0 0 0 0 0 0 2035 1917
+ 1959 2131 2246 2253 0 0 0 0>,
+ < 0 0 0 0 0 0 2035 1917
+ 1959 2131 2246 2253 0 0 0 0>,
+ < 0 0 0 0 0 0 2035 1917
+ 1959 2131 2246 2253 0 0 0 0>,
+ < 0 0 0 0 0 0 2035 1917
+ 1959 2131 2246 2253 0 0 0 0>,
+ < 0 0 0 0 0 0 2035 1917
+ 1959 2131 2246 2253 0 0 0 0>,
+ < 0 0 0 0 0 0 2035 1917
+ 1959 2131 2246 2253 0 0 0 0>,
+ < 0 0 0 0 0 0 2035 1917
+ 1959 2131 2246 2253 0 0 0 0>;
+
+ qcom,cpr-open-loop-voltage-fuse-adjustment =
+ < 0 0 30000 (-10000)>,
+ <(-30000) (-30000) 0 (-10000)>,
+ <(-30000) (-30000) 0 (-10000)>,
+ < 0 0 0 0>,
+ < 0 0 0 0>,
+ < 0 0 0 0>,
+ < 0 0 0 0>,
+ < 0 0 0 0>;
+ qcom,cpr-closed-loop-voltage-adjustment =
+ < 0 (-5000) 20000 20000 30000 10000 (-5000)>,
+ < 0 (-5000) 20000 20000 30000 10000 (-5000)>,
+ < 0 60000 40000 40000 45000 25000 35000>,
+ < 0 30000 10000 10000 45000 25000 25000>,
+ < 0 30000 10000 10000 45000 25000 25000>,
+ < 0 30000 10000 10000 45000 25000 25000>,
+ < 0 30000 10000 10000 45000 25000 25000>,
+ < 0 30000 10000 10000 45000 25000 25000>;
+ qcom,cpr-floor-to-ceiling-max-range =
+ <0 70000 75000 80000 90000 95000 100000>;
+
+ /delete-property/ qcom,cpr-fused-closed-loop-voltage-adjustment-map;
+
+ qcom,allow-voltage-interpolation;
+ qcom,cpr-scaled-open-loop-voltage-as-ceiling;
+
+ /delete-property/ qcom,cpr-aging-max-voltage-adjustment;
+ /delete-property/ qcom,cpr-aging-ref-corner;
+ /delete-property/ qcom,cpr-aging-ro-scaling-factor;
+ /delete-property/ qcom,allow-aging-voltage-adjustment;
+};
+
+&clock_gpu {
+ compatible = "qcom,gpucc-8996-v3.0";
+ qcom,gfx3d_clk_src_v2-opp-handle = <&msm_gpu>;
+ qcom,gfxfreq-speedbin0 =
+ < 0 0 0 >,
+ < 133000000 3 4 >,
+ < 214000000 3 4 >,
+ < 315000000 3 4 >,
+ < 401800000 4 5 >,
+ < 510000000 5 5 >,
+ < 560000000 6 7 >,
+ < 624000000 7 7 >;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3.dtsi b/arch/arm64/boot/dts/qcom/msm8996-v3.dtsi
new file mode 100644
index 000000000000..cd4daaf5c60d
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-v3.dtsi
@@ -0,0 +1,665 @@
+/* Copyright (c) 2014-2015, 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.
+ */
+
+/*
+ * As a general rule, only version-specific property overrides should be placed
+ * inside this file. Common device definitions should be placed inside the
+ * msm8996.dtsi file.
+ */
+
+#include "msm8996.dtsi"
+#include "msm8996-coresight-v3.dtsi"
+#include "msm-arm-smmu-impl-defs-8996-v3.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996 v3";
+ qcom,msm-id = <246 0x30001>;
+};
+
+&clock_gcc {
+ compatible = "qcom,gcc-8996-v3";
+};
+
+&clock_debug {
+ compatible = "qcom,cc-debug-8996-v3";
+};
+
+&clock_mmss {
+ compatible = "qcom,mmsscc-8996-v3";
+};
+
+&clock_gpu {
+ compatible = "qcom,gpucc-8996-v3";
+ qcom,gfx3d_clk_src_v2-opp-handle = <&msm_gpu>;
+ qcom,gfxfreq-speedbin0 =
+ < 0 0 0 >,
+ < 133000000 2 4 >,
+ < 214000000 3 4 >,
+ < 315000000 4 4 >,
+ < 401800000 5 5 >,
+ < 510000000 6 5 >,
+ < 560000000 7 7 >,
+ < 624000000 8 7 >;
+ qcom,gfxfreq-mx-speedbin0 =
+ < 0 0 >,
+ < 133000000 4 >,
+ < 214000000 4 >,
+ < 315000000 4 >,
+ < 401800000 5 >,
+ < 510000000 5 >,
+ < 560000000 7 >,
+ < 624000000 7 >;
+
+ qcom,gfxfreq-speedbin1 =
+ < 0 0 0 >,
+ < 133000000 2 4 >,
+ < 214000000 3 4 >,
+ < 315000000 4 4 >,
+ < 401800000 5 5 >,
+ < 510000000 6 5 >;
+ qcom,gfxfreq-mx-speedbin1 =
+ < 0 0 >,
+ < 133000000 4 >,
+ < 214000000 4 >,
+ < 315000000 4 >,
+ < 401800000 5 >,
+ < 510000000 5 >;
+};
+
+&gdsc_gpu_gx {
+ clock-names = "core_clk", "core_root_clk";
+ clocks = <&clock_gpu clk_gpu_gx_gfx3d_clk>,
+ <&clock_gpu clk_gfx3d_clk_src_v2>;
+};
+
+&pcie0 {
+ qcom,pcie-phy-ver = <3>;
+};
+
+&pcie1 {
+ qcom,pcie-phy-ver = <3>;
+};
+
+&pcie2 {
+ qcom,pcie-phy-ver = <3>;
+};
+
+/* GPU overrides */
+&msm_gpu {
+ /* Updated chip ID */
+ qcom,chipid = <0x05030002>;
+
+ qcom,initial-pwrlevel = <5>;
+ qcom,bus-width = <32>;
+
+ /* Quirks */
+ qcom,gpu-quirk-two-pass-use-wfi;
+
+ qcom,gpu-pwrlevel-bins {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ compatible="qcom,gpu-pwrlevel-bins";
+
+ qcom,gpu-pwrlevels-0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,speed-bin = <0>;
+
+ qcom,gpu-pwrlevel@0 {
+ reg = <0>;
+ qcom,gpu-freq = <624000000>;
+ qcom,bus-freq = <12>;
+ qcom,bus-min = <11>;
+ qcom,bus-max = <12>;
+ };
+
+ qcom,gpu-pwrlevel@1 {
+ reg = <1>;
+ qcom,gpu-freq = <560000000>;
+ qcom,bus-freq = <11>;
+ qcom,bus-min = <9>;
+ qcom,bus-max = <12>;
+ };
+
+ qcom,gpu-pwrlevel@2 {
+ reg = <2>;
+ qcom,gpu-freq = <510000000>;
+ qcom,bus-freq = <9>;
+ qcom,bus-min = <8>;
+ qcom,bus-max = <11>;
+ };
+
+ qcom,gpu-pwrlevel@3 {
+ reg = <3>;
+ qcom,gpu-freq = <401800000>;
+ qcom,bus-freq = <8>;
+ qcom,bus-min = <7>;
+ qcom,bus-max = <9>;
+ };
+
+ qcom,gpu-pwrlevel@4 {
+ reg = <4>;
+ qcom,gpu-freq = <315000000>;
+ qcom,bus-freq = <6>;
+ qcom,bus-min = <5>;
+ qcom,bus-max = <7>;
+ };
+
+ qcom,gpu-pwrlevel@5 {
+ reg = <5>;
+ qcom,gpu-freq = <214000000>;
+ qcom,bus-freq = <4>;
+ qcom,bus-min = <3>;
+ qcom,bus-max = <5>;
+ };
+
+ qcom,gpu-pwrlevel@6 {
+ reg = <6>;
+ qcom,gpu-freq = <133000000>;
+ qcom,bus-freq = <3>;
+ qcom,bus-min = <2>;
+ qcom,bus-max = <4>;
+ };
+
+ qcom,gpu-pwrlevel@7 {
+ reg = <7>;
+ qcom,gpu-freq = <27000000>;
+ qcom,bus-freq = <0>;
+ qcom,bus-min = <0>;
+ qcom,bus-max = <0>;
+ };
+ };
+
+ qcom,gpu-pwrlevels-1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,speed-bin = <1>;
+
+ qcom,gpu-pwrlevel@0 {
+ reg = <0>;
+ qcom,gpu-freq = <510000000>;
+ qcom,bus-freq = <9>;
+ qcom,bus-min = <8>;
+ qcom,bus-max = <10>;
+ };
+
+ qcom,gpu-pwrlevel@1 {
+ reg = <1>;
+ qcom,gpu-freq = <401800000>;
+ qcom,bus-freq = <8>;
+ qcom,bus-min = <7>;
+ qcom,bus-max = <9>;
+ };
+
+ qcom,gpu-pwrlevel@2 {
+ reg = <2>;
+ qcom,gpu-freq = <315000000>;
+ qcom,bus-freq = <6>;
+ qcom,bus-min = <5>;
+ qcom,bus-max = <7>;
+ };
+
+ qcom,gpu-pwrlevel@3 {
+ reg = <3>;
+ qcom,gpu-freq = <214000000>;
+ qcom,bus-freq = <4>;
+ qcom,bus-min = <3>;
+ qcom,bus-max = <5>;
+ };
+
+ qcom,gpu-pwrlevel@4 {
+ reg = <4>;
+ qcom,gpu-freq = <133000000>;
+ qcom,bus-freq = <3>;
+ qcom,bus-min = <2>;
+ qcom,bus-max = <4>;
+ };
+
+ qcom,gpu-pwrlevel@5 {
+ reg = <5>;
+ qcom,gpu-freq = <27000000>;
+ qcom,bus-freq = <0>;
+ qcom,bus-min = <0>;
+ qcom,bus-max = <0>;
+ };
+ };
+
+ };
+};
+
+&soc {
+ l2-pmu {
+ compatible = "qcom,qcom-l2cache-pmu";
+ interrupts = <0 0 1>, <0 8 1>;
+ qcom,cpu-affinity = <0>, <2>;
+ };
+};
+
+&soc {
+ jtag_mm0: jtagmm@3840000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0x3840000 0x1000>;
+ reg-names = "etm-base";
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,coresight-jtagmm-cpu = <&CPU0>;
+ };
+
+ jtag_mm1: jtagmm@3940000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0x3940000 0x1000>;
+ reg-names = "etm-base";
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,coresight-jtagmm-cpu = <&CPU1>;
+ };
+
+ jtag_mm2: jtagmm@3a40000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0x3a40000 0x1000>;
+ reg-names = "etm-base";
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,coresight-jtagmm-cpu = <&CPU2>;
+ };
+
+ jtag_mm3: jtagmm@3b40000 {
+ compatible = "qcom,jtagv8-mm";
+ reg = <0x3b40000 0x1000>;
+ reg-names = "etm-base";
+
+ clocks = <&clock_gcc clk_qdss_clk>,
+ <&clock_gcc clk_qdss_a_clk>;
+ clock-names = "core_clk", "core_a_clk";
+
+ qcom,coresight-jtagmm-cpu = <&CPU3>;
+ };
+};
+
+&mdss_hdmi_pll {
+ compatible = "qcom,mdss_hdmi_pll_8996_v3";
+};
+
+&msm_vidc {
+ /* Table lists <video_core_freq imem_ab> pairs.
+ * imem_ab value determines the imem clock frequency for the
+ * corresponding video core frequency.
+ */
+ qcom,imem-ab-tbl =
+ <75000000 1500000>, /* imem @ svs2 freq 75 Mhz */
+ <150000000 1500000>, /* imem @ svs2 freq 75 Mhz */
+ <346666667 2500000>, /* imem @ svs freq 171 Mhz */
+ <520000000 6000000>; /* imem @ noimal freq 320 Mhz */
+
+ qcom,load-freq-tbl =
+ /* Encoders */
+ <972000 520000000 0x55555555>, /* 4k UHD @ 30 */
+ <489600 346666667 0x55555555>, /* 1080p @ 60 */
+ <244800 150000000 0x55555555>, /* 1080p @ 30 */
+ <108000 75000000 0x55555555>, /* 720p @ 30 */
+
+ /* Decoders */
+ <1944000 520000000 0xffffffff>, /* 4k UHD @ 60 */
+ < 972000 346666667 0xffffffff>, /* 4k UHD @ 30 */
+ < 489600 150000000 0xffffffff>, /* 1080p @ 60 */
+ < 244800 75000000 0xffffffff>; /* 1080p @ 30 */
+ qcom,pm-qos-latency-us = <501>;
+};
+
+&gdsc_venus_core0 {
+ qcom,support-hw-trigger;
+};
+
+&gdsc_venus_core1 {
+ qcom,support-hw-trigger;
+};
+
+&soc {
+ ipa_hw: qcom,ipa@680000 {
+ compatible = "qcom,ipa";
+ reg = <0x680000 0x4effc>,
+ <0x684000 0x26934>;
+ reg-names = "ipa-base", "bam-base";
+ interrupts = <0 333 0>,
+ <0 432 0>;
+ interrupt-names = "ipa-irq", "bam-irq";
+ qcom,ipa-hw-ver = <5>; /* IPA core version = IPAv2.5 */
+ qcom,ipa-hw-mode = <0>;
+ qcom,ee = <0>;
+ qcom,use-ipa-tethering-bridge;
+ qcom,ipa-bam-remote-mode;
+ qcom,modem-cfg-emb-pipe-flt;
+ clocks = <&clock_gcc clk_ipa_clk>;
+ clock-names = "core_clk";
+ qcom,use-dma-zone;
+ qcom,msm-bus,name = "ipa";
+ qcom,msm-bus,num-cases = <3>;
+ qcom,msm-bus,num-paths = <2>;
+ qcom,msm-bus,vectors-KBps =
+ <90 512 0 0>, <90 585 0 0>, /* No vote */
+ <90 512 80000 640000>, <90 585 80000 640000>, /* SVS */
+ <90 512 206000 960000>, <90 585 206000 960000>; /* PERF */
+ qcom,bus-vector-names = "MIN", "SVS", "PERF";
+ };
+
+ qcom,m4m-hwmon@6530000 {
+ compatible = "qcom,m4m-hwmon";
+ reg = <0x6530000 0x160>;
+ interrupts = <0 19 4>;
+ qcom,counter-event-sel = <4 0x8000>,
+ <5 0x4000>;
+ qcom,target-dev = <&m4m_cache>;
+ };
+
+};
+
+&clock_cpu {
+ compatible = "qcom,cpu-clock-8996-v3";
+ /* Nominal FMAXes only until characterization completes. */
+ qcom,pwrcl-speedbin0-v0 =
+ < 0 0 >,
+ < 307200000 1 >,
+ < 422400000 2 >,
+ < 480000000 3 >,
+ < 556800000 4 >,
+ < 652800000 5 >,
+ < 729600000 6 >,
+ < 844800000 7 >,
+ < 960000000 8 >,
+ < 1036800000 9 >,
+ < 1113600000 10 >,
+ < 1190400000 11 >,
+ < 1228800000 12 >,
+ < 1324800000 13 >,
+ < 1401600000 14 >,
+ < 1478400000 15 >,
+ < 1593600000 16 >;
+ qcom,pwrcl-speedbin1-v0 =
+ < 0 0 >,
+ < 307200000 1 >,
+ < 422400000 2 >,
+ < 480000000 3 >,
+ < 556800000 4 >,
+ < 652800000 5 >,
+ < 729600000 6 >,
+ < 844800000 7 >,
+ < 960000000 8 >,
+ < 1036800000 9 >,
+ < 1113600000 10 >,
+ < 1190400000 11 >,
+ < 1228800000 12 >,
+ < 1363200000 13 >;
+ qcom,perfcl-speedbin0-v0 =
+ < 0 0 >,
+ < 307200000 1 >,
+ < 403200000 2 >,
+ < 480000000 3 >,
+ < 556800000 4 >,
+ < 652800000 5 >,
+ < 729600000 6 >,
+ < 806400000 7 >,
+ < 883200000 8 >,
+ < 940800000 9 >,
+ < 1036800000 10 >,
+ < 1113600000 11 >,
+ < 1190400000 12 >,
+ < 1248000000 13 >,
+ < 1324800000 14 >,
+ < 1401600000 15 >,
+ < 1478400000 16 >,
+ < 1555200000 17 >,
+ < 1632000000 18 >,
+ < 1708800000 19 >,
+ < 1785600000 20 >,
+ < 1824000000 21 >,
+ < 1920000000 22 >,
+ < 1996800000 23 >,
+ < 2073600000 24 >,
+ < 2150400000 25 >;
+ qcom,perfcl-speedbin1-v0 =
+ < 0 0 >,
+ < 307200000 1 >,
+ < 403200000 2 >,
+ < 480000000 3 >,
+ < 556800000 4 >,
+ < 652800000 5 >,
+ < 729600000 6 >,
+ < 806400000 7 >,
+ < 883200000 8 >,
+ < 940800000 9 >,
+ < 1036800000 10 >,
+ < 1113600000 11 >,
+ < 1190400000 12 >,
+ < 1248000000 13 >,
+ < 1324800000 14 >,
+ < 1401600000 15 >,
+ < 1478400000 16 >,
+ < 1555200000 17 >,
+ < 1632000000 18 >,
+ < 1708800000 19 >,
+ < 1785600000 20 >,
+ < 1804800000 21 >;
+ qcom,cbf-speedbin0-v0 =
+ < 0 0 >,
+ < 307200000 1 >,
+ < 384000000 2 >,
+ < 460800000 3 >,
+ < 537600000 4 >,
+ < 595200000 5 >,
+ < 672000000 6 >,
+ < 748800000 7 >,
+ < 825600000 8 >,
+ < 902400000 9 >,
+ < 979200000 10 >,
+ < 1056000000 11 >,
+ < 1132800000 12 >,
+ < 1190400000 13 >,
+ < 1228800000 14 >,
+ < 1305600000 15 >,
+ < 1382400000 16 >,
+ < 1459200000 17 >,
+ < 1536000000 18 >,
+ < 1593600000 19 >;
+ qcom,cbf-speedbin1-v0 =
+ < 0 0 >,
+ < 307200000 1 >,
+ < 384000000 2 >,
+ < 460800000 3 >,
+ < 537600000 4 >,
+ < 595200000 5 >,
+ < 672000000 6 >,
+ < 748800000 7 >,
+ < 825600000 8 >,
+ < 902400000 9 >,
+ < 979200000 10 >,
+ < 1056000000 11 >,
+ < 1132800000 12 >,
+ < 1190400000 13 >,
+ < 1228800000 14 >,
+ < 1305600000 15 >;
+};
+
+&msm_cpufreq {
+ qcom,cpufreq-table-0 =
+ < 307200 >,
+ < 422400 >,
+ < 480000 >,
+ < 556800 >,
+ < 652800 >,
+ < 729600 >,
+ < 844800 >,
+ < 960000 >,
+ < 1036800 >,
+ < 1113600 >,
+ < 1190400 >,
+ < 1228800 >,
+ < 1324800 >,
+ < 1401600 >,
+ < 1478400 >,
+ < 1593600 >;
+ qcom,cpufreq-table-2 =
+ < 307200 >,
+ < 403200 >,
+ < 480000 >,
+ < 556800 >,
+ < 652800 >,
+ < 729600 >,
+ < 806400 >,
+ < 883200 >,
+ < 940800 >,
+ < 1036800 >,
+ < 1113600 >,
+ < 1190400 >,
+ < 1248000 >,
+ < 1324800 >,
+ < 1401600 >,
+ < 1478400 >,
+ < 1555200 >,
+ < 1632000 >,
+ < 1708800 >,
+ < 1785600 >,
+ < 1824000 >,
+ < 1920000 >,
+ < 1996800 >,
+ < 2073600 >,
+ < 2150400 >;
+};
+
+&m4m_cache {
+ freq-tbl-khz =
+ < 307200 >,
+ < 384000 >,
+ < 460800 >,
+ < 537600 >,
+ < 595200 >,
+ < 672000 >,
+ < 748800 >,
+ < 825600 >,
+ < 902400 >,
+ < 979200 >,
+ < 1056000 >,
+ < 1132800 >,
+ < 1190400 >,
+ < 1228800 >,
+ < 1305600 >,
+ < 1382400 >,
+ < 1459200 >,
+ < 1536000 >,
+ < 1593600 >;
+};
+
+&devfreq_cpufreq {
+ m4m-cpufreq {
+ cpu-to-dev-map-0 =
+ < 307200 307200 >,
+ < 422400 307200 >,
+ < 480000 307200 >,
+ < 556800 307200 >,
+ < 652800 384000 >,
+ < 729600 460800 >,
+ < 844800 537600 >,
+ < 960000 672000 >,
+ < 1036800 672000 >,
+ < 1113600 825600 >,
+ < 1190400 825600 >,
+ < 1228800 902400 >,
+ < 1324800 1056000 >,
+ < 1401600 1132800 >,
+ < 1478400 1190400 >,
+ < 1593600 1382400 >;
+ cpu-to-dev-map-2 =
+ < 480000 307200 >,
+ < 556800 307200 >,
+ < 652800 307200 >,
+ < 729600 307200 >,
+ < 806400 384000 >,
+ < 883200 460800 >,
+ < 940800 537600 >,
+ < 1036800 595200 >,
+ < 1113600 672000 >,
+ < 1190400 672000 >,
+ < 1248000 748800 >,
+ < 1324800 825600 >,
+ < 1401600 902400 >,
+ < 1478400 979200 >,
+ < 1555200 1056000 >,
+ < 1632000 1190400 >,
+ < 1708800 1228800 >,
+ < 1785600 1305600 >,
+ < 1824000 1382400 >,
+ < 1920000 1459200 >,
+ < 1996800 1593600 >,
+ < 2073600 1593600 >,
+ < 2150400 1593600 >;
+ };
+
+ mincpubw-cpufreq {
+ cpu-to-dev-map-0 =
+ < 1593600 1525 >;
+ cpu-to-dev-map-2 =
+ < 2073600 1525 >,
+ < 2150400 5195 >;
+ };
+};
+
+&soc {
+ tsens1: tsens@4ad000 {
+ compatible = "qcom,msm8996-tsens";
+ reg = <0x4ac000 0x2000>,
+ <0x75230 0x1000>;
+ reg-names = "tsens_physical", "tsens_eeprom_physical";
+ interrupts = <0 184 0>, <0 430 0>;
+ interrupt-names = "tsens-upper-lower", "tsens-critical";
+ qcom,client-id = <13 14 15 16 17 18 19 20>;
+ qcom,sensor-id = <1 6 7 0 2 3 4 5>;
+ qcom,sensors = <8>;
+ qcom,slope = <2901 2846 3200 3200 3200 3200 3200 3200>;
+ };
+ lmh: qcom,lmh {
+ vdd-apss-supply = <&pm8994_s11>;
+ qcom,lmh-odcm-disable-threshold-mA = <850>;
+ };
+ qcom,msm-thermal {
+ msm_thermal_freq: qcom,vdd-apps-rstr{
+ qcom,max-freq-level = <1190400>;
+ qcom,levels = <1036800 1555200 1555200>;
+ };
+ qcom,vdd-gfx-rstr{
+ qcom,levels = <6 8 8>; /* Nominal, Turbo, Turbo */
+ };
+ };
+
+};
+
+&tsens0 {
+ interrupts = <0 458 0>, <0 445 0>;
+ qcom,sensors = <13>;
+ qcom,slope = <2901 2846 3200 3200 3200 3200 3200 3200 3200
+ 3200 3200 3200 3200>;
+};
+
+/* cpu pmu override */
+&cpu_pmu {
+ compatible = "qcom,kryo-pmuv3";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-vidc.dtsi b/arch/arm64/boot/dts/qcom/msm8996-vidc.dtsi
new file mode 100644
index 000000000000..db1dec33fe33
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-vidc.dtsi
@@ -0,0 +1,237 @@
+/* Copyright (c) 2014-2015, 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/interrupt-controller/arm-gic.h>
+
+&soc {
+ msm_vidc: qcom,vidc@c00000 {
+ compatible = "qcom,msm-vidc";
+ status = "ok";
+ reg = <0xC00000 0xff000>;
+ interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
+ qcom,hfi = "venus";
+ qcom,hfi-version = "3xx";
+ qcom,reg-presets = <0x80010 0xffffffff>,
+ <0x80018 0x00001556>,
+ <0x8001C 0x00001556>;
+ qcom,qdss-presets = <0x08180000 0x2000>,
+ <0x08182000 0x2000>,
+ <0x08184000 0x2000>,
+ <0x08186000 0x2000>,
+ <0x08188000 0x2000>,
+ <0x0818A000 0x2000>,
+ <0x0818C000 0x2000>,
+ <0x0818E000 0x2000>;
+ qcom,max-hw-load = <2563200>; /* Full 4k @ 60 + 1080p @ 60 */
+ qcom,firmware-name = "venus";
+ qcom,imem-size = <524288>; /* 512 kB */
+ qcom,never-unload-fw;
+ qcom,sw-power-collapse;
+ qcom,load-freq-tbl =
+ /* Encoders */
+ <972000 490000000 0x55555555>, /* 4k UHD @ 30 */
+ <489600 320000000 0x55555555>, /* 1080p @ 60 */
+ <244800 150000000 0x55555555>, /* 1080p @ 30 */
+ <108000 75000000 0x55555555>, /* 720p @ 30 */
+
+ /* Decoders */
+ <1944000 490000000 0xffffffff>, /* 4k UHD @ 60 */
+ < 972000 320000000 0xffffffff>, /* 4k UHD @ 30 */
+ < 489600 150000000 0xffffffff>, /* 1080p @ 60 */
+ < 244800 75000000 0xffffffff>; /* 1080p @ 30 */
+
+ qcom,dcvs-tbl =
+ <972000 972000 19944000 0x3f00000c>, /* UHD 30 */
+ <489600 489600 972000 0x3f00000c>, /* 1080p 60 */
+ <244800 244800 489600 0x3f00000c>, /* 1080p 30 */
+ <829440 489600 972000 0x04000004>; /* DCI 24 */
+
+ qcom,dcvs-limit =
+ <32400 30>, /* Encoder UHD */
+ <14400 30>; /* Decoder WQHD */
+
+ /* Table lists <video_core_freq imem_ab> pairs.
+ * imem_ab value determines the imem clock frequency for the
+ * corresponding video core frequency.
+ */
+ qcom,imem-ab-tbl =
+ <75000000 1500000>, /* imem @ svs2 freq 75 Mhz */
+ <150000000 1500000>, /* imem @ svs2 freq 75 Mhz */
+ <320000000 2500000>, /* imem @ svs freq 171 Mhz */
+ <490000000 6000000>; /* imem @ noimal freq 320 Mhz */
+
+ /* Regulators */
+ /* Note: don't change the order of the regulators below as they
+ * correspond to the order in which the driver enables them.
+ */
+ mmagic-venus-supply = <&gdsc_mmagic_video>;
+ venus-supply = <&gdsc_venus>;
+ venus-core0-supply = <&gdsc_venus_core0>;
+ venus-core1-supply = <&gdsc_venus_core1>;
+
+ /* Clocks */
+ clock-names = "smmu_ahb_clk", "smmu_axi_clk",
+ "mmagic_video_axi", "core_clk", "iface_clk",
+ "bus_clk", "maxi_clk", "core0_clk", "core1_clk";
+ clocks = <&clock_mmss clk_smmu_video_ahb_clk>,
+ <&clock_mmss clk_smmu_video_axi_clk>,
+ <&clock_mmss clk_mmagic_video_axi_clk>,
+ <&clock_mmss clk_video_core_clk>,
+ <&clock_mmss clk_video_ahb_clk>,
+ <&clock_mmss clk_video_axi_clk>,
+ <&clock_mmss clk_video_maxi_clk>,
+ <&clock_mmss clk_video_subcore0_clk>,
+ <&clock_mmss clk_video_subcore1_clk>;
+ qcom,clock-configs = <0x0 0x0 0x0 0x1 0x0 0x0 0x0 0x1 0x1>;
+
+ /* Buses */
+ bus_cnoc {
+ compatible = "qcom,msm-vidc,bus";
+ label = "cnoc";
+ qcom,bus-master = <MSM_BUS_MASTER_AMPSS_M0>;
+ qcom,bus-slave = <MSM_BUS_SLAVE_VENUS_CFG>;
+ qcom,bus-governor = "performance";
+ qcom,bus-range-kbps = <1 1>;
+ };
+
+ venus_bus_ddr {
+ compatible = "qcom,msm-vidc,bus";
+ label = "venus-ddr";
+ qcom,bus-master = <MSM_BUS_MASTER_VIDEO_P0>;
+ qcom,bus-slave = <MSM_BUS_SLAVE_EBI_CH0>;
+ qcom,bus-governor = "msm-vidc-ddr";
+ qcom,bus-range-kbps = <1000 3388000>;
+ };
+
+ venus_bus_vmem {
+ compatible = "qcom,msm-vidc,bus";
+ label = "venus-vmem";
+ qcom,bus-master = <MSM_BUS_MASTER_VIDEO_P0_OCMEM>;
+ qcom,bus-slave = <MSM_BUS_SLAVE_VMEM>;
+ qcom,bus-governor = "msm-vidc-vmem+";
+ qcom,bus-range-kbps = <1000 6776000>;
+ };
+
+ arm9_bus_ddr {
+ compatible = "qcom,msm-vidc,bus";
+ label = "venus-arm9-ddr";
+ qcom,bus-master = <MSM_BUS_MASTER_VIDEO_P0>;
+ qcom,bus-slave = <MSM_BUS_SLAVE_EBI_CH0>;
+ qcom,bus-governor = "performance";
+ qcom,bus-range-kbps = <1 1>;
+ };
+
+ /* MMUs */
+ non_secure_cb {
+ compatible = "qcom,msm-vidc,context-bank";
+ label = "venus_ns";
+ iommus = <&venus_smmu 0x00>,
+ <&venus_smmu 0x01>,
+ <&venus_smmu 0x0a>,
+ <&venus_smmu 0x07>,
+ <&venus_smmu 0x0e>,
+ <&venus_smmu 0x0f>,
+ <&venus_smmu 0x08>,
+ <&venus_smmu 0x09>,
+ <&venus_smmu 0x0b>,
+ <&venus_smmu 0x0c>,
+ <&venus_smmu 0x0d>,
+ <&venus_smmu 0x10>,
+ <&venus_smmu 0x11>,
+ <&venus_smmu 0x21>,
+ <&venus_smmu 0x28>,
+ <&venus_smmu 0x29>,
+ <&venus_smmu 0x2b>,
+ <&venus_smmu 0x2c>,
+ <&venus_smmu 0x2d>,
+ <&venus_smmu 0x31>;
+ buffer-types = <0xfff>;
+ virtual-addr-pool = <0x70800000 0x8F800000>;
+ };
+
+ firmware_cb {
+ compatible = "qcom,msm-vidc,context-bank";
+ qcom,fw-context-bank;
+ iommus = <&venus_smmu 0x180>,
+ <&venus_smmu 0x186>;
+ };
+
+ secure_bitstream_cb {
+ compatible = "qcom,msm-vidc,context-bank";
+ label = "venus_sec_bitstream";
+ iommus = <&venus_smmu 0x100>,
+ <&venus_smmu 0x102>,
+ <&venus_smmu 0x109>,
+ <&venus_smmu 0x10a>,
+ <&venus_smmu 0x10b>,
+ <&venus_smmu 0x10e>,
+ <&venus_smmu 0x126>,
+ <&venus_smmu 0x129>,
+ <&venus_smmu 0x12b>;
+ buffer-types = <0x241>;
+ virtual-addr-pool = <0x4b000000 0x25800000>;
+ qcom,secure-context-bank;
+ };
+
+ venus_secure_pixel_cb: secure_pixel_cb {
+ compatible = "qcom,msm-vidc,context-bank";
+ label = "venus_sec_pixel";
+ iommus = <&venus_smmu 0x104>,
+ <&venus_smmu 0x10c>,
+ <&venus_smmu 0x110>,
+ <&venus_smmu 0x12c>;
+ buffer-types = <0x106>;
+ virtual-addr-pool = <0x25800000 0x25800000>;
+ qcom,secure-context-bank;
+ };
+
+ venus_secure_non_pixel_cb: secure_non_pixel_cb {
+ compatible = "qcom,msm-vidc,context-bank";
+ label = "venus_sec_non_pixel";
+ iommus = <&venus_smmu 0x105>,
+ <&venus_smmu 0x107>,
+ <&venus_smmu 0x108>,
+ <&venus_smmu 0x10d>,
+ <&venus_smmu 0x10f>,
+ <&venus_smmu 0x125>,
+ <&venus_smmu 0x128>,
+ <&venus_smmu 0x12d>,
+ <&venus_smmu 0x140>;
+ buffer-types = <0x480>;
+ virtual-addr-pool = <0x1000000 0x24800000>;
+ qcom,secure-context-bank;
+ };
+ };
+
+ vmem: qcom,vmem@880000 {
+ compatible = "qcom,msm-vmem";
+ interrupts = <GIC_SPI 429 IRQ_TYPE_LEVEL_HIGH>;
+
+ reg = <0x880000 0x800>,
+ <0x6800000 0x80000>;
+ reg-names = "reg-base", "mem-base";
+
+ vdd-supply = <&gdsc_mmagic_video>;
+ clocks = <&clock_mmss clk_vmem_ahb_clk>,
+ <&clock_mmss clk_vmem_maxi_clk>;
+ clock-names = "ahb", "maxi";
+
+ qcom,msm-bus,name = "vmem";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <MSM_BUS_MASTER_AMPSS_M0 MSM_BUS_SLAVE_VMEM_CFG 0 0>,
+ <MSM_BUS_MASTER_AMPSS_M0 MSM_BUS_SLAVE_VMEM_CFG 500 800>;
+
+ qcom,bank-size = <131072>; /* 128 kB */
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-wsa881x.dtsi b/arch/arm64/boot/dts/qcom/msm8996-wsa881x.dtsi
new file mode 100644
index 000000000000..6a800f853d2c
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996-wsa881x.dtsi
@@ -0,0 +1,45 @@
+/* Copyright (c) 2015, 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.
+ */
+
+&slim_msm {
+ tasha_codec {
+ swr_master {
+ compatible = "qcom,swr-wcd";
+ #address-cells = <2>;
+ #size-cells = <0>;
+
+ wsa881x_211: wsa881x@20170211 {
+ compatible = "qcom,wsa881x";
+ reg = <0x00 0x20170211>;
+ qcom,spkr-sd-n-gpio = <&pmi8994_gpios 2 0>;
+ };
+
+ wsa881x_212: wsa881x@20170212 {
+ compatible = "qcom,wsa881x";
+ reg = <0x00 0x20170212>;
+ qcom,spkr-sd-n-gpio = <&pmi8994_gpios 3 0>;
+ };
+
+ wsa881x_213: wsa881x@21170213 {
+ compatible = "qcom,wsa881x";
+ reg = <0x00 0x21170213>;
+ qcom,spkr-sd-n-gpio = <&pmi8994_gpios 2 0>;
+ };
+
+ wsa881x_214: wsa881x@21170214 {
+ compatible = "qcom,wsa881x";
+ reg = <0x00 0x21170214>;
+ qcom,spkr-sd-n-gpio = <&pmi8994_gpios 3 0>;
+ };
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
new file mode 100644
index 000000000000..e32225ee3548
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
@@ -0,0 +1,3852 @@
+/* Copyright (c) 2014-2015, 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 "skeleton64.dtsi"
+#include <dt-bindings/clock/msm-clocks-8996.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+ model = "Qualcomm Technologies, Inc. MSM 8996";
+ compatible = "qcom,msm8996";
+ qcom,msm-id = <246 0x0>;
+ qcom,pmic-id = <0x20009 0x2000A 0x0 0x0>;
+ interrupt-parent = <&intc>;
+
+ aliases {
+ sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
+ sdhc2 = &sdhc_2; /* SDC2 SD card slot */
+ smd7 = &smdtty_data1;
+ smd8 = &smdtty_data4;
+ smd11 = &smdtty_data11;
+ smd21 = &smdtty_data21;
+ smd36 = &smdtty_loopback;
+ pci-domain0 = &pcie0;
+ pci-domain1 = &pcie1;
+ pci-domain2 = &pcie2;
+ i2c6 = &i2c_6;
+ i2c7 = &i2c_7;
+ i2c8 = &i2c_8;
+ i2c12 = &i2c_12;
+ spi0 = &spi_0;
+ serial0 = &uartblsp2dm1;
+ };
+
+ chosen {
+ stdout-path = "serial0";
+ };
+
+ psci {
+ compatible = "arm,psci-1.0";
+ method = "smc";
+ };
+
+ cpus {
+ #address-cells = <2>;
+ #size-cells = <0>;
+
+ CPU0: cpu@0 {
+ device_type = "cpu";
+ compatible = "qcom,kryo";
+ reg = <0x0 0x0>;
+ qcom,limits-info = <&mitigation_profile0>;
+ enable-method = "psci";
+ qcom,ea = <&ea0>;
+ next-level-cache = <&L2_0>;
+ L2_0: l2-cache {
+ compatible = "cache";
+ cache-level = <2>;
+ qcom,dump-size = <0x88000>;
+ };
+ L1_D_0: l1-dcache {
+ compatible = "cache";
+ qcom,dump-size = <0x7800>;
+ };
+ L1_TLB_0: l1-tlb {
+ qcom,dump-size = <0x2800>;
+ };
+ };
+
+ CPU1: cpu@1 {
+ device_type = "cpu";
+ compatible = "qcom,kryo";
+ reg = <0x0 0x1>;
+ qcom,limits-info = <&mitigation_profile1>;
+ enable-method = "psci";
+ qcom,ea = <&ea1>;
+ next-level-cache = <&L2_0>;
+ L1_D_1: l1-dcache {
+ compatible = "cache";
+ qcom,dump-size = <0x7800>;
+ };
+ L1_TLB_1: l1-tlb {
+ qcom,dump-size = <0x2800>;
+ };
+ };
+
+ CPU2: cpu@100 {
+ device_type = "cpu";
+ compatible = "qcom,kryo";
+ reg = <0x0 0x100>;
+ qcom,limits-info = <&mitigation_profile2>;
+ enable-method = "psci";
+ qcom,ea = <&ea2>;
+ next-level-cache = <&L2_1>;
+ L2_1: l2-cache {
+ compatible = "cache";
+ cache-level = <2>;
+ qcom,dump-size = <0x110000>;
+ };
+ L1_D_100: l1-dcache {
+ compatible = "cache";
+ qcom,dump-size = <0x7800>;
+ };
+ L1_TLB_100: l1-tlb {
+ qcom,dump-size = <0x2800>;
+ };
+ };
+
+ CPU3: cpu@101 {
+ device_type = "cpu";
+ compatible = "qcom,kryo";
+ reg = <0x0 0x101>;
+ enable-method = "psci";
+ qcom,limits-info = <&mitigation_profile3>;
+ qcom,ea = <&ea3>;
+ next-level-cache = <&L2_1>;
+ L1_D_101: l1-dcache {
+ compatible = "cache";
+ qcom,dump-size = <0x7800>;
+ };
+ L1_TLB_101: l1-tlb {
+ qcom,dump-size = <0x2800>;
+ };
+ };
+
+ cpu-map {
+ cluster0 {
+ core0 {
+ cpu = <&CPU0>;
+ };
+
+ core1 {
+ cpu = <&CPU1>;
+ };
+ };
+
+ cluster1 {
+ core0 {
+ cpu = <&CPU2>;
+ };
+
+ core1 {
+ cpu = <&CPU3>;
+ };
+ };
+ };
+ };
+
+ clocks {
+ xo_board {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <19200000>;
+ clock-output-names = "xo_board";
+ };
+ sleep_clk {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <32764>;
+ clock-output-names = "sleep_clk";
+ };
+ };
+
+ soc: soc { };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ removed_regions: removed_regions@85800000 {
+ compatible = "removed-dma-pool";
+ no-map;
+ reg = <0 0x85800000 0 0x3000000>;
+ };
+
+ peripheral_mem: peripheral_region@8ea00000 {
+ compatible = "removed-dma-pool";
+ no-map;
+ reg = <0 0x8ea00000 0 0x2b00000>;
+ };
+
+ qseecom_mem: qseecom_region {
+ compatible = "shared-dma-pool";
+ alloc-ranges = <0 0x00000000 0 0xffffffff>;
+ reusable;
+ alignment = <0 0x400000>;
+ size = <0 0x1400000>;
+ };
+
+ secure_display_memory: secure_region {
+ compatible = "shared-dma-pool";
+ alloc-ranges = <0 0x00000000 0 0xffffffff>;
+ reusable;
+ alignment = <0 0x200000>;
+ size = <0 0x5c00000>;
+ };
+
+ modem_mem: modem_region@88800000 {
+ compatible = "removed-dma-pool";
+ no-map;
+ reg = <0 0x88800000 0 0x6200000>;
+ };
+
+ dfps_data_mem: dfps_data_mem@83400000 {
+ compatible = "shared-dma-pool";
+ no-map;
+ reg = <0 0x83400000 0 0x1000>;
+ label = "dfps_data_mem";
+ };
+
+ cont_splash_mem: cont_splash_mem@83401000 {
+ reg = <0 0x83401000 0 0x23FF000>;
+ label = "cont_splash_mem";
+ };
+ };
+};
+
+#include "msm8996-ion.dtsi"
+#include "msm8996-mdss.dtsi"
+#include "msm8996-mdss-pll.dtsi"
+#include "msm8996-smp2p.dtsi"
+#include "msm8996-ipcrouter.dtsi"
+#include "msm-gdsc-8996.dtsi"
+#include "msm8996-bus.dtsi"
+#include "msm-rdbg.dtsi"
+
+&soc {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0 0 0 0xffffffff>;
+ compatible = "simple-bus";
+
+ spmi_bus: qcom,spmi@400f000 {
+ compatible = "qcom,spmi-pmic-arb";
+ reg = <0x400f000 0x1000>,
+ <0x4400000 0x800000>,
+ <0x4c00000 0x800000>,
+ <0x5800000 0x200000>,
+ <0x400a000 0x002100>;
+ reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
+ interrupt-names = "periph_irq";
+ interrupts = <GIC_SPI 326 IRQ_TYPE_NONE>;
+ qcom,ee = <0>;
+ qcom,channel = <0>;
+ #address-cells = <2>;
+ #size-cells = <0>;
+ interrupt-controller;
+ #interrupt-cells = <4>;
+ };
+
+ apc_apm: apm@099e0000 {
+ compatible = "qcom,msm-apm";
+ reg = <0x099e0000 0x1000>,
+ <0x09820000 0x10000>,
+ <0x06400050 0x8>,
+ <0x06480050 0x8>,
+ <0x09981068 0x8>,
+ <0x09991068 0x8>,
+ <0x099b1068 0x8>,
+ <0x099c1068 0x8>,
+ <0x099a1068 0x8>,
+ <0x099d1068 0x8>;
+ reg-names = "pm-apcc-glb",
+ "apcs-csr",
+ "apc0-pll-ctl",
+ "apc1-pll-ctl",
+ "apc0-cpu0-spm",
+ "apc0-cpu1-spm",
+ "apc1-cpu0-spm",
+ "apc1-cpu1-spm",
+ "apc0-l2-spm",
+ "apc1-l2-spm";
+ qcom,clock-source-override;
+ };
+
+ intc: interrupt-controller@09bc0000 {
+ compatible = "arm,gic-v3";
+ #interrupt-cells = <3>;
+ interrupt-controller;
+ #redistributor-regions = <1>;
+ redistributor-stride = <0x0 0x40000>;
+ reg = <0x09bc0000 0x10000>, /* GICD */
+ <0x09c00000 0x100000>; /* GICR * 4 */
+ interrupts = <1 9 4>;
+ };
+
+ timer {
+ compatible = "arm,armv8-timer";
+ interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+ <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+ <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+ <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+ clock-frequency = <19200000>;
+ };
+
+ restart@4ab000 {
+ compatible = "qcom,pshold";
+ reg = <0x4ab000 0x4>,
+ <0x7b3000 0x4>;
+ reg-names = "pshold-base", "tcsr-boot-misc-detect";
+ };
+
+ qcom,sps {
+ compatible = "qcom,msm_sps_4k";
+ qcom,device-type = <3>;
+ qcom,pipe-attr-ee;
+ };
+
+ uartblsp2dm1: serial@75b0000 {
+ compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
+ reg = <0x75b0000 0x1000>;
+ interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clock_gcc clk_gcc_blsp1_uart2_apps_clk>,
+ <&clock_gcc clk_gcc_blsp1_ahb_clk>;
+ clock-names = "core_clk", "iface_clk";
+ status = "okay";
+ };
+
+ uartblsp1dm1: serial@07570000 {
+ compatible = "qcom,msm-lsuart-v14";
+ reg = <0x7570000 0x1000>;
+ interrupts = <0 108 0>;
+ status = "disabled";
+ clocks = <&clock_gcc clk_gcc_blsp1_uart2_apps_clk>,
+ <&clock_gcc clk_gcc_blsp1_ahb_clk>;
+ clock-names = "core_clk", "iface_clk";
+ };
+
+ i2c_12: i2c@75ba000 {
+ compatible = "qcom,i2c-msm-v2";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-names = "qup_phys_addr";
+ reg = <0x75ba000 0x1000>;
+ interrupt-names = "qup_irq";
+ interrupts = <0 106 0>;
+ dmas = <&dma_blsp2 22 64 0x20000020 0x20>,
+ <&dma_blsp2 23 32 0x20000020 0x20>;
+ dma-names = "tx", "rx";
+ qcom,master-id = <84>;
+ qcom,clk-freq-out = <400000>;
+ qcom,clk-freq-in = <19200000>;
+ clock-names = "iface_clk", "core_clk";
+ clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp2_qup6_i2c_apps_clk>;
+ pinctrl-names = "i2c_active", "i2c_sleep";
+ pinctrl-0 = <&i2c_12_active>;
+ pinctrl-1 = <&i2c_12_sleep>;
+ };
+
+
+ dma_blsp1: qcom,sps-dma@0x7544000{ /* BLSP1 */
+ #dma-cells = <4>;
+ compatible = "qcom,sps-dma";
+ reg = <0x7544000 0x2b000>;
+ interrupts = <0 238 0>;
+ qcom,summing-threshold = <0x10>;
+ };
+
+ dma_blsp2: qcom,sps-dma@0x7584000{ /* BLSP2 */
+ #dma-cells = <4>;
+ compatible = "qcom,sps-dma";
+ reg = <0x7584000 0x2b000>;
+ interrupts = <0 239 0>;
+ qcom,summing-threshold = <0x10>;
+ };
+
+ i2c_6: i2c@757a000 { /* BLSP1 QUP6 */
+ compatible = "qcom,i2c-msm-v2";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x757a000 0x1000>;
+ reg-names = "qup_phys_addr";
+ interrupt-names = "qup_irq";
+ interrupts = <0 100 0>;
+ dmas = <&dma_blsp1 22 64 0x20000020 0x20>,
+ <&dma_blsp1 23 32 0x20000020 0x20>;
+ dma-names = "tx", "rx";
+ qcom,master-id = <86>;
+ 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>;
+ };
+
+ i2c_7: i2c@75b5000 { /* BLSP2 QUP1 */
+ compatible = "qcom,i2c-msm-v2";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-names = "qup_phys_addr";
+ reg = <0x75b5000 0x1000>;
+ interrupt-names = "qup_irq";
+ interrupts = <0 101 0>;
+ dmas = <&dma_blsp2 12 32 0x20000020 0x20>,
+ <&dma_blsp2 13 32 0x20000020 0x20>;
+ dma-names = "tx", "rx";
+ qcom,master-id = <84>;
+ qcom,clk-freq-out = <400000>;
+ qcom,clk-freq-in = <19200000>;
+ clock-names = "iface_clk", "core_clk";
+ clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp2_qup1_i2c_apps_clk>;
+ pinctrl-names = "i2c_active", "i2c_sleep";
+ pinctrl-0 = <&i2c_7_active>;
+ pinctrl-1 = <&i2c_7_sleep>;
+ };
+
+ i2c_8: i2c@75b6000 { /* BLSP2 QUP2 */
+ compatible = "qcom,i2c-msm-v2";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-names = "qup_phys_addr";
+ reg = <0x75b6000 0x1000>;
+ interrupt-names = "qup_irq";
+ interrupts = <0 102 0>;
+ dmas = <&dma_blsp2 14 32 0x20000020 0x20>,
+ <&dma_blsp2 15 32 0x20000020 0x20>;
+ dma-names = "tx", "rx";
+ qcom,master-id = <84>;
+ qcom,clk-freq-out = <400000>;
+ qcom,clk-freq-in = <19200000>;
+ clock-names = "iface_clk", "core_clk";
+ clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp2_qup2_i2c_apps_clk>;
+ pinctrl-names = "i2c_active", "i2c_sleep";
+ pinctrl-0 = <&i2c_8_active>;
+ pinctrl-1 = <&i2c_8_sleep>;
+ };
+
+ blsp1_uart2: uart@07570000 { /* BLSP1 UART2 */
+ compatible = "qcom,msm-hsuart-v14";
+ reg = <0x07570000 0x1000>,
+ <0x7544000 0x2b000>;
+ status = "disabled";
+ reg-names = "core_mem", "bam_mem";
+ interrupt-names = "core_irq", "bam_irq", "wakeup_irq";
+ #address-cells = <0>;
+ interrupt-parent = <&blsp1_uart2>;
+ interrupts = <0 1 2>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0xffffffff>;
+ interrupt-map = <0 &intc 0 108 0
+ 1 &intc 0 238 0
+ 2 &tlmm 42 0>;
+
+ qcom,inject-rx-on-wakeup;
+ qcom,rx-char-to-inject = <0xFD>;
+
+ qcom,bam-tx-ep-pipe-index = <2>;
+ qcom,bam-rx-ep-pipe-index = <3>;
+ qcom,master-id = <86>;
+ clock-names = "core_clk", "iface_clk";
+ clocks = <&clock_gcc clk_gcc_blsp1_uart2_apps_clk>,
+ <&clock_gcc clk_gcc_blsp1_ahb_clk>;
+ pinctrl-names = "sleep", "default";
+ pinctrl-0 = <&blsp1_uart2_sleep>;
+ pinctrl-1 = <&blsp1_uart2_active>;
+
+ qcom,msm-bus,name = "buart2";
+ 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>;
+ };
+
+ m4m_cache: qcom,m4m {
+ compatible = "devfreq-simple-dev";
+ clock-names = "devfreq_clk";
+ clocks = <&clock_cpu clk_cbf_clk>;
+ governor = "cpufreq";
+ freq-tbl-khz =
+ < 150000 >,
+ < 307200 >,
+ < 384000 >,
+ < 499200 >,
+ < 595200 >,
+ < 691200 >,
+ < 787200 >,
+ < 883200 >,
+ < 960000 >,
+ < 1036800 >;
+ };
+
+ cpubw: qcom,cpubw {
+ compatible = "qcom,devbw";
+ governor = "performance";
+ qcom,src-dst-ports = <1 512>;
+ qcom,active-only;
+ qcom,bw-tbl =
+ < 762 /* 100 MHz */ >,
+ < 1144 /* 150 MHz */ >,
+ < 1525 /* 200 MHz */ >,
+ < 2288 /* 300 MHz */ >,
+ < 3143 /* 412 MHz */ >,
+ < 4173 /* 547 MHz */ >,
+ < 5195 /* 681 MHz */ >,
+ < 5859 /* 768 MHz */ >,
+ < 7759 /* 1017 MHz */ >,
+ < 9887 /* 1296 MHz */ >,
+ < 11863 /* 1555 MHz */ >,
+ < 13763 /* 1804 MHz */ >;
+ };
+
+ qcom,cpu-bwmon {
+ compatible = "qcom,bimc-bwmon3";
+ reg = <0x00408000 0x300>, <0x00401000 0x200>;
+ reg-names = "base", "global_base";
+ interrupts = <0 183 4>;
+ qcom,mport = <0>;
+ qcom,target-dev = <&cpubw>;
+ };
+
+ mincpubw: qcom,mincpubw {
+ compatible = "qcom,devbw";
+ governor = "powersave";
+ qcom,src-dst-ports = <1 512>;
+ qcom,active-only;
+ qcom,bw-tbl =
+ < 762 /* 100 MHz */ >,
+ < 1144 /* 150 MHz */ >,
+ < 1525 /* 200 MHz */ >,
+ < 2288 /* 300 MHz */ >,
+ < 3143 /* 412 MHz */ >,
+ < 4173 /* 547 MHz */ >,
+ < 5195 /* 681 MHz */ >,
+ < 5859 /* 768 MHz */ >,
+ < 7759 /* 1017 MHz */ >,
+ < 9887 /* 1296 MHz */ >,
+ < 11863 /* 1555 MHz */ >,
+ < 13763 /* 1804 MHz */ >;
+ };
+
+ memlat_cpu0: qcom,memlat-cpu0 {
+ compatible = "qcom,devbw";
+ governor = "powersave";
+ qcom,src-dst-ports = <1 512>;
+ qcom,active-only;
+ qcom,bw-tbl =
+ < 1525 /* 200 MHz */ >,
+ < 2288 /* 300 MHz */ >,
+ < 3509 /* 460 MHz */ >,
+ < 4066 /* 533 MHz */ >,
+ < 5126 /* 672 MHz */ >,
+ < 5928 /* 777 MHz */ >,
+ < 7904 /* 1036 MHz */ >,
+ < 9887 /* 1296 MHz */ >,
+ < 11863 /* 1555 MHz */ >,
+ < 13763 /* 1804 MHz */ >;
+ };
+
+ memlat_cpu2: qcom,memlat-cpu2 {
+ compatible = "qcom,devbw";
+ governor = "powersave";
+ qcom,src-dst-ports = <1 512>;
+ qcom,active-only;
+ qcom,bw-tbl =
+ < 1525 /* 200 MHz */ >,
+ < 2288 /* 300 MHz */ >,
+ < 3509 /* 460 MHz */ >,
+ < 4066 /* 533 MHz */ >,
+ < 5126 /* 672 MHz */ >,
+ < 5928 /* 777 MHz */ >,
+ < 7904 /* 1036 MHz */ >,
+ < 9887 /* 1296 MHz */ >,
+ < 11863 /* 1555 MHz */ >,
+ < 13763 /* 1804 MHz */ >;
+ };
+
+ qcom,arm-memlat-mon-0 {
+ compatible = "qcom,arm-memlat-mon";
+ qcom,cpulist = <&CPU0 &CPU1>;
+ qcom,target-dev = <&memlat_cpu0>;
+ };
+
+ qcom,arm-memlat-mon-2 {
+ compatible = "qcom,arm-memlat-mon";
+ qcom,cpulist = <&CPU2 &CPU3>;
+ qcom,target-dev = <&memlat_cpu2>;
+ };
+
+ devfreq_cpufreq: devfreq-cpufreq {
+ cpubw-cpufreq {
+ target-dev = <&cpubw>;
+ cpu-to-dev-map-0 =
+ < 1459200 1525 >;
+ cpu-to-dev-map-2 =
+ < 1593600 1525 >;
+ };
+
+ m4m-cpufreq {
+ target-dev = <&m4m_cache>;
+ cpu-to-dev-map-0 =
+ < 345600 307200 >,
+ < 403200 384000 >,
+ < 576000 499200 >,
+ < 633600 595200 >,
+ < 729600 691200 >,
+ < 806400 787200 >,
+ < 883200 883200 >,
+ < 960000 960000 >,
+ < 1459200 1036000 >;
+ cpu-to-dev-map-2 =
+ < 345600 307200 >,
+ < 403200 384000 >,
+ < 576000 499200 >,
+ < 633600 595200 >,
+ < 729600 691200 >,
+ < 806400 787200 >,
+ < 883200 883200 >,
+ < 960000 960000 >,
+ < 1593600 1036000 >;
+ };
+
+ mincpubw-cpufreq {
+ target-dev = <&mincpubw>;
+ cpu-to-dev-map-0 =
+ < 1420800 1525 >;
+ cpu-to-dev-map-2 =
+ < 1420800 1525 >,
+ < 1593600 5195 >;
+ };
+ };
+
+ msm_cpufreq: qcom,msm-cpufreq {
+ compatible = "qcom,msm-cpufreq";
+ clock-names = "l2_clk", "cpu0_clk", "cpu1_clk", "cpu2_clk",
+ "cpu3_clk";
+ clocks = <&clock_cpu clk_cbf_clk>,
+ <&clock_cpu clk_pwrcl_clk>,
+ <&clock_cpu clk_pwrcl_clk>,
+ <&clock_cpu clk_perfcl_clk>,
+ <&clock_cpu clk_perfcl_clk>;
+
+ qcom,governor-per-policy;
+
+ qcom,cpufreq-table-0 =
+ < 307200 >,
+ < 345600 >,
+ < 403200 >,
+ < 480000 >,
+ < 576000 >,
+ < 633600 >,
+ < 729600 >,
+ < 806400 >,
+ < 883200 >,
+ < 960000 >,
+ < 1017600 >,
+ < 1113600 >,
+ < 1190400 >,
+ < 1267200 >,
+ < 1344000 >,
+ < 1420800 >,
+ < 1459200 >;
+
+ qcom,cpufreq-table-2 =
+ < 307200 >,
+ < 345600 >,
+ < 403200 >,
+ < 480000 >,
+ < 576000 >,
+ < 633600 >,
+ < 729600 >,
+ < 806400 >,
+ < 883200 >,
+ < 960000 >,
+ < 1017600 >,
+ < 1113600 >,
+ < 1190400 >,
+ < 1267200 >,
+ < 1344000 >,
+ < 1420800 >,
+ < 1497600 >,
+ < 1593600 >;
+ };
+
+ clock_cpu: qcom,cpu-clock-8996@ {
+ compatible = "qcom,cpu-clock-8996";
+ reg = <0x06400000 0x1000>,
+ <0x06480000 0x1000>,
+ <0x09A20000 0x1000>,
+ <0x06400000 0x1000>,
+ <0x06480000 0x1000>,
+ <0x09A11000 0x1000>,
+ <0x00074130 0x8>,
+ <0x09820000 0x1000>;
+ reg-names = "pwrcl_pll", "perfcl_pll", "cbf_pll", "pwrcl_mux", "perfcl_mux", "cbf_mux", "efuse", "debug";
+ vdd-pwrcl-supply = <&apc0_pwrcl_vreg>;
+ vdd-perfcl-supply = <&apc1_vreg>;
+ vdd-cbf-supply = <&apc0_cbf_vreg>;
+ vdd-dig-supply = <&pm8994_s2_corner_ao>;
+ cbf-dev = <&m4m_cache>;
+ /* please look at msm8996-v3.dtsi for the v3 plan */
+ qcom,pwrcl-speedbin0-v0 =
+ < 0 0 >,
+ < 307200000 3 >,
+ < 345600000 4 >,
+ < 403200000 5 >,
+ < 480000000 6 >,
+ < 576000000 7 >,
+ < 633600000 8 >,
+ < 729600000 9 >,
+ < 806400000 10 >,
+ < 883200000 11 >,
+ < 960000000 12 >,
+ < 1017600000 13 >,
+ < 1113600000 14 >,
+ < 1190400000 15 >,
+ < 1267200000 16 >,
+ < 1344000000 17 >,
+ < 1420800000 18 >,
+ < 1459200000 19 >;
+ qcom,perfcl-speedbin0-v0 =
+ < 0 0 >,
+ < 307200000 1 >,
+ < 345600000 2 >,
+ < 403200000 3 >,
+ < 480000000 4 >,
+ < 576000000 5 >,
+ < 633600000 6 >,
+ < 729600000 7 >,
+ < 806400000 8 >,
+ < 883200000 9 >,
+ < 960000000 10 >,
+ < 1017600000 11 >,
+ < 1113600000 12 >,
+ < 1190400000 13 >,
+ < 1267200000 14 >,
+ < 1344000000 15 >,
+ < 1420800000 16 >,
+ < 1497600000 17 >,
+ < 1593600000 18 >;
+ qcom,cbf-speedbin0-v0 =
+ < 0 0 >,
+ < 307200000 2 >,
+ < 384000000 3 >,
+ < 499200000 4 >,
+ < 595200000 5 >,
+ < 691200000 6 >,
+ < 787200000 7 >,
+ < 883200000 8 >,
+ < 960000000 9 >,
+ < 1036800000 10 >;
+ clock-names = "xo_ao", "aux_clk";
+ clocks = <&clock_gcc clk_cxo_clk_src_ao>,
+ <&clock_gcc clk_gpll0_ao>;
+ #clock-cells = <1>;
+ };
+
+ clock_gcc: qcom,gcc@300000 {
+ compatible = "qcom,gcc-8996";
+ reg = <0x300000 0x8f014>;
+ reg-names = "cc_base";
+ vdd_dig-supply = <&pm8994_s1_corner>;
+ #clock-cells = <1>;
+ status="disabled";
+ };
+
+ clock_mmss: qcom,mmsscc@8c0000 {
+ compatible = "qcom,mmsscc-8996";
+ reg = <0x8c0000 0xb00c>;
+ reg-names = "cc_base";
+ vdd_dig-supply = <&pm8994_s1_corner>;
+ mmpll4_dig-supply = <&pm8994_s1_corner>;
+ mmpll4_analog-supply = <&pm8994_l12>;
+ qcom,vfe0_clk_src-opp-store-vcorner = <&vfe0>;
+ qcom,vfe1_clk_src-opp-store-vcorner = <&vfe1>;
+ qcom,cpp_clk_src-opp-store-vcorner = <&cpp>;
+ clock-names = "xo", "gpll0", "gpll0_div",
+ "pclk0_src", "pclk1_src",
+ "byte0_src", "byte1_src",
+ "extpclk_src";
+ clocks = <&clock_gcc clk_cxo_clk_src>,
+ <&clock_gcc clk_gpll0_out_main>,
+ <&clock_gcc clk_gcc_mmss_gpll0_div_clk>,
+ <&mdss_dsi0_pll clk_dsi0pll_pixel_clk_mux>,
+ <&mdss_dsi1_pll clk_dsi1pll_pixel_clk_mux>,
+ <&mdss_dsi0_pll clk_dsi0pll_byte_clk_mux>,
+ <&mdss_dsi1_pll clk_dsi1pll_byte_clk_mux>,
+ <&mdss_hdmi_pll clk_hdmi_vco_clk>;
+ #clock-cells = <1>;
+ };
+
+ clock_gpu: qcom,gpucc@8c0000 {
+ compatible = "qcom,gpucc-8996";
+ reg = <0x8c0000 0xb00c>,
+ <0x74130 0x8>;
+ reg-names = "cc_base", "efuse";
+ vdd_gfx-supply = <&gfx_vreg>;
+ qcom,gfx3d_clk_src-opp-handle = <&msm_gpu>;
+ vdd_mx-supply = <&pm8994_s2_corner>;
+ vdd_gpu_mx-supply = <&pm8994_s2_corner>;
+ qcom,gfxfreq-speedbin0 =
+ < 0 0 0 >,
+ < 19200000 3 4 >,
+ < 60000000 3 4 >,
+ < 120000000 3 4 >,
+ < 205000000 3 4 >,
+ < 360000000 4 5 >,
+ < 480000000 5 7 >;
+ qcom,gfxfreq-mx-speedbin0 =
+ < 0 0 >,
+ < 19200000 4 >,
+ < 60000000 4 >,
+ < 120000000 4 >,
+ < 205000000 4 >,
+ < 360000000 5 >,
+ < 480000000 7 >;
+ #clock-cells = <1>;
+ };
+
+ clock_debug: qcom,cc-debug@362000 {
+ compatible = "qcom,cc-debug-8996";
+ reg = <0x362000 0x4>;
+ reg-names = "cc_base";
+ clock-names = "debug_mmss_clk", "debug_gpu_clk", "debug_cpu_clk";
+ clocks = <&clock_mmss clk_mmss_gcc_dbg_clk>,
+ <&clock_gpu clk_gpu_gcc_dbg_clk>,
+ <&clock_cpu clk_cpu_debug_mux>;
+ #clock-cells = <1>;
+ };
+
+ qcom,rmtfs_sharedmem@0 {
+ compatible = "qcom,sharedmem-uio";
+ reg = <0x0 0x00200000>;
+ reg-names = "rmtfs";
+ qcom,client-id = <0x00000001>;
+ };
+
+ wcd9xxx_intc: wcd9xxx-irq {
+ compatible = "qcom,wcd9xxx-irq";
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ interrupt-parent = <&tlmm>;
+ qcom,gpio-connect = <&tlmm 54 0>;
+ };
+
+ clock_audio: audio_ext_clk {
+ compatible = "qcom,audio-ref-clk";
+ qcom,audio-ref-clk-gpio = <&pm8994_gpios 15 0>;
+ clock-names = "osr_clk";
+ clocks = <&clock_gcc clk_div_clk1>;
+ qcom,node_has_rpm_clock;
+ #clock-cells = <1>;
+ pinctrl-names = "sleep", "active";
+ pinctrl-0 = <&spkr_i2s_clk_sleep>;
+ pinctrl-1 = <&spkr_i2s_clk_active>;
+ };
+
+ tspp: msm_tspp@075e7000 {
+ compatible = "qcom,msm_tspp";
+ reg = <0x075e7000 0x1000>, /* MSM_TSIF0_PHYS */
+ <0x075e8000 0x1000>, /* MSM_TSIF1_PHYS */
+ <0x075e9000 0x1000>, /* MSM_TSPP_PHYS */
+ <0x075c4000 0x23000>; /* 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@91c0000 {
+ cell-index = <1>;
+ compatible = "qcom,slim-ngd";
+ reg = <0x91c0000 0x2C000>,
+ <0x9184000 0x32000>;
+ 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 = <0x160>;
+
+ msm_dai_slim {
+ compatible = "qcom,msm-dai-slim";
+ elemental-addr = [ff ff ff fe 17 02];
+ };
+
+ tasha_codec {
+ compatible = "qcom,tasha-slim-pgd";
+ elemental-addr = [00 01 A0 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>;
+
+ qcom,cdc-reset-gpio = <&tlmm 64 0>;
+
+ clock-names = "wcd_clk", "wcd_native_clk";
+ clocks = <&clock_audio clk_audio_pmi_clk>,
+ <&clock_audio clk_audio_ap_clk2>;
+
+ cdc-vdd-buck-supply = <&pm8994_s4>;
+ qcom,cdc-vdd-buck-voltage = <1800000 1800000>;
+ qcom,cdc-vdd-buck-current = <650000>;
+
+ cdc-buck-sido-supply = <&pm8994_s4>;
+ qcom,cdc-buck-sido-voltage = <1800000 1800000>;
+ qcom,cdc-buck-sido-current = <250000>;
+
+ 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>;
+
+ qcom,cdc-static-supplies = "cdc-vdd-buck",
+ "cdc-buck-sido",
+ "cdc-vdd-tx-h",
+ "cdc-vdd-rx-h",
+ "cdc-vddpx-1";
+
+ qcom,cdc-micbias1-mv = <1800>;
+ qcom,cdc-micbias2-mv = <1800>;
+ qcom,cdc-micbias3-mv = <1800>;
+ qcom,cdc-micbias4-mv = <1800>;
+
+ qcom,cdc-mclk-clk-rate = <9600000>;
+ qcom,cdc-slim-ifd = "tasha-slim-ifd";
+ qcom,cdc-slim-ifd-elemental-addr = [00 00 A0 01 17 02];
+ qcom,cdc-dmic-sample-rate = <4800000>;
+ qcom,cdc-mad-dmic-rate = <600000>;
+ };
+ };
+
+ sdhc_1: sdhci@7464900 {
+ compatible = "qcom,sdhci-msm";
+ reg = <0x7464900 0x500>, <0x7464000 0x800>, <0x7464E00 0x19C>;
+ reg-names = "hc_mem", "core_mem", "cmdq_mem";
+
+ interrupts = <0 141 0>, <0 134 0>;
+ interrupt-names = "hc_irq", "pwr_irq";
+
+ clock-names = "iface_clk", "core_clk", "ice_core_clk";
+ clocks = <&clock_gcc clk_gcc_sdcc1_ahb_clk>,
+ <&clock_gcc clk_gcc_sdcc1_apps_clk>,
+ <&clock_gcc clk_gcc_sdcc1_ice_core_clk>;
+
+ sdhc-msm-crypto = <&sdcc1_ice>;
+ qcom,large-address-bus;
+ qcom,bus-width = <8>;
+
+ qcom,devfreq,freq-table = <20000000 200000000>;
+
+ 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>;
+
+ qcom,pm-qos-cpu-groups = <0x03 0x0c>;
+ qcom,pm-qos-cmdq-latency-us = <70 70>, <70 70>;
+ qcom,pm-qos-legacy-latency-us = <70 70>, <70 70>;
+ qcom,pm-qos-irq-type = "affine_cores";
+ qcom,pm-qos-irq-cpu = <0>;
+ qcom,pm-qos-irq-latency = <70 70>;
+
+ status = "disabled";
+ };
+
+ sdhc_2: sdhci@74A4900 {
+ compatible = "qcom,sdhci-msm";
+ reg = <0x74A4900 0x314>, <0x74A4000 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,large-address-bus;
+ qcom,bus-width = <4>;
+
+ qcom,devfreq,freq-table = <20000000 200000000>;
+
+ 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>;
+
+ qcom,pm-qos-cpu-groups = <0x03 0x0c>;
+ qcom,pm-qos-legacy-latency-us = <70 70>, <70 70>;
+ qcom,pm-qos-irq-type = "affine_cores";
+ qcom,pm-qos-irq-cpu = <0>;
+ qcom,pm-qos-irq-latency = <70 70>;
+
+ status = "disabled";
+ };
+
+ ufs_ice: ufsice@630000 {
+ compatible = "qcom,ice";
+ reg = <0x630000 0x8000>;
+ interrupt-names = "ufs_ice_nonsec_level_irq";
+ interrupts = <0 258 0>;
+ qcom,enable-ice-clk;
+ clock-names = "ufs_core_clk_src",
+ "ufs_core_clk",
+ "bus_clk",
+ "iface_clk",
+ "ice_core_clk_src",
+ "ice_core_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_gcc clk_ufs_ice_core_clk_src>,
+ <&clock_gcc clk_gcc_ufs_ice_core_clk>;
+ qcom,op-freq-hz = <0>, <0>, <0>,<0>,
+ <300000000>, <0>;
+ vdd-hba-supply = <&gdsc_ufs>;
+ qcom,msm-bus,name = "ufs_ice_noc";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <1 650 0 0>, /* No vote */
+ <1 650 1000 0>; /* Max. bandwidth */
+ qcom,bus-vector-names = "MIN",
+ "MAX";
+ qcom,instance-type = "ufs";
+ status = "disabled";
+ };
+
+ sdcc1_ice: sdcc1ice@7443000 {
+ compatible = "qcom,ice";
+ reg = <0x7443000 0x8000>;
+ interrupt-names = "sdcc_ice_nonsec_level_irq";
+ interrupts = <0 461 0>;
+ qcom,enable-ice-clk;
+ clock-names = "ice_core_clk_src", "ice_core_clk",
+ "bus_clk", "iface_clk";
+ clocks = <&clock_gcc clk_sdcc1_ice_core_clk_src>,
+ <&clock_gcc clk_gcc_sdcc1_ice_core_clk>,
+ <&clock_gcc clk_gcc_sdcc1_apps_clk>,
+ <&clock_gcc clk_gcc_sdcc1_ahb_clk>;
+ qcom,op-freq-hz = <300000000>, <0>, <0>, <0>;
+ qcom,msm-bus,name = "sdcc_ice_noc";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <78 512 0 0>, /* No vote */
+ <78 512 1000 0>; /* Max. bandwidth */
+ qcom,bus-vector-names = "MIN",
+ "MAX";
+ qcom,instance-type = "sdcc";
+ status = "disabled";
+ };
+
+ ufsphy1: ufsphy@627000 {
+ compatible = "qcom,ufs-phy-qmp-14nm";
+ reg = <0x627000 0xda8>;
+ reg-names = "phy_mem";
+ #phy-cells = <0>;
+ vdda-phy-supply = <&pm8994_l28>;
+ vdda-pll-supply = <&pm8994_l12>;
+ vdda-phy-max-microamp = <18380>;
+ vdda-pll-max-microamp = <9440>;
+ vddp-ref-clk-supply = <&pm8994_l25>;
+ vddp-ref-clk-max-microamp = <100>;
+ vddp-ref-clk-always-on;
+ clock-names = "ref_clk_src",
+ "ref_clk";
+ clocks = <&clock_gcc clk_ln_bb_clk>,
+ <&clock_gcc clk_gcc_ufs_clkref_clk>;
+ status = "disabled";
+ };
+
+ ufs1: ufshc@624000 {
+ compatible = "jedec,ufs-1.1";
+ reg = <0x624000 0x2500>;
+ interrupts = <0 265 0>;
+ phys = <&ufsphy1>;
+ phy-names = "ufsphy";
+ ufs-qcom-crypto = <&ufs_ice>;
+ vdd-hba-supply = <&gdsc_ufs>;
+ vdd-hba-fixed-regulator;
+ vcc-supply = <&pm8994_l20>;
+ vccq-supply = <&pm8994_l25>;
+ vccq2-supply = <&pm8994_s4>;
+ vcc-max-microamp = <600000>;
+ vccq-max-microamp = <450000>;
+ vccq2-max-microamp = <450000>;
+
+ clock-names =
+ "core_clk_src",
+ "core_clk",
+ "bus_clk",
+ "bus_aggr_clk",
+ "iface_clk",
+ "core_clk_unipro_src",
+ "core_clk_unipro",
+ "core_clk_ice",
+ "ref_clk",
+ "tx_lane0_sync_clk",
+ "rx_lane0_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_aggre2_ufs_axi_clk>,
+ <&clock_gcc clk_gcc_ufs_ahb_clk>,
+ <&clock_gcc clk_ufs_ice_core_clk_src>,
+ <&clock_gcc clk_gcc_ufs_unipro_core_clk>,
+ <&clock_gcc clk_gcc_ufs_ice_core_clk>,
+ <&clock_gcc clk_ln_bb_clk>,
+ <&clock_gcc clk_gcc_ufs_tx_symbol_0_clk>,
+ <&clock_gcc clk_gcc_ufs_rx_symbol_0_clk>;
+ freq-table-hz =
+ <100000000 200000000>,
+ <0 0>,
+ <0 0>,
+ <0 0>,
+ <0 0>,
+ <150000000 300000000>,
+ <0 0>,
+ <0 0>,
+ <0 0>,
+ <0 0>,
+ <0 0>;
+
+ lanes-per-direction = <1>;
+ qcom,msm-bus,name = "ufs1";
+ qcom,msm-bus,num-cases = <12>;
+ 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 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 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 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",
+ "HS_RA_G1_L1", "HS_RA_G2_L1", "HS_RA_G3_L1",
+ "HS_RB_G1_L1", "HS_RB_G2_L1", "HS_RB_G3_L1",
+ "MAX";
+
+ /* PM QoS */
+ qcom,pm-qos-cpu-groups = <0x03 0x0C>;
+ qcom,pm-qos-cpu-group-latency-us = <70 70>;
+ qcom,pm-qos-default-cpu = <0>;
+
+ status = "disabled";
+
+ ufs_variant {
+ compatible = "qcom,ufs_variant";
+ };
+ };
+
+ pcie0: qcom,pcie@00600000 {
+ compatible = "qcom,pci-msm";
+ cell-index = <0>;
+
+ reg = <0x00600000 0x2000>,
+ <0x00034000 0x4000>,
+ <0x0c000000 0xf1d>,
+ <0x0c000f20 0xa8>,
+ <0x0c100000 0x100000>,
+ <0x0c200000 0x100000>,
+ <0x0c300000 0xd00000>;
+
+ reg-names = "parf", "phy", "dm_core", "elbi",
+ "conf", "io", "bars";
+
+ #address-cells = <3>;
+ #size-cells = <2>;
+ ranges = <0x01000000 0x0 0x0c200000 0x0c200000 0x0 0x100000>,
+ <0x02000000 0x0 0x0c300000 0x0c300000 0x0 0xd00000>;
+ interrupt-parent = <&pcie0>;
+ 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 32 33 34 35 36 37 38
+ 39 40 41 42 43>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0x0 0x0 0x0 0xffffffff>;
+ interrupt-map = <0x0 0x0 0x0 0 &intc 0 405 0
+ 0x0 0x0 0x0 1 &intc 0 244 0
+ 0x0 0x0 0x0 2 &intc 0 245 0
+ 0x0 0x0 0x0 3 &intc 0 247 0
+ 0x0 0x0 0x0 4 &intc 0 248 0
+ 0x0 0x0 0x0 5 &intc 0 249 0
+ 0x0 0x0 0x0 6 &intc 0 250 0
+ 0x0 0x0 0x0 7 &intc 0 251 0
+ 0x0 0x0 0x0 8 &intc 0 252 0
+ 0x0 0x0 0x0 9 &intc 0 253 0
+ 0x0 0x0 0x0 10 &intc 0 254 0
+ 0x0 0x0 0x0 11 &intc 0 255 0
+ 0x0 0x0 0x0 12 &intc 0 512 0
+ 0x0 0x0 0x0 13 &intc 0 513 0
+ 0x0 0x0 0x0 14 &intc 0 514 0
+ 0x0 0x0 0x0 15 &intc 0 515 0
+ 0x0 0x0 0x0 16 &intc 0 516 0
+ 0x0 0x0 0x0 17 &intc 0 517 0
+ 0x0 0x0 0x0 18 &intc 0 518 0
+ 0x0 0x0 0x0 19 &intc 0 519 0
+ 0x0 0x0 0x0 20 &intc 0 520 0
+ 0x0 0x0 0x0 21 &intc 0 521 0
+ 0x0 0x0 0x0 22 &intc 0 522 0
+ 0x0 0x0 0x0 23 &intc 0 523 0
+ 0x0 0x0 0x0 24 &intc 0 524 0
+ 0x0 0x0 0x0 25 &intc 0 525 0
+ 0x0 0x0 0x0 26 &intc 0 526 0
+ 0x0 0x0 0x0 27 &intc 0 527 0
+ 0x0 0x0 0x0 28 &intc 0 528 0
+ 0x0 0x0 0x0 29 &intc 0 529 0
+ 0x0 0x0 0x0 30 &intc 0 530 0
+ 0x0 0x0 0x0 31 &intc 0 531 0
+ 0x0 0x0 0x0 32 &intc 0 532 0
+ 0x0 0x0 0x0 33 &intc 0 533 0
+ 0x0 0x0 0x0 34 &intc 0 534 0
+ 0x0 0x0 0x0 35 &intc 0 535 0
+ 0x0 0x0 0x0 36 &intc 0 536 0
+ 0x0 0x0 0x0 37 &intc 0 537 0
+ 0x0 0x0 0x0 38 &intc 0 538 0
+ 0x0 0x0 0x0 39 &intc 0 539 0
+ 0x0 0x0 0x0 40 &intc 0 540 0
+ 0x0 0x0 0x0 41 &intc 0 541 0
+ 0x0 0x0 0x0 42 &intc 0 542 0
+ 0x0 0x0 0x0 43 &intc 0 543 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",
+ "msi_0", "msi_1", "msi_2", "msi_3",
+ "msi_4", "msi_5", "msi_6", "msi_7",
+ "msi_8", "msi_9", "msi_10", "msi_11",
+ "msi_12", "msi_13", "msi_14", "msi_15",
+ "msi_16", "msi_17", "msi_18", "msi_19",
+ "msi_20", "msi_21", "msi_22", "msi_23",
+ "msi_24", "msi_25", "msi_26", "msi_27",
+ "msi_28", "msi_29", "msi_30", "msi_31";
+
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&pcie0_clkreq_default &pcie0_perst_default &pcie0_wake_default>;
+ pinctrl-1 = <&pcie0_clkreq_sleep
+ &pcie0_perst_default
+ &pcie0_wake_sleep>;
+
+ perst-gpio = <&tlmm 35 0>;
+ wake-gpio = <&tlmm 37 0>;
+
+ gdsc-smmu-supply = <&gdsc_aggre0_noc>;
+ gdsc-vdd-supply = <&gdsc_pcie_0>;
+ vreg-1.8-supply = <&pm8994_l12>;
+ vreg-0.9-supply = <&pm8994_l28>;
+ vreg-cx-supply = <&pm8994_s1_corner_ao>;
+
+ qcom,vreg-0.9-voltage-level = <925000 925000 24000>;
+ qcom,vreg-cx-voltage-level = <7 4 0>;
+
+ qcom,l1-supported;
+ qcom,l1ss-supported;
+ qcom,aux-clk-sync;
+
+ qcom,ep-latency = <10>;
+
+ qcom,common-phy;
+ qcom,smmu-exist;
+
+ iommus = <&anoc0_smmu>;
+
+ qcom,ep-wakeirq;
+
+ linux,pci-domain = <0>;
+
+ qcom,msi-gicm-addr = <0x09BD0040>;
+ qcom,msi-gicm-base = <0x220>;
+
+ 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_gcc 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_gcc_pcie_clkref_clk>,
+ <&clock_gcc clk_gcc_smmu_aggre0_axi_clk>,
+ <&clock_gcc clk_gcc_pcie_phy_cfg_ahb_clk>,
+ <&clock_gcc clk_gcc_pcie_phy_aux_clk>,
+ <&clock_gcc clk_gcc_pcie_phy_reset>,
+ <&clock_gcc clk_gcc_pcie_phy_com_reset>,
+ <&clock_gcc clk_gcc_pcie_phy_nocsr_com_phy_reset>,
+ <&clock_gcc clk_gcc_pcie_0_phy_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_smmu_clk",
+ "pcie_phy_cfg_ahb_clk", "pcie_phy_aux_clk", "pcie_phy_reset",
+ "pcie_phy_com_reset", "pcie_phy_nocsr_com_phy_reset",
+ "pcie_0_phy_reset";
+
+ max-clock-frequency-hz = <0>, <0>, <1010526>, <0>, <0>, <0>, <0>,
+ <0>, <0>, <0>, <0>, <0>, <0>, <0>;
+ };
+
+ pcie1: qcom,pcie@00608000 {
+ compatible = "qcom,pci-msm";
+ cell-index = <1>;
+
+ reg = <0x00608000 0x2000>,
+ <0x00034000 0x4000>,
+ <0x0d000000 0xf1d>,
+ <0x0d000f20 0xa8>,
+ <0x0d100000 0x100000>,
+ <0x0d200000 0x100000>,
+ <0x0d300000 0xd00000>;
+
+ reg-names = "parf", "phy", "dm_core", "elbi",
+ "conf", "io", "bars";
+
+ #address-cells = <3>;
+ #size-cells = <2>;
+ ranges = <0x01000000 0x0 0x0d200000 0x0d200000 0x0 0x100000>,
+ <0x02000000 0x0 0x0d300000 0x0d300000 0x0 0xd00000>;
+ interrupt-parent = <&pcie1>;
+ 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 32 33 34 35 36 37 38
+ 39 40 41 42 43>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0x0 0x0 0x0 0xffffffff>;
+ interrupt-map = <0x0 0x0 0x0 0 &intc 0 413 0
+ 0x0 0x0 0x0 1 &intc 0 272 0
+ 0x0 0x0 0x0 2 &intc 0 273 0
+ 0x0 0x0 0x0 3 &intc 0 274 0
+ 0x0 0x0 0x0 4 &intc 0 275 0
+ 0x0 0x0 0x0 5 &intc 0 276 0
+ 0x0 0x0 0x0 6 &intc 0 277 0
+ 0x0 0x0 0x0 7 &intc 0 278 0
+ 0x0 0x0 0x0 8 &intc 0 279 0
+ 0x0 0x0 0x0 9 &intc 0 280 0
+ 0x0 0x0 0x0 10 &intc 0 281 0
+ 0x0 0x0 0x0 11 &intc 0 282 0
+ 0x0 0x0 0x0 12 &intc 0 544 0
+ 0x0 0x0 0x0 13 &intc 0 545 0
+ 0x0 0x0 0x0 14 &intc 0 546 0
+ 0x0 0x0 0x0 15 &intc 0 547 0
+ 0x0 0x0 0x0 16 &intc 0 548 0
+ 0x0 0x0 0x0 17 &intc 0 549 0
+ 0x0 0x0 0x0 18 &intc 0 550 0
+ 0x0 0x0 0x0 19 &intc 0 551 0
+ 0x0 0x0 0x0 20 &intc 0 552 0
+ 0x0 0x0 0x0 21 &intc 0 553 0
+ 0x0 0x0 0x0 22 &intc 0 554 0
+ 0x0 0x0 0x0 23 &intc 0 555 0
+ 0x0 0x0 0x0 24 &intc 0 556 0
+ 0x0 0x0 0x0 25 &intc 0 557 0
+ 0x0 0x0 0x0 26 &intc 0 558 0
+ 0x0 0x0 0x0 27 &intc 0 559 0
+ 0x0 0x0 0x0 28 &intc 0 560 0
+ 0x0 0x0 0x0 29 &intc 0 561 0
+ 0x0 0x0 0x0 30 &intc 0 562 0
+ 0x0 0x0 0x0 31 &intc 0 563 0
+ 0x0 0x0 0x0 32 &intc 0 564 0
+ 0x0 0x0 0x0 33 &intc 0 565 0
+ 0x0 0x0 0x0 34 &intc 0 566 0
+ 0x0 0x0 0x0 35 &intc 0 567 0
+ 0x0 0x0 0x0 36 &intc 0 568 0
+ 0x0 0x0 0x0 37 &intc 0 569 0
+ 0x0 0x0 0x0 38 &intc 0 570 0
+ 0x0 0x0 0x0 39 &intc 0 571 0
+ 0x0 0x0 0x0 40 &intc 0 572 0
+ 0x0 0x0 0x0 41 &intc 0 573 0
+ 0x0 0x0 0x0 42 &intc 0 574 0
+ 0x0 0x0 0x0 43 &intc 0 575 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",
+ "msi_0", "msi_1", "msi_2", "msi_3",
+ "msi_4", "msi_5", "msi_6", "msi_7",
+ "msi_8", "msi_9", "msi_10", "msi_11",
+ "msi_12", "msi_13", "msi_14", "msi_15",
+ "msi_16", "msi_17", "msi_18", "msi_19",
+ "msi_20", "msi_21", "msi_22", "msi_23",
+ "msi_24", "msi_25", "msi_26", "msi_27",
+ "msi_28", "msi_29", "msi_30", "msi_31";
+
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&pcie1_clkreq_default &pcie1_perst_default &pcie1_wake_default>;
+ pinctrl-1 = <&pcie1_clkreq_sleep
+ &pcie1_perst_default
+ &pcie1_wake_sleep>;
+
+ perst-gpio = <&tlmm 130 0>;
+
+ gdsc-smmu-supply = <&gdsc_aggre0_noc>;
+ gdsc-vdd-supply = <&gdsc_pcie_1>;
+ vreg-1.8-supply = <&pm8994_l12>;
+ vreg-0.9-supply = <&pm8994_l28>;
+ vreg-cx-supply = <&pm8994_s1_corner_ao>;
+
+ qcom,vreg-0.9-voltage-level = <925000 925000 24000>;
+ qcom,vreg-cx-voltage-level = <7 5 0>;
+
+ qcom,l1-supported;
+ qcom,l1ss-supported;
+ qcom,aux-clk-sync;
+
+ qcom,common-phy;
+ qcom,smmu-exist;
+
+ iommus = <&anoc0_smmu>;
+
+ qcom,ep-wakeirq;
+
+ qcom,ep-latency = <10>;
+
+ linux,pci-domain = <1>;
+
+ 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_gcc 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_gcc_pcie_clkref_clk>,
+ <&clock_gcc clk_gcc_smmu_aggre0_axi_clk>,
+ <&clock_gcc clk_gcc_pcie_phy_cfg_ahb_clk>,
+ <&clock_gcc clk_gcc_pcie_phy_aux_clk>,
+ <&clock_gcc clk_gcc_pcie_phy_reset>,
+ <&clock_gcc clk_gcc_pcie_phy_com_reset>,
+ <&clock_gcc clk_gcc_pcie_phy_nocsr_com_phy_reset>,
+ <&clock_gcc clk_gcc_pcie_1_phy_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_smmu_clk",
+ "pcie_phy_cfg_ahb_clk", "pcie_phy_aux_clk", "pcie_phy_reset",
+ "pcie_phy_com_reset", "pcie_phy_nocsr_com_phy_reset",
+ "pcie_1_phy_reset";
+
+ max-clock-frequency-hz = <0>, <0>, <1010526>, <0>, <0>, <0>, <0>,
+ <0>, <0>, <0>, <0>, <0>, <0>, <0>;
+ };
+
+ pcie2: qcom,pcie@00610000 {
+ compatible = "qcom,pci-msm";
+ cell-index = <2>;
+
+ reg = <0x00610000 0x2000>,
+ <0x00034000 0x4000>,
+ <0x0e000000 0xf1d>,
+ <0x0e000f20 0xa8>,
+ <0x0e100000 0x100000>,
+ <0x0e200000 0x100000>,
+ <0x0e300000 0x1d00000>;
+
+ reg-names = "parf", "phy", "dm_core", "elbi",
+ "conf", "io", "bars";
+
+ #address-cells = <3>;
+ #size-cells = <2>;
+ ranges = <0x01000000 0x0 0x0e200000 0x0e200000 0x0 0x100000>,
+ <0x02000000 0x0 0x0e300000 0x0e300000 0x0 0x1d00000>;
+ interrupt-parent = <&pcie2>;
+ 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 32 33 34 35 36 37 38
+ 39 40 41 42 43>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0x0 0x0 0x0 0xffffffff>;
+ interrupt-map = <0x0 0x0 0x0 0 &intc 0 421 0
+ 0x0 0x0 0x0 1 &intc 0 142 0
+ 0x0 0x0 0x0 2 &intc 0 143 0
+ 0x0 0x0 0x0 3 &intc 0 144 0
+ 0x0 0x0 0x0 4 &intc 0 145 0
+ 0x0 0x0 0x0 5 &intc 0 146 0
+ 0x0 0x0 0x0 6 &intc 0 147 0
+ 0x0 0x0 0x0 7 &intc 0 148 0
+ 0x0 0x0 0x0 8 &intc 0 149 0
+ 0x0 0x0 0x0 9 &intc 0 260 0
+ 0x0 0x0 0x0 10 &intc 0 261 0
+ 0x0 0x0 0x0 11 &intc 0 262 0
+ 0x0 0x0 0x0 12 &intc 0 576 0
+ 0x0 0x0 0x0 13 &intc 0 577 0
+ 0x0 0x0 0x0 14 &intc 0 578 0
+ 0x0 0x0 0x0 15 &intc 0 579 0
+ 0x0 0x0 0x0 16 &intc 0 580 0
+ 0x0 0x0 0x0 17 &intc 0 581 0
+ 0x0 0x0 0x0 18 &intc 0 582 0
+ 0x0 0x0 0x0 19 &intc 0 583 0
+ 0x0 0x0 0x0 20 &intc 0 584 0
+ 0x0 0x0 0x0 21 &intc 0 585 0
+ 0x0 0x0 0x0 22 &intc 0 586 0
+ 0x0 0x0 0x0 23 &intc 0 587 0
+ 0x0 0x0 0x0 24 &intc 0 588 0
+ 0x0 0x0 0x0 25 &intc 0 589 0
+ 0x0 0x0 0x0 26 &intc 0 590 0
+ 0x0 0x0 0x0 27 &intc 0 591 0
+ 0x0 0x0 0x0 28 &intc 0 592 0
+ 0x0 0x0 0x0 29 &intc 0 593 0
+ 0x0 0x0 0x0 30 &intc 0 594 0
+ 0x0 0x0 0x0 31 &intc 0 595 0
+ 0x0 0x0 0x0 32 &intc 0 596 0
+ 0x0 0x0 0x0 33 &intc 0 597 0
+ 0x0 0x0 0x0 34 &intc 0 598 0
+ 0x0 0x0 0x0 35 &intc 0 599 0
+ 0x0 0x0 0x0 36 &intc 0 600 0
+ 0x0 0x0 0x0 37 &intc 0 601 0
+ 0x0 0x0 0x0 38 &intc 0 602 0
+ 0x0 0x0 0x0 39 &intc 0 603 0
+ 0x0 0x0 0x0 40 &intc 0 604 0
+ 0x0 0x0 0x0 41 &intc 0 605 0
+ 0x0 0x0 0x0 42 &intc 0 606 0
+ 0x0 0x0 0x0 43 &intc 0 607 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",
+ "msi_0", "msi_1", "msi_2", "msi_3",
+ "msi_4", "msi_5", "msi_6", "msi_7",
+ "msi_8", "msi_9", "msi_10", "msi_11",
+ "msi_12", "msi_13", "msi_14", "msi_15",
+ "msi_16", "msi_17", "msi_18", "msi_19",
+ "msi_20", "msi_21", "msi_22", "msi_23",
+ "msi_24", "msi_25", "msi_26", "msi_27",
+ "msi_28", "msi_29", "msi_30", "msi_31";
+
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&pcie2_clkreq_default &pcie2_perst_default &pcie2_wake_default>;
+ pinctrl-1 = <&pcie2_clkreq_sleep
+ &pcie2_perst_default
+ &pcie2_wake_sleep>;
+
+ perst-gpio = <&tlmm 114 0>;
+ wake-gpio = <&tlmm 116 0>;
+
+ gdsc-smmu-supply = <&gdsc_aggre0_noc>;
+ gdsc-vdd-supply = <&gdsc_pcie_2>;
+ vreg-1.8-supply = <&pm8994_l12>;
+ vreg-0.9-supply = <&pm8994_l28>;
+ vreg-cx-supply = <&pm8994_s1_corner_ao>;
+
+ qcom,vreg-0.9-voltage-level = <925000 925000 24000>;
+ qcom,vreg-cx-voltage-level = <7 4 0>;
+
+ qcom,l1-supported;
+ qcom,l1ss-supported;
+ qcom,aux-clk-sync;
+
+ qcom,common-phy;
+ qcom,smmu-exist;
+
+ iommus = <&anoc0_smmu>;
+
+ qcom,ep-wakeirq;
+
+ qcom,ep-latency = <10>;
+
+ linux,pci-domain = <2>;
+
+ qcom,msi-gicm-addr = <0x09BD0040>;
+ qcom,msi-gicm-base = <0x260>;
+
+ qcom,msm-bus,name = "pcie2";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <108 512 0 0>,
+ <108 512 500 800>;
+
+ clocks = <&clock_gcc clk_gcc_pcie_2_pipe_clk>,
+ <&clock_gcc clk_ln_bb_clk>,
+ <&clock_gcc clk_gcc_pcie_2_aux_clk>,
+ <&clock_gcc clk_gcc_pcie_2_cfg_ahb_clk>,
+ <&clock_gcc clk_gcc_pcie_2_mstr_axi_clk>,
+ <&clock_gcc clk_gcc_pcie_2_slv_axi_clk>,
+ <&clock_gcc clk_gcc_pcie_clkref_clk>,
+ <&clock_gcc clk_gcc_smmu_aggre0_axi_clk>,
+ <&clock_gcc clk_gcc_pcie_phy_cfg_ahb_clk>,
+ <&clock_gcc clk_gcc_pcie_phy_aux_clk>,
+ <&clock_gcc clk_gcc_pcie_phy_reset>,
+ <&clock_gcc clk_gcc_pcie_phy_com_reset>,
+ <&clock_gcc clk_gcc_pcie_phy_nocsr_com_phy_reset>,
+ <&clock_gcc clk_gcc_pcie_2_phy_reset>;
+
+ clock-names = "pcie_2_pipe_clk", "pcie_2_ref_clk_src", "pcie_2_aux_clk",
+ "pcie_2_cfg_ahb_clk", "pcie_2_mstr_axi_clk",
+ "pcie_2_slv_axi_clk", "pcie_2_ldo", "pcie_2_smmu_clk",
+ "pcie_phy_cfg_ahb_clk", "pcie_phy_aux_clk", "pcie_phy_reset",
+ "pcie_phy_com_reset", "pcie_phy_nocsr_com_phy_reset",
+ "pcie_2_phy_reset";
+
+ max-clock-frequency-hz = <0>, <0>, <1010526>, <0>, <0>, <0>, <0>,
+ <0>, <0>, <0>, <0>, <0>, <0>, <0>;
+ };
+
+ mhi: qcom,mhi {
+ compatible = "qcom,mhi";
+ };
+
+ qcom,ipc-spinlock@740000 {
+ compatible = "qcom,ipc-spinlock-sfpb";
+ reg = <0x740000 0x8000>;
+ qcom,num-locks = <8>;
+ };
+
+ qcom,smem@86000000 {
+ compatible = "qcom,smem";
+ reg = <0x86000000 0x200000>,
+ <0x9820010 0x4>,
+ <0x68000 0x8000>,
+ <0x7b4000 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 449 1>;
+ label = "modem";
+ qcom,not-loadable;
+ };
+
+ 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,smd-dsps {
+ compatible = "qcom,smd";
+ qcom,smd-edge = <3>;
+ qcom,smd-irq-offset = <0x0>;
+ qcom,smd-irq-bitmask = <0x2000000>;
+ interrupts = <0 176 1>;
+ label = "dsps";
+ };
+
+ 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;
+ };
+ };
+
+ wdog: qcom,wdt@9830000 {
+ compatible = "qcom,msm-watchdog";
+ reg = <0x9830000 0x1000>;
+ reg-names = "wdt-base";
+ interrupts = <0 28 0>, <0 29 0>;
+ qcom,bark-time = <11000>;
+ qcom,pet-time = <10000>;
+ qcom,ipi-ping;
+ qcom,wakeup-enable;
+ };
+
+ qcom,msm-rtb {
+ compatible = "qcom,msm-rtb";
+ qcom,rtb-size = <0x100000>;
+ };
+
+ qcom,mpm2-sleep-counter@4a3000 {
+ compatible = "qcom,mpm2-sleep-counter";
+ reg = <0x004a3000 0x1000>;
+ clock-frequency = <32768>;
+ };
+
+ qcom,msm-imem@66bf000 {
+ compatible = "qcom,msm-imem";
+ reg = <0x66bf000 0x1000>; /* Address and size of IMEM */
+ ranges = <0x0 0x66bf000 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>;
+ };
+ };
+
+ jtag_fuse: jtagfuse@7602c {
+ compatible = "qcom,jtag-fuse-v3";
+ reg = <0x7602c 0xc>;
+ reg-names = "fuse-base";
+ };
+
+ rpm_bus: qcom,rpm-smd {
+ compatible = "qcom,rpm-glink";
+ qcom,glink-edge = "rpm";
+ rpm-channel-name = "rpm_requests";
+ };
+
+ 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-data22 {
+ qcom,smdpkt-remote = "modem";
+ qcom,smdpkt-port-name = "DATA22";
+ qcom,smdpkt-dev-name = "smd22";
+ };
+
+ 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 = "adsp";
+ 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,smdtty {
+ compatible = "qcom,smdtty";
+
+ 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";
+ };
+ };
+
+ usb3: ssusb@6a00000{
+ compatible = "qcom,dwc-usb3-msm";
+ reg = <0x06a00000 0xfc000>,
+ <0x7416000 0x400>;
+ reg-names = "core_base",
+ "ahb2phy_base";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ interrupts = <0 133 0>, <0 180 0>;
+ interrupt-names = "hs_phy_irq", "pwr_event_irq";
+
+ USB3_GDSC-supply = <&gdsc_usb30>;
+ vbus_dwc3-supply = <&smbcharger_charger_otg>;
+ 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,dwc-usb3-msm-tx-fifo-size = <21288>;
+ 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_aggre2_usb3_axi_clk>,
+ <&clock_gcc clk_gcc_usb30_mock_utmi_clk>,
+ <&clock_gcc clk_gcc_usb30_sleep_clk>,
+ <&clock_gcc clk_cxo_dwc3_clk>,
+ <&clock_gcc clk_gcc_usb_phy_cfg_ahb2phy_clk>;
+
+ clock-names = "core_clk", "iface_clk", "bus_aggr_clk", "utmi_clk",
+ "sleep_clk", "xo", "cfg_ahb_clk";
+
+ dwc3@6a00000 {
+ compatible = "snps,dwc3";
+ reg = <0x06a00000 0xc8d0>;
+ interrupt-parent = <&intc>;
+ interrupts = <0 131 0>;
+ usb-phy = <&qusb_phy0>, <&ssphy>;
+ tx-fifo-resize;
+ snps,usb3-u1u2-disable;
+ snps,nominal-elastic-buffer;
+ snps,is-utmi-l1-suspend;
+ snps,hird-threshold = /bits/ 8 <0x0>;
+ };
+
+ qcom,usbbam@6b04000 {
+ compatible = "qcom,usb-bam-msm";
+ reg = <0x06b04000 0x1a934>;
+ interrupt-parent = <&intc>;
+ interrupts = <0 132 0>;
+
+ qcom,bam-type = <0>;
+ qcom,usb-bam-fifo-baseaddr = <0x066bb000>;
+ qcom,usb-bam-num-pipes = <8>;
+ 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,reset-bam-on-connect;
+
+ qcom,pipe0 {
+ label = "ssusb-ipa-out-0";
+ qcom,usb-bam-mem-type = <1>;
+ qcom,dir = <0>;
+ qcom,pipe-num = <0>;
+ qcom,peer-bam = <1>;
+ qcom,src-bam-pipe-index = <1>;
+ qcom,data-fifo-size = <0x8000>;
+ qcom,descriptor-fifo-size = <0x2000>;
+ };
+ qcom,pipe1 {
+ label = "ssusb-ipa-in-0";
+ qcom,usb-bam-mem-type = <1>;
+ qcom,dir = <1>;
+ qcom,pipe-num = <0>;
+ qcom,peer-bam = <1>;
+ qcom,dst-bam-pipe-index = <0>;
+ qcom,data-fifo-size = <0x8000>;
+ qcom,descriptor-fifo-size = <0x2000>;
+ };
+ qcom,pipe2 {
+ label = "ssusb-qdss-in-0";
+ qcom,usb-bam-mem-type = <2>;
+ qcom,dir = <1>;
+ qcom,pipe-num = <0>;
+ qcom,peer-bam = <0>;
+ qcom,peer-bam-physical-address = <0x03084000>;
+ qcom,src-bam-pipe-index = <0>;
+ qcom,dst-bam-pipe-index = <2>;
+ qcom,data-fifo-offset = <0x0>;
+ qcom,data-fifo-size = <0x1800>;
+ qcom,descriptor-fifo-offset = <0x1800>;
+ qcom,descriptor-fifo-size = <0x800>;
+ };
+ qcom,pipe3 {
+ label = "ssusb-dpl-ipa-in-1";
+ qcom,usb-bam-mem-type = <1>;
+ qcom,dir = <1>;
+ qcom,pipe-num = <1>;
+ qcom,peer-bam = <1>;
+ qcom,dst-bam-pipe-index = <2>;
+ qcom,data-fifo-size = <0x8000>;
+ qcom,descriptor-fifo-size = <0x2000>;
+ };
+ };
+ };
+
+ usb2s: hsusb@7600000 {
+ compatible = "qcom,dwc-usb3-msm";
+ reg = <0x07600000 0xfc000>,
+ <0x7416000 0x400>;
+ reg-names = "core_base",
+ "ahb2phy_base";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ status = "disabled";
+
+ interrupts = <0 139 0>, <0 140 0>;
+ interrupt-names = "hs_phy_irq", "pwr_event_irq";
+
+ qcom,msm-bus,name = "usb-hs";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <87 512 0 0>,
+ <87 512 60000 960000>;
+
+ clocks = <&clock_gcc clk_gcc_usb20_master_clk>,
+ <&clock_gcc clk_gcc_periph_noc_usb20_ahb_clk>,
+ <&clock_gcc clk_gcc_usb20_mock_utmi_clk>,
+ <&clock_gcc clk_gcc_usb20_sleep_clk>,
+ <&clock_gcc clk_ln_bb_clk>,
+ <&clock_gcc clk_cxo_dwc3_clk>,
+ <&clock_gcc clk_gcc_usb_phy_cfg_ahb2phy_clk>;
+ clock-names = "core_clk", "iface_clk", "utmi_clk", "sleep_clk",
+ "ref_clk", "xo", "cfg_ahb_clk";
+
+ dwc3@7600000 {
+ compatible = "snps,dwc3";
+ reg = <0x07600000 0xc8d0>;
+ interrupt-parent = <&intc>;
+ interrupts = <0 138 0>;
+ usb-phy = <&qusb_phy1>, <&usb_nop_phy>;
+ maximum-speed = "high-speed";
+ snps,nominal-elastic-buffer;
+ snps,is-utmi-l1-suspend;
+ snps,hird-threshold = /bits/ 8 <0x0>;
+ };
+ };
+
+ android_usb@66bf0c8 {
+ compatible = "qcom,android-usb";
+ reg = <0x066bf0c8 0xc8>;
+ qcom,pm-qos-latency = <301 701 801>;
+ };
+
+ qusb_phy0: qusb@7411000 {
+ compatible = "qcom,qusb2phy";
+ reg = <0x07411000 0x180>,
+ <0x06af8800 0x400>,
+ <0x0007024c 0x4>,
+ <0x00388018 0x4>;
+ reg-names = "qusb_phy_base",
+ "qscratch_base",
+ "tune2_efuse_addr",
+ "ref_clk_addr";
+ vdd-supply = <&pm8994_s2_corner>;
+ vdda18-supply = <&pm8994_l12>;
+ vdda33-supply = <&pm8994_l24>;
+ qcom,vdd-voltage-level = <1 5 7>;
+ qcom,tune2-efuse-bit-pos = <21>;
+ qcom,tune2-efuse-num-bits = <4>;
+ qcom,enable-dpdm-pulsing;
+ qcom,qusb-phy-init-seq = <0xF8 0x80
+ 0xB3 0x84
+ 0x83 0x88
+ 0xC0 0x8C
+ 0x30 0x08
+ 0x79 0x0C
+ 0x21 0x10
+ 0x14 0x9C
+ 0x9F 0x1C
+ 0x00 0x18>;
+ phy_type= "utmi";
+
+ clocks = <&clock_gcc clk_gcc_usb_phy_cfg_ahb2phy_clk>,
+ <&clock_gcc clk_gcc_qusb2phy_prim_reset>;
+
+ clock-names = "cfg_ahb_clk", "phy_reset";
+ };
+
+ qusb_phy1: qusb@7412000 {
+ compatible = "qcom,qusb2phy";
+ reg = <0x07412000 0x180>,
+ <0x076f8800 0x400>,
+ <0x0007024c 0x4>,
+ <0x00388014 0x4>;
+ reg-names = "qusb_phy_base",
+ "qscratch_base",
+ "tune2_efuse_addr",
+ "ref_clk_addr";
+ vdd-supply = <&pm8994_s2_corner>;
+ vdda18-supply = <&pm8994_l12>;
+ vdda33-supply = <&pm8994_l24>;
+ qcom,vdd-voltage-level = <1 5 7>;
+ qcom,tune2-efuse-bit-pos = <25>;
+ qcom,tune2-efuse-num-bits = <4>;
+ qcom,qusb-phy-init-seq = <0xF8 0x80
+ 0xB3 0x84
+ 0x83 0x88
+ 0xC0 0x8C
+ 0x30 0x08
+ 0x79 0x0C
+ 0x21 0x10
+ 0x14 0x9C
+ 0x9F 0x1C
+ 0x00 0x18>;
+ phy_type = "utmi";
+ qcom,hold-reset;
+
+ clocks = <&clock_gcc clk_gcc_usb_phy_cfg_ahb2phy_clk>,
+ <&clock_gcc clk_gcc_qusb2phy_sec_reset>;
+
+ clock-names = "cfg_ahb_clk", "phy_reset";
+ };
+
+ ssphy: ssphy@7410000 {
+ compatible = "qcom,usb-ssphy-qmp-v2";
+ reg = <0x7410000 0x45c>,
+ <0x007ab244 0x4>;
+ reg-names = "qmp_phy_base",
+ "vls_clamp_reg";
+ vdd-supply = <&pm8994_l28>;
+ vdda18-supply = <&pm8994_l12>;
+ qcom,vdd-voltage-level = <0 925000 925000>;
+ qcom,vbus-valid-override;
+
+ 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_gcc_usb3phy_phy_reset>,
+ <&clock_gcc clk_ln_bb_clk>,
+ <&clock_gcc clk_gcc_usb3_clkref_clk>;
+
+ clock-names = "aux_clk", "pipe_clk", "cfg_ahb_clk", "phy_reset",
+ "phy_phy_reset", "ref_clk_src", "ref_clk";
+ };
+
+ usb_nop_phy: usb_nop_phy {
+ compatible = "usb-nop-xceiv";
+ };
+
+ dbm_1p5: dbm@6af8000 {
+ compatible = "qcom,usb-dbm-1p5";
+ reg = <0x06af8000 0x300>;
+ qcom,reset-ep-after-lpm-resume;
+ };
+
+/* HACK
+ spmi_bus: qcom,spmi@400f000 {
+ compatible = "qcom,spmi-pmic-arb";
+ reg = <0x400f000 0x1000>,
+ <0x4400000 0x800000>,
+ <0x4c00000 0x800000>,
+ <0x5800000 0x200000>,
+ <0x400a000 0x2100>; /* includes SPMI_CFG and GENI_CFG */
+/* reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
+ interrupts = <0 326 0>;
+ qcom,pmic-arb-channel = <0>;
+ qcom,pmic-arb-ee = <0>;
+ qcom,pmic-arb-max-peripherals = <256>;
+ #interrupt-cells = <3>;
+ interrupt-controller;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ cell-index = <0>;
+ };
+*/
+ qcom,lpass@9300000 {
+ compatible = "qcom,pil-tz-generic";
+ reg = <0x9300000 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_cxo_pil_lpass_clk>;
+ clock-names = "xo";
+ qcom,proxy-clock-names = "xo";
+
+ qcom,pas-id = <1>;
+ qcom,proxy-timeout-ms = <10000>;
+ qcom,smem-id = <423>;
+ qcom,sysmon-id = <1>;
+ qcom,ssctl-instance-id = <0x14>;
+ qcom,firmware-name = "adsp";
+ qcom,edge = "lpass";
+ memory-region = <&peripheral_mem>;
+
+ /* 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>;
+ };
+
+ qcom,venus@ce0000 {
+ compatible = "qcom,pil-tz-generic";
+ reg = <0xce0000 0x4000>;
+
+ vdd-supply = <&gdsc_venus>;
+ qcom,proxy-reg-names = "vdd";
+
+ clocks = <&clock_mmss clk_video_core_clk>,
+ <&clock_mmss clk_video_ahb_clk>,
+ <&clock_mmss clk_video_axi_clk>,
+ <&clock_mmss clk_video_maxi_clk>;
+ clock-names = "core_clk", "iface_clk",
+ "bus_clk", "maxi_clk";
+ qcom,proxy-clock-names = "core_clk", "iface_clk",
+ "bus_clk", "maxi_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 = <100>;
+ qcom,firmware-name = "venus";
+ memory-region = <&peripheral_mem>;
+ };
+
+ qcom,cnss {
+ compatible = "qcom,cnss";
+ wlan-bootstrap-gpio = <&tlmm 46 0>;
+ wlan-en-gpio = <&pm8994_gpios 8 0>;
+ vdd-wlan-supply = <&rome_vreg>;
+ vdd-wlan-io-supply = <&pm8994_s4>;
+ vdd-wlan-xtal-supply = <&pm8994_l30>;
+ vdd-wlan-core-supply = <&pm8994_s3>;
+ qcom,notify-modem-status;
+ pinctrl-names = "default";
+ pinctrl-0 = <&cnss_default>;
+ qcom,wlan-rc-num = <0>;
+ qcom,wlan-ramdump-dynamic = <0x200000>;
+
+ qcom,msm-bus,name = "msm-cnss";
+ qcom,msm-bus,num-cases = <4>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ /* No vote */
+ <45 512 0 0>,
+ /* Up to 200 Mbps */
+ <45 512 41421 1520000>,
+ /* Up to 400 Mbps */
+ <45 512 96650 1520000>,
+ /* Up to 800 Mbps */
+ <45 512 207108 14432000>;
+ };
+
+ wil6210: qcom,wil6210 {
+ compatible = "qcom,wil6210";
+ qcom,pcie-parent = <&pcie1>;
+ qcom,wigig-en = <&tlmm 94 0>;
+ qcom,sleep-clk-en = <&pm8994_gpios 18 0>;
+ qcom,msm-bus,name = "wil6210";
+ qcom,msm-bus,num-cases = <2>;
+ qcom,msm-bus,num-paths = <1>;
+ qcom,msm-bus,vectors-KBps =
+ <100 512 0 0>,
+ <100 512 600000 800000>; /* ~4.6Gbps (MCS12) */
+ status = "disabled";
+ };
+
+ qcom,ssc@1c00000 {
+ compatible = "qcom,pil-tz-generic";
+ reg = <0x1c00000 0x4000>;
+ interrupts = <0 390 1>;
+
+ vdd_cx-supply = <&pm8994_l26_corner>;
+ vdd_px-supply = <&pm8994_lvs2>;
+ qcom,vdd_cx-uV-uA = <5 0>;
+ qcom,proxy-reg-names = "vdd_cx", "vdd_px";
+ qcom,keep-proxy-regs-on;
+
+ clocks = <&clock_gcc clk_cxo_pil_ssc_clk>,
+ <&clock_gcc clk_aggre2_noc_clk>;
+ clock-names = "xo", "aggre2";
+ qcom,proxy-clock-names = "xo", "aggre2";
+
+ qcom,pas-id = <12>;
+ qcom,proxy-timeout-ms = <10000>;
+ qcom,smem-id = <424>;
+ qcom,sysmon-id = <3>;
+ qcom,ssctl-instance-id = <0x16>;
+ qcom,firmware-name = "slpi";
+ qcom,edge = "dsps";
+ memory-region = <&peripheral_mem>;
+
+ /* GPIO inputs from ssc */
+ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_3_in 0 0>;
+ qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_3_in 2 0>;
+ qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_3_in 1 0>;
+ qcom,gpio-stop-ack = <&smp2pgpio_ssr_smp2p_3_in 3 0>;
+
+ /* GPIO output to ssc */
+ qcom,gpio-force-stop = <&smp2pgpio_ssr_smp2p_3_out 0 0>;
+ };
+
+ pil_modem: qcom,mss@2080000 {
+ compatible = "qcom,pil-q6v55-mss";
+ reg = <0x2080000 0x100>,
+ <0x0763000 0x008>,
+ <0x0765000 0x008>,
+ <0x0764000 0x008>,
+ <0x2180000 0x020>,
+ <0x038f008 0x004>;
+ reg-names = "qdsp6_base", "halt_q6", "halt_modem",
+ "halt_nc", "rmb_base", "restart_reg";
+
+ clocks = <&clock_gcc clk_cxo_clk_src>,
+ <&clock_gcc clk_gcc_mss_cfg_ahb_clk>,
+ <&clock_gcc clk_pnoc_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_gcc clk_gcc_mss_snoc_axi_clk>,
+ <&clock_gcc clk_gcc_mss_mnoc_bimc_axi_clk>,
+ <&clock_gcc clk_qdss_clk>;
+ clock-names = "xo", "iface_clk", "pnoc_clk", "bus_clk",
+ "mem_clk", "gpll0_mss_clk", "snoc_axi_clk",
+ "mnoc_axi_clk", "qdss_clk";
+ qcom,proxy-clock-names = "xo", "pnoc_clk", "qdss_clk";
+ qcom,active-clock-names = "iface_clk", "bus_clk", "mem_clk",
+ "gpll0_mss_clk", "snoc_axi_clk",
+ "mnoc_axi_clk";
+
+ interrupts = <0 448 1>;
+ vdd_cx-supply = <&pm8994_s1_corner>;
+ vdd_cx-voltage = <7>;
+ vdd_mx-supply = <&pm8994_s2_corner>;
+ vdd_mx-uV = <6>;
+ vdd_pll-supply = <&pm8994_l12>;
+ qcom,vdd_pll = <1800000>;
+ qcom,firmware-name = "modem";
+ qcom,pil-self-auth;
+ qcom,sysmon-id = <0>;
+ qcom,ssctl-instance-id = <0x12>;
+ qcom,override-acc;
+ qcom,ahb-clk-vote;
+ qcom,pnoc-clk-vote;
+ qcom,qdsp6v56-1-5;
+ memory-region = <&modem_mem>;
+ qcom,mem-protect-id = <0xF>;
+
+ /* 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-shutdown-ack = <&smp2pgpio_ssr_smp2p_1_in 7 0>;
+
+ /* GPIO output to mss */
+ qcom,gpio-force-stop = <&smp2pgpio_ssr_smp2p_1_out 0 0>;
+ status = "ok";
+ };
+
+ tsens0: tsens@4a9000 {
+ compatible = "qcom,msm8996-tsens";
+ reg = <0x4a8000 0x2000>,
+ <0x74230 0x1000>;
+ reg-names = "tsens_physical", "tsens_eeprom_physical";
+ interrupts = <0 184 0>, <0 430 0>;
+ interrupt-names = "tsens-upper-lower", "tsens-critical";
+ qcom,sensors = <16>;
+ qcom,slope = <2901 2846 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200>;
+ };
+
+ spi_0: spi@7575000 { /* BLSP1 QUP1 */
+ compatible = "qcom,spi-qup-v2";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-names = "spi_physical", "spi_bam_physical";
+ reg = <0x07575000 0x600>,
+ <0x07544000 0x2b000>;
+ 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 = "spi_default", "spi_sleep";
+ pinctrl-0 = <&spi_0_active &spi_0_cs_active>;
+ pinctrl-1 = <&spi_0_sleep &spi_0_cs_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,rmnet-ipa {
+ compatible = "qcom,rmnet-ipa";
+ qcom,rmnet-ipa-ssr;
+ qcom,ipa-loaduC;
+ };
+
+ qcom_rng: qrng@83000 {
+ compatible = "qcom,msm-rng";
+ reg = <0x83000 0x1000>;
+ qcom,msm-rng-iface-clk;
+ qcom,no-qrng-config;
+ 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 clk_gcc_prng_ahb_clk>;
+ clock-names = "iface_clk";
+ };
+
+ qcom_crypto: qcrypto@660000 {
+ compatible = "qcom,qcrypto";
+ reg = <0x660000 0x20000>,
+ <0x644000 0x24000>;
+ reg-names = "crypto-base","crypto-bam-base";
+ interrupts = <0 206 0>;
+ qcom,bam-pipe-pair = <2>;
+ qcom,ce-hw-instance = <0>;
+ qcom,ce-device = <0>;
+ qcom,bam-ee = <0>;
+ qcom,ce-hw-shared;
+ qcom,clk-mgmt-sus-res;
+ 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_src", "core_clk",
+ "iface_clk", "bus_clk";
+ clocks = <&clock_gcc clk_ce1_clk>,
+ <&clock_gcc clk_qcrypto_ce1_clk>,
+ <&clock_gcc clk_gcc_ce1_ahb_m_clk>,
+ <&clock_gcc clk_gcc_ce1_axi_m_clk>;
+ qcom,ce-opp-freq = <171430000>;
+ 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;
+ };
+
+ qcom_cedev: qcedev@660000 {
+ compatible = "qcom,qcedev";
+ reg = <0x660000 0x20000>,
+ <0x644000 0x24000>;
+ reg-names = "crypto-base","crypto-bam-base";
+ interrupts = <0 206 0>;
+ qcom,bam-pipe-pair = <1>;
+ qcom,ce-hw-instance = <0>;
+ qcom,ce-device = <0>;
+ qcom,ce-hw-shared;
+ qcom,bam-ee = <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_src", "core_clk",
+ "iface_clk", "bus_clk";
+ clocks = <&clock_gcc clk_ce1_clk>,
+ <&clock_gcc clk_qcedev_ce1_clk>,
+ <&clock_gcc clk_gcc_ce1_ahb_m_clk>,
+ <&clock_gcc clk_gcc_ce1_axi_m_clk>;
+ qcom,ce-opp-freq = <171430000>;
+ };
+
+ qcom_seecom: qseecom@86600000 {
+ compatible = "qcom,qseecom";
+ reg = <0x86600000 0x2200000>;
+ reg-names = "secapp-region";
+ qcom,hlos-num-ce-hw-instances = <1>;
+ qcom,hlos-ce-hw-instance = <0>;
+ qcom,qsee-ce-hw-instance = <0>;
+ qcom,disk-encrypt-pipe-pair = <2>;
+ qcom,support-fde;
+ qcom,no-clock-support;
+ qcom,appsbl-qseecom-support;
+ qcom,msm-bus,name = "qseecom-noc";
+ qcom,msm-bus,num-cases = <4>;
+ qcom,msm-bus,num-paths = <1>;
+ 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_src", "core_clk",
+ "iface_clk", "bus_clk";
+ clocks = <&clock_gcc clk_ce1_clk>,
+ <&clock_gcc clk_qseecom_ce1_clk>,
+ <&clock_gcc clk_gcc_ce1_ahb_m_clk>,
+ <&clock_gcc clk_gcc_ce1_axi_m_clk>;
+ qcom,ce-opp-freq = <171430000>;
+ qcom,qsee-reentrancy-support = <2>;
+ };
+
+ qcom,qbt1000 {
+ compatible = "qcom,qbt1000";
+ qcom,fingerprint-sensor-ssc-spi-conn {
+ qcom,spi-port-id = <2>;
+ qcom,spi-port-slave-index = <0>;
+ qcom,tz-subsys-id = <1>;
+ qcom,ssc-subsys-id = <5>;
+ clock-frequency = <15000000>;
+ };
+ };
+
+ qcom,sensor-information {
+ compatible = "qcom,sensor-information";
+ sensor_information0: qcom,sensor-information-0 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor0";
+ qcom,scaling-factor = <10>;
+ };
+
+ sensor_information1: qcom,sensor-information-1 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor1";
+ qcom,alias-name = "pop_mem";
+ qcom,scaling-factor = <10>;
+ };
+
+ sensor_information2: qcom,sensor-information-2 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor2";
+ qcom,scaling-factor = <10>;
+ };
+
+ sensor_information3: qcom,sensor-information-3 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor3";
+ qcom,scaling-factor = <10>;
+ };
+
+ sensor_information4: qcom,sensor-information-4 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor4";
+ qcom,scaling-factor = <10>;
+ };
+
+ sensor_information5: qcom,sensor-information-5 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor5";
+ qcom,scaling-factor = <10>;
+ };
+
+ sensor_information6: qcom,sensor-information-6 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor6";
+ qcom,scaling-factor = <10>;
+ };
+
+ sensor_information7: qcom,sensor-information-7 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor7";
+ qcom,scaling-factor = <10>;
+ };
+
+ sensor_information8: qcom,sensor-information-8 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor8";
+ qcom,scaling-factor = <10>;
+ };
+
+ sensor_information9: qcom,sensor-information-9 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor9";
+ qcom,scaling-factor = <10>;
+ };
+
+ sensor_information10: qcom,sensor-information-10 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor10";
+ qcom,scaling-factor = <10>;
+ };
+
+ sensor_information11: qcom,sensor-information-11 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor11";
+ qcom,scaling-factor = <10>;
+ };
+
+ sensor_information12: qcom,sensor-information-12 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor12";
+ qcom,scaling-factor = <10>;
+ };
+
+ sensor_information13: qcom,sensor-information-13 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor13";
+ qcom,scaling-factor = <10>;
+ };
+
+ sensor_information14: qcom,sensor-information-14 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor14";
+ qcom,scaling-factor = <10>;
+ };
+
+ sensor_information15: qcom,sensor-information-15 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor15";
+ qcom,alias-name = "gpu";
+ qcom,scaling-factor = <10>;
+ };
+
+ 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";
+ };
+ sensor_information22: qcom,sensor-information-22 {
+ qcom,sensor-type = "llm";
+ qcom,sensor-name = "DLMt_APC1";
+ };
+ sensor_information23: qcom,sensor-information-23 {
+ qcom,sensor-type = "llm";
+ qcom,sensor-name = "LLM_m4m0";
+ };
+ sensor_information24: qcom,sensor-information-24 {
+ qcom,sensor-type = "llm";
+ qcom,sensor-name = "LLM_cp10";
+ };
+ sensor_information25: qcom,sensor-information-25 {
+ qcom,sensor-type = "llm";
+ qcom,sensor-name = "LLM_l3--";
+ };
+ sensor_information26: qcom,sensor-information-26 {
+ qcom,sensor-type = "llm";
+ qcom,sensor-name = "LLM_cp01";
+ };
+ sensor_information27: qcom,sensor-information-27 {
+ qcom,sensor-type = "llm";
+ qcom,sensor-name = "LLM_cp00";
+ };
+ sensor_information28: qcom,sensor-information-28 {
+ qcom,sensor-type = "llm";
+ qcom,sensor-name = "LLM_l21-";
+ };
+ sensor_information29: qcom,sensor-information-29 {
+ qcom,sensor-type = "llm";
+ qcom,sensor-name = "LLM_cp11";
+ };
+ sensor_information30: qcom,sensor-information-30 {
+ qcom,sensor-type = "llm";
+ qcom,sensor-name = "LLM_l20-";
+ };
+ sensor_information31: qcom,sensor-information-31 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor16";
+ qcom,scaling-factor = <10>;
+ };
+ sensor_information32: qcom,sensor-information-32 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor17";
+ qcom,scaling-factor = <10>;
+ };
+ sensor_information33: qcom,sensor-information-33 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor18";
+ qcom,scaling-factor = <10>;
+ };
+ sensor_information34: qcom,sensor-information-34 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor19";
+ qcom,scaling-factor = <10>;
+ };
+ sensor_information35: qcom,sensor-information-35 {
+ qcom,sensor-type = "tsens";
+ qcom,sensor-name = "tsens_tz_sensor20";
+ qcom,scaling-factor = <10>;
+ };
+ };
+
+ mitigation_profile0: qcom,limit_info-0 {
+ qcom,temperature-sensor = <&sensor_information4>;
+ qcom,boot-frequency-mitigate;
+ qcom,hotplug-mitigation-enable;
+ };
+
+ mitigation_profile1: qcom,limit_info-1 {
+ qcom,temperature-sensor = <&sensor_information6>;
+ qcom,boot-frequency-mitigate;
+ qcom,hotplug-mitigation-enable;
+ };
+
+ mitigation_profile2: qcom,limit_info-2 {
+ qcom,temperature-sensor = <&sensor_information9>;
+ qcom,boot-frequency-mitigate;
+ qcom,hotplug-mitigation-enable;
+ };
+
+ mitigation_profile3: qcom,limit_info-3 {
+ qcom,temperature-sensor = <&sensor_information11>;
+ qcom,boot-frequency-mitigate;
+ qcom,hotplug-mitigation-enable;
+ };
+
+ qcom,msm-thermal {
+ compatible = "qcom,msm-thermal";
+ reg = <0x70000 0x1000>;
+ qcom,sensor-id = <11>;
+ qcom,poll-ms = <100>;
+ qcom,limit-temp = <60>;
+ qcom,temp-hysteresis = <10>;
+ qcom,therm-reset-temp = <115>;
+ qcom,freq-step = <4>;
+ qcom,core-limit-temp = <70>;
+ qcom,core-temp-hysteresis = <10>;
+ qcom,hotplug-temp = <105>;
+ qcom,hotplug-temp-hysteresis = <40>;
+ qcom,freq-mitigation-temp = <90>;
+ qcom,freq-mitigation-temp-hysteresis = <40>;
+ qcom,freq-mitigation-value = <576000>;
+ qcom,online-hotplug-core;
+ qcom,synchronous-cluster-id = <0 1>;
+ qcom,synchronous-cluster-map = <0 2 &CPU0 &CPU1>,
+ <1 2 &CPU2 &CPU3>;
+
+ qcom,vdd-restriction-temp = <5>;
+ qcom,vdd-restriction-temp-hysteresis = <10>;
+
+ vdd-dig-supply = <&pm8994_s1_floor_corner>;
+ vdd-gfx-supply = <&gfx_vreg>;
+
+ 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 = <4 7 7>; /* Nominal, Turbo, Turbo */
+ qcom,min-level = <1>; /* No Request */
+ };
+
+ msm_thermal_freq: qcom,vdd-apps-rstr{
+ qcom,vdd-rstr-reg = "vdd-apps";
+ qcom,levels = <576000 600000 600000>;
+ qcom,freq-req;
+ };
+ };
+
+ qcom,bcl {
+ compatible = "qcom,bcl";
+ qcom,bcl-enable;
+ qcom,bcl-framework-interface;
+ qcom,bcl-freq-control-list = <&CPU2 &CPU3>;
+ qcom,bcl-hotplug-list = <&CPU2 &CPU3>;
+ qcom,bcl-soc-hotplug-list = <&CPU2 &CPU3>;
+ qcom,ibat-monitor {
+ qcom,low-threshold-uamp = <3400000>;
+ qcom,high-threshold-uamp = <4200000>;
+ qcom,mitigation-freq-khz = <576000>;
+ qcom,vph-high-threshold-uv = <3500000>;
+ qcom,vph-low-threshold-uv = <3300000>;
+ qcom,soc-low-threshold = <10>;
+ qcom,thermal-handle = <&msm_thermal_freq>;
+ };
+ };
+
+ qcom,msm-core@70000 {
+ compatible = "qcom,apss-core-ea";
+ reg = <0x70000 0x1000>;
+ qcom,low-hyst-temp = <10>;
+ qcom,high-hyst-temp = <5>;
+ qcom,polling-interval = <50>;
+
+ ea0: ea0 {
+ sensor = <&sensor_information4>;
+ };
+
+ ea1: ea1 {
+ sensor = <&sensor_information6>;
+ };
+
+ ea2: ea2 {
+ sensor = <&sensor_information9>;
+ };
+
+ ea3: ea3 {
+ sensor = <&sensor_information11>;
+ };
+ };
+
+ cpuss_dump {
+ compatible = "qcom,cpuss-dump";
+ qcom,l2_dump0 {
+ qcom,dump-node = <&L2_0>;
+ qcom,dump-id = <0xC0>;
+ };
+ qcom,l2_dump1 {
+ qcom,dump-node = <&L2_1>;
+ qcom,dump-id = <0xC1>;
+ };
+ qcom,l1_d_dump0 {
+ qcom,dump-node = <&L1_D_0>;
+ qcom,dump-id = <0x80>;
+ };
+ qcom,l1_d_dump1 {
+ qcom,dump-node = <&L1_D_1>;
+ qcom,dump-id = <0x81>;
+ };
+ qcom,l1_d_dump100 {
+ qcom,dump-node = <&L1_D_100>;
+ qcom,dump-id = <0x82>;
+ };
+ qcom,l1_d_dump101 {
+ qcom,dump-node = <&L1_D_101>;
+ qcom,dump-id = <0x83>;
+ };
+ qcom,l1_tlb_dump0 {
+ qcom,dump-node = <&L1_TLB_0>;
+ qcom,dump-id = <0x20>;
+ };
+ qcom,l1_tlb_dump1 {
+ qcom,dump-node = <&L1_TLB_1>;
+ qcom,dump-id = <0x21>;
+ };
+ qcom,l1_tlb_dump100 {
+ qcom,dump-node = <&L1_TLB_100>;
+ qcom,dump-id = <0x22>;
+ };
+ qcom,l1_tlb_dump101 {
+ qcom,dump-node = <&L1_TLB_101>;
+ qcom,dump-id = <0x23>;
+ };
+ };
+
+ qcom_tzlog: tz-log@66bf720 {
+ compatible = "qcom,tz-log";
+ reg = <0x066bf720 0x2000>;
+ qcom,hyplog-enabled;
+ hyplog-address-offset = <0x410>; /* 0x066BFB30 */
+ hyplog-size-offset = <0x414>; /* 0x066BFB34 */
+ };
+
+ sound-9335 {
+ compatible = "qcom,msm8996-asoc-snd-tasha";
+ qcom,model = "msm8996-tasha-snd-card";
+
+ qcom,audio-routing =
+ "AIF4 VI", "MCLK",
+ "RX_BIAS", "MCLK",
+ "MADINPUT", "MCLK",
+ "AMIC2", "MIC BIAS2",
+ "MIC BIAS2", "Headset Mic",
+ "AMIC3", "MIC BIAS2",
+ "MIC BIAS2", "ANCRight Headset Mic",
+ "AMIC4", "MIC BIAS2",
+ "MIC BIAS2", "ANCLeft Headset Mic",
+ "AMIC5", "MIC BIAS3",
+ "MIC BIAS3", "Handset Mic",
+ "AMIC6", "MIC BIAS4",
+ "MIC BIAS4", "Analog Mic6",
+ "DMIC0", "MIC BIAS1",
+ "MIC BIAS1", "Digital Mic0",
+ "DMIC1", "MIC BIAS1",
+ "MIC BIAS1", "Digital Mic1",
+ "DMIC2", "MIC BIAS3",
+ "MIC BIAS3", "Digital Mic2",
+ "DMIC3", "MIC BIAS3",
+ "MIC BIAS3", "Digital Mic3",
+ "DMIC4", "MIC BIAS4",
+ "MIC BIAS4", "Digital Mic4",
+ "DMIC5", "MIC BIAS4",
+ "MIC BIAS4", "Digital Mic5",
+ "SpkrLeft IN", "SPK1 OUT",
+ "SpkrRight IN", "SPK2 OUT";
+
+ qcom,msm-mbhc-hphl-swh = <0>;
+ qcom,msm-mbhc-gnd-swh = <0>;
+ qcom,tasha-mclk-clk-freq = <9600000>;
+ asoc-platform = <&pcm0>, <&pcm1>, <&pcm2>, <&voip>, <&voice>,
+ <&loopback>, <&compress>, <&hostless>,
+ <&afe>, <&lsm>, <&routing>, <&cpe>, <&compr>;
+ asoc-platform-names = "msm-pcm-dsp.0", "msm-pcm-dsp.1", "msm-pcm-dsp.2",
+ "msm-voip-dsp", "msm-pcm-voice", "msm-pcm-loopback",
+ "msm-compress-dsp", "msm-pcm-hostless", "msm-pcm-afe",
+ "msm-lsm-client", "msm-pcm-routing", "msm-cpe-lsm",
+ "msm-compr-dsp";
+ asoc-cpu = <&dai_pri_auxpcm>, <&dai_sec_auxpcm>, <&dai_hdmi>, <&dai_mi2s>,
+ <&sb_0_rx>, <&sb_0_tx>, <&sb_1_rx>, <&sb_1_tx>,
+ <&sb_2_rx>, <&sb_2_tx>, <&sb_3_rx>, <&sb_3_tx>,
+ <&sb_4_rx>, <&sb_4_tx>, <&sb_5_tx>, <&afe_pcm_rx>,
+ <&afe_pcm_tx>, <&afe_proxy_rx>, <&afe_proxy_tx>,
+ <&incall_record_rx>, <&incall_record_tx>,
+ <&incall_music_rx>, <&incall_music2_rx>,
+ <&sb_5_rx>;
+ asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2",
+ "msm-dai-q6-hdmi.8", "msm-dai-q6-mi2s.2",
+ "msm-dai-q6-dev.16384", "msm-dai-q6-dev.16385",
+ "msm-dai-q6-dev.16386", "msm-dai-q6-dev.16387",
+ "msm-dai-q6-dev.16388", "msm-dai-q6-dev.16389",
+ "msm-dai-q6-dev.16390", "msm-dai-q6-dev.16391",
+ "msm-dai-q6-dev.16392", "msm-dai-q6-dev.16393",
+ "msm-dai-q6-dev.16395", "msm-dai-q6-dev.224",
+ "msm-dai-q6-dev.225", "msm-dai-q6-dev.241",
+ "msm-dai-q6-dev.240", "msm-dai-q6-dev.32771",
+ "msm-dai-q6-dev.32772", "msm-dai-q6-dev.32773",
+ "msm-dai-q6-dev.32770", "msm-dai-q6-dev.16394";
+ asoc-codec = <&stub_codec>;
+ asoc-codec-names = "msm-stub-codec.1";
+ };
+
+ qcom,msm-adsp-loader {
+ status = "ok";
+ compatible = "qcom,adsp-loader";
+ qcom,adsp-state = <0>;
+ };
+
+ qcom,msm-audio-ion {
+ compatible = "qcom,msm-audio-ion";
+ qcom,smmu-version = <2>;
+ qcom,smmu-enabled;
+ iommus = <&lpass_q6_smmu 1>;
+ };
+
+ pcm0: qcom,msm-pcm {
+ compatible = "qcom,msm-pcm-dsp";
+ qcom,msm-pcm-dsp-id = <0>;
+ };
+
+ pcm1: qcom,msm-pcm-ull-post-processing {
+ compatible = "qcom,msm-pcm-dsp";
+ qcom,msm-pcm-dsp-id = <1>;
+ qcom,msm-pcm-low-latency;
+ qcom,latency-level = "ull-pp";
+ };
+
+ pcm2: qcom,msm-ultra-low-latency {
+ compatible = "qcom,msm-pcm-dsp";
+ qcom,msm-pcm-dsp-id = <2>;
+ qcom,msm-pcm-low-latency;
+ qcom,latency-level = "ultra";
+ };
+
+ routing: qcom,msm-pcm-routing {
+ compatible = "qcom,msm-pcm-routing";
+ };
+
+ compr: qcom,msm-compr-dsp {
+ compatible = "qcom,msm-compr-dsp";
+ };
+
+ compress: qcom,msm-compress-dsp {
+ compatible = "qcom,msm-compress-dsp";
+ };
+
+ voip: qcom,msm-voip-dsp {
+ compatible = "qcom,msm-voip-dsp";
+ };
+
+ voice: qcom,msm-pcm-voice {
+ compatible = "qcom,msm-pcm-voice";
+ qcom,destroy-cvd;
+ };
+
+ stub_codec: qcom,msm-stub-codec {
+ compatible = "qcom,msm-stub-codec";
+ };
+
+ qcom,msm-dai-fe {
+ compatible = "qcom,msm-dai-fe";
+ };
+
+ afe: qcom,msm-pcm-afe {
+ compatible = "qcom,msm-pcm-afe";
+ };
+
+ dai_hdmi: qcom,msm-dai-q6-hdmi {
+ compatible = "qcom,msm-dai-q6-hdmi";
+ qcom,msm-dai-q6-dev-id = <8>;
+ };
+
+ lsm: qcom,msm-lsm-client {
+ compatible = "qcom,msm-lsm-client";
+ };
+
+ loopback: qcom,msm-pcm-loopback {
+ compatible = "qcom,msm-pcm-loopback";
+ };
+
+ cpe: qcom,msm-cpe-lsm {
+ compatible = "qcom,msm-cpe-lsm";
+ };
+
+ qcom,msm-dai-q6 {
+ compatible = "qcom,msm-dai-q6";
+ sb_0_rx: qcom,msm-dai-q6-sb-0-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16384>;
+ };
+
+ sb_0_tx: qcom,msm-dai-q6-sb-0-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16385>;
+ };
+
+ sb_1_rx: qcom,msm-dai-q6-sb-1-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16386>;
+ };
+
+ sb_1_tx: qcom,msm-dai-q6-sb-1-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16387>;
+ };
+
+ sb_2_rx: qcom,msm-dai-q6-sb-2-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16388>;
+ };
+
+ sb_2_tx: qcom,msm-dai-q6-sb-2-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16389>;
+ };
+
+ sb_3_rx: qcom,msm-dai-q6-sb-3-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16390>;
+ };
+
+ sb_3_tx: qcom,msm-dai-q6-sb-3-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16391>;
+ };
+
+ sb_4_rx: qcom,msm-dai-q6-sb-4-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16392>;
+ };
+
+ sb_4_tx: qcom,msm-dai-q6-sb-4-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16393>;
+ };
+
+ sb_5_tx: qcom,msm-dai-q6-sb-5-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16395>;
+ };
+
+ bt_sco_rx: qcom,msm-dai-q6-bt-sco-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <12288>;
+ };
+
+ bt_sco_tx: qcom,msm-dai-q6-bt-sco-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <12289>;
+ };
+
+ afe_pcm_rx: qcom,msm-dai-q6-be-afe-pcm-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <224>;
+ };
+
+ afe_pcm_tx: qcom,msm-dai-q6-be-afe-pcm-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <225>;
+ };
+
+ afe_proxy_rx: com,msm-dai-q6-afe-proxy-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <241>;
+ };
+
+ afe_proxy_tx: qcom,msm-dai-q6-afe-proxy-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <240>;
+ };
+
+ incall_record_rx: qcom,msm-dai-q6-incall-record-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <32771>;
+ };
+
+ incall_record_tx: qcom,msm-dai-q6-incall-record-tx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <32772>;
+ };
+
+ incall_music_rx: qcom,msm-dai-q6-incall-music-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <32773>;
+ };
+
+ incall_music2_rx: qcom,msm-dai-q6-incall-music-2-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <32770>;
+ };
+
+ sb_5_rx: qcom,msm-dai-q6-sb-5-rx {
+ compatible = "qcom,msm-dai-q6-dev";
+ qcom,msm-dai-q6-dev-id = <16394>;
+ };
+
+ };
+
+ dai_pri_auxpcm: 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-cpudai-afe-clk-ver = <2>;
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&pri_aux_pcm_active &pri_aux_pcm_din_active
+ &pri_aux_pcm_dout_active>;
+ pinctrl-1 = <&pri_aux_pcm_sleep &pri_aux_pcm_din_sleep
+ &pri_aux_pcm_dout_sleep>;
+ };
+
+ dai_sec_auxpcm: 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-cpudai-afe-clk-ver = <2>;
+ };
+
+ qcom,msm-dai-mi2s {
+ compatible = "qcom,msm-dai-mi2s";
+ dai_mi2s: 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 = <2>;
+ qcom,msm-mi2s-tx-lines = <1>;
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&tert_mi2s_active &tert_mi2s_sd0_active>;
+ pinctrl-1 = <&tert_mi2s_sleep &tert_mi2s_sd0_sleep>;
+ };
+
+ dai_mi2s_quat: 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 = <0>;
+ };
+ };
+
+ qcom,msm-dai-tdm-tert-rx {
+ compatible = "qcom,msm-dai-tdm";
+ qcom,msm-cpudai-tdm-group-id = <37152>;
+ qcom,msm-cpudai-tdm-group-num-ports = <4>;
+ qcom,msm-cpudai-tdm-group-port-id = <36896 36898 36900 36902>;
+ qcom,msm-cpudai-tdm-group-nslots-per-frame = <8>;
+ qcom,msm-cpudai-tdm-group-slot-width = <32>;
+ qcom,msm-cpudai-tdm-group-slot-mask = <255>;
+ qcom,msm-cpudai-tdm-clk-rate = <0>;
+ dai_tert_tdm_rx_0: qcom,msm-dai-q6-tdm-tert-rx-0 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-dev-id = <36896>;
+ qcom,msm-cpudai-tdm-sync-mode = <1>;
+ qcom,msm-cpudai-tdm-sync-src = <0>;
+ qcom,msm-cpudai-tdm-data-out = <0>;
+ qcom,msm-cpudai-tdm-invert-sync = <0>;
+ qcom,msm-cpudai-tdm-data-delay = <0>;
+ };
+
+ dai_tert_tdm_rx_1: qcom,msm-dai-q6-tdm-tert-rx-1 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-dev-id = <36898>;
+ qcom,msm-cpudai-tdm-sync-mode = <1>;
+ qcom,msm-cpudai-tdm-sync-src = <0>;
+ qcom,msm-cpudai-tdm-data-out = <0>;
+ qcom,msm-cpudai-tdm-invert-sync = <0>;
+ qcom,msm-cpudai-tdm-data-delay = <0>;
+ };
+
+ dai_tert_tdm_rx_2: qcom,msm-dai-q6-tdm-tert-rx-2 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-dev-id = <36900>;
+ qcom,msm-cpudai-tdm-sync-mode = <1>;
+ qcom,msm-cpudai-tdm-sync-src = <0>;
+ qcom,msm-cpudai-tdm-data-out = <0>;
+ qcom,msm-cpudai-tdm-invert-sync = <0>;
+ qcom,msm-cpudai-tdm-data-delay = <0>;
+ };
+
+ dai_tert_tdm_rx_3: qcom,msm-dai-q6-tdm-tert-rx-3 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-dev-id = <36902>;
+ qcom,msm-cpudai-tdm-sync-mode = <1>;
+ qcom,msm-cpudai-tdm-sync-src = <0>;
+ qcom,msm-cpudai-tdm-data-out = <0>;
+ qcom,msm-cpudai-tdm-invert-sync = <0>;
+ qcom,msm-cpudai-tdm-data-delay = <0>;
+ };
+ };
+
+ qcom,msm-dai-tdm-tert-tx {
+ compatible = "qcom,msm-dai-tdm";
+ qcom,msm-cpudai-tdm-group-id = <37153>;
+ qcom,msm-cpudai-tdm-group-num-ports = <4>;
+ qcom,msm-cpudai-tdm-group-port-id = <36897 36899 36901 36903>;
+ qcom,msm-cpudai-tdm-group-nslots-per-frame = <8>;
+ qcom,msm-cpudai-tdm-group-slot-width = <32>;
+ qcom,msm-cpudai-tdm-group-slot-mask = <255>;
+ qcom,msm-cpudai-tdm-clk-rate = <0>;
+ dai_tert_tdm_tx_0: qcom,msm-dai-q6-tdm-tert-tx-0 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-dev-id = <36897>;
+ qcom,msm-cpudai-tdm-sync-mode = <1>;
+ qcom,msm-cpudai-tdm-sync-src = <0>;
+ qcom,msm-cpudai-tdm-data-out = <0>;
+ qcom,msm-cpudai-tdm-invert-sync = <0>;
+ qcom,msm-cpudai-tdm-data-delay = <0>;
+ };
+
+ dai_tert_tdm_tx_1: qcom,msm-dai-q6-tdm-tert-tx-1 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-dev-id = <36899>;
+ qcom,msm-cpudai-tdm-sync-mode = <1>;
+ qcom,msm-cpudai-tdm-sync-src = <0>;
+ qcom,msm-cpudai-tdm-data-out = <0>;
+ qcom,msm-cpudai-tdm-invert-sync = <0>;
+ qcom,msm-cpudai-tdm-data-delay = <0>;
+ };
+
+ dai_tert_tdm_tx_2: qcom,msm-dai-q6-tdm-tert-tx-2 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-dev-id = <36901>;
+ qcom,msm-cpudai-tdm-sync-mode = <1>;
+ qcom,msm-cpudai-tdm-sync-src = <0>;
+ qcom,msm-cpudai-tdm-data-out = <0>;
+ qcom,msm-cpudai-tdm-invert-sync = <0>;
+ qcom,msm-cpudai-tdm-data-delay = <0>;
+ };
+
+ dai_tert_tdm_tx_3: qcom,msm-dai-q6-tdm-tert-tx-3 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-dev-id = <36903>;
+ qcom,msm-cpudai-tdm-sync-mode = <1>;
+ qcom,msm-cpudai-tdm-sync-src = <0>;
+ qcom,msm-cpudai-tdm-data-out = <0>;
+ qcom,msm-cpudai-tdm-invert-sync = <0>;
+ qcom,msm-cpudai-tdm-data-delay = <0>;
+ };
+ };
+
+ qcom,msm-dai-tdm-quat-rx {
+ compatible = "qcom,msm-dai-tdm";
+ qcom,msm-cpudai-tdm-group-id = <37168>;
+ qcom,msm-cpudai-tdm-group-num-ports = <4>;
+ qcom,msm-cpudai-tdm-group-port-id = <36912 36914 36916 36918>;
+ qcom,msm-cpudai-tdm-group-nslots-per-frame = <8>;
+ qcom,msm-cpudai-tdm-group-slot-width = <32>;
+ qcom,msm-cpudai-tdm-group-slot-mask = <255>;
+ qcom,msm-cpudai-tdm-clk-rate = <0>;
+ dai_quat_tdm_rx_0: qcom,msm-dai-q6-tdm-quat-rx-0 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-dev-id = <36912>;
+ qcom,msm-cpudai-tdm-sync-mode = <1>;
+ qcom,msm-cpudai-tdm-sync-src = <0>;
+ qcom,msm-cpudai-tdm-data-out = <0>;
+ qcom,msm-cpudai-tdm-invert-sync = <0>;
+ qcom,msm-cpudai-tdm-data-delay = <0>;
+ };
+
+ dai_quat_tdm_rx_1: qcom,msm-dai-q6-tdm-quat-rx-1 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-dev-id = <36914>;
+ qcom,msm-cpudai-tdm-sync-mode = <1>;
+ qcom,msm-cpudai-tdm-sync-src = <0>;
+ qcom,msm-cpudai-tdm-data-out = <0>;
+ qcom,msm-cpudai-tdm-invert-sync = <0>;
+ qcom,msm-cpudai-tdm-data-delay = <0>;
+ };
+
+ dai_quat_tdm_rx_2: qcom,msm-dai-q6-tdm-quat-rx-2 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-dev-id = <36916>;
+ qcom,msm-cpudai-tdm-sync-mode = <1>;
+ qcom,msm-cpudai-tdm-sync-src = <0>;
+ qcom,msm-cpudai-tdm-data-out = <0>;
+ qcom,msm-cpudai-tdm-invert-sync = <0>;
+ qcom,msm-cpudai-tdm-data-delay = <0>;
+ };
+
+ dai_quat_tdm_rx_3: qcom,msm-dai-q6-tdm-quat-rx-3 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-dev-id = <36918>;
+ qcom,msm-cpudai-tdm-sync-mode = <1>;
+ qcom,msm-cpudai-tdm-sync-src = <0>;
+ qcom,msm-cpudai-tdm-data-out = <0>;
+ qcom,msm-cpudai-tdm-invert-sync = <0>;
+ qcom,msm-cpudai-tdm-data-delay = <0>;
+ };
+ };
+
+ qcom,msm-dai-tdm-quat-tx {
+ compatible = "qcom,msm-dai-tdm";
+ qcom,msm-cpudai-tdm-group-id = <37169>;
+ qcom,msm-cpudai-tdm-group-num-ports = <4>;
+ qcom,msm-cpudai-tdm-group-port-id = <36913 36915 36917 36919>;
+ qcom,msm-cpudai-tdm-group-nslots-per-frame = <8>;
+ qcom,msm-cpudai-tdm-group-slot-width = <32>;
+ qcom,msm-cpudai-tdm-group-slot-mask = <255>;
+ qcom,msm-cpudai-tdm-clk-rate = <0>;
+ dai_quat_tdm_tx_0: qcom,msm-dai-q6-tdm-quat-tx-0 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-dev-id = <36913>;
+ qcom,msm-cpudai-tdm-sync-mode = <1>;
+ qcom,msm-cpudai-tdm-sync-src = <0>;
+ qcom,msm-cpudai-tdm-data-out = <0>;
+ qcom,msm-cpudai-tdm-invert-sync = <0>;
+ qcom,msm-cpudai-tdm-data-delay = <0>;
+ };
+
+ dai_quat_tdm_tx_1: qcom,msm-dai-q6-tdm-quat-tx-1 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-dev-id = <36915>;
+ qcom,msm-cpudai-tdm-sync-mode = <1>;
+ qcom,msm-cpudai-tdm-sync-src = <0>;
+ qcom,msm-cpudai-tdm-data-out = <0>;
+ qcom,msm-cpudai-tdm-invert-sync = <0>;
+ qcom,msm-cpudai-tdm-data-delay = <0>;
+ };
+
+ dai_quat_tdm_tx_2: qcom,msm-dai-q6-tdm-quat-tx-2 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-dev-id = <36917>;
+ qcom,msm-cpudai-tdm-sync-mode = <1>;
+ qcom,msm-cpudai-tdm-sync-src = <0>;
+ qcom,msm-cpudai-tdm-data-out = <0>;
+ qcom,msm-cpudai-tdm-invert-sync = <0>;
+ qcom,msm-cpudai-tdm-data-delay = <0>;
+ };
+
+ dai_quat_tdm_tx_3: qcom,msm-dai-q6-tdm-quat-tx-3 {
+ compatible = "qcom,msm-dai-q6-tdm";
+ qcom,msm-cpudai-tdm-dev-id = <36919>;
+ qcom,msm-cpudai-tdm-sync-mode = <1>;
+ qcom,msm-cpudai-tdm-sync-src = <0>;
+ qcom,msm-cpudai-tdm-data-out = <0>;
+ qcom,msm-cpudai-tdm-invert-sync = <0>;
+ qcom,msm-cpudai-tdm-data-delay = <0>;
+ };
+ };
+
+ hostless: qcom,msm-pcm-hostless {
+ compatible = "qcom,msm-pcm-hostless";
+ };
+
+ qcom,msm-ssc-sensors {
+ compatible = "qcom,msm-ssc-sensors";
+ status = "ok";
+ };
+
+ qcom,msm-pacman {
+ compatible = "qcom,msm-pacman";
+ };
+
+ qcom,msm_fastrpc {
+ compatible = "qcom,msm-fastrpc-adsp";
+
+ qcom,msm_fastrpc_compute_cb1 {
+ compatible = "qcom,msm-fastrpc-compute-cb";
+ label = "adsprpc-smd";
+ iommus = <&lpass_q6_smmu 8>;
+ };
+ qcom,msm_fastrpc_compute_cb2 {
+ compatible = "qcom,msm-fastrpc-compute-cb";
+ label = "adsprpc-smd";
+ iommus = <&lpass_q6_smmu 9>;
+ };
+ qcom,msm_fastrpc_compute_cb3 {
+ compatible = "qcom,msm-fastrpc-compute-cb";
+ label = "adsprpc-smd";
+ iommus = <&lpass_q6_smmu 10>;
+ };
+ qcom,msm_fastrpc_compute_cb4 {
+ compatible = "qcom,msm-fastrpc-compute-cb";
+ label = "adsprpc-smd";
+ iommus = <&lpass_q6_smmu 11>;
+ };
+ qcom,msm_fastrpc_compute_cb5 {
+ compatible = "qcom,msm-fastrpc-compute-cb";
+ label = "adsprpc-smd";
+ iommus = <&lpass_q6_smmu 12>;
+ };
+ qcom,msm_fastrpc_compute_cb6 {
+ compatible = "qcom,msm-fastrpc-compute-cb";
+ label = "adsprpc-smd";
+ iommus = <&lpass_q6_smmu 13>;
+ };
+ qcom,msm_fastrpc_compute_cb7 {
+ compatible = "qcom,msm-fastrpc-compute-cb";
+ label = "adsprpc-smd";
+ iommus = <&lpass_q6_smmu 14>;
+ };
+ qcom,msm_fastrpc_compute_cb8 {
+ compatible = "qcom,msm-fastrpc-compute-cb";
+ label = "adsprpc-smd";
+ iommus = <&lpass_q6_smmu 15>;
+ };
+ };
+
+ cpu_pmu: cpu-pmu {
+ compatible = "arm,armv8-pmuv3";
+ qcom,irq-is-percpu;
+ interrupts = <1 7 4>;
+ };
+
+ qcom,glink-smem-native-xprt-modem@86000000 {
+ compatible = "qcom,glink-smem-native-xprt";
+ reg = <0x86000000 0x200000>,
+ <0x9820010 0x4>;
+ reg-names = "smem", "irq-reg-base";
+ qcom,irq-mask = <0x8000>;
+ interrupts = <0 452 1>;
+ label = "mpss";
+ };
+
+ qcom,glink-smem-native-xprt-adsp@86000000 {
+ compatible = "qcom,glink-smem-native-xprt";
+ reg = <0x86000000 0x200000>,
+ <0x9820010 0x4>;
+ reg-names = "smem", "irq-reg-base";
+ qcom,irq-mask = <0x200>;
+ interrupts = <0 157 1>;
+ label = "lpass";
+ qcom,qos-config = <&glink_qos_adsp>;
+ qcom,ramp-time = <0xaf>;
+ };
+
+ glink_qos_adsp: qcom,glink-qos-config-adsp {
+ compatible = "qcom,glink-qos-config";
+ qcom,flow-info = <0x3c 0x0>,
+ <0x3c 0x0>,
+ <0x3c 0x0>,
+ <0x3c 0x0>;
+ qcom,mtu-size = <0x800>;
+ qcom,tput-stats-cycle = <0xa>;
+ };
+
+ qcom,glink-smem-native-xprt-dsps@86000000 {
+ compatible = "qcom,glink-smem-native-xprt";
+ reg = <0x86000000 0x200000>,
+ <0x9820010 0x4>;
+ reg-names = "smem", "irq-reg-base";
+ qcom,irq-mask = <0x8000000>;
+ interrupts = <0 179 1>;
+ label = "dsps";
+ };
+
+ qcom,glink-smem-native-xprt-rpm@68000 {
+ compatible = "qcom,glink-rpm-native-xprt";
+ reg = <0x68000 0x6000>,
+ <0x9820010 0x4>;
+ reg-names = "msgram", "irq-reg-base";
+ qcom,irq-mask = <0x1>;
+ interrupts = <0 168 1>;
+ label = "rpm";
+ };
+
+ glink_mpss: qcom,glink-ssr-modem {
+ compatible = "qcom,glink_ssr";
+ label = "modem";
+ qcom,edge = "mpss";
+ qcom,notify-edges = <&glink_lpass>, <&glink_dsps>, <&glink_rpm>;
+ qcom,xprt = "smem";
+ };
+
+ glink_lpass: qcom,glink-ssr-adsp {
+ compatible = "qcom,glink_ssr";
+ label = "adsp";
+ qcom,edge = "lpass";
+ qcom,notify-edges = <&glink_mpss>, <&glink_dsps>, <&glink_rpm>;
+ qcom,xprt = "smem";
+ };
+
+ glink_dsps: qcom,glink-ssr-dsps {
+ compatible = "qcom,glink_ssr";
+ label = "slpi";
+ qcom,edge = "dsps";
+ qcom,notify-edges = <&glink_mpss>, <&glink_lpass>, <&glink_rpm>;
+ qcom,xprt = "smem";
+ };
+
+ glink_rpm: qcom,glink-ssr-rpm {
+ compatible = "qcom,glink_ssr";
+ label = "rpm";
+ qcom,edge = "rpm";
+ qcom,notify-edges = <&glink_lpass>, <&glink_mpss>, <&glink_dsps>;
+ qcom,xprt = "smem";
+ };
+
+ qcom,glink_pkt {
+ compatible = "qcom,glinkpkt";
+
+ qcom,glinkpkt-at-mdm0 {
+ qcom,glinkpkt-transport = "smd_trans";
+ qcom,glinkpkt-edge = "mpss";
+ qcom,glinkpkt-ch-name = "DS";
+ qcom,glinkpkt-dev-name = "at_mdm0";
+ };
+
+ qcom,glinkpkt-loopback_cntl {
+ qcom,glinkpkt-transport = "lloop";
+ qcom,glinkpkt-edge = "local";
+ qcom,glinkpkt-ch-name = "LOCAL_LOOPBACK_CLNT";
+ qcom,glinkpkt-dev-name = "glink_pkt_loopback_ctrl";
+ };
+
+ qcom,glinkpkt-loopback_data {
+ qcom,glinkpkt-transport = "lloop";
+ qcom,glinkpkt-edge = "local";
+ qcom,glinkpkt-ch-name = "glink_pkt_lloop_CLNT";
+ qcom,glinkpkt-dev-name = "glink_pkt_loopback";
+ };
+ };
+
+ qcom,cache_erp64@6500000 {
+ compatible = "qcom,kryo_cache_erp64";
+ reg = <0x6500000 0x4000>;
+ /*
+ * PPI 0 for L0/L1
+ * SPI 1 for Cluster 1 L2 Info
+ * SPI 9 for Cluster 2 L2 Info
+ * SPI 2 for Cluster 1 L2 Error
+ * SPI 10 for Cluster 2 L2 Error
+ * SPI 17 for L3 error
+ */
+ interrupts = <1 0 0>, <0 1 0>, <0 9 0>, <0 2 0>, <0 10 0>,
+ <0 17 0>;
+ interrupt-names = "l1_irq", "l2_irq_info_0", "l2_irq_info_1",
+ "l2_irq_err_0", "l2_irq_err_1", "l3_irq";
+ };
+
+ qcom,m4m_erp64@9A40000 {
+ compatible = "qcom,m4m_erp";
+ reg = <0x9A40000 0x40000>;
+ interrupts = <0 22 0>;
+ interrupt-names = "m4m_irq";
+ };
+
+ lmh: qcom,lmh {
+ compatible = "qcom,lmh_v1";
+ interrupts = <0 23 4>;
+ };
+
+ timer@09840000 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ compatible = "arm,armv7-timer-mem";
+ reg = <0x09840000 0x1000>;
+ clock-frequency = <19200000>;
+
+ frame@09850000 {
+ frame-number = <0>;
+ interrupts = <0 31 0x4>,
+ <0 30 0x4>;
+ reg = <0x09850000 0x1000>,
+ <0x09860000 0x1000>;
+ };
+
+ frame@09870000 {
+ frame-number = <1>;
+ interrupts = <0 32 0x4>;
+ reg = <0x09870000 0x1000>;
+ status = "disabled";
+ };
+
+ frame@09880000 {
+ frame-number = <2>;
+ interrupts = <0 33 0x4>;
+ reg = <0x09880000 0x1000>;
+ status = "disabled";
+ };
+
+ frame@09890000 {
+ frame-number = <3>;
+ interrupts = <0 34 0x4>;
+ reg = <0x09890000 0x1000>;
+ status = "disabled";
+ };
+
+ frame@098a0000 {
+ frame-number = <4>;
+ interrupts = <0 35 0x4>;
+ reg = <0x098a0000 0x1000>;
+ status = "disabled";
+ };
+
+ frame@098b0000 {
+ frame-number = <5>;
+ interrupts = <0 36 0x4>;
+ reg = <0x098b0000 0x1000>;
+ status = "disabled";
+ };
+
+ frame@098c0000 {
+ frame-number = <6>;
+ interrupts = <0 37 0x4>;
+ reg = <0x098c0000 0x1000>;
+ status = "disabled";
+ };
+ };
+
+ qcom,avtimer@90f7000 {
+ compatible = "qcom,avtimer";
+ reg = <0x90f700c 0x4>,
+ <0x90f7010 0x4>;
+ reg-names = "avtimer_lsb_addr", "avtimer_msb_addr";
+ qcom,clk-div = <27>;
+ };
+
+ mcd {
+ compatible = "qcom,mcd";
+ qcom,ce-hw-instance = <0>;
+ qcom,ce-device = <0>;
+ interrupts = <0 248 0>;
+ interrupt-names = "mcd_irq";
+ clock-names = "core_clk_src", "core_clk",
+ "iface_clk", "bus_clk";
+ clocks = <&clock_gcc clk_ce1_clk>,
+ <&clock_gcc clk_qseecom_ce1_clk>,
+ <&clock_gcc clk_gcc_ce1_ahb_m_clk>,
+ <&clock_gcc clk_gcc_ce1_axi_m_clk>;
+ qcom,ce-opp-freq = <171430000>;
+ };
+
+ dcc: dcc@4b3000 {
+ compatible = "qcom,dcc";
+ reg = <0x4b3000 0x1000>,
+ <0x4b4000 0x2000>,
+ <0x4b0000 0x4>;
+ reg-names = "dcc-base", "dcc-ram-base", "dcc-xpu-base";
+
+ clocks = <&clock_gcc clk_gcc_dcc_ahb_clk>;
+ clock-names = "dcc_clk";
+
+ qcom,save-reg;
+ };
+};
+
+&gdsc_venus {
+ clock-names = "bus_clk", "maxi_clk", "core_clk";
+ clocks = <&clock_mmss clk_video_axi_clk>,
+ <&clock_mmss clk_video_maxi_clk>,
+ <&clock_mmss clk_video_core_clk>;
+ parent-supply = <&gdsc_mmagic_video>;
+ status = "ok";
+};
+
+&gdsc_venus_core0 {
+ clock-names = "core0_clk";
+ clocks = <&clock_mmss clk_video_subcore0_clk>;
+ status = "ok";
+};
+
+&gdsc_venus_core1 {
+ clock-names = "core1_clk";
+ clocks = <&clock_mmss clk_video_subcore1_clk>;
+ status = "ok";
+};
+
+&gdsc_camss_top {
+ clock-names = "bus_clk", "vfe_axi";
+ clocks = <&clock_mmss clk_camss_cpp_axi_clk>,
+ <&clock_mmss clk_camss_vfe_axi_clk>;
+ parent-supply = <&gdsc_mmagic_camss>;
+ status = "ok";
+};
+
+&gdsc_vfe0 {
+ clock-names = "core0_clk";
+ clocks = <&clock_mmss clk_camss_vfe0_clk>;
+ parent-supply = <&gdsc_camss_top>;
+ status = "ok";
+};
+
+&gdsc_vfe1 {
+ clock-names = "core1_clk";
+ clocks = <&clock_mmss clk_camss_vfe1_clk>;
+ parent-supply = <&gdsc_camss_top>;
+ status = "ok";
+};
+
+&gdsc_jpeg {
+ clock-names = "bus_clk", "dma_clk", "core0_clk", "core2_clk";
+ clocks = <&clock_mmss clk_camss_jpeg_axi_clk>,
+ <&clock_mmss clk_camss_jpeg_dma_clk>,
+ <&clock_mmss clk_camss_jpeg0_clk>,
+ <&clock_mmss clk_camss_jpeg2_clk>;
+ parent-supply = <&gdsc_camss_top>;
+ status = "ok";
+};
+
+&gdsc_cpp {
+ clock-names = "core_clk";
+ clocks = <&clock_mmss clk_camss_cpp_clk>;
+ parent-supply = <&gdsc_camss_top>;
+ status = "ok";
+};
+
+&gdsc_fd {
+ clock-names = "core_clk", "core_uar_clk";
+ clocks = <&clock_mmss clk_fd_core_clk>,
+ <&clock_mmss clk_fd_core_uar_clk>;
+ parent-supply = <&gdsc_camss_top>;
+ status = "ok";
+};
+
+&gdsc_mdss {
+ clock-names = "bus_clk", "core_clk";
+ clocks = <&clock_mmss clk_mdss_axi_clk>,
+ <&clock_mmss clk_mdss_mdp_clk>;
+ parent-supply = <&gdsc_mmagic_mdss>;
+ proxy-supply = <&gdsc_mdss>;
+ qcom,proxy-consumer-enable;
+ status = "ok";
+};
+
+&gdsc_pcie_0 {
+ status = "ok";
+};
+
+&gdsc_pcie_1 {
+ status = "ok";
+};
+
+&gdsc_pcie_2 {
+ status = "ok";
+};
+
+&gdsc_usb30 {
+ reg = <0x30f004 0x4>;
+ status = "ok";
+};
+
+&gdsc_ufs {
+ status = "ok";
+};
+
+&gdsc_gpu {
+ status = "ok";
+};
+
+&gdsc_gpu_gx {
+ clock-names = "core_clk", "core_root_clk";
+ clocks = <&clock_gpu clk_gpu_gx_gfx3d_clk>,
+ <&clock_gpu clk_gfx3d_clk_src>;
+ qcom,force-enable-root-clk;
+ parent-supply = <&gfx_vreg>;
+ status = "ok";
+};
+
+&gdsc_hlos1_vote_aggre0_noc {
+ status = "ok";
+};
+
+&gdsc_hlos1_vote_lpass_adsp {
+ status = "ok";
+};
+
+&gdsc_hlos1_vote_lpass_core {
+ status = "ok";
+};
+
+&gdsc_aggre0_noc {
+ status = "ok";
+};
+
+&gdsc_mmagic_bimc {
+ status = "ok";
+};
+
+&gdsc_mmagic_video {
+ clock-names = "core_root_clk";
+ /* RPM enables the mmagic bimc GDSC when this clk node is voted for. */
+ clocks = <&clock_gcc clk_mmssnoc_gds_clk>;
+ qcom,enable-root-clk;
+ status = "ok";
+};
+
+&gdsc_mmagic_mdss {
+ clock-names = "core_root_clk";
+ /* RPM enables the mmagic bimc GDSC when this clk node is voted for. */
+ clocks = <&clock_gcc clk_mmssnoc_gds_clk>;
+ qcom,enable-root-clk;
+ status = "ok";
+};
+
+&gdsc_mmagic_camss {
+ clock-names = "core_root_clk";
+ /* RPM enables the mmagic bimc GDSC when this clk node is voted for. */
+ clocks = <&clock_gcc clk_mmssnoc_gds_clk>;
+ qcom,enable-root-clk;
+ status = "ok";
+};
+
+#include "msm-pm8994-rpm-regulator.dtsi"
+#include "msm-pm8994.dtsi"
+#include "msm-pmi8994.dtsi"
+#include "msm8996-regulator.dtsi"
+#include "msm8996-camera.dtsi"
+#include "msm8996-gpu.dtsi"
+#include "msm8996-pm.dtsi"
+#include "msm-arm-smmu-8996.dtsi"
+#include "msm8996-vidc.dtsi"
diff --git a/arch/arm64/boot/dts/qcom/skeleton64.dtsi b/arch/arm64/boot/dts/qcom/skeleton64.dtsi
new file mode 100644
index 000000000000..1f8ba28132c4
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/skeleton64.dtsi
@@ -0,0 +1,15 @@
+/*
+ * Skeleton device tree in the 64 bits version; the bare minimum
+ * needed to boot; just include and add a compatible value. The
+ * bootloader will typically populate the memory node.
+ */
+
+/ {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ cpus { };
+ soc { };
+ chosen { };
+ aliases { };
+ memory { device_type = "memory"; reg = <0 0 0 0>; };
+};