Merge LA.UM.9.12.C10.11.00.00.840.010 via branch 'qcom-msm-4.19-7250' into android-msm-pixel-4.19

Bug: 187909050
Signed-off-by: Lucas Wei <lucaswei@google.com>
Change-Id: Ic53234da5533679ac59b29c1d95059e77e149fc5
diff --git a/bindings/bt-fm/fm.txt b/bindings/bt-fm/fm.txt
new file mode 100644
index 0000000..ed73e5d
--- /dev/null
+++ b/bindings/bt-fm/fm.txt
@@ -0,0 +1,29 @@
+Qti radio iris device
+
+-FM RX playback with no RDS
+
+   FM samples is filtered by external RF chips at baseband, then send to Riva-FM core through serial link.
+   FM signal is demodulated then audio L/R samples are stored inside memory.
+   FM Rx received samples data is connected to external audio codec.
+
+-Audio playback to FM TX
+
+  Used to play audio source  to FM TX.
+  FM TX module will read the audio samples from memory then modulated samples will be send through serial interface to external RF chip.
+
+-RX playback with RDS
+
+  FM Rx receive audio data along with RDS.
+
+-FM TX with RDS
+
+  Used to send RDS messages to external FM receiver.
+
+Required Properties:
+- compatible: "qcom,iris_fm"
+
+Example:
+        qcom,iris-fm {
+                compatible = "qcom,iris_fm";
+        };
+
diff --git a/bindings/clock/qcom,clock-cpu-8939.txt b/bindings/clock/qcom,clock-cpu-8939.txt
deleted file mode 100644
index e2190df..0000000
--- a/bindings/clock/qcom,clock-cpu-8939.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-Qualcomm Technologies, Inc. MSM8939 CPU clock tree
-
-clock-cpu-8939 is a device that represents the MSM8939 or MSM8952 CPU
-subsystem clock tree. It lists the various power supplies that need to be
-scaled when the clocks are scaled and also other HW specific parameters like
-fmax tables, avs settings table, etc.
-
-Required properties:
-- compatible:		Must be one of "qcom,clock-cpu-8939" or
-			"qcom,cpu-clock-8952", "qcom,cpu-clock-8917",
-			"qcom,cpu-clock-sdm439", "qcom,cpu-clock-sdm429".
-- reg:			Pairs of physical base addresses and region sizes of
-			memory mapped registers.
-- reg-names:		Names of the bases for the above registers. Expected
-			bases are:
-			"apcs-c0-rcg-base", "apcs-c1-rcg-base",
-			"apcs-cci-rcg-base", "efuse", "efuse1", "efuse2"
-- vdd-c0-supply:	The regulator powering the little cluster
-- vdd-c1-supply:	The regulator powering the big cluster
-- vdd-cci-supply:	The regulator powering the CCI cluster
-- qcom,speedX-bin-vY-ZZZ:
-			A table of CPU frequency (Hz) to voltage (corner)
-			mapping that represents the max frequency possible
-			for each supported voltage level for a CPU. 'X' is
-			the speed bin into which the device falls into - a
-			bin will have unique frequency-voltage relationships.
-			'Y' is the characterization version, implying that
-			characterization (deciding what speed bin a device
-			falls into) methods and/or encoding may change. The
-			values 'X' and 'Y' are read from efuse registers, and
-			the right table is picked from multiple possible tables.
-			'ZZZ' can be c1, c0 or cci depending on whether the table
-			is for the big cluster, little cluster or cci.
-Optional properties:
-- qcom,cpu-pcnoc-vote:  Boolean to indicate cpu clocks would need to keep
-			active pcnoc vote.
-- qcom,num-cluster:     Boolean to indicate cpu clock code is used for single
-			cluster.
-Example:
-	clock_cpu: qcom,cpu-clock-8939@f9015000 {
-		compatible = "qcom,cpu-clock-8939";
-		reg = <0xf9015000 0x1000>,
-		      <0xf9016000 0x1000>,
-		      <0xf9011000 0x1000>,
-		      <0xf900d000 0x1000>,
-		      <0xf900f000 0x1000>,
-		      <0xf9112000 0x1000>;
-		reg-names = "apcs-c0-rcg-base", "apcs-c1-rcg-base",
-			     "apcs-cci-rcg-base", "efuse", "efuse1",
-				"efuse2";
-                vdd-c0-supply = <&apc_vreg_corner>;
-		vdd-c1-supply = <&apc_vreg_corner>;
-		vdd-cci-supply = <&apc_vreg_corner>;
-		qcom,speed0-bin-v0-c0 =
-			<         0 0>,
-			< 384000000 1>,
-			< 787200000 2>,
-			<1286400000 3>;
-		qcom,speed0-bin-v0-c1 =
-			<         0 0>,
-			< 384000000 1>,
-			< 787200000 2>,
-			<1785600000 3>;
-		qcom,speed0-bin-v0-cci =
-			<         0 0>,
-			< 150000000 1>,
-			< 300000000 2>,
-			< 600000000 3>;
-		clocks = <&clock_gcc clk_gpll0_ao>,
-			<&clock_gcc clk_a53ss_c0_pll>,
-			<&clock_gcc clk_gpll0_ao>,
-			<&clock_gcc clk_a53ss_c1_pll>,
-			<&clock_gcc clk_gpll0_ao>,
-			<&clock_gcc clk_a53ss_cci_pll>;
-			clock-names = "clk-c0-4", "clk-c0-5",
-			"clk-c1-4", "clk-c1-5",
-			"clk-cci-4", "clk-cci-5";
-		#clock-cells = <1>;
-};
diff --git a/bindings/clock/qcom,gcc.txt b/bindings/clock/qcom,gcc.txt
index 179f56c..2f066cd 100644
--- a/bindings/clock/qcom,gcc.txt
+++ b/bindings/clock/qcom,gcc.txt
@@ -32,11 +32,9 @@
 			"qcom,gcc-msm8937"
 			"qcom,gcc-sdm429w"
 			"qcom,gcc-mdss-msm8937"
-			"qcom,gcc-mdss-8917"
+			"qcom,gcc-mdss-qm215"
 			"qcom,gcc-mdss-sdm429w"
-			"qcom,gcc-mdss-sdm429"
 			"qcom,gcc-mdss-sdm439"
-			"qcom,gcc-mdss-sdm429w"
 
 - reg : shall contain base register location and length
 - #clock-cells : shall contain 1
diff --git a/bindings/clock/qcom,rpmcc.txt b/bindings/clock/qcom,rpmcc.txt
index 4a3152d..2c16746 100644
--- a/bindings/clock/qcom,rpmcc.txt
+++ b/bindings/clock/qcom,rpmcc.txt
@@ -18,8 +18,7 @@
 			"qcom,rpmcc-msm8996", "qcom,rpmcc"
 			"qcom,rpmcc-bengal", "qcom,rpmcc"
 			"qcom,rpmcc-sdm660", "qcom,rpmcc"
-			"qcom,rpmcc-msm8937", "qcom,rpmcc"
-			"qcom,rpmcc-msm8917", "qcom,rpmcc"
+			"qcom,rpmcc-sdm439", "qcom,rpmcc"
 			"qcom,rpmcc-qm215", "qcom,rpmcc"
 
 - #clock-cells : shall contain 1
diff --git a/bindings/clock/qcom,sdm-cpucc.txt b/bindings/clock/qcom,sdm-cpucc.txt
new file mode 100644
index 0000000..4b6d910
--- /dev/null
+++ b/bindings/clock/qcom,sdm-cpucc.txt
@@ -0,0 +1,96 @@
+Qualcomm Technologies, Inc. SDM CPU clock driver
+---------------------------------------------------
+
+It is the clock controller driver which provides higher frequency
+clocks and allows CPU frequency scaling on sdm based platforms.
+
+Required properties:
+- compatible:	Shall contain following:
+		"qcom,cpu-clock-sdm", "qcom,cpu-clock-qm215",
+		"qcom,cpu-clock-sdm439", "qcom,cpu-clock-sdm429"
+- clocks:	Phandle to the clock device.
+- clock-names:	Names of the used clocks. Shall contain following:
+		"xo_ao", "gpll0_ao"
+- reg:	Shall contain base register offset and size.
+- reg-names:	Names of the bases for the above registers. Shall contain following:
+		"apcs-c1-rcg-base", "apcs-cci-rcg-base", "apcs_pll", "efuse"
+- vdd_dig_ao-supply:	The regulator(active only) powering the digital logic of APSS PLL.
+- vdd_hf_pll-supply:	The regulator(active only) powering the Analog logic of APSS PLL.
+- cpu-vdd-supply:	The regulator powering the APSS C1 RCG and APSS CCI RCG.
+- qcom,speedX-bin-vY-Z:	A table of CPU frequency (Hz) to regulator voltage (uV) mapping.
+			Format: <freq uV>
+			This represents the max frequency possible for each possible
+			power configuration for a CPU that's binned as speed bin X,
+			speed bin revision Y. Version can be between [0-3]. Z
+			is the mux id c1 or cci.
+- #clock-cells:	Shall contain 1.
+
+Example:
+	clock_cpu: qcom,clock-cpu@0b011050 {
+		compatible = "qcom,cpu-clock-sdm";
+		clocks = <&rpmcc RPM_SMD_XO_A_CLK_SRC>,
+			<&gcc GPLL0_AO_OUT_MAIN>;
+		clock-names = "xo_ao", "gpll0_ao" ;
+		reg =   <0xb011050 0x8>,
+			<0xb1d1050 0x8>,
+			<0xb016000 0x34>,
+			<0x00a412c 0x8>;
+		reg-names = "apcs-c1-rcg-base",
+			"apcs-cci-rcg-base", "apcs_pll", "efuse";
+		cpu-vdd-supply = <&apc_vreg_corner>;
+		vdd_dig_ao-supply = <&L12A_AO;
+		vdd_hf_pll-supply = <&VDD_CX_LEVEL_AO>;
+		qcom,speed0-bin-v0-c1 =
+			<          0 0>,
+			<  960000000 1>,
+			< 1305600000 1>,
+			< 1497600000 2>,
+			< 1708800000 3>,
+			< 1958400000 5>;
+
+		qcom,speed0-bin-v0-cci =
+			<          0 0>,
+			<  400000000 1>,
+			<  533333333 3>;
+
+		qcom,speed1-bin-v0-c1 =
+			<          0 0>,
+			<  960000000 1>,
+			< 1305600000 1>,
+			< 1497600000 2>,
+			< 1708800000 3>,
+			< 1804800000 5>;
+
+		qcom,speed1-bin-v0-cci =
+			<          0 0>,
+			<  400000000 1>,
+			<  533333333 3>;
+
+		qcom,speed4-bin-v0-c1 =
+			<          0 0>,
+			<  960000000 1>,
+			< 1305600000 1>,
+			< 1497600000 2>,
+			< 1708800000 3>,
+			< 1958400000 5>,
+			< 2016000000 6>;
+
+		qcom,speed4-bin-v0-cci =
+			<          0 0>,
+			<  400000000 1>,
+			<  533333333 3>;
+
+		qcom,speed5-bin-v0-c1 =
+			<          0 0>,
+			<  960000000 1>,
+			< 1305600000 1>,
+			< 1497600000 2>,
+			< 1708800000 3>;
+
+		qcom,speed5-bin-v0-cci =
+			<          0 0>,
+			<  400000000 1>,
+			<  533333333 3>;
+
+		#clock-cells = <1>;
+	};
diff --git a/bindings/cnss/wcnss-wlan.txt b/bindings/cnss/wcnss-wlan.txt
new file mode 100644
index 0000000..fbe1bca
--- /dev/null
+++ b/bindings/cnss/wcnss-wlan.txt
@@ -0,0 +1,110 @@
+* Qualcomm Technologies Inc. WCNSS Platform Driver
+
+WCNSS driver is the platform driver. It is used for performing the cold
+boot-up of the wireless device. It is responsible for adjusting
+the necessary I/O rails and enabling appropriate gpios for wireless
+connectivity subsystem.
+
+Required properties:
+- compatible: "wcnss_wlan"
+- reg: physical address and length of the register set for the device.
+- reg-names: "wcnss_mmio", "wcnss_fiq", "pronto_phy_base", "riva_phy_base",
+	"riva_ccu_base", "pronto_a2xb_base", "pronto_ccpu_base",
+	"pronto_saw2_base", "wlan_tx_phy_aborts","wlan_brdg_err_source",
+	"wlan_tx_status", "alarms_txctl", "alarms_tactl",
+	"pronto_mcu_base", "pronto_qfuse".
+- interupts: Pronto to Apps interrupts for tx done and rx pending.
+- qcom,pronto-vddmx-supply: regulator to supply pronto pll.
+- qcom,pronto-vddcx-supply: voltage corner regulator to supply WLAN/BT/FM
+digital module.
+- qcom,pronto-vddpx-supply: regulator to supply WLAN DAC.
+- qcom,iris-vddxo-supply  : regulator to supply RF XO.
+- qcom,iris-vddrfa-supply : regulator to supply RFA digital.
+- qcom,iris-vddpa-supply  : regulator to supply RF PA.
+- qcom,iris-vdddig-supply : regulator to supply RF digital(BT/FM).
+- gpios: gpio numbers to configure 5-wire interface of WLAN connectivity
+- qcom,has-48mhz-xo: boolean flag to determine the usage of 24MHz XO from RF
+- qcom,has-pronto-hw: boolean flag to determine the revId of the WLAN subsystem
+- qcom,wcnss-adc_tm: ADC handle for vbatt notification APIs.
+- qcom,wcnss-vadc: VADC handle for battery voltage notification APIs.
+- pinctrl-<n> : Pinctrl states as described in bindings/pinctrl/pinctrl-bindings.txt
+- pinctrl-names : Names corresponding to the numbered pinctrl states
+- clocks: from common clock binding: handle to xo, rf_clk and wcnss snoc clocks.
+- clock-names: Names of all the clocks that are accessed by the subsystem
+- qcom,vdd-voltage-level: This property represents (nominal, min, max) voltage
+for iris and pronto regulators in milli-volts.
+- qcom,vdd-current: This property represents current value for
+iris and pronto regulators in micro-amps.
+
+Optional properties:
+- qcom,has-autodetect-xo: boolean flag to determine whether Iris XO auto detect
+should be performed during boot up.
+- qcom,snoc-wcnss-clock-freq: indicates the wcnss snoc clock frequency in Hz.
+If wcnss_snoc clock is specified in the list of clocks, this property needs
+to be set to make it functional.
+- qcom,wlan-rx-buff-count: WLAN RX buffer count is a configurable value,
+using a smaller count for this buffer will reduce the memory usage.
+- qcom,is-pronto-v3: boolean flag to determine the pronto hardware version
+in use. subsequently correct workqueue will be used by DXE engine to push frames
+in TX data path.
+- qcom,is-dual-band-disable: boolean flag to determine the WLAN dual band
+capability.
+- qcom,is-pronto-vadc: boolean flag to determine Battery voltage feature
+support for pronto hardware.
+- qcom,wcnss-pm : <Core rail LDO#, PA rail LDO#, XO settling time,
+RPM power collapse enabled, standalone power collapse enabled>
+Power manager related parameter for LDO configuration.
+	11     -  WCN CORE rail LDO number
+	21     -  WCN PA rail LDO number
+	1200   -  WCN XO settling time (usec)
+	1      -  WCN RPM power collapse enabled
+	1      -  WCN standalone power collapse enabled
+	6      -  GPIO strength value
+- qcom,has-vsys-adc-channel: boolean flag to determine which ADC HW channel need
+to use for VBATT feature.
+- qcom,has-a2xb-split-reg: boolean flag to determine A2xb split timeout limit
+register is available or not.
+
+Example:
+
+qcom,wcnss-wlan@fb000000 {
+	compatible = "qcom,wcnss_wlan";
+	reg = <0xfb000000 0x280000>,
+	    <0xf9011008 0x04>;
+reg-names = "wcnss_mmio", "wcnss_fiq";
+	interrupts = <0 145 0 0 146 0>;
+	interrupt-names = "wcnss_wlantx_irq", "wcnss_wlanrx_irq";
+
+	qcom,pronto-vddmx-supply = <&pm8841_s1>;
+	qcom,pronto-vddcx-supply = <&pm8841_s2_corner>;
+	qcom,pronto-vddpx-supply = <&pm8941_s3>;
+	qcom,iris-vddxo-supply = <&pm8941_l6>;
+	qcom,iris-vddrfa-supply = <&pm8941_l11>;
+	qcom,iris-vddpa-supply = <&pm8941_l19>;
+	qcom,iris-vdddig-supply = <&pm8941_l3>;
+
+	gpios = <&msmgpio 36 0>, <&msmgpio 37 0>, <&msmgpio 38 0>,
+	      <&msmgpio 39 0>, <&msmgpio 40 0>;
+	qcom,has-48mhz-xo;
+	qcom,is-pronto-vt;
+	qcom,wlan-rx-buff-count = <512>;
+	qcom,has-pronto-hw;
+	qcom,wcnss-adc_tm = <&pm8226_adc_tm>;
+
+	pinctrl-names = "wcnss_default", "wcnss_sleep";
+	pinctrl-0 = <&wcnss_default>;
+	pinctrl-1 = <&wcnss_sleep>;
+	pinctrl-2 = <&wcnss_gpio_default>;
+
+	clocks = <&clock_rpm clk_xo_wlan_clk>,
+	       <&clock_rpm clk_rf_clk2>,
+	       <&clock_debug clk_gcc_debug_mux>,
+	       <&clock_gcc clk_wcnss_m_clk>,
+	       <&clock_gcc clk_snoc_wcnss_a_clk>;
+
+	clock-names = "xo", "rf_clk", "measure", "wcnss_debug",
+		"snoc_wcnss";
+
+	qcom,snoc-wcnss-clock-freq = <200000000>;
+	qcom,wcnss-pm = <11 21 1200 1 1 6>;
+};
diff --git a/bindings/iio/adc/qcom-rradc.txt b/bindings/iio/adc/qcom-rradc.txt
index 1ab49ed..f21aa90 100644
--- a/bindings/iio/adc/qcom-rradc.txt
+++ b/bindings/iio/adc/qcom-rradc.txt
@@ -45,6 +45,10 @@
 - qcom,pmic-revid : Phandle pointing to the revision peripheral node. Use it to query the
 		    PMIC fabrication ID for applying the appropriate temperature
 		    compensation parameters.
+
+- qcom,rradc-fg-reset-wa : With this property enabled, RRADC can register for a power supply
+            notifier and reset FG through a power supply property if it gets stuck.
+
 Example:
 
 	/* RRADC node */
diff --git a/bindings/media/video/msm-vidc.txt b/bindings/media/video/msm-vidc.txt
index 264725f..793a1a6 100644
--- a/bindings/media/video/msm-vidc.txt
+++ b/bindings/media/video/msm-vidc.txt
@@ -11,6 +11,7 @@
         - "qcom,bengal-vidc" : Invokes driver specific data for BENGAL.
         - "qcom,lagoon-vidc" : Invokes driver specific data for LAGOON.
         - "qcom,scuba-vidc" : Invokes driver specific data for SCUBA.
+        - "qcom,qcs8250-vidc" : Invokes driver specific data for KONA.
 Optional properties:
 - reg : offset and length of the register set for the device.
 - sku-index : sku version of the hardware.
diff --git a/bindings/mfd/qcom-pm8xxx.txt b/bindings/mfd/qcom-pm8xxx.txt
index 07f4925..3d3d628 100644
--- a/bindings/mfd/qcom-pm8xxx.txt
+++ b/bindings/mfd/qcom-pm8xxx.txt
@@ -65,6 +65,7 @@
 		    "qcom,pm8941-rtc"
 		    "qcom,pm8018-rtc"
 		    "qcom,pmk8350-rtc"
+		    "qcom,pm8916-rtc"
 
 - reg:
 	Usage: required
diff --git a/bindings/misc/qcom,qrc.txt b/bindings/misc/qcom,qrc.txt
new file mode 100644
index 0000000..6198079
--- /dev/null
+++ b/bindings/misc/qcom,qrc.txt
@@ -0,0 +1,13 @@
+Qualcomm Technologies, Inc. qrc driver
+
+Driver for QTI robotic controller.
+
+Required properties:
+
+compatible = "qcom,qrc-uart";
+
+Example:
+
+qrc: qcom,qrc_uart {
+       compatible = "qcom,qrc-uart";
+};
diff --git a/bindings/regulator/gdsc-regulator.txt b/bindings/regulator/gdsc-regulator.txt
index 4f31737..bb45a06 100644
--- a/bindings/regulator/gdsc-regulator.txt
+++ b/bindings/regulator/gdsc-regulator.txt
@@ -76,6 +76,8 @@
  - qcom,skip-disable-before-sw-enable : Presence denotes a hardware requirement
 					to leave the GDSC on that has been
 					enabled by an entity external to HLOS.
+ - qcom,no-config-gdscr: Presence denotes HW only supports a single register
+			per GDSC.
 
 [1]: Documentation/devicetree/bindings/arm/msm/msm_bus.txt
 
diff --git a/bindings/thermal/qcom-thermal-efprom.txt b/bindings/thermal/qcom-thermal-efprom.txt
new file mode 100644
index 0000000..d9e5010
--- /dev/null
+++ b/bindings/thermal/qcom-thermal-efprom.txt
@@ -0,0 +1,73 @@
+Modify Thermal Zone based on efuse data
+
+This driver is to enable/disable pre-configured thermal
+zones selectively at runtime based on efuse data. It uses QFPROM
+nvmem cell interface to read efuse data. It supports multiple
+efuse condition. If any of the efuse condition fails, driver just
+exits with default enabled thermal zones.
+
+Properties:
+
+- compatible:
+	Usage: Required
+	Value type: <string>
+	Definition: shall be "qcom,thermal-qfprom-device".
+
+- nvmem-cells:
+	Usage: Required
+	Value type: <array of phandle>
+	Definition: Array of phandles pointing to a nvmem-cells node
+		representing the efuse registers that has information that
+		is used to select the right thermal zone to enable.
+		Please refer nvmem-cells bindings
+		Documentation/devicetree/bindings/nvmem/nvmem.txt and also
+		example below.
+
+ nvmem-cell-names:
+	Usage: Required
+	Value type: <array of string>
+	Definition:  Should be array of name for each nvmem-cells phandle data.
+		Please refer nvmem-cells bindings
+		Documentation/devicetree/bindings/nvmem/nvmem.txt and also
+		example below.
+
+- qcom,thermal-qfprom-bit-values: It should be array of bit mask values to
+		match with each nvmem-cells bit value respectively. If all
+		nvmem-cells values are matching with respective bit mask value
+		from this property, then driver will update thermal zones as
+		per thermal zones mentioned in 'qcom,thermal-zone-enable-list'
+		and 'qcom,thermal-zone-disable-list'.
+
+- qcom,thermal-zone-enable-list:
+	Usage: Required
+	Value type: <array of strings>
+	Definition: Should define this property with list of thermal zone
+		names those need to be enabled if nvmem-cells condition is met.
+
+- qcom,thermal-zone-disable-list:
+	Usage: Required
+	Value type: <array of strings>
+	Definition: Should define this property with list of thermal zone
+		names those need to be disabled if nvmem-cells condition is met.
+
+Example:
+	qcom-thermal-qfprom {
+		compatible = "qcom,thermal-qfprom-device";
+		nvmem-cells = <&thermal_cpe>, <&thermal_revision>;
+		nvmem-cell-names = "cpe", "revision";
+		qcom,thermal-qfprom-bit-values = <0x1 0x3>
+		qcom,thermal-zone-enable-list = "mdm-core-0-cpe-step",
+					"mdm-core-1-cpe-step";
+		qcom,thermal-zone-disable-list = "mdm-core-0-step",
+					"mdm-core-1-step";
+	};
+
+	In this example, driver gets efuse bit values of nvmem-cell register
+	for both 'cpe' and 'revision' nvmem cells. It then compares these efuse
+	values with property 'qcom,thermal-qfprom-bit-values' values (0x1 and
+	0x3 here) respectively. If both efuse values are matching with this
+	property values, driver enables thermal zones listed in property
+	'qcom,thermal-zone-enable-list' and disables thermal zones listed in
+	property 'qcom,thermal-zone-disable-list'. If any of the efuse
+	value is not matching with respective 'qcom,thermal-qfprom-bit-values'
+	values, driver just exits without modifying any thermal zone.
diff --git a/bindings/wcnss/wcnss-wlan.txt b/bindings/wcnss/wcnss-wlan.txt
new file mode 100644
index 0000000..fbe1bca
--- /dev/null
+++ b/bindings/wcnss/wcnss-wlan.txt
@@ -0,0 +1,110 @@
+* Qualcomm Technologies Inc. WCNSS Platform Driver
+
+WCNSS driver is the platform driver. It is used for performing the cold
+boot-up of the wireless device. It is responsible for adjusting
+the necessary I/O rails and enabling appropriate gpios for wireless
+connectivity subsystem.
+
+Required properties:
+- compatible: "wcnss_wlan"
+- reg: physical address and length of the register set for the device.
+- reg-names: "wcnss_mmio", "wcnss_fiq", "pronto_phy_base", "riva_phy_base",
+	"riva_ccu_base", "pronto_a2xb_base", "pronto_ccpu_base",
+	"pronto_saw2_base", "wlan_tx_phy_aborts","wlan_brdg_err_source",
+	"wlan_tx_status", "alarms_txctl", "alarms_tactl",
+	"pronto_mcu_base", "pronto_qfuse".
+- interupts: Pronto to Apps interrupts for tx done and rx pending.
+- qcom,pronto-vddmx-supply: regulator to supply pronto pll.
+- qcom,pronto-vddcx-supply: voltage corner regulator to supply WLAN/BT/FM
+digital module.
+- qcom,pronto-vddpx-supply: regulator to supply WLAN DAC.
+- qcom,iris-vddxo-supply  : regulator to supply RF XO.
+- qcom,iris-vddrfa-supply : regulator to supply RFA digital.
+- qcom,iris-vddpa-supply  : regulator to supply RF PA.
+- qcom,iris-vdddig-supply : regulator to supply RF digital(BT/FM).
+- gpios: gpio numbers to configure 5-wire interface of WLAN connectivity
+- qcom,has-48mhz-xo: boolean flag to determine the usage of 24MHz XO from RF
+- qcom,has-pronto-hw: boolean flag to determine the revId of the WLAN subsystem
+- qcom,wcnss-adc_tm: ADC handle for vbatt notification APIs.
+- qcom,wcnss-vadc: VADC handle for battery voltage notification APIs.
+- pinctrl-<n> : Pinctrl states as described in bindings/pinctrl/pinctrl-bindings.txt
+- pinctrl-names : Names corresponding to the numbered pinctrl states
+- clocks: from common clock binding: handle to xo, rf_clk and wcnss snoc clocks.
+- clock-names: Names of all the clocks that are accessed by the subsystem
+- qcom,vdd-voltage-level: This property represents (nominal, min, max) voltage
+for iris and pronto regulators in milli-volts.
+- qcom,vdd-current: This property represents current value for
+iris and pronto regulators in micro-amps.
+
+Optional properties:
+- qcom,has-autodetect-xo: boolean flag to determine whether Iris XO auto detect
+should be performed during boot up.
+- qcom,snoc-wcnss-clock-freq: indicates the wcnss snoc clock frequency in Hz.
+If wcnss_snoc clock is specified in the list of clocks, this property needs
+to be set to make it functional.
+- qcom,wlan-rx-buff-count: WLAN RX buffer count is a configurable value,
+using a smaller count for this buffer will reduce the memory usage.
+- qcom,is-pronto-v3: boolean flag to determine the pronto hardware version
+in use. subsequently correct workqueue will be used by DXE engine to push frames
+in TX data path.
+- qcom,is-dual-band-disable: boolean flag to determine the WLAN dual band
+capability.
+- qcom,is-pronto-vadc: boolean flag to determine Battery voltage feature
+support for pronto hardware.
+- qcom,wcnss-pm : <Core rail LDO#, PA rail LDO#, XO settling time,
+RPM power collapse enabled, standalone power collapse enabled>
+Power manager related parameter for LDO configuration.
+	11     -  WCN CORE rail LDO number
+	21     -  WCN PA rail LDO number
+	1200   -  WCN XO settling time (usec)
+	1      -  WCN RPM power collapse enabled
+	1      -  WCN standalone power collapse enabled
+	6      -  GPIO strength value
+- qcom,has-vsys-adc-channel: boolean flag to determine which ADC HW channel need
+to use for VBATT feature.
+- qcom,has-a2xb-split-reg: boolean flag to determine A2xb split timeout limit
+register is available or not.
+
+Example:
+
+qcom,wcnss-wlan@fb000000 {
+	compatible = "qcom,wcnss_wlan";
+	reg = <0xfb000000 0x280000>,
+	    <0xf9011008 0x04>;
+reg-names = "wcnss_mmio", "wcnss_fiq";
+	interrupts = <0 145 0 0 146 0>;
+	interrupt-names = "wcnss_wlantx_irq", "wcnss_wlanrx_irq";
+
+	qcom,pronto-vddmx-supply = <&pm8841_s1>;
+	qcom,pronto-vddcx-supply = <&pm8841_s2_corner>;
+	qcom,pronto-vddpx-supply = <&pm8941_s3>;
+	qcom,iris-vddxo-supply = <&pm8941_l6>;
+	qcom,iris-vddrfa-supply = <&pm8941_l11>;
+	qcom,iris-vddpa-supply = <&pm8941_l19>;
+	qcom,iris-vdddig-supply = <&pm8941_l3>;
+
+	gpios = <&msmgpio 36 0>, <&msmgpio 37 0>, <&msmgpio 38 0>,
+	      <&msmgpio 39 0>, <&msmgpio 40 0>;
+	qcom,has-48mhz-xo;
+	qcom,is-pronto-vt;
+	qcom,wlan-rx-buff-count = <512>;
+	qcom,has-pronto-hw;
+	qcom,wcnss-adc_tm = <&pm8226_adc_tm>;
+
+	pinctrl-names = "wcnss_default", "wcnss_sleep";
+	pinctrl-0 = <&wcnss_default>;
+	pinctrl-1 = <&wcnss_sleep>;
+	pinctrl-2 = <&wcnss_gpio_default>;
+
+	clocks = <&clock_rpm clk_xo_wlan_clk>,
+	       <&clock_rpm clk_rf_clk2>,
+	       <&clock_debug clk_gcc_debug_mux>,
+	       <&clock_gcc clk_wcnss_m_clk>,
+	       <&clock_gcc clk_snoc_wcnss_a_clk>;
+
+	clock-names = "xo", "rf_clk", "measure", "wcnss_debug",
+		"snoc_wcnss";
+
+	qcom,snoc-wcnss-clock-freq = <200000000>;
+	qcom,wcnss-pm = <11 21 1200 1 1 6>;
+};
diff --git a/qcom/Makefile b/qcom/Makefile
index 8812334..7003b24 100644
--- a/qcom/Makefile
+++ b/qcom/Makefile
@@ -134,6 +134,7 @@
                 bengal-rumi-overlay.dtbo \
                 bengal-qrd-overlay.dtbo \
                 bengal-idp-overlay.dtbo \
+                bengal-idp-nopmi-overlay.dtbo \
                 bengal-idp-usbc-overlay.dtbo \
                 bengalp-idp-overlay.dtbo \
                 bengal-idp-1gb-overlay.dtbo \
@@ -152,6 +153,7 @@
 bengal-rumi-overlay.dtbo-base := bengal.dtb
 bengal-qrd-overlay.dtbo-base := bengal.dtb
 bengal-idp-overlay.dtbo-base := bengal.dtb
+bengal-idp-nopmi-overlay.dtbo-base := bengal.dtb
 bengal-idp-usbc-overlay.dtbo-base := bengal.dtb
 bengalp-idp-overlay.dtbo-base := bengalp.dtb
 bengal-idp-1gb-overlay.dtbo-base := bengal-1gb.dtb
@@ -170,6 +172,7 @@
 dtb-$(CONFIG_ARCH_BENGAL) += bengal-rumi.dtb \
                 bengal-qrd.dtb \
 		bengal-idp.dtb \
+		bengal-idp-nopmi.dtb \
 		bengal-idp-usbc.dtb \
 		bengalp-idp.dtb \
 		bengal-idp-1gb.dtb \
@@ -292,7 +295,12 @@
 endif
 
 ifeq ($(CONFIG_BUILD_ARM64_DT_OVERLAY),y)
-dtbo-$(CONFIG_ARCH_SDM439) += sdm439-mtp-overlay.dtbo
+
+dtbo-$(CONFIG_ARCH_SDM439) += sdm439-mtp-overlay.dtbo \
+        sdm439-cdp-overlay.dtbo \
+        sdm439-qrd-overlay.dtbo \
+        sdm439-external-codec-mtp-overlay.dtbo \
+        sdm439-rcm-overlay.dtbo
 
 dtbo-$(CONFIG_ARCH_SDM429) += sdm429-mtp-overlay.dtbo \
 	sdm429-cdp-overlay.dtbo \
@@ -301,10 +309,22 @@
 dtbo-$(CONFIG_ARCH_QM215) +=qm215-qrd-overlay.dtbo \
 	qcm2150-qrd-overlay.dtbo \
 	qm215-qrd-smb1360-overlay.dtbo
+
 sdm439-mtp-overlay.dtbo-base := sdm439.dtb \
 	sda439.dtb \
 	msm8937-interposer-sdm439.dtb
 
+sdm439-cdp-overlay.dtbo-base := sdm439.dtb \
+        sda439.dtb \
+        msm8937-interposer-sdm439.dtb
+
+sdm439-qrd-overlay.dtbo-base := sdm439.dtb \
+        msm8937-interposer-sdm439.dtb
+
+sdm439-external-codec-mtp-overlay.dtbo-base := sdm439.dtb
+sdm439-rcm-overlay.dtbo-base := sdm439.dtb
+
+
 sdm429-mtp-overlay.dtbo-base := sdm429.dtb \
 	sda429.dtb \
 	msm8937-interposer-sdm429.dtb
diff --git a/qcom/bengal-idp-low-ram.dtsi b/qcom/bengal-idp-low-ram.dtsi
index eef3e49..f045653 100644
--- a/qcom/bengal-idp-low-ram.dtsi
+++ b/qcom/bengal-idp-low-ram.dtsi
@@ -1 +1,2 @@
 #include "bengal-idp.dtsi"
+#include "bengal-idp-pmi632.dtsi"
diff --git a/qcom/bengal-idp-nopmi-overlay.dts b/qcom/bengal-idp-nopmi-overlay.dts
new file mode 100644
index 0000000..1bb7fc9
--- /dev/null
+++ b/qcom/bengal-idp-nopmi-overlay.dts
@@ -0,0 +1,13 @@
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include "bengal-idp-nopmi.dtsi"
+
+/ {
+	model = "Qualcomm Technologies, Inc. BENGAL IDP nopmi";
+	compatible = "qcom,bengal-idp", "qcom,bengal", "qcom,idp";
+	qcom,msm-id = <417 0x10000>, <444 0x10000>;
+	qcom,board-id = <34 0>;
+	qcom,pmic-id = <0x2D 0x0 0x0 0x0>;
+};
diff --git a/qcom/bengal-idp-nopmi.dts b/qcom/bengal-idp-nopmi.dts
new file mode 100644
index 0000000..a9f8f46
--- /dev/null
+++ b/qcom/bengal-idp-nopmi.dts
@@ -0,0 +1,11 @@
+/dts-v1/;
+
+#include "bengal.dtsi"
+#include "bengal-idp-nopmi.dtsi"
+
+/ {
+	model = "Qualcomm Technologies, Inc. BENGAL IDP nopmi";
+	compatible = "qcom,bengal-idp", "qcom,bengal", "qcom,idp";
+	qcom,board-id = <34 0>;
+	qcom,pmic-id = <0x2D 0x0 0x0 0x0>;
+};
diff --git a/qcom/bengal-idp-nopmi.dtsi b/qcom/bengal-idp-nopmi.dtsi
new file mode 100644
index 0000000..6f000af
--- /dev/null
+++ b/qcom/bengal-idp-nopmi.dtsi
@@ -0,0 +1,53 @@
+#include "bengal-idp.dtsi"
+
+&led_flash_rear {
+	/delete-property/ flash-source;
+	/delete-property/ torch-source;
+	/delete-property/ switch-source;
+};
+
+&led_flash_rear_aux {
+	/delete-property/ flash-source;
+	/delete-property/ torch-source;
+	/delete-property/ switch-source;
+};
+
+&led_flash_rear_aux2 {
+	/delete-property/ flash-source;
+	/delete-property/ torch-source;
+	/delete-property/ switch-source;
+};
+
+&sde_dsi {
+	/delete-property/ lab-supply;
+	/delete-property/ ibb-supply;
+};
+
+&dsi_td4330_truly_v2_video {
+	/delete-property/ qcom,esd-check-enabled;
+};
+
+&dsi_td4330_truly_v2_cmd {
+	/delete-property/ qcom,esd-check-enabled;
+};
+
+&qupv3_se2_i2c {
+	synaptics_tcm@20 {
+		status = "disabled";
+	};
+
+	novatek@62 {
+		status = "disabled";
+	};
+
+	focaltech@38 {
+		status = "disabled";
+	};
+};
+
+&usb0 {
+	/delete-property/ extcon;
+	dwc3@4e00000 {
+		dr_mode = "peripheral";
+	};
+};
diff --git a/qcom/bengal-idp-overlay.dts b/qcom/bengal-idp-overlay.dts
index 5b1e7f3..31af8ab 100644
--- a/qcom/bengal-idp-overlay.dts
+++ b/qcom/bengal-idp-overlay.dts
@@ -3,10 +3,13 @@
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include "bengal-idp.dtsi"
+#include "bengal-idp-pmi632.dtsi"
+#include "bengal-thermal-pmi632-overlay.dtsi"
 
 / {
 	model = "Qualcomm Technologies, Inc. BENGAL IDP";
 	compatible = "qcom,bengal-idp", "qcom,bengal", "qcom,idp";
 	qcom,msm-id = <417 0x10000>, <444 0x10000>;
 	qcom,board-id = <34 0>;
+	qcom,pmic-id = <0x2D 0x25 0x0 0x0>;
 };
diff --git a/qcom/bengal-idp-pmi632.dtsi b/qcom/bengal-idp-pmi632.dtsi
new file mode 100644
index 0000000..ac778bd
--- /dev/null
+++ b/qcom/bengal-idp-pmi632.dtsi
@@ -0,0 +1,64 @@
+#include "bengal-pmi632.dtsi"
+
+&pmi632_qg {
+	qcom,battery-data = <&mtp_batterydata>;
+	qcom,qg-iterm-ma = <100>;
+	qcom,hold-soc-while-full;
+	qcom,linearize-soc;
+	qcom,qg-use-s7-ocv;
+};
+
+&pmi632_charger {
+	qcom,battery-data = <&mtp_batterydata>;
+	qcom,suspend-input-on-debug-batt;
+	qcom,sw-jeita-enable;
+	qcom,step-charging-enable;
+	qcom,hvdcp2-max-icl-ua = <2000000>;
+	/* SMB1355 only */
+	qcom,sec-charger-config = <2>;
+	dpdm-supply = <&qusb_phy0>;
+	qcom,charger-temp-max = <800>;
+	qcom,smb-temp-max = <800>;
+	qcom,auto-recharge-soc = <98>;
+	qcom,flash-disable-soc = <10>;
+	qcom,hw-die-temp-mitigation;
+	qcom,hw-connector-mitigation;
+	qcom,connector-internal-pull-kohm = <100>;
+	qcom,float-option = <1>;
+	qcom,thermal-mitigation = <3000000 2500000
+			2000000 1500000 1000000 500000>;
+};
+
+&usb0 {
+	extcon = <&pmi632_charger>, <&eud>;
+};
+
+&smb1355 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&smb_int_default>;
+	interrupt-parent = <&tlmm>;
+	interrupts = <105 IRQ_TYPE_LEVEL_LOW>;
+	status = "ok";
+};
+
+&smb1355_charger {
+	pinctrl-names = "default";
+	pinctrl-0 = <&smb_en_default &pmi632_sense_default &pmi632_ctm_default>;
+	qcom,parallel-mode = <1>;
+	qcom,disable-ctm;
+	qcom,hw-die-temp-mitigation;
+	status = "ok";
+};
+
+&dsi_td4330_truly_v2_video {
+	qcom,platform-bklight-en-gpio = <&pmi632_gpios 6 0>;
+};
+
+&dsi_td4330_truly_v2_cmd {
+	qcom,platform-bklight-en-gpio = <&pmi632_gpios 6 0>;
+};
+
+&dsi_nt36525_truly_video {
+	qcom,platform-bklight-en-gpio = <&pmi632_gpios 6 0>;
+};
+
diff --git a/qcom/bengal-idp-usbc-overlay.dts b/qcom/bengal-idp-usbc-overlay.dts
index 4f2bb4c..53da1e4 100644
--- a/qcom/bengal-idp-usbc-overlay.dts
+++ b/qcom/bengal-idp-usbc-overlay.dts
@@ -3,6 +3,7 @@
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include "bengal-idp.dtsi"
+#include "bengal-idp-pmi632.dtsi"
 #include "bengal-idp-usbc.dtsi"
 
 / {
diff --git a/qcom/bengal-idp-usbc.dts b/qcom/bengal-idp-usbc.dts
index c9e9b24..a0ae3f5 100644
--- a/qcom/bengal-idp-usbc.dts
+++ b/qcom/bengal-idp-usbc.dts
@@ -2,6 +2,7 @@
 
 #include "bengal.dtsi"
 #include "bengal-idp.dtsi"
+#include "bengal-idp-pmi632.dtsi"
 #include "bengal-idp-usbc.dtsi"
 
 / {
diff --git a/qcom/bengal-idp.dts b/qcom/bengal-idp.dts
index 5c41c0d..1ad45c7 100644
--- a/qcom/bengal-idp.dts
+++ b/qcom/bengal-idp.dts
@@ -2,9 +2,12 @@
 
 #include "bengal.dtsi"
 #include "bengal-idp.dtsi"
+#include "bengal-thermal-pmi632-overlay.dtsi"
+#include "bengal-idp-pmi632.dtsi"
 
 / {
 	model = "Qualcomm Technologies, Inc. BENGAL IDP";
 	compatible = "qcom,bengal-idp", "qcom,bengal", "qcom,idp";
 	qcom,board-id = <34 0>;
+	qcom,pmic-id = <0x2D 0x25 0x0 0x0>;
 };
diff --git a/qcom/bengal-idp.dtsi b/qcom/bengal-idp.dtsi
index 6989918..160eb3c 100644
--- a/qcom/bengal-idp.dtsi
+++ b/qcom/bengal-idp.dtsi
@@ -6,13 +6,6 @@
 #include "bengal-sde-display.dtsi"
 #include "camera/bengal-camera-sensor-idp.dtsi"
 
-&soc {
-	mtp_batterydata: qcom,battery-data {
-		qcom,batt-id-range-pct = <15>;
-		#include "qg-batterydata-alium-3600mah.dtsi"
-	};
-};
-
 &qupv3_se1_i2c {
 	status = "ok";
 	#include "smb1355.dtsi"
@@ -64,68 +57,11 @@
 	};
 };
 
-&pmi632_qg {
-	qcom,battery-data = <&mtp_batterydata>;
-	qcom,qg-iterm-ma = <100>;
-	qcom,hold-soc-while-full;
-	qcom,linearize-soc;
-	qcom,qg-use-s7-ocv;
-};
-
-&pmi632_charger {
-	qcom,battery-data = <&mtp_batterydata>;
-	qcom,suspend-input-on-debug-batt;
-	qcom,sw-jeita-enable;
-	qcom,step-charging-enable;
-	qcom,hvdcp2-max-icl-ua = <2000000>;
-	/* SMB1355 only */
-	qcom,sec-charger-config = <2>;
-	dpdm-supply = <&qusb_phy0>;
-	qcom,charger-temp-max = <800>;
-	qcom,smb-temp-max = <800>;
-	qcom,auto-recharge-soc = <98>;
-	qcom,flash-disable-soc = <10>;
-	qcom,hw-die-temp-mitigation;
-	qcom,hw-connector-mitigation;
-	qcom,connector-internal-pull-kohm = <100>;
-	qcom,float-option = <1>;
-	qcom,thermal-mitigation = <3000000 2500000
-			2000000 1500000 1000000 500000>;
-};
-
-&pmi632_gpios {
-	smb_en {
-		smb_en_default: smb_en_default {
-			pins = "gpio2";
-			function = "func1";
-			output-enable;
-		};
-	};
-
-	pmi632_sense {
-		/* GPIO 7 and 8 are external-sense pins for PMI632 */
-		pmi632_sense_default: pmi632_sense_default {
-			pins = "gpio7", "gpio8";
-			bias-high-impedance;	/* disable the GPIO */
-			bias-disable;		/* no-pull */
-		};
-	};
-
-	pmi632_ctm {
-		/* Disable GPIO1 for h/w base mitigation */
-		pmi632_ctm_default: pmi632_ctm_default {
-			pins = "gpio1";
-			bias-high-impedance;	/* disable the GPIO */
-			bias-disable;		/* no-pull */
-		};
-	};
-};
-
 &pm6125_gpios {
 
 	rf_pa1_therm {
 		rf_pa1_therm_default: rf_pa1_therm_default {
-			 pins = "gpio7";
+			pins = "gpio7";
 			 bias-high-impedance;
 		};
 	};
@@ -141,10 +77,6 @@
 	};
 };
 
-&usb0 {
-	extcon = <&pmi632_charger>, <&eud>;
-};
-
 &soc {
 	gpio_keys {
 		compatible = "gpio-keys";
@@ -202,23 +134,6 @@
 	};
 };
 
-&smb1355 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&smb_int_default>;
-	interrupt-parent = <&tlmm>;
-	interrupts = <105 IRQ_TYPE_LEVEL_LOW>;
-	status = "ok";
-};
-
-&smb1355_charger {
-	pinctrl-names = "default";
-	pinctrl-0 = <&smb_en_default &pmi632_sense_default &pmi632_ctm_default>;
-	qcom,parallel-mode = <1>;
-	qcom,disable-ctm;
-	qcom,hw-die-temp-mitigation;
-	status = "ok";
-};
-
 &sdhc_1 {
 	vdd-supply = <&L24A>;
 	qcom,vdd-voltage-level = <2960000 2960000>;
@@ -302,7 +217,6 @@
 	qcom,mdss-dsi-bl-min-level = <1>;
 	qcom,mdss-dsi-bl-max-level = <4095>;
 	qcom,platform-reset-gpio = <&tlmm 82 0>;
-	qcom,platform-bklight-en-gpio = <&pmi632_gpios 6 0>;
 };
 
 &dsi_td4330_truly_v2_cmd {
@@ -314,7 +228,6 @@
 	qcom,mdss-dsi-bl-max-level = <4095>;
 	qcom,platform-te-gpio = <&tlmm 81 0>;
 	qcom,platform-reset-gpio = <&tlmm 82 0>;
-	qcom,platform-bklight-en-gpio = <&pmi632_gpios 6 0>;
 };
 
 &dsi_nt36525_truly_video {
@@ -325,7 +238,6 @@
 	qcom,mdss-dsi-bl-min-level = <1>;
 	qcom,mdss-dsi-bl-max-level = <4095>;
 	qcom,platform-reset-gpio = <&tlmm 82 0>;
-	qcom,platform-bklight-en-gpio = <&pmi632_gpios 6 0>;
 };
 
 &dsi_r66451_amoled_hd_90hz_video {
diff --git a/qcom/bengal-iot-idp.dtsi b/qcom/bengal-iot-idp.dtsi
index eef3e49..f045653 100644
--- a/qcom/bengal-iot-idp.dtsi
+++ b/qcom/bengal-iot-idp.dtsi
@@ -1 +1,2 @@
 #include "bengal-idp.dtsi"
+#include "bengal-idp-pmi632.dtsi"
diff --git a/qcom/bengal-iot.dtsi b/qcom/bengal-iot.dtsi
index 6d93a7a..794b85b 100644
--- a/qcom/bengal-iot.dtsi
+++ b/qcom/bengal-iot.dtsi
@@ -1,4 +1,5 @@
 #include "bengal.dtsi"
+#include "bengal-pmi632.dtsi"
 
 / {
 	model = "Qualcomm Technologies, Inc. BENGAL-IOT";
diff --git a/qcom/bengal-low-ram.dtsi b/qcom/bengal-low-ram.dtsi
index 8179bf4..05c53c5 100644
--- a/qcom/bengal-low-ram.dtsi
+++ b/qcom/bengal-low-ram.dtsi
@@ -1,4 +1,5 @@
 #include "bengal.dtsi"
+#include "bengal-pmi632.dtsi"
 / {
 };
 
diff --git a/qcom/bengal-pmi632.dtsi b/qcom/bengal-pmi632.dtsi
new file mode 100644
index 0000000..caa724a
--- /dev/null
+++ b/qcom/bengal-pmi632.dtsi
@@ -0,0 +1,138 @@
+#include "pmi632.dtsi"
+
+&soc {
+	mtp_batterydata: qcom,battery-data {
+		qcom,batt-id-range-pct = <15>;
+		#include "qg-batterydata-alium-3600mah.dtsi"
+	};
+};
+
+&pmi632_vadc {
+	#address-cells = <1>;
+	#size-cells = <0>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&conn_therm_default &skin_therm_default>;
+
+	conn_therm {
+		reg = <ADC_GPIO1_PU2>;
+		label = "conn_therm";
+		qcom,ratiometric;
+		qcom,hw-settle-time = <200>;
+		qcom,pre-scaling = <1 1>;
+	};
+
+	skin_therm {
+		reg = <ADC_GPIO2_PU2>;
+		label = "skin_therm";
+		qcom,ratiometric;
+		qcom,hw-settle-time = <200>;
+		qcom,pre-scaling = <1 1>;
+	};
+};
+
+&pmi632_gpios {
+	conn_therm {
+		conn_therm_default: conn_therm_default {
+			pins = "gpio1";
+			bias-high-impedance;
+		};
+	};
+
+	skin_therm {
+		skin_therm_default: skin_therm_default {
+			pins = "gpio3";
+			bias-high-impedance;
+		};
+	};
+};
+
+&pmi632_adc_tm {
+	#address-cells = <1>;
+	#size-cells = <0>;
+	io-channels = <&pmi632_vadc ADC_GPIO2_PU2>;
+
+	/* Channel nodes */
+	skin_therm {
+		reg = <ADC_GPIO2_PU2>;
+		qcom,ratiometric;
+		qcom,hw-settle-time = <200>;
+	};
+};
+
+&pmi632_gpios {
+	smb_en {
+		smb_en_default: smb_en_default {
+			pins = "gpio2";
+			function = "func1";
+			output-enable;
+		 };
+	};
+
+	pmi632_sense {
+		/* GPIO 7 and 8 are external-sense pins for PMI632 */
+		pmi632_sense_default: pmi632_sense_default {
+			pins = "gpio7", "gpio8";
+			bias-high-impedance;    /* disable the GPIO */
+			bias-disable;           /* no-pull */
+		};
+	};
+
+	pmi632_ctm {
+		/* Disable GPIO1 for h/w base mitigation */
+		pmi632_ctm_default: pmi632_ctm_default {
+			pins = "gpio1";
+			bias-high-impedance;    /* disable the GPIO */
+			bias-disable;           /* no-pull */
+		};
+	};
+};
+
+&pmi632_gpios {
+	disp_pins {
+		disp_pins_default: disp_pins_default {
+			pins = "gpio6";
+			function = "func1";
+			qcom,drive-strength = <2>;
+			power-source = <0>;
+			bias-disable;
+			output-low;
+		};
+	};
+};
+
+&thermal_zones {
+	chg-skin-therm-usr {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-governor = "user_space";
+		thermal-sensors = <&pmi632_adc_tm ADC_GPIO2_PU2>;
+		wake-capable-sensor;
+		trips {
+			active-config0 {
+				temperature = <125000>;
+				hysteresis = <1000>;
+				type = "passive";
+			};
+		};
+	};
+
+	quiet-therm-step {
+		cooling-maps {
+			batt_cdev1 {
+				cooling-device = <&pmi632_charger 2 2>;
+			};
+
+			batt_cdev2 {
+				cooling-device = <&pmi632_charger 4 4>;
+			};
+
+			batt_cdev3 {
+				cooling-device = <&pmi632_charger 6 6>;
+			};
+
+			batt_cdev4 {
+				cooling-device = <&pmi632_charger 7 7>;
+			};
+		};
+	};
+};
diff --git a/qcom/bengal-qrd-overlay.dts b/qcom/bengal-qrd-overlay.dts
index 1a4bfdc..b2dff92 100644
--- a/qcom/bengal-qrd-overlay.dts
+++ b/qcom/bengal-qrd-overlay.dts
@@ -1,6 +1,7 @@
 /dts-v1/;
 /plugin/;
 
+#include "bengal-pmi632.dtsi"
 #include "bengal-qrd.dtsi"
 
 / {
diff --git a/qcom/bengal-qrd.dts b/qcom/bengal-qrd.dts
index 8d1c093..d80d65e 100644
--- a/qcom/bengal-qrd.dts
+++ b/qcom/bengal-qrd.dts
@@ -1,6 +1,7 @@
 /dts-v1/;
 
 #include "bengal.dtsi"
+#include "bengal-pmi632.dtsi"
 #include "bengal-qrd.dtsi"
 
 / {
diff --git a/qcom/bengal-qrd.dtsi b/qcom/bengal-qrd.dtsi
index 18858d3..851535c 100644
--- a/qcom/bengal-qrd.dtsi
+++ b/qcom/bengal-qrd.dtsi
@@ -2,6 +2,7 @@
 #include <dt-bindings/iio/qcom,spmi-vadc.h>
 #include <dt-bindings/input/input.h>
 #include "bengal-thermal-overlay.dtsi"
+#include "bengal-thermal-pmi632-overlay.dtsi"
 #include "bengal-audio-overlay.dtsi"
 #include "bengal-sde-display.dtsi"
 #include "camera/bengal-camera-sensor-qrd.dtsi"
diff --git a/qcom/bengal-rumi-overlay.dts b/qcom/bengal-rumi-overlay.dts
index 87c19ba..8440ce0 100644
--- a/qcom/bengal-rumi-overlay.dts
+++ b/qcom/bengal-rumi-overlay.dts
@@ -2,6 +2,7 @@
 /plugin/;
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include "bengal-pmi632.dtsi"
 #include "bengal-rumi.dtsi"
 
 / {
diff --git a/qcom/bengal-rumi.dts b/qcom/bengal-rumi.dts
index b443a84..f2efdfa 100644
--- a/qcom/bengal-rumi.dts
+++ b/qcom/bengal-rumi.dts
@@ -2,6 +2,7 @@
 /memreserve/ 0x90000000 0x00000100;
 
 #include "bengal.dtsi"
+#include "bengal-pmi632.dtsi"
 #include "bengal-rumi.dtsi"
 
 / {
diff --git a/qcom/bengal-sde-display.dtsi b/qcom/bengal-sde-display.dtsi
index d9fcada..b6d7337 100644
--- a/qcom/bengal-sde-display.dtsi
+++ b/qcom/bengal-sde-display.dtsi
@@ -5,19 +5,6 @@
 #include "dsi-panel-r66451-hd-plus-90hz-cmd.dtsi"
 #include <dt-bindings/clock/mdss-14nm-pll-clk.h>
 
-&pmi632_gpios {
-	disp_pins {
-		disp_pins_default: disp_pins_default {
-			pins = "gpio6";
-			function = "func1";
-			qcom,drive-strength = <2>;
-			power-source = <0>;
-			bias-disable;
-			output-low;
-		};
-	};
-};
-
 &soc {
 	dsi_panel_pwr_supply: dsi_panel_pwr_supply {
 		#address-cells = <1>;
diff --git a/qcom/bengal-thermal-overlay.dtsi b/qcom/bengal-thermal-overlay.dtsi
index bfc70d7..cea18dc 100644
--- a/qcom/bengal-thermal-overlay.dtsi
+++ b/qcom/bengal-thermal-overlay.dtsi
@@ -1,24 +1,6 @@
 #include <dt-bindings/thermal/thermal.h>
 
 &thermal_zones {
-	pmi632-tz {
-		cooling-maps {
-			trip0_bat {
-				trip = <&pmi632_trip0>;
-				cooling-device =
-					<&pmi632_charger (THERMAL_MAX_LIMIT-1)
-						(THERMAL_MAX_LIMIT-1)>;
-			};
-
-			trip1_bat {
-				trip = <&pmi632_trip1>;
-				cooling-device =
-					<&pmi632_charger THERMAL_MAX_LIMIT
-						THERMAL_MAX_LIMIT>;
-			};
-		};
-	};
-
 	pm6125-tz {
 		cooling-maps {
 			trip0_cpu0 {
@@ -71,94 +53,6 @@
 			};
 		};
 	};
-
-	pmi632-bcl-lvl0 {
-		cooling-maps {
-			cpu0_cdev {
-				trip = <&bcl_lvl0>;
-				cooling-device =
-					<&CPU0 (THERMAL_MAX_LIMIT-5)
-						(THERMAL_MAX_LIMIT-5)>;
-			};
-
-			cpu4_cdev {
-				trip = <&bcl_lvl0>;
-				cooling-device =
-					<&CPU4 (THERMAL_MAX_LIMIT-5)
-						(THERMAL_MAX_LIMIT-5)>;
-			};
-		};
-	};
-
-	pmi632-bcl-lvl1 {
-		cooling-maps {
-			cpu0_cdev {
-				trip = <&bcl_lvl1>;
-				cooling-device =
-					<&CPU0 (THERMAL_MAX_LIMIT-4)
-						(THERMAL_MAX_LIMIT-4)>;
-			};
-
-			cpu4_cdev {
-				trip = <&bcl_lvl1>;
-				cooling-device =
-					<&CPU4 (THERMAL_MAX_LIMIT-4)
-						(THERMAL_MAX_LIMIT-4)>;
-			};
-
-			cpu6_cdev {
-				trip = <&bcl_lvl1>;
-				cooling-device = <&cpu6_isolate 1 1>;
-			};
-
-			cpu7_cdev {
-				trip = <&bcl_lvl1>;
-				cooling-device = <&cpu7_isolate 1 1>;
-			};
-		};
-	};
-
-	pmi632-bcl-lvl2 {
-		cooling-maps {
-			cpu4_cdev {
-				trip = <&bcl_lvl2>;
-				cooling-device = <&cpu4_isolate 1 1>;
-			};
-
-			cpu5_cdev {
-				trip = <&bcl_lvl2>;
-				cooling-device = <&cpu5_isolate 1 1>;
-			};
-		};
-	};
-
-	soc {
-		cooling-maps {
-			soc_cpu0 {
-				trip = <&pmi632_low_soc>;
-				cooling-device =
-					<&CPU0 (THERMAL_MAX_LIMIT-4)
-						(THERMAL_MAX_LIMIT-4)>;
-			};
-
-			soc_cpu4 {
-				trip = <&pmi632_low_soc>;
-				cooling-device =
-					<&CPU4 (THERMAL_MAX_LIMIT-4)
-						(THERMAL_MAX_LIMIT-4)>;
-			};
-
-			soc_cpu6 {
-				trip = <&pmi632_low_soc>;
-				cooling-device = <&cpu6_isolate 1 1>;
-			};
-
-			soc_cpu7 {
-				trip = <&pmi632_low_soc>;
-				cooling-device = <&cpu7_isolate 1 1>;
-			};
-		};
-	};
 };
 
 &mdss_mdp {
diff --git a/qcom/bengal-thermal-pmi632-overlay.dtsi b/qcom/bengal-thermal-pmi632-overlay.dtsi
new file mode 100644
index 0000000..6771046
--- /dev/null
+++ b/qcom/bengal-thermal-pmi632-overlay.dtsi
@@ -0,0 +1,109 @@
+#include <dt-bindings/thermal/thermal.h>
+
+&thermal_zones {
+	pmi632-tz {
+		cooling-maps {
+			trip0_bat {
+				trip = <&pmi632_trip0>;
+				cooling-device =
+					<&pmi632_charger (THERMAL_MAX_LIMIT-1)
+						(THERMAL_MAX_LIMIT-1)>;
+			};
+
+			trip1_bat {
+				trip = <&pmi632_trip1>;
+				cooling-device =
+					<&pmi632_charger THERMAL_MAX_LIMIT
+						THERMAL_MAX_LIMIT>;
+			};
+		};
+	};
+
+	pmi632-bcl-lvl0 {
+		cooling-maps {
+			cpu0_cdev {
+				trip = <&bcl_lvl0>;
+				cooling-device =
+					<&CPU0 (THERMAL_MAX_LIMIT-5)
+						(THERMAL_MAX_LIMIT-5)>;
+			};
+
+			cpu4_cdev {
+				trip = <&bcl_lvl0>;
+				cooling-device =
+					<&CPU4 (THERMAL_MAX_LIMIT-5)
+						(THERMAL_MAX_LIMIT-5)>;
+			};
+		};
+	};
+
+	pmi632-bcl-lvl1 {
+		cooling-maps {
+			cpu0_cdev {
+				trip = <&bcl_lvl1>;
+				cooling-device =
+					<&CPU0 (THERMAL_MAX_LIMIT-4)
+						(THERMAL_MAX_LIMIT-4)>;
+			};
+
+			cpu4_cdev {
+				trip = <&bcl_lvl1>;
+				cooling-device =
+					<&CPU4 (THERMAL_MAX_LIMIT-4)
+						(THERMAL_MAX_LIMIT-4)>;
+			};
+
+			cpu6_cdev {
+				trip = <&bcl_lvl1>;
+				cooling-device = <&cpu6_isolate 1 1>;
+			};
+
+			cpu7_cdev {
+				trip = <&bcl_lvl1>;
+				cooling-device = <&cpu7_isolate 1 1>;
+			};
+		};
+	};
+
+	pmi632-bcl-lvl2 {
+		cooling-maps {
+			cpu4_cdev {
+				trip = <&bcl_lvl2>;
+				cooling-device = <&cpu4_isolate 1 1>;
+			};
+
+			cpu5_cdev {
+				trip = <&bcl_lvl2>;
+				cooling-device = <&cpu5_isolate 1 1>;
+			};
+		};
+	};
+
+	soc {
+		cooling-maps {
+			soc_cpu0 {
+				trip = <&pmi632_low_soc>;
+				cooling-device =
+					<&CPU0 (THERMAL_MAX_LIMIT-4)
+						(THERMAL_MAX_LIMIT-4)>;
+			};
+
+			soc_cpu4 {
+				trip = <&pmi632_low_soc>;
+				cooling-device =
+					<&CPU4 (THERMAL_MAX_LIMIT-4)
+						(THERMAL_MAX_LIMIT-4)>;
+			};
+
+			soc_cpu6 {
+				trip = <&pmi632_low_soc>;
+				cooling-device = <&cpu6_isolate 1 1>;
+			};
+
+			soc_cpu7 {
+				trip = <&pmi632_low_soc>;
+				cooling-device = <&cpu7_isolate 1 1>;
+			};
+		};
+	};
+};
diff --git a/qcom/bengal-thermal.dtsi b/qcom/bengal-thermal.dtsi
index a2525d6..8f0ba2c 100644
--- a/qcom/bengal-thermal.dtsi
+++ b/qcom/bengal-thermal.dtsi
@@ -564,21 +564,6 @@
 		};
 	};
 
-	chg-skin-therm-usr {
-		polling-delay-passive = <0>;
-		polling-delay = <0>;
-		thermal-governor = "user_space";
-		thermal-sensors = <&pmi632_adc_tm ADC_GPIO2_PU2>;
-		wake-capable-sensor;
-		trips {
-			active-config0 {
-				temperature = <125000>;
-				hysteresis = <1000>;
-				type = "passive";
-			};
-		};
-	};
-
 	gpu-step {
 		polling-delay-passive = <10>;
 		polling-delay = <0>;
@@ -1232,22 +1217,18 @@
 
 			batt_cdev1 {
 				trip = <&skin_batt_trip0>;
-				cooling-device = <&pmi632_charger 2 2>;
 			};
 
 			batt_cdev2 {
 				trip = <&skin_batt_trip1>;
-				cooling-device = <&pmi632_charger 4 4>;
 			};
 
 			batt_cdev3 {
 				trip = <&skin_batt_trip2>;
-				cooling-device = <&pmi632_charger 6 6>;
 			};
 
 			batt_cdev4 {
 				trip = <&skin_batt_trip3>;
-				cooling-device = <&pmi632_charger 7 7>;
 			};
 		};
 	};
diff --git a/qcom/bengal-vidc.dtsi b/qcom/bengal-vidc.dtsi
index 2e00ba3..5a97a53 100644
--- a/qcom/bengal-vidc.dtsi
+++ b/qcom/bengal-vidc.dtsi
@@ -43,7 +43,7 @@
 			qcom,bus-master = <MSM_BUS_MASTER_VIDEO_P0>;
 			qcom,bus-slave = <MSM_BUS_SLAVE_EBI_CH0>;
 			qcom,mode  = "vidc-ar50-ddr";
-			qcom,bus-range-kbps = <1000 2128000>;
+			qcom,bus-range-kbps = <1000 6500000>;
 		};
 
 		arm9_bus_ddr {
diff --git a/qcom/bengal.dtsi b/qcom/bengal.dtsi
index b979423..519586a 100644
--- a/qcom/bengal.dtsi
+++ b/qcom/bengal.dtsi
@@ -2652,7 +2652,6 @@
 #include "bengal-coresight.dtsi"
 #include "bengal-bus.dtsi"
 #include "bengal-vidc.dtsi"
-#include "pmi632.dtsi"
 #include "pm6125.dtsi"
 
 &gcc_camss_top_gdsc {
@@ -2888,59 +2887,6 @@
 	};
 };
 
-&pmi632_vadc {
-	#address-cells = <1>;
-	#size-cells = <0>;
-	pinctrl-names = "default";
-	pinctrl-0 = <&conn_therm_default &skin_therm_default>;
-
-	conn_therm {
-		reg = <ADC_GPIO1_PU2>;
-		label = "conn_therm";
-		qcom,ratiometric;
-		qcom,hw-settle-time = <200>;
-		qcom,pre-scaling = <1 1>;
-	};
-
-	skin_therm {
-		reg = <ADC_GPIO2_PU2>;
-		label = "skin_therm";
-		qcom,ratiometric;
-		qcom,hw-settle-time = <200>;
-		qcom,pre-scaling = <1 1>;
-	};
-};
-
-&pmi632_gpios {
-	conn_therm {
-		conn_therm_default: conn_therm_default {
-			pins = "gpio1";
-			bias-high-impedance;
-		};
-	};
-
-	skin_therm {
-		skin_therm_default: skin_therm_default {
-			pins = "gpio3";
-			bias-high-impedance;
-		};
-	};
-
-};
-
-&pmi632_adc_tm {
-	#address-cells = <1>;
-	#size-cells = <0>;
-	io-channels = <&pmi632_vadc ADC_GPIO2_PU2>;
-
-	/* Channel nodes */
-	skin_therm {
-		reg = <ADC_GPIO2_PU2>;
-		qcom,ratiometric;
-		qcom,hw-settle-time = <200>;
-	};
-};
-
 &msm_vidc {
 	qcom,cx-ipeak-data = <&cx_ipeak_lm 6>;
 	qcom,clock-freq-threshold = <300000000>;
diff --git a/qcom/bengalp-idp-overlay.dts b/qcom/bengalp-idp-overlay.dts
index d8ba915..b01175e 100644
--- a/qcom/bengalp-idp-overlay.dts
+++ b/qcom/bengalp-idp-overlay.dts
@@ -3,6 +3,7 @@
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include "bengal-idp.dtsi"
+#include "bengal-idp-pmi632.dtsi"
 
 / {
 	model = "Qualcomm Technologies, Inc. BENGALP IDP";
diff --git a/qcom/bengalp-idp.dts b/qcom/bengalp-idp.dts
index 578d715..db8a15b 100644
--- a/qcom/bengalp-idp.dts
+++ b/qcom/bengalp-idp.dts
@@ -2,6 +2,7 @@
 
 #include "bengalp.dtsi"
 #include "bengal-idp.dtsi"
+#include "bengal-idp-pmi632.dtsi"
 
 / {
 	model = "Qualcomm Technologies, Inc. BENGALP IDP";
diff --git a/qcom/bengalp-iot-idp.dtsi b/qcom/bengalp-iot-idp.dtsi
index eef3e49..f045653 100644
--- a/qcom/bengalp-iot-idp.dtsi
+++ b/qcom/bengalp-iot-idp.dtsi
@@ -1 +1,2 @@
 #include "bengal-idp.dtsi"
+#include "bengal-idp-pmi632.dtsi"
diff --git a/qcom/bengalp-iot.dtsi b/qcom/bengalp-iot.dtsi
index 165af6a..8a9fa89 100644
--- a/qcom/bengalp-iot.dtsi
+++ b/qcom/bengalp-iot.dtsi
@@ -1,4 +1,5 @@
 #include "bengal.dtsi"
+#include "bengal-pmi632.dtsi"
 
 / {
 	model = "Qualcomm Technologies, Inc. BENGALP-IOT";
diff --git a/qcom/kona-audio-overlay.dtsi b/qcom/kona-audio-overlay.dtsi
index 602cc3a..7899483 100644
--- a/qcom/kona-audio-overlay.dtsi
+++ b/qcom/kona-audio-overlay.dtsi
@@ -38,6 +38,7 @@
 					"lpass_audio_hw_vote";
 			clocks = <&lpass_core_hw_vote 0>,
 					<&lpass_audio_hw_vote 0>;
+			qcom,swr-master-version = <0x01050001>;
 			qcom,swr_master_id = <3>;
 			qcom,mipi-sdw-block-packing-mode = <1>;
 			swrm-io-base = <0x3230000 0x0>;
@@ -82,6 +83,7 @@
 					"lpass_audio_hw_vote";
 			clocks = <&lpass_core_hw_vote 0>,
 					<&lpass_audio_hw_vote 0>;
+			qcom,swr-master-version = <0x01050001>;
 			qcom,swr_master_id = <2>;
 			qcom,mipi-sdw-block-packing-mode = <1>;
 			swrm-io-base = <0x3210000 0x0>;
@@ -120,6 +122,7 @@
 					"lpass_audio_hw_vote";
 			clocks = <&lpass_core_hw_vote 0>,
 					<&lpass_audio_hw_vote 0>;
+			qcom,swr-master-version = <0x01050001>;
 			qcom,swr_master_id = <1>;
 			qcom,mipi-sdw-block-packing-mode = <0>;
 			swrm-io-base = <0x3250000 0x0>;
diff --git a/qcom/kona-hdk.dtsi b/qcom/kona-hdk.dtsi
index 6a45603..bc96ee8 100644
--- a/qcom/kona-hdk.dtsi
+++ b/qcom/kona-hdk.dtsi
@@ -41,6 +41,9 @@
 
 &qupv3_se1_i2c {
 	status = "ok";
+	qcom,clk-freq-out = <100000>;
+	#address-cells = <1>;
+	#size-cells = <0>;
 	lt9611: lt,lt9611@2b {
 		compatible = "lt,lt9611uxc";
 		reg = <0x2b>;
diff --git a/qcom/kona-pinctrl.dtsi b/qcom/kona-pinctrl.dtsi
index f1a7ade..51c240c 100644
--- a/qcom/kona-pinctrl.dtsi
+++ b/qcom/kona-pinctrl.dtsi
@@ -213,6 +213,89 @@
 			};
 		};
 
+		qupv3_se13_4uart_pins: qupv3_se13_4uart_pins {
+			qupv3_se13_default_cts:
+				qupv3_se13_default_cts {
+				mux {
+				pins = "gpio36";
+				function = "gpio";
+				};
+
+				config {
+				pins = "gpio36";
+				drive-strength = <2>;
+				bias-disable;
+				};
+			};
+
+			qupv3_se13_default_rtsrx:
+				qupv3_se13_default_rtsrx {
+				mux {
+				pins = "gpio37", "gpio39";
+				function = "gpio";
+				};
+
+				config {
+				pins = "gpio37", "gpio39";
+				drive-strength = <2>;
+				bias-pull-down;
+				};
+			};
+
+			qupv3_se13_default_tx:
+				qupv3_se13_default_tx {
+				mux {
+				pins = "gpio38";
+				function = "gpio";
+				};
+
+				config {
+				pins = "gpio38";
+				drive-strength = <2>;
+				bias-pull-up;
+				};
+			};
+
+			qupv3_se13_ctsrx: qupv3_se13_ctsrx {
+				mux {
+				pins = "gpio36", "gpio39";
+				function = "qup13";
+				};
+
+				config {
+				pins = "gpio36", "gpio39";
+				drive-strength = <2>;
+				bias-disable;
+				};
+			};
+
+			qupv3_se13_rts: qupv3_se13_rts {
+				mux {
+				pins = "gpio37";
+				function = "qup13";
+				};
+
+				config {
+				pins = "gpio37";
+				drive-strength = <2>;
+				bias-pull-down;
+				};
+			};
+
+			qupv3_se13_tx: qupv3_se13_tx {
+				mux {
+					pins = "gpio38";
+					function = "qup13";
+				};
+
+				config {
+				pins = "gpio38";
+				drive-strength = <2>;
+				bias-pull-up;
+				};
+			};
+		};
+
 		qupv3_se12_2uart_pins: qupv3_se12_2uart_pins {
 			qupv3_se12_2uart_active: qupv3_se12_2uart_active {
 				mux {
@@ -241,6 +324,7 @@
 			};
 		};
 
+
 		qupv3_se17_4uart_pins: qupv3_se17_4uart_pins {
 			qupv3_se17_ctsrx: qupv3_se17_ctsrx {
 				mux {
@@ -2153,7 +2237,7 @@
 			config {
 				pins = "gpio94";
 				bias-disable; /* No PULL */
-				drive-strength = <2>; /* 2 MA */
+				drive-strength = <8>; /* 8 MA */
 			};
 		};
 
@@ -2167,7 +2251,7 @@
 			config {
 				pins = "gpio94";
 				bias-pull-down; /* PULL DOWN */
-				drive-strength = <2>; /* 2 MA */
+				drive-strength = <8>; /* 8 MA */
 			};
 		};
 
@@ -2349,7 +2433,7 @@
 			config {
 				pins = "gpio93";
 				bias-disable; /* No PULL */
-				drive-strength = <2>; /* 2 MA */
+				drive-strength = <8>; /* 8 MA */
 			};
 		};
 
@@ -2363,7 +2447,7 @@
 			config {
 				pins = "gpio93";
 				bias-pull-down; /* PULL DOWN */
-				drive-strength = <2>; /* 2 MA */
+				drive-strength = <8>; /* 8 MA */
 				output-low;
 			};
 		};
@@ -2426,6 +2510,64 @@
 			};
 		};
 
+		cam_sensor_active_rst3: cam_sensor_active_rst3 {
+			/* RESET 2 */
+			mux {
+				pins = "gpio144";
+				function = "gpio";
+			};
+
+			config {
+				pins = "gpio144";
+				bias-disable; /* No PULL */
+				drive-strength = <2>; /* 2 MA */
+			};
+		};
+
+		cam_sensor_suspend_rst3: cam_sensor_suspend_rst3 {
+			/* RESET 2 */
+			mux {
+				pins = "gpio144";
+				function = "gpio";
+			};
+
+			config {
+				pins = "gpio144";
+				bias-pull-down; /* PULL DOWN */
+				drive-strength = <2>; /* 2 MA */
+				output-low;
+			};
+		};
+
+		cam_sensor_active_rst4: cam_sensor_active_rst4 {
+			/* RESET 2 */
+			mux {
+				pins = "gpio25";
+				function = "gpio";
+			};
+
+			config {
+				pins = "gpio25";
+				bias-disable; /* No PULL */
+				drive-strength = <2>; /* 2 MA */
+			};
+		};
+
+		cam_sensor_suspend_rst4: cam_sensor_suspend_rst4 {
+			/* RESET 2 */
+			mux {
+				pins = "gpio25";
+				function = "gpio";
+			};
+
+			config {
+				pins = "gpio25";
+				bias-pull-down; /* PULL DOWN */
+				drive-strength = <2>; /* 2 MA */
+				output-low;
+			};
+		};
+
 		cam_sensor_active_3: cam_sensor_active_3 {
 			/* RESET 3 */
 			mux {
diff --git a/qcom/kona-qupv3.dtsi b/qcom/kona-qupv3.dtsi
index 8c1f34e..2b30fff 100644
--- a/qcom/kona-qupv3.dtsi
+++ b/qcom/kona-qupv3.dtsi
@@ -485,6 +485,27 @@
 		qcom,change-sampling-rate;
 		status = "disabled";
 	};
+	qupv3_se13_4uart: qcom,qup_uart@a94000 {
+		compatible = "qcom,msm-geni-serial-hs";
+		reg = <0xa94000 0x4000>;
+		reg-names = "se_phys";
+		clock-names = "se-clk", "m-ahb", "s-ahb";
+		clocks = <&clock_gcc GCC_QUPV3_WRAP1_S5_CLK>,
+			<&clock_gcc GCC_QUPV3_WRAP_1_M_AHB_CLK>,
+			<&clock_gcc GCC_QUPV3_WRAP_1_S_AHB_CLK>;
+		pinctrl-names = "default", "active", "sleep";
+		pinctrl-0 = <&qupv3_se13_default_cts>,
+			<&qupv3_se13_default_rtsrx>, <&qupv3_se13_default_tx>;
+		pinctrl-1 = <&qupv3_se13_ctsrx>, <&qupv3_se13_rts>,
+							<&qupv3_se13_tx>;
+		pinctrl-2 = <&qupv3_se13_ctsrx>, <&qupv3_se13_rts>,
+							<&qupv3_se13_tx>;
+		interrupts-extended = <&intc GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>,
+					<&tlmm 39 0>;
+		status = "disabled";
+		qcom,wakeup-byte = <0xFD>;
+		qcom,wrapper-core = <&qupv3_1>;
+	};
 
 		/* I2C */
 	qupv3_se8_i2c: i2c@a80000 {
diff --git a/qcom/kona-v2.1-iot-rb5.dtsi b/qcom/kona-v2.1-iot-rb5.dtsi
index c34d57b..7d32513 100644
--- a/qcom/kona-v2.1-iot-rb5.dtsi
+++ b/qcom/kona-v2.1-iot-rb5.dtsi
@@ -14,6 +14,16 @@
 	status = "ok";
 };
 
+&qupv3_se13_4uart {
+	status = "ok";
+	qrc:qrc@100 {
+		compatible = "qcom,qrc-uart";
+		status = "ok";
+		qcom,qrc-reset-gpio = <&tlmm 114 0>;
+		qcom,qrc-boot-gpio = <&tlmm 109 0>;
+	};
+};
+
 &pm8150l_gpios {
 	lt9611_rst_pin_out {
 		lt9611_rst_pin_out_default: lt9611_rst_pin_out_default {
diff --git a/qcom/kona-xrfusion-ult.dtsi b/qcom/kona-xrfusion-ult.dtsi
index dc9c987..95437f5 100644
--- a/qcom/kona-xrfusion-ult.dtsi
+++ b/qcom/kona-xrfusion-ult.dtsi
@@ -1005,7 +1005,6 @@
 	pinctrl-0 = <&sdc2_clk_on  &sdc2_cmd_on &sdc2_data_on &storage_cd>;
 	pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &storage_cd>;
 
-	cd-gpios = <&tlmm 77 GPIO_ACTIVE_HIGH>; /* Morpheus has to be HIGH */
 
 	status = "ok";
 };
diff --git a/qcom/kona.dtsi b/qcom/kona.dtsi
index c3efd87..4188793 100644
--- a/qcom/kona.dtsi
+++ b/qcom/kona.dtsi
@@ -4975,20 +4975,25 @@
 
 	qfprom: qfprom@780000 {
 		compatible = "qcom,qfprom";
-		reg = <0x00784000 0x3000>;
+		reg = <0x00780000 0x5000>;
 		#address-cells = <1>;
 		#size-cells = <1>;
 		read-only;
 		ranges;
 
-		gpu_lm_efuse: gpu_lm_efuse@5c8 {
-			reg = <0x5c8 0x4>;
+		gpu_lm_efuse: gpu_lm_efuse@45c8 {
+			reg = <0x45c8 0x4>;
 		};
 
-		gpu_speed_bin: gpu_speed_bin@19b {
-			reg = <0x19b 0x1>;
+		gpu_speed_bin: gpu_speed_bin@419b {
+			reg = <0x419b 0x1>;
 			bits = <5 3>;
 		};
+
+		thermal_speed_bin: thermal-speed-bin@1a2 {
+			reg = <0x1a2 0x1>;
+			bits = <7 1>;
+		};
 	};
 };
 
diff --git a/qcom/lagoon-audio-overlay.dtsi b/qcom/lagoon-audio-overlay.dtsi
index ab9c30c..030f274 100644
--- a/qcom/lagoon-audio-overlay.dtsi
+++ b/qcom/lagoon-audio-overlay.dtsi
@@ -37,6 +37,7 @@
 					"lpass_audio_hw_vote";
 			clocks = <&lpass_core_hw_vote 0>,
 					<&lpass_audio_hw_vote 0>;
+			qcom,swr-master-version = <0x01050001>;
 			qcom,swr_master_id = <3>;
 			qcom,mipi-sdw-block-packing-mode = <1>;
 			swrm-io-base = <0x3230000 0x0>;
@@ -86,6 +87,7 @@
 					"lpass_audio_hw_vote";
 			clocks = <&lpass_core_hw_vote 0>,
 					<&lpass_audio_hw_vote 0>;
+			qcom,swr-master-version = <0x01050001>;
 			qcom,swr_master_id = <2>;
 			qcom,mipi-sdw-block-packing-mode = <1>;
 			swrm-io-base = <0x3210000 0x0>;
@@ -129,6 +131,7 @@
 					"lpass_audio_hw_vote";
 			clocks = <&lpass_core_hw_vote 0>,
 					<&lpass_audio_hw_vote 0>;
+			qcom,swr-master-version = <0x01050001>;
 			qcom,swr_master_id = <1>;
 			qcom,mipi-sdw-block-packing-mode = <0>;
 			swrm-io-base = <0x3250000 0x0>;
diff --git a/qcom/lagoon-gpu.dtsi b/qcom/lagoon-gpu.dtsi
index 5349c38..1664a4d 100644
--- a/qcom/lagoon-gpu.dtsi
+++ b/qcom/lagoon-gpu.dtsi
@@ -221,7 +221,7 @@
 					qcom,gpu-freq = <650000000>;
 					qcom,bus-freq = <10>;
 					qcom,bus-min = <8>;
-					qcom,bus-max = <12>;
+					qcom,bus-max = <10>;
 				};
 
 				/* NOM */
@@ -230,7 +230,7 @@
 					qcom,gpu-freq = <565000000>;
 					qcom,bus-freq = <9>;
 					qcom,bus-min = <8>;
-					qcom,bus-max = <11>;
+					qcom,bus-max = <10>;
 				};
 
 				/* SVS_L1 */
@@ -301,7 +301,7 @@
 					qcom,gpu-freq = <650000000>;
 					qcom,bus-freq = <10>;
 					qcom,bus-min = <8>;
-					qcom,bus-max = <12>;
+					qcom,bus-max = <10>;
 				};
 
 				/* NOM */
@@ -310,7 +310,7 @@
 					qcom,gpu-freq = <565000000>;
 					qcom,bus-freq = <9>;
 					qcom,bus-min = <8>;
-					qcom,bus-max = <11>;
+					qcom,bus-max = <10>;
 				};
 
 				/* SVS_L1 */
@@ -372,7 +372,7 @@
 					qcom,gpu-freq = <650000000>;
 					qcom,bus-freq = <10>;
 					qcom,bus-min = <8>;
-					qcom,bus-max = <12>;
+					qcom,bus-max = <10>;
 				};
 
 				/* NOM */
@@ -381,7 +381,7 @@
 					qcom,gpu-freq = <565000000>;
 					qcom,bus-freq = <9>;
 					qcom,bus-min = <8>;
-					qcom,bus-max = <11>;
+					qcom,bus-max = <10>;
 				};
 
 				/* SVS_L1 */
diff --git a/qcom/lagoon-sde.dtsi b/qcom/lagoon-sde.dtsi
index 75ded59..19fc311 100644
--- a/qcom/lagoon-sde.dtsi
+++ b/qcom/lagoon-sde.dtsi
@@ -88,11 +88,11 @@
 		qcom,sde-mixer-blend-op-off = <0x20 0x38 0x50 0x68 0x80 0x98
 						0xb0 0xc8 0xe0 0xf8 0x110>;
 
-		qcom,sde-max-per-pipe-bw-kbps = <2700000 2700000
-						 2700000 2700000>;
+		qcom,sde-max-per-pipe-bw-kbps = <3200000 3200000
+						 3200000 3200000>;
 
-		qcom,sde-max-per-pipe-bw-high-kbps = <2700000 2700000
-						      2700000 2700000>;
+		qcom,sde-max-per-pipe-bw-high-kbps = <3200000 3200000
+						      3200000 3200000>;
 
 		/* offsets are relative to "mdp_phys + qcom,sde-off */
 		qcom,sde-sspp-clk-ctrl = <0x2ac 0>,
@@ -117,8 +117,8 @@
 		qcom,sde-pipe-order-version = <0x1>;
 		qcom,sde-has-dim-layer;
 		qcom,sde-has-idle-pc;
-		qcom,sde-max-bw-low-kbps = <4200000>;
-		qcom,sde-max-bw-high-kbps = <5100000>;
+		qcom,sde-max-bw-low-kbps = <4400000>;
+		qcom,sde-max-bw-high-kbps = <5900000>;
 		qcom,sde-min-core-ib-kbps = <2500000>;
 		qcom,sde-min-llcc-ib-kbps = <0>;
 		qcom,sde-min-dram-ib-kbps = <1600000>;
@@ -276,18 +276,18 @@
 							"camera_concurrency",
 							"cwb_concurrency";
 				qcom,sde-limit-ids = <0x1 0x2 0x4 0x8 0x10>;
-				qcom,sde-limit-values = <0x1 2700000>,
-							<0x11 2700000>,
-							<0x9 2700000>,
-							<0x19 2700000>,
-							<0x2 2700000>,
-							<0x12 2700000>,
-							<0xa 2700000>,
-							<0x1a 2700000>,
-							<0x4 5100000>,
-							<0x14 5100000>,
+				qcom,sde-limit-values = <0x1 3200000>,
+							<0x11 3200000>,
+							<0x9 3200000>,
+							<0x19 3200000>,
+							<0x2 3200000>,
+							<0x12 3200000>,
+							<0xa 3200000>,
+							<0x1a 3200000>,
+							<0x4 5900000>,
+							<0x14 5900000>,
 							<0xc 4400000>,
-							<0x1c 4200000>;
+							<0x1c 4400000>;
 			};
 		};
 	};
diff --git a/qcom/lagoon-thermal.dtsi b/qcom/lagoon-thermal.dtsi
index e829c98..cc536ca 100644
--- a/qcom/lagoon-thermal.dtsi
+++ b/qcom/lagoon-thermal.dtsi
@@ -1149,6 +1149,182 @@
 		};
 	};
 
+	mdm-core-0-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens1 6>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		trips {
+			modem_core_0_trip0: modem-core-0-trip0 {
+				temperature = <95000>;
+				hysteresis = <15000>;
+				type = "passive";
+			};
+
+			modem_core_0_trip1: modem-core-0-trip1 {
+				temperature = <105000>;
+				hysteresis = <15000>;
+				type = "passive";
+			};
+
+			modem_core_0_trip2: modem-core-0-trip2 {
+				temperature = <115000>;
+				hysteresis = <15000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			modem_tj1_cdev {
+				trip = <&modem_core_0_trip0>;
+				cooling-device = <&modem_tj 1 1>;
+			};
+
+			modem_tj2_cdev {
+				trip = <&modem_core_0_trip1>;
+				cooling-device = <&modem_tj 2 2>;
+			};
+
+			modem_tj3_cdev {
+				trip = <&modem_core_0_trip2>;
+				cooling-device = <&modem_tj 3 3>;
+			};
+		};
+	};
+
+	mdm-core-1-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens1 7>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		trips {
+			modem_core_1_trip0: modem-core-1-trip0 {
+				temperature = <95000>;
+				hysteresis = <15000>;
+				type = "passive";
+			};
+
+			modem_core_1_trip1: modem-core-1-trip1 {
+				temperature = <105000>;
+				hysteresis = <15000>;
+				type = "passive";
+			};
+
+			modem_core_1_trip2: modem-core-1-trip2 {
+				temperature = <115000>;
+				hysteresis = <15000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			modem_tj1_cdev {
+				trip = <&modem_core_1_trip0>;
+				cooling-device = <&modem_tj 1 1>;
+			};
+
+			modem_tj2_cdev {
+				trip = <&modem_core_1_trip1>;
+				cooling-device = <&modem_tj 2 2>;
+			};
+
+			modem_tj3_cdev {
+				trip = <&modem_core_1_trip2>;
+				cooling-device = <&modem_tj 3 3>;
+			};
+		};
+	};
+
+	mdm-vec-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens1 8>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		trips {
+			modem_vec_trip0: modem-vec-trip0 {
+				temperature = <95000>;
+				hysteresis = <15000>;
+				type = "passive";
+			};
+
+			modem_vec_trip1: modem-vec-trip1 {
+				temperature = <105000>;
+				hysteresis = <15000>;
+				type = "passive";
+			};
+
+			modem_vec_trip2: modem-vec-trip2 {
+				temperature = <115000>;
+				hysteresis = <15000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			modem_tj1_cdev {
+				trip = <&modem_vec_trip0>;
+				cooling-device = <&modem_tj 1 1>;
+			};
+
+			modem_tj2_cdev {
+				trip = <&modem_vec_trip1>;
+				cooling-device = <&modem_tj 2 2>;
+			};
+
+			modem_tj3_cdev {
+				trip = <&modem_vec_trip2>;
+				cooling-device = <&modem_tj 3 3>;
+			};
+		};
+	};
+
+	mdm-scl-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens1 9>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		trips {
+			modem_scl_trip0: modem-scl-trip0 {
+				temperature = <95000>;
+				hysteresis = <15000>;
+				type = "passive";
+			};
+
+			modem_scl_trip1: modem-scl-trip1 {
+				temperature = <105000>;
+				hysteresis = <15000>;
+				type = "passive";
+			};
+
+			modem_scl_trip2: modem-scl-trip2 {
+				temperature = <115000>;
+				hysteresis = <15000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			modem_tj1_cdev {
+				trip = <&modem_scl_trip0>;
+				cooling-device = <&modem_tj 1 1>;
+			};
+
+			modem_tj2_cdev {
+				trip = <&modem_scl_trip1>;
+				cooling-device = <&modem_tj 2 2>;
+			};
+
+			modem_tj3_cdev {
+				trip = <&modem_scl_trip2>;
+				cooling-device = <&modem_tj 3 3>;
+			};
+		};
+	};
+
 	min-temp-0-lowf {
 		polling-delay-passive = <0>;
 		polling-delay = <0>;
diff --git a/qcom/lito-audio-overlay.dtsi b/qcom/lito-audio-overlay.dtsi
index 5e77729..d40caaf 100644
--- a/qcom/lito-audio-overlay.dtsi
+++ b/qcom/lito-audio-overlay.dtsi
@@ -37,6 +37,7 @@
 					"lpass_audio_hw_vote";
 			clocks = <&lpass_core_hw_vote 0>,
 					<&lpass_audio_hw_vote 0>;
+			qcom,swr-master-version = <0x01050001>;
 			qcom,swr_master_id = <3>;
 			qcom,mipi-sdw-block-packing-mode = <1>;
 			swrm-io-base = <0x3230000 0x0>;
@@ -81,6 +82,7 @@
 					"lpass_audio_hw_vote";
 			clocks = <&lpass_core_hw_vote 0>,
 					<&lpass_audio_hw_vote 0>;
+			qcom,swr-master-version = <0x01050001>;
 			qcom,swr_master_id = <2>;
 			qcom,mipi-sdw-block-packing-mode = <1>;
 			swrm-io-base = <0x3210000 0x0>;
@@ -119,6 +121,7 @@
 					"lpass_audio_hw_vote";
 			clocks = <&lpass_core_hw_vote 0>,
 					<&lpass_audio_hw_vote 0>;
+			qcom,swr-master-version = <0x01050001>;
 			qcom,swr_master_id = <1>;
 			qcom,mipi-sdw-block-packing-mode = <0>;
 			swrm-io-base = <0x3250000 0x0>;
diff --git a/qcom/msm8917-camera.dtsi b/qcom/msm8917-camera.dtsi
index b72cd43..4bd8513 100644
--- a/qcom/msm8917-camera.dtsi
+++ b/qcom/msm8917-camera.dtsi
@@ -308,12 +308,6 @@
 			qcom,scratch-buf-support;
 		};
 
-		msm_cam_smmu_cb2: msm_cam_smmu_cb2 {
-			compatible = "qcom,msm-cam-smmu-cb";
-			label = "vfe_secure";
-			qcom,secure-context;
-		};
-
 		msm_cam_smmu_cb3: msm_cam_smmu_cb3 {
 			compatible = "qcom,msm-cam-smmu-cb";
 			iommus = <&apps_iommu 0x1c00 0x00>;
diff --git a/qcom/msm8917-gpu.dtsi b/qcom/msm8917-gpu.dtsi
index 26d3c8b..a3ca272 100644
--- a/qcom/msm8917-gpu.dtsi
+++ b/qcom/msm8917-gpu.dtsi
@@ -4,26 +4,34 @@
 		compatible = "qcom,kgsl-busmon";
 	};
 
+	gpu_bw_tbl: gpu-bw-tbl {
+		compatible = "operating-points-v2";
+		opp-0    { opp-hz = /bits/ 64 < 0 >;     }; /* OFF */
+
+		opp-201  { opp-hz = /bits/ 64 < 769 >;   }; /* 1.  201 MHz */
+
+		opp-422  { opp-hz = /bits/ 64 < 1611 >;  }; /* 2.  422 MHz */
+
+		opp-595  { opp-hz = /bits/ 64 < 2270 >;  }; /* 3.  595 MHz */
+
+		opp-768  { opp-hz = /bits/ 64 < 2929 >;  }; /* 4.  768 MHz */
+
+		opp-1113 { opp-hz = /bits/ 64 < 4248 >;  }; /* 5. 1113 MHz */
+
+		opp-1190 { opp-hz = /bits/ 64 < 4541 >;  }; /* 6. 1190 MHz */
+
+		opp-1344 { opp-hz = /bits/ 64 < 5126 >;  }; /* 7. 1344 MHz */
+
+		opp-1478 { opp-hz = /bits/ 64 < 5639 >;  }; /* 8. 1478 MHz */
+	};
+
 	/* Bus governor */
 	gpubw: qcom,gpubw {
 		compatible = "qcom,devbw";
 		governor = "bw_vbif";
 		qcom,src-dst-ports = <26 512>;
-		/*
-		 * Need to configure 2x Clock as BIMC
-		 * Internally Divides by 2 for Gen1 DDR PHY.
-		 */
+		operating-points-v2 = <&gpu_bw_tbl>;
 		qcom,active-only;
-		qcom,bw-tbl =
-			< 0 >,    /* Off */
-			< 769 >,  /* 1. DDR:100.80 MHz BIMC: 201.60 MHz */
-			< 1611 >, /* 2. DDR:211.20 MHz BIMC: 422.40 MHz */
-			< 2270 >, /* 3. DDR:297.60 MHz BIMC: 595.20 MHz */
-			< 2929 >, /* 4. DDR:384.00 MHz BIMC: 768.00 MHz */
-			< 4248 >, /* 5. DDR:556.80 MHz BIMC: 1113.60 MHz */
-			< 4541 >, /* 6. DDR:595.20 MHz BIMC: 1190.40 MHz */
-			< 5126 >, /* 7. DDR:672.00 MHz BIMC: 1344.00 MHz */
-			< 5639 >; /* 8. DDR:739.20 MHz BIMC: 1478.40 MHz */
 	};
 
 	msm_gpu: qcom,kgsl-3d0@1c00000 {
@@ -158,7 +166,6 @@
 		 * The gpu can only program a single context bank
 		 * at this fixed offset.
 		 */
-		qcom,protect = <0xa000 0x1000>;
 		clocks = <&gcc GCC_SMMU_CFG_CLK>,
 			<&gcc GCC_GFX_TCU_CLK>,
 			<&gcc GCC_GTCU_AHB_CLK>,
@@ -169,6 +176,7 @@
 		gfx3d_user: gfx3d_user {
 			compatible = "qcom,smmu-kgsl-cb";
 			iommus = <&gfx_iommu 0>;
+			qcom,iommu-dma = "disabled";
 			qcom,gpu-offset = <0xa000>;
 		};
 	};
diff --git a/qcom/msm8917-mdss.dtsi b/qcom/msm8917-mdss.dtsi
index 235c653..0f2e80e 100644
--- a/qcom/msm8917-mdss.dtsi
+++ b/qcom/msm8917-mdss.dtsi
@@ -1,5 +1,4 @@
 #include "msm8937-mdss.dtsi"
-#include <dt-bindings/clock/mdss-28nm-pll-clk.h>
 &mdss_dsi {
 	vdda-supply = <&pm8937_l2>;
 	vddio-supply = <&pm8937_l6>;
diff --git a/qcom/msm8917-thermal.dtsi b/qcom/msm8917-thermal.dtsi
index 6fe1977..7135a3d 100644
--- a/qcom/msm8917-thermal.dtsi
+++ b/qcom/msm8917-thermal.dtsi
@@ -1,5 +1,30 @@
 #include <dt-bindings/thermal/thermal.h>
 
+&apsscc {
+	qcom,cpu-isolation {
+		compatible = "qcom,cpu-isolate";
+		cpu0_isolate: cpu0-isolate {
+			qcom,cpu = <&CPU0>;
+			#cooling-cells = <2>;
+		};
+
+		cpu1_isolate: cpu1-isolate {
+			qcom,cpu = <&CPU1>;
+			#cooling-cells = <2>;
+		};
+
+		cpu2_isolate: cpu2-isolate {
+			qcom,cpu = <&CPU2>;
+			#cooling-cells = <2>;
+		};
+
+		cpu3_isolate: cpu3-isolate {
+			qcom,cpu = <&CPU3>;
+			#cooling-cells = <2>;
+		};
+	};
+};
+
 &soc {
 	qmi-tmd-devices {
 		compatible = "qcom,qmi-cooling-devices";
@@ -188,28 +213,7 @@
 				trip = <&cpu_trip>;
 				cooling-device =
 					<&CPU0 THERMAL_NO_LIMIT
-						(THERMAL_MAX_LIMIT-1)>;
-			};
-
-			cpu1_cdev {
-				trip = <&cpu_trip>;
-				cooling-device =
-					<&CPU1 THERMAL_NO_LIMIT
-						(THERMAL_MAX_LIMIT-1)>;
-			};
-
-			cpu2_cdev {
-				trip = <&cpu_trip>;
-				cooling-device =
-					<&CPU2 THERMAL_NO_LIMIT
-						(THERMAL_MAX_LIMIT-1)>;
-			};
-
-			cpu3_cdev {
-				trip = <&cpu_trip>;
-				cooling-device =
-					<&CPU3 THERMAL_NO_LIMIT
-						(THERMAL_MAX_LIMIT-1)>;
+						THERMAL_NO_LIMIT>;
 			};
 		};
 	};
@@ -254,8 +258,7 @@
 			cpu0_cdev {
 				trip = <&apc1_cpu0_trip>;
 				cooling-device =
-					<&CPU0 THERMAL_MAX_LIMIT
-						THERMAL_MAX_LIMIT>;
+					<&cpu0_isolate 1 1>;
 			};
 		};
 	};
@@ -277,8 +280,7 @@
 			cpu1_cdev {
 				trip = <&apc1_cpu1_trip>;
 				cooling-device =
-					<&CPU1 THERMAL_MAX_LIMIT
-						THERMAL_MAX_LIMIT>;
+					<&cpu1_isolate 1 1>;
 			};
 		};
 	};
@@ -300,8 +302,7 @@
 			cpu2_cdev {
 				trip = <&apc1_cpu2_trip>;
 				cooling-device =
-					<&CPU2 THERMAL_MAX_LIMIT
-						THERMAL_MAX_LIMIT>;
+					<&cpu2_isolate 1 1>;
 			};
 		};
 	};
@@ -323,8 +324,7 @@
 			cpu3_cdev {
 				trip = <&apc1_cpu3_trip>;
 				cooling-device =
-					<&CPU3 THERMAL_MAX_LIMIT
-						THERMAL_MAX_LIMIT>;
+					<&cpu3_isolate 1 1>;
 			};
 		};
 	};
diff --git a/qcom/msm8917-vidc.dtsi b/qcom/msm8917-vidc.dtsi
index 362c136..7b1ac1a 100644
--- a/qcom/msm8917-vidc.dtsi
+++ b/qcom/msm8917-vidc.dtsi
@@ -60,6 +60,9 @@
 				<&apps_iommu 0x807 0x00>,
 				<&apps_iommu 0x808 0x27>,
 				<&apps_iommu 0x811 0x20>;
+			qcom,iommu-dma-addr-pool = <0x5dc00000 0x7f000000
+				0xdcc00000 0x1000000>;
+			qcom,iommu-faults = "non-fatal";
 			buffer-types = <0xfff>;
 			virtual-addr-pool = <0x5dc00000 0x7f000000
 				0xdcc00000 0x1000000>;
@@ -71,18 +74,24 @@
 			iommus = <&apps_iommu 0x900 0x00>,
 				<&apps_iommu 0x90a 0x04>,
 				<&apps_iommu 0x909 0x22>;
+			qcom,iommu-dma-addr-pool = <0x4b000000 0x12c00000>;
+			qcom,iommu-faults = "non-fatal";
 			buffer-types = <0x241>;
 			virtual-addr-pool = <0x4b000000 0x12c00000>;
 			qcom,secure-context-bank;
+			qcom,iommu-vmid = <0x9>; /*VMID_CP_BITSTREAM*/
 		};
 
 		secure_pixel_cb {
 			compatible = "qcom,msm-vidc,context-bank";
 			label = "venus_sec_pixel";
 			iommus = <&apps_iommu 0x90c 0x20>;
+			qcom,iommu-dma-addr-pool = <0x25800000 0x25800000>;
+			qcom,iommu-faults = "non-fatal";
 			buffer-types = <0x106>;
 			virtual-addr-pool = <0x25800000 0x25800000>;
 			qcom,secure-context-bank;
+			qcom,iommu-vmid = <0xA>; /*VMID_CP_PIXEL*/
 		};
 
 		secure_non_pixel_cb {
@@ -92,9 +101,12 @@
 				<&apps_iommu 0x907 0x08>,
 				<&apps_iommu 0x908 0x20>,
 				<&apps_iommu 0x90d 0x20>;
+			qcom,iommu-dma-addr-pool = <0x1000000 0x24800000>;
+			qcom,iommu-faults = "non-fatal";
 			buffer-types = <0x480>;
 			virtual-addr-pool = <0x1000000 0x24800000>;
 			qcom,secure-context-bank;
+			qcom,iommu-vmid = <0xB>; /*VMID_CP_NON_PIXEL*/
 		};
 
 		venus_bus_ddr {
@@ -102,7 +114,7 @@
 			label = "venus-ddr";
 			qcom,bus-master = <MSM_BUS_MASTER_VIDEO_P0>;
 			qcom,bus-slave = <MSM_BUS_SLAVE_EBI_CH0>;
-			qcom,bus-governor = "venus-ddr-gov";
+			qcom,bus-mode = "venus-ddr";
 			qcom,bus-range-kbps = <1000 917000>;
 		};
 
@@ -111,7 +123,7 @@
 			label = "venus-arm9-ddr";
 			qcom,bus-master = <MSM_BUS_MASTER_VIDEO_P0>;
 			qcom,bus-slave = <MSM_BUS_SLAVE_EBI_CH0>;
-			qcom,bus-governor = "performance";
+			qcom,bus-mode = "performance";
 			qcom,bus-range-kbps = <1 1>;
 		};
 	};
diff --git a/qcom/msm8917.dtsi b/qcom/msm8917.dtsi
index 5b573ce..8628a7b 100644
--- a/qcom/msm8917.dtsi
+++ b/qcom/msm8917.dtsi
@@ -1,6 +1,7 @@
 #include "skeleton64.dtsi"
 #include <dt-bindings/clock/qcom,gcc-sdm429w.h>
-#include <dt-bindings/clock/mdss-28nm-pll-clk.h>
+#include <dt-bindings/clock/mdss-28nm-pll-clk-legacy.h>
+#include <dt-bindings/clock/qcom,cpu-sdm.h>
 #include <dt-bindings/clock/qcom,rpmcc.h>
 #include <dt-bindings/regulator/qcom,rpm-smd-regulator.h>
 #include <dt-bindings/spmi/spmi.h>
@@ -20,18 +21,6 @@
 	};
 
 	aliases {
-		/* smdtty devices */
-		smd1 = &smdtty_apps_fm;
-		smd2 = &smdtty_apps_riva_bt_acl;
-		smd3 = &smdtty_apps_riva_bt_cmd;
-		smd4 = &smdtty_mbalbridge;
-		smd5 = &smdtty_apps_riva_ant_cmd;
-		smd6 = &smdtty_apps_riva_ant_data;
-		smd7 = &smdtty_data1;
-		smd8 = &smdtty_data4;
-		smd11 = &smdtty_data11;
-		smd21 = &smdtty_data21;
-		smd36 = &smdtty_loopback;
 		sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
 		sdhc2 = &sdhc_2; /* SDC2 for SD card */
 		spi3 = &spi_3;
@@ -444,7 +433,7 @@
 
 	cpu-pmu {
 		compatible = "arm,armv8-pmuv3";
-		interrupts = <1 7 0xff00>;
+		interrupts = <1 7 IRQ_TYPE_LEVEL_HIGH>;
 	};
 
 	slim_msm: slim@c140000 {
@@ -561,7 +550,7 @@
 	};
 
 	rpmcc: qcom,rpmcc {
-		compatible = "qcom,rpmcc-msm8917";
+		compatible = "qcom,rpmcc-qm215";
 		#clock-cells = <1>;
 	};
 
@@ -578,19 +567,25 @@
 		#reset-cells = <1>;
 	};
 
+	cpu_debug: syscon@0b01101c {
+		compatible = "syscon";
+		reg = <0x0b01101c 0x4>;
+	};
+
 	debugcc: qcom,cc-debug {
 		compatible = "qcom,msm8917-debugcc";
 		reg = <0x1874000 0x4>,
 		      <0xb01101c 0x8>;
 		reg-names = "cc_base", "meas";
 		qcom,gcc = <&gcc>;
+		qcom,cpu = <&cpu_debug>;
 		clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>;
 		clock-names = "xo_clk_src";
 		#clock-cells = <1>;
 	};
 
 	gcc_mdss: qcom,gcc-mdss@1800000 {
-		compatible = "qcom,gcc-mdss-8917";
+		compatible = "qcom,gcc-mdss-qm215";
 		reg = <0x1800000 0x80000>;
 		clocks = <&mdss_dsi0_pll PCLK_SRC_0_CLK>,
 			<&mdss_dsi0_pll BYTECLK_SRC_0_CLK>;
@@ -598,13 +593,16 @@
 		#clock-cells = <1>;
 	};
 
-	clock_cpu: qcom,cpu-clock-8939@b111050 {
-		compatible = "qcom,cpu-clock-8917";
-		reg = <0xb011050 0x8>,
+	apsscc: qcom,clock-cpu@b011050 {
+		compatible = "qcom,cpu-clock-qm215";
+		reg =   <0xb011050 0x8>,
+			<0xb016000 0x34>,
 			<0x00a412c 0x8>;
-		reg-names = "apcs-c1-rcg-base", "efuse";
-		qcom,num-cluster;
-		vdd-c1-supply = <&apc_vreg_corner>;
+		reg-names = "apcs-c1-rcg-base",
+			"apcs_pll", "efuse";
+		cpu-vdd-supply = <&apc_vreg_corner>;
+		vdd_dig_ao-supply = <&pm8916_s1_level_ao>;
+		vdd_hf_pll-supply = <&pm8916_l7_ao>;
 		clocks = <&rpmcc RPM_SMD_XO_A_CLK_SRC>,
 			<&gcc GPLL0_AO_OUT_MAIN>;
 		clock-names = "xo_ao", "gpll0_ao" ;
@@ -641,14 +639,10 @@
 
 	msm_cpufreq: qcom,msm-cpufreq {
 		compatible = "qcom,msm-cpufreq";
-		/* TODO
-		 * clock-names = "cpu0_clk", "cpu1_clk", "cpu2_clk",
-		 *		"cpu3_clk";
-		 * clocks = <&clock_cpu clk_a53_bc_clk>,
-		 *	 <&clock_cpu clk_a53_bc_clk>,
-		 *	 <&clock_cpu clk_a53_bc_clk>,
-		 *	 <&clock_cpu clk_a53_bc_clk>;
-		 */
+		clock-names = "cpu0_clk";
+		clocks = <&apsscc APCS_MUX_C1_CLK>;
+
+		qcom,governor-per-policy;
 
 		qcom,cpufreq-table =
 			 <  960000 >,
@@ -863,7 +857,7 @@
 
 	cpu_cpu_ddr_bw: qcom,cpu-cpu-ddr-bw {
 		compatible = "qcom,devbw";
-		governor = "cpufreq";
+		governor = "performance";
 		qcom,src-dst-ports =
 			<MSM_BUS_MASTER_AMPSS_M0 MSM_BUS_SLAVE_EBI_CH0>;
 		qcom,active-only;
@@ -881,7 +875,7 @@
 
 	cpu0_cpu_ddr_latfloor: qcom,cpu0-cpu-ddr-latfloor {
 		compatible = "qcom,devbw";
-		governor = "cpufreq";
+		governor = "performance";
 		qcom,src-dst-ports =
 			<MSM_BUS_MASTER_AMPSS_M0 MSM_BUS_SLAVE_EBI_CH0>;
 		qcom,active-only;
@@ -950,7 +944,7 @@
 			<0x200a000 0x2100>;
 		reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
 		interrupt-names = "periph_irq";
-		interrupts = <GIC_SPI 190 IRQ_TYPE_NONE>;
+		interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
 		qcom,ee = <0>;
 		qcom,channel = <0>;
 		#address-cells = <1>;
@@ -1194,6 +1188,26 @@
 				qcom,net-id = <1>;
 				qcom,low-latency;
 			};
+
+			qcom,diag {
+				qcom,smd-channels = "DIAG";
+			};
+
+			qcom,diag_cntl {
+				qcom,smd-channels = "DIAG_CNTL";
+			};
+
+			qcom,diag_cmd {
+				qcom,smd-channels = "DIAG_CMD";
+			};
+
+			qcom,diag_dci {
+				qcom,smd-channels = "DIAG_2";
+			};
+
+			qcom.diag_dci_cmd {
+				qcom,smd-channels = "DIAG_2_CMD";
+			};
 		};
 
 		adsp {
@@ -1202,6 +1216,7 @@
 			qcom,ipc = <&apcs 0 8>;
 			qcom,smd-edge = <1>;
 			qcom,remote-pid = <2>;
+			mbox-names = "adsp_smem";
 			label = "adsp";
 
 			qcom,smd-channels = "IPCRTR";
@@ -1209,6 +1224,18 @@
 				qcom,net-id = <1>;
 				qcom,low-latency;
 			};
+
+			qcom,diag {
+				qcom,smd-channels = "DIAG";
+			};
+
+			qcom,diag_cntl {
+				qcom,smd-channels = "DIAG_CNTL";
+			};
+
+			qcom,apr_tal_rpmsg {
+				qcom,smd-channels = "apr_audio_svc";
+			};
 		};
 
 		wcnss {
@@ -1224,6 +1251,14 @@
 				qcom,net-id = <1>;
 				qcom,low-latency;
 			};
+
+			qcom,diag {
+				qcom,smd-channels = "APPS_RIVA_DATA";
+			};
+
+			qcom,diag_cntl {
+				qcom,smd-channels = "APPS_RIVA_CTRL";
+			};
 		};
 
 		rpm {
@@ -1240,63 +1275,39 @@
 
 	};
 
-	qcom,smdtty {
-		compatible = "qcom,smdtty";
+	qcom,smsm {
+		compatible = "qcom,smsm";
+		#address-cells = <1>;
+		#size-cells = <0>;
 
-		smdtty_apps_fm: qcom,smdtty-apps-fm {
-			qcom,smdtty-remote = "wcnss";
-			qcom,smdtty-port-name = "APPS_FM";
+		qcom,ipc-1 = <&apcs 0 13>;
+		qcom,ipc-2 = <&apcs 0 9>;
+		qcom,ipc-3 = <&apcs 0 19>;
+
+		apps_smsm: apps@0 {
+			reg = <0>;
+			#qcom,smem-state-cells = <1>;
 		};
 
-		smdtty_apps_riva_bt_acl: smdtty-apps-riva-bt-acl {
-			qcom,smdtty-remote = "wcnss";
-			qcom,smdtty-port-name = "APPS_RIVA_BT_ACL";
+		modem_smsm: modem@1 {
+			reg = <1>;
+			interrupts = <0 26 IRQ_TYPE_EDGE_RISING>;
+			interrupt-controller;
+			#interrupt-cells = <2>;
 		};
 
-		smdtty_apps_riva_bt_cmd: qcom,smdtty-apps-riva-bt-cmd {
-			qcom,smdtty-remote = "wcnss";
-			qcom,smdtty-port-name = "APPS_RIVA_BT_CMD";
+		adsp_smsm: adsp@2 {
+			reg = <2>;
+			interrupts = <0 290 IRQ_TYPE_EDGE_RISING>;
+			interrupt-controller;
+			#interrupt-cells = <2>;
 		};
 
-		smdtty_mbalbridge: qcom,smdtty-mbalbridge {
-			qcom,smdtty-remote = "modem";
-			qcom,smdtty-port-name = "MBALBRIDGE";
-		};
-
-		smdtty_apps_riva_ant_cmd: smdtty-apps-riva-ant-cmd {
-			qcom,smdtty-remote = "wcnss";
-			qcom,smdtty-port-name = "APPS_RIVA_ANT_CMD";
-		};
-
-		smdtty_apps_riva_ant_data: smdtty-apps-riva-ant-data {
-			qcom,smdtty-remote = "wcnss";
-			qcom,smdtty-port-name = "APPS_RIVA_ANT_DATA";
-		};
-
-		smdtty_data1: qcom,smdtty-data1 {
-			qcom,smdtty-remote = "modem";
-			qcom,smdtty-port-name = "DATA1";
-		};
-
-		smdtty_data4: qcom,smdtty-data4 {
-			qcom,smdtty-remote = "modem";
-			qcom,smdtty-port-name = "DATA4";
-		};
-
-		smdtty_data11: qcom,smdtty-data11 {
-			qcom,smdtty-remote = "modem";
-			qcom,smdtty-port-name = "DATA11";
-		};
-
-		smdtty_data21: qcom,smdtty-data21 {
-			qcom,smdtty-remote = "modem";
-			qcom,smdtty-port-name = "DATA21";
-		};
-
-		smdtty_loopback: smdtty-loopback {
-			qcom,smdtty-remote = "modem";
-			qcom,smdtty-port-name = "LOOPBACK";
-			qcom,smdtty-dev-name = "LOOPBACK_TTY";
+		wcnss_smsm: wcnss@3 {
+			reg = <3>;
+			interrupts = <0 144 IRQ_TYPE_EDGE_RISING>;
+			interrupt-controller;
+			#interrupt-cells = <2>;
 		};
 	};
 
@@ -1304,39 +1315,89 @@
 		compatible = "qcom,smdpkt";
 
 		qcom,smdpkt-data5-cntl {
-			qcom,smdpkt-remote = "modem";
-			qcom,smdpkt-port-name = "DATA5_CNTL";
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "DATA5_CNTL";
 			qcom,smdpkt-dev-name = "smdcntl0";
 		};
 
 		qcom,smdpkt-data22 {
-			qcom,smdpkt-remote = "modem";
-			qcom,smdpkt-port-name = "DATA22";
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "DATA22";
 			qcom,smdpkt-dev-name = "smd22";
 		};
 
 		qcom,smdpkt-data40-cntl {
-			qcom,smdpkt-remote = "modem";
-			qcom,smdpkt-port-name = "DATA40_CNTL";
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "DATA40_CNTL";
 			qcom,smdpkt-dev-name = "smdcntl8";
 		};
 
 		qcom,smdpkt-data2 {
-			qcom,smdpkt-remote = "modem";
-			qcom,smdpkt-port-name = "DATA2";
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "DATA2";
 			qcom,smdpkt-dev-name = "at_mdm0";
 		};
 
 		qcom,smdpkt-apr-apps2 {
-			qcom,smdpkt-remote = "adsp";
-			qcom,smdpkt-port-name = "apr_apps2";
+			qcom,smdpkt-edge = "adsp";
+			qcom,smdpkt-ch-name = "apr_apps2";
 			qcom,smdpkt-dev-name = "apr_apps2";
 		};
 
-		qcom,smdpkt-loopback {
-			qcom,smdpkt-remote = "modem";
-			qcom,smdpkt-port-name = "LOOPBACK";
-			qcom,smdpkt-dev-name = "smd_pkt_loopback";
+		qcom,smdpkt-apps-riva-bt-acl {
+			qcom,smdpkt-edge = "wcnss";
+			qcom,smdpkt-ch-name = "APPS_RIVA_BT_ACL";
+			qcom,smdpkt-dev-name = "smd2";
+			qcom,smdpkt-fragmented-read;
+		};
+
+		qcom,smdpkt-apps-riva-bt-cmd {
+			qcom,smdpkt-edge = "wcnss";
+			qcom,smdpkt-ch-name = "APPS_RIVA_BT_CMD";
+			qcom,smdpkt-dev-name = "smd3";
+			qcom,smdpkt-fragmented-read;
+		};
+
+		qcom,smdpkt-mbalbridge {
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "MBALBRIDGE";
+			qcom,smdpkt-dev-name = "smd4";
+		};
+
+		qcom,smdpkt-apps-riva-ant-cmd {
+			qcom,smdpkt-edge = "wcnss";
+			qcom,smdpkt-ch-name = "APPS_RIVA_ANT_CMD";
+			qcom,smdpkt-dev-name = "smd5";
+		};
+
+		qcom,smdpkt-apps-riva-ant-data {
+			qcom,smdpkt-edge = "wcnss";
+			qcom,smdpkt-ch-name = "APPS_RIVA_ANT_DATA";
+			qcom,smdpkt-dev-name = "smd6";
+		};
+
+		qcom,smdpkt-data1 {
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "DATA1";
+			qcom,smdpkt-dev-name = "smd7";
+		};
+
+		qcom,smdpkt-data4 {
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "DATA4";
+			qcom,smdpkt-dev-name = "smd8";
+		};
+
+		qcom,smdpkt-data11 {
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "DATA11";
+			qcom,smdpkt-dev-name = "smd11";
+		};
+
+		qcom,smdpkt-data21 {
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "DATA21";
+			qcom,smdpkt-dev-name = "smd21";
 		};
 	};
 
@@ -1348,11 +1409,20 @@
 	bam_dmux: qcom,bam_dmux@4044000 {
 		compatible = "qcom,bam_dmux";
 		reg = <0x4044000 0x19000>;
-		interrupts = <GIC_SPI 162 IRQ_TYPE_EDGE_RISING>;
 		qcom,rx-ring-size = <32>;
 		qcom,max-rx-mtu = <4096>;
 		qcom,fast-shutdown;
 		qcom,no-cpu-affinity;
+
+		qcom,smem-states = <&apps_smsm 1>, <&apps_smsm 11>;
+		qcom,smem-state-names = "pwrctrl", "pwrctrlack";
+
+		interrupts-extended =
+			<&intc GIC_SPI 162 IRQ_TYPE_EDGE_RISING>,
+			<&modem_smsm 1 IRQ_TYPE_EDGE_BOTH>,
+			<&modem_smsm 11 IRQ_TYPE_EDGE_BOTH>;
+
+		interrupt-names = "dmux", "ctrl", "ack";
 	};
 
 	sdcc1_ice: sdcc1ice@7803000 {
@@ -1539,7 +1609,7 @@
 		qcom,ssctl-instance-id = <0x12>;
 		qcom,qdsp6v56-1-8-inrush-current;
 		qcom,reset-clk;
-
+		qcom,iommu-vmid = <0xF>; /* VMID_MSS_MSA */
 		/* Inputs from mss */
 		/* TBD */
 		interrupts-extended = <&modem_smp2p_in 0 0>,
@@ -1834,7 +1904,8 @@
 			    "wlan_tx_status", "alarms_txctl",
 			    "alarms_tactl", "pronto_mcu_base";
 
-		interrupts = <0 145 0 0 146 0>;
+		interrupts = <0 145 IRQ_TYPE_EDGE_RISING>,
+				<0 146 IRQ_TYPE_EDGE_RISING>;
 		interrupt-names = "wcnss_wlantx_irq", "wcnss_wlanrx_irq";
 
 		qcom,pronto-vddmx-supply = <&pm8937_l3_level_ao>;
@@ -1881,6 +1952,9 @@
 
 		clock-names = "xo", "rf_clk";
 
+		qcom,smem-states = <&apps_smsm 10>, <&apps_smsm 9>, <&apps_smsm 12>;
+		qcom,smem-state-names = "tx-enable", "tx-rings-empty", "wake-state";
+
 		qcom,has-autodetect-xo;
 		qcom,is-pronto-v3;
 		qcom,has-pronto-hw;
diff --git a/qcom/msm8937-audio.dtsi b/qcom/msm8937-audio.dtsi
index 2b852e0..14701d6 100644
--- a/qcom/msm8937-audio.dtsi
+++ b/qcom/msm8937-audio.dtsi
@@ -1,3 +1,4 @@
+#include <dt-bindings/clock/qcom,audio-ext-clk.h>
 #include "msm-audio-lpass.dtsi"
 #include "msm8953-wsa881x.dtsi"
 
@@ -7,10 +8,10 @@
 };
 
 &soc {
-	qcom,msm-audio-apr {
+	audio_apr: qcom,msm-audio-apr {
 		compatible = "qcom,msm-audio-apr";
-		msm_audio_apr_dummy {
-			compatible = "qcom,msm-audio-apr-dummy";
+		q6core: q6core {
+			compatible = "qcom,q6core-audio";
 		};
 	};
 
@@ -81,37 +82,25 @@
 			<&dai_mi2s0>, <&dai_mi2s1>,
 			<&dai_mi2s2>, <&dai_mi2s3>,
 			<&dai_mi2s4>, <&dai_mi2s5>,
-			/* TBD
-			 * &sb_0_rx>, <&sb_0_tx>, <&sb_1_rx>, <&sb_1_tx>,
-			 * <&sb_3_rx>, <&sb_3_tx>, <&sb_4_rx>, <&sb_4_tx>,
-			 */
 			<&bt_sco_rx>, <&bt_sco_tx>,
 			<&int_fm_rx>, <&int_fm_tx>,
 			<&afe_pcm_rx>, <&afe_pcm_tx>,
 			<&afe_proxy_rx>, <&afe_proxy_tx>,
 			<&incall_record_rx>, <&incall_record_tx>,
-			<&incall_music_rx>, <&incall_music_2_rx>;
-			/* TBD
-			 * <&proxy_rx>, <&proxy_tx>;
-			 */
+			<&incall_music_rx>, <&incall_music_2_rx>,
+			<&proxy_rx>, <&proxy_tx>;
 
 		asoc-cpu-names = "msm-dai-q6-auxpcm.1",
 				"msm-dai-q6-mi2s.0", "msm-dai-q6-mi2s.1",
 				"msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3",
 				"msm-dai-q6-mi2s.4", "msm-dai-q6-mi2s.6",
-				"msm-dai-q6-dev.16384", "msmdai-q6-dev.16385",
-				"msm-dai-q6-dev.16386", "msm-dai-q6-dev.16387",
-				"msm-dai-q6-dev.16390", "msm-dai-q6-dev.16391",
-				"msm-dai-q6-dev.16392", "msm-dai-q6-dev.16393",
 				"msm-dai-q6-dev.12288", "msm-dai-q6-dev.12289",
 				"msm-dai-q6-dev.12292", "msm-dai-q6-dev.12293",
 				"msm-dai-q6-dev.224", "msm-dai-q6-dev.225",
 				"msm-dai-q6-dev.241", "msm-dai-q6-dev.240",
 				"msm-dai-q6-dev.32771", "msm-dai-q6-dev.32772",
-				"msm-dai-q6-dev.32773", "msm-dai-q6-dev.32770";
-				/* TBD
-				 * "msm-dai-q6-dev.8194", "msm-dai-q6-dev.8195";
-				 */
+				"msm-dai-q6-dev.32773", "msm-dai-q6-dev.32770",
+				"msm-dai-q6-dev.8194", "msm-dai-q6-dev.8195";
 
 		asoc-codec = <&stub_codec>, <&msm_digital_codec>,
 				<&pmic_analog_codec>;
@@ -154,6 +143,8 @@
 			status = "okay";
 			compatible = "qcom,wsa881x-i2c-codec";
 			reg = <0x0f>;
+			clock-names = "wsa_mclk";
+			clocks = <&wsa881x_analog_clk 0>;
 			qcom,wsa-analog-vi-gpio = <&wsa881x_analog_vi_gpio>;
 			qcom,wsa-analog-clk-gpio = <&wsa881x_analog_clk_gpio>;
 			qcom,wsa-analog-reset-gpio =
@@ -188,6 +179,14 @@
 		pinctrl-1 = <&wsa_reset_off>;
 	};
 
+	wsa881x_analog_clk: wsa_ana_clk {
+		compatible = "qcom,audio-ref-clk";
+		qcom,codec-ext-clk-src = <AUDIO_LPASS_MCLK_2>;
+		qcom,codec-lpass-ext-clk-freq = <9600000>;
+		qcom,codec-lpass-clk-id = <0x301>;
+		#clock-cells = <1>;
+	};
+
 	ext_codec: sound-9335 {
 		status = "disabled";
 		compatible = "qcom,msm8952-audio-slim-codec";
diff --git a/qcom/msm8937-camera.dtsi b/qcom/msm8937-camera.dtsi
index 76bf807..16120ab 100644
--- a/qcom/msm8937-camera.dtsi
+++ b/qcom/msm8937-camera.dtsi
@@ -306,25 +306,22 @@
 			compatible = "qcom,msm-cam-smmu-cb";
 			iommus = <&apps_iommu 0x400 0x00>,
 				<&apps_iommu 0x2400 0x00>;
+			qcom,iommu-dma-addr-pool = <0x10000000 0x70000000>;
 			label = "vfe";
 			qcom,scratch-buf-support;
 		};
 
-		msm_cam_smmu_cb2: msm_cam_smmu_cb2 {
-			compatible = "qcom,msm-cam-smmu-cb";
-			label = "vfe_secure";
-			qcom,secure-context;
-		};
-
 		msm_cam_smmu_cb3: msm_cam_smmu_cb3 {
 			compatible = "qcom,msm-cam-smmu-cb";
 			iommus = <&apps_iommu 0x1c00 0x00>;
+			qcom,iommu-dma-addr-pool = <0x00020000 0x78000000>;
 			label = "cpp";
 		};
 
 		msm_cam_smmu_cb4: msm_cam_smmu_cb4 {
 			compatible = "qcom,msm-cam-smmu-cb";
 			iommus = <&apps_iommu 0x1800 0x00>;
+			qcom,iommu-dma-addr-pool = <0x00020000 0x78000000>;
 			label = "jpeg_enc0";
 		};
 	};
@@ -397,6 +394,8 @@
 			<106 512 0 0>;
 		qcom,msm-bus-vector-dyn-vote;
 		qcom,micro-reset;
+		qcom,src-clock-rates = <133333333 160000000 200000000
+			266666667 308570000 320000000 360000000>;
 		qcom,cpp-fw-payload-info {
 			qcom,stripe-base = <156>;
 			qcom,plane-base = <141>;
diff --git a/qcom/msm8937-gpu.dtsi b/qcom/msm8937-gpu.dtsi
index 0571cc1..6183246 100644
--- a/qcom/msm8937-gpu.dtsi
+++ b/qcom/msm8937-gpu.dtsi
@@ -4,28 +4,42 @@
 		compatible = "qcom,kgsl-busmon";
 	};
 
+	gpu_bw_tbl: gpu-bw-tbl {
+		compatible = "operating-points-v2";
+		opp-0   { opp-hz = /bits/ 64 < 0 >;     }; /* OFF */
+
+		opp-100 { opp-hz = /bits/ 64 < 769 >;   }; /*  1. 100 MHz */
+
+		opp-211 { opp-hz = /bits/ 64 < 1611 >;  }; /*  2. 211 MHz */
+
+		opp-278 { opp-hz = /bits/ 64 < 2124 >;  }; /*  3. 278 MHz */
+
+		opp-384 { opp-hz = /bits/ 64 < 2929 >;  }; /*  4. 384 MHz */
+
+		opp-537 { opp-hz = /bits/ 64 < 4101 >;  }; /*  5. 537 MHz */
+
+		opp-557 { opp-hz = /bits/ 64 < 4248 >;  }; /*  6. 557 MHz */
+
+		opp-700 { opp-hz = /bits/ 64 < 5346 >;  }; /*  7. 700 MHz */
+
+		opp-748 { opp-hz = /bits/ 64 < 5712 >;  }; /*  8. 748 MHz */
+
+		opp-806 { opp-hz = /bits/ 64 < 6152 >;  }; /*  9. 806 MHz */
+
+		opp-922 { opp-hz = /bits/ 64 < 7031 >;  }; /* 10. 922 MHz */
+	};
+
 	gpubw: qcom,gpubw {
 		compatible = "qcom,devbw";
 		governor = "bw_vbif";
 		qcom,src-dst-ports = <26 512>;
+		operating-points-v2 = <&gpu_bw_tbl>;
 		/*
 		 * active-only flag is used while registering the bus
 		 * governor.It helps release the bus vote when the CPU
 		 * subsystem is inactiv3
 		 */
 		qcom,active-only;
-		qcom,bw-tbl =
-			< 0    >, /*  off */
-			<  769 >, /* 1. DDR:100.80 MHz BIMC: 50.40 MHz */
-			< 1611 >, /* 2. DDR:211.20 MHz BIMC: 105.60 MHz */
-			< 2124 >, /* 3. DDR:278.40 MHz BIMC: 139.20 MHz */
-			< 2929 >, /* 4. DDR:384.00 MHz BIMC: 192.00 MHz */
-			< 4101 >, /* 5. DDR:537.60 MHz BIMC: 268.80 MHz */
-			< 4248 >, /* 6. DDR:556.80 MHz BIMC: 278.40 MHz */
-			< 5346 >, /* 7. DDR:662.40 MHz BIMC: 331.20 MHz */
-			< 5712 >, /* 8. DDR:748.80 MHz BIMC: 374.40 MHz */
-			< 6152 >, /* 9. DDR:806.40 MHz BIMC: 403.20 MHz */
-			< 7031 >; /* 10. DDR:921.60 MHz BIMC: 460.80 MHz */
 	};
 
 	msm_gpu: qcom,kgsl-3d0@1c00000 {
@@ -214,8 +228,6 @@
 		compatible = "qcom,kgsl-smmu-v2";
 
 		reg = <0x1c40000 0x10000>;
-		qcom,protect = <0x40000 0x10000>;
-		qcom,micro-mmu-control = <0x6000>;
 
 		clocks = <&gcc GCC_OXILI_AHB_CLK>,
 			 <&gcc GCC_BIMC_GFX_CLK>;
@@ -228,6 +240,7 @@
 			compatible = "qcom,smmu-kgsl-cb";
 			label = "gfx3d_user";
 			iommus = <&kgsl_smmu 0>;
+			qcom,iommu-dma = "disabled";
 			qcom,gpu-offset = <0x48000>;
 		};
 	};
diff --git a/qcom/msm8937-mdss.dtsi b/qcom/msm8937-mdss.dtsi
index 2342d00..59b8a28 100644
--- a/qcom/msm8937-mdss.dtsi
+++ b/qcom/msm8937-mdss.dtsi
@@ -174,11 +174,17 @@
 		smmu_mdp_unsec: qcom,smmu_mdp_unsec_cb {
 			compatible = "qcom,smmu_mdp_unsec";
 			iommus = <&apps_iommu 0x2800 0>; /* For NS ctx bank */
+			qcom,iommu-dma-addr-pool = <0x08000000 0xF8000000>;
+			qcom,iommu-earlymap; /* for cont-splash */
+
 		};
 
 		smmu_mdp_sec: qcom,smmu_mdp_sec_cb {
 			compatible = "qcom,smmu_mdp_sec";
 			iommus = <&apps_iommu 0x2801 0>; /* For SEC Ctx Bank */
+			qcom,iommu-dma-addr-pool = <0x08000000 0xF8000000>;
+			qcom,secure-context-bank;
+			qcom,iommu-vmid = <0x11>; /*VMID_CP_SEC_DISPLAY*/
 		};
 
 		mdss_fb0: qcom,mdss_fb_primary {
@@ -228,13 +234,12 @@
 
 		clocks = <&gcc_mdss MDSS_MDP_VOTE_CLK>,
 			<&gcc GCC_MDSS_AHB_CLK>,
-			<&gcc GCC_MDSS_AXI_CLK>;
-			/* TODO
-			 * <&mdss_dsi0_pll BYTE_CLK_SRC_0_CLK>,
-			 * <&mdss_dsi1_pll BYTE_CLK_SRC_1_CLK>,
-			 * <&mdss_dsi0_pll PCLK_SRC_MUX_0_CLK>,
-			 * <&mdss_dsi1_pll PCLK_SRC_MUX_1_CLK>;
-			 */
+			<&gcc GCC_MDSS_AXI_CLK>,
+			<&mdss_dsi0_pll BYTECLK_SRC_0_CLK>,
+			<&mdss_dsi1_pll BYTECLK_SRC_1_CLK>,
+			<&mdss_dsi0_pll PCLK_SRC_0_CLK>,
+			<&mdss_dsi1_pll PCLK_SRC_1_CLK>;
+
 		clock-names = "mdp_core_clk", "iface_clk", "bus_clk",
 			"ext_byte0_clk", "ext_byte1_clk", "ext_pixel0_clk",
 			"ext_pixel1_clk";
diff --git a/qcom/msm8937-thermal.dtsi b/qcom/msm8937-thermal.dtsi
index b1b4056..2878897 100644
--- a/qcom/msm8937-thermal.dtsi
+++ b/qcom/msm8937-thermal.dtsi
@@ -1,5 +1,50 @@
 #include <dt-bindings/thermal/thermal.h>
 
+&clock_cpu {
+	qcom,cpu-isolation {
+		compatible = "qcom,cpu-isolate";
+		cpu0_isolate: cpu0-isolate {
+			qcom,cpu = <&CPU0>;
+			#cooling-cells = <2>;
+		};
+
+		cpu1_isolate: cpu1-isolate {
+			qcom,cpu = <&CPU1>;
+			#cooling-cells = <2>;
+		};
+
+		cpu2_isolate: cpu2-isolate {
+			qcom,cpu = <&CPU2>;
+			#cooling-cells = <2>;
+		};
+
+		cpu3_isolate: cpu3-isolate {
+			qcom,cpu = <&CPU3>;
+			#cooling-cells = <2>;
+		};
+
+		cpu4_isolate: cpu4-isolate {
+			qcom,cpu = <&CPU4>;
+			#cooling-cells = <2>;
+		};
+
+		cpu5_isolate: cpu5-isolate {
+			qcom,cpu = <&CPU5>;
+			#cooling-cells = <2>;
+		};
+
+		cpu6_isolate: cpu6-isolate {
+			qcom,cpu = <&CPU6>;
+			#cooling-cells = <2>;
+		};
+
+		cpu7_isolate: cpu7-isolate {
+			qcom,cpu = <&CPU7>;
+			#cooling-cells = <2>;
+		};
+	};
+};
+
 &soc {
 	qmi-tmd-devices {
 		compatible = "qcom,qmi-cooling-devices";
@@ -238,56 +283,14 @@
 				trip = <&cpu_trip>;
 				cooling-device =
 					<&CPU0 THERMAL_NO_LIMIT
-						(THERMAL_MAX_LIMIT-1)>;
-			};
-
-			cpu1_cdev {
-				trip = <&cpu_trip>;
-				cooling-device =
-					<&CPU1 THERMAL_NO_LIMIT
-						(THERMAL_MAX_LIMIT-1)>;
-			};
-
-			cpu2_cdev {
-				trip = <&cpu_trip>;
-				cooling-device =
-					<&CPU2 THERMAL_NO_LIMIT
-						(THERMAL_MAX_LIMIT-1)>;
-			};
-
-			cpu3_cdev {
-				trip = <&cpu_trip>;
-				cooling-device =
-					<&CPU3 THERMAL_NO_LIMIT
-						(THERMAL_MAX_LIMIT-1)>;
+						THERMAL_NO_LIMIT>;
 			};
 
 			cpu4_cdev {
 				trip = <&cpu_trip>;
 				cooling-device =
 					<&CPU4 THERMAL_NO_LIMIT
-						(THERMAL_MAX_LIMIT-1)>;
-			};
-
-			cpu5_cdev {
-				trip = <&cpu_trip>;
-				cooling-device =
-					<&CPU5 THERMAL_NO_LIMIT
-						(THERMAL_MAX_LIMIT-1)>;
-			};
-
-			cpu6_cdev {
-				trip = <&cpu_trip>;
-				cooling-device =
-					<&CPU6 THERMAL_NO_LIMIT
-						(THERMAL_MAX_LIMIT-1)>;
-			};
-
-			cpu7_cdev {
-				trip = <&cpu_trip>;
-				cooling-device =
-					<&CPU7 THERMAL_NO_LIMIT
-						(THERMAL_MAX_LIMIT-1)>;
+						THERMAL_NO_LIMIT>;
 			};
 		};
 	};
@@ -310,8 +313,7 @@
 			cpu0_cdev {
 				trip = <&apc1_cpu0_trip>;
 				cooling-device =
-					<&CPU0 THERMAL_MAX_LIMIT
-						THERMAL_MAX_LIMIT>;
+					<&cpu0_isolate 1 1>;
 			};
 		};
 	};
@@ -334,8 +336,7 @@
 			cpu1_cdev {
 				trip = <&apc1_cpu1_trip>;
 				cooling-device =
-					<&CPU1 THERMAL_MAX_LIMIT
-						THERMAL_MAX_LIMIT>;
+					<&cpu1_isolate 1 1>;
 			};
 		};
 	};
@@ -358,8 +359,7 @@
 			cpu2_cdev {
 				trip = <&apc1_cpu2_trip>;
 				cooling-device =
-					<&CPU2 THERMAL_MAX_LIMIT
-						THERMAL_MAX_LIMIT>;
+					<&cpu2_isolate 1 1>;
 			};
 		};
 	};
@@ -382,8 +382,7 @@
 			cpu3_cdev {
 				trip = <&apc1_cpu3_trip>;
 				cooling-device =
-					<&CPU3 THERMAL_MAX_LIMIT
-						THERMAL_MAX_LIMIT>;
+					<&cpu3_isolate 1 1>;
 			};
 		};
 	};
@@ -406,29 +405,25 @@
 			cpu4_cdev {
 				trip = <&cpuss0_step_trip>;
 				cooling-device =
-					<&CPU4 THERMAL_MAX_LIMIT
-						THERMAL_MAX_LIMIT>;
+					<&cpu4_isolate 1 1>;
 			};
 
 			cpu5_cdev {
 				trip = <&cpuss0_step_trip>;
 				cooling-device =
-					<&CPU5 THERMAL_MAX_LIMIT
-						THERMAL_MAX_LIMIT>;
+					<&cpu5_isolate 1 1>;
 			};
 
 			cpu6_cdev {
 				trip = <&cpuss0_step_trip>;
 				cooling-device =
-					<&CPU6 THERMAL_MAX_LIMIT
-						THERMAL_MAX_LIMIT>;
+					<&cpu6_isolate 1 1>;
 			};
 
 			cpu7_cdev {
 				trip = <&cpuss0_step_trip>;
 				cooling-device =
-					<&CPU7 THERMAL_MAX_LIMIT
-						THERMAL_MAX_LIMIT>;
+					<&cpu7_isolate 1 1>;
 			};
 		};
 	};
diff --git a/qcom/msm8937-vidc.dtsi b/qcom/msm8937-vidc.dtsi
index 5cb2818..bea37e1 100644
--- a/qcom/msm8937-vidc.dtsi
+++ b/qcom/msm8937-vidc.dtsi
@@ -60,6 +60,9 @@
 				<&apps_iommu 0x807 0x00>,
 				<&apps_iommu 0x808 0x27>,
 				<&apps_iommu 0x811 0x20>;
+			qcom,iommu-dma-addr-pool = <0x5dc00000 0x7f000000
+				0xdcc00000 0x1000000>;
+			qcom,iommu-faults = "non-fatal";
 			buffer-types = <0xfff>;
 			virtual-addr-pool = <0x5dc00000 0x7f000000
 				0xdcc00000 0x1000000>;
@@ -71,18 +74,24 @@
 			iommus = <&apps_iommu 0x900 0x00>,
 				<&apps_iommu 0x90a 0x04>,
 				<&apps_iommu 0x909 0x22>;
+			qcom,iommu-dma-addr-pool = <0x4b000000 0x12c00000>;
+			qcom,iommu-faults = "non-fatal";
 			buffer-types = <0x241>;
 			virtual-addr-pool = <0x4b000000 0x12c00000>;
 			qcom,secure-context-bank;
+			qcom,iommu-vmid = <0x9>; /*VMID_CP_BITSTREAM*/
 		};
 
 		secure_pixel_cb {
 			compatible = "qcom,msm-vidc,context-bank";
 			label = "venus_sec_pixel";
 			iommus = <&apps_iommu 0x90c 0x20>;
+			qcom,iommu-dma-addr-pool = <0x25800000 0x25800000>;
+			qcom,iommu-faults = "non-fatal";
 			buffer-types = <0x106>;
 			virtual-addr-pool = <0x25800000 0x25800000>;
 			qcom,secure-context-bank;
+			qcom,iommu-vmid = <0xA>; /*VMID_CP_PIXEL*/
 		};
 
 		secure_non_pixel_cb {
@@ -92,9 +101,12 @@
 				<&apps_iommu 0x907 0x08>,
 				<&apps_iommu 0x908 0x20>,
 				<&apps_iommu 0x90d 0x20>;
+			qcom,iommu-dma-addr-pool = <0x1000000 0x24800000>;
+			qcom,iommu-faults = "non-fatal";
 			buffer-types = <0x480>;
 			virtual-addr-pool = <0x1000000 0x24800000>;
 			qcom,secure-context-bank;
+			qcom,iommu-vmid = <0xB>; /*VMID_CP_NON_PIXEL*/
 		};
 
 		/* Buses */
@@ -103,7 +115,7 @@
 			label = "venus-ddr";
 			qcom,bus-master = <MSM_BUS_MASTER_VIDEO_P0>;
 			qcom,bus-slave = <MSM_BUS_SLAVE_EBI_CH0>;
-			qcom,bus-governor = "venus-ddr-gov";
+			qcom,bus-mode = "venus-ddr";
 			qcom,bus-range-kbps = <1000 917000>;
 		};
 
@@ -112,7 +124,7 @@
 			label = "venus-arm9-ddr";
 			qcom,bus-master = <MSM_BUS_MASTER_VIDEO_P0>;
 			qcom,bus-slave = <MSM_BUS_SLAVE_EBI_CH0>;
-			qcom,bus-governor = "performance";
+			qcom,bus-mode = "performance";
 			qcom,bus-range-kbps = <1 1>;
 		};
 	};
diff --git a/qcom/msm8937.dtsi b/qcom/msm8937.dtsi
index 5bdb157..8e26d75 100644
--- a/qcom/msm8937.dtsi
+++ b/qcom/msm8937.dtsi
@@ -4,7 +4,7 @@
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/clock/qcom,gcc-sdm429w.h>
 #include <dt-bindings/clock/qcom,rpmcc.h>
-#include <dt-bindings/clock/mdss-28nm-pll-clk.h>
+#include <dt-bindings/clock/mdss-28nm-pll-clk-legacy.h>
 
 #define MHZ_TO_MBPS(mhz, w) ((mhz * 1000000 * w) / (1024 * 1024))
 #define BW_OPP_ENTRY(mhz, w) opp-mhz {opp-hz = /bits/ 64 <MHZ_TO_MBPS(mhz, w)>;}
@@ -24,7 +24,7 @@
 			compatible = "android,firmware";
 			vbmeta {
 				compatible = "android,vbmeta";
-			parts = "vbmeta,boot,system,vendor,dtbo,recovery";
+			parts = "vbmeta,boot,system,vendor,dtbo";
 			};
 
 			fstab {
@@ -34,7 +34,7 @@
 		dev = "/dev/block/platform/soc/7824900.sdhci/by-name/vendor";
 					type = "ext4";
 					mnt_flags = "ro,barrier=1,discard";
-					fsmgr_flags = "wait,avb";
+					fsmgr_flags = "wait,slotselect,avb";
 					status = "ok";
 				};
 			};
@@ -122,18 +122,6 @@
 	};
 
 	aliases {
-		/* smdtty devices */
-		smd1 = &smdtty_apps_fm;
-		smd2 = &smdtty_apps_riva_bt_acl;
-		smd3 = &smdtty_apps_riva_bt_cmd;
-		smd4 = &smdtty_mbalbridge;
-		smd5 = &smdtty_apps_riva_ant_cmd;
-		smd6 = &smdtty_apps_riva_ant_data;
-		smd7 = &smdtty_data1;
-		smd8 = &smdtty_data4;
-		smd11 = &smdtty_data11;
-		smd21 = &smdtty_data21;
-		smd36 = &smdtty_loopback;
 		i2c2 = &i2c_2;
 		i2c5 = &i2c_5;
 		spi3 = &spi_3;
@@ -311,7 +299,7 @@
 
 	cpu-pmu {
 		compatible = "arm,armv8-pmuv3";
-		interrupts = <1 7 0xff00>;
+		interrupts = <1 7 IRQ_TYPE_LEVEL_HIGH>;
 	};
 
 	qcom,sps {
@@ -580,15 +568,14 @@
 	};
 
 	rpmcc: qcom,rpmcc {
-		compatible = "qcom,rpmcc-msm8937";
+		compatible = "qcom,rpmcc-sdm439";
 		#clock-cells = <1>;
 	};
 
 	gcc: qcom,gcc@1800000 {
-		compatible = "qcom,gcc-msm8937", "syscon";
+		compatible = "qcom,gcc-sdm439", "syscon";
 		reg = <0x1800000 0x80000>;
-			 <0x00a6018 0x00004>;
-		reg-names = "cc_base", "gpu-bin";
+		reg-names = "cc_base";
 		qcom,gcc_oxili_gfx3d_clk-opp-handle = <&msm_gpu>;
 		vdd_cx-supply = <&pm8937_s2_level>;
 		clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>;
@@ -611,10 +598,10 @@
 	gcc_mdss: qcom,gcc-mdss@1800000 {
 		compatible = "qcom,gcc-mdss-msm8937";
 		reg = <0x1800000 0x80000>;
-		 clocks = <&mdss_dsi0_pll PCLK_SRC_MUX_0_CLK>,
-		 <&mdss_dsi0_pll BYTE_CLK_SRC_0_CLK>,
-		 <&mdss_dsi1_pll PCLK_SRC_MUX_1_CLK>,
-		 <&mdss_dsi1_pll BYTE_CLK_SRC_1_CLK>;
+		 clocks = <&mdss_dsi0_pll PCLK_SRC_0_CLK>,
+		 <&mdss_dsi0_pll BYTECLK_SRC_0_CLK>,
+		 <&mdss_dsi1_pll PCLK_SRC_1_CLK>,
+		 <&mdss_dsi1_pll BYTECLK_SRC_1_CLK>;
 		clock-names = "pclk0_src", "byte0_src", "pclk1_src",
 			"byte1_src";
 		#clock-cells = <1>;
@@ -931,13 +918,13 @@
 		/* TODO
 		 * clocks = <&clock_cpu clk_cci_clk/>;
 		 */
-		governor = "cpufreq";
+		governor = "performance";
 		freq-tbl-khz =
 			<  400000 >,
 			<  533333 >;
 	};
 
-	ddr_bw_opp_table: generic-bw-opp-table {
+	ddr_bw_opp_table: ddr-bw-opp-table {
 		compatible = "operating-points-v2";
 		BW_OPP_ENTRY( 100, 8); /*  769 MB/s */
 		BW_OPP_ENTRY( 211, 8); /* 1611 MB/s */
@@ -953,7 +940,7 @@
 
 	cpu_cpu_ddr_bw: qcom,cpu-cpu-ddr-bw {
 		compatible = "qcom,devbw";
-		governor = "cpufreq";
+		governor = "performance";
 		qcom,src-dst-ports =
 			<MSM_BUS_MASTER_AMPSS_M0 MSM_BUS_SLAVE_EBI_CH0>;
 		qcom,active-only;
@@ -971,7 +958,7 @@
 
 	cpu_cpu_ddr_latfloor: qcom,cpu-cpu-ddr-latfloor {
 		compatible = "qcom,devbw";
-		governor = "cpufreq";
+		governor = "performance";
 		qcom,src-dst-ports =
 			<MSM_BUS_MASTER_AMPSS_M0 MSM_BUS_SLAVE_EBI_CH0>;
 		qcom,active-only;
@@ -1164,7 +1151,7 @@
 			<0x200a000 0x2100>;
 		reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
 		interrupt-names = "periph_irq";
-		interrupts = <GIC_SPI 190 IRQ_TYPE_NONE>;
+		interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
 		qcom,ee = <0>;
 		qcom,channel = <0>;
 		#address-cells = <1>;
@@ -1473,6 +1460,26 @@
 				qcom,net-id = <1>;
 				qcom,low-latency;
 			};
+
+			qcom,diag {
+				qcom,smd-channels = "DIAG";
+			};
+
+			qcom,diag_cntl {
+				qcom,smd-channels = "DIAG_CNTL";
+			};
+
+			qcom,diag_cmd {
+				qcom,smd-channels = "DIAG_CMD";
+			};
+
+			qcom,diag_dci {
+				qcom,smd-channels = "DIAG_2";
+			};
+
+			qcom.diag_dci_cmd {
+				qcom,smd-channels = "DIAG_2_CMD";
+			};
 		};
 
 		adsp {
@@ -1481,6 +1488,7 @@
 			qcom,ipc = <&apcs 0 8>;
 			qcom,smd-edge = <1>;
 			qcom,remote-pid = <2>;
+			mbox-names = "adsp_smem";
 			label = "adsp";
 
 			qcom,smd-channels = "IPCRTR";
@@ -1488,6 +1496,18 @@
 				qcom,net-id = <1>;
 				qcom,low-latency;
 			};
+
+			qcom,diag {
+				qcom,smd-channels = "DIAG";
+			};
+
+			qcom,diag_cntl {
+				qcom,smd-channels = "DIAG_CNTL";
+			};
+
+			qcom,apr_tal_rpmsg {
+				qcom,smd-channels = "apr_audio_svc";
+			};
 		};
 
 		wcnss {
@@ -1503,6 +1523,14 @@
 				qcom,net-id = <1>;
 				qcom,low-latency;
 			};
+
+			qcom,diag {
+				qcom,smd-channels = "APPS_RIVA_DATA";
+			};
+
+			qcom,diag_cntl {
+				qcom,smd-channels = "APPS_RIVA_CTRL";
+			};
 		};
 
 		rpm {
@@ -1519,63 +1547,39 @@
 		};
 	};
 
-	qcom,smdtty {
-		compatible = "qcom,smdtty";
+	qcom,smsm {
+		compatible = "qcom,smsm";
+		#address-cells = <1>;
+		#size-cells = <0>;
 
-		smdtty_apps_fm: qcom,smdtty-apps-fm {
-			qcom,smdtty-remote = "wcnss";
-			qcom,smdtty-port-name = "APPS_FM";
+		qcom,ipc-1 = <&apcs 0 13>;
+		qcom,ipc-2 = <&apcs 0 9>;
+		qcom,ipc-3 = <&apcs 0 19>;
+
+		apps_smsm: apps@0 {
+			reg = <0>;
+			#qcom,smem-state-cells = <1>;
 		};
 
-		smdtty_apps_riva_bt_acl: smdtty-apps-riva-bt-acl {
-			qcom,smdtty-remote = "wcnss";
-			qcom,smdtty-port-name = "APPS_RIVA_BT_ACL";
+		modem_smsm: modem@1 {
+			reg = <1>;
+			interrupts = <0 26 IRQ_TYPE_EDGE_RISING>;
+			interrupt-controller;
+			#interrupt-cells = <2>;
 		};
 
-		smdtty_apps_riva_bt_cmd: qcom,smdtty-apps-riva-bt-cmd {
-			qcom,smdtty-remote = "wcnss";
-			qcom,smdtty-port-name = "APPS_RIVA_BT_CMD";
+		adsp_smsm: adsp@2 {
+			reg = <2>;
+			interrupts = <0 290 IRQ_TYPE_EDGE_RISING>;
+			interrupt-controller;
+			#interrupt-cells = <2>;
 		};
 
-		smdtty_mbalbridge: qcom,smdtty-mbalbridge {
-			qcom,smdtty-remote = "modem";
-			qcom,smdtty-port-name = "MBALBRIDGE";
-		};
-
-		smdtty_apps_riva_ant_cmd: smdtty-apps-riva-ant-cmd {
-			qcom,smdtty-remote = "wcnss";
-			qcom,smdtty-port-name = "APPS_RIVA_ANT_CMD";
-		};
-
-		smdtty_apps_riva_ant_data: smdtty-apps-riva-ant-data {
-			qcom,smdtty-remote = "wcnss";
-			qcom,smdtty-port-name = "APPS_RIVA_ANT_DATA";
-		};
-
-		smdtty_data1: qcom,smdtty-data1 {
-			qcom,smdtty-remote = "modem";
-			qcom,smdtty-port-name = "DATA1";
-		};
-
-		smdtty_data4: qcom,smdtty-data4 {
-			qcom,smdtty-remote = "modem";
-			qcom,smdtty-port-name = "DATA4";
-		};
-
-		smdtty_data11: qcom,smdtty-data11 {
-			qcom,smdtty-remote = "modem";
-			qcom,smdtty-port-name = "DATA11";
-		};
-
-		smdtty_data21: qcom,smdtty-data21 {
-			qcom,smdtty-remote = "modem";
-			qcom,smdtty-port-name = "DATA21";
-		};
-
-		smdtty_loopback: smdtty-loopback {
-			qcom,smdtty-remote = "modem";
-			qcom,smdtty-port-name = "LOOPBACK";
-			qcom,smdtty-dev-name = "LOOPBACK_TTY";
+		wcnss_smsm: wcnss@3 {
+			reg = <3>;
+			interrupts = <0 144 IRQ_TYPE_EDGE_RISING>;
+			interrupt-controller;
+			#interrupt-cells = <2>;
 		};
 	};
 
@@ -1583,39 +1587,89 @@
 		compatible = "qcom,smdpkt";
 
 		qcom,smdpkt-data5-cntl {
-			qcom,smdpkt-remote = "modem";
-			qcom,smdpkt-port-name = "DATA5_CNTL";
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "DATA5_CNTL";
 			qcom,smdpkt-dev-name = "smdcntl0";
 		};
 
 		qcom,smdpkt-data22 {
-			qcom,smdpkt-remote = "modem";
-			qcom,smdpkt-port-name = "DATA22";
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "DATA22";
 			qcom,smdpkt-dev-name = "smd22";
 		};
 
 		qcom,smdpkt-data40-cntl {
-			qcom,smdpkt-remote = "modem";
-			qcom,smdpkt-port-name = "DATA40_CNTL";
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "DATA40_CNTL";
 			qcom,smdpkt-dev-name = "smdcntl8";
 		};
 
 		qcom,smdpkt-data2 {
-			qcom,smdpkt-remote = "modem";
-			qcom,smdpkt-port-name = "DATA2";
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "DATA2";
 			qcom,smdpkt-dev-name = "at_mdm0";
 		};
 
 		qcom,smdpkt-apr-apps2 {
-			qcom,smdpkt-remote = "adsp";
-			qcom,smdpkt-port-name = "apr_apps2";
+			qcom,smdpkt-edge = "adsp";
+			qcom,smdpkt-ch-name = "apr_apps2";
 			qcom,smdpkt-dev-name = "apr_apps2";
 		};
 
-		qcom,smdpkt-loopback {
-			qcom,smdpkt-remote = "modem";
-			qcom,smdpkt-port-name = "LOOPBACK";
-			qcom,smdpkt-dev-name = "smd_pkt_loopback";
+		qcom,smdpkt-apps-riva-bt-acl {
+			qcom,smdpkt-edge = "wcnss";
+			qcom,smdpkt-ch-name = "APPS_RIVA_BT_ACL";
+			qcom,smdpkt-dev-name = "smd2";
+			qcom,smdpkt-fragmented-read;
+		};
+
+		qcom,smdpkt-apps-riva-bt-cmd {
+			qcom,smdpkt-edge = "wcnss";
+			qcom,smdpkt-ch-name = "APPS_RIVA_BT_CMD";
+			qcom,smdpkt-dev-name = "smd3";
+			qcom,smdpkt-fragmented-read;
+		};
+
+		qcom,smdpkt-mbalbridge {
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "MBALBRIDGE";
+			qcom,smdpkt-dev-name = "smd4";
+		};
+
+		qcom,smdpkt-apps-riva-ant-cmd {
+			qcom,smdpkt-edge = "wcnss";
+			qcom,smdpkt-ch-name = "APPS_RIVA_ANT_CMD";
+			qcom,smdpkt-dev-name = "smd5";
+		};
+
+		qcom,smdpkt-apps-riva-ant-data {
+			qcom,smdpkt-edge = "wcnss";
+			qcom,smdpkt-ch-name = "APPS_RIVA_ANT_DATA";
+			qcom,smdpkt-dev-name = "smd6";
+		};
+
+		qcom,smdpkt-data1 {
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "DATA1";
+			qcom,smdpkt-dev-name = "smd7";
+		};
+
+		qcom,smdpkt-data4 {
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "DATA4";
+			qcom,smdpkt-dev-name = "smd8";
+		};
+
+		qcom,smdpkt-data11 {
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "DATA11";
+			qcom,smdpkt-dev-name = "smd11";
+		};
+
+		qcom,smdpkt-data21 {
+			qcom,smdpkt-edge = "modem";
+			qcom,smdpkt-ch-name = "DATA21";
+			qcom,smdpkt-dev-name = "smd21";
 		};
 	};
 
@@ -2071,7 +2125,8 @@
 			    "wlan_tx_status", "alarms_txctl",
 			    "alarms_tactl", "pronto_mcu_base";
 
-		interrupts = <0 145 0 0 146 0>;
+		interrupts = <0 145 IRQ_TYPE_EDGE_RISING>,
+				<0 146 IRQ_TYPE_EDGE_RISING>;
 		interrupt-names = "wcnss_wlantx_irq", "wcnss_wlanrx_irq";
 
 		qcom,pronto-vddmx-supply = <&pm8937_l3_level_ao>;
@@ -2131,11 +2186,20 @@
 	bam_dmux: qcom,bam_dmux@4044000 {
 		compatible = "qcom,bam_dmux";
 		reg = <0x4044000 0x19000>;
-		interrupts = <0 162 1>;
 		qcom,rx-ring-size = <32>;
 		qcom,max-rx-mtu = <4096>;
 		qcom,fast-shutdown;
 		qcom,no-cpu-affinity;
+
+		qcom,smem-states = <&apps_smsm 1>, <&apps_smsm 11>;
+		qcom,smem-state-names = "pwrctrl", "pwrctrlack";
+
+		interrupts-extended =
+			<&intc GIC_SPI 162 IRQ_TYPE_EDGE_RISING>,
+			<&modem_smsm 1 IRQ_TYPE_EDGE_BOTH>,
+			<&modem_smsm 11 IRQ_TYPE_EDGE_BOTH>;
+
+		interrupt-names = "dmux", "ctrl", "ack";
 	};
 
 	ssc_sensors: qcom,msm-ssc-sensors {
diff --git a/qcom/pm8916.dtsi b/qcom/pm8916.dtsi
index 45cc99a..2ceae73 100644
--- a/qcom/pm8916.dtsi
+++ b/qcom/pm8916.dtsi
@@ -1,9 +1,13 @@
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/spmi/spmi.h>
+
 &spmi_bus {
 
-	qcom,pm8916@0 {
-		reg = <0x0>;
-		#address-cells = <1>;
-		#size-cells = <1>;
+	pm8916_0: pm8916@0 {
+		compatible = "qcom,pm8916", "qcom,spmi-pmic";
+		reg = <0 SPMI_USID>;
+		#address-cells = <2>;
+		#size-cells = <0>;
 
 		pm8916_revid: qcom,revid@100 {
 			compatible = "qcom,qpnp-revid";
@@ -13,8 +17,8 @@
 		pm8916_pon: qcom,power-on@800 {
 			compatible = "qcom,qpnp-power-on";
 			reg = <0x800 0x100>;
-			interrupts = <0x0 0x8 0x0>,
-				     <0x0 0x8 0x1>;
+			interrupts = <0x0 0x8 0x0 IRQ_TYPE_NONE>,
+				     <0x0 0x8 0x1 IRQ_TYPE_NONE>;
 			interrupt-names = "kpdpwr", "resin";
 			qcom,pon-dbc-delay = <15625>;
 			qcom,system-reset;
@@ -38,77 +42,35 @@
 			};
 		};
 
-		pm8916_mpps: mpps {
+		pm8916_gpios: pinctrl@c000 {
+			compatible = "qcom,pm8916-gpio";
+			reg = <0xc000 0x400>;
 			gpio-controller;
 			#gpio-cells = <2>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			label = "pm8916-mpp";
-
-			mpp@a000 {
-				reg = <0xa000 0x100>;
-				qcom,pin-num = <1>;
-			};
-
-			mpp@a100 {
-				reg = <0xa100 0x100>;
-				qcom,pin-num = <2>;
-			};
-
-			mpp@a200 {
-				reg = <0xa200 0x100>;
-				qcom,pin-num = <3>;
-			};
-
-			mpp@a300 {
-				reg = <0xa300 0x100>;
-				qcom,pin-num = <4>;
-			};
+			interrupts = <0 0xc0 0 IRQ_TYPE_NONE>,
+				     <0 0xc1 0 IRQ_TYPE_NONE>,
+				     <0 0xc2 0 IRQ_TYPE_NONE>,
+				     <0 0xc3 0 IRQ_TYPE_NONE>;
+			interrupt-names = "pm8916_gpio1", "pm8916_gpio2",
+					  "pm8916_gpio3", "pm8916_gpio4";
 		};
 
-		pm8916_gpios: gpios {
+		pm8916_mpps: mpps@a000 {
+			compatible = "qcom,pm8916-mpp";
+			reg = <0xa000 0x400>;
 			gpio-controller;
 			#gpio-cells = <2>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			label = "pm8916-gpio";
-
-			gpio@c000 {
-				reg = <0xc000 0x100>;
-				qcom,pin-num = <1>;
-			};
-
-			gpio@c100 {
-				reg = <0xc100 0x100>;
-				qcom,pin-num = <2>;
-			};
-
-			gpio@c200 {
-				reg = <0xc200 0x100>;
-				qcom,pin-num = <3>;
-			};
-
-			gpio@c300 {
-				reg = <0xc300 0x100>;
-				qcom,pin-num = <4>;
-			};
+			interrupts = <0 0xa0 0 IRQ_TYPE_NONE>,
+				     <0 0xa1 0 IRQ_TYPE_NONE>,
+				     <0 0xa2 0 IRQ_TYPE_NONE>,
+				     <0 0xa3 0 IRQ_TYPE_NONE>;
+			interrupt-names = "pm8916_mpp1", "pm8916_mpp2",
+					  "pm8916_mpp3", "pm8916_mpp4";
 		};
 
 		pm8916_rtc: qcom,pm8916_rtc {
-			compatible = "qcom,qpnp-rtc";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			qcom,qpnp-rtc-write = <0>;
-			qcom,qpnp-rtc-alarm-pwrup = <0>;
-
-			qcom,pm8916_rtc_rw@6000 {
-				reg = <0x6000 0x100>;
-			};
-
-			qcom,pm8916_rtc_alarm@6100 {
-				reg = <0x6100 0x100>;
-				interrupts = <0x0 0x61 0x1>;
-			};
+			compatible = "qcom,pm8916-rtc";
+			interrupts = <0x0 0x61 0x1 IRQ_TYPE_NONE>;
 		};
 
 		pm8916_vadc: vadc@3100 {
@@ -116,12 +78,13 @@
 			reg = <0x3100 0x100>;
 			#address-cells = <1>;
 			#size-cells = <0>;
-			interrupts = <0x0 0x31 0x0>;
+			interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>;
 			interrupt-names = "eoc-int-en-set";
 			qcom,adc-bit-resolution = <15>;
 			qcom,adc-vdd-reference = <1800>;
 			qcom,vadc-poll-eoc;
 			qcom,pmic-revid = <&pm8916_revid>;
+			#thermal-sensor-cells = <1>;
 
 			chan@8 {
 				label = "die_temp";
@@ -160,23 +123,25 @@
 		pm8916_tz: qcom,temp-alarm@2400 {
 			compatible = "qcom,spmi-temp-alarm";
 			reg = <0x2400 0x100>;
-			interrupts = <0x0 0x24 0x0>;
+			interrupts = <0x0 0x24 0x0 IRQ_TYPE_EDGE_RISING>;
 			label = "pm8916_tz";
 			qcom,channel-num = <8>;
 			qcom,threshold-set = <0>;
 			qcom,temp_alarm-vadc = <&pm8916_vadc>;
+			#thermal-sensor-cells = <0>;
 		};
 
 		pm8916_adc_tm: vadc@3400 {
+			compatible = "qcom,adc-tm-rev2";
 			reg = <0x3400 0x100>;
 			#address-cells = <1>;
 			#size-cells = <0>;
-			interrupts =	<0x0 0x34 0x0>,
-					<0x0 0x34 0x3>,
-					<0x0 0x34 0x4>;
-			interrupt-names =	"eoc-int-en-set",
-						"high-thr-en-set",
-						"low-thr-en-set";
+			interrupts = <0x0 0x34 0x0 IRQ_TYPE_EDGE_RISING>,
+				     <0x0 0x34 0x3 IRQ_TYPE_EDGE_RISING>,
+				     <0x0 0x34 0x4 IRQ_TYPE_EDGE_RISING>;
+			interrupt-names = "eoc-int-en-set",
+					  "high-thr-en-set",
+					  "low-thr-en-set";
 			qcom,adc-bit-resolution = <15>;
 			qcom,adc-vdd-reference = <1800>;
 			qcom,adc_tm-vadc = <&pm8916_vadc>;
@@ -184,8 +149,10 @@
 		};
 
 		pm8916_chg: qcom,charger {
+			compatible = "qcom,qpnp-linear-charger";
 			#address-cells = <1>;
 			#size-cells = <1>;
+			#cooling-cells = <2>;
 
 			qcom,vddmax-mv = <4200>;
 			qcom,vddsafe-mv = <4200>;
@@ -201,6 +168,7 @@
 			qcom,batt-hot-percentage = <25>;
 			qcom,batt-cold-percentage = <80>;
 			qcom,tchg-mins = <232>;
+			qcom,resume-soc = <99>;
 			qcom,chg-vadc = <&pm8916_vadc>;
 			qcom,chg-adc_tm = <&pm8916_adc_tm>;
 
@@ -208,32 +176,34 @@
 
 			qcom,chgr@1000 {
 				reg = <0x1000 0x100>;
-				interrupts =	<0x0 0x10 0x7>,
-						<0x0 0x10 0x6>,
-						<0x0 0x10 0x5>,
-						<0x0 0x10 0x0>;
-				interrupt-names =	"chg-done",
-							"chg-failed",
-							"fast-chg-on",
-							"vbat-det-lo";
+				interrupts =
+					<0x0 0x10 0x7 IRQ_TYPE_EDGE_RISING>,
+					<0x0 0x10 0x6 IRQ_TYPE_EDGE_RISING>,
+					<0x0 0x10 0x5 IRQ_TYPE_EDGE_BOTH>,
+					<0x0 0x10 0x0 IRQ_TYPE_EDGE_FALLING>;
+				interrupt-names = "chg-done",
+						  "chg-failed",
+						  "fast-chg-on",
+						  "vbat-det-lo";
 			};
 
 			qcom,bat-if@1200 {
 				reg = <0x1200 0x100>;
-				interrupts =	<0x0 0x12 0x1>,
-						<0x0 0x12 0x0>;
-				interrupt-names =	"bat-temp-ok",
-							"batt-pres";
+				interrupts = <0x0 0x12 0x1 IRQ_TYPE_EDGE_BOTH>,
+					     <0x0 0x12 0x0 IRQ_TYPE_EDGE_BOTH>;
+				interrupt-names = "bat-temp-ok",
+						  "batt-pres";
 			};
 
 			qcom,usb-chgpth@1300 {
 				reg = <0x1300 0x100>;
-				interrupts =	<0 0x13 0x4>,
-						<0 0x13 0x2>,
-						<0 0x13 0x1>;
-				interrupt-names =	"usb-over-temp",
-							"chg-gone",
-							"usbin-valid";
+				interrupts =
+					<0 0x13 0x4 IRQ_TYPE_EDGE_BOTH>,
+					<0 0x13 0x2 IRQ_TYPE_EDGE_RISING>,
+					<0 0x13 0x1 IRQ_TYPE_EDGE_BOTH>;
+				interrupt-names = "usb-over-temp",
+						  "chg-gone",
+						  "usbin-valid";
 			};
 
 			qcom,chg-misc@1600 {
@@ -242,6 +212,7 @@
 		};
 
 		pm8916_bms: qcom,vmbms {
+			compatible = "qcom,qpnp-vm-bms";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			status = "disabled";
@@ -266,7 +237,6 @@
 			qcom,force-s3-on-suspend;
 			qcom,force-s2-in-charging;
 			qcom,report-charger-eoc;
-			qcom,resume-soc = <99>;
 
 			qcom,batt-pres-status@1208 {
 				reg = <0x1208 0x1>;
@@ -278,12 +248,12 @@
 
 			qcom,vm-bms@4000 {
 				reg = <0x4000 0x100>;
-				interrupts =	<0x0 0x40 0x0>,
-						<0x0 0x40 0x1>,
-						<0x0 0x40 0x2>,
-						<0x0 0x40 0x3>,
-						<0x0 0x40 0x4>,
-						<0x0 0x40 0x5>;
+				interrupts = <0x0 0x40 0x0 IRQ_TYPE_NONE>,
+					     <0x0 0x40 0x1 IRQ_TYPE_NONE>,
+					     <0x0 0x40 0x2 IRQ_TYPE_NONE>,
+					     <0x0 0x40 0x3 IRQ_TYPE_NONE>,
+					     <0x0 0x40 0x4 IRQ_TYPE_NONE>,
+					     <0x0 0x40 0x5 IRQ_TYPE_NONE>;
 
 				interrupt-names = "leave_cv",
 						  "enter_cv",
@@ -295,192 +265,24 @@
 		};
 
 		pm8916_leds: qcom,leds@a100 {
+			compatible = "qcom,leds-qpnp";
 			reg = <0xa100 0x100>;
 			label = "mpp";
 		};
 	};
 
-	qcom,pm8916@1 {
-		reg = <0x1>;
-		#address-cells = <1>;
-		#size-cells = <1>;
-
-		regulator@1400 {
-			regulator-name = "8916_s1";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			reg = <0x1700 0x300>;
-			status = "disabled";
-
-			qcom,ctl@1700 {
-				reg = <0x1700 0x100>;
-			};
-
-			qcom,ps@1800 {
-				reg = <0x1800 0x100>;
-			};
-
-			qcom,freq@1900 {
-				reg = <0x1900 0x100>;
-			};
-		};
-
-		regulator@1a00 {
-			regulator-name = "8916_s3";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			reg = <0x1a00 0x300>;
-			status = "disabled";
-
-			qcom,ctl@1a00 {
-				reg = <0x1a00 0x100>;
-			};
-
-			qcom,ps@1b00 {
-				reg = <0x1b00 0x100>;
-			};
-
-			qcom,freq@1c00 {
-				reg = <0x1c00 0x100>;
-			};
-		};
-
-		regulator@1d00 {
-			regulator-name = "8916_s4";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			reg = <0x1d00 0x300>;
-			status = "disabled";
-
-			qcom,ctl@1d00 {
-				reg = <0x1d00 0x100>;
-			};
-
-			qcom,ps@1e00 {
-				reg = <0x1e00 0x100>;
-			};
-
-			qcom,freq@1f00 {
-				reg = <0x1f00 0x100>;
-			};
-
-		};
-
-		regulator@4000 {
-			regulator-name = "8916_l1";
-			reg = <0x4000 0x100>;
-			status = "disabled";
-		};
-
-		regulator@4100 {
-			regulator-name = "8916_l2";
-			reg = <0x4100 0x100>;
-			status = "disabled";
-		};
-
-		regulator@4200 {
-			regulator-name = "8916_l3";
-			reg = <0x4200 0x100>;
-			status = "disabled";
-		};
-
-		regulator@4300 {
-			regulator-name = "8916_l4";
-			reg = <0x4300 0x100>;
-			status = "disabled";
-		};
-
-		regulator@4400 {
-			regulator-name = "8916_l5";
-			reg = <0x4400 0x100>;
-			status = "disabled";
-		};
-
-		regulator@4500 {
-			regulator-name = "8916_l6";
-			reg = <0x4500 0x100>;
-			status = "disabled";
-		};
-
-		regulator@4600 {
-			regulator-name = "8916_l7";
-			reg = <0x4600 0x100>;
-			status = "disabled";
-		};
-
-		regulator@4700 {
-			regulator-name = "8916_l8";
-			reg = <0x4700 0x100>;
-			status = "disabled";
-		};
-
-		regulator@4800 {
-			regulator-name = "8916_l9";
-			reg = <0x4800 0x100>;
-			status = "disabled";
-		};
-
-		regulator@4900 {
-			regulator-name = "8916_l10";
-			reg = <0x4900 0x100>;
-			status = "disabled";
-		};
-
-		regulator@4a00 {
-			regulator-name = "8916_l11";
-			reg = <0x4a00 0x100>;
-			status = "disabled";
-		};
-
-		regulator@4b00 {
-			regulator-name = "8916_l12";
-			reg = <0x4b00 0x100>;
-			status = "disabled";
-		};
-
-		regulator@4c00 {
-			regulator-name = "8916_l13";
-			reg = <0x4c00 0x100>;
-			status = "disabled";
-		};
-
-		regulator@4d00 {
-			regulator-name = "8916_l14";
-			reg = <0x4d00 0x100>;
-			status = "disabled";
-		};
-
-		regulator@4e00 {
-			regulator-name = "8916_l15";
-			reg = <0x4e00 0x100>;
-			status = "disabled";
-		};
-
-		regulator@4f00 {
-			regulator-name = "8916_l16";
-			reg = <0x4f00 0x100>;
-			status = "disabled";
-		};
-
-		regulator@5000 {
-			regulator-name = "8916_l17";
-			reg = <0x5000 0x100>;
-			status = "disabled";
-		};
-
-		regulator@5100 {
-			regulator-name = "8916_l18";
-			reg = <0x5100 0x100>;
-			status = "disabled";
-		};
+	pm8916_1: pm8916@1 {
+		compatible = "qcom,pm8916", "qcom,spmi-pmic";
+		reg = <1 SPMI_USID>;
+		#address-cells = <2>;
+		#size-cells = <0>;
 
 		pm8916_pwm: qcom,pwms@bc00 {
 			compatible = "qcom,pwm-lpg";
 			reg = <0xbc00 0x100>;
-			reg-names = "qpnp-lpg-channel-base";
-			qcom,channel-id = <0>;
-			qcom,supported-sizes = <6>, <9>;
+			reg-names = "lpg-base";
 			#pwm-cells = <2>;
+			qcom,num-lpg-channels = <1>;
 		};
 
 		pm8916_vib: qcom,vibrator@c000 {
@@ -491,16 +293,17 @@
 		};
 
 		pm8916_tombak_dig: msm8x16_wcd_codec@f000 {
+			compatible = "qcom,msm8x16_wcd_codec";
 			reg = <0xf000 0x100>;
 			interrupt-parent = <&spmi_bus>;
-			interrupts = <0x1 0xf0 0x0>,
-				     <0x1 0xf0 0x1>,
-				     <0x1 0xf0 0x2>,
-				     <0x1 0xf0 0x3>,
-				     <0x1 0xf0 0x4>,
-				     <0x1 0xf0 0x5>,
-				     <0x1 0xf0 0x6>,
-				     <0x1 0xf0 0x7>;
+			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>;
 			interrupt-names = "spk_cnp_int",
 					  "spk_clip_int",
 					  "spk_ocp_int",
@@ -538,17 +341,19 @@
 						   "cdc-vdda-cp";
 
 			qcom,cdc-on-demand-supplies = "cdc-vdd-mic-bias";
+			qcom,subsys-name = "modem";
 		};
 
 		pm8916_tombak_analog: msm8x16_wcd_codec@f100 {
+			compatible = "qcom,msm8x16_wcd_codec";
 			reg = <0xf100 0x100>;
 			interrupt-parent = <&spmi_bus>;
-			interrupts = <0x1 0xf1 0x0>,
-				     <0x1 0xf1 0x1>,
-				     <0x1 0xf1 0x2>,
-				     <0x1 0xf1 0x3>,
-				     <0x1 0xf1 0x4>,
-				     <0x1 0xf1 0x5>;
+			interrupts = <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 = "ear_ocp_int",
 					  "hphr_ocp_int",
 					  "hphl_ocp_det",
@@ -556,18 +361,5 @@
 					  "hphr_cnp_int",
 					  "hphl_cnp_int";
 		};
-
-		pm8916_bcm: qpnp-buck-current-monitor@1800 {
-			reg = <0x1800 0x100>;
-			interrupts = <1 0x18 0>, <1 0x18 1>;
-			interrupt-names = "iwarning", "icritical";
-			qcom,enable-current-monitor;
-			qcom,icrit-init-threshold-pc = <90>;
-			qcom,iwarn-init-threshold-pc = <70>;
-			qcom,icrit-polling-delay-msec = <1000>;
-			qcom,iwarn-polling-delay-msec = <2000>;
-
-			status = "disabled";
-		};
 	};
 };
diff --git a/qcom/pm8953.dtsi b/qcom/pm8953.dtsi
index d81ac71..05a07ec 100644
--- a/qcom/pm8953.dtsi
+++ b/qcom/pm8953.dtsi
@@ -283,21 +283,8 @@
 		};
 
 		pm8953_rtc: qcom,pm8953_rtc {
-			spmi-dev-container;
-			compatible = "qcom,qpnp-rtc";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			qcom,qpnp-rtc-write = <0>;
-			qcom,qpnp-rtc-alarm-pwrup = <0>;
-
-			qcom,pm8953_rtc_rw@6000 {
-				reg = <0x6000 0x100>;
-			};
-
-			qcom,pm8953_rtc_alarm@6100 {
-				reg = <0x6100 0x100>;
-				interrupts = <0x0 0x61 0x1 IRQ_TYPE_NONE>;
-			};
+			compatible = "qcom,pm8916-rtc";
+			interrupts = <0x0 0x61 0x1 IRQ_TYPE_NONE>;
 		};
 
 		pm8953_typec: qcom,pm8953_typec@bf00 {
@@ -333,6 +320,7 @@
 			reg = <0xbc00 0x100>;
 			reg-names = "lpg-base";
 			#pwm-cells = <2>;
+			qcom,num-lpg-channels = <1>;
 		};
 	};
 };
diff --git a/qcom/qm215-audio.dtsi b/qcom/qm215-audio.dtsi
index 0585926..ce76e90 100644
--- a/qcom/qm215-audio.dtsi
+++ b/qcom/qm215-audio.dtsi
@@ -5,14 +5,8 @@
 	qcom,smmu-sid-mask = /bits/ 64 <0xf>;
 };
 
-&soc {
-	qcom,msm-audio-apr {
-		compatible = "qcom,msm-audio-apr";
-		msm_audio_apr_dummy {
-			compatible = "qcom,msm-audio-apr-dummy";
-		};
-	};
 
+&soc {
 	qcom,avtimer@c0a300c {
 		compatible = "qcom,avtimer";
 		reg = <0x0c0a300c 0x4>,
@@ -21,6 +15,13 @@
 		qcom,clk-div = <27>;
 	};
 
+	audio_apr: qcom,msm-audio-apr {
+		compatible = "qcom,msm-audio-apr";
+		q6core: q6core {
+			compatible = "qcom,q6core-audio";
+		};
+	};
+
 	int_codec: sound {
 		status = "okay";
 		compatible = "qcom,msm8952-audio-codec";
@@ -76,8 +77,6 @@
 			<&dai_mi2s0>, <&dai_mi2s1>,
 			<&dai_mi2s2>, <&dai_mi2s3>,
 			<&dai_mi2s4>, <&dai_mi2s5>,
-			<&sb_0_rx>, <&sb_0_tx>, <&sb_1_rx>, <&sb_1_tx>,
-			<&sb_3_rx>, <&sb_3_tx>, <&sb_4_rx>, <&sb_4_tx>,
 			<&bt_sco_rx>, <&bt_sco_tx>,
 			<&int_fm_rx>, <&int_fm_tx>,
 			<&afe_pcm_rx>, <&afe_pcm_tx>,
@@ -90,10 +89,6 @@
 				"msm-dai-q6-mi2s.0", "msm-dai-q6-mi2s.1",
 				"msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3",
 				"msm-dai-q6-mi2s.4", "msm-dai-q6-mi2s.6",
-				"msm-dai-q6-dev.16384", "msmdai-q6-dev.16385",
-				"msm-dai-q6-dev.16386", "msm-dai-q6-dev.16387",
-				"msm-dai-q6-dev.16390", "msm-dai-q6-dev.16391",
-				"msm-dai-q6-dev.16392", "msm-dai-q6-dev.16393",
 				"msm-dai-q6-dev.12288", "msm-dai-q6-dev.12289",
 				"msm-dai-q6-dev.12292", "msm-dai-q6-dev.12293",
 				"msm-dai-q6-dev.224", "msm-dai-q6-dev.225",
diff --git a/qcom/qm215-camera.dtsi b/qcom/qm215-camera.dtsi
index aad0017..9169b3b 100644
--- a/qcom/qm215-camera.dtsi
+++ b/qcom/qm215-camera.dtsi
@@ -15,7 +15,7 @@
 		reg = <0x1b34000 0x1000>,
 			<0x1b00030 0x4>;
 		reg-names = "csiphy", "csiphy_clk_mux";
-		interrupts = <0 78 0>;
+		interrupts = <0 78 IRQ_TYPE_LEVEL_HIGH>;
 		interrupt-names = "csiphy";
 		clocks = <&gcc GCC_CAMSS_TOP_AHB_CLK>,
 			<&gcc GCC_CAMSS_ISPIF_AHB_CLK>,
@@ -38,7 +38,7 @@
 		reg = <0x1b35000 0x1000>,
 			<0x1b00038 0x4>;
 		reg-names = "csiphy", "csiphy_clk_mux";
-		interrupts = <0 79 0>;
+		interrupts = <0 79 IRQ_TYPE_LEVEL_HIGH>;
 		interrupt-names = "csiphy";
 		clocks = <&gcc GCC_CAMSS_TOP_AHB_CLK>,
 			<&gcc GCC_CAMSS_ISPIF_AHB_CLK>,
@@ -60,7 +60,7 @@
 		compatible = "qcom,csid-v3.4.3", "qcom,csid";
 		reg = <0x1b30000 0x400>;
 		reg-names = "csid";
-		interrupts = <0 51 0>;
+		interrupts = <0 51 IRQ_TYPE_LEVEL_HIGH>;
 		interrupt-names = "csid";
 		qcom,csi-vdd-voltage = <1088000>;
 		qcom,mipi-csi-vdd-supply = <&pm8916_l2>;
@@ -304,25 +304,22 @@
 			compatible = "qcom,msm-cam-smmu-cb";
 			iommus = <&apps_iommu 0x400 0x00>,
 				<&apps_iommu 0x2400 0x00>;
+			qcom,iommu-dma-addr-pool = <0x10000000 0x70000000>;
 			label = "vfe";
 			qcom,scratch-buf-support;
 		};
 
-		msm_cam_smmu_cb2: msm_cam_smmu_cb2 {
-			compatible = "qcom,msm-cam-smmu-cb";
-			label = "vfe_secure";
-			qcom,secure-context;
-		};
-
 		msm_cam_smmu_cb3: msm_cam_smmu_cb3 {
 			compatible = "qcom,msm-cam-smmu-cb";
 			iommus = <&apps_iommu 0x1c00 0x00>;
+			qcom,iommu-dma-addr-pool = <0x00020000 0x78000000>;
 			label = "cpp";
 		};
 
 		msm_cam_smmu_cb4: msm_cam_smmu_cb4 {
 			compatible = "qcom,msm-cam-smmu-cb";
 			iommus = <&apps_iommu 0x1800 0x00>;
+			qcom,iommu-dma-addr-pool = <0x00020000 0x78000000>;
 			label = "jpeg_enc0";
 		};
 	};
@@ -395,6 +392,8 @@
 			<106 512 0 0>;
 		qcom,msm-bus-vector-dyn-vote;
 		qcom,micro-reset;
+		qcom,src-clock-rates = <133333333 160000000 200000000
+			266666667 308570000 320000000 360000000>;
 		qcom,cpp-fw-payload-info {
 			qcom,stripe-base = <156>;
 			qcom,plane-base = <141>;
diff --git a/qcom/qm215-pm8916.dtsi b/qcom/qm215-pm8916.dtsi
index fa08b0f..2433e88 100644
--- a/qcom/qm215-pm8916.dtsi
+++ b/qcom/qm215-pm8916.dtsi
@@ -5,6 +5,7 @@
 
 	/* add rpm-smd node again */
 	rpm_bus: qcom,rpm-smd {
+		interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
 		compatible = "qcom,rpm-smd";
 		rpm-channel-name = "rpm_requests";
 		rpm-channel-type = <15>; /* SMD_APPS_RPM */
@@ -36,10 +37,6 @@
 		};
 	};
 
-	qcom,cpu-clock-8939@b111050 {
-		/delete-property/ vdd-c1-supply;
-	};
-
 	qcom,gcc@1800000 {
 		/delete-property/ vdd_cx-supply;
 		/delete-property/ vdd_hf_dig-supply;
@@ -194,10 +191,6 @@
 	};
 };
 
-&clock_cpu {
-	vdd-c1-supply = <&apc_vreg_corner>;
-};
-
 &gcc {
 	vdd_cx-supply = <&pm8916_s1_level>;
 	vdd_hf_dig-supply = <&pm8916_s1_level_ao>;
diff --git a/qcom/qm215-qrd.dtsi b/qcom/qm215-qrd.dtsi
index ab48a9e..5691040 100644
--- a/qcom/qm215-qrd.dtsi
+++ b/qcom/qm215-qrd.dtsi
@@ -1,4 +1,5 @@
 #include <dt-bindings/clock/qcom,rpmcc.h>
+#include <dt-bindings/iio/qcom,spmi-vadc.h>
 
 &blsp1_uart2 {
 	status = "ok";
@@ -28,6 +29,12 @@
 	status = "ok";
 };
 
+&pm8916_vadc {
+	batt_therm {
+		qcom,scale-fn-type = <ADC_SCALE_BATT_THERM_QRD_215>;
+	};
+};
+
 &soc {
 	gpio_keys {
 		compatible = "gpio-keys";
diff --git a/qcom/qm215.dts b/qcom/qm215.dts
index 7d6f047..e6ddd75 100644
--- a/qcom/qm215.dts
+++ b/qcom/qm215.dts
@@ -2,8 +2,7 @@
 
 #include "qm215.dtsi"
 #include "qm215-pm8916.dtsi"
-/* TBD */
-/* #include "qm215-audio.dtsi" */
+#include "qm215-audio.dtsi"
 
 / {
 	model = "Qualcomm Technologies, Inc. QM215";
diff --git a/qcom/qm215.dtsi b/qcom/qm215.dtsi
index 93e1afc..baddee5 100644
--- a/qcom/qm215.dtsi
+++ b/qcom/qm215.dtsi
@@ -23,10 +23,6 @@
 	};
 };
 
-&rpmcc {
-	compatible = "qcom,rpmcc-qm215";
-};
-
 &gcc {
 	compatible = "qcom,gcc-qm215", "syscon";
 };
@@ -35,6 +31,16 @@
 	compatible = "qcom,qm215-debugcc";
 };
 
+&msm_cpufreq {
+	/delete-property/qcom,cpufreq-table;
+	qcom,cpufreq-table =
+	 <  960000 >,
+	 < 1094400 >,
+	 < 1209600 >,
+	 < 1248000 >,
+	 < 1305600 >;
+};
+
 /* GPU overrides */
 &msm_gpu {
 
diff --git a/qcom/qrb5165.dtsi b/qcom/qrb5165.dtsi
index 3cfa38c..e2089e0 100644
--- a/qcom/qrb5165.dtsi
+++ b/qcom/qrb5165.dtsi
@@ -8,3 +8,761 @@
 };
 
 #include "kona-v2.1-gpu.dtsi"
+
+&soc {
+	qcom-thermal-qfprom {
+		compatible = "qcom,thermal-qfprom-device";
+		nvmem-cells = <&thermal_speed_bin>;
+		nvmem-cell-names = "thermal_speed_bin";
+		qcom,thermal-qfprom-bit-values = <0x1>;
+		qcom,thermal-zone-enable-list = "gpuss-max-iot-step",
+						"cpu-0-0-iot-step",
+						"cpu-0-1-iot-step",
+						"cpu-0-2-iot-step",
+						"cpu-0-3-iot-step",
+						"cpu-1-0-iot-step",
+						"cpu-1-1-iot-step",
+						"cpu-1-2-iot-step",
+						"cpu-1-3-iot-step",
+						"cpu-1-4-iot-step",
+						"cpu-1-5-iot-step",
+						"cpu-1-6-iot-step",
+						"cpu-1-7-iot-step",
+						"cwlan-iot-step",
+						"video-iot-step",
+						"ddr-iot-step",
+						"q6-hvx-iot-step",
+						"camera-iot-step",
+						"cmpss-iot-step",
+						"npu-iot-step";
+		qcom,thermal-zone-disable-list = "gpuss-max-step",
+						"cpu-0-0-step",
+						"cpu-0-1-step",
+						"cpu-0-2-step",
+						"cpu-0-3-step",
+						"cpu-1-0-step",
+						"cpu-1-1-step",
+						"cpu-1-2-step",
+						"cpu-1-3-step",
+						"cpu-1-4-step",
+						"cpu-1-5-step",
+						"cpu-1-6-step",
+						"cpu-1-7-step",
+						"cwlan-step",
+						"video-step",
+						"ddr-step",
+						"q6-hvx-step",
+						"camera-step",
+						"cmpss-step",
+						"npu-step";
+	};
+};
+
+&thermal_zones {
+	gpuss-max-iot-step {
+		polling-delay-passive = <10>;
+		polling-delay = <100>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+
+		trips {
+			gpu_iot_trip0: gpu-trip0 {
+				temperature = <110000>;
+				hysteresis = <0>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			gpu_cdev {
+				trip = <&gpu_iot_trip0>;
+				cooling-device = <&msm_gpu THERMAL_NO_LIMIT
+							THERMAL_NO_LIMIT>;
+			};
+		};
+	};
+
+	pop-mem-step {
+		status = "disabled";
+	};
+
+	cpu-0-0-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-governor = "step_wise";
+		thermal-sensors = <&tsens0 1>;
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			cpu00_iot_config: cpu00-config {
+				temperature = <122000>;
+				hysteresis = <10000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cpu00_cdev {
+				trip = <&cpu00_iot_config>;
+				cooling-device = <&cpu0_isolate 1 1>;
+			};
+		};
+	};
+
+	cpu-0-1-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-governor = "step_wise";
+		thermal-sensors = <&tsens0 2>;
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			cpu01_iot_config: cpu01-config {
+				temperature = <122000>;
+				hysteresis = <10000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cpu01_cdev {
+				trip = <&cpu01_iot_config>;
+				cooling-device = <&cpu1_isolate 1 1>;
+			};
+		};
+	};
+
+	cpu-0-2-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-governor = "step_wise";
+		thermal-sensors = <&tsens0 3>;
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			cpu02_iot_config: cpu02-config {
+				temperature = <122000>;
+				hysteresis = <10000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cpu02_cdev {
+				trip = <&cpu02_iot_config>;
+				cooling-device = <&cpu2_isolate 1 1>;
+			};
+		};
+	};
+
+	cpu-0-3-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens0 4>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			cpu03_iot_config: cpu03-config {
+				temperature = <122000>;
+				hysteresis = <10000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cpu03_cdev {
+				trip = <&cpu03_iot_config>;
+				cooling-device = <&cpu3_isolate 1 1>;
+			};
+		};
+	};
+
+	cpu-1-0-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens0 7>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			cpufreq_10_iot_config: cpufreq-10-config {
+				temperature = <75000>;
+				hysteresis = <5000>;
+				type = "passive";
+			};
+
+			cpu10_iot_config: cpu10-config {
+				temperature = <122000>;
+				hysteresis = <10000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cpufreq_cdev {
+				trip = <&cpufreq_10_iot_config>;
+				cooling-device = <&cpu7_notify 1 1>;
+			};
+
+			cpu10_cdev {
+				trip = <&cpu10_iot_config>;
+				cooling-device = <&cpu4_isolate 1 1>;
+			};
+		};
+	};
+
+	cpu-1-1-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens0 8>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			cpufreq_11_iot_config: cpufreq-11-config {
+				temperature = <75000>;
+				hysteresis = <5000>;
+				type = "passive";
+			};
+
+			cpu11_iot_config: cpu11-config {
+				temperature = <122000>;
+				hysteresis = <10000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cpufreq_cdev {
+				trip = <&cpufreq_11_iot_config>;
+				cooling-device = <&cpu7_notify 1 1>;
+			};
+
+			cpu11_cdev {
+				trip = <&cpu11_iot_config>;
+				cooling-device = <&cpu5_isolate 1 1>;
+			};
+		};
+	};
+
+	cpu-1-2-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens0 9>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			cpufreq_12_iot_config: cpufreq-12-config {
+				temperature = <75000>;
+				hysteresis = <5000>;
+				type = "passive";
+			};
+
+			cpu12_iot_config: cpu12-config {
+				temperature = <122000>;
+				hysteresis = <10000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cpufreq_cdev {
+				trip = <&cpufreq_12_iot_config>;
+				cooling-device = <&cpu7_notify 1 1>;
+			};
+
+			cpu12_cdev {
+				trip = <&cpu12_iot_config>;
+				cooling-device = <&cpu6_isolate 1 1>;
+			};
+		};
+	};
+
+	cpu-1-3-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens0 10>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			cpufreq_13_iot_config: cpufreq-13-config {
+				temperature = <75000>;
+				hysteresis = <5000>;
+				type = "passive";
+			};
+
+			cpu13_iot_config: cpu13-config {
+				temperature = <122000>;
+				hysteresis = <10000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cpufreq_cdev {
+				trip = <&cpufreq_13_iot_config>;
+				cooling-device = <&cpu7_notify 1 1>;
+			};
+
+			cpu13_cdev {
+				trip = <&cpu13_iot_config>;
+				cooling-device = <&cpu7_isolate 1 1>;
+			};
+		};
+	};
+
+	cpu-1-4-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens0 11>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			cpufreq_14_iot_config: cpufreq-14-config {
+				temperature = <75000>;
+				hysteresis = <5000>;
+				type = "passive";
+			};
+
+			cpu14_iot_config: cpu14-config {
+				temperature = <122000>;
+				hysteresis = <10000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cpufreq_cdev {
+				trip = <&cpufreq_14_iot_config>;
+				cooling-device = <&cpu7_notify 1 1>;
+			};
+
+			cpu14_cdev {
+				trip = <&cpu14_iot_config>;
+				cooling-device = <&cpu4_isolate 1 1>;
+			};
+		};
+	};
+
+	cpu-1-5-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens0 12>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			cpufreq_15_iot_config: cpufreq-15-config {
+				temperature = <75000>;
+				hysteresis = <5000>;
+				type = "passive";
+			};
+
+			cpu15_iot_config: cpu15-config {
+				temperature = <122000>;
+				hysteresis = <10000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cpufreq_cdev {
+				trip = <&cpufreq_15_iot_config>;
+				cooling-device = <&cpu7_notify 1 1>;
+			};
+
+			cpu15_cdev {
+				trip = <&cpu15_iot_config>;
+				cooling-device = <&cpu5_isolate 1 1>;
+			};
+		};
+	};
+
+	cpu-1-6-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens0 13>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			cpufreq_16_iot_config: cpufreq-16-config {
+				temperature = <75000>;
+				hysteresis = <5000>;
+				type = "passive";
+			};
+
+			cpu16_iot_config: cpu16-config {
+				temperature = <122000>;
+				hysteresis = <10000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cpufreq_cdev {
+				trip = <&cpufreq_16_iot_config>;
+				cooling-device = <&cpu7_notify 1 1>;
+			};
+
+			cpu16_cdev {
+				trip = <&cpu16_iot_config>;
+				cooling-device = <&cpu6_isolate 1 1>;
+			};
+		};
+	};
+
+	cpu-1-7-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens0 14>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			cpufreq_17_iot_config: cpufreq-17-config {
+				temperature = <75000>;
+				hysteresis = <5000>;
+				type = "passive";
+			};
+
+			cpu17_iot_config: cpu17-config {
+				temperature = <122000>;
+				hysteresis = <10000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cpufreq_cdev {
+				trip = <&cpufreq_17_iot_config>;
+				cooling-device = <&cpu7_notify 1 1>;
+			};
+
+			cpu17_cdev {
+				trip = <&cpu17_iot_config>;
+				cooling-device = <&cpu7_isolate 1 1>;
+			};
+		};
+	};
+
+	cwlan-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens1 1>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			cwlan_iot_trip0: cwlan-trip0 {
+				temperature = <120000>;
+				hysteresis = <5000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cdsp-cdev {
+				trip = <&cwlan_iot_trip0>;
+				cooling-device = <&msm_cdsp_rm 3 3>;
+			};
+
+			gpu-cdev {
+				trip = <&cwlan_iot_trip0>;
+				cooling-device = <&msm_gpu (THERMAL_MAX_LIMIT-1)
+							(THERMAL_MAX_LIMIT-1)>;
+			};
+
+			modem-pa-cdev {
+				trip = <&cwlan_iot_trip0>;
+				cooling-device = <&modem_pa 3 3>;
+			};
+
+			modem-tj-cdev {
+				trip = <&cwlan_iot_trip0>;
+				cooling-device = <&modem_tj 3 3>;
+			};
+
+			npu_cdev {
+				trip = <&cwlan_iot_trip0>;
+				cooling-device = <&msm_npu (THERMAL_MAX_LIMIT-3)
+							(THERMAL_MAX_LIMIT-3)>;
+			};
+		};
+	};
+
+	video-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens1 2>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			video_iot_trip0: video-trip0 {
+				temperature = <120000>;
+				hysteresis = <5000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cdsp-cdev {
+				trip = <&video_iot_trip0>;
+				cooling-device = <&msm_cdsp_rm 3 3>;
+			};
+
+			gpu-cdev {
+				trip = <&video_iot_trip0>;
+				cooling-device = <&msm_gpu (THERMAL_MAX_LIMIT-1)
+							(THERMAL_MAX_LIMIT-1)>;
+			};
+
+			modem-pa-cdev {
+				trip = <&video_iot_trip0>;
+				cooling-device = <&modem_pa 3 3>;
+			};
+
+			modem-tj-cdev {
+				trip = <&video_iot_trip0>;
+				cooling-device = <&modem_tj 3 3>;
+			};
+
+			npu_cdev {
+				trip = <&video_iot_trip0>;
+				cooling-device = <&msm_npu (THERMAL_MAX_LIMIT-3)
+							(THERMAL_MAX_LIMIT-3)>;
+			};
+		};
+	};
+
+	ddr-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens1 3>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			ddr_iot_trip0: ddr-trip0 {
+				temperature = <120000>;
+				hysteresis = <5000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cdsp-cdev {
+				trip = <&ddr_iot_trip0>;
+				cooling-device = <&msm_cdsp_rm 3 3>;
+			};
+
+			gpu-cdev {
+				trip = <&ddr_iot_trip0>;
+				cooling-device = <&msm_gpu (THERMAL_MAX_LIMIT-1)
+							(THERMAL_MAX_LIMIT-1)>;
+			};
+
+			modem-pa-cdev {
+				trip = <&ddr_iot_trip0>;
+				cooling-device = <&modem_pa 3 3>;
+			};
+
+			modem-tj-cdev {
+				trip = <&ddr_iot_trip0>;
+				cooling-device = <&modem_tj 3 3>;
+			};
+
+			npu_cdev {
+				trip = <&ddr_iot_trip0>;
+				cooling-device = <&msm_npu (THERMAL_MAX_LIMIT-3)
+							(THERMAL_MAX_LIMIT-3)>;
+			};
+		};
+	};
+
+	q6-hvx-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens1 4>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			q6_hvx_iot_trip0: q6-hvx-trip0 {
+				temperature = <120000>;
+				hysteresis = <5000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cdsp-cdev {
+				trip = <&q6_hvx_iot_trip0>;
+				cooling-device = <&msm_cdsp_rm 3 3>;
+			};
+
+			gpu-cdev {
+				trip = <&q6_hvx_iot_trip0>;
+				cooling-device = <&msm_gpu (THERMAL_MAX_LIMIT-1)
+							(THERMAL_MAX_LIMIT-1)>;
+			};
+
+			modem-pa-cdev {
+				trip = <&q6_hvx_iot_trip0>;
+				cooling-device = <&modem_pa 3 3>;
+			};
+
+			modem-tj-cdev {
+				trip = <&q6_hvx_iot_trip0>;
+				cooling-device = <&modem_tj 3 3>;
+			};
+
+			npu_cdev {
+				trip = <&q6_hvx_iot_trip0>;
+				cooling-device = <&msm_npu (THERMAL_MAX_LIMIT-3)
+							(THERMAL_MAX_LIMIT-3)>;
+			};
+		};
+	};
+
+	camera-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens1 5>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			camera_iot_trip0: camera-trip0 {
+				temperature = <120000>;
+				hysteresis = <5000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cdsp-cdev {
+				trip = <&camera_iot_trip0>;
+				cooling-device = <&msm_cdsp_rm 3 3>;
+			};
+
+			gpu-cdev {
+				trip = <&camera_iot_trip0>;
+				cooling-device = <&msm_gpu (THERMAL_MAX_LIMIT-1)
+							(THERMAL_MAX_LIMIT-1)>;
+			};
+
+			modem-pa-cdev {
+				trip = <&camera_iot_trip0>;
+				cooling-device = <&modem_pa 3 3>;
+			};
+
+			modem-tj-cdev {
+				trip = <&camera_iot_trip0>;
+				cooling-device = <&modem_tj 3 3>;
+			};
+
+			npu_cdev {
+				trip = <&camera_iot_trip0>;
+				cooling-device = <&msm_npu (THERMAL_MAX_LIMIT-3)
+							(THERMAL_MAX_LIMIT-3)>;
+			};
+		};
+	};
+
+	cmpss-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens1 6>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			cmpss_iot_trip0: cmpss-trip0 {
+				temperature = <120000>;
+				hysteresis = <5000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cdsp-cdev {
+				trip = <&cmpss_iot_trip0>;
+				cooling-device = <&msm_cdsp_rm 3 3>;
+			};
+
+			gpu-cdev {
+				trip = <&cmpss_iot_trip0>;
+				cooling-device = <&msm_gpu (THERMAL_MAX_LIMIT-1)
+							(THERMAL_MAX_LIMIT-1)>;
+			};
+
+			modem-pa-cdev {
+				trip = <&cmpss_iot_trip0>;
+				cooling-device = <&modem_pa 3 3>;
+			};
+
+			modem-tj-cdev {
+				trip = <&cmpss_iot_trip0>;
+				cooling-device = <&modem_tj 3 3>;
+			};
+
+			npu_cdev {
+				trip = <&cmpss_iot_trip0>;
+				cooling-device = <&msm_npu (THERMAL_MAX_LIMIT-3)
+							(THERMAL_MAX_LIMIT-3)>;
+			};
+		};
+	};
+
+	npu-iot-step {
+		polling-delay-passive = <0>;
+		polling-delay = <0>;
+		thermal-sensors = <&tsens1 7>;
+		thermal-governor = "step_wise";
+		wake-capable-sensor;
+		disable-thermal-zone;
+		trips {
+			npu_iot_trip0: npu-trip0 {
+				temperature = <120000>;
+				hysteresis = <5000>;
+				type = "passive";
+			};
+		};
+
+		cooling-maps {
+			cdsp-cdev {
+				trip = <&npu_iot_trip0>;
+				cooling-device = <&msm_cdsp_rm 3 3>;
+			};
+
+			gpu-cdev {
+				trip = <&npu_iot_trip0>;
+				cooling-device = <&msm_gpu (THERMAL_MAX_LIMIT-1)
+							(THERMAL_MAX_LIMIT-1)>;
+			};
+
+			modem-pa-cdev {
+				trip = <&npu_iot_trip0>;
+				cooling-device = <&modem_pa 3 3>;
+			};
+
+			modem-tj-cdev {
+				trip = <&npu_iot_trip0>;
+				cooling-device = <&modem_tj 3 3>;
+			};
+
+			npu_cdev {
+				trip = <&npu_iot_trip0>;
+				cooling-device = <&msm_npu (THERMAL_MAX_LIMIT-3)
+							(THERMAL_MAX_LIMIT-3)>;
+			};
+		};
+	};
+};
diff --git a/qcom/sdm429.dtsi b/qcom/sdm429.dtsi
index 6c42cd1..a7b859f 100644
--- a/qcom/sdm429.dtsi
+++ b/qcom/sdm429.dtsi
@@ -105,13 +105,7 @@
 };
 
 &gcc {
-	compatible = "qcom,gcc-sdm429";
-	reg = <0x1800000 0x80000>,
-		<0xb016000 0x00040>;
-	reg-names = "cc_base", "apcs_c1_base";
 	vdd_cx-supply = <&pm8953_s2_level>;
-	vdd_hf_dig-supply = <&pm8953_s2_level_ao>;
-	vdd_hf_pll-supply = <&pm8953_l7_ao>;
 };
 
 &debugcc {
@@ -218,13 +212,11 @@
 };
 
 &gcc_mdss {
-	compatible = "qcom,gcc-mdss-sdm429";
-	/* TODO
-	 * clocks = <&mdss_dsi0_pll PCLK_SRC_MUX_0_CLK>,
-	 * <&mdss_dsi0_pll BYTE_CLK_SRC_0_CLK>,
-	 * <&mdss_dsi1_pll PCLK_SRC_MUX_1_CLK>,
-	 * <&mdss_dsi1_pll BYTE_CLK_SRC_1_CLK>;
-	 */
+	compatible = "qcom,gcc-mdss-sdm439";
+	clocks = <&mdss_dsi0_pll PCLK_SRC_MUX_0_CLK>,
+		<&mdss_dsi0_pll BYTE_CLK_SRC_0_CLK>,
+		<&mdss_dsi1_pll PCLK_SRC_MUX_1_CLK>,
+		<&mdss_dsi1_pll BYTE_CLK_SRC_1_CLK>;
 	clock-names = "pclk0_src", "byte0_src", "pclk1_src",
 		"byte1_src";
 	#clock-cells = <1>;
diff --git a/qcom/sdm439-audio.dtsi b/qcom/sdm439-audio.dtsi
index 3f0e9e2..45af372 100644
--- a/qcom/sdm439-audio.dtsi
+++ b/qcom/sdm439-audio.dtsi
@@ -74,7 +74,7 @@
 };
 
 &pm8953_1 {
-	pmic_analog_codec: analog-codec@f000 {
+	pmic_analog_codec: anlg-cdc@f000 {
 		status = "okay";
 		compatible = "qcom,pmic-analog-codec";
 		reg = <0xf000 0x200>;
diff --git a/qcom/sdm439-camera-sensor-mtp.dtsi b/qcom/sdm439-camera-sensor-mtp.dtsi
index 6e93d68..cb1f4a2 100644
--- a/qcom/sdm439-camera-sensor-mtp.dtsi
+++ b/qcom/sdm439-camera-sensor-mtp.dtsi
@@ -15,6 +15,7 @@
 		qcom,cam-vreg-min-voltage = <2850000>;
 		qcom,cam-vreg-max-voltage = <2850000>;
 		qcom,cam-vreg-op-mode = <80000>;
+		status = "disabled";
 	};
 
 	actuator1: qcom,actuator@1 {
@@ -27,6 +28,7 @@
 		qcom,cam-vreg-min-voltage = <2850000>;
 		qcom,cam-vreg-max-voltage = <2850000>;
 		qcom,cam-vreg-op-mode = <80000>;
+		status = "disabled";
 	};
 
 	eeprom0: qcom,eeprom@0 {
@@ -60,7 +62,7 @@
 		qcom,gpio-req-tbl-label = "CAMIF_MCLK0",
 			"CAM_RESET0",
 			"CAM_VANA";
-		status = "ok";
+		status = "disabled";
 		clocks = <&gcc MCLK0_CLK_SRC>,
 			<&gcc GCC_CAMSS_MCLK0_CLK>;
 		clock-names = "cam_src_clk", "cam_clk";
@@ -140,7 +142,7 @@
 			"sensor_cam_mclk";
 		qcom,cam-power-seq-cfg-val = <1 1 1 1 1 24000000>;
 		qcom,cam-power-seq-delay = <1 1 1 30 30 5>;
-		status = "ok";
+		status = "disabled";
 		clocks = <&gcc MCLK2_CLK_SRC>,
 			<&gcc GCC_CAMSS_MCLK2_CLK>;
 		clock-names = "cam_src_clk", "cam_clk";
@@ -177,7 +179,7 @@
 		qcom,gpio-req-tbl-label = "CAMIF_MCLK2",
 					  "CAM_RESET2",
 					  "CAM_STANDBY2";
-		status = "ok";
+		status = "disabled";
 		clocks = <&gcc MCLK2_CLK_SRC>,
 				<&gcc GCC_CAMSS_MCLK2_CLK>;
 		clock-names = "cam_src_clk", "cam_clk";
diff --git a/qcom/sdm439-camera-sensor-qrd.dtsi b/qcom/sdm439-camera-sensor-qrd.dtsi
index 7883909..1c60c8d 100644
--- a/qcom/sdm439-camera-sensor-qrd.dtsi
+++ b/qcom/sdm439-camera-sensor-qrd.dtsi
@@ -15,6 +15,7 @@
 		qcom,cam-vreg-min-voltage = <2850000>;
 		qcom,cam-vreg-max-voltage = <2850000>;
 		qcom,cam-vreg-op-mode = <80000>;
+		status = "disabled";
 	};
 
 	actuator1: qcom,actuator@1 {
@@ -27,6 +28,7 @@
 		qcom,cam-vreg-min-voltage = <2850000>;
 		qcom,cam-vreg-max-voltage = <2850000>;
 		qcom,cam-vreg-op-mode = <80000>;
+		status = "disabled";
 	};
 
 	eeprom0: qcom,eeprom@0 {
@@ -60,7 +62,7 @@
 		qcom,gpio-req-tbl-label = "CAMIF_MCLK0",
 			"CAM_RESET0",
 			"CAM_VANA";
-		status = "ok";
+		status = "disabled";
 		clocks = <&gcc MCLK0_CLK_SRC>,
 			<&gcc GCC_CAMSS_MCLK0_CLK>;
 		clock-names = "cam_src_clk", "cam_clk";
@@ -141,7 +143,7 @@
 			"sensor_cam_mclk";
 		qcom,cam-power-seq-cfg-val = <1 1 1 1 1 24000000>;
 		qcom,cam-power-seq-delay = <1 1 1 30 30 5>;
-		status = "ok";
+		status = "disabled";
 		clocks = <&gcc MCLK2_CLK_SRC>,
 			<&gcc GCC_CAMSS_MCLK2_CLK>;
 		clock-names = "cam_src_clk", "cam_clk";
diff --git a/qcom/sdm439-mtp.dtsi b/qcom/sdm439-mtp.dtsi
index 6b55c24..1c1ac40 100644
--- a/qcom/sdm439-mtp.dtsi
+++ b/qcom/sdm439-mtp.dtsi
@@ -617,10 +617,24 @@
 		&smb_en_default &pmi632_sense_default &pmi632_ctm_default>;
 	interrupt-parent = <&tlmm>;
 	interrupts = <61 IRQ_TYPE_LEVEL_LOW>;
+	status = "ok";
+	smb1355_charger: qcom,smb1355-charger@1000 {
+		status = "ok";
+		qcom,parallel-mode = <1>;
+		qcom,disable-ctm;
+		qcom,hw-die-temp-mitigation;
+	};
+};
+
+&smb1355_0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&smb_int_default
+		&smb_en_default &pmi632_sense_default &pmi632_ctm_default>;
+	interrupt-parent = <&tlmm>;
+	interrupts = <61 IRQ_TYPE_LEVEL_LOW>;
+	status = "ok";
 	smb1355_charger_0: qcom,smb1355-charger@1000 {
-		status ="ok";
-		/delete-property/ io-channels;
-		/delete-property/ io-channels-names;
+		status = "ok";
 		qcom,parallel-mode = <1>;
 		qcom,disable-ctm;
 		qcom,hw-die-temp-mitigation;
diff --git a/qcom/sdm439-pmi632.dtsi b/qcom/sdm439-pmi632.dtsi
index ab4b1a6..6ddeacf 100644
--- a/qcom/sdm439-pmi632.dtsi
+++ b/qcom/sdm439-pmi632.dtsi
@@ -2,6 +2,17 @@
 
 &pmi632_charger {
 	dpdm-supply = <&usb_otg>;
+	qcom,battery-data = <&mtp_batterydata>;
+	qcom,auto-recharge-soc = <98>;
+	qcom,flash-disable-soc = <10>;
+	qcom,sw-jeita-enable;
+	qcom,step-charging-enable;
+	qcom,hw-die-temp-mitigation;
+	qcom,hw-connector-mitigation;
+	qcom,connector-internal-pull-kohm = <100>;
+	qcom,thermal-mitigation
+	    = <3000000 2500000 2000000 1500000
+		1000000 500000>;
 };
 
 &usb_otg {
@@ -24,10 +35,9 @@
 
 &pmi632_qg {
 	qcom,battery-data = <&mtp_batterydata>;
-};
-
-&pmi632_charger {
-	qcom,battery-data = <&mtp_batterydata>;
+	qcom,qg-iterm-ma = <100>;
+	qcom,hold-soc-while-full;
+	qcom,linearize-soc;
 };
 
 &pmi632_vadc {
diff --git a/qcom/sdm439-qrd.dtsi b/qcom/sdm439-qrd.dtsi
index f2bdd84..b2b1384 100644
--- a/qcom/sdm439-qrd.dtsi
+++ b/qcom/sdm439-qrd.dtsi
@@ -402,10 +402,24 @@
 		&smb_en_default &pmi632_sense_default &pmi632_ctm_default>;
 	interrupt-parent = <&tlmm>;
 	interrupts = <61 IRQ_TYPE_LEVEL_LOW>;
+	status = "ok";
+	smb1355_charger: qcom,smb1355-charger@1000 {
+		status = "ok";
+		qcom,parallel-mode = <1>;
+		qcom,disable-ctm;
+		qcom,hw-die-temp-mitigation;
+	};
+};
+
+&smb1355_0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&smb_int_default
+		&smb_en_default &pmi632_sense_default &pmi632_ctm_default>;
+	interrupt-parent = <&tlmm>;
+	interrupts = <61 IRQ_TYPE_LEVEL_LOW>;
+	status = "ok";
 	smb1355_charger_0: qcom,smb1355-charger@1000 {
-		status ="ok";
-		/delete-property/ io-channels;
-		/delete-property/ io-channels-names;
+		status = "ok";
 		qcom,parallel-mode = <1>;
 		qcom,disable-ctm;
 		qcom,hw-die-temp-mitigation;
diff --git a/qcom/sdm439.dtsi b/qcom/sdm439.dtsi
index bc5ac4c..e740be3 100644
--- a/qcom/sdm439.dtsi
+++ b/qcom/sdm439.dtsi
@@ -2,7 +2,7 @@
 #include "sdm439-pm8953.dtsi"
 #include "sdm439-pmi632.dtsi"
 #include "sdm439-audio.dtsi"
-
+#include <dt-bindings/clock/mdss-12nm-pll-clk.h>
 / {
 	model = "Qualcomm Technologies, Inc. SDM439";
 	compatible = "qcom,sdm439";
@@ -65,8 +65,8 @@
 			 < 1459200 >;
 	};
 
-	/delete-node/ generic-bw-opp-table;
-	 generic_bw_opp_table: generic-bw-opp-table {
+	/delete-node/ ddr-bw-opp-table;
+	 ddr_bw_opp_table: ddr-bw-opp-table {
 		compatible = "operating-points-v2";
 		BW_OPP_ENTRY( 101, 8); /*  769 MB/s */
 		BW_OPP_ENTRY( 211, 8); /* 1611 MB/s */
@@ -84,21 +84,21 @@
 	/delete-node/ qcom,cpu-cpu-ddr-bw;
 	cpu_cpu_ddr_bw: qcom,cpu-cpu-ddr-bw {
 		compatible = "qcom,devbw";
-		governor = "cpufreq";
+		governor = "performance";
 		qcom,src-dst-ports =
 			<MSM_BUS_MASTER_AMPSS_M0 MSM_BUS_SLAVE_EBI_CH0>;
 		qcom,active-only;
-		operating-points-v2 = <&generic_bw_opp_table>;
+		operating-points-v2 = <&ddr_bw_opp_table>;
 	};
 
 	/delete-node/ qcom,cpu0-cpu-ddr-latfloor;
 	cpu0_cpu_ddr_latfloor: qcom,cpu0-cpu-ddr-latfloor {
 		compatible = "qcom,devbw";
-		governor = "cpufreq";
+		governor = "performance";
 		qcom,src-dst-ports =
 			<MSM_BUS_MASTER_AMPSS_M0 MSM_BUS_SLAVE_EBI_CH0>;
 		qcom,active-only;
-		operating-points-v2 = <&generic_bw_opp_table>;
+		operating-points-v2 = <&ddr_bw_opp_table>;
 	};
 
 	/delete-node/ qcom,cci;
@@ -108,7 +108,7 @@
 		/* TODO
 		 * clocks = <&clock_cpu clk_cci_clk>;
 		 */
-		governor = "cpufreq";
+		governor = "performance";
 		freq-tbl-khz =
 			<  400000 >,
 			<  400000 >,
@@ -324,28 +324,15 @@
 };
 
 &gcc {
-	compatible = "qcom,gcc-sdm439";
-	reg = <0x1800000 0x80000>,
-		<0xb016000 0x00040>,
-		<0xb116000 0x00040>,
-		<0x00a6018 0x00004>;
-	reg-names = "cc_base", "apcs_c1_base",
-			"apcs_c0_base", "efuse";
 	vdd_cx-supply = <&pm8953_s2_level>;
-	vdd_sr2_dig-supply = <&pm8953_s2_level_ao>;
-	vdd_sr2_pll-supply = <&pm8953_l7_ao>;
-	vdd_hf_dig-supply = <&pm8953_s2_level_ao>;
-	vdd_hf_pll-supply = <&pm8953_l7_ao>;
 };
 
 &gcc_mdss {
 	compatible = "qcom,gcc-mdss-sdm439";
-	/* TODO
-	 * clocks = <&mdss_dsi0_pll PCLK_SRC_MUX_0_CLK>,
-	 * <&mdss_dsi0_pll BYTE_CLK_SRC_0_CLK>,
-	 * <&mdss_dsi1_pll PCLK_SRC_MUX_1_CLK>,
-	 * <&mdss_dsi1_pll BYTE_CLK_SRC_1_CLK>;
-	 */
+	clocks = <&mdss_dsi0_pll PCLK_SRC_MUX_0_CLK>,
+		<&mdss_dsi0_pll BYTE_CLK_SRC_0_CLK>,
+		<&mdss_dsi1_pll PCLK_SRC_MUX_1_CLK>,
+		<&mdss_dsi1_pll BYTE_CLK_SRC_1_CLK>;
 	clock-names = "pclk0_src", "byte0_src", "pclk1_src",
 		"byte1_src";
 	#clock-cells = <1>;
@@ -380,6 +367,19 @@
 		0x1a96000 0x1a96000 0x300
 		0x1a96400 0x1a96400 0x400
 		0x193e000 0x193e000 0x30>;
+
+	clocks = <&gcc_mdss MDSS_MDP_VOTE_CLK>,
+		<&gcc GCC_MDSS_AHB_CLK>,
+		<&gcc GCC_MDSS_AXI_CLK>,
+		<&mdss_dsi0_pll BYTE_CLK_SRC_0_CLK>,
+		<&mdss_dsi1_pll BYTE_CLK_SRC_1_CLK>,
+		<&mdss_dsi0_pll PCLK_SRC_MUX_0_CLK>,
+		<&mdss_dsi1_pll PCLK_SRC_MUX_1_CLK>;
+
+	clock-names = "mdp_core_clk", "iface_clk", "bus_clk",
+		"ext_byte0_clk", "ext_byte1_clk", "ext_pixel0_clk",
+		"ext_pixel1_clk";
+
 };
 
 &mdss_dsi0 {
@@ -404,20 +404,31 @@
 	/delete-property/ qcom,platform-lane-config;
 };
 
-/* GPU Overrides*/
-&gpubw {
-	/delete-property/qcom,bw-tbl;
-	qcom,bw-tbl =
-		< 0    >, /*  off */
-		<  769 >, /* 1. DDR:100.80 MHz BIMC: 50.40 MHz */
-		< 1611 >, /* 2. DDR:211.20 MHz BIMC: 105.60 MHz */
-		< 2273 >, /* 3. DDR:297.60 MHz BIMC: 148.80 MHz */
-		< 2929 >, /* 4. DDR:384.00 MHz BIMC: 192.00 MHz */
-		< 4248 >, /* 5. DDR:556.80 MHz BIMC: 278.40 MHz */
-		< 5346 >, /* 6. DDR:662.40 MHz BIMC: 331.20 MHz */
-		< 5712 >, /* 7. DDR:748.80 MHz BIMC: 374.40 MHz */
-		< 6150 >, /* 8. DDR:796.80 MHz BIMC: 398.40 MHz */
-		< 7105 >; /* 9. DDR:931.20 MHz BIMC: 465.60 MHz */
+/* GPU Overrides */
+&soc {
+	/delete-node/ gpu-bw-tbl;
+	gpu_bw_tbl: gpu-bw-tbl {
+		compatible = "operating-points-v2";
+		opp-0   { opp-hz = /bits/ 64 < 0 >;     }; /* OFF */
+
+		opp-100 { opp-hz = /bits/ 64 < 769 >;   }; /*  1. 100 MHz */
+
+		opp-211 { opp-hz = /bits/ 64 < 1611 >;  }; /*  2. 211 MHz */
+
+		opp-298 { opp-hz = /bits/ 64 < 2273 >;  }; /*  3. 298 MHz */
+
+		opp-384 { opp-hz = /bits/ 64 < 2929 >;  }; /*  4. 384 MHz */
+
+		opp-557 { opp-hz = /bits/ 64 < 4248 >;  }; /*  5. 557 MHz */
+
+		opp-700 { opp-hz = /bits/ 64 < 5346 >;  }; /*  6. 700 MHz */
+
+		opp-748 { opp-hz = /bits/ 64 < 5712 >;  }; /*  7. 748 MHz */
+
+		opp-806 { opp-hz = /bits/ 64 < 6150 >;  }; /*  8. 806 MHz */
+
+		opp-931 { opp-hz = /bits/ 64 < 7105 >;  }; /*  9. 931 MHz */
+	};
 };
 
 &msm_gpu {
diff --git a/qcom/sdm660-common.dtsi b/qcom/sdm660-common.dtsi
index d6008ef..e38f935 100644
--- a/qcom/sdm660-common.dtsi
+++ b/qcom/sdm660-common.dtsi
@@ -494,6 +494,10 @@
 			snps,is-utmi-l1-suspend;
 			snps,hird-threshold = /bits/ 8 <0x0>;
 			dr_mode = "host";
+			linux,sysdev_is_parent;
+			snps,dis_enblslpm_quirk;
+			snps,dis_u2_susphy_quirk;
+			usb-core-id = <1>;
 		};
 	};
 
diff --git a/qcom/sdm660-mdss.dtsi b/qcom/sdm660-mdss.dtsi
index 931619f..0389edc 100644
--- a/qcom/sdm660-mdss.dtsi
+++ b/qcom/sdm660-mdss.dtsi
@@ -10,6 +10,9 @@
 		interrupts = <0 83 IRQ_TYPE_LEVEL_HIGH>;
 		interrupt-controller;
 		#interrupt-cells = <1>;
+
+		#list-cells = <1>;
+
 		vdd-supply = <&gdsc_mdss>;
 
 		/* Bus Scale Settings */
@@ -580,6 +583,8 @@
 		reg-names = "mdp_phys",
 			"rot_vbif_phys";
 
+		#list-cells = <1>;
+
 		qcom,mdss-rot-mode = <1>;
 		qcom,mdss-highest-bank-bit = <0x1>;
 
@@ -607,6 +612,7 @@
 		interrupt-parent = <&mdss_mdp>;
 		interrupts = <2 0>;
 
+		qcom,mdss-rot-parent = <&mdss_mdp 0>;
 		/* VBIF QoS remapper settings*/
 		qcom,mdss-rot-vbif-qos-setting = <1 1 1 1>;
 		qcom,mdss-rot-xin-id = <14 15>;
diff --git a/qcom/smb1355.dtsi b/qcom/smb1355.dtsi
index a75e19f..f244a0d 100644
--- a/qcom/smb1355.dtsi
+++ b/qcom/smb1355.dtsi
@@ -42,3 +42,46 @@
 		};
 	};
 };
+
+smb1355_0: qcom,smb1355@8 {
+	compatible = "qcom,i2c-pmic";
+	reg = <0x8>;
+	#address-cells = <1>;
+	#size-cells = <0>;
+	interrupt-parent = <&spmi_bus>;
+	interrupts = <0x0 0xd1 0x0 IRQ_TYPE_LEVEL_LOW>;
+	interrupt_names = "smb1355_0";
+	interrupt-controller;
+	#interrupt-cells = <3>;
+	qcom,periph-map = <0x10 0x12 0x13 0x16>;
+	status = "disabled";
+
+	smb1355_revid_0: qcom,revid@100 {
+		compatible = "qcom,qpnp-revid";
+		reg = <0x100 0x100>;
+	};
+
+	smb1355_charger_0: qcom,smb1355-charger@1000 {
+		compatible = "qcom,smb1355";
+		qcom,pmic-revid = <&smb1355_revid_0>;
+		reg = <0x1000 0x700>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+		interrupt-parent = <&smb1355_0>;
+		status = "disabled";
+
+		qcom,chgr@1000 {
+			reg = <0x1000 0x100>;
+			interrupts = <0x10 0x1 IRQ_TYPE_EDGE_RISING>;
+			interrupt-names = "chg-state-change";
+		};
+
+		qcom,chgr-misc@1600 {
+			reg = <0x1600 0x100>;
+			interrupts = <0x16 0x1 IRQ_TYPE_EDGE_RISING>,
+				     <0x16 0x6 IRQ_TYPE_EDGE_RISING>;
+			interrupt-names = "wdog-bark",
+					  "temperature-change";
+		};
+	};
+};