Merge Android 12

Bug: 202323961
Merged-In: Iee14e064c00685d832860de7590d221d553ca3f1
Change-Id: If74b0ce749350ec32ff5eb8898cd3c196bf2f064
diff --git a/Android.bp b/Android.bp
index 5bf63df..eb3944f 100644
--- a/Android.bp
+++ b/Android.bp
@@ -36,3 +36,12 @@
     ],
     // large-scale-change unable to identify any license_text files
 }
+
+vintf_compatibility_matrix {
+    name: "redbull_product_compatibility_matrix.xml",
+    stem: "compatibility_matrix.redbull.xml",
+    product_specific: true,
+    srcs: [
+        "device_framework_matrix_product.xml",
+    ],
+}
diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk
index eb2e727..693d733 100644
--- a/BoardConfig-common.mk
+++ b/BoardConfig-common.mk
@@ -21,16 +21,20 @@
 USES_DEVICE_GOOGLE_REDBULL := true
 
 TARGET_ARCH := arm64
-TARGET_ARCH_VARIANT := armv8-2a
+TARGET_ARCH_VARIANT := armv8-a
 TARGET_CPU_ABI := arm64-v8a
 TARGET_CPU_ABI2 :=
-TARGET_CPU_VARIANT := cortex-a76
+TARGET_CPU_VARIANT := generic
+TARGET_CPU_VARIANT_RUNTIME := cortex-a76
 
+ifeq (,$(filter %_64,$(TARGET_PRODUCT)))
 TARGET_2ND_ARCH := arm
 TARGET_2ND_ARCH_VARIANT := armv8-a
 TARGET_2ND_CPU_ABI := armeabi-v7a
 TARGET_2ND_CPU_ABI2 := armeabi
-TARGET_2ND_CPU_VARIANT := cortex-a76
+TARGET_2ND_CPU_VARIANT := generic
+TARGET_2ND_CPU_VARIANT_RUNTIME := cortex-a76
+endif
 
 BUILD_BROKEN_DUP_RULES := true
 BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200n8 androidboot.console=ttyMSM0 printk.devkmsg=on
@@ -69,15 +73,26 @@
 
 AB_OTA_UPDATER := true
 
-AB_OTA_PARTITIONS += \
-    boot \
-    vendor_boot \
-    system \
-    vbmeta \
-    dtbo \
-    product \
-    vbmeta_system \
-    system_ext
+ifneq ($(PRODUCT_BUILD_SYSTEM_IMAGE),false)
+AB_OTA_PARTITIONS += system
+AB_OTA_PARTITIONS += vbmeta_system
+endif
+ifneq ($(PRODUCT_BUILD_PRODUCT_IMAGE),false)
+AB_OTA_PARTITIONS += product
+endif
+ifneq ($(PRODUCT_BUILD_SYSTEM_EXT_IMAGE),false)
+AB_OTA_PARTITIONS += system_ext
+endif
+ifneq ($(PRODUCT_BUILD_BOOT_IMAGE),false)
+AB_OTA_PARTITIONS += boot
+endif
+ifneq ($(PRODUCT_BUILD_VENDOR_BOOT_IMAGE),false)
+AB_OTA_PARTITIONS += vendor_boot
+AB_OTA_PARTITIONS += dtbo
+endif
+ifneq ($(PRODUCT_BUILD_VBMETA_IMAGE),false)
+AB_OTA_PARTITIONS += vbmeta
+endif
 
 # Partitions (listed in the file) to be wiped under recovery.
 TARGET_RECOVERY_WIPE := device/google/redbull/recovery.wipe
@@ -88,7 +103,7 @@
     libfstab
 
 # Enable chain partition for system.
-BOARD_AVB_VBMETA_SYSTEM := system
+BOARD_AVB_VBMETA_SYSTEM := system system_ext product
 BOARD_AVB_VBMETA_SYSTEM_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
 BOARD_AVB_VBMETA_SYSTEM_ALGORITHM := SHA256_RSA2048
 BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
@@ -351,6 +366,7 @@
 	sctp_diag.ko \
 	qrtr-smd.ko \
 	msm_drm.ko \
+	dm-user.ko \
 
 # system_ext.img
 BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := ext4
@@ -453,9 +469,11 @@
 
 # Vendor Interface Manifest
 DEVICE_MANIFEST_FILE := device/google/redbull/manifest.xml
+ifeq (,$(filter %_64,$(TARGET_PRODUCT)))
+# Omx is 32 bit only
+DEVICE_MANIFEST_FILE += device/google/redbull/manifest_omx.xml
+endif
 DEVICE_MATRIX_FILE := device/google/redbull/compatibility_matrix.xml
-DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE := device/google/redbull/device_framework_matrix.xml
-DEVICE_FRAMEWORK_MANIFEST_FILE := device/google/redbull/framework_manifest.xml
 
 # Use mke2fs to create ext4 images
 TARGET_USES_MKE2FS := true
@@ -463,14 +481,21 @@
 # dynamic partition
 BOARD_SUPER_PARTITION_SIZE := 9755951104
 BOARD_SUPER_PARTITION_GROUPS := google_dynamic_partitions
-BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST := \
-    system \
-    vendor \
-    product \
-    system_ext
+ifneq ($(PRODUCT_BUILD_SYSTEM_IMAGE),false)
+BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST += system
+endif
+ifneq ($(PRODUCT_BUILD_PRODUCT_IMAGE),false)
+BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST += product
+endif
+ifneq ($(PRODUCT_BUILD_SYSTEM_EXT_IMAGE),false)
+BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST += system_ext
+endif
+ifneq ($(PRODUCT_BUILD_VENDOR_IMAGE),false)
+BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST += vendor
+endif
 
-#BOARD_GOOGLE_DYNAMIC_PARTITIONS_SIZE is set to BOARD_SUPER_PARTITION_SIZE / 2 - 4MB
-BOARD_GOOGLE_DYNAMIC_PARTITIONS_SIZE := 4873781248
+#BOARD_GOOGLE_DYNAMIC_PARTITIONS_SIZE is set to (5GB - 4MB)
+BOARD_GOOGLE_DYNAMIC_PARTITIONS_SIZE := 5364514816
 
 # Set error limit to BOARD_SUPER_PARTITON_SIZE - 500MB
 BOARD_SUPER_PARTITION_ERROR_LIMIT := 9231663104
@@ -512,6 +537,9 @@
     KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/kasan
 else ifeq (,$(filter-out $(TARGET_BOOTLOADER_BOARD_NAME)_kernel_debug_memory, $(TARGET_PRODUCT)))
     KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/debug_memory
+else ifeq (,$(filter-out $(TARGET_BOOTLOADER_BOARD_NAME)_kernel_debug_memory_accounting, $(TARGET_PRODUCT)))
+    KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/debug_memory_accounting
+BOARD_KERNEL_CMDLINE += page_owner=on
 else ifeq (,$(filter-out $(TARGET_BOOTLOADER_BOARD_NAME)_kernel_debug_locking, $(TARGET_PRODUCT)))
     KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/debug_locking
 else ifeq (,$(filter-out $(TARGET_BOOTLOADER_BOARD_NAME)_kernel_debug_hang, $(TARGET_PRODUCT)))
diff --git a/METADATA b/METADATA
new file mode 100644
index 0000000..d97975c
--- /dev/null
+++ b/METADATA
@@ -0,0 +1,3 @@
+third_party {
+  license_type: NOTICE
+}
diff --git a/audio/audio_io_policy.conf b/audio/audio_io_policy.conf
index 948c0ff..68aee2b 100644
--- a/audio/audio_io_policy.conf
+++ b/audio/audio_io_policy.conf
@@ -68,14 +68,14 @@
     app_type 69941
   }
   compress_offload_16 {
-    flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING
+    flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING|AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD
     formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_PCM_16_BIT_OFFLOAD|AUDIO_FORMAT_PCM_24_BIT_OFFLOAD|AUDIO_FORMAT_FLAC|AUDIO_FORMAT_ALAC|AUDIO_FORMAT_APE|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2|AUDIO_FORMAT_WMA|AUDIO_FORMAT_WMA_PRO|AUDIO_FORMAT_VORBIS|AUDIO_FORMAT_AAC_ADTS_LC|AUDIO_FORMAT_AAC_ADTS_HE_V1|AUDIO_FORMAT_AAC_ADTS_HE_V2
     sampling_rates 44100|48000|88200|96000|176400|192000
     bit_width 16
     app_type 69940
   }
   compress_offload_24 {
-    flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING
+    flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING|AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD
     formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_PCM_24_BIT_OFFLOAD|AUDIO_FORMAT_FLAC|AUDIO_FORMAT_ALAC|AUDIO_FORMAT_APE|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2|AUDIO_FORMAT_VORBIS|AUDIO_FORMAT_WMA|AUDIO_FORMAT_WMA_PRO|AUDIO_FORMAT_AAC_ADTS_LC|AUDIO_FORMAT_AAC_ADTS_HE_V1|AUDIO_FORMAT_AAC_ADTS_HE_V2
     sampling_rates 44100|48000|88200|96000|176400|192000
     bit_width 24
diff --git a/bluetooth_hearing_aid_audio_policy_configuration.xml b/bluetooth_hearing_aid_audio_policy_configuration.xml
index 7dcabf7..e275d6a 100644
--- a/bluetooth_hearing_aid_audio_policy_configuration.xml
+++ b/bluetooth_hearing_aid_audio_policy_configuration.xml
@@ -5,7 +5,7 @@
         <!-- Hearing AIDs Audio Ports -->
         <mixPort name="hearing aid output" role="source">
             <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
-                     samplingRates="24000,16000"
+                     samplingRates="24000 16000"
                      channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
         </mixPort>
     </mixPorts>
diff --git a/default-permissions.xml b/default-permissions.xml
index 23b83b4..e4c6cb6 100644
--- a/default-permissions.xml
+++ b/default-permissions.xml
@@ -48,7 +48,8 @@
     </exception>
 
     <exception
-            package="com.google.android.apps.pixelmigrate">
+            package="com.google.android.apps.restore"
+            sha256-cert-digest="56:BE:13:2B:78:06:56:FE:24:44:CD:34:32:6E:B5:D7:AA:C9:1D:20:96:AB:F0:FE:67:3A:99:27:06:22:EC:87">
         <!-- External storage -->
         <permission name="android.permission.READ_EXTERNAL_STORAGE" fixed="false"/>
         <permission name="android.permission.WRITE_EXTERNAL_STORAGE" fixed="false"/>
@@ -58,9 +59,8 @@
         <!-- Call logs -->
         <permission name="android.permission.READ_CALL_LOG" fixed="false"/>
         <permission name="android.permission.WRITE_CALL_LOG" fixed="false"/>
-        <!-- SMS -->
-        <permission name="android.permission.RECEIVE_SMS" fixed="false"/>
-        <permission name="android.permission.READ_PHONE_NUMBERS" fixed="false"/>
+        <!-- Used to set up a Wi-Fi P2P network -->
+        <permission name="android.permission.ACCESS_FINE_LOCATION" fixed="false"/>
     </exception>
 
     <exception
@@ -73,27 +73,6 @@
         <permission name="android.permission.RECEIVE_SMS" fixed="false"/>
     </exception>
 
-    <exception
-            package="com.google.android.projection.gearhead"
-            sha256-cert-digest="FD:B0:0C:43:DB:DE:8B:51:CB:31:2A:A8:1D:3B:5F:A1:77:13:AD:B9:4B:28:F5:98:D7:7F:8E:B8:9D:AC:EE:DF">
-        <!-- Gearhead legacy -->
-        <permission name="android.permission.ACCESS_FINE_LOCATION" fixed="false"/>
-        <permission name="android.permission.CALL_PHONE" fixed="false"/>
-        <permission name="android.permission.READ_CALL_LOG" fixed="false"/>
-        <permission name="android.permission.READ_CONTACTS" fixed="false"/>
-        <permission name="android.permission.READ_PHONE_STATE" fixed="false"/>
-        <permission name="android.permission.RECEIVE_SMS" fixed="false"/>
-        <permission name="android.permission.RECORD_AUDIO" fixed="false"/>
-        <permission name="android.permission.SEND_SMS" fixed="false"/>
-        <permission name="android.permission.READ_CALENDAR" fixed="false"/>
-        <!-- For Top Gear -->
-        <permission name="android.permission.PROCESS_OUTGOING_CALLS" fixed="false"/>
-        <permission name="android.permission.READ_SMS" fixed="false"/>
-        <permission name="android.permission.RECEIVE_MMS" fixed="false"/>
-        <permission name="android.permission.WRITE_CALL_LOG" fixed="false"/>
-        <permission name="android.permission.ACCESS_COARSE_LOCATION" fixed="false"/>
-    </exception>
-
     <exception package="com.google.android.settings.intelligence">
         <!-- Calendar -->
         <permission name="android.permission.READ_CALENDAR" fixed="true"/>
@@ -102,6 +81,11 @@
         <permission name="android.permission.ACCESS_BACKGROUND_LOCATION" fixed="false"/>
     </exception>
 
+    <exception package="com.google.android.apps.camera.services">
+        <!-- Camera -->
+        <permission name="android.permission.CAMERA" fixed="false"/>
+    </exception>
+
     <exception package="com.google.android.apps.cbrsnetworkmonitor">
         <!-- Location access to create CBRS geofences-->
         <permission name="android.permission.ACCESS_FINE_LOCATION" fixed="true"/>
@@ -109,9 +93,6 @@
     </exception>
 
     <exception package="com.google.android.apps.scone">
-        <!-- Location access to determine proximity to a CBRS network coverage area -->
-        <permission name="android.permission.ACCESS_COARSE_LOCATION" fixed="false"/>
-        <permission name="android.permission.ACCESS_BACKGROUND_LOCATION" fixed="false"/>
         <!-- Used to call ActivityTransition API for Smart OOS & Smart PNO -->
         <permission name="android.permission.ACTIVITY_RECOGNITION" fixed="false"/>
     </exception>
diff --git a/device-common.mk b/device-common.mk
index 55f0728..6243428 100644
--- a/device-common.mk
+++ b/device-common.mk
@@ -30,12 +30,15 @@
     device/google/redbull \
     hardware/qcom/sm7250 \
     vendor/google/airbrush/floral \
-    vendor/google/biometrics/face \
+    vendor/google/biometrics/face/florence \
     vendor/google/darwinn \
     hardware/qcom/sm7250/display \
     vendor/google/camera \
     vendor/qcom/sm7250 \
-    vendor/google/interfaces
+    vendor/google/interfaces \
+    vendor/google_devices/common/proprietary/confirmatioui_hal \
+    vendor/google_nos/host/android \
+    vendor/google_nos/test/system-test-harness
 
 # Include GPS soong namespace
 PRODUCT_SOONG_NAMESPACES += \
@@ -67,6 +70,9 @@
 PRODUCT_PRODUCT_PROPERTIES += \
     persist.vendor.debug.sensors.accel_cal=1
 
+PRODUCT_PRODUCT_PROPERTIES += \
+    persist.vendor.testing_battery_profile=2
+
 # The default value of this variable is false and should only be set to true when
 # the device allows users to retain eSIM profiles after factory reset of user data.
 PRODUCT_PRODUCT_PROPERTIES += \
@@ -76,7 +82,7 @@
     device/google/redbull/default-permissions.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/default-permissions/default-permissions.xml \
     device/google/redbull/component-overrides.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sysconfig/component-overrides.xml \
     frameworks/native/data/etc/handheld_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/handheld_core_hardware.xml \
-    frameworks/native/data/etc/android.software.verified_boot.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/permissions/android.software.verified_boot.xml
+    frameworks/native/data/etc/android.software.verified_boot.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.verified_boot.xml
 
 # Enforce privapp-permissions whitelist
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -84,7 +90,6 @@
 
 PRODUCT_PACKAGES += \
     messaging \
-    dmabuf_dump
 
 TARGET_PRODUCT_PROP := $(LOCAL_PATH)/product.prop
 
@@ -95,6 +100,7 @@
 
 PRODUCT_CHARACTERISTICS := nosdcard
 PRODUCT_SHIPPING_API_LEVEL := 30
+BOARD_SHIPPING_API_LEVEL := 30
 
 DEVICE_PACKAGE_OVERLAYS += $(LOCAL_PATH)/overlay
 
@@ -102,11 +108,13 @@
     $(LOCAL_KERNEL):kernel \
     $(LOCAL_PATH)/fstab.hardware:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/first_stage_ramdisk/fstab.$(PRODUCT_PLATFORM) \
     $(LOCAL_PATH)/fstab.hardware:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.$(PRODUCT_PLATFORM) \
+    $(LOCAL_PATH)/fstab.persist:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.persist \
     $(LOCAL_PATH)/init.hardware.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.$(PRODUCT_PLATFORM).rc \
     $(LOCAL_PATH)/init.modem.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.modem.sh \
     $(LOCAL_PATH)/init.power.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.$(PRODUCT_PLATFORM).power.rc \
     $(LOCAL_PATH)/init.radio.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.radio.sh \
     $(LOCAL_PATH)/init.hardware.usb.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.$(PRODUCT_PLATFORM).usb.rc \
+    $(LOCAL_PATH)/init.insmod.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.insmod.sh \
     $(LOCAL_PATH)/init.sensors.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.sensors.sh \
     $(LOCAL_PATH)/ueventd.rc:$(TARGET_COPY_OUT_VENDOR)/ueventd.rc \
 		$(LOCAL_PATH)/init.ramoops.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.ramoops.sh
@@ -145,6 +153,10 @@
 PRODUCT_PRODUCT_PROPERTIES += \
     ro.sys.sdcardfs=1
 
+# Use FUSE passthrough
+PRODUCT_PRODUCT_PROPERTIES += \
+    persist.sys.fuse.passthrough.enable=true
+
 PRODUCT_PACKAGES += \
     bootctrl.lito \
     bootctrl.lito.recovery
@@ -159,7 +171,9 @@
     POSTINSTALL_OPTIONAL_system=true
 
 PRODUCT_PACKAGES += \
-    update_engine_sideload \
+    update_engine_sideload
+
+PRODUCT_PACKAGES_DEBUG += \
     sg_write_buffer \
     f2fs_io \
     check_f2fs
@@ -179,7 +193,14 @@
 
 # Context hub HAL
 PRODUCT_PACKAGES += \
-    android.hardware.contexthub@1.1-service.generic
+    android.hardware.contexthub@1.2-service.generic
+
+# CHRE tools
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+PRODUCT_PACKAGES += \
+    chre_power_test_client \
+    chre_test_client
+endif
 
 # Enable project quotas and casefolding for emulated storage without sdcardfs
 $(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)
@@ -221,8 +242,8 @@
     frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \
     frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute.xml \
     frameworks/native/data/etc/android.hardware.vulkan.version-1_1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \
-    frameworks/native/data/etc/android.software.vulkan.deqp.level-2021-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml \
-    frameworks/native/data/etc/android.software.opengles.deqp.level-2021-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.opengles.deqp.level.xml \
+    frameworks/native/data/etc/android.software.vulkan.deqp.level-2020-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml \
+    frameworks/native/data/etc/android.software.opengles.deqp.level-2020-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.opengles.deqp.level.xml \
     frameworks/native/data/etc/android.hardware.telephony.carrierlock.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.carrierlock.xml \
     frameworks/native/data/etc/android.hardware.strongbox_keystore.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.strongbox_keystore.xml \
     frameworks/native/data/etc/android.hardware.nfc.uicc.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.uicc.xml \
@@ -310,7 +331,7 @@
 
 # camera enable RT thread
 PRODUCT_PROPERTY_OVERRIDES += \
-    persist.camera.realtimethread=1
+    persist.vendor.camera.realtimethread=1
 
 # Lets the vendor library that Google Camera HWL is enabled
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -382,14 +403,13 @@
 
 #Bluetooth SAR HAL
 PRODUCT_PACKAGES += \
-    vendor.qti.hardware.bluetooth_sar@1.1-impl \
-    vendor.qti.hardware.bluetooth_sar@1.0-impl
+    hardware.google.bluetooth.sar@1.0-impl
 PRODUCT_PACKAGES_DEBUG += \
     bluetooth_sar_test
 
 #Bluetooth AFH HAL
 PRODUCT_PACKAGES += \
-    vendor.qti.hardware.bt_channel_avoidance@1.0-impl
+    hardware.google.bluetooth.bt_channel_avoidance@1.0-impl
 
 # Bluetooth SoC
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -406,8 +426,8 @@
 
 # DRM HAL
 PRODUCT_PACKAGES += \
-    android.hardware.drm@1.3-service.clearkey \
-    android.hardware.drm@1.3-service.widevine
+    android.hardware.drm@1.4-service.clearkey \
+    android.hardware.drm@1.4-service.widevine
 
 # NFC and Secure Element packages
 PRODUCT_PACKAGES += \
@@ -473,8 +493,8 @@
     persist.vendor.ims.mm_minqp=1
 
 PRODUCT_PACKAGES += \
-    android.hardware.camera.provider@2.6-impl-google \
-    android.hardware.camera.provider@2.6-service-google \
+    android.hardware.camera.provider@2.7-impl-google \
+    android.hardware.camera.provider@2.7-service-google \
     camera.lito \
     lib_multicam_dualfov_capture_session \
     libgooglecamerahwl_impl \
@@ -486,7 +506,7 @@
 # Google Camera HAL test libraries in debug builds
 PRODUCT_PACKAGES_DEBUG += \
     libgoogle_camera_hal_proprietary_tests \
-    libgoogle_camera_hal_tests.vendor
+    libgoogle_camera_hal_tests
 
 PRODUCT_PACKAGES += \
     fs_config_dirs \
@@ -511,6 +531,8 @@
 
 ENABLE_VENDOR_RIL_SERVICE := true
 
+USE_QCRIL_OEMHOOK := true
+
 HOSTAPD := hostapd
 ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
 HOSTAPD += hostapd_cli
@@ -533,6 +555,10 @@
     libwpa_client \
     WifiOverlay
 
+# Connectivity
+PRODUCT_PACKAGES += \
+    ConnectivityOverlay
+
 # WLAN driver configuration files
 PRODUCT_COPY_FILES += \
     $(LOCAL_PATH)/wpa_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf \
@@ -560,13 +586,11 @@
     audio.bluetooth.default
 
 PRODUCT_PACKAGES += \
-    android.hardware.audio@6.0-impl:32 \
-    android.hardware.audio@5.0-impl:32 \
-    android.hardware.audio.effect@6.0-impl:32 \
-    android.hardware.audio.effect@5.0-impl:32 \
+    android.hardware.audio@7.0-impl:32 \
+    android.hardware.audio.effect@7.0-impl:32 \
     android.hardware.soundtrigger@2.3-impl \
     android.hardware.bluetooth.audio@2.0-impl \
-    android.hardware.audio@2.0-service
+    android.hardware.audio.service
 
 # Modules for Audio HAL
 PRODUCT_PACKAGES += \
@@ -675,21 +699,6 @@
   logd.logpersistd.size=30
 endif
 
-# Citadel
-PRODUCT_PACKAGES += \
-    citadeld \
-    citadel_updater \
-    android.hardware.authsecret@1.0-service.citadel \
-    android.hardware.oemlock@1.0-service.citadel \
-    android.hardware.weaver@1.0-service.citadel \
-    android.hardware.keymaster@4.1-service.citadel \
-    android.hardware.identity@1.0-service.citadel \
-    wait_for_strongbox
-
-# Citadel debug stuff
-PRODUCT_PACKAGES_DEBUG += \
-    test_citadel
-
 # Storage: for factory reset protection feature
 PRODUCT_PROPERTY_OVERRIDES += \
     ro.frp.pst=/dev/block/bootdevice/by-name/frp
@@ -799,18 +808,9 @@
 PRODUCT_COPY_FILES += \
     $(LOCAL_PATH)/gps.conf:$(TARGET_COPY_OUT_VENDOR)/etc/gps.conf
 
-# Pixel atrace HAL
-PRODUCT_PACKAGES += \
-    android.hardware.atrace@1.0-service.pixel
-
 # dynamic partition
 PRODUCT_USE_DYNAMIC_PARTITIONS := true
 
-# fastbootd
-PRODUCT_PACKAGES += \
-    android.hardware.fastboot@1.0-impl.pixel \
-    fastbootd
-
 # Use /product/etc/fstab.postinstall to mount system_other
 PRODUCT_PRODUCT_PROPERTIES += \
     ro.postinstall.fstab.prefix=/product
@@ -828,12 +828,14 @@
 
 HIDL_WRAPPER := qti-telephony-hidl-wrapper
 HIDL_WRAPPER += qti_telephony_hidl_wrapper.xml
+HIDL_WRAPPER += qti-telephony-hidl-wrapper-prd
+HIDL_WRAPPER += qti_telephony_hidl_wrapper_prd.xml
 PRODUCT_PACKAGES += $(HIDL_WRAPPER)
 
 # Increment the SVN for any official public releases
 ifeq ($(PRODUCT_DEVICE_SVN_OVERRIDE),)
 PRODUCT_PROPERTY_OVERRIDES += \
-	ro.vendor.build.svn=30
+	ro.vendor.build.svn=35
 endif
 
 # Enable iwlan service logging for debug
@@ -934,10 +936,6 @@
 PRODUCT_PRODUCT_PROPERTIES += \
     ro.thermal_warmreset = true \
 
-# Resume on Reboot support
-PRODUCT_PACKAGES += \
-    android.hardware.rebootescrow-service.citadel
-
 # Vendor verbose logging default property
 ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -953,6 +951,10 @@
     persist.sys.disable_rescue=true
 endif
 
+# Set support one-handed mode
+PRODUCT_PRODUCT_PROPERTIES += \
+    ro.support_one_handed_mode=true
+
 # Enable Incremental on the device via kernel module
 PRODUCT_PROPERTY_OVERRIDES += \
         ro.incremental.enable=module:/vendor/lib/modules/incrementalfs.ko
@@ -960,7 +962,21 @@
 # Enforce generic ramdisk allow list
 $(call inherit-product, $(SRC_TARGET_DIR)/product/generic_ramdisk.mk)
 
-$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota/launch_with_vendor_ramdisk.mk)
+# Enable watchdog timeout loop breaker.
+PRODUCT_PROPERTY_OVERRIDES += \
+    framework_watchdog.fatal_window.second=600 \
+    framework_watchdog.fatal_count=3
+
+# Set system properties identifying the chipset
+PRODUCT_VENDOR_PROPERTIES += ro.soc.manufacturer=Qualcomm
+PRODUCT_VENDOR_PROPERTIES += ro.soc.model=SM7250
+
+# Include the redbull product FCM
+# (TODO: b/169535506) This includes the FCM for system_ext and product partition.
+# Vendor Freeze system-only builds use a different FCM.
+ifneq ($(PRODUCT_VENDOR_FREEZE_SYSTEM_BUILD),true)
+PRODUCT_PACKAGES += redbull_product_compatibility_matrix.xml
+endif
 
 #################################################################################
 # This is the End of device-common.mk file.
@@ -992,6 +1008,9 @@
 # Project
 include hardware/google/pixel/common/pixel-common-device.mk
 
+# Citadel
+include hardware/google/pixel/citadel/citadel.mk
+
 # Factory OTA
 -include vendor/google/factoryota/client/factoryota.mk
 
@@ -1010,6 +1029,7 @@
 # Pixel Logger
 include hardware/google/pixel/PixelLogger/PixelLogger.mk
 
-# Citadel
-include hardware/google/pixel/citadel/citadel.mk
+ifneq ($(wildcard vendor/qcom/sm7250/proprietary/prebuilt_grease),)
+-include $(LOCAL_PATH)/redbull_allowlist.mk
+endif
 #################################################################################
diff --git a/device_framework_matrix.xml b/device_framework_matrix_product.xml
similarity index 76%
rename from device_framework_matrix.xml
rename to device_framework_matrix_product.xml
index 45799ed..d9d91c0 100644
--- a/device_framework_matrix.xml
+++ b/device_framework_matrix_product.xml
@@ -1,5 +1,5 @@
-<compatibility-matrix version="1.0" type="framework">
-   <hal format="hidl" optional="true">
+<compatibility-matrix version="1.0" type="framework" level="5">
+   <hal format="hidl" optional="false">
        <name>com.qualcomm.qti.imscmservice</name>
        <version>2.2</version>
        <interface>
@@ -7,36 +7,33 @@
          <instance>qti.ims.connectionmanagerservice</instance>
        </interface>
    </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>com.qualcomm.qti.uceservice</name>
-        <version>2.2</version>
+        <version>2.3</version>
         <interface>
             <name>IUceService</name>
             <instance>com.qualcomm.qti.uceservice</instance>
         </interface>
     </hal>
-    <hal format="hidl">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.ims.factory</name>
-        <transport>hwbinder</transport>
         <version>1.0</version>
         <interface>
             <name>IImsFactory</name>
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.data.factory</name>
-        <transport>hwbinder</transport>
-        <version>2.1</version>
+        <version>2.2</version>
         <interface>
             <name>IFactory</name>
             <instance>default</instance>
         </interface>
     </hal>
     <!-- iwlan -->
-    <hal format="hidl">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.data.iwlan</name>
-        <transport>hwbinder</transport>
         <version>1.0</version>
         <interface>
             <name>IIWlan</name>
@@ -44,7 +41,7 @@
             <instance>slot2</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>android.hardware.media.c2</name>
         <version>1.0</version>
         <interface>
@@ -52,22 +49,16 @@
             <instance>default</instance>
             <instance>software</instance>
         </interface>
-        <interface>
-            <name>IConfigurable</name>
-            <instance>default</instance>
-            <instance>software</instance>
-        </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>android.hardware.radio</name>
-        <transport>hwbinder</transport>
         <version>1.2</version>
         <interface>
             <name>ISap</name>
             <instance>slot2</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>android.hardware.radio.config</name>
         <version>1.1</version>
         <interface>
@@ -75,7 +66,7 @@
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.display.color</name>
         <version>1.0-5</version>
         <interface>
@@ -83,7 +74,7 @@
              <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.display.config</name>
         <version>2.0</version>
         <interface>
@@ -91,7 +82,7 @@
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.display.postproc</name>
         <version>1.0</version>
         <interface>
@@ -99,7 +90,7 @@
              <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.google.google_battery</name>
         <version>1.1</version>
         <interface>
@@ -107,15 +98,15 @@
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.google.radioext</name>
-        <version>1.2</version>
+        <version>1.2-3</version>
         <interface>
             <name>IRadioExt</name>
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.radio.am</name>
         <version>1.0</version>
         <interface>
@@ -124,15 +115,7 @@
             <instance>slot2</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
-        <name>vendor.qti.hardware.radio.atcmdfwd</name>
-        <version>1.0</version>
-        <interface>
-            <name>IAtCmdFwd</name>
-            <instance>AtCmdFwdService</instance>
-        </interface>
-    </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.radio.ims</name>
         <version>1.6</version>
         <interface>
@@ -141,7 +124,7 @@
             <instance>imsradio1</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.radio.lpa</name>
         <version>1.0</version>
         <interface>
@@ -150,7 +133,7 @@
             <instance>UimLpa1</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.radio.qcrilhook</name>
         <version>1.0</version>
         <interface>
@@ -159,7 +142,7 @@
             <instance>oemhook1</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.radio.uim</name>
         <version>1.2</version>
         <interface>
@@ -168,7 +151,7 @@
             <instance>Uim1</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.radio.uim_remote_client</name>
         <version>1.0</version>
         <interface>
@@ -177,7 +160,7 @@
             <instance>uimRemoteClient1</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.radio.uim_remote_server</name>
         <version>1.0</version>
         <interface>
@@ -186,7 +169,7 @@
             <instance>uimRemoteServer1</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.tui_comm</name>
         <version>1.0</version>
         <interface>
@@ -194,7 +177,7 @@
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.display.allocator</name>
         <version>1.0</version>
         <version>3.0</version>
@@ -204,7 +187,7 @@
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.display.mapper</name>
         <version>2.0</version>
         <version>3.0</version>
@@ -214,15 +197,7 @@
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
-        <name>vendor.qti.hardware.display.mapperextensions</name>
-        <version>1.0</version>
-        <interface>
-            <name>IQtiMapperExtensions</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.display.composer</name>
         <version>3.0</version>
         <interface>
@@ -230,16 +205,15 @@
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.radio.internal.deviceinfo</name>
-        <transport>hwbinder</transport>
         <version>1.0</version>
         <interface>
             <name>IDeviceInfo</name>
             <instance>deviceinfo</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.imsrtpservice</name>
         <version>3.0</version>
         <interface>
@@ -247,25 +221,24 @@
             <instance>imsrtpservice</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.ims.callinfo</name>
-        <transport>hwbinder</transport>
         <version>1.0</version>
         <interface>
             <name>IService</name>
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
-        <name>vendor.qti.hardware.bluetooth_sar</name>
-        <version>1.1</version>
+    <hal format="hidl" optional="false">
+        <name>hardware.google.bluetooth.sar</name>
+        <version>1.0</version>
         <interface>
             <name>IBluetoothSar</name>
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
-        <name>vendor.qti.hardware.bt_channel_avoidance</name>
+    <hal format="hidl" optional="false">
+        <name>hardware.google.bluetooth.bt_channel_avoidance</name>
         <version>1.0</version>
         <interface>
             <name>IBTChannelAvoidance</name>
@@ -274,25 +247,22 @@
     </hal>
     <hal format="hidl" optional="true">
         <name>vendor.google.wifi_ext</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
+        <version>1.2</version>
         <interface>
             <name>IWifiExt</name>
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.cacert</name>
-        <transport>hwbinder</transport>
         <version>1.0</version>
         <interface>
             <name>IService</name>
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.data.connection</name>
-        <transport>hwbinder</transport>
         <version>1.1</version>
         <interface>
             <name>IDataConnection</name>
@@ -300,9 +270,8 @@
             <instance>slot2</instance>
         </interface>
     </hal>
-    <hal format="hidl">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.radio.qtiradio</name>
-        <transport>hwbinder</transport>
         <version>1.0</version>
         <interface>
             <name>IQtiRadio</name>
@@ -310,9 +279,8 @@
             <instance>slot2</instance>
         </interface>
     </hal>
-    <hal format="hidl">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.radio.qtiradio</name>
-        <transport>hwbinder</transport>
         <version>2.4</version>
         <interface>
             <name>IQtiRadio</name>
@@ -321,9 +289,8 @@
         </interface>
     </hal>
     <!-- QSEECom HAL service -->
-    <hal format="hidl">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.qseecom</name>
-        <transport>hwbinder</transport>
         <version>1.0</version>
         <interface>
             <name>IQSEECom</name>
@@ -331,18 +298,16 @@
         </interface>
     </hal>
     <!-- QSPM HAL service -->
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.qspmhal</name>
-        <transport>hwbinder</transport>
         <version>1.0</version>
         <interface>
             <name>IQspmhal</name>
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>vendor.qti.hardware.qteeconnector</name>
-        <transport>hwbinder</transport>
         <version>1.0</version>
         <interface>
             <name>IAppConnector</name>
@@ -360,4 +325,13 @@
              <instance>default</instance>
          </interface>
     </hal>
+    <!-- DSP Service -->
+    <hal format="hidl" optional="false">
+        <name>vendor.qti.hardware.dsp</name>
+        <version>1.0</version>
+        <interface>
+            <name>IDspService</name>
+            <instance>dspservice</instance>
+        </interface>
+    </hal>
 </compatibility-matrix>
diff --git a/fstab.hardware b/fstab.hardware
index 525b810..d27d483 100644
--- a/fstab.hardware
+++ b/fstab.hardware
@@ -6,8 +6,9 @@
 system_ext                                              /system_ext            ext4    ro,barrier=1                                         wait,slotselect,avb=vbmeta_system,logical,first_stage_mount
 vendor                                                  /vendor                ext4    ro,barrier=1                                         wait,slotselect,avb=vbmeta,logical,first_stage_mount
 product                                                 /product               ext4    ro,barrier=1                                         wait,slotselect,avb,logical,first_stage_mount
-/dev/block/by-name/metadata                             /metadata              ext4    noatime,nosuid,nodev,discard,sync                    wait,formattable,first_stage_mount,check,metadata_csum
+/dev/block/by-name/metadata                             /metadata              ext4    noatime,nosuid,nodev,discard,data=journal,commit=1   wait,formattable,first_stage_mount,check,metadata_csum
+/dev/block/bootdevice/by-name/modem                     /vendor/firmware_mnt   vfat    ro,shortname=lower,uid=0,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait,slotselect
 /dev/block/bootdevice/by-name/misc                      /misc                  emmc    defaults                                             defaults
-/dev/block/bootdevice/by-name/userdata                  /data                  f2fs    noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier,inlinecrypt       latemount,wait,check,quota,formattable,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,reservedsize=128M,sysfs_path=/sys/devices/platform/soc/1d84000.ufshc,keydirectory=/metadata/vold/metadata_encryption,checkpoint=fs
+/dev/block/bootdevice/by-name/userdata                  /data                  f2fs    noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier,inlinecrypt       latemount,wait,check,quota,formattable,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,reservedsize=128M,sysfs_path=/dev/sys/block/bootdevice,keydirectory=/metadata/vold/metadata_encryption,checkpoint=fs
 /devices/platform/soc/a600000.ssusb/a600000.dwc3*       auto                   vfat    defaults                                             voldmanaged=usb:auto
 /dev/block/zram0                                        none                   swap    defaults                                             zramsize=2147483648,max_comp_streams=8,zram_backingdev_size=512M
diff --git a/fstab.persist b/fstab.persist
new file mode 100644
index 0000000..f3840b1
--- /dev/null
+++ b/fstab.persist
@@ -0,0 +1,4 @@
+# Keep persist in an fstab file, since we need to run fsck on it after abnormal shutdown.
+
+#<src>                                                <mnt_point>         <type>  <mnt_flags and options>         <fs_mgr_flags>
+/dev/block/platform/soc/1d84000.ufshc/by-name/persist /mnt/vendor/persist ext4    nosuid,nodev,noatime,barrier=1  wait
diff --git a/health/Health.cpp b/health/Health.cpp
index 12cf599..8397798 100644
--- a/health/Health.cpp
+++ b/health/Health.cpp
@@ -59,14 +59,16 @@
 constexpr char kBatteryOCV[] {FG_DIR "/bms/voltage_ocv"};
 constexpr char kVoltageAvg[] {FG_DIR "/battery/voltage_now"};
 
-static BatteryDefender battDefender;
+#define WLC_DIR "/sys/class/power_supply/wireless"
+
+static BatteryDefender battDefender(WLC_DIR "/present");
 static BatteryThermalControl battThermalControl(
     "sys/devices/virtual/thermal/tz-by-name/soc/mode");
 static BatteryMetricsLogger battMetricsLogger(kBatteryResistance, kBatteryOCV);
 static LowBatteryShutdownMetrics shutdownMetrics(kVoltageAvg);
 static DeviceHealth deviceHealth;
 
-#define UFS_DIR "/sys/devices/platform/soc/1d84000.ufshc"
+#define UFS_DIR "/dev/sys/block/bootdevice"
 constexpr char kUfsHealthEol[]{UFS_DIR "/health_descriptor/eol_info"};
 constexpr char kUfsHealthLifetimeA[]{UFS_DIR "/health_descriptor/life_time_estimation_a"};
 constexpr char kUfsHealthLifetimeB[]{UFS_DIR "/health_descriptor/life_time_estimation_b"};
@@ -76,7 +78,6 @@
 
 constexpr char kTCPMPSYName[]{"tcpm-source-psy-usbpd0"};
 
-#define WLC_DIR "/sys/class/power_supply/wireless"
 static bool needs_wlc_updates = false;
 constexpr char kWlcCapacity[]{WLC_DIR "/capacity"};
 
@@ -118,6 +119,9 @@
 void private_healthd_board_init(struct healthd_config *hc) {
   hc->ignorePowerSupplyNames.push_back(android::String8(kTCPMPSYName));
   needs_wlc_updates = FileExists(kWlcCapacity);
+  if (needs_wlc_updates == false) {
+    battDefender.setWirelessNotSupported();
+  }
 }
 
 int private_healthd_board_battery_update(struct android::BatteryProperties *props) {
diff --git a/init.hardware.diag.rc.userdebug b/init.hardware.diag.rc.userdebug
index 84640fc..16225b9 100644
--- a/init.hardware.diag.rc.userdebug
+++ b/init.hardware.diag.rc.userdebug
@@ -109,3 +109,9 @@
 
 on property:persist.vendor.usb.usbradio.config=*
    start usbd
+
+on property:power.battery_input.suspended=true
+   write /sys/kernel/debug/google_charger/input_suspend 1
+
+on property:power.battery_input.suspended=false
+   write /sys/kernel/debug/google_charger/input_suspend 0
diff --git a/init.hardware.rc b/init.hardware.rc
index c932a95..f7a463f 100644
--- a/init.hardware.rc
+++ b/init.hardware.rc
@@ -34,6 +34,7 @@
 on early-init
     mount debugfs debugfs /sys/kernel/debug
     chmod 0755 /sys/kernel/debug
+    mount_all /vendor/etc/fstab.persist --early
 
     # configure governor settings
     write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor schedutil
@@ -81,26 +82,19 @@
     write /sys/block/sda/queue/iostats 0
     write /sys/block/sda/queue/scheduler cfq
     write /sys/block/sda/queue/iosched/slice_idle 0
-    write /sys/block/sda/queue/read_ahead_kb 2048
     write /sys/block/sda/queue/nr_requests 256
-    write /sys/block/dm-0/queue/read_ahead_kb 2048
-    write /sys/block/dm-1/queue/read_ahead_kb 2048
-    write /sys/block/dm-2/queue/read_ahead_kb 2048
-    write /sys/block/dm-3/queue/read_ahead_kb 2048
-    write /sys/block/dm-4/queue/read_ahead_kb 2048
-    write /sys/block/dm-5/queue/read_ahead_kb 2048
-    write /sys/block/dm-6/queue/read_ahead_kb 2048
-    write /sys/block/dm-7/queue/read_ahead_kb 2048
-    write /sys/block/dm-8/queue/read_ahead_kb 2048
-
-    # Disable UFS powersaving
-    write /sys/devices/platform/soc/${ro.boot.bootdevice}/clkgate_enable 0
 
     # Disable powersaving
     write /sys/module/lpm_levels/parameters/sleep_disabled 1
 
-    wait /dev/block/platform/soc/${ro.boot.bootdevice}
-    symlink /dev/block/platform/soc/${ro.boot.bootdevice} /dev/block/bootdevice
+    wait /dev/block/platform/${ro.boot.boot_devices}
+    symlink /dev/block/platform/${ro.boot.boot_devices} /dev/block/bootdevice
+
+    # to access UFS/eMMC sysfs directly
+    symlink /sys/devices/platform/${ro.boot.boot_devices} /dev/sys/block/bootdevice
+
+    # Disable UFS powersaving
+    write /dev/sys/block/bootdevice/clkgate_enable 0
 
     # start qseecomd early as we mount system/ vendor/ early
     # vold needs keymaster that needs qseecomd
@@ -130,13 +124,6 @@
     # Some user code relies on ro.boot.hardware.revision
     setprop ro.boot.hardware.revision ${ro.revision}
 
-    mkdir /dev/cpuset/camera-daemon
-    write /dev/cpuset/camera-daemon/cpus 0-7
-    write /dev/cpuset/camera-daemon/mems 0
-    chown system system /dev/cpuset/camera-daemon
-    chown system system /dev/cpuset/camera-daemon/tasks
-    chmod 0664 /dev/cpuset/camera-daemon/tasks
-
     mkdir /dev/cpuset/camera-daemon-dedicated
     write /dev/cpuset/camera-daemon-dedicated/cpus 0-7
     write /dev/cpuset/camera-daemon-dedicated/mems 0
@@ -144,13 +131,9 @@
     chown system system /dev/cpuset/camera-daemon-dedicated/tasks
     chmod 0664 /dev/cpuset/camera-daemon-dedicated/tasks
 
-    # create an stune group for camera-specific processes
-    mkdir /dev/stune/camera-daemon
+    # set default schedTune value for camera-daemon
     write /dev/stune/camera-daemon/schedtune.prefer_idle 1
     write /dev/stune/camera-daemon/schedtune.boost 0
-    chown system system /dev/stune/camera-daemon
-    chown system system /dev/stune/camera-daemon/tasks
-    chmod 0664 /dev/stune/camera-daemon/tasks
 
     # Allow PAI targeting per hardware SKU
     setprop ro.oem.key1 ${ro.boot.hardware.sku}
@@ -174,11 +157,15 @@
     chown system system /sys/devices/platform/soc/soc:google,charger/bd_trigger_voltage
     chown system system /sys/devices/platform/soc/soc:google,charger/bd_temp_enable
     chown system system /sys/devices/platform/soc/soc:google,charger/bd_temp_dry_run
+    chown system system /sys/devices/platform/soc/soc:google,charger/bd_clear
     chown system system /sys/devices/platform/soc/soc:google,battery/power_supply/battery/bd_trickle_enable
     chown system system /sys/devices/platform/soc/soc:google,battery/power_supply/battery/bd_trickle_recharge_soc
     chown system system /sys/devices/platform/soc/soc:google,battery/power_supply/battery/bd_trickle_cnt
     chown system system /sys/devices/platform/soc/soc:google,battery/power_supply/battery/bd_trickle_dry_run
     chown system system /sys/devices/platform/soc/soc:google,battery/power_supply/battery/bd_trickle_reset_sec
+    chown system system /sys/devices/platform/soc/soc:google,battery/power_supply/battery/bd_clear
+    chown system system /sys/devices/platform/soc/soc:google,battery/power_supply/battery/health_safety_margin
+    chown system system /sys/class/power_supply/wireless/device/mitigate_threshold
 
     # report max frequency to unity tasks.
     write /proc/sys/kernel/sched_lib_name "UnityMain,libunity.so"
@@ -272,8 +259,6 @@
 
     # Mount RW partitions which need run fsck
     mount_all /vendor/etc/fstab.${ro.boot.hardware.platform} --late
-    # Boot time fs tune
-    write /sys/block/dm-9/queue/read_ahead_kb 2048
 
     # Required for time_daemon
     mkdir /mnt/vendor/persist/time 0770 system system
@@ -465,13 +450,13 @@
 
     # Permission for Pixelstats
     chown system system /sys/class/misc/msm_cirrus_playback/resistance_left_right
-    chown system system /sys/devices/platform/soc/${ro.boot.bootdevice}/slowio_read_cnt
-    chown system system /sys/devices/platform/soc/${ro.boot.bootdevice}/slowio_write_cnt
-    chown system system /sys/devices/platform/soc/${ro.boot.bootdevice}/slowio_unmap_cnt
-    chown system system /sys/devices/platform/soc/${ro.boot.bootdevice}/slowio_sync_cnt
+    chown system system /dev/sys/block/bootdevice/slowio_read_cnt
+    chown system system /dev/sys/block/bootdevice/slowio_write_cnt
+    chown system system /dev/sys/block/bootdevice/slowio_unmap_cnt
+    chown system system /dev/sys/block/bootdevice/slowio_sync_cnt
 
     # Permission for Health Storage HAL
-    chown system system /sys/devices/platform/soc/${ro.boot.bootdevice}/manual_gc
+    chown system system /dev/sys/block/bootdevice/manual_gc
 
     # Permissions for reading display native color gamut
     chown system graphics /mnt/vendor/persist/display/native_gamut.csv
@@ -529,19 +514,8 @@
     setprop vendor.setup.power 1
 
     # Runtime fs tuning
-    write /sys/block/sda/queue/read_ahead_kb 128
     write /sys/block/sda/queue/nr_requests 128
     write /sys/block/sda/queue/iostats 1
-    write /sys/block/dm-0/queue/read_ahead_kb 128
-    write /sys/block/dm-1/queue/read_ahead_kb 128
-    write /sys/block/dm-2/queue/read_ahead_kb 128
-    write /sys/block/dm-3/queue/read_ahead_kb 128
-    write /sys/block/dm-4/queue/read_ahead_kb 128
-    write /sys/block/dm-5/queue/read_ahead_kb 128
-    write /sys/block/dm-6/queue/read_ahead_kb 128
-    write /sys/block/dm-7/queue/read_ahead_kb 128
-    write /sys/block/dm-8/queue/read_ahead_kb 128
-    write /sys/block/dm-9/queue/read_ahead_kb 128
 
     # Block layer tuning: discard chunk size up to 128MB
     # Otherwise, contiguous discards can be merged
@@ -715,7 +689,7 @@
     mkdir /data/vendor/wifidump 771 root system
     mkdir /data/vendor/ramdump 771 root system
     mkdir /data/vendor/ssrdump 771 root system
-    mkdir /data/vendor/ssrlog  771 root system
+    mkdir /data/vendor/ssrlog  775 root system
     start vendor.ss_ramdump
 
 on property:persist.vendor.sys.ssr.enable_ramdumps=0
@@ -745,6 +719,29 @@
     setprop persist.vendor.charge.stop.level 35
     setprop persist.vendor.charge.start.level 30
 
+# Test Harness Mode default battery profile. Restricted but not too restricted.
+on  property:persist.sys.test_harness=1 && property:persist.vendor.testing_battery_profile=0
+    setprop persist.vendor.charge.stop.level 70
+    setprop persist.vendor.charge.start.level 35
+    setprop vendor.battery.defender.disable 1
+
+# Extremely restricted battery profile.
+on  property:persist.sys.test_harness=1 && property:persist.vendor.testing_battery_profile=1
+    setprop persist.vendor.charge.stop.level 50
+    setprop persist.vendor.charge.start.level 35
+    setprop vendor.battery.defender.disable 1
+
+# Normal behavior (as if the device was a regular device)
+on  property:persist.sys.test_harness=1 && property:persist.vendor.testing_battery_profile=2
+    setprop persist.vendor.charge.stop.level 100
+    setprop persist.vendor.charge.start.level 0
+
+# Unrestricted, allows charging to 100%
+on  property:persist.sys.test_harness=1 && property:persist.vendor.testing_battery_profile=3
+    setprop persist.vendor.charge.stop.level 100
+    setprop persist.vendor.charge.start.level 0
+    setprop vendor.battery.defender.disable 1
+
 service insmod_sh /vendor/bin/init.insmod.sh /vendor/etc/init.insmod.${ro.hardware}.cfg
     class main
     user root
diff --git a/init.hardware.usb.rc b/init.hardware.usb.rc
index 12a48a7..999cc60 100644
--- a/init.hardware.usb.rc
+++ b/init.hardware.usb.rc
@@ -14,7 +14,7 @@
 # limitations under the License.
 #
 
-on early-boot
+on post-fs-data
     mkdir /config/usb_gadget/g1 0770
     mkdir /config/usb_gadget/g1/strings/0x409 0770
     write /config/usb_gadget/g1/bcdUSB 0x0200
@@ -49,6 +49,7 @@
     mount functionfs mtp /dev/usb-ffs/mtp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
     mount functionfs ptp /dev/usb-ffs/ptp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
     setprop sys.usb.mtp.device_type 3
+    setprop sys.usb.mtp.batchcancel true
     setprop sys.usb.controller "a600000.dwc3"
     symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
     write /sys/module/libcomposite/parameters/disable_l1_for_hs "y"
diff --git a/init.insmod.sh b/init.insmod.sh
new file mode 100644
index 0000000..a222838
--- /dev/null
+++ b/init.insmod.sh
@@ -0,0 +1,53 @@
+#!/vendor/bin/sh
+
+#############################################################
+### init.insmod.cfg format:                               ###
+### ----------------------------------------------------- ###
+### [insmod|setprop|enable/moprobe|wait] [path|prop name] ###
+### ...                                                   ###
+#############################################################
+
+# imitates wait_for_file() in init
+wait_for_file()
+{
+    filename="${1}"
+    timeout="${2:-5}"
+
+    expiry=$(($(date "+%s")+timeout))
+    while [[ ! -e "${filename}" ]] && [[ "$(date "+%s")" -le "${expiry}" ]]
+    do
+        sleep 0.01
+    done
+}
+
+if [ $# -eq 1 ]; then
+  cfg_file=$1
+else
+  exit 1
+fi
+
+
+if [ -f $cfg_file ]; then
+  while IFS="|" read -r action arg
+  do
+    case $action in
+      "insmod") insmod $arg ;;
+      "setprop") setprop $arg 1 ;;
+      "enable") echo 1 > $arg ;;
+      "modprobe")
+        case ${arg} in
+          "-b *" | "-b")
+            arg="-b $(cat /vendor/lib/modules/modules.load)" ;;
+          "*" | "")
+            arg="$(cat /vendor/lib/modules/modules.load)" ;;
+        esac
+        modprobe -a -d /vendor/lib/modules $arg ;;
+      "wait") wait_for_file $arg ;;
+    esac
+  done < $cfg_file
+fi
+
+# set property even if there is no insmod config
+# as property value "1" is expected in early-boot trigger
+setprop vendor.all.modules.ready 1
+setprop vendor.all.devices.ready 1
diff --git a/init.power.rc b/init.power.rc
index 5ab12f5..4394752 100644
--- a/init.power.rc
+++ b/init.power.rc
@@ -132,7 +132,7 @@
     write /sys/module/lpm_levels/parameters/sleep_disabled 0
 
     # Enable UFS powersaving
-    write /sys/devices/platform/soc/${ro.boot.bootdevice}/clkgate_enable 1
+    write /dev/sys/block/bootdevice/clkgate_enable 1
 
     # Enable idle state listener
     write /sys/class/drm/card0/device/idle_encoder_mask 1
diff --git a/manifest.xml b/manifest.xml
index 2de8ef4..2ef2d5d 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -30,7 +30,7 @@
     <hal format="hidl">
         <name>android.hardware.audio</name>
         <transport>hwbinder</transport>
-        <version>6.0</version>
+        <version>7.0</version>
         <interface>
             <name>IDevicesFactory</name>
             <instance>default</instance>
@@ -39,7 +39,7 @@
     <hal format="hidl">
         <name>android.hardware.audio.effect</name>
         <transport>hwbinder</transport>
-        <version>6.0</version>
+        <version>7.0</version>
         <interface>
             <name>IEffectsFactory</name>
             <instance>default</instance>
@@ -65,15 +65,6 @@
         </interface>
     </hal>
     <hal format="hidl">
-        <name>android.hardware.confirmationui</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IConfirmationUI</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
         <name>android.hardware.soundtrigger</name>
         <transport>hwbinder</transport>
         <version>2.3</version>
@@ -82,22 +73,6 @@
             <instance>default</instance>
         </interface>
     </hal>
-    <!-- video omx hal -->
-    <hal format="hidl">
-        <name>android.hardware.media.omx</name>
-        <transport>hwbinder</transport>
-        <impl level="generic"></impl>
-        <version>1.0</version>
-        <interface>
-            <name>IOmx</name>
-            <instance>default</instance>
-        </interface>
-        <interface>
-            <name>IOmxStore</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <!-- /video omx hal -->
     <!-- display -->
     <hal format="hidl">
         <name>android.hardware.renderscript</name>
@@ -120,7 +95,7 @@
     <hal format="hidl">
         <name>vendor.google.radioext</name>
         <transport>hwbinder</transport>
-        <version>1.2</version>
+        <version>1.3</version>
         <interface>
             <name>IRadioExt</name>
             <instance>default</instance>
@@ -139,8 +114,8 @@
     <hal format="hidl">
         <name>android.hardware.secure_element</name>
         <transport>hwbinder</transport>
-        <fqname>@1.0::ISecureElement/SIM1</fqname>
-        <fqname>@1.0::ISecureElement/SIM2</fqname>
+        <fqname>@1.2::ISecureElement/SIM1</fqname>
+        <fqname>@1.2::ISecureElement/SIM2</fqname>
         <fqname>@1.2::ISecureElement/eSE1</fqname>
     </hal>
     <!-- gatekeeper -->
@@ -288,7 +263,7 @@
    <hal format="hidl">
        <name>com.qualcomm.qti.uceservice</name>
        <transport>hwbinder</transport>
-       <version>2.2</version>
+       <version>2.3</version>
        <interface>
          <name>IUceService</name>
          <instance>com.qualcomm.qti.uceservice</instance>
@@ -335,7 +310,7 @@
     <hal format="hidl">
         <name>vendor.qti.data.factory</name>
         <transport>hwbinder</transport>
-        <version>2.1</version>
+        <version>2.2</version>
         <interface>
             <name>IFactory</name>
             <instance>default</instance>
@@ -410,16 +385,16 @@
         </interface>
       </hal>
     <hal format="hidl">
-        <name>vendor.qti.hardware.bluetooth_sar</name>
+        <name>hardware.google.bluetooth.sar</name>
         <transport>hwbinder</transport>
-        <version>1.1</version>
+        <version>1.0</version>
         <interface>
             <name>IBluetoothSar</name>
             <instance>default</instance>
         </interface>
     </hal>
     <hal format="hidl">
-        <name>vendor.qti.hardware.bt_channel_avoidance</name>
+        <name>hardware.google.bluetooth.bt_channel_avoidance</name>
         <transport>hwbinder</transport>
         <version>1.0</version>
         <interface>
@@ -526,4 +501,14 @@
             <instance>default</instance>
         </interface>
     </hal>
+    <!-- DSP Service -->
+    <hal format="hidl">
+        <name>vendor.qti.hardware.dsp</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IDspService</name>
+            <instance>dspservice</instance>
+        </interface>
+    </hal>
 </manifest>
diff --git a/framework_manifest.xml b/manifest_omx.xml
similarity index 77%
rename from framework_manifest.xml
rename to manifest_omx.xml
index b2276a5..c6cfe66 100644
--- a/framework_manifest.xml
+++ b/manifest_omx.xml
@@ -1,4 +1,4 @@
-<!-- Copyright (c) 2018, The Linux Foundation. All rights reserved.
+<!-- Copyright (c) 2017-2021, 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
@@ -25,15 +25,21 @@
 OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -->
-<manifest version="1.0" type="framework">
-    <!-- atfwd -->
+<manifest version="1.0" type="device" target-level="5">
+    <!-- video omx hal -->
     <hal format="hidl">
-        <name>vendor.qti.hardware.radio.atcmdfwd</name>
+        <name>android.hardware.media.omx</name>
         <transport>hwbinder</transport>
+        <impl level="generic"></impl>
         <version>1.0</version>
         <interface>
-            <name>IAtCmdFwd</name>
-            <instance>AtCmdFwdService</instance>
+            <name>IOmx</name>
+            <instance>default</instance>
+        </interface>
+        <interface>
+            <name>IOmxStore</name>
+            <instance>default</instance>
         </interface>
     </hal>
+    <!-- /video omx hal -->
 </manifest>
diff --git a/media_codecs_c2.xml b/media_codecs_c2.xml
index 8b4a52e..6828a93 100644
--- a/media_codecs_c2.xml
+++ b/media_codecs_c2.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <!--
-    Copyright (c) 2018-2019 Qualcomm Technologies, Inc.
+    Copyright (c) 2019-2020 Qualcomm Technologies, Inc.
     All Rights Reserved.
     Confidential and Proprietary - Qualcomm Technologies, Inc.
 
@@ -67,11 +67,11 @@
         <!-- C2 decoders -->
         <MediaCodec name="c2.qti.avc.decoder" type="video/avc">
             <Alias name="OMX.qcom.video.decoder.avc" />
-            <Limit name="size" min="96x96" max="4096x2160" />
+            <Limit name="size" min="128x128" max="4096x2176" />
             <Limit name="alignment" value="2x2" />
             <Limit name="block-size" value="16x16" />
-            <Limit name="blocks-per-second" range="24-2073600" />
-            <Limit name="bitrate" range="1-120000000" />
+            <Limit name="blocks-per-second" range="64-1958400" />
+            <Limit name="bitrate" range="1-100000000" />
             <Limit name="frame-rate" range="1-480" />
             <Limit name="concurrent-instances" max="16" />
             <Limit name="performance-point-4096x2160" value="24" />
@@ -81,10 +81,10 @@
             <Feature name="adaptive-playback" />
         </MediaCodec>
         <MediaCodec name="c2.qti.avc.decoder.low_latency" type="video/avc">
-            <Limit name="size" min="96x96" max="4096x2160" />
+            <Limit name="size" min="128x128" max="4096x2176" />
             <Limit name="alignment" value="2x2" />
             <Limit name="block-size" value="16x16" />
-            <Limit name="blocks-per-second" range="24-2073600" />
+            <Limit name="blocks-per-second" range="64-1958400" />
             <Limit name="bitrate" range="1-60000000" />
             <Limit name="frame-rate" range="1-480" />
             <Limit name="performance-point-4096x2160" value="24" />
@@ -97,7 +97,7 @@
         </MediaCodec>
         <MediaCodec name="c2.qti.avc.decoder.secure" type="video/avc" >
             <Alias name="OMX.qcom.video.decoder.avc.secure" />
-            <Limit name="size" min="96x96" max="4096x2160" />
+            <Limit name="size" min="128x128" max="4096x2176" />
             <Limit name="alignment" value="2x2" />
             <Limit name="block-size" value="16x16" />
             <Limit name="blocks-per-second" min="1" max="1958400" />
@@ -112,11 +112,11 @@
         </MediaCodec>
         <MediaCodec name="c2.qti.hevc.decoder" type="video/hevc" >
             <Alias name="OMX.qcom.video.decoder.hevc" />
-            <Limit name="size" min="96x96" max="4096x2160" />
+            <Limit name="size" min="128x128" max="4096x2176" />
             <Limit name="alignment" value="2x2" />
             <Limit name="block-size" value="16x16" />
-            <Limit name="blocks-per-second" min="24" max="2073600" />
-            <Limit name="bitrate" range="1-120000000" />
+            <Limit name="blocks-per-second" min="64" max="1958400" />
+            <Limit name="bitrate" range="1-100000000" />
             <Limit name="frame-rate" range="1-480" />
             <Limit name="performance-point-4096x2160" value="24" />
             <Limit name="performance-point-3840x2160" value="30" />
@@ -126,10 +126,10 @@
             <Limit name="concurrent-instances" max="16" />
         </MediaCodec>
         <MediaCodec name="c2.qti.hevc.decoder.low_latency" type="video/hevc" >
-            <Limit name="size" min="96x96" max="4096x2160" />
+            <Limit name="size" min="128x128" max="4096x2176" />
             <Limit name="alignment" value="2x2" />
             <Limit name="block-size" value="16x16" />
-            <Limit name="blocks-per-second" min="24" max="2073600" />
+            <Limit name="blocks-per-second" min="64" max="1958400" />
             <Limit name="bitrate" range="1-60000000" />
             <Limit name="frame-rate" range="1-480" />
             <Limit name="performance-point-4096x2160" value="24" />
@@ -142,7 +142,7 @@
         </MediaCodec>
         <MediaCodec name="c2.qti.hevc.decoder.secure" type="video/hevc" >
             <Alias name="OMX.qcom.video.decoder.hevc.secure" />
-            <Limit name="size" min="96x96" max="4096x2160" />
+            <Limit name="size" min="128x128" max="4096x2176" />
             <Limit name="alignment" value="2x2" />
             <Limit name="block-size" value="16x16" />
             <Limit name="blocks-per-second" min="24" max="2073600" />
@@ -157,24 +157,26 @@
         </MediaCodec>
         <MediaCodec name="c2.qti.vp8.decoder" type="video/x-vnd.on2.vp8" >
             <Alias name="OMX.qcom.video.decoder.vp8" />
-            <Limit name="size" min="96x96" max="1920x1088" />
+            <Limit name="size" min="128x128" max="4096x2176" />
             <Limit name="alignment" value="2x2" />
             <Limit name="block-size" value="16x16" />
-            <Limit name="blocks-per-second" min="24" max="1036800" />
-            <Limit name="bitrate" range="1-120000000" />
+            <Limit name="blocks-per-second" min="64" max="1036800" />
+            <Limit name="bitrate" range="1-100000000" />
             <Limit name="frame-rate" range="1-240" />
-            <Limit name="performance-point-1920x1080" value="120" />
-            <Limit name="performance-point-1280x720" value="240" />
+            <Limit name="performance-point-4096x2160" value="24" />
+            <Limit name="performance-point-3840x2160" value="30" />
+            <Limit name="performance-point-1920x1080" value="60" />
+            <Limit name="performance-point-1280x720" value="120" />
             <Feature name="adaptive-playback" />
             <Limit name="concurrent-instances" max="16" />
         </MediaCodec>
         <MediaCodec name="c2.qti.vp9.decoder" type="video/x-vnd.on2.vp9" >
             <Alias name="OMX.qcom.video.decoder.vp9" />
-            <Limit name="size" min="96x96" max="4096x2160" />
+            <Limit name="size" min="128x128" max="4096x2176" />
             <Limit name="alignment" value="2x2" />
             <Limit name="block-size" value="16x16" />
-            <Limit name="blocks-per-second" min="24" max="2073600" />
-            <Limit name="bitrate" range="1-120000000" />
+            <Limit name="blocks-per-second" min="64" max="1958400" />
+            <Limit name="bitrate" range="1-100000000" />
             <Limit name="frame-rate" range="1-480" />
             <Limit name="performance-point-4096x2304" value="24" />
             <Limit name="performance-point-3840x2160" value="30" />
@@ -184,7 +186,7 @@
             <Limit name="concurrent-instances" max="7" />
         </MediaCodec>
         <MediaCodec name="c2.qti.vp9.decoder.secure" type="video/x-vnd.on2.vp9" >
-            <Limit name="size" min="96x96" max="4096x2160" />
+            <Limit name="size" min="128x128" max="4096x2176" />
             <Limit name="alignment" value="2x2" />
             <Limit name="block-size" value="16x16" />
             <Limit name="blocks-per-second" min="24" max="2073600" />
@@ -203,11 +205,11 @@
         <!-- C2 encoders -->
         <MediaCodec name="c2.qti.avc.encoder" type="video/avc">
             <Alias name="OMX.qcom.video.encoder.avc" />
-            <Limit name="size" min="96x96" max="4096x2160" />
+            <Limit name="size" min="128x128" max="4096x2176" />
             <Limit name="alignment" value="2x2" />
             <Limit name="block-size" value="16x16" />
-            <Limit name="blocks-per-second" min="24" max="2073600" />
-            <Limit name="bitrate" range="1-120000000" />
+            <Limit name="blocks-per-second" min="64" max="1958400" />
+            <Limit name="bitrate" range="1-100000000" />
             <Limit name="frame-rate" range="1-480" />
             <Limit name="concurrent-instances" max="16" />
             <Limit name="performance-point-4096x2160" value="24" />
@@ -215,14 +217,23 @@
             <Limit name="performance-point-1920x1080" value="120" />
             <Limit name="performance-point-1280x720" value="240" />
             <Feature name="bitrate-modes" value="VBR,CBR" />
+            <!-- Video Quality control -->
+                    <!-- QP supported using vendor extensions -->
+            <Feature name="qp-bounds" />
+            <Mapping kind="vq" name="video-qp-b-max" value="vendor.qti-ext-enc-qp-range.qp-b-max" />
+            <Mapping kind="vq" name="video-qp-b-min" value="vendor.qti-ext-enc-qp-range.qp-b-min" />
+            <Mapping kind="vq" name="video-qp-i-max" value="vendor.qti-ext-enc-qp-range.qp-i-max" />
+            <Mapping kind="vq" name="video-qp-i-min" value="vendor.qti-ext-enc-qp-range.qp-i-min" />
+            <Mapping kind="vq" name="video-qp-p-max" value="vendor.qti-ext-enc-qp-range.qp-p-max" />
+            <Mapping kind="vq" name="video-qp-p-min" value="vendor.qti-ext-enc-qp-range.qp-p-min" />
         </MediaCodec>
         <MediaCodec name="c2.qti.hevc.encoder" type="video/hevc">
             <Alias name="OMX.qcom.video.encoder.hevc" />
-            <Limit name="size" min="96x96" max="4096x2160" />
+            <Limit name="size" min="128x128" max="4096x2176" />
             <Limit name="alignment" value="2x2" />
             <Limit name="block-size" value="16x16" />
-            <Limit name="blocks-per-second" min="24" max="2073600" />
-            <Limit name="bitrate" range="1-120000000" />
+            <Limit name="blocks-per-second" min="64" max="1958400" />
+            <Limit name="bitrate" range="1-100000000" />
             <Limit name="frame-rate" range="1-480" />
             <Limit name="concurrent-instances" max="16" />
             <Limit name="quality" range="0-100" default="80" />
@@ -263,15 +274,17 @@
         </MediaCodec>
         <MediaCodec name="c2.qti.vp8.encoder" type="video/x-vnd.on2.vp8">
             <Alias name="OMX.qcom.video.encoder.vp8" />
-            <Limit name="size" min="96x96" max="1920x1088" />
+            <Limit name="size" min="128x128" max="4096x2176" />
             <Limit name="alignment" value="2x2" />
             <Limit name="block-size" value="16x16" />
-            <Limit name="blocks-per-second" min="24" max="2073600" />
-            <Limit name="bitrate" range="1-120000000" />
+            <Limit name="blocks-per-second" min="64" max="1958400" />
+            <Limit name="bitrate" range="1-100000000" />
             <Limit name="frame-rate" range="1-480" />
             <Limit name="concurrent-instances" max="16" />
-            <Limit name="performance-point-1920x1080" value="120" />
-            <Limit name="performance-point-1280x720" value="240" />
+            <Limit name="performance-point-4096x2160" value="24" />
+            <Limit name="performance-point-3840x2160" value="30" />
+            <Limit name="performance-point-1920x1080" value="60" />
+            <Limit name="performance-point-1280x720" value="120" />
             <Feature name="bitrate-modes" value="VBR,CBR" />
         </MediaCodec>
     </Encoders>
diff --git a/media_codecs_performance_c2.xml b/media_codecs_performance_c2.xml
index 4ec8297..a8dde73 100644
--- a/media_codecs_performance_c2.xml
+++ b/media_codecs_performance_c2.xml
@@ -179,17 +179,17 @@
     <Encoders>
         <!-- C2 HW encoders -->
         <MediaCodec name="c2.qti.avc.encoder" type="video/avc" update="true">
-            <Limit name="measured-frame-rate-320x240" range="106-234" />
-            <Limit name="measured-frame-rate-720x480" range="64-140" />
-            <Limit name="measured-frame-rate-1280x720" range="26-56" />
-            <Limit name="measured-frame-rate-1920x1080" range="20-44" />
+            <Limit name="measured-frame-rate-320x240" range="210-390" />
+            <Limit name="measured-frame-rate-720x480" range="180-280" />
+            <Limit name="measured-frame-rate-1280x720" range="85-151" />
+            <Limit name="measured-frame-rate-1920x1080" range="50-90" />
         </MediaCodec>
         <MediaCodec name="c2.qti.hevc.encoder" type="video/hevc" update="true">
-            <Limit name="measured-frame-rate-320x240" range="309-310" /><!-- Manual N=20 -->
-            <Limit name="measured-frame-rate-720x480" range="124-126" /><!-- Manual N=20 -->
-            <Limit name="measured-frame-rate-1280x720" range="93-124" /><!-- Manual N=20 -->
-            <Limit name="measured-frame-rate-1920x1080" range="82-87" /><!-- Manual N=20 -->
-            <Limit name="measured-frame-rate-3840x2160" range="11-25" /><!-- Manual N=20 -->
+            <Limit name="measured-frame-rate-320x240" range="210-390" /><!-- Manual N=20 -->
+            <Limit name="measured-frame-rate-720x480" range="180-280" /><!-- Manual N=20 -->
+            <Limit name="measured-frame-rate-1280x720" range="85-151" /><!-- Manual N=20 -->
+            <Limit name="measured-frame-rate-1920x1080" range="50-90" /><!-- Manual N=20 -->
+            <Limit name="measured-frame-rate-3840x2160" range="18-30" /><!-- Manual N=20 -->
         </MediaCodec>
         <MediaCodec name="c2.qti.vp8.encoder" type="video/x-vnd.on2.vp8" update="true">
             <Limit name="measured-frame-rate-320x180" range="429-461" /><!-- Manual N=20 -->
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
index 951436a..ea46820 100755
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -105,9 +105,6 @@
     <!-- The restoring is handled by modem if it is true -->
     <bool translatable="false" name="skip_restoring_network_selection">true</bool>
 
-    <!-- If device has a sensor that can wake-up the lock screen -->
-    <bool name="config_dozeWakeLockScreenSensorAvailable">true</bool>
-
     <!-- If device supports pickup/lift gesture -->
     <bool name="config_dozePulsePickup">true</bool>
 
@@ -210,13 +207,6 @@
         <item>"9,1"</item>
     </string-array>
 
-    <!-- If the hardware supports specially marking packets that caused a wakeup of the
-         main CPU, set this value to the mark used. -->
-    <integer name="config_networkWakeupPacketMark">0x80000000</integer>
-
-    <!-- Mask to use when checking skb mark defined in config_networkWakeupPacketMark above. -->
-    <integer name="config_networkWakeupPacketMask">0x80000000</integer>
-
     <!-- Specifies whether to decouple the auto-suspend state of the device from the display on/off state. -->
     <bool name="config_powerDecoupleAutoSuspendModeFromDisplay">true</bool>
 
@@ -284,7 +274,7 @@
         <item>"/apex/com.android.media/javalib/updatable-media.jar"</item>
         <item>"/system/framework/framework.jar"</item>
         <item>"/system/framework/services.jar"</item>
-        <item>"/system/lib64/libsurfaceflinger.so"</item>
+        <item>"/system/bin/surfaceflinger"</item>
         <item>"/system_ext/priv-app/SystemUIGoogle/SystemUIGoogle.apk"</item>
         <item>"/vendor/lib64/lib_aion_buffer.so"</item>
         <item>"/vendor/lib64/libcamxexternalformatutils.so"</item>
@@ -347,14 +337,12 @@
         <item>10000</item>
     </integer-array>
 
-    <!-- What source to use to estimate link upstream and downstream bandwidth capacities.
-      Default is carrier_config, but it should be set to modem if the modem is returning
-      predictive (instead of instantaneous) bandwidth estimates.
-      Values are carrier_config and modem. -->
-    <string name="config_bandwidthEstimateSource">modem</string>
-
     <!-- Delay that allows some content to arrive at the display before switching
          from DOZE to ON, in millis. -->
     <integer name="config_wakeUpDelayDoze">32</integer>
 
+    <!-- Whether the device enable the standalone (SA) mode of 5G NR.-->
+    <bool name="config_telephony5gStandalone">true</bool>
+    <!-- Whether the device enable the non-standalone (NSA) mode of 5G NR.-->
+    <bool name="config_telephony5gNonStandalone">true</bool>
 </resources>
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc004/ic_5g_plus_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc004/ic_5g_plus_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc004/ic_5g_plus_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc004/ic_5g_plus_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc030/ic_5g_e_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc030/ic_5g_e_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc030/ic_5g_e_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc030/ic_5g_e_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc030/ic_5g_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc030/ic_5g_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc030/ic_5g_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc030/ic_5g_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc030/ic_5g_plus_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc030/ic_5g_plus_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc030/ic_5g_plus_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc030/ic_5g_plus_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc150/ic_5g_e_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc150/ic_5g_e_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc150/ic_5g_e_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc150/ic_5g_e_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc150/ic_5g_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc150/ic_5g_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc150/ic_5g_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc150/ic_5g_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc150/ic_5g_plus_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc150/ic_5g_plus_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc150/ic_5g_plus_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc150/ic_5g_plus_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc170/ic_5g_e_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc170/ic_5g_e_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc170/ic_5g_e_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc170/ic_5g_e_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc170/ic_5g_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc170/ic_5g_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc170/ic_5g_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc170/ic_5g_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc170/ic_5g_plus_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc170/ic_5g_plus_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc170/ic_5g_plus_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc170/ic_5g_plus_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc280/ic_5g_e_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc280/ic_5g_e_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc280/ic_5g_e_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc280/ic_5g_e_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc280/ic_5g_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc280/ic_5g_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc280/ic_5g_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc280/ic_5g_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc280/ic_5g_plus_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc280/ic_5g_plus_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc280/ic_5g_plus_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc280/ic_5g_plus_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc410/ic_5g_e_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc410/ic_5g_e_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc410/ic_5g_e_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc410/ic_5g_e_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc410/ic_5g_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc410/ic_5g_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc410/ic_5g_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc410/ic_5g_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc410/ic_5g_plus_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc410/ic_5g_plus_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc410/ic_5g_plus_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc410/ic_5g_plus_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc560/ic_5g_e_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc560/ic_5g_e_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc560/ic_5g_e_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc560/ic_5g_e_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc560/ic_5g_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc560/ic_5g_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc560/ic_5g_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc560/ic_5g_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc560/ic_5g_plus_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc560/ic_5g_plus_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc560/ic_5g_plus_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc560/ic_5g_plus_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc950/ic_5g_e_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc950/ic_5g_e_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc950/ic_5g_e_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc950/ic_5g_e_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc950/ic_5g_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc950/ic_5g_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc950/ic_5g_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc950/ic_5g_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc950/ic_5g_plus_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc950/ic_5g_plus_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc310-mnc950/ic_5g_plus_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc310-mnc950/ic_5g_plus_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc311-mnc180/ic_5g_e_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc311-mnc180/ic_5g_e_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc311-mnc180/ic_5g_e_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc311-mnc180/ic_5g_e_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc311-mnc180/ic_5g_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc311-mnc180/ic_5g_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc311-mnc180/ic_5g_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc311-mnc180/ic_5g_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc311-mnc180/ic_5g_plus_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc311-mnc180/ic_5g_plus_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc311-mnc180/ic_5g_plus_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc311-mnc180/ic_5g_plus_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc311-mnc480/ic_5g_plus_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc311-mnc480/ic_5g_plus_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc311-mnc480/ic_5g_plus_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc311-mnc480/ic_5g_plus_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc312-mnc670/ic_5g_e_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc312-mnc670/ic_5g_e_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc312-mnc670/ic_5g_e_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc312-mnc670/ic_5g_e_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc312-mnc670/ic_5g_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc312-mnc670/ic_5g_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc312-mnc670/ic_5g_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc312-mnc670/ic_5g_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc312-mnc670/ic_5g_plus_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc312-mnc670/ic_5g_plus_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc312-mnc670/ic_5g_plus_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc312-mnc670/ic_5g_plus_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc100/ic_5g_e_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc100/ic_5g_e_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc100/ic_5g_e_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc100/ic_5g_e_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc100/ic_5g_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc100/ic_5g_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc100/ic_5g_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc100/ic_5g_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc100/ic_5g_plus_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc100/ic_5g_plus_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc100/ic_5g_plus_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc100/ic_5g_plus_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc130/ic_5g_e_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc130/ic_5g_e_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc130/ic_5g_e_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc130/ic_5g_e_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc130/ic_5g_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc130/ic_5g_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc130/ic_5g_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc130/ic_5g_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc130/ic_5g_plus_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc130/ic_5g_plus_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc130/ic_5g_plus_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc130/ic_5g_plus_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc140/ic_5g_e_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc140/ic_5g_e_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc140/ic_5g_e_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc140/ic_5g_e_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc140/ic_5g_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc140/ic_5g_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc140/ic_5g_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc140/ic_5g_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc140/ic_5g_plus_mobiledata.xml b/overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc140/ic_5g_plus_mobiledata.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/drawable-mcc313-mnc140/ic_5g_plus_mobiledata.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/drawable-mcc313-mnc140/ic_5g_plus_mobiledata.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/values-mcc310-mnc004/strings.xml b/overlay/frameworks/base/packages/SettingsLib/res/values-mcc310-mnc004/strings.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/values-mcc310-mnc004/strings.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/values-mcc310-mnc004/strings.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/values-mcc311-mnc480/strings.xml b/overlay/frameworks/base/packages/SettingsLib/res/values-mcc311-mnc480/strings.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/values-mcc311-mnc480/strings.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/values-mcc311-mnc480/strings.xml
diff --git a/overlay/frameworks/base/packages/SystemUI/res/values-mcc440-mnc20/config.xml b/overlay/frameworks/base/packages/SettingsLib/res/values-mcc440-mnc20/config.xml
similarity index 100%
rename from overlay/frameworks/base/packages/SystemUI/res/values-mcc440-mnc20/config.xml
rename to overlay/frameworks/base/packages/SettingsLib/res/values-mcc440-mnc20/config.xml
diff --git a/overlay/packages/services/Telephony/res/values/config.xml b/overlay/packages/services/Telephony/res/values/config.xml
index 85f7372..4137a37 100644
--- a/overlay/packages/services/Telephony/res/values/config.xml
+++ b/overlay/packages/services/Telephony/res/values/config.xml
@@ -40,4 +40,8 @@
 
     <!-- This device can connect to 5G network in DSDS mode. -->
     <bool name="config_5g_connection_in_dsds_mode">true</bool>
+
+    <!-- This device requires that emergency calls are placed over the default data SIM when
+         possible because GNSS SUPL can only be received from the network on data subscription. -->
+    <bool name="config_gnss_supl_requires_default_data_for_emergency">true</bool>
 </resources>
diff --git a/pixelstats/Android.bp b/pixelstats/Android.bp
index e3a92a8..b0d0828 100644
--- a/pixelstats/Android.bp
+++ b/pixelstats/Android.bp
@@ -25,9 +25,6 @@
   ],
   shared_libs: [
     "libbase",
-    "libbinder",
-    "libcutils",
-    "libhidlbase",
     "liblog",
     "libutils",
     "libpixelstats",
diff --git a/pixelstats/pixelstats-vendor.redbull.rc b/pixelstats/pixelstats-vendor.redbull.rc
index 22254bb..fdf8f79 100644
--- a/pixelstats/pixelstats-vendor.redbull.rc
+++ b/pixelstats/pixelstats-vendor.redbull.rc
@@ -1,4 +1,4 @@
 service vendor.pixelstats_vendor /vendor/bin/pixelstats-vendor
     class hal
     user system
-    group system context_hub
+    group system context_hub readproc
diff --git a/pixelstats/service.cpp b/pixelstats/service.cpp
index d6c0e36..fb74ef8 100644
--- a/pixelstats/service.cpp
+++ b/pixelstats/service.cpp
@@ -28,7 +28,7 @@
 using android::hardware::google::pixel::SysfsCollector;
 using android::hardware::google::pixel::UeventListener;
 
-#define UFSHC_PATH(filename) "/sys/devices/platform/soc/1d84000.ufshc/" #filename
+#define UFSHC_PATH(filename) "/dev/sys/block/bootdevice/" #filename
 const struct SysfsCollector::SysfsPaths sysfs_paths = {
     .SlowioReadCntPath = UFSHC_PATH(slowio_read_cnt),
     .SlowioWriteCntPath = UFSHC_PATH(slowio_write_cnt),
@@ -42,12 +42,13 @@
     .UFSLifetimeA = UFSHC_PATH(health_descriptor/life_time_estimation_a),
     .UFSLifetimeB = UFSHC_PATH(health_descriptor/life_time_estimation_b),
     .UFSLifetimeC = UFSHC_PATH(health_descriptor/life_time_estimation_c),
+    .UFSHostResetPath = UFSHC_PATH(err_stats/err_host_reset),
     .F2fsStatsPath = "/sys/fs/f2fs/",
     .EEPROMPath = "/dev/battery_history"
 };
-
-const char *const kAudioUevent = "/kernel/q6audio/q6voice_uevent";
-const char *const kSSOCDetailsPath = "/sys/class/power_supply/battery/ssoc_details";
+const struct UeventListener::UeventPaths ueventPaths = {
+    .AudioUevent = "/kernel/q6audio/q6voice_uevent",
+    .WirelessChargerPtmcUevent = "POWER_SUPPLY_PTMC_ID="};
 
 int main() {
     LOG(INFO) << "starting PixelStats";
@@ -59,7 +60,7 @@
         return 1;
     }
 
-    UeventListener ueventListener(kAudioUevent, kSSOCDetailsPath);
+    UeventListener ueventListener(ueventPaths);
     std::thread listenThread(&UeventListener::ListenForever, &ueventListener);
     listenThread.detach();
 
diff --git a/power/hint-data.h b/power/hint-data.h
deleted file mode 100644
index 0cb54c2..0000000
--- a/power/hint-data.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2012, 2013, 2015, 2017, 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:
- * *    * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/* Default use-case hint IDs */
-#define DEFAULT_VIDEO_ENCODE_HINT_ID    (0x0A00)
-#define DEFAULT_VIDEO_DECODE_HINT_ID    (0x0B00)
-#define DISPLAY_STATE_HINT_ID           (0x0C00)
-#define DISPLAY_STATE_HINT_ID_2         (0x0D00)
-#define CAM_PREVIEW_HINT_ID             (0x0E00)
-#define SUSTAINED_PERF_HINT_ID          (0x0F00)
-#define VR_MODE_HINT_ID                 (0x1000)
-#define VR_MODE_SUSTAINED_PERF_HINT_ID  (0x1001)
-
-#define AOSP_DELTA                      (0x1200)
-
-#define VSYNC_HINT                      AOSP_DELTA + POWER_HINT_VSYNC
-#define INTERACTION_HINT                AOSP_DELTA + POWER_HINT_INTERACTION
-#define VIDEO_DECODE_HINT               AOSP_DELTA + POWER_HINT_VIDEO_DECODE
-#define VIDEO_ENCODE_HINT               AOSP_DELTA + POWER_HINT_VIDEO_ENCODE
-#define LOW_POWER_HINT                  AOSP_DELTA + POWER_HINT_LOW_POWER
-#define SUSTAINED_PERF_HINT             AOSP_DELTA + POWER_HINT_SUSTAINED_PERFORMANCE
-#define VR_MODE_HINT                    AOSP_DELTA + POWER_HINT_VR_MODE
-#define LAUNCH_HINT                     AOSP_DELTA + POWER_HINT_LAUNCH
-#define DISABLE_TOUCH_HINT              AOSP_DELTA + POWER_HINT_DISABLE_TOUCH
-
-#define VR_MODE_SUSTAINED_PERF_HINT    (0x1301)
-
-
-struct hint_data {
-    unsigned long hint_id; /* This is our key. */
-    unsigned long perflock_handle;
-};
-
-int hint_compare(struct hint_data *first_hint,
-        struct hint_data *other_hint);
-void hint_dump(struct hint_data *hint);
diff --git a/power/list.h b/power/list.h
deleted file mode 100644
index d68c3df..0000000
--- a/power/list.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2012, 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:
- * *    * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-struct list_node {
-    struct list_node *next;
-    void *data;
-    int (*compare)(void *data1, void *data2);
-    void (*dump)(void *data);
-};
-
-int init_list_head(struct list_node *head);
-struct list_node * add_list_node(struct list_node *head, void *data);
-int remove_list_node(struct list_node *head, struct list_node *del_node);
-void dump_list(struct list_node *head);
-struct list_node *find_node(struct list_node *head, void *comparison_data);
diff --git a/power/metadata-defs.h b/power/metadata-defs.h
deleted file mode 100644
index c464900..0000000
--- a/power/metadata-defs.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright (c) 2012, 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:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#define ATTRIBUTE_VALUE_DELIM ('=')
-#define ATTRIBUTE_STRING_DELIM (";")
-
-#define METADATA_PARSING_ERR (-1)
-#define METADATA_PARSING_CONTINUE (0)
-#define METADATA_PARSING_DONE (1)
-
-#define MIN(x,y) (((x)>(y))?(y):(x))
-
-struct video_encode_metadata_t {
-    int hint_id;
-    int state;
-};
-
-struct video_decode_metadata_t {
-    int hint_id;
-    int state;
-};
-
-int parse_metadata(char *metadata, char **metadata_saveptr,
-    char *attribute, int attribute_size, char *value, int value_size);
-int parse_video_encode_metadata(char *metadata,
-    struct video_encode_metadata_t *video_encode_metadata);
-int parse_video_decode_metadata(char *metadata,
-    struct video_decode_metadata_t *video_decode_metadata);
diff --git a/power/performance.h b/power/performance.h
deleted file mode 100644
index b7bf34b..0000000
--- a/power/performance.h
+++ /dev/null
@@ -1,265 +0,0 @@
-/* Copyright (c) 2012, 2014, 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:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define FAILED                  -1
-#define SUCCESS                 0
-#define INDEFINITE_DURATION     0
-
-/* Hints sent to perf HAL from power HAL
- * These have to be kept in sync with Perf HAL side definitions
- */
-#define VENDOR_HINT_DISPLAY_OFF      0x00001040
-#define VENDOR_HINT_DISPLAY_ON       0x00001041
-
-enum SCREEN_DISPLAY_TYPE {
-    DISPLAY_OFF = 0x00FF,
-};
-
-enum PWR_CLSP_TYPE {
-    ALL_CPUS_PWR_CLPS_DIS = 0x101,
-};
-
-/* For CPUx min freq, the leftmost byte
- * represents the CPU and the
- * rightmost byte represents the frequency
- * All intermediate frequencies on the
- * device are supported. The hex value
- * passed into PerfLock will be multiplied
- * by 10^5. This frequency or the next
- * highest frequency available will be set
- *
- * For example, if 1.4 Ghz is required on
- * CPU0, use 0x20E
- *
- * If the highest available frequency
- * on the device is required, use
- * CPUx_MIN_FREQ_TURBO_MAX
- * where x represents the CPU
- */
-enum CPU0_MIN_FREQ_LVL {
-    CPU0_MIN_FREQ_NONTURBO_MAX = 0x20A,
-    CPU0_MIN_FREQ_TURBO_MAX = 0x2FE,
-};
-
-enum CPU1_MIN_FREQ_LVL {
-    CPU1_MIN_FREQ_NONTURBO_MAX = 0x30A,
-    CPU1_MIN_FREQ_TURBO_MAX = 0x3FE,
-};
-
-enum CPU2_MIN_FREQ_LVL {
-    CPU2_MIN_FREQ_NONTURBO_MAX = 0x40A,
-    CPU2_MIN_FREQ_TURBO_MAX = 0x4FE,
-};
-
-enum CPU3_MIN_FREQ_LVL {
-    CPU3_MIN_FREQ_NONTURBO_MAX = 0x50A,
-    CPU3_MIN_FREQ_TURBO_MAX = 0x5FE,
-};
-
-enum CPU0_MAX_FREQ_LVL {
-    CPU0_MAX_FREQ_NONTURBO_MAX = 0x150A,
-};
-
-enum CPU1_MAX_FREQ_LVL {
-    CPU1_MAX_FREQ_NONTURBO_MAX = 0x160A,
-};
-
-enum CPU2_MAX_FREQ_LVL {
-    CPU2_MAX_FREQ_NONTURBO_MAX = 0x170A,
-};
-
-enum CPU3_MAX_FREQ_LVL {
-    CPU3_MAX_FREQ_NONTURBO_MAX = 0x180A,
-};
-
-enum MIN_CPUS_ONLINE_LVL {
-    CPUS_ONLINE_MIN_2 = 0x702,
-    CPUS_ONLINE_MIN_3 = 0x703,
-    CPUS_ONLINE_MIN_4 = 0x704,
-    CPUS_ONLINE_MPD_OVERRIDE = 0x777,
-    CPUS_ONLINE_MAX = 0x7FF,
-};
-
-enum MAX_CPUS_ONLINE_LVL {
-    CPUS_ONLINE_MAX_LIMIT_1 = 0x8FE,
-    CPUS_ONLINE_MAX_LIMIT_2 = 0x8FD,
-    CPUS_ONLINE_MAX_LIMIT_3 = 0x8FC,
-    CPUS_ONLINE_MAX_LIMIT_4 = 0x8FB,
-    CPUS_ONLINE_MAX_LIMIT_MAX = 0x8FB,
-};
-
-enum SAMPLING_RATE_LVL {
-    MS_500 = 0xBCD,
-    MS_50 = 0xBFA,
-    MS_20 = 0xBFD,
-};
-
-enum ONDEMAND_IO_BUSY_LVL {
-    IO_BUSY_OFF = 0xC00,
-    IO_BUSY_ON = 0xC01,
-};
-
-enum ONDEMAND_SAMPLING_DOWN_FACTOR_LVL {
-    SAMPLING_DOWN_FACTOR_1 = 0xD01,
-    SAMPLING_DOWN_FACTOR_4 = 0xD04,
-};
-
-enum INTERACTIVE_TIMER_RATE_LVL {
-    TR_MS_500 = 0xECD,
-    TR_MS_100 = 0xEF5,
-    TR_MS_50 = 0xEFA,
-    TR_MS_30 = 0xEFC,
-    TR_MS_20 = 0xEFD,
-};
-
-/* This timer rate applicable to cpu0
-    across 8939 series chipset */
-enum INTERACTIVE_TIMER_RATE_LVL_CPU0_8939 {
-    TR_MS_CPU0_500 = 0x30CD,
-    TR_MS_CPU0_100 = 0x30F5,
-    TR_MS_CPU0_50 = 0x30FA,
-    TR_MS_CPU0_30 = 0x30FC,
-    TR_MS_CPU0_20 = 0x30FD,
-};
-
-/* This timer rate applicable to cpu4
-    across 8939 series chipset */
-enum INTERACTIVE_TIMER_RATE_LVL_CPU4_8939 {
-    TR_MS_CPU4_500 = 0x3BCD,
-    TR_MS_CPU4_100 = 0x3BF5,
-    TR_MS_CPU4_50 = 0x3BFA,
-    TR_MS_CPU4_30 = 0x3BFC,
-    TR_MS_CPU4_20 = 0x3BFD,
-};
-
-/* This timer rate applicable to big.little arch */
-enum INTERACTIVE_TIMER_RATE_LVL_BIG_LITTLE {
-    BIG_LITTLE_TR_MS_100 = 0x64,
-    BIG_LITTLE_TR_MS_50 = 0x32,
-    BIG_LITTLE_TR_MS_40 = 0x28,
-    BIG_LITTLE_TR_MS_30 = 0x1E,
-    BIG_LITTLE_TR_MS_20 = 0x14,
-};
-
-/* INTERACTIVE opcodes */
-enum INTERACTIVE_OPCODES {
-    INT_OP_CLUSTER0_TIMER_RATE = 0x41424000,
-    INT_OP_CLUSTER1_TIMER_RATE = 0x41424100,
-    INT_OP_CLUSTER0_USE_SCHED_LOAD = 0x41430000,
-    INT_OP_CLUSTER1_USE_SCHED_LOAD = 0x41430100,
-    INT_OP_CLUSTER0_USE_MIGRATION_NOTIF = 0x41434000,
-    INT_OP_CLUSTER1_USE_MIGRATION_NOTIF = 0x41434100,
-    INT_OP_NOTIFY_ON_MIGRATE = 0x4241C000
-};
-
-enum INTERACTIVE_HISPEED_FREQ_LVL {
-    HS_FREQ_1026 = 0xF0A,
-};
-
-enum INTERACTIVE_HISPEED_LOAD_LVL {
-    HISPEED_LOAD_90 = 0x105A,
-};
-
-enum SYNC_FREQ_LVL {
-    SYNC_FREQ_300 = 0x1103,
-    SYNC_FREQ_600 = 0X1106,
-    SYNC_FREQ_384 = 0x1103,
-    SYNC_FREQ_NONTURBO_MAX = 0x110A,
-    SYNC_FREQ_TURBO = 0x110F,
-};
-
-enum OPTIMAL_FREQ_LVL {
-    OPTIMAL_FREQ_300 = 0x1203,
-    OPTIMAL_FREQ_600 = 0x1206,
-    OPTIMAL_FREQ_384 = 0x1203,
-    OPTIMAL_FREQ_NONTURBO_MAX = 0x120A,
-    OPTIMAL_FREQ_TURBO = 0x120F,
-};
-
-enum SCREEN_PWR_CLPS_LVL {
-    PWR_CLPS_DIS = 0x1300,
-    PWR_CLPS_ENA = 0x1301,
-};
-
-enum THREAD_MIGRATION_LVL {
-    THREAD_MIGRATION_SYNC_OFF = 0x1400,
-};
-
-enum INTERACTIVE_IO_BUSY_LVL {
-    INTERACTIVE_IO_BUSY_OFF = 0x1B00,
-    INTERACTIVE_IO_BUSY_ON = 0x1B01,
-};
-
-enum SCHED_BOOST_LVL {
-    SCHED_BOOST_ON = 0x1E01,
-};
-
-enum CPU4_MIN_FREQ_LVL {
-    CPU4_MIN_FREQ_NONTURBO_MAX = 0x1F0A,
-    CPU4_MIN_FREQ_TURBO_MAX = 0x1FFE,
-};
-
-enum CPU5_MIN_FREQ_LVL {
-    CPU5_MIN_FREQ_NONTURBO_MAX = 0x200A,
-    CPU5_MIN_FREQ_TURBO_MAX = 0x20FE,
-};
-
-enum CPU6_MIN_FREQ_LVL {
-    CPU6_MIN_FREQ_NONTURBO_MAX = 0x210A,
-    CPU6_MIN_FREQ_TURBO_MAX = 0x21FE,
-};
-
-enum CPU7_MIN_FREQ_LVL {
-    CPU7_MIN_FREQ_NONTURBO_MAX = 0x220A,
-    CPU7_MIN_FREQ_TURBO_MAX = 0x22FE,
-};
-
-enum CPU4_MAX_FREQ_LVL {
-    CPU4_MAX_FREQ_NONTURBO_MAX = 0x230A,
-};
-
-enum CPU5_MAX_FREQ_LVL {
-    CPU5_MAX_FREQ_NONTURBO_MAX = 0x240A,
-};
-
-enum CPU6_MAX_FREQ_LVL {
-    CPU6_MAX_FREQ_NONTURBO_MAX = 0x250A,
-};
-
-enum CPU7_MAX_FREQ_LVL {
-    CPU7_MAX_FREQ_NONTURBO_MAX = 0x260A,
-};
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/power/power-common.h b/power/power-common.h
deleted file mode 100644
index 5ba5e81..0000000
--- a/power/power-common.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2013, 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:
- * *    * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#define NODE_MAX (64)
-
-#define SCALING_GOVERNOR_PATH "/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
-#define DCVS_CPU0_SLACK_MAX_NODE "/sys/module/msm_dcvs/cores/cpu0/slack_time_max_us"
-#define DCVS_CPU0_SLACK_MIN_NODE "/sys/module/msm_dcvs/cores/cpu0/slack_time_min_us"
-#define MPDECISION_SLACK_MAX_NODE "/sys/module/msm_mpdecision/slack_time_max_us"
-#define MPDECISION_SLACK_MIN_NODE "/sys/module/msm_mpdecision/slack_time_min_us"
-#define SCALING_MIN_FREQ "/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq"
-#define ONDEMAND_GOVERNOR "ondemand"
-#define INTERACTIVE_GOVERNOR "interactive"
-#define MSMDCVS_GOVERNOR "msm-dcvs"
-
-#define HINT_HANDLED (0)
-#define HINT_NONE (-1)
-
-enum CPU_GOV_CHECK {
-    CPU0 = 0,
-    CPU1 = 1,
-    CPU2 = 2,
-    CPU3 = 3
-};
diff --git a/power/powerhintparser.h b/power/powerhintparser.h
deleted file mode 100644
index 5f9cbe6..0000000
--- a/power/powerhintparser.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (c) 2016, 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:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifndef __POWERHINTPARSER__
-#define __POWERHINTPARSER__
-
-#define POWERHINT_XML      "/vendor/etc/powerhint.xml"
-#define MAX_HINT 6
-#define MAX_PARAM 30
-
-typedef struct perflock_param_t {
-    int type;
-    int numParams;
-    int paramList[MAX_PARAM];//static limit on number of hints - 15
-}perflock_param_t;
-
-static perflock_param_t powerhint[MAX_HINT];
-
-int parsePowerhintXML();
-int *getPowerhint(int, int*);
-
-#endif /* __POWERHINTPARSER__ */
diff --git a/power/utils.h b/power/utils.h
deleted file mode 100644
index 4c3dc7f..0000000
--- a/power/utils.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2012-2013,2015-2017, 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:
- * *    * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <cutils/properties.h>
-
-int sysfs_read(char *path, char *s, int num_bytes);
-int sysfs_write(char *path, char *s);
-int get_scaling_governor(char governor[], int size);
-int get_scaling_governor_check_cores(char governor[], int size,int core_num);
-int is_interactive_governor(char*);
-
-void vote_ondemand_io_busy_off();
-void unvote_ondemand_io_busy_off();
-void vote_ondemand_sdf_low();
-void unvote_ondemand_sdf_low();
-void perform_hint_action(int hint_id, int resource_values[],
-    int num_resources);
-void undo_hint_action(int hint_id);
-void release_request(int lock_handle);
-int interaction_with_handle(int lock_handle, int duration, int num_args, int opt_list[]);
-int perf_hint_enable(int hint_id, int duration);
diff --git a/powerhint.json b/powerhint.json
index a4495e4..a80eb79 100644
--- a/powerhint.json
+++ b/powerhint.json
@@ -434,7 +434,7 @@
     },
     {
       "Name": "UfsClkGateEnable",
-      "Path": "/sys/devices/platform/soc/1d84000.ufshc/clkgate_enable",
+      "Path": "/dev/sys/block/bootdevice/clkgate_enable",
       "Values": [
         "0",
         "1"
@@ -442,6 +442,15 @@
       "ResetOnInit": true
     },
     {
+      "Name": "F2fsRecessModeEnable",
+      "Path": "/dev/sys/fs/by-name/userdata/gc_urgent",
+      "Values": [
+        "2",
+        "0"
+      ],
+      "ResetOnInit": true
+    },
+    {
       "Name": "PowerHALMainState",
       "Path": "vendor.powerhal.state",
       "Values": [
@@ -582,6 +591,12 @@
       "Value": "0"
     },
     {
+      "PowerHint": "DEVICE_IDLE",
+      "Node": "F2fsRecessModeEnable",
+      "Duration": 0,
+      "Value": "2"
+    },
+    {
       "PowerHint": "LAUNCH",
       "Node": "TASchedtuneHighCap",
       "Duration": 5000,
diff --git a/powerstats/RailDataProvider.cpp b/powerstats/RailDataProvider.cpp
index 9dfbbb8..d78bc71 100644
--- a/powerstats/RailDataProvider.cpp
+++ b/powerstats/RailDataProvider.cpp
@@ -210,7 +210,6 @@
   std::lock_guard<std::mutex> _lock(mOdpm.mLock);
   Status ret = parseIioEnergyNodes();
   if (ret != Status::SUCCESS) {
-    ALOGE("Failed to getEnergyData");
     _hidl_cb(eVal, ret);
     return Void();
   }
diff --git a/powerstats/service.cpp b/powerstats/service.cpp
index e83c54c..2ac4da7 100644
--- a/powerstats/service.cpp
+++ b/powerstats/service.cpp
@@ -79,8 +79,7 @@
          .lastEntryPrefix = "Sleep Last Entered At:",
          .lastEntryTransform = rpmConvertToMs}};
 
-    sp<GenericStateResidencyDataProvider> rpmSdp =
-        new GenericStateResidencyDataProvider("/sys/power/rpmh_stats/master_stats");
+    auto rpmSdp = sp<GenericStateResidencyDataProvider>::make("/sys/power/rpmh_stats/master_stats");
 
     uint32_t apssId = service->addPowerEntity("APSS", PowerEntityType::SUBSYSTEM);
     rpmSdp->addEntity(apssId, PowerEntityConfig("APSS", rpmStateResidencyConfigs));
@@ -116,8 +115,7 @@
          .totalTimePrefix = "actual last sleep(msec):",
          .lastEntrySupported = false}};
 
-    sp<GenericStateResidencyDataProvider> socSdp =
-        new GenericStateResidencyDataProvider("/sys/power/system_sleep/stats");
+    auto socSdp = sp<GenericStateResidencyDataProvider>::make("/sys/power/system_sleep/stats");
 
     uint32_t socId = service->addPowerEntity("SoC", PowerEntityType::POWER_DOMAIN);
     socSdp->addEntity(socId, PowerEntityConfig(socStateResidencyConfigs));
@@ -127,19 +125,20 @@
     if (isDebuggable) {
         // Add WLAN power entity
         uint32_t wlanId = service->addPowerEntity("WLAN", PowerEntityType::SUBSYSTEM);
-        sp<WlanStateResidencyDataProvider> wlanSdp =
-            new WlanStateResidencyDataProvider(wlanId, "/sys/kernel/wifi/power_stats");
+        auto wlanSdp = sp<WlanStateResidencyDataProvider>::make(wlanId,
+            "/sys/kernel/wifi/power_stats");
         service->addStateResidencyDataProvider(wlanSdp);
     }
 
     uint32_t displayId = service->addPowerEntity("Display", PowerEntityType::SUBSYSTEM);
-    sp<DisplayStateResidencyDataProvider> displaySdp =
-        new DisplayStateResidencyDataProvider(displayId,
-        "/sys/class/backlight/panel0-backlight/state", {"Off", "LP", "1080x2340@60", "1080x2340@90"});
+    auto displaySdp =
+        sp<DisplayStateResidencyDataProvider>::make(displayId,
+        "/sys/class/backlight/panel0-backlight/state",
+        std::vector<std::string>{"Off", "LP", "1080x2340@60", "1080x2340@90"});
     service->addStateResidencyDataProvider(displaySdp);
 
     // Add Power Entities that require the Aidl data provider
-    sp<AidlStateResidencyDataProvider> aidlSdp = new AidlStateResidencyDataProvider();
+    auto aidlSdp = sp<AidlStateResidencyDataProvider>::make();
     uint32_t citadelId = service->addPowerEntity("Citadel", PowerEntityType::SUBSYSTEM);
     aidlSdp->addEntity(citadelId, "Citadel", {"Last-Reset", "Active", "Deep-Sleep"});
 
diff --git a/product.prop b/product.prop
index 81171da..2a014a4 100644
--- a/product.prop
+++ b/product.prop
@@ -90,7 +90,7 @@
 
 # System props to enable Bluetooth Quality Report (BQR) feature
 # BQR event mask configuration
-persist.bluetooth.bqr.event_mask=14
+persist.bluetooth.bqr.event_mask=30
 # BQR minimum report interval configuration
 persist.bluetooth.bqr.min_interval_ms=500
 
diff --git a/redbull_allowlist.mk b/redbull_allowlist.mk
new file mode 100644
index 0000000..3d9a79f
--- /dev/null
+++ b/redbull_allowlist.mk
@@ -0,0 +1,2 @@
+PRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST += \
+    system/lib64/android.hardware.thermal@2.0.so
diff --git a/rro_overlays/ConnectivityOverlay/Android.bp b/rro_overlays/ConnectivityOverlay/Android.bp
new file mode 100644
index 0000000..e76c15a
--- /dev/null
+++ b/rro_overlays/ConnectivityOverlay/Android.bp
@@ -0,0 +1,9 @@
+package {
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+runtime_resource_overlay {
+    name: "ConnectivityOverlay",
+    sdk_version: "current",
+    product_specific: true
+}
diff --git a/rro_overlays/ConnectivityOverlay/AndroidManifest.xml b/rro_overlays/ConnectivityOverlay/AndroidManifest.xml
new file mode 100644
index 0000000..f349b7f
--- /dev/null
+++ b/rro_overlays/ConnectivityOverlay/AndroidManifest.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<!-- Pixel specific connectivity overlays -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.connectivity.resources.overlay"
+    android:versionCode="1"
+    android:versionName="1.0">
+    <application android:hasCode="false" />
+    <overlay
+      android:targetPackage="com.android.connectivity.resources"
+      android:targetName="ServiceConnectivityResourcesConfig"
+      android:isStatic="true"
+      android:priority="0"/>
+</manifest>
diff --git a/rro_overlays/ConnectivityOverlay/res/values/config.xml b/rro_overlays/ConnectivityOverlay/res/values/config.xml
new file mode 100644
index 0000000..d9a29b0
--- /dev/null
+++ b/rro_overlays/ConnectivityOverlay/res/values/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<resources>
+    <!-- If the hardware supports specially marking packets that caused a wakeup of the
+         main CPU, set this value to the mark used. -->
+    <integer translatable="false" name="config_networkWakeupPacketMark">0x80000000</integer>
+
+    <!-- Mask to use when checking skb mark defined in config_networkWakeupPacketMark above. -->
+    <integer translatable="false" name="config_networkWakeupPacketMask">0x80000000</integer>
+</resources>
diff --git a/rro_overlays/WifiOverlay/OWNERS b/rro_overlays/WifiOverlay/OWNERS
index efe20f1..cd92d6f 100644
--- a/rro_overlays/WifiOverlay/OWNERS
+++ b/rro_overlays/WifiOverlay/OWNERS
@@ -1,5 +1,5 @@
 # People who can approve changes for submission
 etancohen@google.com
-kumaranand@google.com
+arabawy@google.com
 kumachang@google.com
 satk@google.com
diff --git a/rro_overlays/WifiOverlay/res/values/config.xml b/rro_overlays/WifiOverlay/res/values/config.xml
index 373f400..a29458e 100644
--- a/rro_overlays/WifiOverlay/res/values/config.xml
+++ b/rro_overlays/WifiOverlay/res/values/config.xml
@@ -109,4 +109,7 @@
          b/160239223: Rx time is excluded in cca busy time and channel utilization is calculated
          correctly during heavy DL traffic -->
     <bool translatable="false" name="config_wifiChannelUtilizationOverrideEnabled">false</bool>
+
+    <!-- Whether to use the explicit vendor HAL API: IWifiStaIface.setRoamingState for disabling fw roaming. -->
+    <bool translatable="false" name="config_wifiUseHalApiToDisableFwRoaming">true</bool>
 </resources>
diff --git a/ueventd.rc b/ueventd.rc
index 9bf8230..ee63dee 100644
--- a/ueventd.rc
+++ b/ueventd.rc
@@ -154,3 +154,12 @@
 /dev/logbuffer_ttf        0640   system system
 /dev/logbuffer_wireless   0640   system system
 /dev/logbuffer_rtx        0640   system system
+
+# pixelstat
+/sys/devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-02/c440000.qcom,spmi:qcom,pm7250b@2:qcom,usb-pdphy@1700/usbpd0/typec/port0/port0-partner identity/id_header 0444 system system
+/sys/devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-02/c440000.qcom,spmi:qcom,pm7250b@2:qcom,usb-pdphy@1700/usbpd0/typec/port0/port0-partner identity/product 0444 system system
+
+# Input
+/sys/devices/platform/soc/a600000.ssusb/a600000.dwc3/xhci-hcd.2.auto/usb1/1-1/*/*/leds/* brightness 0660 system system
+/sys/devices/platform/soc/a600000.ssusb/a600000.dwc3/xhci-hcd.2.auto/usb1/1-1/*/*/leds/* multi_intensity 0660 system system
+