DO NOT MERGE - Mark RQ2A.210105.001 as merged.

Bug: 180401296
Merged-In: I9c50e1fabb901db2688ce9b3cac5646c6eeebc0f
Change-Id: I53cd0f341d309e2d55e70d939a1866accf0e7cea
diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk
index eba44f8..8d8688c 100644
--- a/BoardConfig-common.mk
+++ b/BoardConfig-common.mk
@@ -15,6 +15,7 @@
 #
 
 include build/make/target/board/BoardConfigMainlineCommon.mk
+include build/make/target/board/BoardConfigPixelCommon.mk
 
 TARGET_BOARD_PLATFORM := sdm845
 TARGET_BOARD_INFO_FILE := device/google/crosshatch/board-info.txt
@@ -97,7 +98,7 @@
     libfstab
 
 ifneq ($(filter %_mainline,$(TARGET_PRODUCT)),)
-BOARD_AVB_VBMETA_SYSTEM := system system_ext
+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)
diff --git a/METADATA b/METADATA
new file mode 100644
index 0000000..018a8b8
--- /dev/null
+++ b/METADATA
@@ -0,0 +1,4 @@
+third_party {
+  # would be NOTICE save for sdm845/original-kernel-headers/
+  license_type: RESTRICTED
+}
diff --git a/aosp_blueline.mk b/aosp_blueline.mk
index 624d5da..6598167 100644
--- a/aosp_blueline.mk
+++ b/aosp_blueline.mk
@@ -18,7 +18,7 @@
 # All components inherited here go to system image
 #
 $(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/mainline_system.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/generic_system.mk)
 
 # Enable mainline checking
 # TODO(b/138706293): enable Enable mainline checking later
@@ -49,8 +49,11 @@
 # STOPSHIP deal with Qualcomm stuff later
 # PRODUCT_RESTRICT_VENDOR_FILES := all
 
-PRODUCT_PACKAGES += com.android.vndk.current.on_vendor
-
+# Keep the VNDK APEX in /system partition for REL branches as these branches are
+# expected to have stable API/ABI surfaces.
+ifneq (REL,$(PLATFORM_VERSION_CODENAME))
+  PRODUCT_PACKAGES += com.android.vndk.current.on_vendor
+endif
 
 PRODUCT_MANUFACTURER := Google
 PRODUCT_NAME := aosp_blueline
diff --git a/aosp_crosshatch.mk b/aosp_crosshatch.mk
index c921d36..8632b92 100644
--- a/aosp_crosshatch.mk
+++ b/aosp_crosshatch.mk
@@ -18,7 +18,7 @@
 # All components inherited here go to system image
 #
 $(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/mainline_system.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/generic_system.mk)
 
 # Enable mainline checking
 # TODO(b/138706293): enable Enable mainline checking later
@@ -49,8 +49,11 @@
 # STOPSHIP deal with Qualcomm stuff later
 # PRODUCT_RESTRICT_VENDOR_FILES := all
 
-PRODUCT_PACKAGES += com.android.vndk.current.on_vendor
-
+# Keep the VNDK APEX in /system partition for REL branches as these branches are
+# expected to have stable API/ABI surfaces.
+ifneq (REL,$(PLATFORM_VERSION_CODENAME))
+  PRODUCT_PACKAGES += com.android.vndk.current.on_vendor
+endif
 
 PRODUCT_MANUFACTURER := Google
 PRODUCT_NAME := aosp_crosshatch
diff --git a/device.mk b/device.mk
index e18b22d..98d4d9d 100644
--- a/device.mk
+++ b/device.mk
@@ -241,7 +241,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-2020-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.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.hardware.telephony.carrierlock.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.carrierlock.xml \
     frameworks/native/data/etc/android.hardware.se.omapi.uicc.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.se.omapi.uicc.xml \
     frameworks/native/data/etc/android.hardware.strongbox_keystore.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.strongbox_keystore.xml \
@@ -291,6 +292,10 @@
     persist.camera.is_type=5 \
     persist.camera.gzoom.at=0
 
+# b/166675194
+PRODUCT_PROPERTY_OVERRIDES += \
+    ro.vendor.camera.provider24.disable_mem_init=1
+
 # camera google face detection
 PRODUCT_PROPERTY_OVERRIDES += \
     persist.camera.googfd.enable=1
@@ -367,8 +372,10 @@
 
 # Light HAL
 PRODUCT_PACKAGES += \
-    lights.$(PRODUCT_PLATFORM) \
+    lights.qcom \
     hardware.google.light@1.0-service
+PRODUCT_PROPERTY_OVERRIDES += \
+    ro.hardware.lights=qcom
 
 # Memtrack/Vibrator HALs
 PRODUCT_PACKAGES += \
@@ -888,6 +895,9 @@
     persist.vendor.verbose_logging_enabled=false
 endif
 
+# Pixel Logger
+include hardware/google/pixel/PixelLogger/PixelLogger.mk
+
 include hardware/google/pixel/pixelstats/device.mk
 include hardware/google/pixel/mm/device_legacy.mk
 include hardware/google/pixel/thermal/device.mk
diff --git a/gpt-utils/gpt-utils.cpp b/gpt-utils/gpt-utils.cpp
index f21e14f..b32e72f 100644
--- a/gpt-utils/gpt-utils.cpp
+++ b/gpt-utils/gpt-utils.cpp
@@ -157,11 +157,18 @@
     else
         r = read(fd, buf, len);
 
-    if (r < 0)
+    if (r < 0) {
         fprintf(stderr, "block dev %s failed: %s\n", rw ? "write" : "read",
                 strerror(errno));
-    else
-        r = 0;
+    } else {
+        if (rw) {
+            r = fsync(fd);
+            if (r < 0)
+                fprintf(stderr, "fsync failed: %s\n", strerror(errno));
+        } else {
+            r = 0;
+        }
+    }
 
     return r;
 }
diff --git a/init.hardware.rc b/init.hardware.rc
index a065339..6ff72f0 100644
--- a/init.hardware.rc
+++ b/init.hardware.rc
@@ -792,21 +792,6 @@
 on property:init.svc.vendor.hwcomposer-2-3=running
     start ppd
 
-# b/70518189 vDSO experiments
-on property:sys.vdso=*
-    write /sys/module/vdso/parameters/enable_32 1
-    write /sys/module/vdso/parameters/enable_64 1
-
-on property:sys.vdso=false
-    write /sys/module/vdso/parameters/enable_32 0
-    write /sys/module/vdso/parameters/enable_64 0
-
-on property:sys.vdso=64
-    write /sys/module/vdso/parameters/enable_32 0
-
-on property:sys.vdso=32
-    write /sys/module/vdso/parameters/enable_64 0
-
 on property:ro.boot.mode=sota
     setprop ro.boot.sota enabled
 
diff --git a/init.hardware.xr.rc b/init.hardware.xr.rc
index 983f13e..cbbd776 100644
--- a/init.hardware.xr.rc
+++ b/init.hardware.xr.rc
@@ -21,11 +21,6 @@
 import /vendor/etc/init/hw/init.${ro.boot.hardware.platform}.common.rc
 
 on init
-    # Temporarily stop booting into VR directly due to battery drain.
-    # TODO(b/131327495): Re-enable this once VrHeadsetPowerPolicyService or its
-    #                    equivalent lands in Android master.
-    setprop ro.boot.vr 0
-
     # Setup cpusets used by the VR services.
     mkdir /dev/cpuset/kernel 0750 root system
     write /dev/cpuset/kernel/cpus 0
diff --git a/nfc/libnfc-nci.conf b/nfc/libnfc-nci.conf
index e17401a..90dcbe7 100644
--- a/nfc/libnfc-nci.conf
+++ b/nfc/libnfc-nci.conf
@@ -96,3 +96,9 @@
 # 0: General implementation
 # 1: Legacy implementation
 LEGACY_MIFARE_READER=0
+
+###############################################################################
+# Nfc recovery implementation
+# 0: Crash Nfc Service
+# 1: Toggle Nfc state
+RECOVERY_OPTION=1
diff --git a/overlay/packages/services/Telephony/res/values/config.xml b/overlay/packages/services/Telephony/res/values/config.xml
index c269e3d..bc75132 100644
--- a/overlay/packages/services/Telephony/res/values/config.xml
+++ b/overlay/packages/services/Telephony/res/values/config.xml
@@ -29,6 +29,9 @@
     <!-- String indicating the package name of the device ImsService implementation for RCS. -->
     <string name="config_ims_rcs_package" translatable="false">com.android.service.ims</string>
 
+    <!-- Whether or not to support RCS User Capability Exchange -->
+    <bool name="config_rcs_user_capability_exchange_enabled">false</bool>
+
     <!-- This device supports the AudioManager Telephony audio device and output onto this
          device using {@link AudioDeviceInfo#TYPE_TELEPHONY}.
          This is used to support carriers which generate a recording tone to the remote party
diff --git a/ueventd.hardware.rc b/ueventd.hardware.rc
index 166670d..0f72ac4 100644
--- a/ueventd.hardware.rc
+++ b/ueventd.hardware.rc
@@ -50,7 +50,6 @@
 /dev/adsprpc-smd          0664   system     system
 /dev/adsprpc-smd-secure   0644   system     system
 
-/dev/hw_random            0600   root       root
 /dev/sdsprpc-smd          0660   system     system
 
 /dev/wcd-dsp-glink        0660   system     audio
diff --git a/usb/Usb.cpp b/usb/Usb.cpp
index b3bac21..2a9350c 100644
--- a/usb/Usb.cpp
+++ b/usb/Usb.cpp
@@ -169,7 +169,7 @@
       // There are no uevent signals which implies role swap timed out.
       if (err == ETIMEDOUT) {
         ALOGI("uevents wait timedout");
-      // Sanity check.
+      // Partner check.
       } else if (!usb->mPartnerUp) {
         goto wait_again;
       // Role switch succeeded since usb->mPartnerUp is true.