diff --git a/privapp-permissions-qti.xml b/privapp-permissions-qti.xml
index 380b7bddb43f727a11892d7f06e89abb5e813e86..959b1fa9be325a857f773d76a1e60659b2acfada 100755
--- a/privapp-permissions-qti.xml
+++ b/privapp-permissions-qti.xml
@@ -105,4 +105,9 @@ It allows additional grants on top of privapp-permissions-platform.xml
         <permission name="android.permission.READ_BLOCKED_NUMBERS" />
         <permission name="android.permission.VIBRATE" />
     </privapp-permissions>
+
+    <privapp-permissions package="com.skyhook.blp">
+        <permission name="android.permission.INTERACT_ACROSS_USERS"/>
+    </privapp-permissions>
+
 </permissions>
diff --git a/qti_whitelist.xml b/qti_whitelist.xml
index 9e65c642dbbd88128bc07c1b8aab2d9b70a16aea..0d1acdb8efeaf598b7fd23aeaad18242811e6456 100755
--- a/qti_whitelist.xml
+++ b/qti_whitelist.xml
@@ -48,6 +48,7 @@
     <allow-in-power-save package="com.android.email" />
     <allow-in-power-save package="com.qualcomm.qti.callenhancement" />
     <allow-in-power-save package="com.qualcomm.qti.smartassistant" />
+    <allow-in-power-save package="com.skyhook.blp" />
     <!-- These telephony applications need access to non-[System]SDK APIs -->
     <hidden-api-whitelisted-app package="com.qualcomm.uimremoteserver" />
     <hidden-api-whitelisted-app package="com.qualcomm.uimremoteclient" />
diff --git a/rootdir/etc/init.qcom.early_boot.sh b/rootdir/etc/init.qcom.early_boot.sh
index 5e6fd5ddc91478808eb771d97697a9e39683f4cf..3d81d83c2fb16dd53a044c8efb86f071e34010aa 100644
--- a/rootdir/etc/init.qcom.early_boot.sh
+++ b/rootdir/etc/init.qcom.early_boot.sh
@@ -373,11 +373,20 @@ case "$target" in
     "bengal")
         case "$soc_hwid" in
             441)
+                # 441 is for scuba
                 setprop vendor.fastrpc.disable.cdsprpcd.daemon 1
                 setprop vendor.media.target.version 2
                 setprop vendor.gralloc.disable_ubwc 1
+                # 196609 is decimal for 0x30001 to report version 3.1
+                setprop vendor.opengles.version     196609
+                sku_ver=`cat /sys/devices/platform/soc/5a00000.qcom,vidc1/sku_version` 2> /dev/null
+                if [ $sku_ver -eq 1 ]; then
+                    setprop vendor.media.target.version 3
+                fi
                 ;;
             *)
+                # default case is for bengal
+                setprop vendor.opengles.version     196610
                 sku_ver=`cat /sys/devices/platform/soc/5a00000.qcom,vidc/sku_version` 2> /dev/null
                 if [ $sku_ver -eq 1 ]; then
                     setprop vendor.media.target.version 1
diff --git a/rootdir/etc/init.qcom.post_boot.sh b/rootdir/etc/init.qcom.post_boot.sh
index 67c38aa5d047271e9e08eec1385b1677c89531ab..70e9a329b8ef7eed51c27b2bcfbbcef4359270b1 100644
--- a/rootdir/etc/init.qcom.post_boot.sh
+++ b/rootdir/etc/init.qcom.post_boot.sh
@@ -1,6 +1,6 @@
 #! /vendor/bin/sh
 
-# Copyright (c) 2012-2013, 2016-2019, The Linux Foundation. All rights reserved.
+# Copyright (c) 2012-2013, 2016-2020, The Linux Foundation. All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions are met:
@@ -78,7 +78,12 @@ function configure_automotive_sku_parameters() {
     echo 1056000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
     echo 1171200 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq
     echo 1785600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
-
+    echo 902400000  > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq
+    echo 902400000  > /sys/class/devfreq/soc\:qcom,cpu4-cpu-l3-lat/min_freq
+    echo 902400000  > /sys/class/devfreq/soc\:qcom,cpu7-cpu-l3-lat/min_freq
+    echo 1612800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq
+    echo 1612800000 > /sys/class/devfreq/soc\:qcom,cpu4-cpu-l3-lat/max_freq
+    echo 1612800000 > /sys/class/devfreq/soc\:qcom,cpu7-cpu-l3-lat/max_freq
 #read feature id from nvram
 reg_val=`cat /sys/devices/platform/soc/780130.qfprom/qfprom0/nvmem | od -An -t d4`
 feature_id=$(((reg_val >> 20) & 0xFF))
@@ -5431,7 +5436,6 @@ case "$target" in
 	    for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
 	    do
 		echo "bw_hwmon" > $cpubw/governor
-		echo 40 > $cpubw/polling_interval
 		echo "4577 7110 9155 12298 14236 15258" > $cpubw/bw_hwmon/mbps_zones
 		echo 4 > $cpubw/bw_hwmon/sample_ms
 		echo 50 > $cpubw/bw_hwmon/io_percent
@@ -5442,12 +5446,12 @@ case "$target" in
 		echo 250 > $cpubw/bw_hwmon/up_scale
 		echo 1600 > $cpubw/bw_hwmon/idle_mbps
 		echo 14236 > $cpubw/max_freq
+		echo 40 > $cpubw/polling_interval
 	    done
 
 	    for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
 	    do
 		echo "bw_hwmon" > $llccbw/governor
-		echo 40 > $llccbw/polling_interval
 		if [ ${ddr_type:4:2} == $ddr_type4 ]; then
 			echo "1720 2086 2929 3879 5161 5931 6881 7980" > $llccbw/bw_hwmon/mbps_zones
 		elif [ ${ddr_type:4:2} == $ddr_type5 ]; then
@@ -5462,13 +5466,13 @@ case "$target" in
 		echo 250 > $llccbw/bw_hwmon/up_scale
 		echo 1600 > $llccbw/bw_hwmon/idle_mbps
 		echo 6881 > $llccbw/max_freq
+		echo 40 > $llccbw/polling_interval
 	    done
 
 	    for npubw in $device/*npu*-ddr-bw/devfreq/*npu*-ddr-bw
 	    do
 		echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
 		echo "bw_hwmon" > $npubw/governor
-		echo 40 > $npubw/polling_interval
 		if [ ${ddr_type:4:2} == $ddr_type4 ]; then
 			echo "1720 2086 2929 3879 5931 6881 7980" > $npubw/bw_hwmon/mbps_zones
 		elif [ ${ddr_type:4:2} == $ddr_type5 ]; then
@@ -5482,6 +5486,7 @@ case "$target" in
 		echo 0 > $npubw/bw_hwmon/guard_band_mbps
 		echo 250 > $npubw/bw_hwmon/up_scale
 		echo 1600 > $npubw/bw_hwmon/idle_mbps
+		echo 40 > $npubw/polling_interval
 		echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
 	    done
 
@@ -5489,7 +5494,6 @@ case "$target" in
 	    do
 		echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
 		echo "bw_hwmon" > $npullccbw/governor
-		echo 40 > $npullccbw/polling_interval
 		echo "4577 7110 9155 12298 14236 15258" > $npullccbw/bw_hwmon/mbps_zones
 		echo 4 > $npullccbw/bw_hwmon/sample_ms
 		echo 160 > $npullccbw/bw_hwmon/io_percent
@@ -5499,6 +5503,7 @@ case "$target" in
 		echo 0 > $npullccbw/bw_hwmon/guard_band_mbps
 		echo 250 > $npullccbw/bw_hwmon/up_scale
 		echo 1600 > $npullccbw/bw_hwmon/idle_mbps
+		echo 40 > $npullccbw/polling_interval
 		echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
 	    done
 	    #Enable mem_latency governor for L3 scaling
diff --git a/rootdir/etc/init.qcom.usb.sh b/rootdir/etc/init.qcom.usb.sh
index 186c2c5bd2da0def089a7f843ac17a210d53f3fd..0fbf4d18471e5c0c8ec54facf8c0681acfade33c 100644
--- a/rootdir/etc/init.qcom.usb.sh
+++ b/rootdir/etc/init.qcom.usb.sh
@@ -82,7 +82,11 @@ if [ "$(getprop persist.vendor.usb.config)" == "" -a \
 	                  setprop persist.vendor.usb.config diag,serial_cdev,serial_tty,rmnet_ipa,mass_storage,adb
 		      ;;
 	              "msm8909")
-		          setprop persist.vendor.usb.config diag,serial_smd,rmnet_qti_bam,adb
+			    if [ -d /config/usb_gadget ]; then
+				    setprop persist.vendor.usb.config diag,serial_cdev,rmnet,adb
+			    else
+				    setprop persist.vendor.usb.config diag,serial_smd,rmnet_qti_bam,adb
+			    fi
 		      ;;
 	              "msm8937")
 			    if [ -d /config/usb_gadget ]; then
diff --git a/rootdir/etc/init.qti.debug-lagoon.sh b/rootdir/etc/init.qti.debug-lagoon.sh
index 1c330e2677d23892036e937ec36862b19963d7c8..cc506a614122ced36cbd366b89ec334fca239329 100644
--- a/rootdir/etc/init.qti.debug-lagoon.sh
+++ b/rootdir/etc/init.qti.debug-lagoon.sh
@@ -431,16 +431,6 @@ config_lagoon_dcc_core()
 
     #GOLD
     echo 0x1829208C 1 > $DCC_PATH/config
-    echo 0x1829209C 0x78 > $DCC_PATH/config_write
-    echo 0x1829209C 0x0  > $DCC_PATH/config_write
-    echo 0x18292048 0x1  > $DCC_PATH/config_write
-    echo 0x18292090 0x0  > $DCC_PATH/config_write
-    echo 0x18292090 0x25 > $DCC_PATH/config_write
-    echo 0x18292098 1 > $DCC_PATH/config
-    echo 0x18292048 0x1D > $DCC_PATH/config_write
-    echo 0x18292090 0x0  > $DCC_PATH/config_write
-    echo 0x18292090 0x25 > $DCC_PATH/config_write
-    echo 0x18292098 1 > $DCC_PATH/config
 
 }
 config_lagoon_dcc_rsc_tcs()
@@ -707,12 +697,34 @@ config_lagoon_dcc_mss_rsc(){
     echo 0xb2c1200 3 > $DCC_PATH/config
     echo 0xb2c4510 2 > $DCC_PATH/config
     echo 0xb2c4520 > $DCC_PATH/config
+    # MSS PDC new additions
+    echo 0xb2c1214 3 > $DCC_PATH/config
+    echo 0xb2c1228 3 > $DCC_PATH/config
+    echo 0xb2c123C 3 > $DCC_PATH/config
+    echo 0xb2c1250 3 > $DCC_PATH/config
+
+    # GCC_MSS_AXIS2_CBCR
+    echo 0x18A004 > $DCC_PATH/config
+
+    #MSS_QDSP6SS_NMI_STATUS
+    echo 0x04080044 > $DCC_PATH/config
+
+    #MSS_QDSP6SS_DBG_NMI_PWR_STATUS
+    echo  0x04080304 > $DCC_PATH/config
+
+    #MSS_QDSP6SS_CORE_STATUS
+    echo  0x04082028 > $DCC_PATH/config
 }
 
 config_lagoon_dcc_noc(){
+
+    # Enable clock for SNOC Sensein register
+    echo 0x11100C 0x1 > DCC_PATH/config_write
+    echo 0x110144 0x1 > DCC_PATH/config_write
+    echo 0x11102C 0x1 > DCC_PATH/config_write
+
     #A1NOC
     echo 0x16E0400 > $DCC_PATH/config
-    echo 0x16e0000 2 > $DCC_PATH/config
     echo 0x16e0300 > $DCC_PATH/config
     echo 0x16e0408 > $DCC_PATH/config
     echo 0x16e0410 > $DCC_PATH/config
@@ -740,8 +752,6 @@ config_lagoon_dcc_noc(){
     echo 0x1620000 3 > $DCC_PATH/config
     echo 0x1620010 > $DCC_PATH/config
     echo 0x1620020 8 > $DCC_PATH/config
-    echo 0x1620100 3 > $DCC_PATH/config
-    echo 0x1620110 > $DCC_PATH/config
     echo 0x1620200 2 > $DCC_PATH/config
     echo 0x1620240 > $DCC_PATH/config
     echo 0x1620248 > $DCC_PATH/config
@@ -762,24 +772,6 @@ config_lagoon_dcc_noc(){
     echo 0x1620b00 2 > $DCC_PATH/config
     echo 0x1639000 2 > $DCC_PATH/config
 
-
-    #LPASS AGNOC
-    echo 0x3c41800 2 > $DCC_PATH/config
-    echo 0x3c41880 > $DCC_PATH/config
-    echo 0x3c41888 > $DCC_PATH/config
-    echo 0x3c41890 > $DCC_PATH/config
-    echo 0x3c41900 > $DCC_PATH/config
-    echo 0x3c41a00 2 > $DCC_PATH/config
-    echo 0x3c41a40 > $DCC_PATH/config
-    echo 0x3c41a48 > $DCC_PATH/config
-    echo 0x3c41c00 2 > $DCC_PATH/config
-    echo 0x3c41d00 > $DCC_PATH/config
-    echo 0x3c42680 3 > $DCC_PATH/config
-    echo 0x3c42690 > $DCC_PATH/config
-    echo 0x3c42698 > $DCC_PATH/config
-    echo 0x3c426a0 8 > $DCC_PATH/config
-
-
     #GEMNOC
     echo 0x1B9064 > $DCC_PATH/config
     echo 0x1B906C > $DCC_PATH/config
@@ -832,6 +824,9 @@ config_lagoon_dcc_gcc(){
     echo 0x113004 > $DCC_PATH/config
     echo 0x113008 > $DCC_PATH/config
 
+    # CPR global Rev register
+    echo 0x7802E0 > $DCC_PATH/config
+
 
 }
 
diff --git a/rootdir/etc/ueventd.qcom.rc b/rootdir/etc/ueventd.qcom.rc
index c8db930d90c9e4c00e759b957f3e33037a833198..8d03c8b813a064a86844ce445346bf5fad51555f 100644
--- a/rootdir/etc/ueventd.qcom.rc
+++ b/rootdir/etc/ueventd.qcom.rc
@@ -1,4 +1,4 @@
-# Copyright (c) 2012-2015, 2017-2019, The Linux Foundation. All rights reserved.
+# Copyright (c) 2012-2015, 2017-2020, The Linux Foundation. All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions are met:
@@ -143,9 +143,7 @@ firmware_directories /vendor/firmware_mnt/image/
 /dev/cryptoapp            0660   system     system
 /dev/spdaemon_ssr         0660   system     system
 /dev/spu_hal_ssr          0660   system     system
-/dev/iuicc                0660   system     system
-/dev/iuicc0               0660   system     system
-/dev/iuicc1               0660   system     system
+/dev/iuicc*               0660   system     system
 /dev/gemini0              0660   system     camera
 /dev/jpeg0                0660   system     camera
 /dev/jpeg1                0660   system     camera