diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk
index ee73c094..807e60c6 100644
--- a/BoardConfig-common.mk
+++ b/BoardConfig-common.mk
@@ -154,6 +154,10 @@ BOARD_AVB_VBMETA_SYSTEM_ALGORITHM := SHA256_RSA2048
BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX_LOCATION := 1
+ifneq ($(PRODUCT_BUILD_PVMFW_IMAGE),false)
+BOARD_AVB_VBMETA_SYSTEM += pvmfw
+endif
+
# Enable chained vbmeta for boot images
BOARD_AVB_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
BOARD_AVB_BOOT_ALGORITHM := SHA256_RSA2048
diff --git a/OWNERS b/OWNERS
new file mode 100644
index 00000000..1cbf9196
--- /dev/null
+++ b/OWNERS
@@ -0,0 +1,2 @@
+# per-file for Pixel device makefiles, see go/pixel-device-mk-owner-checklist for details.
+per-file *.mk=file:device/google/gs-common:master:/OWNERS
diff --git a/conf/init.gs201.rc b/conf/init.gs201.rc
index f3fdfb05..b1221130 100644
--- a/conf/init.gs201.rc
+++ b/conf/init.gs201.rc
@@ -132,7 +132,7 @@ on init
symlink /data/app /factory
# Apply network parameters for high data performance.
- write /proc/sys/net/core/rmem_default 327680
+ write /proc/sys/net/core/rmem_default 1310720
write /proc/sys/net/core/rmem_max 8388608
write /proc/sys/net/core/wmem_default 327680
write /proc/sys/net/core/wmem_max 8388608
diff --git a/device.mk b/device.mk
index ceeabd59..e71b9951 100644
--- a/device.mk
+++ b/device.mk
@@ -282,7 +282,7 @@ PRODUCT_VENDOR_PROPERTIES += \
PRODUCT_VENDOR_PROPERTIES += \
ro.opengles.version=196610 \
graphics.gpu.profiler.support=true \
- debug.renderengine.backend=skiavkthreaded
+ debug.renderengine.backend=skiaglthreaded
# GRAPHICS - GPU (end)
# ####################
@@ -1176,3 +1176,6 @@ PRODUCT_VENDOR_PROPERTIES += ro.crypto.metadata_init_delete_all_keys.enabled?=tr
# Hardware Info
include hardware/google/pixel/HardwareInfo/HardwareInfo.mk
+
+# UFS: the script is used to select the corresponding firmware to run FFU.
+PRODUCT_PACKAGES += ufs_firmware_update.sh
diff --git a/media_codecs_aosp_c2.xml b/media_codecs_aosp_c2.xml
index bae71e61..6846cbe3 100644
--- a/media_codecs_aosp_c2.xml
+++ b/media_codecs_aosp_c2.xml
@@ -49,11 +49,11 @@
-
+
-
-
+
+
diff --git a/media_codecs_performance_c2.xml b/media_codecs_performance_c2.xml
index 08dfd5d1..21381a94 100644
--- a/media_codecs_performance_c2.xml
+++ b/media_codecs_performance_c2.xml
@@ -155,29 +155,25 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -251,5 +247,13 @@
+
+
+
+
+
+
+
+
diff --git a/storage/Android.bp b/storage/Android.bp
new file mode 100644
index 00000000..90a919b8
--- /dev/null
+++ b/storage/Android.bp
@@ -0,0 +1,27 @@
+//
+// Copyright (C) 2017 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.
+
+package {
+ default_applicable_licenses: [
+ "//device/google/gs201:device_google_gs201_license",
+ ],
+}
+
+sh_binary {
+ name: "ufs_firmware_update.sh",
+ src: "ufs_firmware_update.sh",
+ init_rc: ["storage.gs201.rc"],
+ vendor: true,
+}
diff --git a/storage/storage.gs201.rc b/storage/storage.gs201.rc
new file mode 100644
index 00000000..9873325d
--- /dev/null
+++ b/storage/storage.gs201.rc
@@ -0,0 +1,7 @@
+on property:sys.boot_completed=1
+ # Copy ufs firmware to disk
+ start ufs_firmware_update
+
+service ufs_firmware_update /vendor/bin/ufs_firmware_update.sh
+ disabled
+ oneshot
diff --git a/storage/ufs_firmware_update.sh b/storage/ufs_firmware_update.sh
new file mode 100755
index 00000000..d118115f
--- /dev/null
+++ b/storage/ufs_firmware_update.sh
@@ -0,0 +1,19 @@
+#!/vendor/bin/sh
+#
+# The script belongs to the feature of UFS FFU via OTA: go/p23-ffu-ota
+# Its purpose is to copy the corresponding firmware into partition for UFS FFU.
+
+ufs_dev="/dev/sys/block/bootdevice"
+fw_dir="/vendor/firmware"
+blk_dev="/dev/block/by-name/fips"
+
+vendor=$(cat ${ufs_dev}/vendor | tr -d "[:space:]")
+model=$(cat ${ufs_dev}/model | tr -d "[:space:]")
+rev=$(cat ${ufs_dev}/rev | tr -d "[:space:]")
+
+file=$(find ${fw_dir} -name "*${vendor}${model}${rev}*" | head -n 1)
+if [ -n "$file" ]; then
+ # The first 4KB block at fips partition has been occupied, and unused space begins from 4 KB
+ # Refer to: go/pixel-mp-ffu-ota-1p
+ dd if="$file" of=$blk_dev bs=4k seek=1
+fi
diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp
index d5a9ced5..270a2227 100644
--- a/usb/usb/Usb.cpp
+++ b/usb/usb/Usb.cpp
@@ -902,7 +902,9 @@ void queryVersionHelper(android::hardware::usb::Usb *usb,
status = getPortStatusHelper(usb, currentPortStatus);
queryMoistureDetectionStatus(currentPortStatus);
queryPowerTransferStatus(currentPortStatus);
+#if 0 /* b/278018111 disable compliance warning; revert it after fixing the issue */
queryNonCompliantChargerStatus(currentPortStatus);
+#endif
if (usb->mCallback != NULL) {
ScopedAStatus ret = usb->mCallback->notifyPortStatusChange(*currentPortStatus,
status);
diff --git a/wifi/qcom/BoardConfig-wifi.mk b/wifi/qcom/BoardConfig-wifi.mk
index dcc75a9c..6546ce44 100644
--- a/wifi/qcom/BoardConfig-wifi.mk
+++ b/wifi/qcom/BoardConfig-wifi.mk
@@ -46,3 +46,6 @@ BOARD_HOSTAPD_CONFIG_80211W_MFP_OPTIONAL := true
PRODUCT_COPY_FILES += \
$(LOCAL_WIFI_PATH)/wpa_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf \
$(LOCAL_WIFI_PATH)/p2p_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant_overlay.conf
+
+# Add BOARD_WLAN_CHIP to soong_config
+$(call soong_config_set,qcom_wifi,board_wlan_chip,wcn6740)
\ No newline at end of file