Merge Android 24Q1 Release (ab/11220357)

Bug: 319669529
Merged-In: I4383678c9071149b295be82924de451002803cae
Change-Id: Ia40a99a6d324044f8f90b7907501715431ccdd0c
diff --git a/OWNERS b/OWNERS
index 79003ba..7eed0c3 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,4 +1,4 @@
 per-file powerhint.json = jychen@google.com,jenhaochen@google.com,wvw@google.com,joaodias@google.com
 
 # per-file for Pixel device makefiles, see go/pixel-device-mk-owner-checklist for details.
-per-file *.mk,*/BoardConfig.mk=file:device/google/gs-common:master:/OWNERS
+per-file *.mk,*/BoardConfig.mk=file:device/google/gs-common:main:/OWNERS
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
new file mode 100644
index 0000000..37ebb5e
--- /dev/null
+++ b/PREUPLOAD.cfg
@@ -0,0 +1,2 @@
+[Builtin Hooks]
+jsonlint = true
diff --git a/audio/tangorpro/aidl_config/mixer_paths_aidl.xml b/audio/tangorpro/aidl_config/mixer_paths_aidl.xml
index 2d051b8..d89f751 100644
--- a/audio/tangorpro/aidl_config/mixer_paths_aidl.xml
+++ b/audio/tangorpro/aidl_config/mixer_paths_aidl.xml
@@ -435,6 +435,14 @@
     <path name="primary-playback -> bt" />
   </path>
 
+  <path name="primary-playback-0 -> bluetooth-low-energy-headset">
+    <path name="primary-playback -> bt" />
+  </path>
+
+  <path name="primary-playback-0 -> bluetooth-low-energy-speaker">
+    <path name="primary-playback -> bt" />
+  </path>
+
   <path name="primary-playback-0 -> usb">
     <ctl name="USB_RX Mixer EP2" value="1" />
   </path>
@@ -499,6 +507,14 @@
     <path name="raw-playback -> bt" />
   </path>
 
+  <path name="raw-playback-0 -> bluetooth-low-energy-headset">
+    <path name="raw-playback -> bt" />
+  </path>
+
+  <path name="raw-playback-0 -> bluetooth-low-energy-speaker">
+    <path name="raw-playback -> bt" />
+  </path>
+
   <path name="raw-playback-0 -> usb">
     <ctl name="USB_RX Mixer RAW" value="1" />
   </path>
@@ -559,6 +575,14 @@
     <path name="deep-buffer-playback -> bt" />
   </path>
 
+  <path name="deep-buffer-playback-0 -> bluetooth-low-energy-headset">
+    <path name="deep-buffer-playback -> bt" />
+  </path>
+
+  <path name="deep-buffer-playback-0 -> bluetooth-low-energy-speaker">
+    <path name="deep-buffer-playback -> bt" />
+  </path>
+
   <path name="deep-buffer-playback-0 -> usb">
     <ctl name="USB_RX Mixer EP6" value="1" />
   </path>
@@ -628,6 +652,14 @@
     <path name="compress-offload-playback -> bt" />
   </path>
 
+  <path name="compress-offload-playback-0 -> bluetooth-low-energy-headset">
+    <path name="compress-offload-playback -> bt" />
+  </path>
+
+  <path name="compress-offload-playback-0 -> bluetooth-low-energy-speaker">
+    <path name="compress-offload-playback -> bt" />
+  </path>
+
   <path name="compress-offload-playback-0 -> usb">
     <ctl name="USB_RX Mixer EP7" value="1" />
   </path>
@@ -692,6 +724,14 @@
     <path name="mmap-playback -> bt" />
   </path>
 
+  <path name="mmap-playback-0 -> bluetooth-low-energy-headset">
+    <path name="mmap-playback -> bt" />
+  </path>
+
+  <path name="mmap-playback-0 -> bluetooth-low-energy-speaker">
+    <path name="mmap-playback -> bt" />
+  </path>
+
   <path name="mmap-playback-0 -> usb">
     <ctl name="USB_RX Mixer EP1" value="1" />
   </path>
@@ -768,6 +808,14 @@
     <path name="voip-playback -> bt" />
   </path>
 
+  <path name="voip-playback-0 -> bluetooth-low-energy-headset">
+    <path name="voip-playback -> bt" />
+  </path>
+
+  <path name="voip-playback-0 -> bluetooth-low-energy-speaker">
+    <path name="voip-playback -> bt" />
+  </path>
+
   <path name="voip-playback-0 -> usb">
     <ctl name="USB_RX Mixer VOIP" value="1" />
   </path>
@@ -882,6 +930,14 @@
     <path name="haptic-playback -> bt" />
   </path>
 
+  <path name="haptic-playback-0 -> bluetooth-low-energy-headset">
+    <path name="haptic-playback -> bt" />
+  </path>
+
+  <path name="haptic-playback-0 -> bluetooth-low-energy-speaker">
+    <path name="haptic-playback -> bt" />
+  </path>
+
   <path name="haptic-playback-0 -> usb">
     <ctl name="USB_RX Mixer EP3" value="1" />
     <ctl name="TDM_0_RX Mixer EP8" value="1" />
@@ -920,6 +976,14 @@
     <path name="usb-microphones -> primary-capture-0" />
   </path>
 
+  <path name="bluetooth-sco-headset-microphones -> primary-capture-0">
+    <ctl name="EP1 TX Mixer BT_TX" value="1" />
+  </path>
+
+  <path name="bluetooth-low-energy-headset-microphones -> primary-capture-0">
+    <ctl name="EP1 TX Mixer BT_TX" value="1" />
+  </path>
+
   <path name="microphones -> voip-capture-0">
     <ctl name="VOIP TX Mixer INTERNAL_MIC_TX" value="1" />
   </path>
@@ -944,6 +1008,10 @@
     <ctl name="VOIP TX Mixer BT_TX" value="1" />
   </path>
 
+  <path name="bluetooth-low-energy-headset-microphones -> voip-capture-0">
+    <ctl name="VOIP TX Mixer BT_TX" value="1" />
+  </path>
+
   <path name="microphones -> fast-capture-0">
     <ctl name="EP3 TX Mixer INTERNAL_MIC_TX" value="1" />
   </path>
@@ -968,6 +1036,10 @@
     <ctl name="EP3 TX Mixer BT_TX" value="1" />
   </path>
 
+  <path name="bluetooth-low-energy-headset-microphones -> fast-capture-0">
+    <ctl name="EP3 TX Mixer BT_TX" value="1" />
+  </path>
+
   <path name="microphones -> sound-trigger-capture-0">
   </path>
 
@@ -1002,6 +1074,14 @@
     <path name="voice-call-downlink-0 -> bt" />
   </path>
 
+  <path name="voice-call-downlink-0 -> bluetooth-low-energy-headset">
+    <path name="voice-call-downlink-0 -> bt" />
+  </path>
+
+  <path name="voice-call-downlink-0 -> bluetooth-low-energy-speaker">
+    <path name="voice-call-downlink-0 -> bt" />
+  </path>
+
   <path name="voice-call-downlink-0 -> usb">
     <ctl name="USB_RX Mixer EP5" value="1" />
   </path>
@@ -1046,6 +1126,10 @@
     <ctl name="EP4 TX Mixer BT_TX" value="1" />
   </path>
 
+  <path name="bluetooth-low-energy-headset-microphones -> voice-call-uplink-0">
+    <ctl name="EP4 TX Mixer BT_TX" value="1" />
+  </path>
+
   <path name="null-source -> voice-call-uplink-0">
     <ctl name="EP4 TX Mixer INCALL_TX" value="1" />
   </path>
@@ -1110,6 +1194,10 @@
     <ctl name="EP2 TX Mixer BT_TX" value="1" />
   </path>
 
+  <path name="bluetooth-low-energy-headset-microphones -> mmap-capture-0">
+    <ctl name="EP2 TX Mixer BT_TX" value="1" />
+  </path>
+
   <!-- codec setting -->
   <!-- Rx device -->
   <path name="speaker-earpiece">
@@ -1318,6 +1406,10 @@
     <ctl name="MIC Record Soft Gain (dB)" value="0" />
   </path>
 
+  <path name="bluetooth-low-energy-headset-microphones">
+    <path name="bluetooth-sco-headset-microphones" />
+  </path>
+
   <path name="usb-headset-microphones">
     <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0" />
     <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="3" />
diff --git a/audio/tangorpro/tuning/apmg3/uplink_dock_config.pb b/audio/tangorpro/tuning/apmg3/uplink_dock_config.pb
index 7996795..2598ca2 100644
--- a/audio/tangorpro/tuning/apmg3/uplink_dock_config.pb
+++ b/audio/tangorpro/tuning/apmg3/uplink_dock_config.pb
Binary files differ
diff --git a/audio/tangorpro/tuning/apmg3/uplink_headset_aec_off_config.pb b/audio/tangorpro/tuning/apmg3/uplink_headset_aec_off_config.pb
index 03f7574..5daa2d1 100644
--- a/audio/tangorpro/tuning/apmg3/uplink_headset_aec_off_config.pb
+++ b/audio/tangorpro/tuning/apmg3/uplink_headset_aec_off_config.pb
Binary files differ
diff --git a/audio/tangorpro/tuning/apmg3/uplink_headset_config.pb b/audio/tangorpro/tuning/apmg3/uplink_headset_config.pb
index b2c4aa6..936bb39 100644
--- a/audio/tangorpro/tuning/apmg3/uplink_headset_config.pb
+++ b/audio/tangorpro/tuning/apmg3/uplink_headset_config.pb
Binary files differ
diff --git a/audio/tangorpro/tuning/apmg3/uplink_tablet_stereo_config.pb b/audio/tangorpro/tuning/apmg3/uplink_tablet_stereo_config.pb
index 4c8a821..341b6e7 100644
--- a/audio/tangorpro/tuning/apmg3/uplink_tablet_stereo_config.pb
+++ b/audio/tangorpro/tuning/apmg3/uplink_tablet_stereo_config.pb
Binary files differ
diff --git a/bluetooth/syna_default.mk b/bluetooth/syna_default.mk
index 53a04b1..a389ffd 100644
--- a/bluetooth/syna_default.mk
+++ b/bluetooth/syna_default.mk
@@ -46,6 +46,10 @@
 PRODUCT_PRODUCT_PROPERTIES += \
     persist.bluetooth.leaudio.toggle_visible=false
 
+# LE Audio use classic connection by default
+PRODUCT_PRODUCT_PROPERTIES += \
+    ro.bluetooth.leaudio.le_audio_connection_by_default=false
+
 # Bluetooth HAL and Pixel extension
 DEVICE_MANIFEST_FILE += \
        device/google/tangorpro/bluetooth/manifest_bluetooth.xml
diff --git a/device-tangorpro.mk b/device-tangorpro.mk
index ae62f59..54002a6 100644
--- a/device-tangorpro.mk
+++ b/device-tangorpro.mk
@@ -162,6 +162,13 @@
 
 # Trusty liboemcrypto.so
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/tangorpro/prebuilts
+ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
+PRODUCT_SOONG_NAMESPACES += vendor/google_devices/tangorpro/prebuilts/trusty/24Q1
+else ifneq (,$(filter AP2%,$(RELEASE_PLATFORM_VERSION)))
+PRODUCT_SOONG_NAMESPACES += vendor/google_devices/tangorpro/prebuilts/trusty/24Q2
+else
+PRODUCT_SOONG_NAMESPACES += vendor/google_devices/tangorpro/prebuilts/trusty/trunk
+endif
 
 # Wifi SAP Interface Name
 PRODUCT_PROPERTY_OVERRIDES += \
diff --git a/lights/Android.bp b/lights/Android.bp
index 9544e19..c6fbd12 100644
--- a/lights/Android.bp
+++ b/lights/Android.bp
@@ -9,6 +9,7 @@
 
 cc_binary {
     name: "android.hardware.lights-service.tangorpro",
+    defaults: ["android.hardware.graphics.common-ndk_static"],
     relative_install_path: "hw",
     init_rc: ["android.hardware.lights-service.tangorpro.rc"],
     vintf_fragments: ["android.hardware.lights-service.tangorpro.xml"],
@@ -22,7 +23,6 @@
     static_libs: [
         "//hardware/google/interfaces:com.google.hardware.pixel.display-V7-ndk",
         "android.hardware.common-V2-ndk",
-        "android.hardware.graphics.common-V4-ndk",
     ],
 
     srcs: ["Lights.cpp", "led_lut_calibrator.cpp"],
diff --git a/powerhint.json b/powerhint.json
index 5ba5566..45d5de6 100644
--- a/powerhint.json
+++ b/powerhint.json
@@ -60,6 +60,16 @@
       "ResetOnInit": true
     },
     {
+      "Name": "CPULittleClusterDownRateLimitUs",
+      "Path": "/sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/down_rate_limit_us",
+      "Values": [
+        "5000",
+        "500"
+      ],
+      "DefaultIndex": 0,
+      "ResetOnInit": true
+    },
+    {
       "Name": "CPUMidClusterMaxFreq",
       "Path": "/sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq",
       "Values": [
@@ -88,6 +98,16 @@
       "ResetOnInit": true
     },
     {
+      "Name": "CPUMidClusterDownRateLimitUs",
+      "Path": "/sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/down_rate_limit_us",
+      "Values": [
+        "20000",
+        "3000"
+      ],
+      "DefaultIndex": 0,
+      "ResetOnInit": true
+    },
+    {
       "Name": "CPUBigClusterMaxFreq",
       "Path": "/sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq",
       "Values": [
@@ -116,6 +136,16 @@
       "ResetOnInit": true
     },
     {
+      "Name": "CPUBigClusterDownRateLimitUs",
+      "Path": "/sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/down_rate_limit_us",
+      "Values": [
+        "20000",
+        "3000"
+      ],
+      "DefaultIndex": 0,
+      "ResetOnInit": true
+    },
+    {
       "Name": "ReducePreferIdle",
       "Path": "/proc/vendor_sched/reduce_prefer_idle",
       "Values": [
@@ -145,6 +175,16 @@
       "ResetOnInit": true
     },
     {
+      "Name": "CPUTaperedDVFSHeadroomEnable",
+      "Path": "/proc/vendor_sched/tapered_dvfs_headroom_enable",
+      "Values": [
+        "0",
+        "1"
+      ],
+      "DefaultIndex": 0,
+      "ResetOnInit": true
+    },
+    {
       "Name": "MIFTargetLoad",
       "Path": "/sys/class/devfreq/17000010.devfreq_mif/interactive/target_load",
       "Values": [
@@ -156,7 +196,7 @@
     },
     {
       "Name": "CAMUClampBoost",
-      "Path": "/proc/vendor_sched/cam_uclamp_min",
+      "Path": "/proc/vendor_sched/groups/cam/uclamp_min",
       "Values": [
         "764",
         "0"
@@ -165,7 +205,7 @@
     },
     {
       "Name": "TAUClampBoost",
-      "Path": "/proc/vendor_sched/ta_uclamp_min",
+      "Path": "/proc/vendor_sched/groups/ta/uclamp_min",
       "Values": [
         "764",
         "1"
@@ -174,7 +214,7 @@
     },
     {
       "Name": "FGUClampBoost",
-      "Path": "/proc/vendor_sched/fg_uclamp_min",
+      "Path": "/proc/vendor_sched/groups/fg/uclamp_min",
       "Values": [
         "159",
         "0"
@@ -183,7 +223,7 @@
     },
     {
       "Name": "MLUclampBoost",
-      "Path": "/proc/vendor_sched/nnapi_uclamp_min",
+      "Path": "/proc/vendor_sched/groups/nnapi/uclamp_min",
       "Values": [
           "225",
           "813"
@@ -202,7 +242,7 @@
     },
     {
       "Name": "CDPreferIdle",
-      "Path": "/proc/vendor_sched/cam_prefer_idle",
+      "Path": "/proc/vendor_sched/groups/cam/prefer_idle",
       "Values": [
         "0",
         "1"
@@ -248,7 +288,7 @@
     },
     {
       "Name": "TAPreferHighCap",
-      "Path": "/proc/vendor_sched/ta_prefer_high_cap",
+      "Path": "/proc/vendor_sched/groups/ta/prefer_high_cap",
       "Values": [
         "1",
         "0"
@@ -257,7 +297,7 @@
     },
     {
       "Name": "TAPreferIdle",
-      "Path": "/proc/vendor_sched/ta_prefer_idle",
+      "Path": "/proc/vendor_sched/groups/ta/prefer_idle",
       "Values": [
         "0",
         "1"
@@ -266,7 +306,7 @@
     },
     {
       "Name": "FGPreferIdle",
-      "Path": "/proc/vendor_sched/fg_prefer_idle",
+      "Path": "/proc/vendor_sched/groups/fg/prefer_idle",
       "Values": [
         "1",
         "0"
@@ -276,7 +316,7 @@
     },
     {
       "Name": "CDPreferHighCap",
-      "Path": "/proc/vendor_sched/cam_prefer_high_cap",
+      "Path": "/proc/vendor_sched/groups/cam/prefer_high_cap",
       "Values": [
         "1",
         "0"
@@ -298,7 +338,7 @@
       "Values": [
         "0",
         "1"
-      ],
+      ]
     },
     {
       "Name": "DisplayWakeup",
@@ -605,7 +645,7 @@
     },
     {
       "Name": "Dex2oatGroup",
-      "Path": "/proc/vendor_sched/dex2oat_ug",
+      "Path": "/proc/vendor_sched/groups/dex2oat/ug",
       "Values": [
         "1",
         "0"
@@ -653,6 +693,36 @@
     },
     {
       "PowerHint": "LAUNCH",
+      "Node": "CPUDVFSHeadroom",
+      "Duration": 5000,
+      "Value": "1280"
+    },
+    {
+      "PowerHint": "LAUNCH",
+      "Node": "CPUTaperedDVFSHeadroomEnable",
+      "Duration": 5000,
+      "Value": "0"
+    },
+    {
+      "PowerHint": "LAUNCH",
+      "Node": "CPULittleClusterDownRateLimitUs",
+      "Duration": 5000,
+      "Value": "5000"
+    },
+    {
+      "PowerHint": "LAUNCH",
+      "Node": "CPUMidClusterDownRateLimitUs",
+      "Duration": 5000,
+      "Value": "20000"
+    },
+    {
+      "PowerHint": "LAUNCH",
+      "Node": "CPUBigClusterDownRateLimitUs",
+      "Duration": 5000,
+      "Value": "20000"
+    },
+    {
+      "PowerHint": "LAUNCH",
       "Node": "CPUBigClusterMaxFreq",
       "Duration": 5000,
       "Value": "9999999"
@@ -728,6 +798,60 @@
       "Value": "0"
     },
     {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "ReducePreferIdle",
+      "Duration": 5000,
+      "Value": "0"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "FGPreferIdle",
+      "Duration": 5000,
+      "Value": "1"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "CPUBigClusterMaxFreq",
+      "Duration": 5000,
+      "Value": "9999999"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "CPUMidClusterMaxFreq",
+      "Duration": 5000,
+      "Value": "9999999"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "CPULittleClusterMaxFreq",
+      "Duration": 5000,
+      "Value": "9999999"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "TAUClampBoost",
+      "Duration": 5000,
+      "Value": "764"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "FGUClampBoost",
+      "Duration": 5000,
+      "Value": "159"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "MemFreq",
+      "Duration": 5000,
+      "Value": "3172000"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "NPITaskPacking",
+      "Duration": 5000,
+      "Value": "0"
+    },
+    {
       "PowerHint": "CPU_LOAD_RESET",
       "Node": "GPUMinFreq",
       "Duration": 50,
@@ -1533,6 +1657,36 @@
       "Value": "572000"
     },
     {
+      "PowerHint": "GAME",
+      "Node": "CPUDVFSHeadroom",
+      "Duration": 0,
+      "Value": "1100"
+    },
+    {
+      "PowerHint": "GAME",
+      "Node": "CPUTaperedDVFSHeadroomEnable",
+      "Duration": 0,
+      "Value": "1"
+    },
+    {
+      "PowerHint": "GAME",
+      "Node": "CPULittleClusterDownRateLimitUs",
+      "Duration": 0,
+      "Value": "500"
+    },
+    {
+      "PowerHint": "GAME",
+      "Node": "CPUMidClusterDownRateLimitUs",
+      "Duration": 0,
+      "Value": "3000"
+    },
+    {
+      "PowerHint": "GAME",
+      "Node": "CPUBigClusterDownRateLimitUs",
+      "Duration": 0,
+      "Value": "3000"
+    },
+    {
       "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_LIGHT",
       "Node": "PMU_POLL",
       "Duration": 0,
diff --git a/rro_overlays/WifiOverlay/res/values/config.xml b/rro_overlays/WifiOverlay/res/values/config.xml
index 497a962..98a4f2f 100644
--- a/rro_overlays/WifiOverlay/res/values/config.xml
+++ b/rro_overlays/WifiOverlay/res/values/config.xml
@@ -134,4 +134,10 @@
          regulatory approval (for example, FCC pre-approval is required according to "594280 D01
          Software Configuration Control v02r01").-->
     <bool translatable="false" name ="config_wifiUpdateCountryCodeFromScanResultGeneric">true</bool>
+
+    <!-- Boolean indicating whether to disable firmware roaming when the device goes into idle mode.
+         true: firmware roaming will be disabled when the device goes into idle mode, and then
+               re-activated when the device exits idle mode.
+         false: firmware roaming will not be affected. -->
+    <bool translatable="false" name ="config_wifiDisableFirmwareRoamingInIdleMode">true</bool>
 </resources>
diff --git a/tangorpro/BoardConfig.mk b/tangorpro/BoardConfig.mk
index a38dff3..65d4c33 100644
--- a/tangorpro/BoardConfig.mk
+++ b/tangorpro/BoardConfig.mk
@@ -15,6 +15,13 @@
 #
 TARGET_BOARD_INFO_FILE := device/google/tangorpro/board-info.txt
 TARGET_BOOTLOADER_BOARD_NAME := tangorpro
+ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
+RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/24Q1
+else ifneq (,$(filter AP2%,$(RELEASE_PLATFORM_VERSION)))
+RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/24Q2
+else
+RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/trunk
+endif
 
 # Enable load module in parallel
 BOARD_BOOTCONFIG += androidboot.load_modules_parallel=true
diff --git a/tangorpro/overlay/frameworks/base/core/res/res/values/config.xml b/tangorpro/overlay/frameworks/base/core/res/res/values/config.xml
index 15b02f6..03950c0 100644
--- a/tangorpro/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/tangorpro/overlay/frameworks/base/core/res/res/values/config.xml
@@ -250,6 +250,21 @@
     </array>
 
     <!-- See DisplayWhiteBalanceController.
+         A float array containing a list of ambient brightnesses, in Lux. This array,
+         together with config_displayWhiteBalanceLowLightAmbientBiasesStrong, is used to generate a
+         lookup table used in DisplayWhiteBalanceController. This lookup table is used to map
+         ambient brightness readings to a bias, where the bias is used to linearly interpolate
+         between ambient color temperature and
+         config_displayWhiteBalanceLowLightAmbientColorTemperatureStrong.
+         This table is optional. If used, this array must,
+         1) Contain at least two entries
+         2) Be the same length as config_displayWhiteBalanceLowLightAmbientBiasesStrong. -->
+    <array name ="config_displayWhiteBalanceLowLightAmbientBrightnessesStrong">
+        <item>3.0</item>
+        <item>10.0</item>
+    </array>
+
+    <!-- See DisplayWhiteBalanceController.
          An array containing a list of biases. See
          config_displayWhiteBalanceLowLightAmbientBrightnesses for additional details.
          This array must be in the range of [0.0, 1.0]. -->
@@ -259,10 +274,27 @@
     </array>
 
     <!-- See DisplayWhiteBalanceController.
+         An array containing a list of biases. See
+         config_displayWhiteBalanceLowLightAmbientBrightnessesStrong for additional details.
+         This array must be in the range of [0.0, 1.0]. -->
+    <array name ="config_displayWhiteBalanceLowLightAmbientBiasesStrong">
+        <item>0.0</item>
+        <item>1.0</item>
+    </array>
+
+
+    <!-- See DisplayWhiteBalanceController.
          The ambient color temperature (in cct) to which we interpolates towards to when the
          ambient brightness is within the low light range, see
          config_displayWhiteBalanceLowLightAmbientBrightnesses. -->
-    <item name="config_displayWhiteBalanceLowLightAmbientColorTemperature" format="float" type="dimen">4000.0</item>
+    <item name="config_displayWhiteBalanceLowLightAmbientColorTemperature" format="float" type="dimen">5250.0</item>
+
+    <!-- See DisplayWhiteBalanceController.
+         The ambient color temperature (in cct) to which we interpolate towards using the
+         the look up table generated by config_displayWhiteBalanceLowLightAmbientBrightnessesStrong
+         and config_displayWhiteBalanceLowLightAmbientBiasesStrong. Used when device is in Idle Screen
+         Brightness mode. -->
+    <item name="config_displayWhiteBalanceLowLightAmbientColorTemperatureStrong" format="float" type="dimen">4000.0</item>
 
     <!-- See DisplayWhiteBalanceController.
          A float array containing a list of ambient brightnesses, in Lux. This array,
@@ -280,6 +312,21 @@
     </array>
 
     <!-- See DisplayWhiteBalanceController.
+         A float array containing a list of ambient brightnesses, in Lux. This array,
+         together with config_displayWhiteBalanceHighLightAmbientBiasesStrong, is used to generate a
+         lookup table used in DisplayWhiteBalanceController. This lookup table is used to map
+         ambient brightness readings to a bias, where the bias is used to linearly interpolate
+         between ambient color temperature and
+         config_displayWhiteBalanceHighLightAmbientColorTemperatureStrong.
+         This table is optional. If used, this array must,
+         1) Contain at least two entries
+         2) Be the same length as config_displayWhiteBalanceHighLightAmbientBiasesStrong. -->
+    <array name ="config_displayWhiteBalanceHighLightAmbientBrightnessesStrong">
+        <item>130000.0</item>
+        <item>150000.0</item>
+    </array>
+
+    <!-- See DisplayWhiteBalanceController.
          An array containing a list of biases. See
          config_displayWhiteBalanceHighLightAmbientBrightnesses for additional details.
          This array must be in the range of [0.0, 1.0]. -->
@@ -289,6 +336,15 @@
     </array>
 
     <!-- See DisplayWhiteBalanceController.
+         An array containing a list of biases. See
+         config_displayWhiteBalanceHighLightAmbientBrightnessesStrong for additional details.
+         This array must be in the range of [0.0, 1.0]. -->
+    <array name ="config_displayWhiteBalanceHighLightAmbientBiasesStrong">
+        <item>0.0</item>
+        <item>1.0</item>
+    </array>
+
+    <!-- See DisplayWhiteBalanceController.
          The ambient color temperature (in cct) to which we interpolates towards to when the
          ambient brightness is within the high light range, see
          config_displayWhiteBalanceHighLightAmbientBrightnesses. -->
@@ -406,17 +462,24 @@
 
          Must be overridden in platform specific overlays -->
     <integer-array name="config_autoBrightnessLevelsIdle">
+        <item>1</item>
+        <item>2</item>
         <item>3</item>
-        <item>6</item>
-        <item>11</item>
-        <item>31</item>
-        <item>64</item>
-        <item>113</item>
-        <item>180</item>
-        <item>264</item>
-        <item>364</item>
-        <item>451</item>
-        <item>885</item>
+        <item>4</item>
+        <item>8</item>
+        <item>12</item>
+        <item>20</item>
+        <item>33</item>
+        <item>55</item>
+        <item>90</item>
+        <item>148</item>
+        <item>245</item>
+        <item>403</item>
+        <item>665</item>
+        <item>1097</item>
+        <item>1808</item>
+        <item>2981</item>
+        <item>4915</item>
     </integer-array>
 
     <!-- Array of desired screen brightness in nits corresponding to the lux values
@@ -459,18 +522,25 @@
          This array also corresponds to the lux values given in config_autoBrightnessLevelsIdle.
          In order to activate this mode, config_enableIdleScreenBrightnessMode must be true. -->
     <array name="config_autoBrightnessDisplayValuesNitsIdle">
-      <item>0.400000001</item>    <!--  0 - 3 -->
-      <item>2.424401926</item>    <!--  3 - 6 -->
-      <item>4.016322573</item>    <!--  6 - 11 -->
-      <item>6.924331831</item>    <!--  11 - 31 -->
-      <item>18.21836204</item>    <!--  31 - 64 -->
-      <item>36.9199795</item>     <!--  64 - 113 -->
-      <item>65.40219962</item>    <!--  113 - 180 -->
-      <item>104.0902078</item>    <!--  180 - 264 -->
-      <item>152.5833029</item>    <!--  264 - 364 -->
-      <item>210.1432982</item>    <!--  364 - 451 -->
-      <item>260.2204941</item>    <!--  451 - 885 -->
-      <item>500.2693058</item>    <!--  885 + -->
+      <item>2.0</item>       <!--  0 - 1 -->
+      <item>9.962018965</item>    <!--  1 - 2 -->
+      <item>18.34822964</item>    <!--  2 - 3 -->
+      <item>21.55068128</item>    <!--  3 - 4 -->
+      <item>24.0167788</item>     <!--  4 - 8 -->
+      <item>30.62162162</item>    <!--  8 - 12 -->
+      <item>35.09486396</item>    <!--  12 - 20 -->
+      <item>45.38057825</item>    <!--  20 - 33 -->
+      <item>62.187656</item>      <!--  33 - 55 -->
+      <item>88.01503</item>       <!--  55 - 90 -->
+      <item>118.924484</item>     <!--  90 - 148 -->
+      <item>147.89162</item>      <!--  148 - 245 -->
+      <item>175.12471</item>      <!--  245 - 403 -->
+      <item>191.33968</item>      <!--  403 - 665 -->
+      <item>226.19489</item>      <!--  665 - 1097 -->
+      <item>295.24768</item>      <!--  1097 - 1808 -->
+      <item>396.007</item>        <!--  1808 - 2981 -->
+      <item>440.62778</item>      <!--  2981 - 4915 -->
+      <item>600.0</item>          <!--  4915+ -->
     </array>
 
     <!-- Enables idle screen brightness mode on this device.
@@ -599,7 +669,10 @@
     <integer name="config_audio_notif_vol_default">0</integer>
 
     <!-- Volume policy -->
+    <!-- Strongly consider keeping these 2 values in sync - otherwise vol up/vol down have confusing
+    asymmetric behavior, as in b/279645379 -->
     <bool name="config_volume_down_to_enter_silent">true</bool>
+    <bool name="config_volume_up_to_exit_silent">true</bool>
 
     <!-- This device does not allow mobile data. -->
     <bool name="config_mobile_data_capable">false</bool>
diff --git a/thermal_info_config_tangorpro.json b/thermal_info_config_tangorpro.json
index 72e380a..1aa4981 100644
--- a/thermal_info_config_tangorpro.json
+++ b/thermal_info_config_tangorpro.json
@@ -140,8 +140,8 @@
             "VirtualSensor":true,
             "TriggerSensor":["disp_therm", "neutral_therm"],
             "Formula":"MAXIMUM",
-            "Combination":["VIRTUAL-FRONT-SOC", "VIRTUAL-FRONT-BL", "VIRTUAL-BACK-SOC", "VIRTUAL-BACK-CHARGER"],
-            "Coefficient":["1.0", "1.0", "1.0", "1.0"],
+            "Combination":["VIRTUAL-SKIN"],
+            "Coefficient":["1.0"],
             "HotThreshold":["NAN", "37.0", "43.0", "45.0", "47.0", "51.5", "56.0"],
             "HotHysteresis":[0.0, 1.9, 1.9, 1.9, 1.9, 1.9, 1.9],
             "Multiplier":0.001,
@@ -156,8 +156,8 @@
             "VirtualSensor":true,
             "TriggerSensor":["disp_therm", "neutral_therm"],
             "Formula":"MAXIMUM",
-            "Combination":["VIRTUAL-FRONT-SOC", "VIRTUAL-FRONT-BL", "VIRTUAL-BACK-SOC", "VIRTUAL-BACK-CHARGER"],
-            "Coefficient":["1.0", "1.0", "1.0", "1.0"],
+            "Combination":["VIRTUAL-SKIN"],
+            "Coefficient":["1.0"],
             "HotThreshold":["NAN", "39.0", "43.0", "45.0", "47.0", "51.5", "56.0"],
             "HotHysteresis":[0.0, 1.9, 1.9, 1.9, 1.9, 1.9, 1.9],
             "Multiplier":0.001,