Merge Android 12

Bug: 202323961
Merged-In: I5e87442f10aa57190272c73037c1b47e968d2c79
Change-Id: Ib499076409fc024ddbd862aed593e9d703f0d9df
diff --git a/AndroidProducts.mk b/AndroidProducts.mk
index 3478704..909090d 100644
--- a/AndroidProducts.mk
+++ b/AndroidProducts.mk
@@ -16,14 +16,24 @@
 
 PRODUCT_MAKEFILES := \
     $(LOCAL_DIR)/blueline_car/aosp_blueline_car.mk \
-    $(LOCAL_DIR)/flame_car/aosp_flame_car.mk \
+    $(LOCAL_DIR)/bonito_car/aosp_bonito_car.mk \
+    $(LOCAL_DIR)/bramble_car/aosp_bramble_car.mk \
     $(LOCAL_DIR)/coral_car/aosp_coral_car.mk \
     $(LOCAL_DIR)/crosshatch_car/aosp_crosshatch_car.mk \
-    $(LOCAL_DIR)/bonito_car/aosp_bonito_car.mk
+    $(LOCAL_DIR)/flame_car/aosp_flame_car.mk \
+    $(LOCAL_DIR)/redfin_car/aosp_redfin_car.mk \
+    $(LOCAL_DIR)/sargo_car/aosp_sargo_car.mk \
+    $(LOCAL_DIR)/sunfish_car/aosp_sunfish_car.mk
+
 
 COMMON_LUNCH_CHOICES := \
     aosp_blueline_car-userdebug \
-    aosp_flame_car-userdebug \
+    aosp_bonito_car-userdebug \
+    aosp_bramble_car-userdebug \
     aosp_coral_car-userdebug \
     aosp_crosshatch_car-userdebug \
-    aosp_bonito_car-userdebug
+    aosp_flame_car-userdebug \
+    aosp_redfin_car-userdebug \
+    aosp_sargo_car-userdebug \
+    aosp_sunfish_car-userdebug
+
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/blueline_car/BoardConfig.mk b/blueline_car/BoardConfig.mk
new file mode 100644
index 0000000..da35c33
--- /dev/null
+++ b/blueline_car/BoardConfig.mk
@@ -0,0 +1,26 @@
+#
+# Copyright (C) 2020 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.
+#
+
+# Contents of this file were copied from device/google/crosshatch/blueline/BoardConfig.mk,
+# except for:
+#
+# * TARGET_SCREEN_DENSITY is scaled down by 1.75x
+
+TARGET_BOOTLOADER_BOARD_NAME := blueline
+TARGET_SCREEN_DENSITY := 250
+TARGET_RECOVERY_UI_MARGIN_HEIGHT := 20
+
+include device/google/crosshatch/BoardConfig-common.mk
diff --git a/blueline_car/aosp_blueline_car.mk b/blueline_car/aosp_blueline_car.mk
index b658b04..b4a6452 100644
--- a/blueline_car/aosp_blueline_car.mk
+++ b/blueline_car/aosp_blueline_car.mk
@@ -14,117 +14,11 @@
 # limitations under the License.
 #
 
-DEVICE_FRAMEWORK_MANIFEST_FILE += device/google_car/blueline_car/manifest.xml
-
-#
-# 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)
-
-# mainline_system.mk sets 'PRODUCT_ENFORCE_RRO_TARGETS := *'
-# but this breaks blueline_car. So undo it here.
-PRODUCT_ENFORCE_RRO_TARGETS :=
-
-# Enable mainline checking
-# TODO(b/138706293): Enable mainline checking later
-# PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := relaxed
-
-#
-# All components inherited here go to system_ext image
-#
-$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_system_ext.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_system_ext.mk)
-
-#
-# All components inherited here go to product image
-#
-$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
-
-# Auto modules
-PRODUCT_PACKAGES += \
-            android.hardware.broadcastradio@2.0-service \
-            android.hardware.automotive.vehicle@2.0-service
-
-# Additional selinux policy
-BOARD_SEPOLICY_DIRS += device/google_car/common/sepolicy
-
-PRODUCT_PACKAGES += \
-            android.hardware.automotive.audiocontrol@1.0-service
-
-# Car init.rc
-PRODUCT_COPY_FILES += \
-            packages/services/Car/car_product/init/init.bootstat.rc:root/init.bootstat.rc \
-            packages/services/Car/car_product/init/init.car.rc:root/init.car.rc
-
-# Override heap growth limit due to high display density on device
-PRODUCT_PROPERTY_OVERRIDES += \
-            dalvik.vm.heapgrowthlimit=256m
-
-PRODUCT_PACKAGE_OVERLAYS += device/google_car/blueline_car/overlay
-
-# Pre-create users
-PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
-    android.car.number_pre_created_users=1 \
-    android.car.number_pre_created_guests=1 \
-    android.car.user_hal_enabled=true
-
-# Enable landscape
-PRODUCT_COPY_FILES += \
-            frameworks/native/data/etc/android.hardware.screen.landscape.xml:system/etc/permissions/android.hardware.screen.landscape.xml
-
-# Vendor Interface Manifest
-PRODUCT_COPY_FILES += \
-            frameworks/native/data/etc/android.hardware.broadcastradio.xml:system/etc/permissions/android.hardware.broadcastradio.xml
-
-TARGET_USES_CAR_FUTURE_FEATURES := true
-
-PRODUCT_COPY_FILES += \
-        frameworks/native/data/etc/car_core_hardware.xml:system/etc/permissions/car_core_hardware.xml \
-        frameworks/native/data/etc/android.hardware.type.automotive.xml:system/etc/permissions/android.hardware.type.automotive.xml \
-        frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \
-        frameworks/native/data/etc/android.hardware.telephony.cdma.xml:system/etc/permissions/android.hardware.telephony.cdma.xml \
-        frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \
-        frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \
-        frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \
-        frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \
-        frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \
-        frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \
-        frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:system/etc/permissions/android.hardware.sensor.gyroscope.xml \
-        frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \
-        frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml \
-        frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \
-        frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml
-
-# broadcast radio feature
- PRODUCT_COPY_FILES += \
-        frameworks/native/data/etc/android.hardware.broadcastradio.xml:system/etc/permissions/android.hardware.broadcastradio.xml
-
-# EVS v1.1
-PRODUCT_PACKAGES += android.automotive.evs.manager@1.1 \
-                    android.hardware.automotive.evs@1.1-sample \
-                    evs_app
-PRODUCT_PRODUCT_PROPERTIES += persist.automotive.evs.mode=0
-
-# Automotive display service
-PRODUCT_PACKAGES += android.frameworks.automotive.display@1.0-service
-
-#
-# All components inherited here go to vendor image
-#
-# TODO(b/136525499): move *_vendor.mk into the vendor makefile later
-$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_vendor.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_vendor.mk)
-
+$(call inherit-product, device/google_car/common/pre_google_car.mk)
 $(call inherit-product, device/google_car/blueline_car/device-blueline-car.mk)
+$(call inherit-product, device/google_car/common/post_google_car.mk)
 $(call inherit-product-if-exists, vendor/google_devices/crosshatch/proprietary/device-vendor.mk)
 
-
-PRODUCT_COPY_FILES += $(LOCAL_PATH)/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml
-
-# STOPSHIP deal with Qualcomm stuff later
-# PRODUCT_RESTRICT_VENDOR_FILES := all
-
 PRODUCT_MANUFACTURER := Google
 PRODUCT_BRAND := Android
 PRODUCT_NAME := aosp_blueline_car
diff --git a/blueline_car/audio_effects.xml b/blueline_car/audio_effects.xml
deleted file mode 100644
index 6e40c7a..0000000
--- a/blueline_car/audio_effects.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2020 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.
--->
-
-<audio_effects_conf version="2.0" xmlns="http://schemas.android.com/audio/audio_effects_conf/v2_0">
-    <libraries>
-        <library name="bundle" path="libbundlewrapper.so"/>
-        <library name="reverb" path="libreverbwrapper.so"/>
-        <library name="visualizer_sw" path="libvisualizer.so"/>
-        <library name="visualizer_hw" path="libqcomvisualizer.so"/>
-        <library name="downmix" path="libdownmix.so"/>
-        <library name="dynamics_processing" path="libdynproc.so"/>
-        <library name="loudness_enhancer" path="libldnhncr.so"/>
-        <library name="proxy" path="libeffectproxy.so"/>
-        <library name="offload_bundle" path="libqcompostprocbundle.so"/>
-        <library name="audio_pre_processing" path="libqcomvoiceprocessing.so"/>
-        <library name="volume_listener" path="libvolumelistener.so"/>
-    </libraries>
-    <effects>
-        <effectProxy name="bassboost" library="proxy" uuid="14804144-a5ee-4d24-aa88-0002a5d5c51b">
-            <libsw library="bundle" uuid="8631f300-72e2-11df-b57e-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="2c4a8c24-1581-487f-94f6-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="virtualizer" library="proxy" uuid="d3467faa-acc7-4d34-acaf-0002a5d5c51b">
-            <libsw library="bundle" uuid="1d4033c0-8557-11df-9f2d-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="509a4498-561a-4bea-b3b1-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="equalizer" library="proxy" uuid="c8e70ecd-48ca-456e-8a4f-0002a5d5c51b">
-            <libsw library="bundle" uuid="ce772f20-847d-11df-bb17-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="a0dac280-401c-11e3-9379-0002a5d5c51b"/>
-        </effectProxy>
-        <effect name="volume" library="bundle" uuid="119341a0-8469-11df-81f9-0002a5d5c51b"/>
-        <effectProxy name="reverb_env_aux" library="proxy" uuid="48404ac9-d202-4ccc-bf84-0002a5d5c51b">
-            <libsw library="reverb" uuid="4a387fc0-8ab3-11df-8bad-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="79a18026-18fd-4185-8233-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="reverb_env_ins" library="proxy" uuid="b707403a-a1c1-4291-9573-0002a5d5c51b">
-            <libsw library="reverb" uuid="c7a511a0-a3bb-11df-860e-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="eb64ea04-973b-43d2-8f5e-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="reverb_pre_aux" library="proxy" uuid="1b78f587-6d1c-422e-8b84-0002a5d5c51b">
-            <libsw library="reverb" uuid="f29a1400-a3bb-11df-8ddc-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="6987be09-b142-4b41-9056-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="reverb_pre_ins" library="proxy" uuid="f3e178d2-ebcb-408e-8357-0002a5d5c51b">
-            <libsw library="reverb" uuid="172cdf00-a3bc-11df-a72f-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="aa2bebf6-47cf-4613-9bca-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="visualizer" library="proxy" uuid="1d0a1a53-7d5d-48f2-8e71-27fbd10d842c">
-            <libsw library="visualizer_sw" uuid="d069d9e0-8329-11df-9168-0002a5d5c51b"/>
-            <libhw library="visualizer_hw" uuid="7a8044a0-1a71-11e3-a184-0002a5d5c51b"/>
-        </effectProxy>
-        <effect name="downmix" library="downmix" uuid="93f04452-e4fe-41cc-91f9-e475b6d1d69f"/>
-        <effect name="loudness_enhancer" library="loudness_enhancer" uuid="fa415329-2034-4bea-b5dc-5b381c8d1e2c"/>
-        <effect name="aec" library="audio_pre_processing" uuid="27dab416-23f8-11e8-b467-0ed5f89f718b"/>
-        <effect name="ns" library="audio_pre_processing" uuid="27dab6d2-23f8-11e8-b467-0ed5f89f718b"/>
-        <effect name="music_helper" library="volume_listener" uuid="08b8b058-0590-11e5-ac71-0025b32654a0"/>
-        <effect name="ring_helper" library="volume_listener" uuid="0956df94-0590-11e5-bdbe-0025b32654a0"/>
-        <effect name="alarm_helper" library="volume_listener" uuid="09f303e2-0590-11e5-8fdb-0025b32654a0"/>
-        <effect name="voice_helper" library="volume_listener" uuid="0ace5c08-0590-11e5-ae9e-0025b32654a0"/>
-        <effect name="notification_helper" library="volume_listener" uuid="0b776dde-0590-11e5-81ba-0025b32654a0"/>
-        <effect name="dynamics_processing" library="dynamics_processing" uuid="e0e6539b-1781-7261-676f-6d7573696340"/>
-    </effects>
-    <postprocess>
-        <stream type="music">
-            <apply effect="music_helper"/>
-        </stream>
-        <stream type="ring">
-            <apply effect="ring_helper"/>
-        </stream>
-        <stream type="alarm">
-            <apply effect="alarm_helper"/>
-        </stream>
-        <stream type="voice_call">
-            <apply effect="voice_helper"/>
-        </stream>
-        <stream type="notification">
-            <apply effect="notification_helper"/>
-        </stream>
-    </postprocess>
-    <preprocess>
-        <stream type="voice_communication">
-            <apply effect="aec"/>
-            <apply effect="ns"/>
-        </stream>
-    </preprocess>
-</audio_effects_conf>
diff --git a/blueline_car/device-blueline-car.mk b/blueline_car/device-blueline-car.mk
index aad8cd3..cf5c54e 100644
--- a/blueline_car/device-blueline-car.mk
+++ b/blueline_car/device-blueline-car.mk
@@ -14,26 +14,15 @@
 # limitations under the License.
 #
 
-PRODUCT_HARDWARE := blueline
+PHONE_CAR_BOARD_CONFIG := device/google_car/blueline_car/BoardConfig.mk
+
+ENABLE_EVS_SAMPLE := true
+ifeq ($(ENABLE_EVS_SAMPLE), true)
+PRODUCT_COPY_FILES += \
+    $(LOCAL_PATH)/evs/app_config.json:system/etc/automotive/evs/config_override.json \
+    $(LOCAL_PATH)/evs/hal_config.xml:vendor/etc/automotive/evs/evs_configuration_override.xml
+endif
 
 $(call inherit-product, packages/services/Car/car_product/build/car.mk)
-include device/google_car/blueline_car/device-common.mk
 
-PRODUCT_COPY_FILES += \
-    device/google/crosshatch/init.insmod.blueline.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/init.insmod.cfg
-
-DEVICE_PACKAGE_OVERLAYS += device/google/crosshatch/blueline/overlay
-
-# Audio XMLs
-PRODUCT_COPY_FILES += \
-    device/google/crosshatch/mixer_paths_tavil_b1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_tavil_b1.xml \
-    device/google/crosshatch/audio_policy_volumes_b1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
-    device/google/crosshatch/audio_platform_info_tavil_b1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info_tavil_b1.xml
-
-PRODUCT_COPY_FILES += \
-    device/google/crosshatch/nfc/libnfc-nxp.blueline.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-nxp.conf
-
-PRODUCT_PACKAGES += \
-    NoCutoutOverlay
-
-PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=250
+$(call inherit-product, device/google/crosshatch/device-blueline.mk)
diff --git a/blueline_car/device-common.mk b/blueline_car/device-common.mk
deleted file mode 100644
index 63a4ad8..0000000
--- a/blueline_car/device-common.mk
+++ /dev/null
@@ -1,157 +0,0 @@
-#
-# Copyright (C) 2020 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.
-#
-
-TARGET_USERIMAGES_USE_F2FS := true
-
-# define hardware platform
-PRODUCT_PLATFORM := sdm845
-
-# Enable updating of APEXes
-$(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk)
-
-include device/google/crosshatch/device.mk
-
-PRODUCT_PROPERTY_OVERRIDES += \
-    ro.control_privapp_permissions=disable
-
-PRODUCT_ENFORCE_RRO_TARGETS := framework-res
-
-# Audio fluence, ns, aec property, voice volume steps
-PRODUCT_PROPERTY_OVERRIDES += \
-    ro.qc.sdk.audio.fluencetype=fluencepro \
-    persist.audio.fluence.voicecall=true \
-    persist.audio.fluence.speaker=true \
-    persist.audio.fluence.voicecomm=true \
-    persist.audio.fluence.voicerec=false \
-    ro.config.vc_call_vol_steps=7
-
-# Bug 77867216
-PRODUCT_PROPERTY_OVERRIDES += audio.adm.buffering.ms=3
-PRODUCT_PROPERTY_OVERRIDES += vendor.audio.adm.buffering.ms=3
-PRODUCT_PROPERTY_OVERRIDES += audio_hal.period_multiplier=2
-PRODUCT_PROPERTY_OVERRIDES += af.fast_track_multiplier=1
-
-# Enable HW Codec 2.0 as default service
-# Set all codec components are available with their normal ranks
-# Set OMX components's default rank large than Codec 2.0 HW components's default rank (0x100)
-PRODUCT_PROPERTY_OVERRIDES += debug.stagefright.ccodec=4
-PRODUCT_PROPERTY_OVERRIDES += debug.stagefright.omx_default_rank=512
-
-# Pixelstats broken mic detection
-PRODUCT_PROPERTY_OVERRIDES += vendor.audio.mic_break=true
-
-# Setting vendor SPL
-VENDOR_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH)
-
-# Set boot SPL
-BOOT_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH)
-
-# MIDI feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.software.midi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.midi.xml
-
-# Audio low latency feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.hardware.audio.low_latency.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.low_latency.xml
-
-# Pro audio feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml
-
-# Enable AAudio MMAP/NOIRQ data path.
-# 1 is AAUDIO_POLICY_NEVER  means only use Legacy path.
-# 2 is AAUDIO_POLICY_AUTO   means try MMAP then fallback to Legacy path.
-# 3 is AAUDIO_POLICY_ALWAYS means only use MMAP path.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_policy=2
-# 1 is AAUDIO_POLICY_NEVER  means only use SHARED mode
-# 2 is AAUDIO_POLICY_AUTO   means try EXCLUSIVE then fallback to SHARED mode.
-# 3 is AAUDIO_POLICY_ALWAYS means only use EXCLUSIVE mode.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_exclusive_policy=2
-
-# Increase the apparent size of a hardware burst from 1 msec to 2 msec.
-# A "burst" is the number of frames processed at one time.
-# That is an increase from 48 to 96 frames at 48000 Hz.
-# The DSP will still be bursting at 48 frames but AAudio will think the burst is 96 frames.
-# A low number, like 48, might increase power consumption or stress the system.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.hw_burst_min_usec=2000
-
-# Set lmkd options
-PRODUCT_PRODUCT_PROPERTIES += \
-    ro.lmk.low=1001 \
-    ro.lmk.medium=800 \
-    ro.lmk.critical=0 \
-    ro.lmk.critical_upgrade=false \
-    ro.lmk.upgrade_pressure=100 \
-    ro.lmk.downgrade_pressure=100 \
-    ro.lmk.kill_heaviest_task=true \
-    ro.lmk.kill_timeout_ms=100 \
-    ro.lmk.use_minfree_levels=true \
-
-# A2DP offload enabled for compilation
-AUDIO_FEATURE_ENABLED_A2DP_OFFLOAD := true
-
-# A2DP offload supported
-PRODUCT_PROPERTY_OVERRIDES += \
-ro.bluetooth.a2dp_offload.supported=true
-
-# A2DP offload disabled (UI toggle property)
-PRODUCT_PROPERTY_OVERRIDES += \
-persist.bluetooth.a2dp_offload.disabled=false
-
-# A2DP offload DSP supported encoder list
-PRODUCT_PROPERTY_OVERRIDES += \
-persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac
-
-# Modem loging file
-PRODUCT_COPY_FILES += \
-    device/google/crosshatch/init.logging.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.$(PRODUCT_PLATFORM).logging.rc
-
-# Dumpstate HAL
-PRODUCT_PACKAGES += \
-    android.hardware.dumpstate@1.0-service.blueline
-
-# Dmabuf dump tool for bug reports
-PRODUCT_PACKAGES += \
-    dmabuf_dump
-
-# whitelisted app
-PRODUCT_COPY_FILES += \
-    device/google/crosshatch/qti_whitelist.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/sysconfig/qti_whitelist.xml
-
-PRODUCT_PACKAGES += \
-    llkd
-#PRODUCT_PROPERTY_OVERRIDES += \
-#    ro.khungtask.enable=false
-#
-
-# Enable retrofit dynamic partitions for all blueline
-# and blueline targets
-PRODUCT_USE_DYNAMIC_PARTITIONS := true
-PRODUCT_RETROFIT_DYNAMIC_PARTITIONS := true
-PRODUCT_PACKAGES += \
-    android.hardware.boot@1.0-impl.recovery \
-    bootctrl.sdm845 \
-    bootctrl.sdm845.recovery \
-    check_dynamic_partitions \
-
-AB_OTA_POSTINSTALL_CONFIG += \
-    RUN_POSTINSTALL_product=true \
-    POSTINSTALL_PATH_product=bin/check_dynamic_partitions \
-    FILESYSTEM_TYPE_product=ext4 \
-    POSTINSTALL_OPTIONAL_product=false \
-
-# Sepolicy for EVS
-include packages/services/Car/evs/sepolicy/evs.mk
diff --git a/blueline_car/evs/app_config.json b/blueline_car/evs/app_config.json
new file mode 100644
index 0000000..c1cd74b
--- /dev/null
+++ b/blueline_car/evs/app_config.json
@@ -0,0 +1,78 @@
+{
+  "_comment": "This is for the blueline device",
+  "car" : {
+    "width"  : 76.7,
+    "wheelBase" : 117.9,
+    "frontExtent" : 44.7,
+    "rearExtent" : 40
+  },
+  "displays" : [
+    {
+      "displayPort" : 0,
+      "frontRange" : 100,
+      "rearRange" : 100
+    }
+  ],
+  "graphic" : {
+    "frontPixel" : -20,
+    "rearPixel" : 260
+  },
+  "cameras" : [
+    {
+      "cameraId" : "/dev/video10",
+      "function" : "reverse,park",
+      "x" : 0.0,
+      "y" : 20.0,
+      "z" : 48,
+      "yaw" : 180,
+      "pitch" : -10,
+      "roll" : 0,
+      "hfov" : 115,
+      "vfov" : 80,
+      "hflip" : true,
+      "vflip" : false
+    },
+    {
+      "cameraId" : "/dev/video11",
+      "function" : "front,park",
+      "x" : 0.0,
+      "y" : 100.0,
+      "z" : 48,
+      "yaw" : 0,
+      "pitch" : -10,
+      "roll" : 0,
+      "hfov" : 115,
+      "vfov" : 80,
+      "hflip" : false,
+      "vflip" : false
+    },
+    {
+      "cameraId" : "/dev/video12",
+      "function" : "right,park",
+      "x" : -25.0,
+      "y" : 60.0,
+      "z" : 88,
+      "yaw" : -90,
+      "pitch" : -10,
+      "roll" : 0,
+      "hfov" : 60,
+      "vfov" : 62,
+      "hflip" : false,
+      "vflip" : false
+    },
+    {
+      "cameraId" : "/dev/video13",
+      "function" : "left, park",
+      "x" : 20.0,
+      "y" : 60.0,
+      "z" : 88,
+      "yaw" : 90,
+      "pitch" : -10,
+      "roll" : 0,
+      "hfov" : 60,
+      "vfov" : 62,
+      "hflip" : false,
+      "vflip" : false
+    }
+  ]
+}
diff --git a/blueline_car/evs/hal_config.xml b/blueline_car/evs/hal_config.xml
new file mode 100644
index 0000000..9ab86f8
--- /dev/null
+++ b/blueline_car/evs/hal_config.xml
@@ -0,0 +1,141 @@
+<?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.
+-->
+
+<!-- Exterior View System Example Configuration
+
+     Android Automotive axes are used to define coordinates.
+     See https://source.android.com/devices/sensors/sensor-types#auto_axes
+
+     Use evs_configuration.dtd with xmllint tool, to validate XML configuration file
+-->
+
+<configuration>
+    <!-- system configuration for the blueline -->
+    <system>
+        <!-- number of cameras available to EVS -->
+        <num_cameras value='4'/>
+    </system>
+
+    <!-- camera device information -->
+    <camera>
+        <!-- vivid emulated video devices -->
+        <device id='/dev/video10' position='rear'>
+            <caps>
+                <!-- list of supported controls -->
+                <supported_controls>
+                    <control name='BRIGHTNESS' min='0' max='255'/>
+                    <control name='CONTRAST' min='0' max='255'/>
+                    <control name='AUTO_WHITE_BALANCE' min='0' max='1'/>
+                    <control name='WHITE_BALANCE_TEMPERATURE' min='2000' max='7500'/>
+                    <control name='SHARPNESS' min='0' max='255'/>
+                    <control name='AUTO_FOCUS' min='0' max='1'/>
+                    <control name='ABSOLUTE_FOCUS' min='0' max='255' step='5'/>
+                    <control name='ABSOLUTE_ZOOM' min='100' max='400'/>
+                </supported_controls>
+
+                <!-- list of supported stream configurations -->
+                <!-- vivid webcam input support below three resolutions -->
+                <stream id='0' width='1280' height='720' format='RGBA_8888' framerate='5'/>
+                <stream id='1' width='640' height='360' format='RGBA_8888' framerate='15'/>
+                <stream id='2' width='360' height='180' format='RGBA_8888' framerate='30'/>
+            </caps>
+
+            <!-- list of parameters -->
+            <characteristics/>
+        </device>
+        <device id='/dev/video11' position='left'>
+            <caps>
+                <!-- list of supported controls -->
+                <supported_controls>
+                    <control name='BRIGHTNESS' min='0' max='255'/>
+                    <control name='CONTRAST' min='0' max='255'/>
+                    <control name='AUTO_WHITE_BALANCE' min='0' max='1'/>
+                    <control name='WHITE_BALANCE_TEMPERATURE' min='2000' max='7500'/>
+                    <control name='SHARPNESS' min='0' max='255'/>
+                    <control name='AUTO_FOCUS' min='0' max='1'/>
+                    <control name='ABSOLUTE_FOCUS' min='0' max='255' step='5'/>
+                    <control name='ABSOLUTE_ZOOM' min='100' max='400'/>
+                </supported_controls>
+
+                <!-- list of supported stream configurations -->
+                <!-- vivid webcam input support below three resolutions -->
+                <stream id='0' width='1280' height='720' format='RGBA_8888' framerate='5'/>
+                <stream id='1' width='640' height='360' format='RGBA_8888' framerate='15'/>
+                <stream id='2' width='360' height='180' format='RGBA_8888' framerate='30'/>
+            </caps>
+
+            <!-- list of parameters -->
+            <characteristics/>
+        </device>
+        <device id='/dev/video12' position='right'>
+            <caps>
+                <!-- list of supported controls -->
+                <supported_controls>
+                    <control name='BRIGHTNESS' min='0' max='255'/>
+                    <control name='CONTRAST' min='0' max='255'/>
+                    <control name='AUTO_WHITE_BALANCE' min='0' max='1'/>
+                    <control name='WHITE_BALANCE_TEMPERATURE' min='2000' max='7500'/>
+                    <control name='SHARPNESS' min='0' max='255'/>
+                    <control name='AUTO_FOCUS' min='0' max='1'/>
+                    <control name='ABSOLUTE_FOCUS' min='0' max='255' step='5'/>
+                    <control name='ABSOLUTE_ZOOM' min='100' max='400'/>
+                </supported_controls>
+
+                <!-- list of supported stream configurations -->
+                <!-- vivid webcam input support below three resolutions -->
+                <stream id='0' width='1280' height='720' format='RGBA_8888' framerate='5'/>
+                <stream id='1' width='640' height='360' format='RGBA_8888' framerate='15'/>
+                <stream id='2' width='360' height='180' format='RGBA_8888' framerate='30'/>
+            </caps>
+
+            <!-- list of parameters -->
+            <characteristics/>
+        </device>
+        <device id='/dev/video13' position='front'>
+            <caps>
+                <!-- list of supported controls -->
+                <supported_controls>
+                    <control name='BRIGHTNESS' min='0' max='255'/>
+                    <control name='CONTRAST' min='0' max='255'/>
+                    <control name='AUTO_WHITE_BALANCE' min='0' max='1'/>
+                    <control name='WHITE_BALANCE_TEMPERATURE' min='2000' max='7500'/>
+                    <control name='SHARPNESS' min='0' max='255'/>
+                    <control name='AUTO_FOCUS' min='0' max='1'/>
+                    <control name='ABSOLUTE_FOCUS' min='0' max='255' step='5'/>
+                    <control name='ABSOLUTE_ZOOM' min='100' max='400'/>
+                </supported_controls>
+
+                <!-- list of supported stream configurations -->
+                <!-- vivid webcam input support below three resolutions -->
+                <stream id='0' width='1280' height='720' format='RGBA_8888' framerate='5'/>
+                <stream id='1' width='640' height='360' format='RGBA_8888' framerate='15'/>
+                <stream id='2' width='360' height='180' format='RGBA_8888' framerate='30'/>
+            </caps>
+
+            <!-- list of parameters -->
+            <characteristics/>
+        </device>
+    </camera>
+
+    <!-- display device starts -->
+    <display>
+        <device id='display0' position='driver'>
+            <caps>
+                <!-- list of supported inpu stream configurations -->
+                <stream id='0' width='1280' height='720' format='RGBA_8888' framerate='30'/>
+            </caps>
+        </device>
+    </display>
+</configuration>
diff --git a/blueline_car/manifest.xml b/blueline_car/manifest.xml
deleted file mode 100644
index 8738389..0000000
--- a/blueline_car/manifest.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2020 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.
--->
-<manifest version="1.0" type="framework" >
-    <hal format="hidl">
-        <name>android.hardware.automotive.audiocontrol</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IAudioControl</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <!-- FIXME: Move this to shared manifest.xml -->
-    <hal format="hidl">
-        <name>android.hardware.broadcastradio</name>
-        <transport>hwbinder</transport>
-        <version>2.0</version>
-        <interface>
-            <name>IBroadcastRadio</name>
-            <instance>amfm</instance>
-            <instance>dab</instance>
-        </interface>
-    </hal>
-</manifest>
diff --git a/blueline_car/overlay/packages/services/Car/service/res/values/config.xml b/blueline_car/overlay/packages/services/Car/service/res/values/config.xml
deleted file mode 100644
index 8116e7b..0000000
--- a/blueline_car/overlay/packages/services/Car/service/res/values/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2020, 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 to configure car service based on each OEM's preference. -->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- Disable switching the user while the system is resuming from Suspend to RAM.
-         This default says to prevent changing the user during Resume. -->
-    <bool name="config_disableUserSwitchDuringResume" translatable="false">false</bool>
-</resources>
diff --git a/bonito_car/BoardConfig.mk b/bonito_car/BoardConfig.mk
new file mode 100644
index 0000000..cfc639a
--- /dev/null
+++ b/bonito_car/BoardConfig.mk
@@ -0,0 +1,27 @@
+#
+# Copyright (C) 2020 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.
+#
+
+# Contents of this file were copied from device/google/bonito/bonito/BoardConfig.mk,
+# except for:
+#
+# * TARGET_SCREEN_DENSITY is scaled down by 1.75x
+
+TARGET_BOOTLOADER_BOARD_NAME := bonito
+TARGET_SCREEN_DENSITY := 250
+TARGET_RECOVERY_UI_MARGIN_HEIGHT := 165
+
+include device/google/bonito/BoardConfig-common.mk
+-include vendor/google_devices/bonito/proprietary/BoardConfigVendor.mk
diff --git a/bonito_car/aosp_bonito_car.mk b/bonito_car/aosp_bonito_car.mk
index 75bcf8f..61d5325 100644
--- a/bonito_car/aosp_bonito_car.mk
+++ b/bonito_car/aosp_bonito_car.mk
@@ -14,120 +14,10 @@
 # limitations under the License.
 #
 
-DEVICE_FRAMEWORK_MANIFEST_FILE += device/google_car/bonito_car/manifest.xml
-
-#
-# 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)
-
-# mainline_system.mk sets 'PRODUCT_ENFORCE_RRO_TARGETS := *'
-# but this breaks bonito_car. So undo it here.
-PRODUCT_ENFORCE_RRO_TARGETS :=
-
-# Enable mainline checking
-# TODO(b/138706293): Enable mainline checking later
-# PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := relaxed
-
-#
-# All components inherited here go to system_ext image
-#
-$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_system_ext.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_system_ext.mk)
-
-#
-# All components inherited here go to product image
-#
-$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
-
-# Auto modules
-PRODUCT_PACKAGES += \
-            android.hardware.broadcastradio@2.0-service \
-            android.hardware.automotive.vehicle@2.0-service
-
-# Additional selinux policy
-BOARD_SEPOLICY_DIRS += device/google_car/common/sepolicy
-
-PRODUCT_PACKAGES += \
-            android.hardware.automotive.audiocontrol@1.0-service
-
-# Car init.rc
-PRODUCT_COPY_FILES += \
-            packages/services/Car/car_product/init/init.bootstat.rc:root/init.bootstat.rc \
-            packages/services/Car/car_product/init/init.car.rc:root/init.car.rc
-
-# Override heap growth limit due to high display density on device
-PRODUCT_PROPERTY_OVERRIDES += \
-            dalvik.vm.heapgrowthlimit=256m
-
-PRODUCT_PACKAGE_OVERLAYS += device/google_car/bonito_car/overlay
-
-# Pre-create users
-PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
-    android.car.number_pre_created_users=1 \
-    android.car.number_pre_created_guests=1 \
-    android.car.user_hal_enabled=true
-
-# Enable landscape
-PRODUCT_COPY_FILES += \
-            frameworks/native/data/etc/android.hardware.screen.landscape.xml:system/etc/permissions/android.hardware.screen.landscape.xml
-
-# Vendor Interface Manifest
-PRODUCT_COPY_FILES += \
-            frameworks/native/data/etc/android.hardware.broadcastradio.xml:system/etc/permissions/android.hardware.broadcastradio.xml
-
-TARGET_USES_CAR_FUTURE_FEATURES := true
-
-PRODUCT_COPY_FILES += \
-        frameworks/native/data/etc/car_core_hardware.xml:system/etc/permissions/car_core_hardware.xml \
-        frameworks/native/data/etc/android.hardware.type.automotive.xml:system/etc/permissions/android.hardware.type.automotive.xml \
-        frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \
-        frameworks/native/data/etc/android.hardware.telephony.cdma.xml:system/etc/permissions/android.hardware.telephony.cdma.xml \
-        frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \
-        frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \
-        frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \
-        frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \
-        frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \
-        frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \
-        frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:system/etc/permissions/android.hardware.sensor.gyroscope.xml \
-        frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \
-        frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml \
-        frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \
-        frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml
-
-# broadcast radio feature
- PRODUCT_COPY_FILES += \
-        frameworks/native/data/etc/android.hardware.broadcastradio.xml:system/etc/permissions/android.hardware.broadcastradio.xml
-
-# EVS v1.1
-PRODUCT_PACKAGES += android.automotive.evs.manager@1.1 \
-                    android.hardware.automotive.evs@1.1-sample \
-                    evs_app
-PRODUCT_PRODUCT_PROPERTIES += persist.automotive.evs.mode=0
-
-# Automotive display service
-PRODUCT_PACKAGES += android.frameworks.automotive.display@1.0-service
-
-#
-# All components inherited here go to vendor image
-#
-# TODO(b/136525499): move *_vendor.mk into the vendor makefile later
-$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_vendor.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_vendor.mk)
-
+$(call inherit-product, device/google_car/common/pre_google_car.mk)
 $(call inherit-product, device/google_car/bonito_car/device-bonito-car.mk)
 $(call inherit-product-if-exists, vendor/google_devices/bonito/proprietary/device-vendor.mk)
-
-
-PRODUCT_COPY_FILES += $(LOCAL_PATH)/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml
-
-# STOPSHIP deal with Qualcomm stuff later
-# PRODUCT_RESTRICT_VENDOR_FILES := all
-
-# TODO: line below was set on aosp_bonito.mk, but it's not included on other _car
-# projects
-# PRODUCT_PACKAGES += com.android.vndk.current.on_vendor
+$(call inherit-product, device/google_car/common/post_google_car.mk)
 
 PRODUCT_MANUFACTURER := Google
 PRODUCT_BRAND := Android
diff --git a/bonito_car/audio_effects.xml b/bonito_car/audio_effects.xml
deleted file mode 100644
index 5bb453c..0000000
--- a/bonito_car/audio_effects.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2020 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.
--->
-<audio_effects_conf version="2.0" xmlns="http://schemas.android.com/audio/audio_effects_conf/v2_0">
-    <libraries>
-        <library name="bundle" path="libbundlewrapper.so"/>
-        <library name="reverb" path="libreverbwrapper.so"/>
-        <library name="visualizer_sw" path="libvisualizer.so"/>
-        <library name="visualizer_hw" path="libqcomvisualizer.so"/>
-        <library name="downmix" path="libdownmix.so"/>
-        <library name="dynamics_processing" path="libdynproc.so"/>
-        <library name="loudness_enhancer" path="libldnhncr.so"/>
-        <library name="proxy" path="libeffectproxy.so"/>
-        <library name="offload_bundle" path="libqcompostprocbundle.so"/>
-        <library name="audio_pre_processing" path="libqcomvoiceprocessing.so"/>
-        <library name="volume_listener" path="libvolumelistener.so"/>
-    </libraries>
-    <effects>
-        <effectProxy name="bassboost" library="proxy" uuid="14804144-a5ee-4d24-aa88-0002a5d5c51b">
-            <libsw library="bundle" uuid="8631f300-72e2-11df-b57e-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="2c4a8c24-1581-487f-94f6-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="virtualizer" library="proxy" uuid="d3467faa-acc7-4d34-acaf-0002a5d5c51b">
-            <libsw library="bundle" uuid="1d4033c0-8557-11df-9f2d-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="509a4498-561a-4bea-b3b1-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="equalizer" library="proxy" uuid="c8e70ecd-48ca-456e-8a4f-0002a5d5c51b">
-            <libsw library="bundle" uuid="ce772f20-847d-11df-bb17-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="a0dac280-401c-11e3-9379-0002a5d5c51b"/>
-        </effectProxy>
-        <effect name="volume" library="bundle" uuid="119341a0-8469-11df-81f9-0002a5d5c51b"/>
-        <effectProxy name="reverb_env_aux" library="proxy" uuid="48404ac9-d202-4ccc-bf84-0002a5d5c51b">
-            <libsw library="reverb" uuid="4a387fc0-8ab3-11df-8bad-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="79a18026-18fd-4185-8233-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="reverb_env_ins" library="proxy" uuid="b707403a-a1c1-4291-9573-0002a5d5c51b">
-            <libsw library="reverb" uuid="c7a511a0-a3bb-11df-860e-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="eb64ea04-973b-43d2-8f5e-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="reverb_pre_aux" library="proxy" uuid="1b78f587-6d1c-422e-8b84-0002a5d5c51b">
-            <libsw library="reverb" uuid="f29a1400-a3bb-11df-8ddc-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="6987be09-b142-4b41-9056-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="reverb_pre_ins" library="proxy" uuid="f3e178d2-ebcb-408e-8357-0002a5d5c51b">
-            <libsw library="reverb" uuid="172cdf00-a3bc-11df-a72f-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="aa2bebf6-47cf-4613-9bca-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="visualizer" library="proxy" uuid="1d0a1a53-7d5d-48f2-8e71-27fbd10d842c">
-            <libsw library="visualizer_sw" uuid="d069d9e0-8329-11df-9168-0002a5d5c51b"/>
-            <libhw library="visualizer_hw" uuid="7a8044a0-1a71-11e3-a184-0002a5d5c51b"/>
-        </effectProxy>
-        <effect name="downmix" library="downmix" uuid="93f04452-e4fe-41cc-91f9-e475b6d1d69f"/>
-        <effect name="loudness_enhancer" library="loudness_enhancer" uuid="fa415329-2034-4bea-b5dc-5b381c8d1e2c"/>
-        <effect name="aec" library="audio_pre_processing" uuid="27dab416-23f8-11e8-b467-0ed5f89f718b"/>
-        <effect name="ns" library="audio_pre_processing" uuid="27dab6d2-23f8-11e8-b467-0ed5f89f718b"/>
-        <effect name="music_helper" library="volume_listener" uuid="08b8b058-0590-11e5-ac71-0025b32654a0"/>
-        <effect name="ring_helper" library="volume_listener" uuid="0956df94-0590-11e5-bdbe-0025b32654a0"/>
-        <effect name="alarm_helper" library="volume_listener" uuid="09f303e2-0590-11e5-8fdb-0025b32654a0"/>
-        <effect name="voice_helper" library="volume_listener" uuid="0ace5c08-0590-11e5-ae9e-0025b32654a0"/>
-        <effect name="notification_helper" library="volume_listener" uuid="0b776dde-0590-11e5-81ba-0025b32654a0"/>
-        <effect name="dynamics_processing" library="dynamics_processing" uuid="e0e6539b-1781-7261-676f-6d7573696340"/>
-    </effects>
-    <postprocess>
-        <stream type="music">
-            <apply effect="music_helper"/>
-        </stream>
-        <stream type="ring">
-            <apply effect="ring_helper"/>
-        </stream>
-        <stream type="alarm">
-            <apply effect="alarm_helper"/>
-        </stream>
-        <stream type="voice_call">
-            <apply effect="voice_helper"/>
-        </stream>
-        <stream type="notification">
-            <apply effect="notification_helper"/>
-        </stream>
-    </postprocess>
-    <preprocess>
-        <stream type="voice_communication">
-            <apply effect="aec"/>
-            <apply effect="ns"/>
-        </stream>
-    </preprocess>
-</audio_effects_conf>
diff --git a/bonito_car/device-bonito-car.mk b/bonito_car/device-bonito-car.mk
index c48ea9c..7089144 100644
--- a/bonito_car/device-bonito-car.mk
+++ b/bonito_car/device-bonito-car.mk
@@ -14,29 +14,11 @@
 # limitations under the License.
 #
 
-PRODUCT_HARDWARE := bonito
+PHONE_CAR_BOARD_CONFIG := device/google_car/bonito_car/BoardConfig.mk
 
 $(call inherit-product, packages/services/Car/car_product/build/car.mk)
-include device/google_car/bonito_car/device-common.mk
-include packages/services/Car/computepipe/products/computepipe.mk
 
-PRODUCT_COPY_FILES += \
-    device/google/bonito/init.insmod.bonito.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/init.insmod.cfg
+$(call inherit-product, device/google/bonito/device-bonito.mk)
 
-DEVICE_PACKAGE_OVERLAYS += device/google/bonito/bonito/overlay
-
-# Audio XMLs
-PRODUCT_COPY_FILES += \
-    device/google/bonito/mixer_paths_intcodec_b4.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_intcodec_b4.xml \
-    device/google/bonito/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
-    device/google/bonito/audio_platform_info_intcodec_b4.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info_intcodec_b4.xml
-
-PRODUCT_COPY_FILES += \
-    device/google/bonito/nfc/libnfc-nxp.bonito.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-nxp.conf
-
-PRODUCT_PACKAGES += \
-    NoCutoutOverlay
-
-# TODO: property below is set on other _car projects, but it doesn't seem to be
-# needed - looks like 250 is already the default value
-# PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=250
+PRODUCT_PRODUCT_PROPERTIES+= \
+    ro.adb.secure=0
\ No newline at end of file
diff --git a/bonito_car/device-common.mk b/bonito_car/device-common.mk
deleted file mode 100644
index 3a2978d..0000000
--- a/bonito_car/device-common.mk
+++ /dev/null
@@ -1,134 +0,0 @@
-#
-# Copyright (C) 2020 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.
-#
-
-# NOTE: this file was copied from google/device/bonito/device-common.mk, with the
-# following changes
-# - removed LOCAL_PATH
-# - added auto-specific settings at the end
-
-TARGET_USERIMAGES_USE_F2FS := true
-
-# define hardware platform
-PRODUCT_PLATFORM := sdm670
-
-# Enable updating of APEXes
-$(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk)
-
-include device/google/bonito/device-audio-mfg.mk
-include device/google/bonito/device.mk
-
-# Bug 77867216
-PRODUCT_PROPERTY_OVERRIDES += audio.adm.buffering.ms=3
-PRODUCT_PROPERTY_OVERRIDES += vendor.audio.adm.buffering.ms=3
-PRODUCT_PROPERTY_OVERRIDES += audio_hal.period_multiplier=2
-PRODUCT_PROPERTY_OVERRIDES += af.fast_track_multiplier=1
-
-# Set c2 codec in default
-PRODUCT_PROPERTY_OVERRIDES += debug.stagefright.ccodec=4
-PRODUCT_PROPERTY_OVERRIDES += debug.stagefright.omx_default_rank=512
-
-# Setting vendor SPL
-VENDOR_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH)
-
-# Set boot SPL
-BOOT_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH)
-
-# MIDI feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.software.midi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.midi.xml
-
-# Audio low latency feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.hardware.audio.low_latency.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.low_latency.xml
-
-# Pro audio feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml
-
-# Enable AAudio MMAP/NOIRQ data path.
-# 1 is AAUDIO_POLICY_NEVER  means only use Legacy path.
-# 2 is AAUDIO_POLICY_AUTO   means try MMAP then fallback to Legacy path.
-# 3 is AAUDIO_POLICY_ALWAYS means only use MMAP path.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_policy=2
-# 1 is AAUDIO_POLICY_NEVER  means only use SHARED mode
-# 2 is AAUDIO_POLICY_AUTO   means try EXCLUSIVE then fallback to SHARED mode.
-# 3 is AAUDIO_POLICY_ALWAYS means only use EXCLUSIVE mode.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_exclusive_policy=2
-
-# Increase the apparent size of a hardware burst from 1 msec to 2 msec.
-# A "burst" is the number of frames processed at one time.
-# That is an increase from 48 to 96 frames at 48000 Hz.
-# The DSP will still be bursting at 48 frames but AAudio will think the burst is 96 frames.
-# A low number, like 48, might increase power consumption or stress the system.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.hw_burst_min_usec=2000
-
-# Set lmkd options
-PRODUCT_PRODUCT_PROPERTIES += \
-    ro.config.low_ram = false \
-    ro.lmk.log_stats = true \
-
-# A2DP offload enabled for compilation
-AUDIO_FEATURE_ENABLED_A2DP_OFFLOAD := true
-
-# A2DP offload supported
-PRODUCT_PROPERTY_OVERRIDES += \
-ro.bluetooth.a2dp_offload.supported=true
-
-# A2DP offload disabled (UI toggle property)
-PRODUCT_PROPERTY_OVERRIDES += \
-persist.bluetooth.a2dp_offload.disabled=false
-
-# A2DP offload DSP supported encoder list
-PRODUCT_PROPERTY_OVERRIDES += \
-persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac
-
-# Modem loging file
-PRODUCT_COPY_FILES += \
-    device/google/bonito/init.logging.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.$(PRODUCT_PLATFORM).logging.rc
-
-# Dumpstate HAL
-PRODUCT_PACKAGES += \
-    android.hardware.dumpstate@1.0-service.bonito
-
-# Enable retrofit dynamic partitions for all bonito
-# and sargo targets
-PRODUCT_USE_DYNAMIC_PARTITIONS := true
-PRODUCT_RETROFIT_DYNAMIC_PARTITIONS := true
-PRODUCT_PACKAGES += \
-    android.hardware.boot@1.0-impl.recovery \
-    bootctrl.sdm710 \
-    bootctrl.sdm710.recovery \
-    check_dynamic_partitions \
-
-AB_OTA_POSTINSTALL_CONFIG += \
-    RUN_POSTINSTALL_product=true \
-    POSTINSTALL_PATH_product=bin/check_dynamic_partitions \
-    FILESYSTEM_TYPE_product=ext4 \
-    POSTINSTALL_OPTIONAL_product=false \
-
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.use_color_management=true
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.protected_contents=true
-
-# Set thermal warm reset
-PRODUCT_PRODUCT_PROPERTIES += \
-    ro.thermal_warmreset = true \
-
-##############################
-### Auto-specific settings ###
-##############################
-
-# Sepolicy for EVS
-include packages/services/Car/evs/sepolicy/evs.mk
diff --git a/bonito_car/overlay/packages/services/Car/service/res/values/config.xml b/bonito_car/overlay/packages/services/Car/service/res/values/config.xml
deleted file mode 100644
index 8116e7b..0000000
--- a/bonito_car/overlay/packages/services/Car/service/res/values/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2020, 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 to configure car service based on each OEM's preference. -->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- Disable switching the user while the system is resuming from Suspend to RAM.
-         This default says to prevent changing the user during Resume. -->
-    <bool name="config_disableUserSwitchDuringResume" translatable="false">false</bool>
-</resources>
diff --git a/bramble_car/BoardConfig.mk b/bramble_car/BoardConfig.mk
new file mode 100644
index 0000000..bd92c49
--- /dev/null
+++ b/bramble_car/BoardConfig.mk
@@ -0,0 +1,32 @@
+#
+# Copyright (C) 2020 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.
+#
+
+# Contents of this file were copied from device/google/sunfish/sunfish/BoardConfig.mk,
+# except for:
+#
+# * TARGET_SCREEN_DENSITY is scaled down by 1.75x
+
+
+TARGET_BOOTLOADER_BOARD_NAME := bramble
+TARGET_RECOVERY_UI_MARGIN_HEIGHT := 165
+USES_DEVICE_GOOGLE_BRAMBLE := true
+
+include device/google/redbull/BoardConfig-common.mk
+
+# Testing related defines
+#BOARD_PERFSETUP_SCRIPT := platform_testing/scripts/perf-setup/b5-setup.sh
+
+-include vendor/google_devices/$(TARGET_BOOTLOADER_BOARD_NAME)/proprietary/BoardConfigVendor.mk
diff --git a/bramble_car/aosp_bramble_car.mk b/bramble_car/aosp_bramble_car.mk
new file mode 100644
index 0000000..f909d56
--- /dev/null
+++ b/bramble_car/aosp_bramble_car.mk
@@ -0,0 +1,27 @@
+#
+# Copyright 2020 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.
+#
+
+$(call inherit-product, device/google_car/common/pre_google_car.mk)
+$(call inherit-product, device/google_car/bramble_car/device-bramble-car.mk)
+$(call inherit-product-if-exists, vendor/google_devices/bramble/proprietary/device-vendor.mk)
+$(call inherit-product-if-exists, vendor/google_devices/bramble/prebuilts/device-vendor-bramble.mk)
+$(call inherit-product, device/google_car/common/post_google_car.mk)
+
+PRODUCT_MANUFACTURER := Google
+PRODUCT_BRAND := Android
+PRODUCT_NAME := aosp_bramble_car
+PRODUCT_DEVICE := bramble
+PRODUCT_MODEL := AOSP on bramble
diff --git a/bramble_car/device-bramble-car.mk b/bramble_car/device-bramble-car.mk
new file mode 100644
index 0000000..edbd7bf
--- /dev/null
+++ b/bramble_car/device-bramble-car.mk
@@ -0,0 +1,24 @@
+#
+# Copyright 2020 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.
+#
+
+PHONE_CAR_BOARD_CONFIG := device/google_car/bramble_car/BoardConfig.mk
+
+$(call inherit-product, packages/services/Car/car_product/build/car.mk)
+
+$(call inherit-product, device/google/bramble/device-bramble.mk)
+
+PRODUCT_PRODUCT_PROPERTIES+= \
+    ro.adb.secure=0
diff --git a/coral_car/audio_effects.xml b/common/audio_effects.xml
similarity index 100%
rename from coral_car/audio_effects.xml
rename to common/audio_effects.xml
diff --git a/bonito_car/manifest.xml b/common/manifest.xml
similarity index 62%
rename from bonito_car/manifest.xml
rename to common/manifest.xml
index 3f622ec..b617d02 100644
--- a/bonito_car/manifest.xml
+++ b/common/manifest.xml
@@ -15,15 +15,14 @@
 -->
 <manifest version="1.0" type="framework" >
     <hal format="hidl">
-        <name>android.hardware.automotive.audiocontrol</name>
+        <name>android.hardware.automotive.vehicle</name>
         <transport>hwbinder</transport>
-        <version>1.0</version>
+        <version>2.0</version>
         <interface>
-            <name>IAudioControl</name>
+            <name>IVehicle</name>
             <instance>default</instance>
         </interface>
     </hal>
-    <!-- FIXME: Move this to shared manifest.xml -->
     <hal format="hidl">
         <name>android.hardware.broadcastradio</name>
         <transport>hwbinder</transport>
@@ -34,7 +33,37 @@
             <instance>dab</instance>
         </interface>
     </hal>
-   <hal format="aidl" optional="true">
+    <hal format="hidl">
+        <name>android.hardware.automotive.audiocontrol</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IAudioControl</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.automotive.can</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>ICanController</name>
+            <instance>socketcan</instance>
+        </interface>
+        <interface>
+            <name>ICanBus</name>
+            <instance>test1</instance>
+            <instance>test2</instance>
+        </interface>
+    </hal>
+    <hal format="aidl">
+        <name>android.hardware.automotive.occupant_awareness</name>
+        <interface>
+            <name>IOccupantAwareness</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="aidl" optional="true">
        <name>android.automotive.computepipe.registry</name>
        <interface>
            <name>IPipeQuery</name>
diff --git a/common/overlay/frameworks/base/core/res/res/values/vendor_policy_exempt_apps.xml b/common/overlay/frameworks/base/core/res/res/values/vendor_policy_exempt_apps.xml
new file mode 100644
index 0000000..93f80ac
--- /dev/null
+++ b/common/overlay/frameworks/base/core/res/res/values/vendor_policy_exempt_apps.xml
@@ -0,0 +1,31 @@
+<?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>
+    <!--
+    A collection of apps that are critical for the device and hence will never be disabled by
+    device policies or APIs.
+    -->
+    <string-array translatable="false" name="vendor_policy_exempt_apps">
+        <!-- This is just an example; on real products this list would
+             contain apps like:
+             - Rear-view camera
+             - Driver assistance
+             - Vehicle warnings
+        -->
+        <item>com.google.android.car.netdbug</item>
+    </string-array>
+</resources>
diff --git a/common/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/common/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
new file mode 100644
index 0000000..659b801
--- /dev/null
+++ b/common/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -0,0 +1,21 @@
+<?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>
+    <integer name="def_user_rotation">1</integer>
+</resources>
diff --git a/common/post_google_car.mk b/common/post_google_car.mk
new file mode 100644
index 0000000..300cf0e
--- /dev/null
+++ b/common/post_google_car.mk
@@ -0,0 +1,49 @@
+#
+# Copyright 2020 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.
+#
+
+####
+#### This file should be included at the bottom of the aosp_PHONE_car.mk file
+####
+
+# Auto modules
+PRODUCT_PACKAGES += \
+            android.hardware.automotive.audiocontrol-service.example \
+            android.hardware.automotive.can@1.0-service
+
+PRODUCT_PACKAGES_DEBUG += \
+            canhalctrl \
+            canhaldump \
+            canhalsend \
+            android.hardware.automotive.occupant_awareness@1.0-service \
+            android.hardware.automotive.occupant_awareness@1.0-service_mock
+
+BOARD_SEPOLICY_DIRS += device/google_car/common/sepolicy
+
+# Sepolicy for occupant awareness system
+include packages/services/Car/car_product/occupant_awareness/OccupantAwareness.mk
+
+# Sepolicy for compute pipe system
+include packages/services/Car/cpp/computepipe/products/computepipe.mk
+
+PRODUCT_COPY_FILES += \
+    device/google_car/common/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \
+
+PRODUCT_PROPERTY_OVERRIDES += \
+        ro.boot.wificountrycode=00 \
+        log.tag.CarTrustAgentUnlockEvent=I
+
+# Phone car targets don't support ramdump
+EXCLUDE_BUILD_RAMDUMP_UPLOADER_DEBUG_TOOL := true
\ No newline at end of file
diff --git a/common/pre_google_car.mk b/common/pre_google_car.mk
new file mode 100644
index 0000000..6437e35
--- /dev/null
+++ b/common/pre_google_car.mk
@@ -0,0 +1,101 @@
+#
+# Copyright 2020 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.
+#
+
+####
+#### This file should be included at the top of the aosp_PHONE_car.mk file
+####
+
+DEVICE_FRAMEWORK_MANIFEST_FILE += device/google_car/common/manifest.xml
+
+# generic_system.mk sets 'PRODUCT_ENFORCE_RRO_TARGETS := *'
+# but this breaks phone_car. So undo it here.
+PRODUCT_ENFORCE_RRO_TARGETS :=
+
+# Enable mainline checking
+PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS :=
+
+# 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/generic_system.mk)
+
+#
+# All components inherited here go to system_ext image
+#
+$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_system_ext.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_system_ext.mk)
+
+#
+# All components inherited here go to product image
+#
+$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
+
+# Auto modules
+PRODUCT_PACKAGES += \
+            android.hardware.broadcastradio@2.0-service \
+            android.hardware.automotive.vehicle@2.0-service
+
+# Additional selinux policy
+BOARD_SEPOLICY_DIRS += device/google_car/common/sepolicy
+
+# Car init.rc
+PRODUCT_COPY_FILES += \
+            packages/services/Car/car_product/init/init.bootstat.rc:root/init.bootstat.rc \
+            packages/services/Car/car_product/init/init.car.rc:root/init.car.rc
+
+# Override heap growth limit due to high display density on device
+PRODUCT_PROPERTY_OVERRIDES += \
+            dalvik.vm.heapgrowthlimit=256m
+
+PRODUCT_PACKAGE_OVERLAYS += device/google_car/common/overlay
+
+# Enable landscape
+PRODUCT_COPY_FILES += \
+            frameworks/native/data/etc/android.hardware.screen.landscape.xml:system/etc/permissions/android.hardware.screen.landscape.xml
+
+
+TARGET_USES_CAR_FUTURE_FEATURES := true
+
+PRODUCT_COPY_FILES += \
+        frameworks/native/data/etc/car_core_hardware.xml:system/etc/permissions/car_core_hardware.xml \
+        frameworks/native/data/etc/android.hardware.type.automotive.xml:system/etc/permissions/android.hardware.type.automotive.xml \
+        frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \
+        frameworks/native/data/etc/android.hardware.telephony.cdma.xml:system/etc/permissions/android.hardware.telephony.cdma.xml \
+        frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \
+        frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \
+        frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \
+        frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \
+        frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \
+        frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \
+        frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:system/etc/permissions/android.hardware.sensor.gyroscope.xml \
+        frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \
+        frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml \
+        frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \
+        frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml
+
+# broadcast radio feature
+ PRODUCT_COPY_FILES += \
+        frameworks/native/data/etc/android.hardware.broadcastradio.xml:system/etc/permissions/android.hardware.broadcastradio.xml
+
+# Include EVS reference implementations
+ENABLE_EVS_SAMPLE := true
+
+#
+# All components inherited here go to vendor image
+#
+# TODO(b/136525499): move *_vendor.mk into the vendor makefile later
+$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_vendor.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_vendor.mk)
diff --git a/coral_car/BoardConfig.mk b/coral_car/BoardConfig.mk
new file mode 100644
index 0000000..5978b7d
--- /dev/null
+++ b/coral_car/BoardConfig.mk
@@ -0,0 +1,26 @@
+#
+# Copyright (C) 2020 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.
+#
+
+# Contents of this file were copied from device/google/coral/coral/BoardConfig.mk,
+# except for:
+#
+# * TARGET_SCREEN_DENSITY is scaled down by 1.75x
+
+TARGET_BOOTLOADER_BOARD_NAME := coral
+TARGET_SCREEN_DENSITY := 320
+TARGET_RECOVERY_UI_MARGIN_HEIGHT := 165
+
+include device/google/coral/BoardConfig-common.mk
diff --git a/coral_car/aosp_coral_car.mk b/coral_car/aosp_coral_car.mk
index d876f35..130bff2 100644
--- a/coral_car/aosp_coral_car.mk
+++ b/coral_car/aosp_coral_car.mk
@@ -14,114 +14,11 @@
 # limitations under the License.
 #
 
-DEVICE_FRAMEWORK_MANIFEST_FILE += device/google_car/coral_car/manifest.xml
-
-#
-# 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/generic_system.mk)
-
-# generic_system.mk sets 'PRODUCT_ENFORCE_RRO_TARGETS := *'
-# but this breaks coral_car. So undo it here.
-PRODUCT_ENFORCE_RRO_TARGETS :=
-
-# Enable mainline checking
-PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS :=
-
-
-#
-# All components inherited here go to system_ext image
-#
-$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_system_ext.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_system_ext.mk)
-
-#
-# All components inherited here go to product image
-#
-$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
-
-# Auto modules
-PRODUCT_PACKAGES += \
-            android.hardware.broadcastradio@2.0-service \
-            android.hardware.automotive.vehicle@2.0-service
-
-# Additional selinux policy
-BOARD_SEPOLICY_DIRS += device/google_car/common/sepolicy
-
-# Car init.rc
-PRODUCT_COPY_FILES += \
-            packages/services/Car/car_product/init/init.bootstat.rc:root/init.bootstat.rc \
-            packages/services/Car/car_product/init/init.car.rc:root/init.car.rc
-
-# Override heap growth limit due to high display density on device
-PRODUCT_PROPERTY_OVERRIDES += \
-            dalvik.vm.heapgrowthlimit=256m
-
-PRODUCT_PACKAGE_OVERLAYS += device/google_car/coral_car/overlay
-
-# Pre-create users
-PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
-    android.car.number_pre_created_users=1 \
-    android.car.number_pre_created_guests=1 \
-    android.car.user_hal_enabled=true
-
-# Enable landscape
-PRODUCT_COPY_FILES += \
-            frameworks/native/data/etc/android.hardware.screen.landscape.xml:system/etc/permissions/android.hardware.screen.landscape.xml
-
-
-TARGET_USES_CAR_FUTURE_FEATURES := true
-
-PRODUCT_COPY_FILES += \
-        frameworks/native/data/etc/car_core_hardware.xml:system/etc/permissions/car_core_hardware.xml \
-        frameworks/native/data/etc/android.hardware.type.automotive.xml:system/etc/permissions/android.hardware.type.automotive.xml \
-        frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \
-        frameworks/native/data/etc/android.hardware.telephony.cdma.xml:system/etc/permissions/android.hardware.telephony.cdma.xml \
-        frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \
-        frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \
-        frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \
-        frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \
-        frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \
-        frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \
-        frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:system/etc/permissions/android.hardware.sensor.gyroscope.xml \
-        frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \
-        frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml \
-        frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \
-        frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml
-
-# broadcast radio feature
- PRODUCT_COPY_FILES += \
-        frameworks/native/data/etc/android.hardware.broadcastradio.xml:system/etc/permissions/android.hardware.broadcastradio.xml
-
-# EVS v1.1
-PRODUCT_PACKAGES += android.automotive.evs.manager@1.1 \
-                    android.hardware.automotive.evs@1.1-sample \
-                    evs_app
-PRODUCT_PRODUCT_PROPERTIES += persist.automotive.evs.mode=0
-
-# Automotive display service
-PRODUCT_PACKAGES += android.frameworks.automotive.display@1.0-service
-
-#
-# All components inherited here go to vendor image
-#
-# TODO(b/136525499): move *_vendor.mk into the vendor makefile later
-$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_vendor.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_vendor.mk)
-
+$(call inherit-product, device/google_car/common/pre_google_car.mk)
 $(call inherit-product, device/google_car/coral_car/device-coral-car.mk)
 $(call inherit-product-if-exists, vendor/google_devices/coral/proprietary/device-vendor.mk)
 $(call inherit-product-if-exists, vendor/google_devices/coral/prebuilts/device-vendor-coral.mk)
-
-PRODUCT_COPY_FILES += \
-    $(LOCAL_PATH)/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \
-
-# Don't build super.img.
-PRODUCT_BUILD_SUPER_PARTITION := false
-
-# b/113232673 STOPSHIP deal with Qualcomm stuff later
-# PRODUCT_RESTRICT_VENDOR_FILES := all
+$(call inherit-product, device/google_car/common/post_google_car.mk)
 
 PRODUCT_MANUFACTURER := Google
 PRODUCT_BRAND := Android
diff --git a/coral_car/device-common.mk b/coral_car/device-common.mk
deleted file mode 100644
index adecc94..0000000
--- a/coral_car/device-common.mk
+++ /dev/null
@@ -1,125 +0,0 @@
-#
-# Copyright (C) 2019 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.
-#
-
-# define hardware platform
-PRODUCT_PLATFORM := sm8150
-
-# Enable updating of APEXes
-$(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk)
-
-include device/google/coral/device.mk
-
-# Set Vendor SPL to match platform
-VENDOR_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH)
-
-# Set boot SPL
-BOOT_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH)
-
-PRODUCT_PROPERTY_OVERRIDES += vendor.audio.adm.buffering.ms=3
-PRODUCT_PROPERTY_OVERRIDES += vendor.audio_hal.period_multiplier=2
-PRODUCT_PROPERTY_OVERRIDES += af.fast_track_multiplier=1
-PRODUCT_PROPERTY_OVERRIDES += vendor.audio.offload.buffer.size.kb=256
-
-# Enable AAudio MMAP/NOIRQ data path.
-# 1 is AAUDIO_POLICY_NEVER  means only use Legacy path.
-# 2 is AAUDIO_POLICY_AUTO   means try MMAP then fallback to Legacy path.
-# 3 is AAUDIO_POLICY_ALWAYS means only use MMAP path.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_policy=2
-# 1 is AAUDIO_POLICY_NEVER  means only use SHARED mode
-# 2 is AAUDIO_POLICY_AUTO   means try EXCLUSIVE then fallback to SHARED mode.
-# 3 is AAUDIO_POLICY_ALWAYS means only use EXCLUSIVE mode.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_exclusive_policy=2
-
-# Increase the apparent size of a hardware burst from 1 msec to 2 msec.
-# A "burst" is the number of frames processed at one time.
-# That is an increase from 48 to 96 frames at 48000 Hz.
-# The DSP will still be bursting at 48 frames but AAudio will think the burst is 96 frames.
-# A low number, like 48, might increase power consumption or stress the system.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.hw_burst_min_usec=2000
-
-# A2DP offload enabled for compilation
-AUDIO_FEATURE_ENABLED_A2DP_OFFLOAD := true
-
-# A2DP offload supported
-PRODUCT_PROPERTY_OVERRIDES += \
-ro.bluetooth.a2dp_offload.supported=true
-
-# A2DP offload disabled (UI toggle property)
-PRODUCT_PROPERTY_OVERRIDES += \
-persist.bluetooth.a2dp_offload.disabled=false
-
-# A2DP offload DSP supported encoder list
-PRODUCT_PROPERTY_OVERRIDES += \
-persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac
-
-# Enable AAC frame ctl for A2DP sinks
-PRODUCT_PROPERTY_OVERRIDES += \
-persist.vendor.bt.aac_frm_ctl.enabled=true
-
-# Set lmkd options
-PRODUCT_PRODUCT_PROPERTIES += \
-    ro.config.low_ram = false \
-    ro.lmk.log_stats = true \
-
-# Modem logging file
-PRODUCT_COPY_FILES += \
-    device/google/coral/init.logging.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.$(PRODUCT_PLATFORM).logging.rc
-
-# Pixelstats broken mic detection
-PRODUCT_PROPERTY_OVERRIDES += vendor.audio.mic_break=true
-
-# Enable APK Verity, which depends on fs-verity support in kernel.
-PRODUCT_PROPERTY_OVERRIDES += ro.apk_verity.mode=2
-
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += vendor.display.enable_kernel_idle_timer=true
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.use_color_management=true
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.has_wide_color_display=true
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.has_HDR_display=true
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.set_idle_timer_ms=80
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.set_touch_timer_ms=200
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.set_display_power_timer_ms=1000
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.support_kernel_idle_timer=true
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.use_content_detection_for_refresh_rate=true
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.protected_contents=true
-
-# Must align with HAL types Dataspace
-# The data space of wide color gamut composition preference is Dataspace::DISPLAY_P3
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.wcg_composition_dataspace=143261696
-
-# MIDI feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.software.midi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.midi.xml
-
-# Audio low latency feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.hardware.audio.low_latency.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.low_latency.xml
-
-# Pro audio feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml
-
-# Dmabuf dump tool for bug reports
-PRODUCT_PACKAGES += \
-    dmabuf_dump
-
-# Set thermal warm reset
-PRODUCT_PRODUCT_PROPERTIES += \
-    ro.thermal_warmreset = true \
-
-PRODUCT_ENFORCE_PRODUCT_PARTITION_INTERFACE := true
-
-# Sepolicy for EVS
-include packages/services/Car/evs/sepolicy/evs.mk
diff --git a/coral_car/device-coral-car.mk b/coral_car/device-coral-car.mk
index 7cde415..596d2bc 100644
--- a/coral_car/device-coral-car.mk
+++ b/coral_car/device-coral-car.mk
@@ -14,19 +14,8 @@
 # limitations under the License.
 #
 
-PRODUCT_HARDWARE := coral
+PHONE_CAR_BOARD_CONFIG := device/google_car/coral_car/BoardConfig.mk
 
 $(call inherit-product, packages/services/Car/car_product/build/car.mk)
-include device/google_car/coral_car/device-common.mk
 
-DEVICE_PACKAGE_OVERLAYS += device/google/coral/coral/overlay
-
-PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=250
-
-# Audio XMLs for coral
-PRODUCT_COPY_FILES += \
-    device/google/coral/audio/audio_policy_volumes_coral.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml
-
-# Bluetooth Tx power caps for coral
-PRODUCT_COPY_FILES += \
-    device/google/coral/bluetooth_power_limits_coral.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits.csv
+$(call inherit-product, device/google/coral/device-coral.mk)
diff --git a/coral_car/manifest.xml b/coral_car/manifest.xml
deleted file mode 100644
index c9eea40..0000000
--- a/coral_car/manifest.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2019 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.
--->
-<manifest version="1.0" type="framework" >
-    <!-- FIXME: Move this to shared manifest.xml -->
-    <hal format="hidl">
-        <name>android.hardware.broadcastradio</name>
-        <transport>hwbinder</transport>
-        <version>2.0</version>
-        <interface>
-            <name>IBroadcastRadio</name>
-            <instance>amfm</instance>
-            <instance>dab</instance>
-        </interface>
-    </hal>
-</manifest>
diff --git a/coral_car/overlay/packages/services/Car/service/res/values/config.xml b/coral_car/overlay/packages/services/Car/service/res/values/config.xml
deleted file mode 100644
index 8116e7b..0000000
--- a/coral_car/overlay/packages/services/Car/service/res/values/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2020, 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 to configure car service based on each OEM's preference. -->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- Disable switching the user while the system is resuming from Suspend to RAM.
-         This default says to prevent changing the user during Resume. -->
-    <bool name="config_disableUserSwitchDuringResume" translatable="false">false</bool>
-</resources>
diff --git a/crosshatch_car/BoardConfig.mk b/crosshatch_car/BoardConfig.mk
new file mode 100644
index 0000000..9b5dc52
--- /dev/null
+++ b/crosshatch_car/BoardConfig.mk
@@ -0,0 +1,26 @@
+#
+# Copyright (C) 2020 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.
+#
+
+# Contents of this file were copied from device/google/crosshatch/crosshatch/BoardConfig.mk,
+# except for:
+#
+# * TARGET_SCREEN_DENSITY is scaled down by 1.75x
+
+TARGET_BOOTLOADER_BOARD_NAME := crosshatch
+TARGET_SCREEN_DENSITY := 320
+TARGET_RECOVERY_UI_MARGIN_HEIGHT := 165
+
+include device/google/crosshatch/BoardConfig-common.mk
diff --git a/crosshatch_car/aosp_crosshatch_car.mk b/crosshatch_car/aosp_crosshatch_car.mk
index 2d0cb61..4a5a690 100644
--- a/crosshatch_car/aosp_crosshatch_car.mk
+++ b/crosshatch_car/aosp_crosshatch_car.mk
@@ -14,116 +14,10 @@
 # limitations under the License.
 #
 
-DEVICE_FRAMEWORK_MANIFEST_FILE += device/google_car/crosshatch_car/manifest.xml
-
-#
-# 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/generic_system.mk)
-
-# generic_system.mk sets 'PRODUCT_ENFORCE_RRO_TARGETS := *'
-# but this breaks crosshatch_car. So undo it here.
-PRODUCT_ENFORCE_RRO_TARGETS :=
-
-# Enable mainline checking
-# TODO(b/138706293): Enable mainline checking later
-# PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := relaxed
-
-#
-# All components inherited here go to system_ext image
-#
-$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_system_ext.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_system_ext.mk)
-
-#
-# All components inherited here go to product image
-#
-$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
-
-# Auto modules
-PRODUCT_PACKAGES += \
-            android.hardware.broadcastradio@2.0-service \
-            android.hardware.automotive.vehicle@2.0-service
-
-# Additional selinux policy
-BOARD_SEPOLICY_DIRS += device/google_car/common/sepolicy
-
-PRODUCT_PACKAGES += \
-            android.hardware.automotive.audiocontrol@1.0-service
-
-# Car init.rc
-PRODUCT_COPY_FILES += \
-            packages/services/Car/car_product/init/init.bootstat.rc:root/init.bootstat.rc \
-            packages/services/Car/car_product/init/init.car.rc:root/init.car.rc
-
-# Override heap growth limit due to high display density on device
-PRODUCT_PROPERTY_OVERRIDES += \
-            dalvik.vm.heapgrowthlimit=256m
-
-PRODUCT_PACKAGE_OVERLAYS += device/google_car/crosshatch_car/overlay
-
-# Pre-create users
-PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
-    android.car.number_pre_created_users=1 \
-    android.car.number_pre_created_guests=1 \
-    android.car.user_hal_enabled=true
-
-# Enable landscape
-PRODUCT_COPY_FILES += \
-            frameworks/native/data/etc/android.hardware.screen.landscape.xml:system/etc/permissions/android.hardware.screen.landscape.xml
-
-# Vendor Interface Manifest
-PRODUCT_COPY_FILES += \
-            frameworks/native/data/etc/android.hardware.broadcastradio.xml:system/etc/permissions/android.hardware.broadcastradio.xml
-
-TARGET_USES_CAR_FUTURE_FEATURES := true
-
-PRODUCT_COPY_FILES += \
-        frameworks/native/data/etc/car_core_hardware.xml:system/etc/permissions/car_core_hardware.xml \
-        frameworks/native/data/etc/android.hardware.type.automotive.xml:system/etc/permissions/android.hardware.type.automotive.xml \
-        frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \
-        frameworks/native/data/etc/android.hardware.telephony.cdma.xml:system/etc/permissions/android.hardware.telephony.cdma.xml \
-        frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \
-        frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \
-        frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \
-        frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \
-        frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \
-        frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \
-        frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:system/etc/permissions/android.hardware.sensor.gyroscope.xml \
-        frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \
-        frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml \
-        frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \
-        frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml
-
-# broadcast radio feature
- PRODUCT_COPY_FILES += \
-        frameworks/native/data/etc/android.hardware.broadcastradio.xml:system/etc/permissions/android.hardware.broadcastradio.xml
-
-# EVS v1.1
-PRODUCT_PACKAGES += android.automotive.evs.manager@1.1 \
-                    android.hardware.automotive.evs@1.1-sample \
-                    evs_app
-PRODUCT_PRODUCT_PROPERTIES += persist.automotive.evs.mode=0
-
-# Automotive display service
-PRODUCT_PACKAGES += android.frameworks.automotive.display@1.0-service
-
-#
-# All components inherited here go to vendor image
-#
-# TODO(b/136525499): move *_vendor.mk into the vendor makefile later
-$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_vendor.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_vendor.mk)
-
+$(call inherit-product, device/google_car/common/pre_google_car.mk)
 $(call inherit-product, device/google_car/crosshatch_car/device-crosshatch-car.mk)
 $(call inherit-product-if-exists, vendor/google_devices/crosshatch/proprietary/device-vendor.mk)
-
-
-PRODUCT_COPY_FILES += $(LOCAL_PATH)/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml
-
-# STOPSHIP deal with Qualcomm stuff later
-# PRODUCT_RESTRICT_VENDOR_FILES := all
+$(call inherit-product, device/google_car/common/post_google_car.mk)
 
 PRODUCT_MANUFACTURER := Google
 PRODUCT_BRAND := Android
diff --git a/crosshatch_car/audio_effects.xml b/crosshatch_car/audio_effects.xml
deleted file mode 100644
index 9e6b862..0000000
--- a/crosshatch_car/audio_effects.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2019 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.
--->
-<audio_effects_conf version="2.0" xmlns="http://schemas.android.com/audio/audio_effects_conf/v2_0">
-    <libraries>
-        <library name="bundle" path="libbundlewrapper.so"/>
-        <library name="reverb" path="libreverbwrapper.so"/>
-        <library name="visualizer_sw" path="libvisualizer.so"/>
-        <library name="visualizer_hw" path="libqcomvisualizer.so"/>
-        <library name="downmix" path="libdownmix.so"/>
-        <library name="dynamics_processing" path="libdynproc.so"/>
-        <library name="loudness_enhancer" path="libldnhncr.so"/>
-        <library name="proxy" path="libeffectproxy.so"/>
-        <library name="offload_bundle" path="libqcompostprocbundle.so"/>
-        <library name="audio_pre_processing" path="libqcomvoiceprocessing.so"/>
-        <library name="volume_listener" path="libvolumelistener.so"/>
-    </libraries>
-    <effects>
-        <effectProxy name="bassboost" library="proxy" uuid="14804144-a5ee-4d24-aa88-0002a5d5c51b">
-            <libsw library="bundle" uuid="8631f300-72e2-11df-b57e-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="2c4a8c24-1581-487f-94f6-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="virtualizer" library="proxy" uuid="d3467faa-acc7-4d34-acaf-0002a5d5c51b">
-            <libsw library="bundle" uuid="1d4033c0-8557-11df-9f2d-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="509a4498-561a-4bea-b3b1-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="equalizer" library="proxy" uuid="c8e70ecd-48ca-456e-8a4f-0002a5d5c51b">
-            <libsw library="bundle" uuid="ce772f20-847d-11df-bb17-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="a0dac280-401c-11e3-9379-0002a5d5c51b"/>
-        </effectProxy>
-        <effect name="volume" library="bundle" uuid="119341a0-8469-11df-81f9-0002a5d5c51b"/>
-        <effectProxy name="reverb_env_aux" library="proxy" uuid="48404ac9-d202-4ccc-bf84-0002a5d5c51b">
-            <libsw library="reverb" uuid="4a387fc0-8ab3-11df-8bad-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="79a18026-18fd-4185-8233-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="reverb_env_ins" library="proxy" uuid="b707403a-a1c1-4291-9573-0002a5d5c51b">
-            <libsw library="reverb" uuid="c7a511a0-a3bb-11df-860e-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="eb64ea04-973b-43d2-8f5e-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="reverb_pre_aux" library="proxy" uuid="1b78f587-6d1c-422e-8b84-0002a5d5c51b">
-            <libsw library="reverb" uuid="f29a1400-a3bb-11df-8ddc-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="6987be09-b142-4b41-9056-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="reverb_pre_ins" library="proxy" uuid="f3e178d2-ebcb-408e-8357-0002a5d5c51b">
-            <libsw library="reverb" uuid="172cdf00-a3bc-11df-a72f-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="aa2bebf6-47cf-4613-9bca-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="visualizer" library="proxy" uuid="1d0a1a53-7d5d-48f2-8e71-27fbd10d842c">
-            <libsw library="visualizer_sw" uuid="d069d9e0-8329-11df-9168-0002a5d5c51b"/>
-            <libhw library="visualizer_hw" uuid="7a8044a0-1a71-11e3-a184-0002a5d5c51b"/>
-        </effectProxy>
-        <effect name="downmix" library="downmix" uuid="93f04452-e4fe-41cc-91f9-e475b6d1d69f"/>
-        <effect name="loudness_enhancer" library="loudness_enhancer" uuid="fa415329-2034-4bea-b5dc-5b381c8d1e2c"/>
-        <effect name="aec" library="audio_pre_processing" uuid="27dab416-23f8-11e8-b467-0ed5f89f718b"/>
-        <effect name="ns" library="audio_pre_processing" uuid="27dab6d2-23f8-11e8-b467-0ed5f89f718b"/>
-        <effect name="music_helper" library="volume_listener" uuid="08b8b058-0590-11e5-ac71-0025b32654a0"/>
-        <effect name="ring_helper" library="volume_listener" uuid="0956df94-0590-11e5-bdbe-0025b32654a0"/>
-        <effect name="alarm_helper" library="volume_listener" uuid="09f303e2-0590-11e5-8fdb-0025b32654a0"/>
-        <effect name="voice_helper" library="volume_listener" uuid="0ace5c08-0590-11e5-ae9e-0025b32654a0"/>
-        <effect name="notification_helper" library="volume_listener" uuid="0b776dde-0590-11e5-81ba-0025b32654a0"/>
-        <effect name="dynamics_processing" library="dynamics_processing" uuid="e0e6539b-1781-7261-676f-6d7573696340"/>
-    </effects>
-    <postprocess>
-        <stream type="music">
-            <apply effect="music_helper"/>
-        </stream>
-        <stream type="ring">
-            <apply effect="ring_helper"/>
-        </stream>
-        <stream type="alarm">
-            <apply effect="alarm_helper"/>
-        </stream>
-        <stream type="voice_call">
-            <apply effect="voice_helper"/>
-        </stream>
-        <stream type="notification">
-            <apply effect="notification_helper"/>
-        </stream>
-    </postprocess>
-    <preprocess>
-        <stream type="voice_communication">
-            <apply effect="aec"/>
-            <apply effect="ns"/>
-        </stream>
-    </preprocess>
-</audio_effects_conf>
diff --git a/crosshatch_car/device-common.mk b/crosshatch_car/device-common.mk
deleted file mode 100644
index e44b2b9..0000000
--- a/crosshatch_car/device-common.mk
+++ /dev/null
@@ -1,163 +0,0 @@
-#
-# Copyright (C) 2019 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.
-#
-
-TARGET_USERIMAGES_USE_F2FS := true
-
-LOCAL_PATH := device/google/crosshatch
-
-# define hardware platform
-PRODUCT_PLATFORM := sdm845
-
-# Enable updating of APEXes
-$(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk)
-
-include device/google/crosshatch/device.mk
-
-PRODUCT_PROPERTY_OVERRIDES += \
-    ro.control_privapp_permissions=disable
-
-PRODUCT_ENFORCE_RRO_TARGETS := framework-res
-
-# Audio fluence, ns, aec property, voice volume steps
-PRODUCT_PROPERTY_OVERRIDES += \
-    ro.qc.sdk.audio.fluencetype=fluencepro \
-    persist.audio.fluence.voicecall=true \
-    persist.audio.fluence.speaker=true \
-    persist.audio.fluence.voicecomm=true \
-    persist.audio.fluence.voicerec=false \
-    ro.config.vc_call_vol_steps=7
-
-# Bug 77867216
-PRODUCT_PROPERTY_OVERRIDES += audio.adm.buffering.ms=3
-PRODUCT_PROPERTY_OVERRIDES += vendor.audio.adm.buffering.ms=3
-PRODUCT_PROPERTY_OVERRIDES += audio_hal.period_multiplier=2
-PRODUCT_PROPERTY_OVERRIDES += af.fast_track_multiplier=1
-
-# Enable HW Codec 2.0 as default service
-# Set all codec components are available with their normal ranks
-# Set OMX components's default rank large than Codec 2.0 HW components's default rank (0x100)
-PRODUCT_PROPERTY_OVERRIDES += debug.stagefright.ccodec=4
-PRODUCT_PROPERTY_OVERRIDES += debug.stagefright.omx_default_rank=512
-
-# Pixelstats broken mic detection
-PRODUCT_PROPERTY_OVERRIDES += vendor.audio.mic_break=true
-
-# Setting vendor SPL
-VENDOR_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH)
-
-# Set boot SPL
-BOOT_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH)
-
-# MIDI feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.software.midi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.midi.xml
-
-# Audio low latency feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.hardware.audio.low_latency.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.low_latency.xml
-
-# Pro audio feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml
-
-# Enable AAudio MMAP/NOIRQ data path.
-# 1 is AAUDIO_POLICY_NEVER  means only use Legacy path.
-# 2 is AAUDIO_POLICY_AUTO   means try MMAP then fallback to Legacy path.
-# 3 is AAUDIO_POLICY_ALWAYS means only use MMAP path.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_policy=2
-# 1 is AAUDIO_POLICY_NEVER  means only use SHARED mode
-# 2 is AAUDIO_POLICY_AUTO   means try EXCLUSIVE then fallback to SHARED mode.
-# 3 is AAUDIO_POLICY_ALWAYS means only use EXCLUSIVE mode.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_exclusive_policy=2
-
-# Increase the apparent size of a hardware burst from 1 msec to 2 msec.
-# A "burst" is the number of frames processed at one time.
-# That is an increase from 48 to 96 frames at 48000 Hz.
-# The DSP will still be bursting at 48 frames but AAudio will think the burst is 96 frames.
-# A low number, like 48, might increase power consumption or stress the system.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.hw_burst_min_usec=2000
-
-# Set lmkd options
-PRODUCT_PRODUCT_PROPERTIES += \
-    ro.lmk.low=1001 \
-    ro.lmk.medium=800 \
-    ro.lmk.critical=0 \
-    ro.lmk.critical_upgrade=false \
-    ro.lmk.upgrade_pressure=100 \
-    ro.lmk.downgrade_pressure=100 \
-    ro.lmk.kill_heaviest_task=true \
-    ro.lmk.kill_timeout_ms=100 \
-    ro.lmk.use_minfree_levels=true \
-
-# A2DP offload enabled for compilation
-AUDIO_FEATURE_ENABLED_A2DP_OFFLOAD := true
-
-# A2DP offload supported
-PRODUCT_PROPERTY_OVERRIDES += \
-ro.bluetooth.a2dp_offload.supported=true
-
-# A2DP offload disabled (UI toggle property)
-PRODUCT_PROPERTY_OVERRIDES += \
-persist.bluetooth.a2dp_offload.disabled=false
-
-# A2DP offload DSP supported encoder list
-PRODUCT_PROPERTY_OVERRIDES += \
-persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac
-
-# Modem loging file
-PRODUCT_COPY_FILES += \
-    device/google/crosshatch/init.logging.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.$(PRODUCT_PLATFORM).logging.rc
-
-# Dumpstate HAL
-PRODUCT_PACKAGES += \
-    android.hardware.dumpstate@1.0-service.crosshatch
-
-# Dmabuf dump tool for bug reports
-PRODUCT_PACKAGES += \
-    dmabuf_dump
-
-# whitelisted app
-PRODUCT_COPY_FILES += \
-    device/google/crosshatch/qti_whitelist.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/sysconfig/qti_whitelist.xml
-
-PRODUCT_PACKAGES += \
-    llkd
-#PRODUCT_PROPERTY_OVERRIDES += \
-#    ro.khungtask.enable=false
-#
-
-# Enable retrofit dynamic partitions for all blueline
-# and crosshatch (except for hwaddress) targets
-PRODUCT_USE_DYNAMIC_PARTITIONS := true
-ifneq (,$(filter hwaddress, $(SANITIZE_TARGET)))
-PRODUCT_RETROFIT_DYNAMIC_PARTITIONS := false
-else
-PRODUCT_RETROFIT_DYNAMIC_PARTITIONS := true
-endif
-PRODUCT_PACKAGES += \
-    android.hardware.boot@1.0-impl.recovery \
-    bootctrl.sdm845 \
-    bootctrl.sdm845.recovery \
-    check_dynamic_partitions \
-
-AB_OTA_POSTINSTALL_CONFIG += \
-    RUN_POSTINSTALL_product=true \
-    POSTINSTALL_PATH_product=bin/check_dynamic_partitions \
-    FILESYSTEM_TYPE_product=ext4 \
-    POSTINSTALL_OPTIONAL_product=false \
-
-# Sepolicy for EVS
-include packages/services/Car/evs/sepolicy/evs.mk
diff --git a/crosshatch_car/device-crosshatch-car.mk b/crosshatch_car/device-crosshatch-car.mk
index 007fd1c..4e2525f 100644
--- a/crosshatch_car/device-crosshatch-car.mk
+++ b/crosshatch_car/device-crosshatch-car.mk
@@ -14,27 +14,9 @@
 # limitations under the License.
 #
 
-PRODUCT_HARDWARE := crosshatch
+PHONE_CAR_BOARD_CONFIG := device/google_car/crosshatch_car/BoardConfig.mk
 
 $(call inherit-product, packages/services/Car/car_product/build/car.mk)
-include device/google_car/crosshatch_car/device-common.mk
-include packages/services/Car/computepipe/products/computepipe.mk
 
-PRODUCT_COPY_FILES += \
-    device/google/crosshatch/init.insmod.crosshatch.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/init.insmod.cfg
+$(call inherit-product, device/google/crosshatch/device-crosshatch.mk)
 
-DEVICE_PACKAGE_OVERLAYS += device/google/crosshatch/crosshatch/overlay
-
-# Audio XMLs
-PRODUCT_COPY_FILES += \
-    device/google/crosshatch/mixer_paths_tavil_c1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_tavil_c1.xml \
-    device/google/crosshatch/audio_policy_volumes_c1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
-    device/google/crosshatch/audio_platform_info_tavil_c1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info_tavil_c1.xml
-
-PRODUCT_COPY_FILES += \
-    device/google/crosshatch/nfc/libnfc-nxp.crosshatch.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-nxp.conf
-
-PRODUCT_PACKAGES += \
-    NoCutoutOverlay
-
-PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=250
diff --git a/crosshatch_car/manifest.xml b/crosshatch_car/manifest.xml
deleted file mode 100644
index a6e2b39..0000000
--- a/crosshatch_car/manifest.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2019 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.
--->
-<manifest version="1.0" type="framework" >
-    <hal format="hidl">
-        <name>android.hardware.automotive.audiocontrol</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IAudioControl</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <!-- FIXME: Move this to shared manifest.xml -->
-    <hal format="hidl">
-        <name>android.hardware.broadcastradio</name>
-        <transport>hwbinder</transport>
-        <version>2.0</version>
-        <interface>
-            <name>IBroadcastRadio</name>
-            <instance>amfm</instance>
-            <instance>dab</instance>
-        </interface>
-    </hal>
-   <hal format="aidl" optional="true">
-       <name>android.automotive.computepipe.registry</name>
-       <interface>
-           <name>IPipeQuery</name>
-           <instance>router</instance>
-       </interface>
-       <interface>
-           <name>IPipeRegistration</name>
-           <instance>router</instance>
-       </interface>
-   </hal>
-</manifest>
diff --git a/crosshatch_car/overlay/packages/services/Car/service/res/values/config.xml b/crosshatch_car/overlay/packages/services/Car/service/res/values/config.xml
deleted file mode 100644
index 8116e7b..0000000
--- a/crosshatch_car/overlay/packages/services/Car/service/res/values/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2020, 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 to configure car service based on each OEM's preference. -->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- Disable switching the user while the system is resuming from Suspend to RAM.
-         This default says to prevent changing the user during Resume. -->
-    <bool name="config_disableUserSwitchDuringResume" translatable="false">false</bool>
-</resources>
diff --git a/flame_car/BoardConfig.mk b/flame_car/BoardConfig.mk
new file mode 100644
index 0000000..22e8ca4
--- /dev/null
+++ b/flame_car/BoardConfig.mk
@@ -0,0 +1,27 @@
+#
+# Copyright (C) 2020 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.
+#
+
+# Contents of this file were copied from device/google/coral/flame/BoardConfig.mk,
+# except for:
+#
+# * TARGET_SCREEN_DENSITY is scaled down by 1.75x
+
+
+TARGET_BOOTLOADER_BOARD_NAME := flame
+TARGET_SCREEN_DENSITY := 250
+TARGET_RECOVERY_UI_MARGIN_HEIGHT := 165
+
+include device/google/coral/BoardConfig-common.mk
diff --git a/flame_car/aosp_flame_car.mk b/flame_car/aosp_flame_car.mk
index cfaaf4e..6c2cd0f 100644
--- a/flame_car/aosp_flame_car.mk
+++ b/flame_car/aosp_flame_car.mk
@@ -14,116 +14,13 @@
 # limitations under the License.
 #
 
-DEVICE_FRAMEWORK_MANIFEST_FILE += device/google_car/flame_car/manifest.xml
-
-#
-# 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)
-
-# mainline_system.mk sets 'PRODUCT_ENFORCE_RRO_TARGETS := *'
-# but this breaks flame_car. So undo it here.
-PRODUCT_ENFORCE_RRO_TARGETS :=
-
-# Enable mainline checking
-PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS :=
-
-
-#
-# All components inherited here go to system_ext image
-#
-$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_system_ext.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_system_ext.mk)
-
-#
-# All components inherited here go to product image
-#
-$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
-
-# Auto modules
-PRODUCT_PACKAGES += \
-            android.hardware.broadcastradio@2.0-service \
-            android.hardware.automotive.vehicle@2.0-service
-
-
-# Additional selinux policy
-BOARD_SEPOLICY_DIRS += device/google_car/common/sepolicy
-
-# Car init.rc
-PRODUCT_COPY_FILES += \
-            packages/services/Car/car_product/init/init.bootstat.rc:root/init.bootstat.rc \
-            packages/services/Car/car_product/init/init.car.rc:root/init.car.rc
-
-# Override heap growth limit due to high display density on device
-PRODUCT_PROPERTY_OVERRIDES += \
-            dalvik.vm.heapgrowthlimit=256m
-
-PRODUCT_PACKAGE_OVERLAYS += device/google_car/flame_car/overlay
-
-# Pre-create users
-PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
-    android.car.number_pre_created_users=1 \
-    android.car.number_pre_created_guests=1 \
-    android.car.user_hal_enabled=true
-
-# Enable landscape
-PRODUCT_COPY_FILES += \
-            frameworks/native/data/etc/android.hardware.screen.landscape.xml:system/etc/permissions/android.hardware.screen.landscape.xml
-
-
-TARGET_USES_CAR_FUTURE_FEATURES := true
-
-PRODUCT_COPY_FILES += \
-        frameworks/native/data/etc/car_core_hardware.xml:system/etc/permissions/car_core_hardware.xml \
-        frameworks/native/data/etc/android.hardware.type.automotive.xml:system/etc/permissions/android.hardware.type.automotive.xml \
-        frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \
-        frameworks/native/data/etc/android.hardware.telephony.cdma.xml:system/etc/permissions/android.hardware.telephony.cdma.xml \
-        frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \
-        frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \
-        frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \
-        frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \
-        frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \
-        frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \
-        frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:system/etc/permissions/android.hardware.sensor.gyroscope.xml \
-        frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \
-        frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml \
-        frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \
-        frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml
-
-# broadcast radio feature
- PRODUCT_COPY_FILES += \
-        frameworks/native/data/etc/android.hardware.broadcastradio.xml:system/etc/permissions/android.hardware.broadcastradio.xml
-
-# EVS v1.1
-PRODUCT_PACKAGES += android.automotive.evs.manager@1.1 \
-                    android.hardware.automotive.evs@1.1-sample \
-                    evs_app
-PRODUCT_PRODUCT_PROPERTIES += persist.automotive.evs.mode=0
-
-# Automotive display service
-PRODUCT_PACKAGES += android.frameworks.automotive.display@1.0-service
-
-#
-# All components inherited here go to vendor image
-#
-# TODO(b/136525499): move *_vendor.mk into the vendor makefile later
-$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_vendor.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_vendor.mk)
-
+$(call inherit-product, device/google_car/common/pre_google_car.mk)
 $(call inherit-product, device/google_car/flame_car/device-flame-car.mk)
+$(call inherit-product, device/google_car/common/post_google_car.mk)
+
 $(call inherit-product-if-exists, vendor/google_devices/coral/proprietary/device-vendor.mk)
 $(call inherit-product-if-exists, vendor/google_devices/coral/prebuilts/device-vendor-flame.mk)
 
-PRODUCT_COPY_FILES += \
-    $(LOCAL_PATH)/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \
-
-# Don't build super.img.
-PRODUCT_BUILD_SUPER_PARTITION := false
-
-# b/113232673 STOPSHIP deal with Qualcomm stuff later
-# PRODUCT_RESTRICT_VENDOR_FILES := all
-
 PRODUCT_MANUFACTURER := Google
 PRODUCT_BRAND := Android
 PRODUCT_NAME := aosp_flame_car
diff --git a/flame_car/audio_effects.xml b/flame_car/audio_effects.xml
deleted file mode 100644
index 5bb453c..0000000
--- a/flame_car/audio_effects.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2020 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.
--->
-<audio_effects_conf version="2.0" xmlns="http://schemas.android.com/audio/audio_effects_conf/v2_0">
-    <libraries>
-        <library name="bundle" path="libbundlewrapper.so"/>
-        <library name="reverb" path="libreverbwrapper.so"/>
-        <library name="visualizer_sw" path="libvisualizer.so"/>
-        <library name="visualizer_hw" path="libqcomvisualizer.so"/>
-        <library name="downmix" path="libdownmix.so"/>
-        <library name="dynamics_processing" path="libdynproc.so"/>
-        <library name="loudness_enhancer" path="libldnhncr.so"/>
-        <library name="proxy" path="libeffectproxy.so"/>
-        <library name="offload_bundle" path="libqcompostprocbundle.so"/>
-        <library name="audio_pre_processing" path="libqcomvoiceprocessing.so"/>
-        <library name="volume_listener" path="libvolumelistener.so"/>
-    </libraries>
-    <effects>
-        <effectProxy name="bassboost" library="proxy" uuid="14804144-a5ee-4d24-aa88-0002a5d5c51b">
-            <libsw library="bundle" uuid="8631f300-72e2-11df-b57e-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="2c4a8c24-1581-487f-94f6-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="virtualizer" library="proxy" uuid="d3467faa-acc7-4d34-acaf-0002a5d5c51b">
-            <libsw library="bundle" uuid="1d4033c0-8557-11df-9f2d-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="509a4498-561a-4bea-b3b1-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="equalizer" library="proxy" uuid="c8e70ecd-48ca-456e-8a4f-0002a5d5c51b">
-            <libsw library="bundle" uuid="ce772f20-847d-11df-bb17-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="a0dac280-401c-11e3-9379-0002a5d5c51b"/>
-        </effectProxy>
-        <effect name="volume" library="bundle" uuid="119341a0-8469-11df-81f9-0002a5d5c51b"/>
-        <effectProxy name="reverb_env_aux" library="proxy" uuid="48404ac9-d202-4ccc-bf84-0002a5d5c51b">
-            <libsw library="reverb" uuid="4a387fc0-8ab3-11df-8bad-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="79a18026-18fd-4185-8233-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="reverb_env_ins" library="proxy" uuid="b707403a-a1c1-4291-9573-0002a5d5c51b">
-            <libsw library="reverb" uuid="c7a511a0-a3bb-11df-860e-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="eb64ea04-973b-43d2-8f5e-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="reverb_pre_aux" library="proxy" uuid="1b78f587-6d1c-422e-8b84-0002a5d5c51b">
-            <libsw library="reverb" uuid="f29a1400-a3bb-11df-8ddc-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="6987be09-b142-4b41-9056-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="reverb_pre_ins" library="proxy" uuid="f3e178d2-ebcb-408e-8357-0002a5d5c51b">
-            <libsw library="reverb" uuid="172cdf00-a3bc-11df-a72f-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="aa2bebf6-47cf-4613-9bca-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="visualizer" library="proxy" uuid="1d0a1a53-7d5d-48f2-8e71-27fbd10d842c">
-            <libsw library="visualizer_sw" uuid="d069d9e0-8329-11df-9168-0002a5d5c51b"/>
-            <libhw library="visualizer_hw" uuid="7a8044a0-1a71-11e3-a184-0002a5d5c51b"/>
-        </effectProxy>
-        <effect name="downmix" library="downmix" uuid="93f04452-e4fe-41cc-91f9-e475b6d1d69f"/>
-        <effect name="loudness_enhancer" library="loudness_enhancer" uuid="fa415329-2034-4bea-b5dc-5b381c8d1e2c"/>
-        <effect name="aec" library="audio_pre_processing" uuid="27dab416-23f8-11e8-b467-0ed5f89f718b"/>
-        <effect name="ns" library="audio_pre_processing" uuid="27dab6d2-23f8-11e8-b467-0ed5f89f718b"/>
-        <effect name="music_helper" library="volume_listener" uuid="08b8b058-0590-11e5-ac71-0025b32654a0"/>
-        <effect name="ring_helper" library="volume_listener" uuid="0956df94-0590-11e5-bdbe-0025b32654a0"/>
-        <effect name="alarm_helper" library="volume_listener" uuid="09f303e2-0590-11e5-8fdb-0025b32654a0"/>
-        <effect name="voice_helper" library="volume_listener" uuid="0ace5c08-0590-11e5-ae9e-0025b32654a0"/>
-        <effect name="notification_helper" library="volume_listener" uuid="0b776dde-0590-11e5-81ba-0025b32654a0"/>
-        <effect name="dynamics_processing" library="dynamics_processing" uuid="e0e6539b-1781-7261-676f-6d7573696340"/>
-    </effects>
-    <postprocess>
-        <stream type="music">
-            <apply effect="music_helper"/>
-        </stream>
-        <stream type="ring">
-            <apply effect="ring_helper"/>
-        </stream>
-        <stream type="alarm">
-            <apply effect="alarm_helper"/>
-        </stream>
-        <stream type="voice_call">
-            <apply effect="voice_helper"/>
-        </stream>
-        <stream type="notification">
-            <apply effect="notification_helper"/>
-        </stream>
-    </postprocess>
-    <preprocess>
-        <stream type="voice_communication">
-            <apply effect="aec"/>
-            <apply effect="ns"/>
-        </stream>
-    </preprocess>
-</audio_effects_conf>
diff --git a/flame_car/device-common.mk b/flame_car/device-common.mk
deleted file mode 100644
index 9d7d1b9..0000000
--- a/flame_car/device-common.mk
+++ /dev/null
@@ -1,125 +0,0 @@
-#
-# Copyright (C) 2020 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.
-#
-
-# define hardware platform
-PRODUCT_PLATFORM := sm8150
-
-# Enable updating of APEXes
-$(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk)
-
-include device/google/coral/device.mk
-
-# Set Vendor SPL to match platform
-VENDOR_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH)
-
-# Set boot SPL
-BOOT_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH)
-
-PRODUCT_PROPERTY_OVERRIDES += vendor.audio.adm.buffering.ms=3
-PRODUCT_PROPERTY_OVERRIDES += vendor.audio_hal.period_multiplier=2
-PRODUCT_PROPERTY_OVERRIDES += af.fast_track_multiplier=1
-PRODUCT_PROPERTY_OVERRIDES += vendor.audio.offload.buffer.size.kb=256
-
-# Enable AAudio MMAP/NOIRQ data path.
-# 1 is AAUDIO_POLICY_NEVER  means only use Legacy path.
-# 2 is AAUDIO_POLICY_AUTO   means try MMAP then fallback to Legacy path.
-# 3 is AAUDIO_POLICY_ALWAYS means only use MMAP path.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_policy=2
-# 1 is AAUDIO_POLICY_NEVER  means only use SHARED mode
-# 2 is AAUDIO_POLICY_AUTO   means try EXCLUSIVE then fallback to SHARED mode.
-# 3 is AAUDIO_POLICY_ALWAYS means only use EXCLUSIVE mode.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_exclusive_policy=2
-
-# Increase the apparent size of a hardware burst from 1 msec to 2 msec.
-# A "burst" is the number of frames processed at one time.
-# That is an increase from 48 to 96 frames at 48000 Hz.
-# The DSP will still be bursting at 48 frames but AAudio will think the burst is 96 frames.
-# A low number, like 48, might increase power consumption or stress the system.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.hw_burst_min_usec=2000
-
-# A2DP offload enabled for compilation
-AUDIO_FEATURE_ENABLED_A2DP_OFFLOAD := true
-
-# A2DP offload supported
-PRODUCT_PROPERTY_OVERRIDES += \
-ro.bluetooth.a2dp_offload.supported=true
-
-# A2DP offload disabled (UI toggle property)
-PRODUCT_PROPERTY_OVERRIDES += \
-persist.bluetooth.a2dp_offload.disabled=false
-
-# A2DP offload DSP supported encoder list
-PRODUCT_PROPERTY_OVERRIDES += \
-persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac
-
-# Enable AAC frame ctl for A2DP sinks
-PRODUCT_PROPERTY_OVERRIDES += \
-persist.vendor.bt.aac_frm_ctl.enabled=true
-
-# Set lmkd options
-PRODUCT_PRODUCT_PROPERTIES += \
-    ro.config.low_ram = false \
-    ro.lmk.log_stats = true \
-
-# Modem logging file
-PRODUCT_COPY_FILES += \
-    device/google/coral/init.logging.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.$(PRODUCT_PLATFORM).logging.rc
-
-# Pixelstats broken mic detection
-PRODUCT_PROPERTY_OVERRIDES += vendor.audio.mic_break=true
-
-# Enable APK Verity, which depends on fs-verity support in kernel.
-PRODUCT_PROPERTY_OVERRIDES += ro.apk_verity.mode=2
-
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += vendor.display.enable_kernel_idle_timer=true
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.use_color_management=true
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.has_wide_color_display=true
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.has_HDR_display=true
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.set_idle_timer_ms=80
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.set_touch_timer_ms=200
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.set_display_power_timer_ms=1000
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.support_kernel_idle_timer=true
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.use_content_detection_for_refresh_rate=true
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.protected_contents=true
-
-# Must align with HAL types Dataspace
-# The data space of wide color gamut composition preference is Dataspace::DISPLAY_P3
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.wcg_composition_dataspace=143261696
-
-# MIDI feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.software.midi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.midi.xml
-
-# Audio low latency feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.hardware.audio.low_latency.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.low_latency.xml
-
-# Pro audio feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml
-
-# Dmabuf dump tool for bug reports
-PRODUCT_PACKAGES += \
-    dmabuf_dump
-
-# Set thermal warm reset
-PRODUCT_PRODUCT_PROPERTIES += \
-    ro.thermal_warmreset = true \
-
-PRODUCT_ENFORCE_PRODUCT_PARTITION_INTERFACE := true
-
-# Sepolicy for EVS
-include packages/services/Car/evs/sepolicy/evs.mk
diff --git a/flame_car/device-flame-car.mk b/flame_car/device-flame-car.mk
index ffd798c..f73c19c 100644
--- a/flame_car/device-flame-car.mk
+++ b/flame_car/device-flame-car.mk
@@ -14,19 +14,8 @@
 # limitations under the License.
 #
 
-PRODUCT_HARDWARE := flame
+PHONE_CAR_BOARD_CONFIG := device/google_car/flame_car/BoardConfig.mk
 
 $(call inherit-product, packages/services/Car/car_product/build/car.mk)
-include device/google_car/coral_car/device-common.mk
 
-DEVICE_PACKAGE_OVERLAYS += device/google/coral/flame/overlay
-
-PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=250
-
-# Audio XMLs for flame
-PRODUCT_COPY_FILES += \
-    device/google/coral/audio/audio_policy_volumes_flame.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml
-
-# Bluetooth Tx power caps for flame
-PRODUCT_COPY_FILES += \
-    device/google/coral/bluetooth_power_limits_flame.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits.csv
+$(call inherit-product, device/google/coral/device-flame.mk)
diff --git a/flame_car/manifest.xml b/flame_car/manifest.xml
deleted file mode 100644
index 7d3906d..0000000
--- a/flame_car/manifest.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2020 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.
--->
-<manifest version="1.0" type="framework" >
-    <!-- FIXME: Move this to shared manifest.xml -->
-    <hal format="hidl">
-        <name>android.hardware.broadcastradio</name>
-        <transport>hwbinder</transport>
-        <version>2.0</version>
-        <interface>
-            <name>IBroadcastRadio</name>
-            <instance>amfm</instance>
-            <instance>dab</instance>
-        </interface>
-    </hal>
-</manifest>
diff --git a/flame_car/overlay/packages/services/Car/service/res/values/config.xml b/flame_car/overlay/packages/services/Car/service/res/values/config.xml
deleted file mode 100644
index 8116e7b..0000000
--- a/flame_car/overlay/packages/services/Car/service/res/values/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2020, 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 to configure car service based on each OEM's preference. -->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- Disable switching the user while the system is resuming from Suspend to RAM.
-         This default says to prevent changing the user during Resume. -->
-    <bool name="config_disableUserSwitchDuringResume" translatable="false">false</bool>
-</resources>
diff --git a/redfin_car/BoardConfig.mk b/redfin_car/BoardConfig.mk
new file mode 100644
index 0000000..75ed4ae
--- /dev/null
+++ b/redfin_car/BoardConfig.mk
@@ -0,0 +1,32 @@
+#
+# Copyright (C) 2020 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.
+#
+
+# Contents of this file were copied from device/google/redfin/redfin/BoardConfig.mk,
+# except for:
+#
+# * TARGET_SCREEN_DENSITY is scaled down by 1.75x
+
+TARGET_BOOTLOADER_BOARD_NAME := redfin
+TARGET_SCREEN_DENSITY := 250
+TARGET_RECOVERY_UI_MARGIN_HEIGHT := 165
+
+include device/google/redbull/BoardConfig-common.mk
+DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE += device/google/redfin/device_framework_matrix_product.xml
+
+# Testing related defines
+#   #BOARD_PERFSETUP_SCRIPT := platform_testing/scripts/perf-setup/r3-setup.sh
+
+-include vendor/google_devices/$(TARGET_BOOTLOADER_BOARD_NAME)/proprietary/BoardConfigVendor.mk
diff --git a/redfin_car/aosp_redfin_car.mk b/redfin_car/aosp_redfin_car.mk
new file mode 100644
index 0000000..93d3e91
--- /dev/null
+++ b/redfin_car/aosp_redfin_car.mk
@@ -0,0 +1,27 @@
+#
+# Copyright 2020 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.
+#
+
+$(call inherit-product, device/google_car/common/pre_google_car.mk)
+$(call inherit-product, device/google_car/redfin_car/device-redfin-car.mk)
+$(call inherit-product-if-exists, vendor/google_devices/redfin/proprietary/device-vendor.mk)
+$(call inherit-product-if-exists, vendor/google_devices/redfin/prebuilts/device-vendor-redfin.mk)
+$(call inherit-product, device/google_car/common/post_google_car.mk)
+
+PRODUCT_MANUFACTURER := Google
+PRODUCT_BRAND := Android
+PRODUCT_NAME := aosp_redfin_car
+PRODUCT_DEVICE := redfin
+PRODUCT_MODEL := AOSP on redfin
diff --git a/redfin_car/device-redfin-car.mk b/redfin_car/device-redfin-car.mk
new file mode 100644
index 0000000..69afd76
--- /dev/null
+++ b/redfin_car/device-redfin-car.mk
@@ -0,0 +1,25 @@
+#
+# Copyright 2020 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.
+#
+
+PHONE_CAR_BOARD_CONFIG := device/google_car/redfin_car/BoardConfig.mk
+
+$(call inherit-product, packages/services/Car/car_product/build/car.mk)
+
+$(call inherit-product, device/google/redfin/device-redfin.mk)
+
+PRODUCT_PRODUCT_PROPERTIES+= \
+    ro.adb.secure=0
+
diff --git a/sargo_car/BoardConfig.mk b/sargo_car/BoardConfig.mk
new file mode 100644
index 0000000..e37edfd
--- /dev/null
+++ b/sargo_car/BoardConfig.mk
@@ -0,0 +1,27 @@
+#
+# Copyright (C) 2020 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.
+#
+
+# Contents of this file were copied from device/google/bonito/sargo/BoardConfig.mk,
+# except for:
+#
+# * TARGET_SCREEN_DENSITY is scaled down by 1.75x
+
+TARGET_BOOTLOADER_BOARD_NAME := sargo
+TARGET_SCREEN_DENSITY := 250
+TARGET_RECOVERY_UI_MARGIN_HEIGHT := 20
+
+include device/google/bonito/BoardConfig-common.mk
+-include vendor/google_devices/bonito/proprietary/BoardConfigVendor.mk
diff --git a/sargo_car/aosp_sargo_car.mk b/sargo_car/aosp_sargo_car.mk
index d8963de..cb1e905 100644
--- a/sargo_car/aosp_sargo_car.mk
+++ b/sargo_car/aosp_sargo_car.mk
@@ -14,120 +14,10 @@
 # limitations under the License.
 #
 
-DEVICE_FRAMEWORK_MANIFEST_FILE += device/google_car/sargo_car/manifest.xml
-
-#
-# 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)
-
-# mainline_system.mk sets 'PRODUCT_ENFORCE_RRO_TARGETS := *'
-# but this breaks sargo_car. So undo it here.
-PRODUCT_ENFORCE_RRO_TARGETS :=
-
-# Enable mainline checking
-# TODO(b/138706293): Enable mainline checking later
-# PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := relaxed
-
-#
-# All components inherited here go to system_ext image
-#
-$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_system_ext.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_system_ext.mk)
-
-#
-# All components inherited here go to product image
-#
-$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
-
-# Auto modules
-PRODUCT_PACKAGES += \
-            android.hardware.broadcastradio@2.0-service \
-            android.hardware.automotive.vehicle@2.0-service
-
-# Additional selinux policy
-BOARD_SEPOLICY_DIRS += device/google_car/common/sepolicy
-
-PRODUCT_PACKAGES += \
-            android.hardware.automotive.audiocontrol@1.0-service
-
-# Car init.rc
-PRODUCT_COPY_FILES += \
-            packages/services/Car/car_product/init/init.bootstat.rc:root/init.bootstat.rc \
-            packages/services/Car/car_product/init/init.car.rc:root/init.car.rc
-
-# Override heap growth limit due to high display density on device
-PRODUCT_PROPERTY_OVERRIDES += \
-            dalvik.vm.heapgrowthlimit=256m
-
-PRODUCT_PACKAGE_OVERLAYS += device/google_car/sargo_car/overlay
-
-# Pre-create users
-PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
-    android.car.number_pre_created_users=1 \
-    android.car.number_pre_created_guests=1 \
-    android.car.user_hal_enabled=true
-
-# Enable landscape
-PRODUCT_COPY_FILES += \
-            frameworks/native/data/etc/android.hardware.screen.landscape.xml:system/etc/permissions/android.hardware.screen.landscape.xml
-
-# Vendor Interface Manifest
-PRODUCT_COPY_FILES += \
-            frameworks/native/data/etc/android.hardware.broadcastradio.xml:system/etc/permissions/android.hardware.broadcastradio.xml
-
-TARGET_USES_CAR_FUTURE_FEATURES := true
-
-PRODUCT_COPY_FILES += \
-        frameworks/native/data/etc/car_core_hardware.xml:system/etc/permissions/car_core_hardware.xml \
-        frameworks/native/data/etc/android.hardware.type.automotive.xml:system/etc/permissions/android.hardware.type.automotive.xml \
-        frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \
-        frameworks/native/data/etc/android.hardware.telephony.cdma.xml:system/etc/permissions/android.hardware.telephony.cdma.xml \
-        frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \
-        frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \
-        frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \
-        frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \
-        frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \
-        frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \
-        frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:system/etc/permissions/android.hardware.sensor.gyroscope.xml \
-        frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \
-        frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml \
-        frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \
-        frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml
-
-# broadcast radio feature
- PRODUCT_COPY_FILES += \
-        frameworks/native/data/etc/android.hardware.broadcastradio.xml:system/etc/permissions/android.hardware.broadcastradio.xml
-
-# EVS v1.1
-PRODUCT_PACKAGES += android.automotive.evs.manager@1.1 \
-                    android.hardware.automotive.evs@1.1-sample \
-                    evs_app
-PRODUCT_PRODUCT_PROPERTIES += persist.automotive.evs.mode=0
-
-# Automotive display service
-PRODUCT_PACKAGES += android.frameworks.automotive.display@1.0-service
-
-#
-# All components inherited here go to vendor image
-#
-# TODO(b/136525499): move *_vendor.mk into the vendor makefile later
-$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_vendor.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_vendor.mk)
-
+$(call inherit-product, device/google_car/common/pre_google_car.mk)
 $(call inherit-product, device/google_car/sargo_car/device-sargo-car.mk)
 $(call inherit-product-if-exists, vendor/google_devices/bonito/proprietary/device-vendor.mk)
-
-
-PRODUCT_COPY_FILES += $(LOCAL_PATH)/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml
-
-# STOPSHIP deal with Qualcomm stuff later
-# PRODUCT_RESTRICT_VENDOR_FILES := all
-
-# TODO: line below was set on aosp_sargo.mk, but it's not included on other _car
-# projects
-# PRODUCT_PACKAGES += com.android.vndk.current.on_vendor
+$(call inherit-product, device/google_car/common/post_google_car.mk)
 
 PRODUCT_MANUFACTURER := Google
 PRODUCT_BRAND := Android
diff --git a/sargo_car/audio_effects.xml b/sargo_car/audio_effects.xml
deleted file mode 100644
index 5bb453c..0000000
--- a/sargo_car/audio_effects.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2020 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.
--->
-<audio_effects_conf version="2.0" xmlns="http://schemas.android.com/audio/audio_effects_conf/v2_0">
-    <libraries>
-        <library name="bundle" path="libbundlewrapper.so"/>
-        <library name="reverb" path="libreverbwrapper.so"/>
-        <library name="visualizer_sw" path="libvisualizer.so"/>
-        <library name="visualizer_hw" path="libqcomvisualizer.so"/>
-        <library name="downmix" path="libdownmix.so"/>
-        <library name="dynamics_processing" path="libdynproc.so"/>
-        <library name="loudness_enhancer" path="libldnhncr.so"/>
-        <library name="proxy" path="libeffectproxy.so"/>
-        <library name="offload_bundle" path="libqcompostprocbundle.so"/>
-        <library name="audio_pre_processing" path="libqcomvoiceprocessing.so"/>
-        <library name="volume_listener" path="libvolumelistener.so"/>
-    </libraries>
-    <effects>
-        <effectProxy name="bassboost" library="proxy" uuid="14804144-a5ee-4d24-aa88-0002a5d5c51b">
-            <libsw library="bundle" uuid="8631f300-72e2-11df-b57e-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="2c4a8c24-1581-487f-94f6-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="virtualizer" library="proxy" uuid="d3467faa-acc7-4d34-acaf-0002a5d5c51b">
-            <libsw library="bundle" uuid="1d4033c0-8557-11df-9f2d-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="509a4498-561a-4bea-b3b1-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="equalizer" library="proxy" uuid="c8e70ecd-48ca-456e-8a4f-0002a5d5c51b">
-            <libsw library="bundle" uuid="ce772f20-847d-11df-bb17-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="a0dac280-401c-11e3-9379-0002a5d5c51b"/>
-        </effectProxy>
-        <effect name="volume" library="bundle" uuid="119341a0-8469-11df-81f9-0002a5d5c51b"/>
-        <effectProxy name="reverb_env_aux" library="proxy" uuid="48404ac9-d202-4ccc-bf84-0002a5d5c51b">
-            <libsw library="reverb" uuid="4a387fc0-8ab3-11df-8bad-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="79a18026-18fd-4185-8233-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="reverb_env_ins" library="proxy" uuid="b707403a-a1c1-4291-9573-0002a5d5c51b">
-            <libsw library="reverb" uuid="c7a511a0-a3bb-11df-860e-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="eb64ea04-973b-43d2-8f5e-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="reverb_pre_aux" library="proxy" uuid="1b78f587-6d1c-422e-8b84-0002a5d5c51b">
-            <libsw library="reverb" uuid="f29a1400-a3bb-11df-8ddc-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="6987be09-b142-4b41-9056-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="reverb_pre_ins" library="proxy" uuid="f3e178d2-ebcb-408e-8357-0002a5d5c51b">
-            <libsw library="reverb" uuid="172cdf00-a3bc-11df-a72f-0002a5d5c51b"/>
-            <libhw library="offload_bundle" uuid="aa2bebf6-47cf-4613-9bca-0002a5d5c51b"/>
-        </effectProxy>
-        <effectProxy name="visualizer" library="proxy" uuid="1d0a1a53-7d5d-48f2-8e71-27fbd10d842c">
-            <libsw library="visualizer_sw" uuid="d069d9e0-8329-11df-9168-0002a5d5c51b"/>
-            <libhw library="visualizer_hw" uuid="7a8044a0-1a71-11e3-a184-0002a5d5c51b"/>
-        </effectProxy>
-        <effect name="downmix" library="downmix" uuid="93f04452-e4fe-41cc-91f9-e475b6d1d69f"/>
-        <effect name="loudness_enhancer" library="loudness_enhancer" uuid="fa415329-2034-4bea-b5dc-5b381c8d1e2c"/>
-        <effect name="aec" library="audio_pre_processing" uuid="27dab416-23f8-11e8-b467-0ed5f89f718b"/>
-        <effect name="ns" library="audio_pre_processing" uuid="27dab6d2-23f8-11e8-b467-0ed5f89f718b"/>
-        <effect name="music_helper" library="volume_listener" uuid="08b8b058-0590-11e5-ac71-0025b32654a0"/>
-        <effect name="ring_helper" library="volume_listener" uuid="0956df94-0590-11e5-bdbe-0025b32654a0"/>
-        <effect name="alarm_helper" library="volume_listener" uuid="09f303e2-0590-11e5-8fdb-0025b32654a0"/>
-        <effect name="voice_helper" library="volume_listener" uuid="0ace5c08-0590-11e5-ae9e-0025b32654a0"/>
-        <effect name="notification_helper" library="volume_listener" uuid="0b776dde-0590-11e5-81ba-0025b32654a0"/>
-        <effect name="dynamics_processing" library="dynamics_processing" uuid="e0e6539b-1781-7261-676f-6d7573696340"/>
-    </effects>
-    <postprocess>
-        <stream type="music">
-            <apply effect="music_helper"/>
-        </stream>
-        <stream type="ring">
-            <apply effect="ring_helper"/>
-        </stream>
-        <stream type="alarm">
-            <apply effect="alarm_helper"/>
-        </stream>
-        <stream type="voice_call">
-            <apply effect="voice_helper"/>
-        </stream>
-        <stream type="notification">
-            <apply effect="notification_helper"/>
-        </stream>
-    </postprocess>
-    <preprocess>
-        <stream type="voice_communication">
-            <apply effect="aec"/>
-            <apply effect="ns"/>
-        </stream>
-    </preprocess>
-</audio_effects_conf>
diff --git a/sargo_car/device-common.mk b/sargo_car/device-common.mk
deleted file mode 100644
index 3a2978d..0000000
--- a/sargo_car/device-common.mk
+++ /dev/null
@@ -1,134 +0,0 @@
-#
-# Copyright (C) 2020 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.
-#
-
-# NOTE: this file was copied from google/device/bonito/device-common.mk, with the
-# following changes
-# - removed LOCAL_PATH
-# - added auto-specific settings at the end
-
-TARGET_USERIMAGES_USE_F2FS := true
-
-# define hardware platform
-PRODUCT_PLATFORM := sdm670
-
-# Enable updating of APEXes
-$(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk)
-
-include device/google/bonito/device-audio-mfg.mk
-include device/google/bonito/device.mk
-
-# Bug 77867216
-PRODUCT_PROPERTY_OVERRIDES += audio.adm.buffering.ms=3
-PRODUCT_PROPERTY_OVERRIDES += vendor.audio.adm.buffering.ms=3
-PRODUCT_PROPERTY_OVERRIDES += audio_hal.period_multiplier=2
-PRODUCT_PROPERTY_OVERRIDES += af.fast_track_multiplier=1
-
-# Set c2 codec in default
-PRODUCT_PROPERTY_OVERRIDES += debug.stagefright.ccodec=4
-PRODUCT_PROPERTY_OVERRIDES += debug.stagefright.omx_default_rank=512
-
-# Setting vendor SPL
-VENDOR_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH)
-
-# Set boot SPL
-BOOT_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH)
-
-# MIDI feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.software.midi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.midi.xml
-
-# Audio low latency feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.hardware.audio.low_latency.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.low_latency.xml
-
-# Pro audio feature
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml
-
-# Enable AAudio MMAP/NOIRQ data path.
-# 1 is AAUDIO_POLICY_NEVER  means only use Legacy path.
-# 2 is AAUDIO_POLICY_AUTO   means try MMAP then fallback to Legacy path.
-# 3 is AAUDIO_POLICY_ALWAYS means only use MMAP path.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_policy=2
-# 1 is AAUDIO_POLICY_NEVER  means only use SHARED mode
-# 2 is AAUDIO_POLICY_AUTO   means try EXCLUSIVE then fallback to SHARED mode.
-# 3 is AAUDIO_POLICY_ALWAYS means only use EXCLUSIVE mode.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_exclusive_policy=2
-
-# Increase the apparent size of a hardware burst from 1 msec to 2 msec.
-# A "burst" is the number of frames processed at one time.
-# That is an increase from 48 to 96 frames at 48000 Hz.
-# The DSP will still be bursting at 48 frames but AAudio will think the burst is 96 frames.
-# A low number, like 48, might increase power consumption or stress the system.
-PRODUCT_PROPERTY_OVERRIDES += aaudio.hw_burst_min_usec=2000
-
-# Set lmkd options
-PRODUCT_PRODUCT_PROPERTIES += \
-    ro.config.low_ram = false \
-    ro.lmk.log_stats = true \
-
-# A2DP offload enabled for compilation
-AUDIO_FEATURE_ENABLED_A2DP_OFFLOAD := true
-
-# A2DP offload supported
-PRODUCT_PROPERTY_OVERRIDES += \
-ro.bluetooth.a2dp_offload.supported=true
-
-# A2DP offload disabled (UI toggle property)
-PRODUCT_PROPERTY_OVERRIDES += \
-persist.bluetooth.a2dp_offload.disabled=false
-
-# A2DP offload DSP supported encoder list
-PRODUCT_PROPERTY_OVERRIDES += \
-persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac
-
-# Modem loging file
-PRODUCT_COPY_FILES += \
-    device/google/bonito/init.logging.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.$(PRODUCT_PLATFORM).logging.rc
-
-# Dumpstate HAL
-PRODUCT_PACKAGES += \
-    android.hardware.dumpstate@1.0-service.bonito
-
-# Enable retrofit dynamic partitions for all bonito
-# and sargo targets
-PRODUCT_USE_DYNAMIC_PARTITIONS := true
-PRODUCT_RETROFIT_DYNAMIC_PARTITIONS := true
-PRODUCT_PACKAGES += \
-    android.hardware.boot@1.0-impl.recovery \
-    bootctrl.sdm710 \
-    bootctrl.sdm710.recovery \
-    check_dynamic_partitions \
-
-AB_OTA_POSTINSTALL_CONFIG += \
-    RUN_POSTINSTALL_product=true \
-    POSTINSTALL_PATH_product=bin/check_dynamic_partitions \
-    FILESYSTEM_TYPE_product=ext4 \
-    POSTINSTALL_OPTIONAL_product=false \
-
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.use_color_management=true
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.protected_contents=true
-
-# Set thermal warm reset
-PRODUCT_PRODUCT_PROPERTIES += \
-    ro.thermal_warmreset = true \
-
-##############################
-### Auto-specific settings ###
-##############################
-
-# Sepolicy for EVS
-include packages/services/Car/evs/sepolicy/evs.mk
diff --git a/sargo_car/device-sargo-car.mk b/sargo_car/device-sargo-car.mk
index 54e836d..26a3328 100644
--- a/sargo_car/device-sargo-car.mk
+++ b/sargo_car/device-sargo-car.mk
@@ -14,29 +14,11 @@
 # limitations under the License.
 #
 
-PRODUCT_HARDWARE := sargo
+PHONE_CAR_BOARD_CONFIG := device/google_car/sargo_car/BoardConfig.mk
 
 $(call inherit-product, packages/services/Car/car_product/build/car.mk)
-include device/google_car/sargo_car/device-common.mk
-include packages/services/Car/computepipe/products/computepipe.mk
 
-PRODUCT_COPY_FILES += \
-    device/google/bonito/init.insmod.sargo.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/init.insmod.cfg
+$(call inherit-product, device/google/bonito/device-sargo.mk)
 
-DEVICE_PACKAGE_OVERLAYS += device/google/bonito/sargo/overlay
-
-# Audio XMLs
-PRODUCT_COPY_FILES += \
-    device/google/bonito/mixer_paths_intcodec_s4.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_intcodec_s4.xml \
-    device/google/bonito/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
-    device/google/bonito/audio_platform_info_intcodec_s4.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info_intcodec_s4.xml
-
-PRODUCT_COPY_FILES += \
-    device/google/bonito/nfc/libnfc-nxp.sargo.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-nxp.conf
-
-PRODUCT_PACKAGES += \
-    NoCutoutOverlay
-
-# TODO: property below is set on other _car projects, but it doesn't seem to be
-# needed - looks like 250 is already the default value
-# PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=250
+PRODUCT_PRODUCT_PROPERTIES+= \
+    ro.adb.secure=0
\ No newline at end of file
diff --git a/sargo_car/manifest.xml b/sargo_car/manifest.xml
deleted file mode 100644
index 3f622ec..0000000
--- a/sargo_car/manifest.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2020 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.
--->
-<manifest version="1.0" type="framework" >
-    <hal format="hidl">
-        <name>android.hardware.automotive.audiocontrol</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IAudioControl</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <!-- FIXME: Move this to shared manifest.xml -->
-    <hal format="hidl">
-        <name>android.hardware.broadcastradio</name>
-        <transport>hwbinder</transport>
-        <version>2.0</version>
-        <interface>
-            <name>IBroadcastRadio</name>
-            <instance>amfm</instance>
-            <instance>dab</instance>
-        </interface>
-    </hal>
-   <hal format="aidl" optional="true">
-       <name>android.automotive.computepipe.registry</name>
-       <interface>
-           <name>IPipeQuery</name>
-           <instance>router</instance>
-       </interface>
-       <interface>
-           <name>IPipeRegistration</name>
-           <instance>router</instance>
-       </interface>
-   </hal>
-</manifest>
diff --git a/sargo_car/overlay/packages/services/Car/service/res/values/config.xml b/sargo_car/overlay/packages/services/Car/service/res/values/config.xml
deleted file mode 100644
index 8116e7b..0000000
--- a/sargo_car/overlay/packages/services/Car/service/res/values/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2020, 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 to configure car service based on each OEM's preference. -->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- Disable switching the user while the system is resuming from Suspend to RAM.
-         This default says to prevent changing the user during Resume. -->
-    <bool name="config_disableUserSwitchDuringResume" translatable="false">false</bool>
-</resources>
diff --git a/sunfish_car/BoardConfig.mk b/sunfish_car/BoardConfig.mk
new file mode 100644
index 0000000..38c23ee
--- /dev/null
+++ b/sunfish_car/BoardConfig.mk
@@ -0,0 +1,26 @@
+#
+# Copyright (C) 2020 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.
+#
+
+# Contents of this file were copied from device/google/sunfish/sunfish/BoardConfig.mk,
+# except for:
+#
+# * TARGET_SCREEN_DENSITY is scaled down by 1.75x
+
+TARGET_BOOTLOADER_BOARD_NAME := sunfish
+TARGET_SCREEN_DENSITY := 250
+TARGET_RECOVERY_UI_MARGIN_HEIGHT := 165
+
+include device/google/sunfish/BoardConfig-common.mk
diff --git a/sunfish_car/aosp_sunfish_car.mk b/sunfish_car/aosp_sunfish_car.mk
new file mode 100644
index 0000000..19fef2c
--- /dev/null
+++ b/sunfish_car/aosp_sunfish_car.mk
@@ -0,0 +1,27 @@
+#
+# Copyright 2020 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.
+#
+
+$(call inherit-product, device/google_car/common/pre_google_car.mk)
+$(call inherit-product, device/google_car/sunfish_car/device-sunfish-car.mk)
+$(call inherit-product-if-exists, vendor/google_devices/sunfish/proprietary/device-vendor.mk)
+$(call inherit-product-if-exists, vendor/google_devices/sunfish/prebuilts/device-vendor-sunfish.mk)
+$(call inherit-product, device/google_car/common/post_google_car.mk)
+
+PRODUCT_MANUFACTURER := Google
+PRODUCT_BRAND := Android
+PRODUCT_NAME := aosp_sunfish_car
+PRODUCT_DEVICE := sunfish
+PRODUCT_MODEL := AOSP on sunfish
diff --git a/sunfish_car/device-sunfish-car.mk b/sunfish_car/device-sunfish-car.mk
new file mode 100644
index 0000000..bc13a94
--- /dev/null
+++ b/sunfish_car/device-sunfish-car.mk
@@ -0,0 +1,24 @@
+#
+# Copyright 2020 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.
+#
+
+PHONE_CAR_BOARD_CONFIG := device/google_car/sunfish_car/BoardConfig.mk
+
+$(call inherit-product, packages/services/Car/car_product/build/car.mk)
+
+$(call inherit-product, device/google/sunfish/device-sunfish.mk)
+
+PRODUCT_PRODUCT_PROPERTIES+= \
+    ro.adb.secure=0
\ No newline at end of file