Import the msm8916 devicetree from Linux and adjust the dragonboard410c
devicetree to use it.

Signed-off-by: Caleb Connolly <caleb.conno...@linaro.org>
---
 arch/arm/dts/dragonboard410c-uboot.dtsi         |   44 -
 arch/arm/dts/dragonboard410c.dts                |  198 +-
 arch/arm/dts/msm8916-pins.dtsi                  |  582 ++++++
 arch/arm/dts/msm8916-pm8916.dtsi                |   76 +
 arch/arm/dts/msm8916.dtsi                       | 2194 +++++++++++++++++++++++
 arch/arm/dts/pm8916.dtsi                        |  183 ++
 include/dt-bindings/arm/coresight-cti-dt.h      |   37 +
 include/dt-bindings/clock/qcom,rpmcc.h          |  174 ++
 include/dt-bindings/interconnect/qcom,msm8916.h |  100 ++
 include/dt-bindings/reset/qcom,gcc-msm8916.h    |  100 ++
 10 files changed, 3484 insertions(+), 204 deletions(-)

diff --git a/arch/arm/dts/dragonboard410c-uboot.dtsi 
b/arch/arm/dts/dragonboard410c-uboot.dtsi
deleted file mode 100644
index cec64bf80f99..000000000000
--- a/arch/arm/dts/dragonboard410c-uboot.dtsi
+++ /dev/null
@@ -1,44 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * U-Boot addition to handle Dragonboard 410c pins
- *
- * (C) Copyright 2015 Mateusz Kulikowski <mateusz.kulikow...@gmail.com>
- */
-
-/ {
-
-       smem {
-               bootph-all;
-       };
-
-       soc {
-               bootph-all;
-
-               pinctrl@1000000 {
-                       bootph-all;
-
-                       uart {
-                               bootph-all;
-                       };
-               };
-
-               qcom,gcc@1800000 {
-                       bootph-all;
-               };
-
-               serial@78b0000 {
-                       bootph-all;
-               };
-       };
-};
-
-
-&pm8916_gpios {
-       usb_hub_reset_pm {
-               gpios = <&pm8916_gpios 2 0>;
-       };
-
-       usb_sw_sel_pm {
-               gpios = <&pm8916_gpios 3 0>;
-       };
-};
diff --git a/arch/arm/dts/dragonboard410c.dts b/arch/arm/dts/dragonboard410c.dts
index a42b68fee8c0..8933c64e56e5 100644
--- a/arch/arm/dts/dragonboard410c.dts
+++ b/arch/arm/dts/dragonboard410c.dts
@@ -7,193 +7,40 @@
 
 /dts-v1/;
 
-#include "skeleton64.dtsi"
 #include <dt-bindings/gpio/gpio.h>
 
+#include "msm8916-pm8916.dtsi"
+
 / {
        model = "Qualcomm Technologies, Inc. Dragonboard 410c";
        compatible = "qcom,apq8016-sbc", "qcom,apq8016";
        qcom,msm-id = <0xce 0x0 0xf8 0x0 0xf9 0x0 0xfa 0x0 0xf7 0x0>;
        qcom,board-id = <0x10018 0x0>;
-       #address-cells = <0x2>;
-       #size-cells = <0x2>;
 
        aliases {
                usb0 = "/soc/ehci@78d9000";
+               serial0 = &blsp1_uart2;
        };
 
-       memory {
+       memory@80000000 {
                device_type = "memory";
                reg = <0 0x80000000 0 0x3da00000>;
        };
 
-       reserved-memory {
-               #address-cells = <2>;
-               #size-cells = <2>;
-               ranges;
-
-               smem_mem: smem_region@86300000 {
-                       reg = <0x0 0x86300000 0x0 0x100000>;
-                       no-map;
-               };
-       };
-
        chosen {
                stdout-path = "/soc/serial@78b0000";
        };
 
-       smem {
-               compatible = "qcom,smem";
-               memory-region = <&smem_mem>;
-               qcom,rpm-msg-ram = <&rpm_msg_ram>;
-       };
-
-       soc {
-               #address-cells = <0x1>;
-               #size-cells = <0x1>;
-               ranges = <0x0 0x0 0x0 0xffffffff>;
-               compatible = "simple-bus";
-
-               rpm_msg_ram: memory@60000 {
-                       compatible = "qcom,rpm-msg-ram";
-                       reg = <0x60000 0x8000>;
-               };
-
-               soc_gpios: pinctrl@1000000 {
-                       compatible = "qcom,msm8916-pinctrl";
-                       reg = <0x1000000 0x400000>;
-                       gpio-controller;
-                       gpio-count = <122>;
-                       gpio-bank-name="soc";
-                       #gpio-cells = <2>;
-
-                       blsp1_uart: uart {
-                               function = "blsp1_uart";
-                               pins = "GPIO_4", "GPIO_5";
-                               drive-strength = <8>;
-                               bias-disable;
-                       };
-               };
-               clkc: qcom,gcc@1800000 {
-                       compatible = "qcom,gcc-msm8916";
-                       reg = <0x1800000 0x80000>;
-                       #address-cells = <0x1>;
-                       #size-cells = <0x0>;
-                       #clock-cells = <0x1>;
-               };
-
-               serial@78b0000 {
-                       compatible = "qcom,msm-uartdm-v1.4";
-                       reg = <0x78b0000 0x200>;
-                       clocks = <&clkc 4>;
-                       clock-names = "core";
-                       pinctrl-names = "uart";
-                       pinctrl-0 = <&blsp1_uart>;
-               };
-
-               ehci@78d9000 {
-                       compatible = "qcom,ci-hdrc";
-                       reg = <0x78d9000 0x400>;
-                       phys = <&ehci_phy>;
-               };
-
-               ehci_phy: ehci_phy@78d9000 {
-                       compatible = "qcom,usb-hs-phy-msm8916";
-                       reg = <0x78d9000 0x400>;
-                       #phy-cells = <0>;
-               };
-
-               sdhci@07824000 {
-                       compatible = "qcom,sdhci-msm-v4";
-                       reg = <0x7824900 0x11c 0x7824000 0x800>;
-                       bus-width = <0x8>;
-                       index = <0x0>;
-                       non-removable;
-                       clock = <&clkc 0>;
-                       clock-frequency = <100000000>;
-               };
-
-               sdhci@07864000 {
-                       compatible = "qcom,sdhci-msm-v4";
-                       reg = <0x7864900 0x11c 0x7864000 0x800>;
-                       index = <0x1>;
-                       bus-width = <0x4>;
-                       clock = <&clkc 1>;
-                       clock-frequency = <200000000>;
-                       cd-gpios = <&soc_gpios 38 GPIO_ACTIVE_LOW>;
-               };
-
-               wcnss {
-                       bt {
-                               compatible="qcom,wcnss-bt";
-                       };
-
-                       wifi {
-                               compatible="qcom,wcnss-wlan";
-                       };
-               };
-
-               spmi_bus: spmi@200f000 {
-                       compatible = "qcom,spmi-pmic-arb";
-                       reg = <0x0200f000 0x001000>,
-                             <0x02400000 0x400000>,
-                             <0x02c00000 0x400000>,
-                             <0x03800000 0x200000>,
-                             <0x0200a000 0x002100>;
-                       reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
-                       #address-cells = <0x1>;
-                       #size-cells = <0x1>;
-                       pmic0: pm8916@0 {
-                               compatible = "qcom,spmi-pmic";
-                               reg = <0x0 0x1>;
-                               #address-cells = <0x1>;
-                               #size-cells = <0x1>;
-
-                               pon@800 {
-                                       compatible = "qcom,pm8916-pon";
-                                       reg = <0x800 0x100>;
-                                       mode-bootloader = <0x2>;
-                                       mode-recovery = <0x1>;
-
-                                       pwrkey {
-                                               compatible = 
"qcom,pm8941-pwrkey";
-                                               debounce = <15625>;
-                                               bias-pull-up;
-                                       };
-
-                                       pm8916_resin: resin {
-                                               compatible = 
"qcom,pm8941-resin";
-                                               debounce = <15625>;
-                                               bias-pull-up;
-                                       };
-                               };
-
-                               pm8916_gpios: pm8916_gpios@c000 {
-                                       compatible = "qcom,pm8916-gpio";
-                                       reg = <0xc000 0x400>;
-                                       gpio-controller;
-                                       gpio-ranges = <&pm8916_gpios 0 0 4>;
-                                       #gpio-cells = <2>;
-                               };
-                       };
-
-                       pmic1: pm8916@1 {
-                               compatible = "qcom,spmi-pmic";
-                               reg = <0x1 0x1>;
-                       };
-               };
-       };
-
        leds {
                compatible = "gpio-leds";
                user1 {
                        label = "green:user1";
-                       gpios = <&soc_gpios 21 0>;
+                       gpios = <&msmgpio 21 0>;
                };
 
                user2 {
                        label = "green:user2";
-                       gpios = <&soc_gpios 120 0>;
+                       gpios = <&msmgpio 120 0>;
                };
 
                user3 {
@@ -208,4 +55,35 @@
        };
 };
 
-#include "dragonboard410c-uboot.dtsi"
+&blsp1_uart2 {
+       status = "okay";
+};
+
+&pm8916_gpios {
+       usb_hub_reset_pm {
+               gpios = <&pm8916_gpios 2 0>;
+       };
+
+       usb_sw_sel_pm {
+               gpios = <&pm8916_gpios 3 0>;
+       };
+};
+
+&pm8916_resin {
+       status = "okay";
+};
+
+&sdhc_1 {
+       status = "okay";
+       clock-frequency = <100000000>;
+};
+
+&sdhc_2 {
+       status = "okay";
+       cd-gpios = <&msmgpio 38 GPIO_ACTIVE_LOW>;
+       clock-frequency = <200000000>;
+};
+
+&usb {
+       status = "okay";
+};
diff --git a/arch/arm/dts/msm8916-pins.dtsi b/arch/arm/dts/msm8916-pins.dtsi
new file mode 100644
index 000000000000..33dfcf318a81
--- /dev/null
+++ b/arch/arm/dts/msm8916-pins.dtsi
@@ -0,0 +1,582 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
+ */
+
+&msmgpio {
+
+       blsp1_uart1_default: blsp1-uart1-default-state {
+               /* TX, RX, CTS_N, RTS_N */
+               pins = "gpio0", "gpio1", "gpio2", "gpio3";
+               function = "blsp_uart1";
+
+               drive-strength = <16>;
+               bias-disable;
+       };
+
+       blsp1_uart1_sleep: blsp1-uart1-sleep-state {
+               pins = "gpio0", "gpio1", "gpio2", "gpio3";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       blsp1_uart2_default: blsp1-uart2-default-state {
+               pins = "gpio4", "gpio5";
+               function = "blsp_uart2";
+
+               drive-strength = <16>;
+               bias-disable;
+       };
+
+       blsp1_uart2_sleep: blsp1-uart2-sleep-state {
+               pins = "gpio4", "gpio5";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       spi1_default: spi1-default-state {
+               spi-pins {
+                       pins = "gpio0", "gpio1", "gpio3";
+                       function = "blsp_spi1";
+
+                       drive-strength = <12>;
+                       bias-disable;
+               };
+               cs-pins {
+                       pins = "gpio2";
+                       function = "gpio";
+
+                       drive-strength = <16>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+
+       spi1_sleep: spi1-sleep-state {
+               pins = "gpio0", "gpio1", "gpio2", "gpio3";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       spi2_default: spi2-default-state {
+               spi-pins {
+                       pins = "gpio4", "gpio5", "gpio7";
+                       function = "blsp_spi2";
+
+                       drive-strength = <12>;
+                       bias-disable;
+               };
+               cs-pins {
+                       pins = "gpio6";
+                       function = "gpio";
+
+                       drive-strength = <16>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+
+       spi2_sleep: spi2-sleep-state {
+               pins = "gpio4", "gpio5", "gpio6", "gpio7";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       spi3_default: spi3-default-state {
+               spi-pins {
+                       pins = "gpio8", "gpio9", "gpio11";
+                       function = "blsp_spi3";
+
+                       drive-strength = <12>;
+                       bias-disable;
+               };
+               cs-pins {
+                       pins = "gpio10";
+                       function = "gpio";
+
+                       drive-strength = <16>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+
+       spi3_sleep: spi3-sleep-state {
+               pins = "gpio8", "gpio9", "gpio10", "gpio11";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       spi4_default: spi4-default-state {
+               spi-pins {
+                       pins = "gpio12", "gpio13", "gpio15";
+                       function = "blsp_spi4";
+
+                       drive-strength = <12>;
+                       bias-disable;
+               };
+               cs-pins {
+                       pins = "gpio14";
+                       function = "gpio";
+
+                       drive-strength = <16>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+
+       spi4_sleep: spi4-sleep-state {
+               pins = "gpio12", "gpio13", "gpio14", "gpio15";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       spi5_default: spi5-default-state {
+               spi-pins {
+                       pins = "gpio16", "gpio17", "gpio19";
+                       function = "blsp_spi5";
+
+                       drive-strength = <12>;
+                       bias-disable;
+               };
+               cs-pins {
+                       pins = "gpio18";
+                       function = "gpio";
+
+                       drive-strength = <16>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+
+       spi5_sleep: spi5-sleep-state {
+               pins = "gpio16", "gpio17", "gpio18", "gpio19";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       spi6_default: spi6-default-state {
+               spi-pins {
+                       pins = "gpio20", "gpio21", "gpio23";
+                       function = "blsp_spi6";
+
+                       drive-strength = <12>;
+                       bias-disable;
+               };
+               cs-pins {
+                       pins = "gpio22";
+                       function = "gpio";
+
+                       drive-strength = <16>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+
+       spi6_sleep: spi6-sleep-state {
+               pins = "gpio20", "gpio21", "gpio22", "gpio23";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       i2c1_default: i2c1-default-state {
+               pins = "gpio2", "gpio3";
+               function = "blsp_i2c1";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       i2c1_sleep: i2c1-sleep-state {
+               pins = "gpio2", "gpio3";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       i2c2_default: i2c2-default-state {
+               pins = "gpio6", "gpio7";
+               function = "blsp_i2c2";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       i2c2_sleep: i2c2-sleep-state {
+               pins = "gpio6", "gpio7";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       i2c3_default: i2c3-default-state {
+               pins = "gpio10", "gpio11";
+               function = "blsp_i2c3";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       i2c3_sleep: i2c3-sleep-state {
+               pins = "gpio10", "gpio11";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       i2c4_default: i2c4-default-state {
+               pins = "gpio14", "gpio15";
+               function = "blsp_i2c4";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       i2c4_sleep: i2c4-sleep-state {
+               pins = "gpio14", "gpio15";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       i2c5_default: i2c5-default-state {
+               pins = "gpio18", "gpio19";
+               function = "blsp_i2c5";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       i2c5_sleep: i2c5-sleep-state {
+               pins = "gpio18", "gpio19";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       i2c6_default: i2c6-default-state {
+               pins = "gpio22", "gpio23";
+               function = "blsp_i2c6";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       i2c6_sleep: i2c6-sleep-state {
+               pins = "gpio22", "gpio23";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       pmx-sdc1-clk-state {
+               sdc1_clk_on: clk-on-pins {
+                       pins = "sdc1_clk";
+
+                       bias-disable;
+                       drive-strength = <16>;
+               };
+               sdc1_clk_off: clk-off-pins {
+                       pins = "sdc1_clk";
+
+                       bias-disable;
+                       drive-strength = <2>;
+               };
+       };
+
+       pmx-sdc1-cmd-state {
+               sdc1_cmd_on: cmd-on-pins {
+                       pins = "sdc1_cmd";
+
+                       bias-pull-up;
+                       drive-strength = <10>;
+               };
+               sdc1_cmd_off: cmd-off-pins {
+                       pins = "sdc1_cmd";
+
+                       bias-pull-up;
+                       drive-strength = <2>;
+               };
+       };
+
+       pmx-sdc1-data-state {
+               sdc1_data_on: data-on-pins {
+                       pins = "sdc1_data";
+
+                       bias-pull-up;
+                       drive-strength = <10>;
+               };
+               sdc1_data_off: data-off-pins {
+                       pins = "sdc1_data";
+
+                       bias-pull-up;
+                       drive-strength = <2>;
+               };
+       };
+
+       pmx-sdc2-clk-state {
+               sdc2_clk_on: clk-on-pins {
+                       pins = "sdc2_clk";
+
+                       bias-disable;
+                       drive-strength = <16>;
+               };
+               sdc2_clk_off: clk-off-pins {
+                       pins = "sdc2_clk";
+
+                       bias-disable;
+                       drive-strength = <2>;
+               };
+       };
+
+       pmx-sdc2-cmd-state {
+               sdc2_cmd_on: cmd-on-pins {
+                       pins = "sdc2_cmd";
+
+                       bias-pull-up;
+                       drive-strength = <10>;
+               };
+               sdc2_cmd_off: cmd-off-pins {
+                       pins = "sdc2_cmd";
+
+                       bias-pull-up;
+                       drive-strength = <2>;
+               };
+       };
+
+       pmx-sdc2-data-state {
+               sdc2_data_on: data-on-pins {
+                       pins = "sdc2_data";
+
+                       bias-pull-up;
+                       drive-strength = <10>;
+               };
+               sdc2_data_off: data-off-pins {
+                       pins = "sdc2_data";
+
+                       bias-pull-up;
+                       drive-strength = <2>;
+               };
+       };
+
+       pmx-sdc2-cd-pin-state {
+               sdc2_cd_on: cd-on-pins {
+                       pins = "gpio38";
+                       function = "gpio";
+
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+               sdc2_cd_off: cd-off-pins {
+                       pins = "gpio38";
+                       function = "gpio";
+
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+       };
+
+       cdc-pdm-lines-state {
+               cdc_pdm_lines_act: pdm-lines-on-pins {
+                       pins = "gpio63", "gpio64", "gpio65", "gpio66",
+                              "gpio67", "gpio68";
+                       function = "cdc_pdm0";
+
+                       drive-strength = <8>;
+                       bias-disable;
+               };
+               cdc_pdm_lines_sus: pdm-lines-off-pins {
+                       pins = "gpio63", "gpio64", "gpio65", "gpio66",
+                              "gpio67", "gpio68";
+                       function = "cdc_pdm0";
+
+                       drive-strength = <2>;
+                       bias-pull-down;
+               };
+       };
+
+       ext-pri-tlmm-lines-state {
+               ext_pri_tlmm_lines_act: ext-pa-on-pins {
+                       pins = "gpio113", "gpio114", "gpio115", "gpio116";
+                       function = "pri_mi2s";
+
+                       drive-strength = <8>;
+                       bias-disable;
+               };
+               ext_pri_tlmm_lines_sus: ext-pa-off-pins {
+                       pins = "gpio113", "gpio114", "gpio115", "gpio116";
+                       function = "pri_mi2s";
+
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+       };
+
+       ext-pri-ws-line-state {
+               ext_pri_ws_act: ext-pa-on-pins {
+                       pins = "gpio110";
+                       function = "pri_mi2s_ws";
+
+                       drive-strength = <8>;
+                       bias-disable;
+               };
+               ext_pri_ws_sus: ext-pa-off-pins {
+                       pins = "gpio110";
+                       function = "pri_mi2s_ws";
+
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+       };
+
+       ext-mclk-tlmm-lines-state {
+               ext_mclk_tlmm_lines_act: mclk-lines-on-pins {
+                       pins = "gpio116";
+                       function = "pri_mi2s";
+
+                       drive-strength = <8>;
+                       bias-disable;
+               };
+               ext_mclk_tlmm_lines_sus: mclk-lines-off-pins {
+                       pins = "gpio116";
+                       function = "pri_mi2s";
+
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+       };
+
+       /* secondary Mi2S */
+       ext-sec-tlmm-lines-state {
+               ext_sec_tlmm_lines_act: tlmm-lines-on-pins {
+                       pins = "gpio112", "gpio117", "gpio118", "gpio119";
+                       function = "sec_mi2s";
+
+                       drive-strength = <8>;
+                       bias-disable;
+               };
+               ext_sec_tlmm_lines_sus: tlmm-lines-off-pins {
+                       pins = "gpio112", "gpio117", "gpio118", "gpio119";
+                       function = "sec_mi2s";
+
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+       };
+
+       cdc_dmic_lines_act: cdc-dmic-lines-on-state {
+               clk-pins {
+                       pins = "gpio0";
+                       function = "dmic0_clk";
+
+                       drive-strength = <8>;
+               };
+               data-pins {
+                       pins = "gpio1";
+                       function = "dmic0_data";
+
+                       drive-strength = <8>;
+               };
+       };
+       cdc_dmic_lines_sus: cdc-dmic-lines-off-state {
+               clk-pins {
+                       pins = "gpio0";
+                       function = "dmic0_clk";
+
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+               data-pins {
+                       pins = "gpio1";
+                       function = "dmic0_data";
+
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+       };
+
+       wcnss_pin_a: wcnss-active-state {
+               pins = "gpio40", "gpio41", "gpio42", "gpio43", "gpio44";
+               function = "wcss_wlan";
+
+               drive-strength = <6>;
+               bias-pull-up;
+       };
+
+       cci0_default: cci0-default-state {
+               pins = "gpio29", "gpio30";
+               function = "cci_i2c";
+
+               drive-strength = <16>;
+               bias-disable;
+       };
+
+       camera_front_default: camera-front-default-state {
+               pwdn-pins {
+                       pins = "gpio33";
+                       function = "gpio";
+
+                       drive-strength = <16>;
+                       bias-disable;
+               };
+               rst-pins {
+                       pins = "gpio28";
+                       function = "gpio";
+
+                       drive-strength = <16>;
+                       bias-disable;
+               };
+               mclk1-pins {
+                       pins = "gpio27";
+                       function = "cam_mclk1";
+
+                       drive-strength = <16>;
+                       bias-disable;
+               };
+       };
+
+       camera_rear_default: camera-rear-default-state {
+               pwdn-pins {
+                       pins = "gpio34";
+                       function = "gpio";
+
+                       drive-strength = <16>;
+                       bias-disable;
+               };
+               rst-pins {
+                       pins = "gpio35";
+                       function = "gpio";
+
+                       drive-strength = <16>;
+                       bias-disable;
+               };
+               mclk0-pins {
+                       pins = "gpio26";
+                       function = "cam_mclk0";
+
+                       drive-strength = <16>;
+                       bias-disable;
+               };
+       };
+};
diff --git a/arch/arm/dts/msm8916-pm8916.dtsi b/arch/arm/dts/msm8916-pm8916.dtsi
new file mode 100644
index 000000000000..6eb5e0a39510
--- /dev/null
+++ b/arch/arm/dts/msm8916-pm8916.dtsi
@@ -0,0 +1,76 @@
+// SPDX-License-Identifier: GPL-2.0-only
+
+#include "msm8916.dtsi"
+#include "pm8916.dtsi"
+
+&camss {
+       vdda-supply = <&pm8916_l2>;
+};
+
+&dsi0 {
+       vdda-supply = <&pm8916_l2>;
+       vddio-supply = <&pm8916_l6>;
+};
+
+&dsi_phy0 {
+       vddio-supply = <&pm8916_l6>;
+};
+
+&mpss {
+       pll-supply = <&pm8916_l7>;
+};
+
+&sdhc_1 {
+       vmmc-supply = <&pm8916_l8>;
+       vqmmc-supply = <&pm8916_l5>;
+};
+
+&sdhc_2 {
+       vmmc-supply = <&pm8916_l11>;
+       vqmmc-supply = <&pm8916_l12>;
+};
+
+&usb_hs_phy {
+       v1p8-supply = <&pm8916_l7>;
+       v3p3-supply = <&pm8916_l13>;
+};
+
+&wcnss {
+       vddpx-supply = <&pm8916_l7>;
+};
+
+&wcnss_iris {
+       vddxo-supply = <&pm8916_l7>;
+       vddrfa-supply = <&pm8916_s3>;
+       vddpa-supply = <&pm8916_l9>;
+       vdddig-supply = <&pm8916_l5>;
+};
+
+&rpm_requests {
+       smd_rpm_regulators: regulators {
+               compatible = "qcom,rpm-pm8916-regulators";
+
+               /* pm8916_s1 is managed by rpmpd (MSM8916_VDDCX) */
+               pm8916_s3: s3 {};
+               pm8916_s4: s4 {};
+
+               pm8916_l1: l1 {};
+               pm8916_l2: l2 {};
+               /* pm8916_l3 is managed by rpmpd (MSM8916_VDDMX) */
+               pm8916_l4: l4 {};
+               pm8916_l5: l5 {};
+               pm8916_l6: l6 {};
+               pm8916_l7: l7 {};
+               pm8916_l8: l8 {};
+               pm8916_l9: l9 {};
+               pm8916_l10: l10 {};
+               pm8916_l11: l11 {};
+               pm8916_l12: l12 {};
+               pm8916_l13: l13 {};
+               pm8916_l14: l14 {};
+               pm8916_l15: l15 {};
+               pm8916_l16: l16 {};
+               pm8916_l17: l17 {};
+               pm8916_l18: l18 {};
+       };
+};
diff --git a/arch/arm/dts/msm8916.dtsi b/arch/arm/dts/msm8916.dtsi
new file mode 100644
index 000000000000..834e0b66b7f2
--- /dev/null
+++ b/arch/arm/dts/msm8916.dtsi
@@ -0,0 +1,2194 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
+ */
+
+#include <dt-bindings/arm/coresight-cti-dt.h>
+#include <dt-bindings/clock/qcom,gcc-msm8916.h>
+#include <dt-bindings/clock/qcom,rpmcc.h>
+#include <dt-bindings/interconnect/qcom,msm8916.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/power/qcom-rpmpd.h>
+#include <dt-bindings/reset/qcom,gcc-msm8916.h>
+#include <dt-bindings/thermal/thermal.h>
+
+/ {
+       interrupt-parent = <&intc>;
+
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       aliases {
+               mmc0 = &sdhc_1; /* SDC1 eMMC slot */
+               mmc1 = &sdhc_2; /* SDC2 SD card slot */
+       };
+
+       chosen { };
+
+       memory@80000000 {
+               device_type = "memory";
+               /* We expect the bootloader to fill in the reg */
+               reg = <0 0x80000000 0 0>;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               tz-apps@86000000 {
+                       reg = <0x0 0x86000000 0x0 0x300000>;
+                       no-map;
+               };
+
+               smem@86300000 {
+                       compatible = "qcom,smem";
+                       reg = <0x0 0x86300000 0x0 0x100000>;
+                       no-map;
+
+                       hwlocks = <&tcsr_mutex 3>;
+                       qcom,rpm-msg-ram = <&rpm_msg_ram>;
+               };
+
+               hypervisor@86400000 {
+                       reg = <0x0 0x86400000 0x0 0x100000>;
+                       no-map;
+               };
+
+               tz@86500000 {
+                       reg = <0x0 0x86500000 0x0 0x180000>;
+                       no-map;
+               };
+
+               reserved@86680000 {
+                       reg = <0x0 0x86680000 0x0 0x80000>;
+                       no-map;
+               };
+
+               rmtfs@86700000 {
+                       compatible = "qcom,rmtfs-mem";
+                       reg = <0x0 0x86700000 0x0 0xe0000>;
+                       no-map;
+
+                       qcom,client-id = <1>;
+               };
+
+               rfsa@867e0000 {
+                       reg = <0x0 0x867e0000 0x0 0x20000>;
+                       no-map;
+               };
+
+               mpss_mem: mpss@86800000 {
+                       reg = <0x0 0x86800000 0x0 0x2b00000>;
+                       no-map;
+               };
+
+               wcnss_mem: wcnss@89300000 {
+                       reg = <0x0 0x89300000 0x0 0x600000>;
+                       no-map;
+               };
+
+               venus_mem: venus@89900000 {
+                       reg = <0x0 0x89900000 0x0 0x600000>;
+                       no-map;
+               };
+
+               mba_mem: mba@8ea00000 {
+                       no-map;
+                       reg = <0 0x8ea00000 0 0x100000>;
+               };
+       };
+
+       clocks {
+               xo_board: xo-board {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <19200000>;
+               };
+
+               sleep_clk: sleep-clk {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <32768>;
+               };
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               CPU0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0>;
+                       next-level-cache = <&L2_0>;
+                       enable-method = "psci";
+                       clocks = <&apcs>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       #cooling-cells = <2>;
+                       power-domains = <&CPU_PD0>;
+                       power-domain-names = "psci";
+                       qcom,acc = <&cpu0_acc>;
+                       qcom,saw = <&cpu0_saw>;
+               };
+
+               CPU1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x1>;
+                       next-level-cache = <&L2_0>;
+                       enable-method = "psci";
+                       clocks = <&apcs>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       #cooling-cells = <2>;
+                       power-domains = <&CPU_PD1>;
+                       power-domain-names = "psci";
+                       qcom,acc = <&cpu1_acc>;
+                       qcom,saw = <&cpu1_saw>;
+               };
+
+               CPU2: cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x2>;
+                       next-level-cache = <&L2_0>;
+                       enable-method = "psci";
+                       clocks = <&apcs>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       #cooling-cells = <2>;
+                       power-domains = <&CPU_PD2>;
+                       power-domain-names = "psci";
+                       qcom,acc = <&cpu2_acc>;
+                       qcom,saw = <&cpu2_saw>;
+               };
+
+               CPU3: cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x3>;
+                       next-level-cache = <&L2_0>;
+                       enable-method = "psci";
+                       clocks = <&apcs>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       #cooling-cells = <2>;
+                       power-domains = <&CPU_PD3>;
+                       power-domain-names = "psci";
+                       qcom,acc = <&cpu3_acc>;
+                       qcom,saw = <&cpu3_saw>;
+               };
+
+               L2_0: l2-cache {
+                       compatible = "cache";
+                       cache-level = <2>;
+                       cache-unified;
+               };
+
+               idle-states {
+                       entry-method = "psci";
+
+                       CPU_SLEEP_0: cpu-sleep-0 {
+                               compatible = "arm,idle-state";
+                               idle-state-name = "standalone-power-collapse";
+                               arm,psci-suspend-param = <0x40000002>;
+                               entry-latency-us = <130>;
+                               exit-latency-us = <150>;
+                               min-residency-us = <2000>;
+                               local-timer-stop;
+                       };
+               };
+
+               domain-idle-states {
+
+                       CLUSTER_RET: cluster-retention {
+                               compatible = "domain-idle-state";
+                               arm,psci-suspend-param = <0x41000012>;
+                               entry-latency-us = <500>;
+                               exit-latency-us = <500>;
+                               min-residency-us = <2000>;
+                       };
+
+                       CLUSTER_PWRDN: cluster-gdhs {
+                               compatible = "domain-idle-state";
+                               arm,psci-suspend-param = <0x41000032>;
+                               entry-latency-us = <2000>;
+                               exit-latency-us = <2000>;
+                               min-residency-us = <6000>;
+                       };
+               };
+       };
+
+       cpu_opp_table: opp-table-cpu {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp-200000000 {
+                       opp-hz = /bits/ 64 <200000000>;
+               };
+               opp-400000000 {
+                       opp-hz = /bits/ 64 <400000000>;
+               };
+               opp-800000000 {
+                       opp-hz = /bits/ 64 <800000000>;
+               };
+               opp-998400000 {
+                       opp-hz = /bits/ 64 <998400000>;
+               };
+       };
+
+       firmware {
+               scm: scm {
+                       compatible = "qcom,scm-msm8916", "qcom,scm";
+                       clocks = <&gcc GCC_CRYPTO_CLK>,
+                                <&gcc GCC_CRYPTO_AXI_CLK>,
+                                <&gcc GCC_CRYPTO_AHB_CLK>;
+                       clock-names = "core", "bus", "iface";
+                       #reset-cells = <1>;
+
+                       qcom,dload-mode = <&tcsr 0x6100>;
+               };
+       };
+
+       pmu {
+               compatible = "arm,cortex-a53-pmu";
+               interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | 
IRQ_TYPE_LEVEL_HIGH)>;
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+
+               CPU_PD0: power-domain-cpu0 {
+                       #power-domain-cells = <0>;
+                       power-domains = <&CLUSTER_PD>;
+                       domain-idle-states = <&CPU_SLEEP_0>;
+               };
+
+               CPU_PD1: power-domain-cpu1 {
+                       #power-domain-cells = <0>;
+                       power-domains = <&CLUSTER_PD>;
+                       domain-idle-states = <&CPU_SLEEP_0>;
+               };
+
+               CPU_PD2: power-domain-cpu2 {
+                       #power-domain-cells = <0>;
+                       power-domains = <&CLUSTER_PD>;
+                       domain-idle-states = <&CPU_SLEEP_0>;
+               };
+
+               CPU_PD3: power-domain-cpu3 {
+                       #power-domain-cells = <0>;
+                       power-domains = <&CLUSTER_PD>;
+                       domain-idle-states = <&CPU_SLEEP_0>;
+               };
+
+               CLUSTER_PD: power-domain-cluster {
+                       #power-domain-cells = <0>;
+                       domain-idle-states = <&CLUSTER_RET>, <&CLUSTER_PWRDN>;
+               };
+       };
+
+       smd {
+               compatible = "qcom,smd";
+
+               rpm {
+                       interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
+                       qcom,ipc = <&apcs 8 0>;
+                       qcom,smd-edge = <15>;
+
+                       rpm_requests: rpm-requests {
+                               compatible = "qcom,rpm-msm8916";
+                               qcom,smd-channels = "rpm_requests";
+
+                               rpmcc: clock-controller {
+                                       compatible = "qcom,rpmcc-msm8916", 
"qcom,rpmcc";
+                                       #clock-cells = <1>;
+                                       clocks = <&xo_board>;
+                                       clock-names = "xo";
+                               };
+
+                               rpmpd: power-controller {
+                                       compatible = "qcom,msm8916-rpmpd";
+                                       #power-domain-cells = <1>;
+                                       operating-points-v2 = 
<&rpmpd_opp_table>;
+
+                                       rpmpd_opp_table: opp-table {
+                                               compatible = 
"operating-points-v2";
+
+                                               rpmpd_opp_ret: opp1 {
+                                                       opp-level = <1>;
+                                               };
+                                               rpmpd_opp_svs_krait: opp2 {
+                                                       opp-level = <2>;
+                                               };
+                                               rpmpd_opp_svs_soc: opp3 {
+                                                       opp-level = <3>;
+                                               };
+                                               rpmpd_opp_nom: opp4 {
+                                                       opp-level = <4>;
+                                               };
+                                               rpmpd_opp_turbo: opp5 {
+                                                       opp-level = <5>;
+                                               };
+                                               rpmpd_opp_super_turbo: opp6 {
+                                                       opp-level = <6>;
+                                               };
+                                       };
+                               };
+                       };
+               };
+       };
+
+       smp2p-hexagon {
+               compatible = "qcom,smp2p";
+               qcom,smem = <435>, <428>;
+
+               interrupts = <GIC_SPI 27 IRQ_TYPE_EDGE_RISING>;
+
+               qcom,ipc = <&apcs 8 14>;
+
+               qcom,local-pid = <0>;
+               qcom,remote-pid = <1>;
+
+               hexagon_smp2p_out: master-kernel {
+                       qcom,entry-name = "master-kernel";
+
+                       #qcom,smem-state-cells = <1>;
+               };
+
+               hexagon_smp2p_in: slave-kernel {
+                       qcom,entry-name = "slave-kernel";
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
+       smp2p-wcnss {
+               compatible = "qcom,smp2p";
+               qcom,smem = <451>, <431>;
+
+               interrupts = <GIC_SPI 143 IRQ_TYPE_EDGE_RISING>;
+
+               qcom,ipc = <&apcs 8 18>;
+
+               qcom,local-pid = <0>;
+               qcom,remote-pid = <4>;
+
+               wcnss_smp2p_out: master-kernel {
+                       qcom,entry-name = "master-kernel";
+
+                       #qcom,smem-state-cells = <1>;
+               };
+
+               wcnss_smp2p_in: slave-kernel {
+                       qcom,entry-name = "slave-kernel";
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
+       smsm {
+               compatible = "qcom,smsm";
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               qcom,ipc-1 = <&apcs 8 13>;
+               qcom,ipc-3 = <&apcs 8 19>;
+
+               apps_smsm: apps@0 {
+                       reg = <0>;
+
+                       #qcom,smem-state-cells = <1>;
+               };
+
+               hexagon_smsm: hexagon@1 {
+                       reg = <1>;
+                       interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               wcnss_smsm: wcnss@6 {
+                       reg = <6>;
+                       interrupts = <GIC_SPI 144 IRQ_TYPE_EDGE_RISING>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
+       soc: soc@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0 0 0 0xffffffff>;
+               compatible = "simple-bus";
+
+               rng@22000 {
+                       compatible = "qcom,prng";
+                       reg = <0x00022000 0x200>;
+                       clocks = <&gcc GCC_PRNG_AHB_CLK>;
+                       clock-names = "core";
+               };
+
+               restart@4ab000 {
+                       compatible = "qcom,pshold";
+                       reg = <0x004ab000 0x4>;
+               };
+
+               qfprom: qfprom@5c000 {
+                       compatible = "qcom,msm8916-qfprom", "qcom,qfprom";
+                       reg = <0x0005c000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       tsens_base1: base1@d0 {
+                               reg = <0xd0 0x1>;
+                               bits = <0 7>;
+                       };
+
+                       tsens_s0_p1: s0-p1@d0 {
+                               reg = <0xd0 0x2>;
+                               bits = <7 5>;
+                       };
+
+                       tsens_s0_p2: s0-p2@d1 {
+                               reg = <0xd1 0x2>;
+                               bits = <4 5>;
+                       };
+
+                       tsens_s1_p1: s1-p1@d2 {
+                               reg = <0xd2 0x1>;
+                               bits = <1 5>;
+                       };
+                       tsens_s1_p2: s1-p2@d2 {
+                               reg = <0xd2 0x2>;
+                               bits = <6 5>;
+                       };
+                       tsens_s2_p1: s2-p1@d3 {
+                               reg = <0xd3 0x1>;
+                               bits = <3 5>;
+                       };
+
+                       tsens_s2_p2: s2-p2@d4 {
+                               reg = <0xd4 0x1>;
+                               bits = <0 5>;
+                       };
+
+                       // no tsens with hw_id 3
+
+                       tsens_s4_p1: s4-p1@d4 {
+                               reg = <0xd4 0x2>;
+                               bits = <5 5>;
+                       };
+
+                       tsens_s4_p2: s4-p2@d5 {
+                               reg = <0xd5 0x1>;
+                               bits = <2 5>;
+                       };
+
+                       tsens_s5_p1: s5-p1@d5 {
+                               reg = <0xd5 0x2>;
+                               bits = <7 5>;
+                       };
+
+                       tsens_s5_p2: s5-p2@d6 {
+                               reg = <0xd6 0x2>;
+                               bits = <4 5>;
+                       };
+
+                       tsens_base2: base2@d7 {
+                               reg = <0xd7 0x1>;
+                               bits = <1 7>;
+                       };
+
+                       tsens_mode: mode@ef {
+                               reg = <0xef 0x1>;
+                               bits = <5 3>;
+                       };
+               };
+
+               rpm_msg_ram: sram@60000 {
+                       compatible = "qcom,rpm-msg-ram";
+                       reg = <0x00060000 0x8000>;
+               };
+
+               sram@290000 {
+                       compatible = "qcom,msm8916-rpm-stats";
+                       reg = <0x00290000 0x10000>;
+               };
+
+               bimc: interconnect@400000 {
+                       compatible = "qcom,msm8916-bimc";
+                       reg = <0x00400000 0x62000>;
+                       #interconnect-cells = <1>;
+                       clock-names = "bus", "bus_a";
+                       clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
+                                <&rpmcc RPM_SMD_BIMC_A_CLK>;
+               };
+
+               tsens: thermal-sensor@4a9000 {
+                       compatible = "qcom,msm8916-tsens", "qcom,tsens-v0_1";
+                       reg = <0x004a9000 0x1000>, /* TM */
+                             <0x004a8000 0x1000>; /* SROT */
+
+                       // no hw_id 3
+                       nvmem-cells = <&tsens_mode>,
+                                     <&tsens_base1>, <&tsens_base2>,
+                                     <&tsens_s0_p1>, <&tsens_s0_p2>,
+                                     <&tsens_s1_p1>, <&tsens_s1_p2>,
+                                     <&tsens_s2_p1>, <&tsens_s2_p2>,
+                                     <&tsens_s4_p1>, <&tsens_s4_p2>,
+                                     <&tsens_s5_p1>, <&tsens_s5_p2>;
+                       nvmem-cell-names = "mode",
+                                          "base1", "base2",
+                                          "s0_p1", "s0_p2",
+                                          "s1_p1", "s1_p2",
+                                          "s2_p1", "s2_p2",
+                                          "s4_p1", "s4_p2",
+                                          "s5_p1", "s5_p2";
+                       #qcom,sensors = <5>;
+                       interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "uplow";
+                       #thermal-sensor-cells = <1>;
+               };
+
+               pcnoc: interconnect@500000 {
+                       compatible = "qcom,msm8916-pcnoc";
+                       reg = <0x00500000 0x11000>;
+                       #interconnect-cells = <1>;
+                       clock-names = "bus", "bus_a";
+                       clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
+                                <&rpmcc RPM_SMD_PCNOC_A_CLK>;
+               };
+
+               snoc: interconnect@580000 {
+                       compatible = "qcom,msm8916-snoc";
+                       reg = <0x00580000 0x14000>;
+                       #interconnect-cells = <1>;
+                       clock-names = "bus", "bus_a";
+                       clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
+                                <&rpmcc RPM_SMD_SNOC_A_CLK>;
+               };
+
+               stm: stm@802000 {
+                       compatible = "arm,coresight-stm", "arm,primecell";
+                       reg = <0x00802000 0x1000>,
+                             <0x09280000 0x180000>;
+                       reg-names = "stm-base", "stm-stimulus-base";
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
+                       clock-names = "apb_pclk", "atclk";
+
+                       status = "disabled";
+
+                       out-ports {
+                               port {
+                                       stm_out: endpoint {
+                                               remote-endpoint = 
<&funnel0_in7>;
+                                       };
+                               };
+                       };
+               };
+
+               /* System CTIs */
+               /* CTI 0 - TMC connections */
+               cti0: cti@810000 {
+                       compatible = "arm,coresight-cti", "arm,primecell";
+                       reg = <0x00810000 0x1000>;
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>;
+                       clock-names = "apb_pclk";
+
+                       status = "disabled";
+               };
+
+               /* CTI 1 - TPIU connections */
+               cti1: cti@811000 {
+                       compatible = "arm,coresight-cti", "arm,primecell";
+                       reg = <0x00811000 0x1000>;
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>;
+                       clock-names = "apb_pclk";
+
+                       status = "disabled";
+               };
+
+               /* CTIs 2-11 - no information - not instantiated */
+
+               tpiu: tpiu@820000 {
+                       compatible = "arm,coresight-tpiu", "arm,primecell";
+                       reg = <0x00820000 0x1000>;
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
+                       clock-names = "apb_pclk", "atclk";
+
+                       status = "disabled";
+
+                       in-ports {
+                               port {
+                                       tpiu_in: endpoint {
+                                               remote-endpoint = 
<&replicator_out1>;
+                                       };
+                               };
+                       };
+               };
+
+               funnel0: funnel@821000 {
+                       compatible = "arm,coresight-dynamic-funnel", 
"arm,primecell";
+                       reg = <0x00821000 0x1000>;
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
+                       clock-names = "apb_pclk", "atclk";
+
+                       status = "disabled";
+
+                       in-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               /*
+                                * Not described input ports:
+                                * 0 - connected to Resource and Power Manger 
CPU ETM
+                                * 1 - not-connected
+                                * 2 - connected to Modem CPU ETM
+                                * 3 - not-connected
+                                * 5 - not-connected
+                                * 6 - connected trought funnel to Wireless CPU 
ETM
+                                * 7 - connected to STM component
+                                */
+
+                               port@4 {
+                                       reg = <4>;
+                                       funnel0_in4: endpoint {
+                                               remote-endpoint = 
<&funnel1_out>;
+                                       };
+                               };
+
+                               port@7 {
+                                       reg = <7>;
+                                       funnel0_in7: endpoint {
+                                               remote-endpoint = <&stm_out>;
+                                       };
+                               };
+                       };
+
+                       out-ports {
+                               port {
+                                       funnel0_out: endpoint {
+                                               remote-endpoint = <&etf_in>;
+                                       };
+                               };
+                       };
+               };
+
+               replicator: replicator@824000 {
+                       compatible = "arm,coresight-dynamic-replicator", 
"arm,primecell";
+                       reg = <0x00824000 0x1000>;
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
+                       clock-names = "apb_pclk", "atclk";
+
+                       status = "disabled";
+
+                       out-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       replicator_out0: endpoint {
+                                               remote-endpoint = <&etr_in>;
+                                       };
+                               };
+                               port@1 {
+                                       reg = <1>;
+                                       replicator_out1: endpoint {
+                                               remote-endpoint = <&tpiu_in>;
+                                       };
+                               };
+                       };
+
+                       in-ports {
+                               port {
+                                       replicator_in: endpoint {
+                                               remote-endpoint = <&etf_out>;
+                                       };
+                               };
+                       };
+               };
+
+               etf: etf@825000 {
+                       compatible = "arm,coresight-tmc", "arm,primecell";
+                       reg = <0x00825000 0x1000>;
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
+                       clock-names = "apb_pclk", "atclk";
+
+                       status = "disabled";
+
+                       in-ports {
+                               port {
+                                       etf_in: endpoint {
+                                               remote-endpoint = 
<&funnel0_out>;
+                                       };
+                               };
+                       };
+
+                       out-ports {
+                               port {
+                                       etf_out: endpoint {
+                                               remote-endpoint = 
<&replicator_in>;
+                                       };
+                               };
+                       };
+               };
+
+               etr: etr@826000 {
+                       compatible = "arm,coresight-tmc", "arm,primecell";
+                       reg = <0x00826000 0x1000>;
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
+                       clock-names = "apb_pclk", "atclk";
+
+                       status = "disabled";
+
+                       in-ports {
+                               port {
+                                       etr_in: endpoint {
+                                               remote-endpoint = 
<&replicator_out0>;
+                                       };
+                               };
+                       };
+               };
+
+               funnel1: funnel@841000 {        /* APSS funnel only 4 inputs 
are used */
+                       compatible = "arm,coresight-dynamic-funnel", 
"arm,primecell";
+                       reg = <0x00841000 0x1000>;
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
+                       clock-names = "apb_pclk", "atclk";
+
+                       status = "disabled";
+
+                       in-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       funnel1_in0: endpoint {
+                                               remote-endpoint = <&etm0_out>;
+                                       };
+                               };
+                               port@1 {
+                                       reg = <1>;
+                                       funnel1_in1: endpoint {
+                                               remote-endpoint = <&etm1_out>;
+                                       };
+                               };
+                               port@2 {
+                                       reg = <2>;
+                                       funnel1_in2: endpoint {
+                                               remote-endpoint = <&etm2_out>;
+                                       };
+                               };
+                               port@3 {
+                                       reg = <3>;
+                                       funnel1_in3: endpoint {
+                                               remote-endpoint = <&etm3_out>;
+                                       };
+                               };
+                       };
+
+                       out-ports {
+                               port {
+                                       funnel1_out: endpoint {
+                                               remote-endpoint = 
<&funnel0_in4>;
+                                       };
+                               };
+                       };
+               };
+
+               debug0: debug@850000 {
+                       compatible = "arm,coresight-cpu-debug", "arm,primecell";
+                       reg = <0x00850000 0x1000>;
+                       clocks = <&rpmcc RPM_QDSS_CLK>;
+                       clock-names = "apb_pclk";
+                       cpu = <&CPU0>;
+                       status = "disabled";
+               };
+
+               debug1: debug@852000 {
+                       compatible = "arm,coresight-cpu-debug", "arm,primecell";
+                       reg = <0x00852000 0x1000>;
+                       clocks = <&rpmcc RPM_QDSS_CLK>;
+                       clock-names = "apb_pclk";
+                       cpu = <&CPU1>;
+                       status = "disabled";
+               };
+
+               debug2: debug@854000 {
+                       compatible = "arm,coresight-cpu-debug", "arm,primecell";
+                       reg = <0x00854000 0x1000>;
+                       clocks = <&rpmcc RPM_QDSS_CLK>;
+                       clock-names = "apb_pclk";
+                       cpu = <&CPU2>;
+                       status = "disabled";
+               };
+
+               debug3: debug@856000 {
+                       compatible = "arm,coresight-cpu-debug", "arm,primecell";
+                       reg = <0x00856000 0x1000>;
+                       clocks = <&rpmcc RPM_QDSS_CLK>;
+                       clock-names = "apb_pclk";
+                       cpu = <&CPU3>;
+                       status = "disabled";
+               };
+
+               /* Core CTIs; CTIs 12-15 */
+               /* CTI - CPU-0 */
+               cti12: cti@858000 {
+                       compatible = "arm,coresight-cti-v8-arch", 
"arm,coresight-cti",
+                                    "arm,primecell";
+                       reg = <0x00858000 0x1000>;
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>;
+                       clock-names = "apb_pclk";
+
+                       cpu = <&CPU0>;
+                       arm,cs-dev-assoc = <&etm0>;
+
+                       status = "disabled";
+               };
+
+               /* CTI - CPU-1 */
+               cti13: cti@859000 {
+                       compatible = "arm,coresight-cti-v8-arch", 
"arm,coresight-cti",
+                                    "arm,primecell";
+                       reg = <0x00859000 0x1000>;
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>;
+                       clock-names = "apb_pclk";
+
+                       cpu = <&CPU1>;
+                       arm,cs-dev-assoc = <&etm1>;
+
+                       status = "disabled";
+               };
+
+               /* CTI - CPU-2 */
+               cti14: cti@85a000 {
+                       compatible = "arm,coresight-cti-v8-arch", 
"arm,coresight-cti",
+                                    "arm,primecell";
+                       reg = <0x0085a000 0x1000>;
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>;
+                       clock-names = "apb_pclk";
+
+                       cpu = <&CPU2>;
+                       arm,cs-dev-assoc = <&etm2>;
+
+                       status = "disabled";
+               };
+
+               /* CTI - CPU-3 */
+               cti15: cti@85b000 {
+                       compatible = "arm,coresight-cti-v8-arch", 
"arm,coresight-cti",
+                                    "arm,primecell";
+                       reg = <0x0085b000 0x1000>;
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>;
+                       clock-names = "apb_pclk";
+
+                       cpu = <&CPU3>;
+                       arm,cs-dev-assoc = <&etm3>;
+
+                       status = "disabled";
+               };
+
+               etm0: etm@85c000 {
+                       compatible = "arm,coresight-etm4x", "arm,primecell";
+                       reg = <0x0085c000 0x1000>;
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
+                       clock-names = "apb_pclk", "atclk";
+                       arm,coresight-loses-context-with-cpu;
+
+                       cpu = <&CPU0>;
+
+                       status = "disabled";
+
+                       out-ports {
+                               port {
+                                       etm0_out: endpoint {
+                                               remote-endpoint = 
<&funnel1_in0>;
+                                       };
+                               };
+                       };
+               };
+
+               etm1: etm@85d000 {
+                       compatible = "arm,coresight-etm4x", "arm,primecell";
+                       reg = <0x0085d000 0x1000>;
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
+                       clock-names = "apb_pclk", "atclk";
+                       arm,coresight-loses-context-with-cpu;
+
+                       cpu = <&CPU1>;
+
+                       status = "disabled";
+
+                       out-ports {
+                               port {
+                                       etm1_out: endpoint {
+                                               remote-endpoint = 
<&funnel1_in1>;
+                                       };
+                               };
+                       };
+               };
+
+               etm2: etm@85e000 {
+                       compatible = "arm,coresight-etm4x", "arm,primecell";
+                       reg = <0x0085e000 0x1000>;
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
+                       clock-names = "apb_pclk", "atclk";
+                       arm,coresight-loses-context-with-cpu;
+
+                       cpu = <&CPU2>;
+
+                       status = "disabled";
+
+                       out-ports {
+                               port {
+                                       etm2_out: endpoint {
+                                               remote-endpoint = 
<&funnel1_in2>;
+                                       };
+                               };
+                       };
+               };
+
+               etm3: etm@85f000 {
+                       compatible = "arm,coresight-etm4x", "arm,primecell";
+                       reg = <0x0085f000 0x1000>;
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
+                       clock-names = "apb_pclk", "atclk";
+                       arm,coresight-loses-context-with-cpu;
+
+                       cpu = <&CPU3>;
+
+                       status = "disabled";
+
+                       out-ports {
+                               port {
+                                       etm3_out: endpoint {
+                                               remote-endpoint = 
<&funnel1_in3>;
+                                       };
+                               };
+                       };
+               };
+
+               msmgpio: pinctrl@1000000 {
+                       compatible = "qcom,msm8916-pinctrl";
+                       reg = <0x01000000 0x300000>;
+                       interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       gpio-ranges = <&msmgpio 0 0 122>;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gcc: clock-controller@1800000 {
+                       compatible = "qcom,gcc-msm8916";
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+                       reg = <0x01800000 0x80000>;
+                       clocks = <&xo_board>,
+                                <&sleep_clk>,
+                                <&dsi_phy0 1>,
+                                <&dsi_phy0 0>,
+                                <0>,
+                                <0>,
+                                <0>;
+                       clock-names = "xo",
+                                     "sleep_clk",
+                                     "dsi0pll",
+                                     "dsi0pllbyte",
+                                     "ext_mclk",
+                                     "ext_pri_i2s",
+                                     "ext_sec_i2s";
+               };
+
+               tcsr_mutex: hwlock@1905000 {
+                       compatible = "qcom,tcsr-mutex";
+                       reg = <0x01905000 0x20000>;
+                       #hwlock-cells = <1>;
+               };
+
+               tcsr: syscon@1937000 {
+                       compatible = "qcom,tcsr-msm8916", "syscon";
+                       reg = <0x01937000 0x30000>;
+               };
+
+               mdss: display-subsystem@1a00000 {
+                       status = "disabled";
+                       compatible = "qcom,mdss";
+                       reg = <0x01a00000 0x1000>,
+                             <0x01ac8000 0x3000>;
+                       reg-names = "mdss_phys", "vbif_phys";
+
+                       power-domains = <&gcc MDSS_GDSC>;
+
+                       clocks = <&gcc GCC_MDSS_AHB_CLK>,
+                                <&gcc GCC_MDSS_AXI_CLK>,
+                                <&gcc GCC_MDSS_VSYNC_CLK>;
+                       clock-names = "iface",
+                                     "bus",
+                                     "vsync";
+
+                       interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+
+                       mdp: display-controller@1a01000 {
+                               compatible = "qcom,msm8916-mdp5", "qcom,mdp5";
+                               reg = <0x01a01000 0x89000>;
+                               reg-names = "mdp_phys";
+
+                               interrupt-parent = <&mdss>;
+                               interrupts = <0>;
+
+                               clocks = <&gcc GCC_MDSS_AHB_CLK>,
+                                        <&gcc GCC_MDSS_AXI_CLK>,
+                                        <&gcc GCC_MDSS_MDP_CLK>,
+                                        <&gcc GCC_MDSS_VSYNC_CLK>;
+                               clock-names = "iface",
+                                             "bus",
+                                             "core",
+                                             "vsync";
+
+                               iommus = <&apps_iommu 4>;
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+                                               mdp5_intf1_out: endpoint {
+                                                       remote-endpoint = 
<&dsi0_in>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       dsi0: dsi@1a98000 {
+                               compatible = "qcom,msm8916-dsi-ctrl",
+                                            "qcom,mdss-dsi-ctrl";
+                               reg = <0x01a98000 0x25c>;
+                               reg-names = "dsi_ctrl";
+
+                               interrupt-parent = <&mdss>;
+                               interrupts = <4>;
+
+                               assigned-clocks = <&gcc BYTE0_CLK_SRC>,
+                                                 <&gcc PCLK0_CLK_SRC>;
+                               assigned-clock-parents = <&dsi_phy0 0>,
+                                                        <&dsi_phy0 1>;
+
+                               clocks = <&gcc GCC_MDSS_MDP_CLK>,
+                                        <&gcc GCC_MDSS_AHB_CLK>,
+                                        <&gcc GCC_MDSS_AXI_CLK>,
+                                        <&gcc GCC_MDSS_BYTE0_CLK>,
+                                        <&gcc GCC_MDSS_PCLK0_CLK>,
+                                        <&gcc GCC_MDSS_ESC0_CLK>;
+                               clock-names = "mdp_core",
+                                             "iface",
+                                             "bus",
+                                             "byte",
+                                             "pixel",
+                                             "core";
+                               phys = <&dsi_phy0>;
+
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+                                               dsi0_in: endpoint {
+                                                       remote-endpoint = 
<&mdp5_intf1_out>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+                                               dsi0_out: endpoint {
+                                               };
+                                       };
+                               };
+                       };
+
+                       dsi_phy0: phy@1a98300 {
+                               compatible = "qcom,dsi-phy-28nm-lp";
+                               reg = <0x01a98300 0xd4>,
+                                     <0x01a98500 0x280>,
+                                     <0x01a98780 0x30>;
+                               reg-names = "dsi_pll",
+                                           "dsi_phy",
+                                           "dsi_phy_regulator";
+
+                               #clock-cells = <1>;
+                               #phy-cells = <0>;
+
+                               clocks = <&gcc GCC_MDSS_AHB_CLK>,
+                                        <&xo_board>;
+                               clock-names = "iface", "ref";
+                       };
+               };
+
+               camss: camss@1b00000 {
+                       compatible = "qcom,msm8916-camss";
+                       reg = <0x01b0ac00 0x200>,
+                               <0x01b00030 0x4>,
+                               <0x01b0b000 0x200>,
+                               <0x01b00038 0x4>,
+                               <0x01b08000 0x100>,
+                               <0x01b08400 0x100>,
+                               <0x01b0a000 0x500>,
+                               <0x01b00020 0x10>,
+                               <0x01b10000 0x1000>;
+                       reg-names = "csiphy0",
+                               "csiphy0_clk_mux",
+                               "csiphy1",
+                               "csiphy1_clk_mux",
+                               "csid0",
+                               "csid1",
+                               "ispif",
+                               "csi_clk_mux",
+                               "vfe0";
+                       interrupts = <GIC_SPI 78 IRQ_TYPE_EDGE_RISING>,
+                               <GIC_SPI 79 IRQ_TYPE_EDGE_RISING>,
+                               <GIC_SPI 51 IRQ_TYPE_EDGE_RISING>,
+                               <GIC_SPI 52 IRQ_TYPE_EDGE_RISING>,
+                               <GIC_SPI 55 IRQ_TYPE_EDGE_RISING>,
+                               <GIC_SPI 57 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "csiphy0",
+                               "csiphy1",
+                               "csid0",
+                               "csid1",
+                               "ispif",
+                               "vfe0";
+                       power-domains = <&gcc VFE_GDSC>;
+                       clocks = <&gcc GCC_CAMSS_TOP_AHB_CLK>,
+                               <&gcc GCC_CAMSS_ISPIF_AHB_CLK>,
+                               <&gcc GCC_CAMSS_CSI0PHYTIMER_CLK>,
+                               <&gcc GCC_CAMSS_CSI1PHYTIMER_CLK>,
+                               <&gcc GCC_CAMSS_CSI0_AHB_CLK>,
+                               <&gcc GCC_CAMSS_CSI0_CLK>,
+                               <&gcc GCC_CAMSS_CSI0PHY_CLK>,
+                               <&gcc GCC_CAMSS_CSI0PIX_CLK>,
+                               <&gcc GCC_CAMSS_CSI0RDI_CLK>,
+                               <&gcc GCC_CAMSS_CSI1_AHB_CLK>,
+                               <&gcc GCC_CAMSS_CSI1_CLK>,
+                               <&gcc GCC_CAMSS_CSI1PHY_CLK>,
+                               <&gcc GCC_CAMSS_CSI1PIX_CLK>,
+                               <&gcc GCC_CAMSS_CSI1RDI_CLK>,
+                               <&gcc GCC_CAMSS_AHB_CLK>,
+                               <&gcc GCC_CAMSS_VFE0_CLK>,
+                               <&gcc GCC_CAMSS_CSI_VFE0_CLK>,
+                               <&gcc GCC_CAMSS_VFE_AHB_CLK>,
+                               <&gcc GCC_CAMSS_VFE_AXI_CLK>;
+                       clock-names = "top_ahb",
+                               "ispif_ahb",
+                               "csiphy0_timer",
+                               "csiphy1_timer",
+                               "csi0_ahb",
+                               "csi0",
+                               "csi0_phy",
+                               "csi0_pix",
+                               "csi0_rdi",
+                               "csi1_ahb",
+                               "csi1",
+                               "csi1_phy",
+                               "csi1_pix",
+                               "csi1_rdi",
+                               "ahb",
+                               "vfe0",
+                               "csi_vfe0",
+                               "vfe_ahb",
+                               "vfe_axi";
+                       iommus = <&apps_iommu 3>;
+                       status = "disabled";
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+               };
+
+               cci: cci@1b0c000 {
+                       compatible = "qcom,msm8916-cci", "qcom,msm8226-cci";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x01b0c000 0x1000>;
+                       interrupts = <GIC_SPI 50 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&gcc GCC_CAMSS_TOP_AHB_CLK>,
+                               <&gcc GCC_CAMSS_CCI_AHB_CLK>,
+                               <&gcc GCC_CAMSS_CCI_CLK>,
+                               <&gcc GCC_CAMSS_AHB_CLK>;
+                       clock-names = "camss_top_ahb", "cci_ahb",
+                                         "cci", "camss_ahb";
+                       assigned-clocks = <&gcc GCC_CAMSS_CCI_AHB_CLK>,
+                                         <&gcc GCC_CAMSS_CCI_CLK>;
+                       assigned-clock-rates = <80000000>, <19200000>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&cci0_default>;
+                       status = "disabled";
+
+                       cci_i2c0: i2c-bus@0 {
+                               reg = <0>;
+                               clock-frequency = <400000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+               };
+
+               gpu@1c00000 {
+                       compatible = "qcom,adreno-306.0", "qcom,adreno";
+                       reg = <0x01c00000 0x20000>;
+                       reg-names = "kgsl_3d0_reg_memory";
+                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "kgsl_3d0_irq";
+                       clock-names =
+                           "core",
+                           "iface",
+                           "mem",
+                           "mem_iface",
+                           "alt_mem_iface",
+                           "gfx3d";
+                       clocks =
+                           <&gcc GCC_OXILI_GFX3D_CLK>,
+                           <&gcc GCC_OXILI_AHB_CLK>,
+                           <&gcc GCC_OXILI_GMEM_CLK>,
+                           <&gcc GCC_BIMC_GFX_CLK>,
+                           <&gcc GCC_BIMC_GPU_CLK>,
+                           <&gcc GFX3D_CLK_SRC>;
+                       power-domains = <&gcc OXILI_GDSC>;
+                       operating-points-v2 = <&gpu_opp_table>;
+                       iommus = <&gpu_iommu 1>, <&gpu_iommu 2>;
+
+                       gpu_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-400000000 {
+                                       opp-hz = /bits/ 64 <400000000>;
+                               };
+                               opp-19200000 {
+                                       opp-hz = /bits/ 64 <19200000>;
+                               };
+                       };
+               };
+
+               venus: video-codec@1d00000 {
+                       compatible = "qcom,msm8916-venus";
+                       reg = <0x01d00000 0xff000>;
+                       interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+                       power-domains = <&gcc VENUS_GDSC>;
+                       clocks = <&gcc GCC_VENUS0_VCODEC0_CLK>,
+                                <&gcc GCC_VENUS0_AHB_CLK>,
+                                <&gcc GCC_VENUS0_AXI_CLK>;
+                       clock-names = "core", "iface", "bus";
+                       iommus = <&apps_iommu 5>;
+                       memory-region = <&venus_mem>;
+                       status = "okay";
+
+                       video-decoder {
+                               compatible = "venus-decoder";
+                       };
+
+                       video-encoder {
+                               compatible = "venus-encoder";
+                       };
+               };
+
+               apps_iommu: iommu@1ef0000 {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       #iommu-cells = <1>;
+                       compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
+                       ranges = <0 0x01e20000 0x40000>;
+                       reg = <0x01ef0000 0x3000>;
+                       clocks = <&gcc GCC_SMMU_CFG_CLK>,
+                                <&gcc GCC_APSS_TCU_CLK>;
+                       clock-names = "iface", "bus";
+                       qcom,iommu-secure-id = <17>;
+
+                       /* VFE */
+                       iommu-ctx@3000 {
+                               compatible = "qcom,msm-iommu-v1-sec";
+                               reg = <0x3000 0x1000>;
+                               interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+
+                       /* MDP_0 */
+                       iommu-ctx@4000 {
+                               compatible = "qcom,msm-iommu-v1-ns";
+                               reg = <0x4000 0x1000>;
+                               interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+
+                       /* VENUS_NS */
+                       iommu-ctx@5000 {
+                               compatible = "qcom,msm-iommu-v1-sec";
+                               reg = <0x5000 0x1000>;
+                               interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+               };
+
+               gpu_iommu: iommu@1f08000 {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       #iommu-cells = <1>;
+                       compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
+                       ranges = <0 0x01f08000 0x10000>;
+                       clocks = <&gcc GCC_SMMU_CFG_CLK>,
+                                <&gcc GCC_GFX_TCU_CLK>;
+                       clock-names = "iface", "bus";
+                       qcom,iommu-secure-id = <18>;
+
+                       /* GFX3D_USER */
+                       iommu-ctx@1000 {
+                               compatible = "qcom,msm-iommu-v1-ns";
+                               reg = <0x1000 0x1000>;
+                               interrupts = <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+
+                       /* GFX3D_PRIV */
+                       iommu-ctx@2000 {
+                               compatible = "qcom,msm-iommu-v1-ns";
+                               reg = <0x2000 0x1000>;
+                               interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+               };
+
+               spmi_bus: spmi@200f000 {
+                       compatible = "qcom,spmi-pmic-arb";
+                       reg = <0x0200f000 0x001000>,
+                             <0x02400000 0x400000>,
+                             <0x02c00000 0x400000>,
+                             <0x03800000 0x200000>,
+                             <0x0200a000 0x002100>;
+                       reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
+                       interrupt-names = "periph_irq";
+                       interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
+                       qcom,ee = <0>;
+                       qcom,channel = <0>;
+                       #address-cells = <2>;
+                       #size-cells = <0>;
+                       interrupt-controller;
+                       #interrupt-cells = <4>;
+               };
+
+               bam_dmux_dma: dma-controller@4044000 {
+                       compatible = "qcom,bam-v1.7.0";
+                       reg = <0x04044000 0x19000>;
+                       interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       qcom,ee = <0>;
+
+                       num-channels = <6>;
+                       qcom,num-ees = <1>;
+                       qcom,powered-remotely;
+
+                       status = "disabled";
+               };
+
+               mpss: remoteproc@4080000 {
+                       compatible = "qcom,msm8916-mss-pil";
+                       reg = <0x04080000 0x100>,
+                             <0x04020000 0x040>;
+
+                       reg-names = "qdsp6", "rmb";
+
+                       interrupts-extended = <&intc GIC_SPI 24 
IRQ_TYPE_EDGE_RISING>,
+                                             <&hexagon_smp2p_in 0 
IRQ_TYPE_EDGE_RISING>,
+                                             <&hexagon_smp2p_in 1 
IRQ_TYPE_EDGE_RISING>,
+                                             <&hexagon_smp2p_in 2 
IRQ_TYPE_EDGE_RISING>,
+                                             <&hexagon_smp2p_in 3 
IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "wdog", "fatal", "ready",
+                                         "handover", "stop-ack";
+
+                       power-domains = <&rpmpd MSM8916_VDDCX>,
+                                       <&rpmpd MSM8916_VDDMX>;
+                       power-domain-names = "cx", "mx";
+
+                       clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
+                                <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
+                                <&gcc GCC_BOOT_ROM_AHB_CLK>,
+                                <&xo_board>;
+                       clock-names = "iface", "bus", "mem", "xo";
+
+                       qcom,smem-states = <&hexagon_smp2p_out 0>;
+                       qcom,smem-state-names = "stop";
+
+                       resets = <&scm 0>;
+                       reset-names = "mss_restart";
+
+                       qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>;
+
+                       status = "disabled";
+
+                       mba {
+                               memory-region = <&mba_mem>;
+                       };
+
+                       mpss {
+                               memory-region = <&mpss_mem>;
+                       };
+
+                       bam_dmux: bam-dmux {
+                               compatible = "qcom,bam-dmux";
+
+                               interrupt-parent = <&hexagon_smsm>;
+                               interrupts = <1 IRQ_TYPE_EDGE_BOTH>, <11 
IRQ_TYPE_EDGE_BOTH>;
+                               interrupt-names = "pc", "pc-ack";
+
+                               qcom,smem-states = <&apps_smsm 1>, <&apps_smsm 
11>;
+                               qcom,smem-state-names = "pc", "pc-ack";
+
+                               dmas = <&bam_dmux_dma 4>, <&bam_dmux_dma 5>;
+                               dma-names = "tx", "rx";
+
+                               status = "disabled";
+                       };
+
+                       smd-edge {
+                               interrupts = <GIC_SPI 25 IRQ_TYPE_EDGE_RISING>;
+
+                               qcom,smd-edge = <0>;
+                               qcom,ipc = <&apcs 8 12>;
+                               qcom,remote-pid = <1>;
+
+                               label = "hexagon";
+
+                               fastrpc {
+                                       compatible = "qcom,fastrpc";
+                                       qcom,smd-channels = 
"fastrpcsmd-apps-dsp";
+                                       label = "adsp";
+                                       qcom,non-secure-domain;
+
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       cb@1 {
+                                               compatible = 
"qcom,fastrpc-compute-cb";
+                                               reg = <1>;
+                                       };
+                               };
+                       };
+               };
+
+               sound: sound@7702000 {
+                       status = "disabled";
+                       compatible = "qcom,apq8016-sbc-sndcard";
+                       reg = <0x07702000 0x4>, <0x07702004 0x4>;
+                       reg-names = "mic-iomux", "spkr-iomux";
+               };
+
+               lpass: audio-controller@7708000 {
+                       status = "disabled";
+                       compatible = "qcom,apq8016-lpass-cpu";
+
+                       /*
+                        * Note: Unlike the name would suggest, the SEC_I2S_CLK
+                        * is actually only used by Tertiary MI2S while
+                        * Primary/Secondary MI2S both use the PRI_I2S_CLK.
+                        */
+                       clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
+                                <&gcc GCC_ULTAUDIO_PCNOC_MPORT_CLK>,
+                                <&gcc GCC_ULTAUDIO_PCNOC_SWAY_CLK>,
+                                <&gcc GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK>,
+                                <&gcc GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK>,
+                                <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
+                                <&gcc GCC_ULTAUDIO_LPAIF_AUX_I2S_CLK>;
+
+                       clock-names = "ahbix-clk",
+                                       "pcnoc-mport-clk",
+                                       "pcnoc-sway-clk",
+                                       "mi2s-bit-clk0",
+                                       "mi2s-bit-clk1",
+                                       "mi2s-bit-clk2",
+                                       "mi2s-bit-clk3";
+                       #sound-dai-cells = <1>;
+
+                       interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "lpass-irq-lpaif";
+                       reg = <0x07708000 0x10000>;
+                       reg-names = "lpass-lpaif";
+
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               lpass_codec: audio-codec@771c000 {
+                       compatible = "qcom,msm8916-wcd-digital-codec";
+                       reg = <0x0771c000 0x400>;
+                       clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
+                                <&gcc GCC_CODEC_DIGCODEC_CLK>;
+                       clock-names = "ahbix-clk", "mclk";
+                       #sound-dai-cells = <1>;
+               };
+
+               sdhc_1: mmc@7824000 {
+                       compatible = "qcom,msm8916-sdhci", "qcom,sdhci-msm-v4";
+                       reg = <0x07824900 0x11c>, <0x07824000 0x800>;
+                       reg-names = "hc", "core";
+
+                       interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hc_irq", "pwr_irq";
+                       clocks = <&gcc GCC_SDCC1_AHB_CLK>,
+                                <&gcc GCC_SDCC1_APPS_CLK>,
+                                <&xo_board>;
+                       clock-names = "iface", "core", "xo";
+                       mmc-ddr-1_8v;
+                       bus-width = <8>;
+                       non-removable;
+                       status = "disabled";
+               };
+
+               sdhc_2: mmc@7864000 {
+                       compatible = "qcom,msm8916-sdhci", "qcom,sdhci-msm-v4";
+                       reg = <0x07864900 0x11c>, <0x07864000 0x800>;
+                       reg-names = "hc", "core";
+
+                       interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hc_irq", "pwr_irq";
+                       clocks = <&gcc GCC_SDCC2_AHB_CLK>,
+                                <&gcc GCC_SDCC2_APPS_CLK>,
+                                <&xo_board>;
+                       clock-names = "iface", "core", "xo";
+                       bus-width = <4>;
+                       status = "disabled";
+               };
+
+               blsp_dma: dma-controller@7884000 {
+                       compatible = "qcom,bam-v1.7.0";
+                       reg = <0x07884000 0x23000>;
+                       interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "bam_clk";
+                       #dma-cells = <1>;
+                       qcom,ee = <0>;
+               };
+
+               blsp1_uart1: serial@78af000 {
+                       compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
+                       reg = <0x078af000 0x200>;
+                       interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, <&gcc 
GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 0>, <&blsp_dma 1>;
+                       dma-names = "tx", "rx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&blsp1_uart1_default>;
+                       pinctrl-1 = <&blsp1_uart1_sleep>;
+                       status = "disabled";
+               };
+
+               blsp1_uart2: serial@78b0000 {
+                       compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
+                       reg = <0x078b0000 0x200>;
+                       interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, <&gcc 
GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 2>, <&blsp_dma 3>;
+                       dma-names = "tx", "rx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&blsp1_uart2_default>;
+                       pinctrl-1 = <&blsp1_uart2_sleep>;
+                       status = "disabled";
+               };
+
+               blsp_i2c1: i2c@78b5000 {
+                       compatible = "qcom,i2c-qup-v2.2.1";
+                       reg = <0x078b5000 0x500>;
+                       interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP1_I2C_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 4>, <&blsp_dma 5>;
+                       dma-names = "tx", "rx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c1_default>;
+                       pinctrl-1 = <&i2c1_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_spi1: spi@78b5000 {
+                       compatible = "qcom,spi-qup-v2.2.1";
+                       reg = <0x078b5000 0x500>;
+                       interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 4>, <&blsp_dma 5>;
+                       dma-names = "tx", "rx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&spi1_default>;
+                       pinctrl-1 = <&spi1_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_i2c2: i2c@78b6000 {
+                       compatible = "qcom,i2c-qup-v2.2.1";
+                       reg = <0x078b6000 0x500>;
+                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 6>, <&blsp_dma 7>;
+                       dma-names = "tx", "rx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c2_default>;
+                       pinctrl-1 = <&i2c2_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_spi2: spi@78b6000 {
+                       compatible = "qcom,spi-qup-v2.2.1";
+                       reg = <0x078b6000 0x500>;
+                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 6>, <&blsp_dma 7>;
+                       dma-names = "tx", "rx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&spi2_default>;
+                       pinctrl-1 = <&spi2_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_i2c3: i2c@78b7000 {
+                       compatible = "qcom,i2c-qup-v2.2.1";
+                       reg = <0x078b7000 0x500>;
+                       interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 8>, <&blsp_dma 9>;
+                       dma-names = "tx", "rx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c3_default>;
+                       pinctrl-1 = <&i2c3_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_spi3: spi@78b7000 {
+                       compatible = "qcom,spi-qup-v2.2.1";
+                       reg = <0x078b7000 0x500>;
+                       interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP3_SPI_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 8>, <&blsp_dma 9>;
+                       dma-names = "tx", "rx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&spi3_default>;
+                       pinctrl-1 = <&spi3_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_i2c4: i2c@78b8000 {
+                       compatible = "qcom,i2c-qup-v2.2.1";
+                       reg = <0x078b8000 0x500>;
+                       interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 10>, <&blsp_dma 11>;
+                       dma-names = "tx", "rx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c4_default>;
+                       pinctrl-1 = <&i2c4_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_spi4: spi@78b8000 {
+                       compatible = "qcom,spi-qup-v2.2.1";
+                       reg = <0x078b8000 0x500>;
+                       interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP4_SPI_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 10>, <&blsp_dma 11>;
+                       dma-names = "tx", "rx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&spi4_default>;
+                       pinctrl-1 = <&spi4_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_i2c5: i2c@78b9000 {
+                       compatible = "qcom,i2c-qup-v2.2.1";
+                       reg = <0x078b9000 0x500>;
+                       interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP5_I2C_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 12>, <&blsp_dma 13>;
+                       dma-names = "tx", "rx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c5_default>;
+                       pinctrl-1 = <&i2c5_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_spi5: spi@78b9000 {
+                       compatible = "qcom,spi-qup-v2.2.1";
+                       reg = <0x078b9000 0x500>;
+                       interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP5_SPI_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 12>, <&blsp_dma 13>;
+                       dma-names = "tx", "rx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&spi5_default>;
+                       pinctrl-1 = <&spi5_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_i2c6: i2c@78ba000 {
+                       compatible = "qcom,i2c-qup-v2.2.1";
+                       reg = <0x078ba000 0x500>;
+                       interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP6_I2C_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 14>, <&blsp_dma 15>;
+                       dma-names = "tx", "rx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c6_default>;
+                       pinctrl-1 = <&i2c6_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_spi6: spi@78ba000 {
+                       compatible = "qcom,spi-qup-v2.2.1";
+                       reg = <0x078ba000 0x500>;
+                       interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP6_SPI_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 14>, <&blsp_dma 15>;
+                       dma-names = "tx", "rx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&spi6_default>;
+                       pinctrl-1 = <&spi6_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               usb: usb@78d9000 {
+                       compatible = "qcom,ci-hdrc";
+                       reg = <0x078d9000 0x200>,
+                             <0x078d9200 0x200>;
+                       interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_USB_HS_AHB_CLK>,
+                                <&gcc GCC_USB_HS_SYSTEM_CLK>;
+                       clock-names = "iface", "core";
+                       assigned-clocks = <&gcc GCC_USB_HS_SYSTEM_CLK>;
+                       assigned-clock-rates = <80000000>;
+                       resets = <&gcc GCC_USB_HS_BCR>;
+                       reset-names = "core";
+                       phy_type = "ulpi";
+                       dr_mode = "otg";
+                       hnp-disable;
+                       srp-disable;
+                       adp-disable;
+                       ahb-burst-config = <0>;
+                       phy-names = "usb-phy";
+                       phys = <&usb_hs_phy>;
+                       status = "disabled";
+                       #reset-cells = <1>;
+
+                       ulpi {
+                               usb_hs_phy: phy {
+                                       compatible = "qcom,usb-hs-phy-msm8916",
+                                                    "qcom,usb-hs-phy";
+                                       #phy-cells = <0>;
+                                       clocks = <&xo_board>, <&gcc 
GCC_USB2A_PHY_SLEEP_CLK>;
+                                       clock-names = "ref", "sleep";
+                                       resets = <&gcc GCC_USB2A_PHY_BCR>, 
<&usb 0>;
+                                       reset-names = "phy", "por";
+                                       qcom,init-seq = /bits/ 8 <0x0 0x44>,
+                                                                <0x1 0x6b>,
+                                                                <0x2 0x24>,
+                                                                <0x3 0x13>;
+                               };
+                       };
+               };
+
+               wcnss: remoteproc@a21b000 {
+                       compatible = "qcom,pronto-v2-pil", "qcom,pronto";
+                       reg = <0x0a204000 0x2000>, <0x0a202000 0x1000>, 
<0x0a21b000 0x3000>;
+                       reg-names = "ccu", "dxe", "pmu";
+
+                       memory-region = <&wcnss_mem>;
+
+                       interrupts-extended = <&intc GIC_SPI 149 
IRQ_TYPE_EDGE_RISING>,
+                                             <&wcnss_smp2p_in 0 
IRQ_TYPE_EDGE_RISING>,
+                                             <&wcnss_smp2p_in 1 
IRQ_TYPE_EDGE_RISING>,
+                                             <&wcnss_smp2p_in 2 
IRQ_TYPE_EDGE_RISING>,
+                                             <&wcnss_smp2p_in 3 
IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "wdog", "fatal", "ready", "handover", 
"stop-ack";
+
+                       power-domains = <&rpmpd MSM8916_VDDCX>,
+                                       <&rpmpd MSM8916_VDDMX>;
+                       power-domain-names = "cx", "mx";
+
+                       qcom,smem-states = <&wcnss_smp2p_out 0>;
+                       qcom,smem-state-names = "stop";
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&wcnss_pin_a>;
+
+                       status = "disabled";
+
+                       wcnss_iris: iris {
+                               /* Separate chip, compatible is board-specific 
*/
+                               clocks = <&rpmcc RPM_SMD_RF_CLK2>;
+                               clock-names = "xo";
+                       };
+
+                       smd-edge {
+                               interrupts = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>;
+
+                               qcom,ipc = <&apcs 8 17>;
+                               qcom,smd-edge = <6>;
+                               qcom,remote-pid = <4>;
+
+                               label = "pronto";
+
+                               wcnss_ctrl: wcnss {
+                                       compatible = "qcom,wcnss";
+                                       qcom,smd-channels = "WCNSS_CTRL";
+
+                                       qcom,mmio = <&wcnss>;
+
+                                       wcnss_bt: bluetooth {
+                                               compatible = "qcom,wcnss-bt";
+                                       };
+
+                                       wcnss_wifi: wifi {
+                                               compatible = "qcom,wcnss-wlan";
+
+                                               interrupts = <GIC_SPI 145 
IRQ_TYPE_LEVEL_HIGH>,
+                                                            <GIC_SPI 146 
IRQ_TYPE_LEVEL_HIGH>;
+                                               interrupt-names = "tx", "rx";
+
+                                               qcom,smem-states = <&apps_smsm 
10>, <&apps_smsm 9>;
+                                               qcom,smem-state-names = 
"tx-enable", "tx-rings-empty";
+                                       };
+                               };
+                       };
+               };
+
+               intc: interrupt-controller@b000000 {
+                       compatible = "qcom,msm-qgic2";
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+                       reg = <0x0b000000 0x1000>, <0x0b002000 0x2000>,
+                             <0x0b001000 0x1000>, <0x0b004000 0x2000>;
+                       interrupts = <GIC_PPI 0 (GIC_CPU_MASK_SIMPLE(4) | 
IRQ_TYPE_LEVEL_HIGH)>;
+               };
+
+               apcs: mailbox@b011000 {
+                       compatible = "qcom,msm8916-apcs-kpss-global", "syscon";
+                       reg = <0x0b011000 0x1000>;
+                       #mbox-cells = <1>;
+                       clocks = <&a53pll>, <&gcc GPLL0_VOTE>;
+                       clock-names = "pll", "aux";
+                       #clock-cells = <0>;
+               };
+
+               a53pll: clock@b016000 {
+                       compatible = "qcom,msm8916-a53pll";
+                       reg = <0x0b016000 0x40>;
+                       #clock-cells = <0>;
+                       clocks = <&xo_board>;
+                       clock-names = "xo";
+               };
+
+               timer@b020000 {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       compatible = "arm,armv7-timer-mem";
+                       reg = <0x0b020000 0x1000>;
+                       clock-frequency = <19200000>;
+
+                       frame@b021000 {
+                               frame-number = <0>;
+                               interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0b021000 0x1000>,
+                                     <0x0b022000 0x1000>;
+                       };
+
+                       frame@b023000 {
+                               frame-number = <1>;
+                               interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0b023000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@b024000 {
+                               frame-number = <2>;
+                               interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0b024000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@b025000 {
+                               frame-number = <3>;
+                               interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0b025000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@b026000 {
+                               frame-number = <4>;
+                               interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0b026000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@b027000 {
+                               frame-number = <5>;
+                               interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0b027000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@b028000 {
+                               frame-number = <6>;
+                               interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0b028000 0x1000>;
+                               status = "disabled";
+                       };
+               };
+
+               cpu0_acc: power-manager@b088000 {
+                       compatible = "qcom,msm8916-acc";
+                       reg = <0x0b088000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu0_saw: power-manager@b089000 {
+                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+                       reg = <0x0b089000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu1_acc: power-manager@b098000 {
+                       compatible = "qcom,msm8916-acc";
+                       reg = <0x0b098000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu1_saw: power-manager@b099000 {
+                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+                       reg = <0x0b099000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu2_acc: power-manager@b0a8000 {
+                       compatible = "qcom,msm8916-acc";
+                       reg = <0x0b0a8000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu2_saw: power-manager@b0a9000 {
+                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+                       reg = <0x0b0a9000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu3_acc: power-manager@b0b8000 {
+                       compatible = "qcom,msm8916-acc";
+                       reg = <0x0b0b8000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu3_saw: power-manager@b0b9000 {
+                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+                       reg = <0x0b0b9000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+       };
+
+       thermal-zones {
+               cpu0-1-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 5>;
+
+                       trips {
+                               cpu0_1_alert0: trip-point0 {
+                                       temperature = <75000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               cpu0_1_crit: cpu-crit {
+                                       temperature = <110000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&cpu0_1_alert0>;
+                                       cooling-device = <&CPU0 
THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&CPU1 
THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&CPU2 
THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&CPU3 
THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+
+               cpu2-3-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 4>;
+
+                       trips {
+                               cpu2_3_alert0: trip-point0 {
+                                       temperature = <75000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               cpu2_3_crit: cpu-crit {
+                                       temperature = <110000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&cpu2_3_alert0>;
+                                       cooling-device = <&CPU0 
THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&CPU1 
THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&CPU2 
THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&CPU3 
THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+
+               gpu-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 2>;
+
+                       trips {
+                               gpu_alert0: trip-point0 {
+                                       temperature = <75000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               gpu_crit: gpu-crit {
+                                       temperature = <95000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               camera-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 1>;
+
+                       trips {
+                               cam_alert0: trip-point0 {
+                                       temperature = <75000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+                       };
+               };
+
+               modem-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 0>;
+
+                       trips {
+                               modem_alert0: trip-point0 {
+                                       temperature = <85000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+                       };
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | 
IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | 
IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | 
IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | 
IRQ_TYPE_LEVEL_LOW)>;
+       };
+};
+
+#include "msm8916-pins.dtsi"
diff --git a/arch/arm/dts/pm8916.dtsi b/arch/arm/dts/pm8916.dtsi
new file mode 100644
index 000000000000..f4fb1a92ab55
--- /dev/null
+++ b/arch/arm/dts/pm8916.dtsi
@@ -0,0 +1,183 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <dt-bindings/iio/qcom,spmi-vadc.h>
+#include <dt-bindings/input/linux-event-codes.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/spmi/spmi.h>
+
+&spmi_bus {
+
+       pm8916_0: pmic@0 {
+               compatible = "qcom,pm8916", "qcom,spmi-pmic";
+               reg = <0x0 SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pon@800 {
+                       compatible = "qcom,pm8916-pon";
+                       reg = <0x800>;
+                       mode-bootloader = <0x2>;
+                       mode-recovery = <0x1>;
+
+                       pwrkey {
+                               compatible = "qcom,pm8941-pwrkey";
+                               interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>;
+                               debounce = <15625>;
+                               bias-pull-up;
+                               linux,code = <KEY_POWER>;
+                       };
+
+                       pm8916_resin: resin {
+                               compatible = "qcom,pm8941-resin";
+                               interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
+                               debounce = <15625>;
+                               bias-pull-up;
+                               status = "disabled";
+                       };
+
+                       watchdog {
+                               compatible = "qcom,pm8916-wdt";
+                               interrupts = <0x0 0x8 6 IRQ_TYPE_EDGE_RISING>;
+                               timeout-sec = <60>;
+                       };
+               };
+
+               pm8916_usbin: usb-detect@1300 {
+                       compatible = "qcom,pm8941-misc";
+                       reg = <0x1300>;
+                       interrupts = <0x0 0x13 1 IRQ_TYPE_EDGE_BOTH>;
+                       interrupt-names = "usb_vbus";
+                       status = "disabled";
+               };
+
+               pm8916_temp: temp-alarm@2400 {
+                       compatible = "qcom,spmi-temp-alarm";
+                       reg = <0x2400>;
+                       interrupts = <0 0x24 0 IRQ_TYPE_EDGE_RISING>;
+                       io-channels = <&pm8916_vadc VADC_DIE_TEMP>;
+                       io-channel-names = "thermal";
+                       #thermal-sensor-cells = <0>;
+               };
+
+               pm8916_vadc: adc@3100 {
+                       compatible = "qcom,spmi-vadc";
+                       reg = <0x3100>;
+                       interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       #io-channel-cells = <1>;
+
+                       adc-chan@0 {
+                               reg = <VADC_USBIN>;
+                               qcom,pre-scaling = <1 10>;
+                       };
+                       adc-chan@7 {
+                               reg = <VADC_VSYS>;
+                               qcom,pre-scaling = <1 3>;
+                       };
+                       adc-chan@8 {
+                               reg = <VADC_DIE_TEMP>;
+                       };
+                       adc-chan@9 {
+                               reg = <VADC_REF_625MV>;
+                       };
+                       adc-chan@a {
+                               reg = <VADC_REF_1250MV>;
+                       };
+                       adc-chan@e {
+                               reg = <VADC_GND_REF>;
+                       };
+                       adc-chan@f {
+                               reg = <VADC_VDD_VADC>;
+                       };
+               };
+
+               rtc@6000 {
+                       compatible = "qcom,pm8941-rtc";
+                       reg = <0x6000>, <0x6100>;
+                       reg-names = "rtc", "alarm";
+                       interrupts = <0x0 0x61 0x1 IRQ_TYPE_EDGE_RISING>;
+               };
+
+               pm8916_mpps: mpps@a000 {
+                       compatible = "qcom,pm8916-mpp", "qcom,spmi-mpp";
+                       reg = <0xa000>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pm8916_mpps 0 0 4>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               pm8916_gpios: gpio@c000 {
+                       compatible = "qcom,pm8916-gpio", "qcom,spmi-gpio";
+                       reg = <0xc000>;
+                       gpio-controller;
+                       gpio-ranges = <&pm8916_gpios 0 0 4>;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
+       pm8916_1: pmic@1 {
+               compatible = "qcom,pm8916", "qcom,spmi-pmic";
+               reg = <0x1 SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pm8916_pwm: pwm {
+                       compatible = "qcom,pm8916-pwm";
+
+                       #pwm-cells = <2>;
+
+                       status = "disabled";
+               };
+
+               pm8916_vib: vibrator@c000 {
+                       compatible = "qcom,pm8916-vib";
+                       reg = <0xc000>;
+                       status = "disabled";
+               };
+
+               wcd_codec: audio-codec@f000 {
+                       compatible = "qcom,pm8916-wcd-analog-codec";
+                       reg = <0xf000>;
+                       reg-names = "pmic-codec-core";
+                       clocks = <&gcc GCC_CODEC_DIGCODEC_CLK>;
+                       clock-names = "mclk";
+                       interrupt-parent = <&spmi_bus>;
+                       interrupts = <0x1 0xf0 0x0 IRQ_TYPE_NONE>,
+                                    <0x1 0xf0 0x1 IRQ_TYPE_NONE>,
+                                    <0x1 0xf0 0x2 IRQ_TYPE_NONE>,
+                                    <0x1 0xf0 0x3 IRQ_TYPE_NONE>,
+                                    <0x1 0xf0 0x4 IRQ_TYPE_NONE>,
+                                    <0x1 0xf0 0x5 IRQ_TYPE_NONE>,
+                                    <0x1 0xf0 0x6 IRQ_TYPE_NONE>,
+                                    <0x1 0xf0 0x7 IRQ_TYPE_NONE>,
+                                    <0x1 0xf1 0x0 IRQ_TYPE_NONE>,
+                                    <0x1 0xf1 0x1 IRQ_TYPE_NONE>,
+                                    <0x1 0xf1 0x2 IRQ_TYPE_NONE>,
+                                    <0x1 0xf1 0x3 IRQ_TYPE_NONE>,
+                                    <0x1 0xf1 0x4 IRQ_TYPE_NONE>,
+                                    <0x1 0xf1 0x5 IRQ_TYPE_NONE>;
+                       interrupt-names = "cdc_spk_cnp_int",
+                                         "cdc_spk_clip_int",
+                                         "cdc_spk_ocp_int",
+                                         "mbhc_ins_rem_det1",
+                                         "mbhc_but_rel_det",
+                                         "mbhc_but_press_det",
+                                         "mbhc_ins_rem_det",
+                                         "mbhc_switch_int",
+                                         "cdc_ear_ocp_int",
+                                         "cdc_hphr_ocp_int",
+                                         "cdc_hphl_ocp_det",
+                                         "cdc_ear_cnp_int",
+                                         "cdc_hphr_cnp_int",
+                                         "cdc_hphl_cnp_int";
+                       vdd-cdc-io-supply = <&pm8916_l5>;
+                       vdd-cdc-tx-rx-cx-supply = <&pm8916_l5>;
+                       vdd-micbias-supply = <&pm8916_l13>;
+                       #sound-dai-cells = <1>;
+               };
+       };
+};
diff --git a/include/dt-bindings/arm/coresight-cti-dt.h 
b/include/dt-bindings/arm/coresight-cti-dt.h
new file mode 100644
index 000000000000..61e7bdf8ea6e
--- /dev/null
+++ b/include/dt-bindings/arm/coresight-cti-dt.h
@@ -0,0 +1,37 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * This header provides constants for the defined trigger signal
+ * types on CoreSight CTI.
+ */
+
+#ifndef _DT_BINDINGS_ARM_CORESIGHT_CTI_DT_H
+#define _DT_BINDINGS_ARM_CORESIGHT_CTI_DT_H
+
+#define GEN_IO         0
+#define GEN_INTREQ     1
+#define GEN_INTACK     2
+#define GEN_HALTREQ    3
+#define GEN_RESTARTREQ 4
+#define PE_EDBGREQ     5
+#define PE_DBGRESTART  6
+#define PE_CTIIRQ      7
+#define PE_PMUIRQ      8
+#define PE_DBGTRIGGER  9
+#define ETM_EXTOUT     10
+#define ETM_EXTIN      11
+#define SNK_FULL       12
+#define SNK_ACQCOMP    13
+#define SNK_FLUSHCOMP  14
+#define SNK_FLUSHIN    15
+#define SNK_TRIGIN     16
+#define STM_ASYNCOUT   17
+#define STM_TOUT_SPTE  18
+#define STM_TOUT_SW    19
+#define STM_TOUT_HETE  20
+#define STM_HWEVENT    21
+#define ELA_TSTART     22
+#define ELA_TSTOP      23
+#define ELA_DBGREQ     24
+#define CTI_TRIG_MAX   25
+
+#endif /*_DT_BINDINGS_ARM_CORESIGHT_CTI_DT_H */
diff --git a/include/dt-bindings/clock/qcom,rpmcc.h 
b/include/dt-bindings/clock/qcom,rpmcc.h
new file mode 100644
index 000000000000..46309c9953b2
--- /dev/null
+++ b/include/dt-bindings/clock/qcom,rpmcc.h
@@ -0,0 +1,174 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright 2015 Linaro Limited
+ */
+
+#ifndef _DT_BINDINGS_CLK_MSM_RPMCC_H
+#define _DT_BINDINGS_CLK_MSM_RPMCC_H
+
+/* RPM clocks */
+#define RPM_PXO_CLK                            0
+#define RPM_PXO_A_CLK                          1
+#define RPM_CXO_CLK                            2
+#define RPM_CXO_A_CLK                          3
+#define RPM_APPS_FABRIC_CLK                    4
+#define RPM_APPS_FABRIC_A_CLK                  5
+#define RPM_CFPB_CLK                           6
+#define RPM_CFPB_A_CLK                         7
+#define RPM_QDSS_CLK                           8
+#define RPM_QDSS_A_CLK                         9
+#define RPM_DAYTONA_FABRIC_CLK                 10
+#define RPM_DAYTONA_FABRIC_A_CLK               11
+#define RPM_EBI1_CLK                           12
+#define RPM_EBI1_A_CLK                         13
+#define RPM_MM_FABRIC_CLK                      14
+#define RPM_MM_FABRIC_A_CLK                    15
+#define RPM_MMFPB_CLK                          16
+#define RPM_MMFPB_A_CLK                                17
+#define RPM_SYS_FABRIC_CLK                     18
+#define RPM_SYS_FABRIC_A_CLK                   19
+#define RPM_SFPB_CLK                           20
+#define RPM_SFPB_A_CLK                         21
+#define RPM_SMI_CLK                            22
+#define RPM_SMI_A_CLK                          23
+#define RPM_PLL4_CLK                           24
+#define RPM_XO_D0                              25
+#define RPM_XO_D1                              26
+#define RPM_XO_A0                              27
+#define RPM_XO_A1                              28
+#define RPM_XO_A2                              29
+#define RPM_NSS_FABRIC_0_CLK                   30
+#define RPM_NSS_FABRIC_0_A_CLK                 31
+#define RPM_NSS_FABRIC_1_CLK                   32
+#define RPM_NSS_FABRIC_1_A_CLK                 33
+
+/* SMD RPM clocks */
+#define RPM_SMD_XO_CLK_SRC                             0
+#define RPM_SMD_XO_A_CLK_SRC                   1
+#define RPM_SMD_PCNOC_CLK                              2
+#define RPM_SMD_PCNOC_A_CLK                            3
+#define RPM_SMD_SNOC_CLK                               4
+#define RPM_SMD_SNOC_A_CLK                             5
+#define RPM_SMD_BIMC_CLK                               6
+#define RPM_SMD_BIMC_A_CLK                             7
+#define RPM_SMD_QDSS_CLK                               8
+#define RPM_SMD_QDSS_A_CLK                             9
+#define RPM_SMD_BB_CLK1                                10
+#define RPM_SMD_BB_CLK1_A                              11
+#define RPM_SMD_BB_CLK2                                12
+#define RPM_SMD_BB_CLK2_A                              13
+#define RPM_SMD_RF_CLK1                                14
+#define RPM_SMD_RF_CLK1_A                              15
+#define RPM_SMD_RF_CLK2                                16
+#define RPM_SMD_RF_CLK2_A                              17
+#define RPM_SMD_BB_CLK1_PIN                            18
+#define RPM_SMD_BB_CLK1_A_PIN                  19
+#define RPM_SMD_BB_CLK2_PIN                            20
+#define RPM_SMD_BB_CLK2_A_PIN                  21
+#define RPM_SMD_RF_CLK1_PIN                            22
+#define RPM_SMD_RF_CLK1_A_PIN                  23
+#define RPM_SMD_RF_CLK2_PIN                            24
+#define RPM_SMD_RF_CLK2_A_PIN                  25
+#define RPM_SMD_PNOC_CLK                       26
+#define RPM_SMD_PNOC_A_CLK                     27
+#define RPM_SMD_CNOC_CLK                       28
+#define RPM_SMD_CNOC_A_CLK                     29
+#define RPM_SMD_MMSSNOC_AHB_CLK                        30
+#define RPM_SMD_MMSSNOC_AHB_A_CLK              31
+#define RPM_SMD_GFX3D_CLK_SRC                  32
+#define RPM_SMD_GFX3D_A_CLK_SRC                        33
+#define RPM_SMD_OCMEMGX_CLK                    34
+#define RPM_SMD_OCMEMGX_A_CLK                  35
+#define RPM_SMD_CXO_D0                         36
+#define RPM_SMD_CXO_D0_A                       37
+#define RPM_SMD_CXO_D1                         38
+#define RPM_SMD_CXO_D1_A                       39
+#define RPM_SMD_CXO_A0                         40
+#define RPM_SMD_CXO_A0_A                       41
+#define RPM_SMD_CXO_A1                         42
+#define RPM_SMD_CXO_A1_A                       43
+#define RPM_SMD_CXO_A2                         44
+#define RPM_SMD_CXO_A2_A                       45
+#define RPM_SMD_DIV_CLK1                       46
+#define RPM_SMD_DIV_A_CLK1                     47
+#define RPM_SMD_DIV_CLK2                       48
+#define RPM_SMD_DIV_A_CLK2                     49
+#define RPM_SMD_DIFF_CLK                       50
+#define RPM_SMD_DIFF_A_CLK                     51
+#define RPM_SMD_CXO_D0_PIN                     52
+#define RPM_SMD_CXO_D0_A_PIN                   53
+#define RPM_SMD_CXO_D1_PIN                     54
+#define RPM_SMD_CXO_D1_A_PIN                   55
+#define RPM_SMD_CXO_A0_PIN                     56
+#define RPM_SMD_CXO_A0_A_PIN                   57
+#define RPM_SMD_CXO_A1_PIN                     58
+#define RPM_SMD_CXO_A1_A_PIN                   59
+#define RPM_SMD_CXO_A2_PIN                     60
+#define RPM_SMD_CXO_A2_A_PIN                   61
+#define RPM_SMD_AGGR1_NOC_CLK                  62
+#define RPM_SMD_AGGR1_NOC_A_CLK                        63
+#define RPM_SMD_AGGR2_NOC_CLK                  64
+#define RPM_SMD_AGGR2_NOC_A_CLK                        65
+#define RPM_SMD_MMAXI_CLK                      66
+#define RPM_SMD_MMAXI_A_CLK                    67
+#define RPM_SMD_IPA_CLK                                68
+#define RPM_SMD_IPA_A_CLK                      69
+#define RPM_SMD_CE1_CLK                                70
+#define RPM_SMD_CE1_A_CLK                      71
+#define RPM_SMD_DIV_CLK3                       72
+#define RPM_SMD_DIV_A_CLK3                     73
+#define RPM_SMD_LN_BB_CLK                      74
+#define RPM_SMD_LN_BB_A_CLK                    75
+#define RPM_SMD_BIMC_GPU_CLK                   76
+#define RPM_SMD_BIMC_GPU_A_CLK                 77
+#define RPM_SMD_QPIC_CLK                       78
+#define RPM_SMD_QPIC_CLK_A                     79
+#define RPM_SMD_LN_BB_CLK1                     80
+#define RPM_SMD_LN_BB_CLK1_A                   81
+#define RPM_SMD_LN_BB_CLK2                     82
+#define RPM_SMD_LN_BB_CLK2_A                   83
+#define RPM_SMD_LN_BB_CLK3_PIN                 84
+#define RPM_SMD_LN_BB_CLK3_A_PIN               85
+#define RPM_SMD_RF_CLK3                                86
+#define RPM_SMD_RF_CLK3_A                      87
+#define RPM_SMD_RF_CLK3_PIN                    88
+#define RPM_SMD_RF_CLK3_A_PIN                  89
+#define RPM_SMD_MMSSNOC_AXI_CLK                        90
+#define RPM_SMD_MMSSNOC_AXI_CLK_A              91
+#define RPM_SMD_CNOC_PERIPH_CLK                        92
+#define RPM_SMD_CNOC_PERIPH_A_CLK              93
+#define RPM_SMD_LN_BB_CLK3                     94
+#define RPM_SMD_LN_BB_CLK3_A                   95
+#define RPM_SMD_LN_BB_CLK1_PIN                 96
+#define RPM_SMD_LN_BB_CLK1_A_PIN               97
+#define RPM_SMD_LN_BB_CLK2_PIN                 98
+#define RPM_SMD_LN_BB_CLK2_A_PIN               99
+#define RPM_SMD_SYSMMNOC_CLK                   100
+#define RPM_SMD_SYSMMNOC_A_CLK                 101
+#define RPM_SMD_CE2_CLK                                102
+#define RPM_SMD_CE2_A_CLK                      103
+#define RPM_SMD_CE3_CLK                                104
+#define RPM_SMD_CE3_A_CLK                      105
+#define RPM_SMD_QUP_CLK                                106
+#define RPM_SMD_QUP_A_CLK                      107
+#define RPM_SMD_MMRT_CLK                       108
+#define RPM_SMD_MMRT_A_CLK                     109
+#define RPM_SMD_MMNRT_CLK                      110
+#define RPM_SMD_MMNRT_A_CLK                    111
+#define RPM_SMD_SNOC_PERIPH_CLK                        112
+#define RPM_SMD_SNOC_PERIPH_A_CLK              113
+#define RPM_SMD_SNOC_LPASS_CLK                 114
+#define RPM_SMD_SNOC_LPASS_A_CLK               115
+#define RPM_SMD_HWKM_CLK                       116
+#define RPM_SMD_HWKM_A_CLK                     117
+#define RPM_SMD_PKA_CLK                                118
+#define RPM_SMD_PKA_A_CLK                      119
+#define RPM_SMD_CPUSS_GNOC_CLK                 120
+#define RPM_SMD_CPUSS_GNOC_A_CLK               121
+#define RPM_SMD_MSS_CFG_AHB_CLK                122
+#define RPM_SMD_MSS_CFG_AHB_A_CLK              123
+#define RPM_SMD_BIMC_FREQ_LOG                  124
+#define RPM_SMD_LN_BB_CLK_PIN                  125
+#define RPM_SMD_LN_BB_A_CLK_PIN                        126
+
+#endif
diff --git a/include/dt-bindings/interconnect/qcom,msm8916.h 
b/include/dt-bindings/interconnect/qcom,msm8916.h
new file mode 100644
index 000000000000..359a75feb198
--- /dev/null
+++ b/include/dt-bindings/interconnect/qcom,msm8916.h
@@ -0,0 +1,100 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Qualcomm interconnect IDs
+ *
+ * Copyright (c) 2019, Linaro Ltd.
+ * Author: Georgi Djakov <georgi.dja...@linaro.org>
+ */
+
+#ifndef __DT_BINDINGS_INTERCONNECT_QCOM_MSM8916_H
+#define __DT_BINDINGS_INTERCONNECT_QCOM_MSM8916_H
+
+#define BIMC_SNOC_SLV                  0
+#define MASTER_JPEG                    1
+#define MASTER_MDP_PORT0               2
+#define MASTER_QDSS_BAM                        3
+#define MASTER_QDSS_ETR                        4
+#define MASTER_SNOC_CFG                        5
+#define MASTER_VFE                     6
+#define MASTER_VIDEO_P0                        7
+#define SNOC_MM_INT_0                  8
+#define SNOC_MM_INT_1                  9
+#define SNOC_MM_INT_2                  10
+#define SNOC_MM_INT_BIMC               11
+#define PCNOC_SNOC_SLV                 12
+#define SLAVE_APSS                     13
+#define SLAVE_CATS_128                 14
+#define SLAVE_OCMEM_64                 15
+#define SLAVE_IMEM                     16
+#define SLAVE_QDSS_STM                 17
+#define SLAVE_SRVC_SNOC                        18
+#define SNOC_BIMC_0_MAS                        19
+#define SNOC_BIMC_1_MAS                        20
+#define SNOC_INT_0                     21
+#define SNOC_INT_1                     22
+#define SNOC_INT_BIMC                  23
+#define SNOC_PCNOC_MAS                 24
+#define SNOC_QDSS_INT                  25
+
+#define BIMC_SNOC_MAS                  0
+#define MASTER_AMPSS_M0                        1
+#define MASTER_GRAPHICS_3D             2
+#define MASTER_TCU0                    3
+#define MASTER_TCU1                    4
+#define SLAVE_AMPSS_L2                 5
+#define SLAVE_EBI_CH0                  6
+#define SNOC_BIMC_0_SLV                        7
+#define SNOC_BIMC_1_SLV                        8
+
+#define MASTER_BLSP_1                  0
+#define MASTER_DEHR                    1
+#define MASTER_LPASS                   2
+#define MASTER_CRYPTO_CORE0            3
+#define MASTER_SDCC_1                  4
+#define MASTER_SDCC_2                  5
+#define MASTER_SPDM                    6
+#define MASTER_USB_HS                  7
+#define PCNOC_INT_0                    8
+#define PCNOC_INT_1                    9
+#define PCNOC_MAS_0                    10
+#define PCNOC_MAS_1                    11
+#define PCNOC_SLV_0                    12
+#define PCNOC_SLV_1                    13
+#define PCNOC_SLV_2                    14
+#define PCNOC_SLV_3                    15
+#define PCNOC_SLV_4                    16
+#define PCNOC_SLV_8                    17
+#define PCNOC_SLV_9                    18
+#define PCNOC_SNOC_MAS                 19
+#define SLAVE_BIMC_CFG                 20
+#define SLAVE_BLSP_1                   21
+#define SLAVE_BOOT_ROM                 22
+#define SLAVE_CAMERA_CFG               23
+#define SLAVE_CLK_CTL                  24
+#define SLAVE_CRYPTO_0_CFG             25
+#define SLAVE_DEHR_CFG                 26
+#define SLAVE_DISPLAY_CFG              27
+#define SLAVE_GRAPHICS_3D_CFG          28
+#define SLAVE_IMEM_CFG                 29
+#define SLAVE_LPASS                    30
+#define SLAVE_MPM                      31
+#define SLAVE_MSG_RAM                  32
+#define SLAVE_MSS                      33
+#define SLAVE_PDM                      34
+#define SLAVE_PMIC_ARB                 35
+#define SLAVE_PCNOC_CFG                        36
+#define SLAVE_PRNG                     37
+#define SLAVE_QDSS_CFG                 38
+#define SLAVE_RBCPR_CFG                        39
+#define SLAVE_SDCC_1                   40
+#define SLAVE_SDCC_2                   41
+#define SLAVE_SECURITY                 42
+#define SLAVE_SNOC_CFG                 43
+#define SLAVE_SPDM                     44
+#define SLAVE_TCSR                     45
+#define SLAVE_TLMM                     46
+#define SLAVE_USB_HS                   47
+#define SLAVE_VENUS_CFG                        48
+#define SNOC_PCNOC_SLV                 49
+
+#endif
diff --git a/include/dt-bindings/reset/qcom,gcc-msm8916.h 
b/include/dt-bindings/reset/qcom,gcc-msm8916.h
new file mode 100644
index 000000000000..1f9be10872df
--- /dev/null
+++ b/include/dt-bindings/reset/qcom,gcc-msm8916.h
@@ -0,0 +1,100 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright 2015 Linaro Limited
+ */
+
+#ifndef _DT_BINDINGS_RESET_MSM_GCC_8916_H
+#define _DT_BINDINGS_RESET_MSM_GCC_8916_H
+
+#define GCC_BLSP1_BCR                  0
+#define GCC_BLSP1_QUP1_BCR             1
+#define GCC_BLSP1_UART1_BCR            2
+#define GCC_BLSP1_QUP2_BCR             3
+#define GCC_BLSP1_UART2_BCR            4
+#define GCC_BLSP1_QUP3_BCR             5
+#define GCC_BLSP1_QUP4_BCR             6
+#define GCC_BLSP1_QUP5_BCR             7
+#define GCC_BLSP1_QUP6_BCR             8
+#define GCC_IMEM_BCR                   9
+#define GCC_SMMU_BCR                   10
+#define GCC_APSS_TCU_BCR               11
+#define GCC_SMMU_XPU_BCR               12
+#define GCC_PCNOC_TBU_BCR              13
+#define GCC_PRNG_BCR                   14
+#define GCC_BOOT_ROM_BCR               15
+#define GCC_CRYPTO_BCR                 16
+#define GCC_SEC_CTRL_BCR               17
+#define GCC_AUDIO_CORE_BCR             18
+#define GCC_ULT_AUDIO_BCR              19
+#define GCC_DEHR_BCR                   20
+#define GCC_SYSTEM_NOC_BCR             21
+#define GCC_PCNOC_BCR                  22
+#define GCC_TCSR_BCR                   23
+#define GCC_QDSS_BCR                   24
+#define GCC_DCD_BCR                    25
+#define GCC_MSG_RAM_BCR                        26
+#define GCC_MPM_BCR                    27
+#define GCC_SPMI_BCR                   28
+#define GCC_SPDM_BCR                   29
+#define GCC_MM_SPDM_BCR                        30
+#define GCC_BIMC_BCR                   31
+#define GCC_RBCPR_BCR                  32
+#define GCC_TLMM_BCR                   33
+#define GCC_USB_HS_BCR                 34
+#define GCC_USB2A_PHY_BCR              35
+#define GCC_SDCC1_BCR                  36
+#define GCC_SDCC2_BCR                  37
+#define GCC_PDM_BCR                    38
+#define GCC_SNOC_BUS_TIMEOUT0_BCR      39
+#define GCC_PCNOC_BUS_TIMEOUT0_BCR     40
+#define GCC_PCNOC_BUS_TIMEOUT1_BCR     41
+#define GCC_PCNOC_BUS_TIMEOUT2_BCR     42
+#define GCC_PCNOC_BUS_TIMEOUT3_BCR     43
+#define GCC_PCNOC_BUS_TIMEOUT4_BCR     44
+#define GCC_PCNOC_BUS_TIMEOUT5_BCR     45
+#define GCC_PCNOC_BUS_TIMEOUT6_BCR     46
+#define GCC_PCNOC_BUS_TIMEOUT7_BCR     47
+#define GCC_PCNOC_BUS_TIMEOUT8_BCR     48
+#define GCC_PCNOC_BUS_TIMEOUT9_BCR     49
+#define GCC_MMSS_BCR                   50
+#define GCC_VENUS0_BCR                 51
+#define GCC_MDSS_BCR                   52
+#define GCC_CAMSS_PHY0_BCR             53
+#define GCC_CAMSS_CSI0_BCR             54
+#define GCC_CAMSS_CSI0PHY_BCR          55
+#define GCC_CAMSS_CSI0RDI_BCR          56
+#define GCC_CAMSS_CSI0PIX_BCR          57
+#define GCC_CAMSS_PHY1_BCR             58
+#define GCC_CAMSS_CSI1_BCR             59
+#define GCC_CAMSS_CSI1PHY_BCR          60
+#define GCC_CAMSS_CSI1RDI_BCR          61
+#define GCC_CAMSS_CSI1PIX_BCR          62
+#define GCC_CAMSS_ISPIF_BCR            63
+#define GCC_CAMSS_CCI_BCR              64
+#define GCC_CAMSS_MCLK0_BCR            65
+#define GCC_CAMSS_MCLK1_BCR            66
+#define GCC_CAMSS_GP0_BCR              67
+#define GCC_CAMSS_GP1_BCR              68
+#define GCC_CAMSS_TOP_BCR              69
+#define GCC_CAMSS_MICRO_BCR            70
+#define GCC_CAMSS_JPEG_BCR             71
+#define GCC_CAMSS_VFE_BCR              72
+#define GCC_CAMSS_CSI_VFE0_BCR         73
+#define GCC_OXILI_BCR                  74
+#define GCC_GMEM_BCR                   75
+#define GCC_CAMSS_AHB_BCR              76
+#define GCC_MDP_TBU_BCR                        77
+#define GCC_GFX_TBU_BCR                        78
+#define GCC_GFX_TCU_BCR                        79
+#define GCC_MSS_TBU_AXI_BCR            80
+#define GCC_MSS_TBU_GSS_AXI_BCR                81
+#define GCC_MSS_TBU_Q6_AXI_BCR         82
+#define GCC_GTCU_AHB_BCR               83
+#define GCC_SMMU_CFG_BCR               84
+#define GCC_VFE_TBU_BCR                        85
+#define GCC_VENUS_TBU_BCR              86
+#define GCC_JPEG_TBU_BCR               87
+#define GCC_PRONTO_TBU_BCR             88
+#define GCC_SMMU_CATS_BCR              89
+
+#endif

-- 
2.42.1

Reply via email to