diff mbox series

[18/21] dts: msm8916: import DT from Linux

Message ID 20231121-b4-qcom-common-target-v1-18-9492198e0c15@linaro.org
State New
Headers show
Series Qualcomm generic board support | expand

Commit Message

Caleb Connolly Nov. 21, 2023, 5:09 p.m. UTC
Import the msm8916 devicetree from Linux and adjust the dragonboard410c
devicetree to use it.

Signed-off-by: Caleb Connolly <caleb.connolly@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(-)

Comments

Stephan Gerhold Nov. 21, 2023, 7:21 p.m. UTC | #1
On Tue, Nov 21, 2023 at 05:09:41PM +0000, Caleb Connolly wrote:
> Import the msm8916 devicetree from Linux and adjust the dragonboard410c
> devicetree to use it.
> 

Can you add a note here from which Linux version you took the DT?

It seems quite old, the msm8916-pm8916.dtsi doesn't exist anymore
upstream since v6.5. Would be nice to bring it up to date (I don't have
any more cleanup planned at the moment, so the current state upstream
will probably stay mostly as-is).

From a quick look I think U-Boot shouldn't be concerned much about the
changes, you might just need to do some trivial renames:

  &msmgpio -> &tlmm
  &blsp1_uart2 -> &blsp_uart2

Thanks a lot for working on this!

Stephan

> Signed-off-by: Caleb Connolly <caleb.connolly@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.kulikowski@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.djakov@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
>
Caleb Connolly Dec. 7, 2023, 7:11 p.m. UTC | #2
On 21/11/2023 19:21, Stephan Gerhold wrote:
> On Tue, Nov 21, 2023 at 05:09:41PM +0000, Caleb Connolly wrote:
>> Import the msm8916 devicetree from Linux and adjust the dragonboard410c
>> devicetree to use it.
>>
> 
> Can you add a note here from which Linux version you took the DT?
> 
> It seems quite old, the msm8916-pm8916.dtsi doesn't exist anymore
> upstream since v6.5. Would be nice to bring it up to date (I don't have
> any more cleanup planned at the moment, so the current state upstream
> will probably stay mostly as-is).

That file still exists on 6.7-rc4, as far as I can tell?
> 
> From a quick look I think U-Boot shouldn't be concerned much about the
> changes, you might just need to do some trivial renames:
> 
>   &msmgpio -> &tlmm
>   &blsp1_uart2 -> &blsp_uart2
> 
> Thanks a lot for working on this!
> 
> Stephan
> 
>> Signed-off-by: Caleb Connolly <caleb.connolly@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.kulikowski@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.djakov@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
>>
Stephan Gerhold Dec. 7, 2023, 9:37 p.m. UTC | #3
On Thu, Dec 07, 2023 at 07:11:02PM +0000, Caleb Connolly wrote:
> On 21/11/2023 19:21, Stephan Gerhold wrote:
> > On Tue, Nov 21, 2023 at 05:09:41PM +0000, Caleb Connolly wrote:
> >> Import the msm8916 devicetree from Linux and adjust the dragonboard410c
> >> devicetree to use it.
> >>
> > 
> > Can you add a note here from which Linux version you took the DT?
> > 
> > It seems quite old, the msm8916-pm8916.dtsi doesn't exist anymore
> > upstream since v6.5. Would be nice to bring it up to date (I don't have
> > any more cleanup planned at the moment, so the current state upstream
> > will probably stay mostly as-is).
> 
> That file still exists on 6.7-rc4, as far as I can tell?

Sorry, I meant msm8916-pins.dtsi :') That one doesn't exist anymore.

Thanks,
Stephan
diff mbox series

Patch

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.kulikowski@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.djakov@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