summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-05-10 15:33:58 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-05-10 15:33:58 +0000
commit5bced264452e90fb7a3e56a7ad606f1ed0dce27d (patch)
tree28efd79e5acb3ceb59200ebae95d03002ce1f363
parente86f14ecd2311213a4181ac1dda12559b1fe35f2 (diff)
parent693173ec02fc116cafa699c9165eea8bb593a776 (diff)
downloaddragonboard-busytown-mac-infra-release.tar.gz
Snap for 11819167 from 693173ec02fc116cafa699c9165eea8bb593a776 to busytown-mac-infra-releasebusytown-mac-infra-release
Change-Id: I935c06000657f2239e0bf7dad0021f53077e6100
-rw-r--r--Android.bp9
-rw-r--r--Android.mk3
-rw-r--r--AndroidProducts.mk8
-rw-r--r--BoardConfigCommon.mk22
-rw-r--r--build/tasks/kernel.mk25
-rw-r--r--db845c.mk22
-rw-r--r--db845c/BoardConfig.mk64
-rw-r--r--db845c/device.mk26
-rw-r--r--db845c/eth_mac_addr.rc9
-rw-r--r--db845c/eth_mac_addr.sh15
-rw-r--r--device-common.mk53
-rw-r--r--fstab.common14
-rw-r--r--full.mk82
-rw-r--r--init.common.rc12
-rw-r--r--installer/rb5/README2
-rwxr-xr-xinstaller/rb5/flash-all-aosp.sh4
-rwxr-xr-xinstaller/rb5/recovery.sh2
-rw-r--r--linaro_swr.mk16
-rw-r--r--linaro_swr/Android.mk6
-rw-r--r--linaro_swr/BoardConfig.mk50
-rw-r--r--linaro_swr/device.mk69
-rw-r--r--manifest.xml24
-rw-r--r--mini.mk2
-rw-r--r--product.prop16
-rw-r--r--qcom/set_hw.sh12
-rw-r--r--rb5.mk7
-rw-r--r--rb5/BoardConfig.mk47
-rw-r--r--rb5/device.mk54
-rw-r--r--rb5/mixer_paths.xml5
-rw-r--r--rb5_mini.mk7
-rw-r--r--sepolicy/eth_mac_addr.te12
-rw-r--r--sepolicy/file_contexts10
-rw-r--r--sepolicy/genfs_contexts1
-rw-r--r--sepolicy/rmtfs.te1
-rw-r--r--sepolicy/set_bdaddr.te12
-rw-r--r--sepolicy/set_ethaddr.te13
-rw-r--r--sepolicy/tqftpserv.te2
-rw-r--r--shared/graphics/drm_hwcomposer/BoardConfig.mk19
-rw-r--r--shared/graphics/drm_hwcomposer/device.mk24
-rw-r--r--shared/graphics/mesa/BoardConfig.mk24
-rw-r--r--shared/graphics/mesa/device.mk56
-rw-r--r--shared/graphics/minigbm_msm/device.mk28
-rw-r--r--shared/graphics/minigbm_msm/sepolicy/file_contexts11
-rw-r--r--shared/graphics/minigbm_msm/sepolicy/minigbm_debug.te33
-rw-r--r--shared/graphics/minigbm_msm/sepolicy/property_contexts1
-rw-r--r--shared/graphics/swangle/device.mk52
-rw-r--r--shared/graphics/swangle/sepolicy/file_contexts5
-rw-r--r--shared/graphics/swangle/sepolicy/sw_execmem.te5
-rw-r--r--shared/utils/bdaddr/Android.bp28
-rw-r--r--shared/utils/bdaddr/bdaddr.c215
-rw-r--r--shared/utils/bdaddr/bdaddr.rc22
-rw-r--r--shared/utils/bdaddr/set_bdaddr.sh40
-rw-r--r--shared/utils/dlkm_loader/BoardConfig.mk7
-rw-r--r--shared/utils/dlkm_loader/device.mk11
-rw-r--r--shared/utils/dlkm_loader/dlkm_loader.rc17
-rw-r--r--shared/utils/dlkm_loader/sepolicy/dlkm_loader.te36
-rw-r--r--shared/utils/dlkm_loader/sepolicy/file_contexts1
-rw-r--r--shared/utils/dlkm_loader/sepolicy/property.te1
-rw-r--r--shared/utils/dlkm_loader/sepolicy/property_contexts1
-rw-r--r--shared/utils/dlkm_loader/vendor.modules.list.mk231
-rw-r--r--shared/utils/dlkm_loader/vendor_ramdisk.modules.blocklist4
-rw-r--r--shared/utils/ethaddr/ethaddr.rc9
-rw-r--r--shared/utils/ethaddr/set_ethaddr.sh25
-rw-r--r--shared/utils/init.utils.rc (renamed from qcom/init.qcom.rc)2
-rw-r--r--shared/utils/pd-mapper/Android.bp (renamed from qcom/pd-mapper/Android.bp)0
-rw-r--r--shared/utils/pd-mapper/LICENSE (renamed from qcom/pd-mapper/LICENSE)0
-rw-r--r--shared/utils/pd-mapper/Makefile (renamed from qcom/pd-mapper/Makefile)0
-rw-r--r--shared/utils/pd-mapper/assoc.c (renamed from qcom/pd-mapper/assoc.c)0
-rw-r--r--shared/utils/pd-mapper/assoc.h (renamed from qcom/pd-mapper/assoc.h)0
-rw-r--r--shared/utils/pd-mapper/json.c (renamed from qcom/pd-mapper/json.c)0
-rw-r--r--shared/utils/pd-mapper/json.h (renamed from qcom/pd-mapper/json.h)0
-rw-r--r--shared/utils/pd-mapper/pd-mapper.c (renamed from qcom/pd-mapper/pd-mapper.c)0
-rw-r--r--shared/utils/pd-mapper/pd-mapper.service.in (renamed from qcom/pd-mapper/pd-mapper.service.in)0
-rw-r--r--shared/utils/pd-mapper/servreg_loc.c (renamed from qcom/pd-mapper/servreg_loc.c)0
-rw-r--r--shared/utils/pd-mapper/servreg_loc.h (renamed from qcom/pd-mapper/servreg_loc.h)0
-rw-r--r--shared/utils/pd-mapper/servreg_loc.qmi (renamed from qcom/pd-mapper/servreg_loc.qmi)0
-rw-r--r--shared/utils/qrtr/Android.bp (renamed from qcom/qrtr/Android.bp)0
-rw-r--r--shared/utils/qrtr/LICENSE (renamed from qcom/qrtr/LICENSE)0
-rw-r--r--shared/utils/qrtr/Makefile (renamed from qcom/qrtr/Makefile)0
-rw-r--r--shared/utils/qrtr/lib/libqrtr.h (renamed from qcom/qrtr/lib/libqrtr.h)0
-rw-r--r--shared/utils/qrtr/lib/logging.c (renamed from qcom/qrtr/lib/logging.c)0
-rw-r--r--shared/utils/qrtr/lib/logging.h (renamed from qcom/qrtr/lib/logging.h)0
-rw-r--r--shared/utils/qrtr/lib/qmi.c (renamed from qcom/qrtr/lib/qmi.c)0
-rw-r--r--shared/utils/qrtr/lib/qrtr.c (renamed from qcom/qrtr/lib/qrtr.c)0
-rw-r--r--shared/utils/qrtr/qrtr-ns.service.in (renamed from qcom/qrtr/qrtr-ns.service.in)0
-rwxr-xr-xshared/utils/qrtr/qrtr.py (renamed from qcom/qrtr/qrtr.py)0
-rw-r--r--shared/utils/qrtr/src/addr.c (renamed from qcom/qrtr/src/addr.c)0
-rw-r--r--shared/utils/qrtr/src/addr.h (renamed from qcom/qrtr/src/addr.h)0
-rw-r--r--shared/utils/qrtr/src/cfg.c (renamed from qcom/qrtr/src/cfg.c)0
-rw-r--r--shared/utils/qrtr/src/hash.c (renamed from qcom/qrtr/src/hash.c)0
-rw-r--r--shared/utils/qrtr/src/hash.h (renamed from qcom/qrtr/src/hash.h)0
-rw-r--r--shared/utils/qrtr/src/list.h (renamed from qcom/qrtr/src/list.h)0
-rw-r--r--shared/utils/qrtr/src/lookup.c (renamed from qcom/qrtr/src/lookup.c)0
-rw-r--r--shared/utils/qrtr/src/map.c (renamed from qcom/qrtr/src/map.c)0
-rw-r--r--shared/utils/qrtr/src/map.h (renamed from qcom/qrtr/src/map.h)0
-rw-r--r--shared/utils/qrtr/src/ns.c (renamed from qcom/qrtr/src/ns.c)0
-rw-r--r--shared/utils/qrtr/src/ns.h (renamed from qcom/qrtr/src/ns.h)0
-rw-r--r--shared/utils/qrtr/src/util.c (renamed from qcom/qrtr/src/util.c)0
-rw-r--r--shared/utils/qrtr/src/util.h (renamed from qcom/qrtr/src/util.h)0
-rw-r--r--shared/utils/qrtr/src/waiter.c (renamed from qcom/qrtr/src/waiter.c)0
-rw-r--r--shared/utils/qrtr/src/waiter.h (renamed from qcom/qrtr/src/waiter.h)0
-rw-r--r--shared/utils/rmtfs/Android.bp (renamed from qcom/rmtfs/Android.bp)0
-rw-r--r--shared/utils/rmtfs/LICENSE (renamed from qcom/rmtfs/LICENSE)0
-rw-r--r--shared/utils/rmtfs/Makefile (renamed from qcom/rmtfs/Makefile)0
-rw-r--r--shared/utils/rmtfs/qmi_rmtfs.c (renamed from qcom/rmtfs/qmi_rmtfs.c)0
-rw-r--r--shared/utils/rmtfs/qmi_rmtfs.h (renamed from qcom/rmtfs/qmi_rmtfs.h)0
-rw-r--r--shared/utils/rmtfs/qmi_rmtfs.qmi (renamed from qcom/rmtfs/qmi_rmtfs.qmi)0
-rw-r--r--shared/utils/rmtfs/qmi_tlv.c (renamed from qcom/rmtfs/qmi_tlv.c)0
-rw-r--r--shared/utils/rmtfs/rmtfs.c (renamed from qcom/rmtfs/rmtfs.c)0
-rw-r--r--shared/utils/rmtfs/rmtfs.h (renamed from qcom/rmtfs/rmtfs.h)0
-rw-r--r--shared/utils/rmtfs/rmtfs.service.in (renamed from qcom/rmtfs/rmtfs.service.in)0
-rw-r--r--shared/utils/rmtfs/rproc.c (renamed from qcom/rmtfs/rproc.c)0
-rw-r--r--shared/utils/rmtfs/sharedmem.c (renamed from qcom/rmtfs/sharedmem.c)0
-rw-r--r--shared/utils/rmtfs/storage.c (renamed from qcom/rmtfs/storage.c)0
-rw-r--r--shared/utils/rmtfs/util.c (renamed from qcom/rmtfs/util.c)0
-rw-r--r--shared/utils/rmtfs/util.h (renamed from qcom/rmtfs/util.h)0
-rw-r--r--shared/utils/sdcard-boot/fstab.mmc11
-rw-r--r--shared/utils/sdcard-boot/fstab.sdhci11
-rw-r--r--shared/utils/sdcard-boot/sepolicy/file_contexts15
-rw-r--r--shared/utils/set_hw.sh34
-rwxr-xr-xshared/utils/set_udc.sh (renamed from qcom/set_udc.sh)0
-rw-r--r--shared/utils/tqftpserv/Android.bp (renamed from qcom/tqftpserv/Android.bp)0
-rw-r--r--shared/utils/tqftpserv/LICENSE (renamed from qcom/tqftpserv/LICENSE)0
-rw-r--r--shared/utils/tqftpserv/Makefile (renamed from qcom/tqftpserv/Makefile)0
-rw-r--r--shared/utils/tqftpserv/list.h (renamed from qcom/tqftpserv/list.h)0
-rw-r--r--shared/utils/tqftpserv/tqftpserv.c (renamed from qcom/tqftpserv/tqftpserv.c)0
-rw-r--r--shared/utils/tqftpserv/tqftpserv.service.in (renamed from qcom/tqftpserv/tqftpserv.service.in)0
-rw-r--r--shared/utils/tqftpserv/translate.c (renamed from qcom/tqftpserv/translate.c)0
-rw-r--r--shared/utils/tqftpserv/translate.h (renamed from qcom/tqftpserv/translate.h)0
-rw-r--r--sm8x50/BoardConfig.mk56
-rw-r--r--sm8x50/device.mk75
-rw-r--r--sm8x50/dtb-overlays/sm8550-hdk.dts7
-rw-r--r--sm8x50/dtb-overlays/sm8550-qrd.dts7
-rw-r--r--sm8x50/dtb-overlays/sm8650-qrd.dts7
-rw-r--r--sm8x50/fstab11
-rw-r--r--sm8x50/init.environ.rc3
-rw-r--r--sm8x50/sepolicy/file_contexts17
-rw-r--r--sm8x50/sepolicy/genfs_contexts9
-rw-r--r--sm8x50/sm8x50.mk23
-rwxr-xr-xvendor-package-ver.sh6
140 files changed, 1590 insertions, 348 deletions
diff --git a/Android.bp b/Android.bp
index c9f7e86..4572d82 100644
--- a/Android.bp
+++ b/Android.bp
@@ -49,8 +49,9 @@ license {
}
subdirs = [
- "qcom/pd-mapper",
- "qcom/qrtr",
- "qcom/rmtfs",
- "qcom/tqftpserv",
+ "shared/utils/bdaddr",
+ "shared/utils/pd-mapper",
+ "shared/utils/qrtr",
+ "shared/utils/rmtfs",
+ "shared/utils/tqftpserv",
]
diff --git a/Android.mk b/Android.mk
index d1957d6..602e63e 100644
--- a/Android.mk
+++ b/Android.mk
@@ -20,7 +20,7 @@
# to only building on ARM if they include assembly. Individual makefiles
# are responsible for having their own logic, for fine-grained control.
-ifneq ($(filter db845c rb5, $(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter db845c linaro_swr sm8x50, $(TARGET_BOARD_PLATFORM)),)
LOCAL_PATH := $(call my-dir)
@@ -31,7 +31,6 @@ $(eval $(call declare-1p-copy-files,device/linaro/dragonboard,.rc))
$(eval $(call declare-1p-copy-files,device/linaro/dragonboard,.sh))
$(eval $(call declare-1p-copy-files,device/linaro/dragonboard,.xml))
$(eval $(call declare-1p-copy-files,device/linaro/dragonboard,fstab.db845c))
-$(eval $(call declare-1p-copy-files,device/linaro/dragonboard,fstab.rb5))
# If some modules are built directly from this directory (not subdirectories),
# their rules should be written here.
diff --git a/AndroidProducts.mk b/AndroidProducts.mk
index 3492246..f121e04 100644
--- a/AndroidProducts.mk
+++ b/AndroidProducts.mk
@@ -12,11 +12,9 @@
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/db845c.mk \
$(LOCAL_DIR)/db845c_mini.mk \
- $(LOCAL_DIR)/rb5.mk \
- $(LOCAL_DIR)/rb5_mini.mk \
$(LOCAL_DIR)/sm8450_mini.mk \
+ $(LOCAL_DIR)/linaro_swr.mk \
+ $(LOCAL_DIR)/sm8x50/sm8x50.mk
COMMON_LUNCH_CHOICES := \
- db845c-userdebug \
- rb5-userdebug \
-
+ db845c-trunk_staging-userdebug
diff --git a/BoardConfigCommon.mk b/BoardConfigCommon.mk
index 87cde99..08c5c57 100644
--- a/BoardConfigCommon.mk
+++ b/BoardConfigCommon.mk
@@ -13,20 +13,19 @@
# limitations under the License.
#
-TARGET_USES_64_BIT_BINDER := true
TARGET_NO_BOOTLOADER := true
TARGET_NO_KERNEL := true
TARGET_NO_RECOVERY := true
-BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE := ext4
+BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE := erofs
TARGET_USERIMAGES_USE_EXT4 := true
TARGET_COPY_OUT_VENDOR := vendor
-BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
+BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := erofs
TARGET_COPY_OUT_SYSTEM_EXT := system_ext
-BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := ext4
+BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := erofs
TARGET_COPY_OUT_PRODUCT := product
-BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := ext4
+BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := erofs
BOARD_USES_METADATA_PARTITION := true
# Super partition
TARGET_USE_DYNAMIC_PARTITIONS := true
@@ -38,19 +37,6 @@ BOARD_DB_DYNAMIC_PARTITIONS_PARTITION_LIST := system vendor system_ext product
PRODUCT_FULL_TREBLE := true
BOARD_VNDK_VERSION := current
-# Mesa DRM hwcomposer
-BOARD_USES_DRM_HWCOMPOSER := true
-BOARD_GPU_DRIVERS := freedreno
-TARGET_USES_HWC2 := true
-
-ifeq ($(TARGET_BUILD_MESA),true)
-BOARD_MESA3D_USES_MESON_BUILD := true
-BOARD_MESA3D_GALLIUM_DRIVERS := freedreno
-BOARD_MESA3D_VULKAN_DRIVERS := freedreno
-else
-BOARD_USE_CUSTOMIZED_MESA := true
-endif
-
# WiFi
WPA_SUPPLICANT_VERSION := VER_0_8_X
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
diff --git a/build/tasks/kernel.mk b/build/tasks/kernel.mk
index 7723dc3..1478753 100644
--- a/build/tasks/kernel.mk
+++ b/build/tasks/kernel.mk
@@ -1,7 +1,26 @@
-ifneq ($(filter db845c db845c_mini, $(TARGET_DEVICE)),)
+ifneq ($(filter db845c db845c_mini linaro_swr sm8x50, $(TARGET_DEVICE)),)
-$(PRODUCT_OUT)/dtb.img: $(TARGET_KERNEL_DIR)/sdm845-db845c.dtb $(wildcard $(TARGET_KERNEL_DIR)/qrb5165-rb5.dtb)
- cat $^ > $@
+DTC := $(HOST_OUT)/bin/dtc
+FDTOVERLAY := $(HOST_OUT)/bin/fdtoverlay
+SM8550HDK_DTS_OVERLAY := device/linaro/dragonboard/sm8x50/dtb-overlays/sm8550-hdk.dts
+SM8550QRD_DTS_OVERLAY := device/linaro/dragonboard/sm8x50/dtb-overlays/sm8550-qrd.dts
+SM8650QRD_DTS_OVERLAY := device/linaro/dragonboard/sm8x50/dtb-overlays/sm8650-qrd.dts
+
+DB845C_DTB := $(TARGET_KERNEL_DIR)/sdm845-db845c.dtb
+RB5_DTB := $(wildcard $(TARGET_KERNEL_DIR)/qrb5165-rb5.dtb)
+SM8550HDK_DTB := $(wildcard $(TARGET_KERNEL_DIR)/sm8550-hdk.dtb)
+SM8550QRD_DTB := $(wildcard $(TARGET_KERNEL_DIR)/sm8550-qrd.dtb)
+SM8650QRD_DTB := $(wildcard $(TARGET_KERNEL_DIR)/sm8650-qrd.dtb)
+
+$(PRODUCT_OUT)/dtb.img: $(DTC) $(FDTOVERLAY)
+ -$(DTC) -@ -I dts -O dtb -o $(PRODUCT_OUT)/sm8550-hdk.dtbo $(SM8550HDK_DTS_OVERLAY)
+ -$(FDTOVERLAY) -i $(SM8550HDK_DTB) -o $(PRODUCT_OUT)/sm8550-hdk.dtb $(PRODUCT_OUT)/sm8550-hdk.dtbo
+ -$(DTC) -@ -I dts -O dtb -o $(PRODUCT_OUT)/sm8550-qrd.dtbo $(SM8550QRD_DTS_OVERLAY)
+ -$(FDTOVERLAY) -i $(SM8550QRD_DTB) -o $(PRODUCT_OUT)/sm8550-qrd.dtb $(PRODUCT_OUT)/sm8550-qrd.dtbo
+ -$(DTC) -@ -I dts -O dtb -o $(PRODUCT_OUT)/sm8650-qrd.dtbo $(SM8650QRD_DTS_OVERLAY)
+ -$(FDTOVERLAY) -i $(SM8650QRD_DTB) -o $(PRODUCT_OUT)/sm8650-qrd.dtb $(PRODUCT_OUT)/sm8650-qrd.dtbo
+ -cat $(DB845C_DTB) $(RB5_DTB) $(PRODUCT_OUT)/sm8550-hdk.dtb $(PRODUCT_OUT)/sm8550-qrd.dtb $(PRODUCT_OUT)/sm8650-qrd.dtbo > $@
+ -rm $(PRODUCT_OUT)/sm8*dtb*
droidcore: $(PRODUCT_OUT)/dtb.img
diff --git a/db845c.mk b/db845c.mk
index e949af1..c83da69 100644
--- a/db845c.mk
+++ b/db845c.mk
@@ -1,7 +1,27 @@
$(call inherit-product, device/linaro/dragonboard/full.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)
+$(call inherit-product, device/linaro/dragonboard/shared/graphics/drm_hwcomposer/device.mk)
+$(call inherit-product, device/linaro/dragonboard/shared/graphics/mesa/device.mk)
+$(call inherit-product, device/linaro/dragonboard/shared/graphics/minigbm_msm/device.mk)
$(call inherit-product, device/linaro/dragonboard/db845c/device.mk)
-TARGET_USES_BOOT_HDR_V3 ?= true
+#Boot with Android boot image header v3
+ifeq ($(TARGET_KERNEL_USE),5.4)
+ TARGET_USES_BOOT_HDR_V3 := true
+else
+ TARGET_USES_BOOT_HDR_V3 ?= false
+endif
+
+#Boot from mmc-sdcard
+TARGET_SDCARD_BOOT ?= false
+
+#Load kernel modules in parallel
+ifneq ($(filter 5.15 6.1 6.6, $(TARGET_KERNEL_USE)),)
+ TARGET_USES_LMP ?= false
+else
+ TARGET_USES_LMP := false
+endif
# Product overrides
PRODUCT_NAME := db845c
diff --git a/db845c/BoardConfig.mk b/db845c/BoardConfig.mk
index 644f9a8..ed9264c 100644
--- a/db845c/BoardConfig.mk
+++ b/db845c/BoardConfig.mk
@@ -19,14 +19,33 @@ TARGET_BOARD_PLATFORM := db845c
TARGET_NO_KERNEL := false
BOARD_INCLUDE_DTB_IN_BOOTIMG := true
-ifeq ($(TARGET_USES_BOOT_HDR_V3), true)
- BOARD_BOOT_HEADER_VERSION := 3
- BOARD_KERNEL_CMDLINE += androidboot.hardware=db845c androidboot.boot_devices=soc@0/1d84000.ufshc
- BOARD_KERNEL_CMDLINE += androidboot.verifiedbootstate=orange
-else
- BOARD_BOOT_HEADER_VERSION := 4
- BOARD_BOOTCONFIG += androidboot.hardware=db845c androidboot.boot_devices=soc@0/1d84000.ufshc
- BOARD_BOOTCONFIG += androidboot.verifiedbootstate=orange
+ifeq ($(TARGET_SDCARD_BOOT), true)
+ BOARD_BOOT_HEADER_VERSION := 2
+ # Older kernel versions define mmc@ nodes as sdhci@ nodes in their device tree
+ ifneq ($(filter 5.4 5.10 5.15, $(TARGET_KERNEL_USE)),)
+ BOARD_KERNEL_CMDLINE += androidboot.boot_devices=soc@0/8804000.sdhci
+ else
+ BOARD_KERNEL_CMDLINE += androidboot.boot_devices=soc@0/8804000.mmc
+ endif
+ BOARD_KERNEL_CMDLINE += androidboot.hardware=db845c
+ BOARD_KERNEL_CMDLINE += androidboot.verifiedbootstate=orange
+ # In case we are booting from U-Boot directly and androidboot.slot_suffix
+ # is not set. Otherwise we run into the following error:
+ # "init: [libfstab] Error updating for slotselect"
+ BOARD_KERNEL_CMDLINE += androidboot.slot_suffix=_a
+else ifeq ($(TARGET_USES_BOOT_HDR_V3), true)
+ BOARD_BOOT_HEADER_VERSION := 3
+ BOARD_KERNEL_CMDLINE += androidboot.boot_devices=soc@0/1d84000.ufshc
+ BOARD_KERNEL_CMDLINE += androidboot.hardware=db845c
+ BOARD_KERNEL_CMDLINE += androidboot.verifiedbootstate=orange
+ else
+ BOARD_BOOT_HEADER_VERSION := 4
+ BOARD_BOOTCONFIG += androidboot.boot_devices=soc@0/1d84000.ufshc
+ BOARD_BOOTCONFIG += androidboot.hardware=db845c
+ BOARD_BOOTCONFIG += androidboot.verifiedbootstate=orange
+ ifeq ($(TARGET_USES_LMP), true)
+ BOARD_BOOTCONFIG += androidboot.load_modules_parallel=true
+ endif
endif
BOARD_MKBOOTIMG_ARGS := --header_version $(BOARD_BOOT_HEADER_VERSION)
BOARD_KERNEL_BASE := 0x80000000
@@ -39,12 +58,29 @@ BOARD_KERNEL_CMDLINE += qcom_geni_serial.con_enabled=1
BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200n8
# Image Configuration
-BOARD_BOOTIMAGE_PARTITION_SIZE := 103079215104 #96M
-BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 103079215104 #96M
-BOARD_USERDATAIMAGE_PARTITION_SIZE := 21474836480 #20G
+BOARD_BOOTIMAGE_PARTITION_SIZE := 100663296 #96M
BOARD_FLASH_BLOCK_SIZE := 4096
-# Super partition
-BOARD_SUPER_PARTITION_SIZE := 12437225472
-BOARD_DB_DYNAMIC_PARTITIONS_SIZE := 12433031168 # Reserve 4M for DAP metadata
+ifeq ($(TARGET_SDCARD_BOOT), true)
+ BOARD_USERDATAIMAGE_PARTITION_SIZE := 8589934592 #8G
+ BOARD_SUPER_PARTITION_SIZE := 4294967296 #4G
+ BOARD_DB_DYNAMIC_PARTITIONS_SIZE := 4290772992 # Reserve 4M for DAP metadata
+ BOARD_SEPOLICY_DIRS += device/linaro/dragonboard/shared/utils/sdcard-boot/sepolicy/
+else
+ BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 100663296 #96M
+ BOARD_USERDATAIMAGE_PARTITION_SIZE := 21474836480 #20G
+ BOARD_SUPER_PARTITION_SIZE := 12437225472
+ BOARD_DB_DYNAMIC_PARTITIONS_SIZE := 12433031168 # Reserve 4M for DAP metadata
+endif
BOARD_SUPER_PARTITION_METADATA_DEVICE := super
BOARD_SUPER_IMAGE_IN_UPDATE_PACKAGE := true
+BOARD_DB_DYNAMIC_PARTITIONS_PARTITION_LIST := system vendor system_ext product
+
+# dlkm partitions
+include device/linaro/dragonboard/shared/utils/dlkm_loader/BoardConfig.mk
+BOARD_DB_DYNAMIC_PARTITIONS_PARTITION_LIST += system_dlkm vendor_dlkm
+BOARD_SEPOLICY_DIRS += device/linaro/dragonboard/shared/utils/dlkm_loader/sepolicy/
+
+# Graphics
+include device/linaro/dragonboard/shared/graphics/drm_hwcomposer/BoardConfig.mk
+include device/linaro/dragonboard/shared/graphics/mesa/BoardConfig.mk
+BOARD_SEPOLICY_DIRS += device/linaro/dragonboard/shared/graphics/minigbm_msm/sepolicy/
diff --git a/db845c/device.mk b/db845c/device.mk
index ef754c1..fb1b719 100644
--- a/db845c/device.mk
+++ b/db845c/device.mk
@@ -24,6 +24,11 @@ else
$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota.mk)
endif
+# dlkm_loader
+include device/linaro/dragonboard/shared/utils/dlkm_loader/device.mk
+PRODUCT_COPY_FILES += \
+ device/linaro/dragonboard/shared/utils/dlkm_loader/dlkm_loader.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/dlkm_loader.rc
+
# Build generic Audio HAL
PRODUCT_PACKAGES += audio.primary.db845c
@@ -33,26 +38,35 @@ PRODUCT_PACKAGES += \
android.hardware.boot@1.2-impl.recovery \
android.hardware.boot@1.2-service
+# Set BT address
+PRODUCT_PACKAGES += bdaddr
+
+# Install bdaddr script
+PRODUCT_COPY_FILES += \
+ device/linaro/dragonboard/shared/utils/bdaddr/set_bdaddr.sh:$(TARGET_COPY_OUT_VENDOR)/bin/set_bdaddr.sh
+
# Install scripts to set vendor.* properties
PRODUCT_COPY_FILES += \
- device/linaro/dragonboard/qcom/set_hw.sh:$(TARGET_COPY_OUT_VENDOR)/bin/set_hw.sh \
- device/linaro/dragonboard/qcom/set_udc.sh:$(TARGET_COPY_OUT_VENDOR)/bin/set_udc.sh
+ device/linaro/dragonboard/shared/utils/set_hw.sh:$(TARGET_COPY_OUT_VENDOR)/bin/set_hw.sh \
+ device/linaro/dragonboard/shared/utils/set_udc.sh:$(TARGET_COPY_OUT_VENDOR)/bin/set_udc.sh
# Install scripts to set Ethernet MAC address
PRODUCT_COPY_FILES += \
- $(LOCAL_PATH)/eth_mac_addr.rc:/system/etc/init/eth_mac_addr.rc \
- $(LOCAL_PATH)/eth_mac_addr.sh:/system/bin/eth_mac_addr.sh
+ device/linaro/dragonboard/shared/utils/ethaddr/ethaddr.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/ethaddr.rc \
+ device/linaro/dragonboard/shared/utils/ethaddr/set_ethaddr.sh:$(TARGET_COPY_OUT_VENDOR)/bin/set_ethaddr.sh
PRODUCT_VENDOR_PROPERTIES += ro.soc.manufacturer=Qualcomm
PRODUCT_VENDOR_PROPERTIES += ro.soc.model=SDM845
-PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=160
+PRODUCT_SOONG_NAMESPACES += \
+ vendor/linaro/db845c/$(EXPECTED_LINARO_VENDOR_VERSION) \
+ vendor/linaro/rb5/$(EXPECTED_LINARO_VENDOR_VERSION)
# Copy firmware files
$(call inherit-product-if-exists, vendor/linaro/db845c/$(EXPECTED_LINARO_VENDOR_VERSION)/device.mk)
$(call inherit-product-if-exists, vendor/linaro/rb5/$(EXPECTED_LINARO_VENDOR_VERSION)/device.mk)
TARGET_HARDWARE := db845c
-TARGET_KERNEL_USE ?= 5.15
+TARGET_KERNEL_USE ?= 6.6
include device/linaro/dragonboard/device-common.mk
diff --git a/db845c/eth_mac_addr.rc b/db845c/eth_mac_addr.rc
deleted file mode 100644
index a30c0a5..0000000
--- a/db845c/eth_mac_addr.rc
+++ /dev/null
@@ -1,9 +0,0 @@
-service eth_mac_addr /system/bin/eth_mac_addr.sh
- class core
- user root
- group system
- disabled
- oneshot
-
-on post-fs-data && property:vendor.hw=db45c
- start eth_mac_addr
diff --git a/db845c/eth_mac_addr.sh b/db845c/eth_mac_addr.sh
deleted file mode 100644
index bdc1ba7..0000000
--- a/db845c/eth_mac_addr.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#! /system/bin/sh
-# Set eth0 mac address.
-#
-# Get the unique board serial number from /proc/cmdline,
-# prepend '0's to the serial number to fill 5 LSBs of the
-# MAC address and prepend "02" as MSB to prepare a 6 byte
-# locally administered unicast MAC address.
-# Format the output in xx:xx:xx:xx:xx:xx format for the
-# "ip" set address command to work.
-
-SERIALNO=`cat /proc/cmdline | grep -o serialno.* | cut -f2 -d'=' | awk '{printf("02%010s\n", $1)}' | sed 's/\(..\)/\1:/g' | sed '$s/:$//'`
-
-/system/bin/ip link set dev eth0 down
-/system/bin/ip link set dev eth0 address "${SERIALNO}"
-/system/bin/ip link set dev eth0 up
diff --git a/device-common.mk b/device-common.mk
index d2d2036..960c2ae 100644
--- a/device-common.mk
+++ b/device-common.mk
@@ -15,18 +15,24 @@
#
TARGET_KERNEL_DIR ?= device/linaro/dragonboard-kernel/android-$(TARGET_KERNEL_USE)
+TARGET_MODS := $(wildcard $(TARGET_KERNEL_DIR)/*.ko)
-TARGET_USES_GKI ?= true
-
-ifeq ($(TARGET_USES_GKI), true)
- TARGET_MODS := $(wildcard $(TARGET_KERNEL_DIR)/*.ko)
- ifneq ($(TARGET_MODS),)
- BOARD_DO_NOT_STRIP_VENDOR_RAMDISK_MODULES := true
- BOARD_VENDOR_RAMDISK_KERNEL_MODULES := $(TARGET_MODS)
- endif
+BOARD_DO_NOT_STRIP_VENDOR_RAMDISK_MODULES := true
+BOARD_DO_NOT_STRIP_GENERIC_RAMDISK_MODULES := true
+ifeq ($(TARGET_SDCARD_BOOT), true)
+ # UFS module filename varies from ufs_qcom.ko to ufs-qcom.ko across different kernel versions
+ BOARD_VENDOR_KERNEL_MODULES := $(wildcard $(TARGET_KERNEL_DIR)/ufs*qcom.ko)
+ BOARD_GENERIC_RAMDISK_KERNEL_MODULES := $(filter-out $(BOARD_VENDOR_KERNEL_MODULES),$(TARGET_MODS))
+else ifeq ($(TARGET_USES_LMP), true)
+ include device/linaro/dragonboard/shared/utils/dlkm_loader/vendor.modules.list.mk
+ BOARD_VENDOR_KERNEL_MODULES := $(patsubst %,$(TARGET_KERNEL_DIR)/%,$(VENDOR_DLKM_KERNEL_MODULES_LIST))
+ BOARD_VENDOR_RAMDISK_KERNEL_MODULES := $(patsubst %,$(TARGET_KERNEL_DIR)/%,$(VENDOR_RAMDISK_KERNEL_MODULES_LIST))
+ BOARD_SYSTEM_KERNEL_MODULES := $(filter-out $(BOARD_VENDOR_KERNEL_MODULES) $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES), $(wildcard $(TARGET_KERNEL_DIR)/*.ko))
+else
+ BOARD_VENDOR_RAMDISK_KERNEL_MODULES := $(TARGET_MODS)
endif
-PRODUCT_SHIPPING_API_LEVEL := 31
+PRODUCT_SHIPPING_API_LEVEL := 33
# Check vendor package version
# If you need to make changes to the vendor partition,
@@ -52,9 +58,7 @@ endif
PRODUCT_SOONG_NAMESPACES += \
device/linaro/dragonboard \
- vendor/linaro/linux-firmware/$(EXPECTED_LINARO_VENDOR_VERSION) \
- vendor/linaro/db845c/$(EXPECTED_LINARO_VENDOR_VERSION) \
- vendor/linaro/rb5/$(EXPECTED_LINARO_VENDOR_VERSION)
+ vendor/linaro/shared/$(EXPECTED_LINARO_VENDOR_VERSION)/linux-firmware
# Dynamic partitions
PRODUCT_BUILD_SUPER_PARTITION := true
@@ -69,10 +73,31 @@ AB_OTA_PARTITIONS += \
system_ext \
vendor
+ifeq ($(TARGET_SDCARD_BOOT), true)
+ ifneq ($(filter 5.4 5.10 5.15, $(TARGET_KERNEL_USE)),)
+ PRODUCT_COPY_FILES += \
+ device/linaro/dragonboard/shared/utils/sdcard-boot/fstab.sdhci:$(TARGET_COPY_OUT_RAMDISK)/first_stage_ramdisk/fstab.$(TARGET_HARDWARE) \
+ device/linaro/dragonboard/shared/utils/sdcard-boot/fstab.sdhci:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.$(TARGET_HARDWARE)
+ else
+ PRODUCT_COPY_FILES += \
+ device/linaro/dragonboard/shared/utils/sdcard-boot/fstab.mmc:$(TARGET_COPY_OUT_RAMDISK)/first_stage_ramdisk/fstab.$(TARGET_HARDWARE) \
+ device/linaro/dragonboard/shared/utils/sdcard-boot/fstab.mmc:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.$(TARGET_HARDWARE)
+ endif
+else
+ PRODUCT_COPY_FILES += \
+ device/linaro/dragonboard/fstab.common:$(TARGET_COPY_OUT_RAMDISK)/first_stage_ramdisk/fstab.$(TARGET_HARDWARE) \
+ device/linaro/dragonboard/fstab.common:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.$(TARGET_HARDWARE)
+endif
+
+PRODUCT_VENDOR_PROPERTIES += \
+ persist.sys.zram_enabled=1
+
PRODUCT_COPY_FILES += \
$(TARGET_KERNEL_DIR)/Image.gz:kernel \
- device/linaro/dragonboard/fstab.common:$(TARGET_COPY_OUT_RAMDISK)/first_stage_ramdisk/fstab.$(TARGET_HARDWARE) \
- device/linaro/dragonboard/fstab.common:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.$(TARGET_HARDWARE) \
device/linaro/dragonboard/init.common.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.$(TARGET_HARDWARE).rc \
device/linaro/dragonboard/init.common.usb.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.$(TARGET_HARDWARE).usb.rc \
frameworks/base/data/keyboards/Generic.kl:$(TARGET_COPY_OUT_VENDOR)/usr/keylayout/$(TARGET_HARDWARE).kl
+
+# Workaround for the drop of OMX service
+PRODUCT_VENDOR_PROPERTIES += \
+ debug.stagefright.c2inputsurface=-1
diff --git a/fstab.common b/fstab.common
index f1bd034..c618b7a 100644
--- a/fstab.common
+++ b/fstab.common
@@ -1,8 +1,14 @@
-system /system ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect
+system /system erofs ro wait,logical,first_stage_mount,slotselect
/dev/block/platform/soc@0/1d84000.ufshc/by-name/userdata /data ext4 discard,noatime,noauto_da_alloc,data=ordered,user_xattr,barrier=1,inlinecrypt latemount,wait,formattable,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,keydirectory=/metadata/vold/metadata_encryption,quota
/dev/block/platform/soc@0/1d84000.ufshc/by-name/metadata /metadata ext4 noatime,nosuid,nodev,discard wait,formattable,first_stage_mount,check
/dev/block/platform/soc@0/1d84000.ufshc/by-name/misc /misc emmc defaults defaults
/devices/platform/soc@0/8804000.sdhci/mmc_host/mmc* auto auto defaults voldmanaged=sdcard1:auto
-vendor /vendor ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect
-system_ext /system_ext ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect
-product /product ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect
+/devices/platform/soc@0/8804000.mmc/mmc_host/mmc* auto auto defaults voldmanaged=sdcard1:auto
+/devices/platform/soc@0/a8f8800.usb/*/usb* auto auto defaults voldmanaged=usb1:auto
+/devices/platform/soc@0/1c00000.pci/*/usb* auto auto defaults voldmanaged=usb2:auto
+vendor /vendor erofs ro wait,logical,first_stage_mount,slotselect
+system_ext /system_ext erofs ro wait,logical,first_stage_mount,slotselect
+product /product erofs ro wait,logical,first_stage_mount,slotselect
+system_dlkm /system_dlkm erofs ro wait,logical,first_stage_mount,slotselect
+vendor_dlkm /vendor_dlkm erofs ro wait,logical,first_stage_mount,slotselect
+/dev/block/zram0 none swap defaults zramsize=75%
diff --git a/full.mk b/full.mk
index e2fd3ee..00e3eb8 100644
--- a/full.mk
+++ b/full.mk
@@ -41,59 +41,6 @@ PRODUCT_PACKAGES += \
android.hardware.drm-service.clearkey \
android.hardware.drm-service.widevine
-# Mesa
-PRODUCT_PACKAGES += \
- libGLES_mesa \
- libEGL_mesa \
- libGLESv1_CM_mesa \
- libGLESv2_mesa \
- libgallium_dri \
- libglapi
-
-TARGET_BUILD_MESA ?= false
-ifeq ($(TARGET_BUILD_MESA), true)
- PRODUCT_SOONG_NAMESPACES += \
- external/mesa3d
-endif
-
-PRODUCT_PROPERTY_OVERRIDES += \
- ro.hardware.gralloc=minigbm_msm \
- ro.hardware.hwcomposer=drm \
- ro.opengles.version=196608 \
- persist.demo.rotationlock=1
-
-# Vulkan
-PRODUCT_PACKAGES += \
- vulkan.freedreno
-
-PRODUCT_COPY_FILES += \
- frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \
- frameworks/native/data/etc/android.hardware.vulkan.version-1_1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \
- frameworks/native/data/etc/android.software.vulkan.deqp.level-2021-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml \
-
-PRODUCT_VENDOR_PROPERTIES += \
- ro.hardware.vulkan=freedreno
-
-# Will need to enable this after ANDROID_external_memory_android_hardware_buffer lands in mesa
-#TARGET_USES_VULKAN = true
-
-#
-# Hardware Composer HAL
-#
-PRODUCT_PACKAGES += \
- hwcomposer.drm \
- android.hardware.graphics.composer@2.3-impl \
- android.hardware.graphics.composer@2.3-service
-
-#
-# Gralloc HAL
-#
-PRODUCT_PACKAGES += \
- gralloc.minigbm_msm \
- android.hardware.graphics.allocator@4.0-service.minigbm_msm \
- android.hardware.graphics.mapper@4.0-impl.minigbm_msm
-
-
# Use Launcher3QuickStep
PRODUCT_PACKAGES += Launcher3QuickStep
@@ -117,7 +64,7 @@ PRODUCT_COPY_FILES += \
# Enable BT
PRODUCT_PACKAGES += \
- android.hardware.bluetooth@1.1-service.btlinux
+ android.hardware.bluetooth-service.default
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.bluetooth.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth.xml \
@@ -150,6 +97,12 @@ PRODUCT_PACKAGES += \
audio.usb.default \
audio.r_submix.default
+# Bluetooth Audio AIDL HAL
+PRODUCT_PACKAGES += \
+ android.hardware.bluetooth.audio-impl \
+PRODUCT_COPY_FILES += \
+ frameworks/av/services/audiopolicy/config/bluetooth_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_audio_policy_configuration_7_0.xml \
+
# Build tinyalsa cli tools for debugging
PRODUCT_PACKAGES += \
tinyplay \
@@ -157,12 +110,12 @@ PRODUCT_PACKAGES += \
tinymix \
tinypcminfo
+
# audio policy configuration
USE_XML_AUDIO_POLICY_CONF := 1
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/etc/mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths.xml \
$(LOCAL_PATH)/etc/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
- $(LOCAL_PATH)/etc/audio_policy_configuration_bluetooth_legacy_hal.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration_bluetooth_legacy_hal.xml \
frameworks/av/services/audiopolicy/config/a2dp_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_audio_policy_configuration.xml \
frameworks/av/services/audiopolicy/config/a2dp_in_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_in_audio_policy_configuration.xml \
frameworks/av/services/audiopolicy/config/primary_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/primary_audio_policy_configuration.xml \
@@ -207,17 +160,21 @@ PRODUCT_PACKAGES += \
PRODUCT_PACKAGES += \
android.hardware.gatekeeper@1.0-service.software
-# Health
-PRODUCT_PACKAGES += \
- android.hardware.health@2.1-impl-cuttlefish \
- android.hardware.health@2.1-service
+# Health HAL
+PRODUCT_PACKAGES += com.google.cf.health
+
+# Thermal HAL
+PRODUCT_PACKAGES += com.android.hardware.thermal
# TODO: disable this service once we implement system suspend
PRODUCT_PACKAGES += \
suspend_blocker
+# dtc and fdtoverlay tools to apply dt overlays
# mkbootimg host tool to build boot.img separately
PRODUCT_HOST_PACKAGES := \
+ dtc \
+ fdtoverlay \
mkbootimg
# Userspace vendor services for WiFi/Audio to work
@@ -230,11 +187,11 @@ PRODUCT_PACKAGES += \
tqftpserv
PRODUCT_COPY_FILES += \
- $(LOCAL_PATH)/qcom/init.qcom.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.qcom.rc
+ $(LOCAL_PATH)/shared/utils/init.utils.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.utils.rc
# Copy standard platform config files
PRODUCT_COPY_FILES += \
- $(LOCAL_PATH)/ueventd.common.rc:$(TARGET_COPY_OUT_VENDOR)/ueventd.rc \
+ $(LOCAL_PATH)/ueventd.common.rc:$(TARGET_COPY_OUT_VENDOR)/etc/ueventd.rc \
frameworks/native/data/etc/android.software.cts.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.cts.xml \
frameworks/native/data/etc/android.software.app_widgets.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.app_widgets.xml \
frameworks/native/data/etc/android.software.backup.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.backup.xml \
@@ -250,6 +207,3 @@ TARGET_PRODUCT_PROP := $(LOCAL_PATH)/product.prop
DEVICE_MANIFEST_FILE := device/linaro/dragonboard/manifest.xml
DEVICE_MATRIX_FILE := device/linaro/dragonboard/compatibility_matrix.xml
-
-$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)
diff --git a/init.common.rc b/init.common.rc
index 51a42c6..42a582f 100644
--- a/init.common.rc
+++ b/init.common.rc
@@ -16,6 +16,9 @@ on late-fs
mount_all /vendor/etc/fstab.${ro.hardware} --late
on init
+ # ZRAM setup
+ write /sys/block/zram0/comp_algorithm lz4
+
# For legacy support
# See storage config details at http://source.android.com/tech/storage/
# since /storage is mounted on post-fs in init.rc
@@ -59,6 +62,15 @@ on property:sys.boot_completed=1
# little cores, not on bigs to be used only by init
write /dev/cpuset/system-background/cpus 0-3
+ trigger sys-boot-completed-set
+
+# We want one opportunity per boot to enable zram, so we
+# use a trigger we fire from the above stanza. If
+# persist.sys.zram_enabled becomes true after boot,
+# we don't want to run swapon_all at that time.
+on sys-boot-completed-set && property:persist.sys.zram_enabled=1
+ swapon_all
+
service wpa_supplicant /vendor/bin/hw/wpa_supplicant \
-Dnl80211 -g@android:wpa_wlan0
interface aidl android.hardware.wifi.supplicant.ISupplicant/default
diff --git a/installer/rb5/README b/installer/rb5/README
index ee59bdb..fc9ae1d 100644
--- a/installer/rb5/README
+++ b/installer/rb5/README
@@ -2,7 +2,7 @@ These instructions will help you flashing the prebuilt bootloader
and AOSP images(built from sources) on rb5.
First, make sure you have built the AOSP images for RB5 by
-running the rb5-userdebug lunch target.
+running the db845c-trunk_staging-userdebug lunch target.
Boot the board into fastboot mode:
diff --git a/installer/rb5/flash-all-aosp.sh b/installer/rb5/flash-all-aosp.sh
index 28eb0e4..d3063c7 100755
--- a/installer/rb5/flash-all-aosp.sh
+++ b/installer/rb5/flash-all-aosp.sh
@@ -2,10 +2,10 @@
INSTALLER_DIR="`dirname ${0}`"
-# for cases that don't run "lunch rb5-userdebug"
+# for cases that don't run "lunch db845c-trunk_staging-userdebug"
if [ -z "${ANDROID_BUILD_TOP}" ]; then
ANDROID_BUILD_TOP="`readlink -f ${INSTALLER_DIR}/../../../../../`"
- ANDROID_PRODUCT_OUT="${ANDROID_BUILD_TOP}/out/target/product/rb5"
+ ANDROID_PRODUCT_OUT="${ANDROID_BUILD_TOP}/out/target/product/db845c"
fi
if [ ! -d "${ANDROID_PRODUCT_OUT}" ]; then
diff --git a/installer/rb5/recovery.sh b/installer/rb5/recovery.sh
index 156a16d..626b9a6 100755
--- a/installer/rb5/recovery.sh
+++ b/installer/rb5/recovery.sh
@@ -2,7 +2,7 @@
INSTALLER_DIR="`dirname ${0}`"
-# for cases that don't run "lunch rb5-userdebug"
+# for cases that don't run "lunch db845c-trunk_staging-userdebug"
if [ -z "${ANDROID_BUILD_TOP}" ]; then
ANDROID_BUILD_TOP="`readlink -f ${INSTALLER_DIR}/../../../../../`"
fi
diff --git a/linaro_swr.mk b/linaro_swr.mk
new file mode 100644
index 0000000..2a31395
--- /dev/null
+++ b/linaro_swr.mk
@@ -0,0 +1,16 @@
+$(call inherit-product, device/linaro/dragonboard/full.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit_only.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)
+
+# Target is using software rendering
+TARGET_USES_SWR := true
+$(call inherit-product, device/linaro/dragonboard/shared/graphics/drm_hwcomposer/device.mk)
+$(call inherit-product, device/linaro/dragonboard/shared/graphics/minigbm_msm/device.mk)
+$(call inherit-product, device/linaro/dragonboard/shared/graphics/swangle/device.mk)
+
+$(call inherit-product, device/linaro/dragonboard/linaro_swr/device.mk)
+
+# Product overrides
+PRODUCT_NAME := linaro_swr
+PRODUCT_DEVICE := linaro_swr
+PRODUCT_BRAND := Android
diff --git a/linaro_swr/Android.mk b/linaro_swr/Android.mk
new file mode 100644
index 0000000..6f725c0
--- /dev/null
+++ b/linaro_swr/Android.mk
@@ -0,0 +1,6 @@
+LOCAL_PATH := $(call my-dir)
+
+# If some modules are built directly from this directory (not subdirectories),
+# their rules should be written here.
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/linaro_swr/BoardConfig.mk b/linaro_swr/BoardConfig.mk
new file mode 100644
index 0000000..9676554
--- /dev/null
+++ b/linaro_swr/BoardConfig.mk
@@ -0,0 +1,50 @@
+include device/linaro/dragonboard/BoardConfigCommon.mk
+
+# Primary Arch
+TARGET_ARCH := arm64
+TARGET_ARCH_VARIANT := armv8-2a
+TARGET_CPU_VARIANT := kryo385
+TARGET_CPU_ABI := arm64-v8a
+
+# Board Information
+TARGET_BOOTLOADER_BOARD_NAME := linaro_swr
+TARGET_BOARD_PLATFORM := linaro_swr
+
+TARGET_NO_KERNEL := false
+BOARD_INCLUDE_DTB_IN_BOOTIMG := true
+BOARD_BOOT_HEADER_VERSION := 4
+BOARD_MKBOOTIMG_ARGS := --header_version $(BOARD_BOOT_HEADER_VERSION)
+
+BOARD_KERNEL_BASE := 0x80000000
+BOARD_KERNEL_PAGESIZE := 4096
+BOARD_KERNEL_CMDLINE += earlycon firmware_class.path=/vendor/firmware/
+BOARD_KERNEL_CMDLINE += init=/init printk.devkmsg=on
+BOARD_KERNEL_CMDLINE += deferred_probe_timeout=30
+BOARD_KERNEL_CMDLINE += pcie_pme=nomsi #For WiFi to work on rb5
+BOARD_KERNEL_CMDLINE += qcom_geni_serial.con_enabled=1
+BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200n8
+BOARD_BOOTCONFIG := androidboot.hardware=linaro_swr androidboot.boot_devices=soc@0/1d84000.ufshc
+BOARD_BOOTCONFIG += androidboot.verifiedbootstate=orange
+
+# Image Configuration
+BOARD_BOOTIMAGE_PARTITION_SIZE := 100663296 #96M
+BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 100663296 #96M
+BOARD_USERDATAIMAGE_PARTITION_SIZE := 21474836480 #20G
+BOARD_FLASH_BLOCK_SIZE := 4096
+# Super partition
+BOARD_SUPER_PARTITION_SIZE := 12437225472
+BOARD_DB_DYNAMIC_PARTITIONS_SIZE := 12433031168 # Reserve 4M for DAP metadata
+BOARD_SUPER_PARTITION_METADATA_DEVICE := super
+BOARD_SUPER_IMAGE_IN_UPDATE_PACKAGE := true
+BOARD_DB_DYNAMIC_PARTITIONS_PARTITION_LIST := system vendor system_ext product
+
+# dlkm partitions
+include device/linaro/dragonboard/shared/utils/dlkm_loader/BoardConfig.mk
+BOARD_DB_DYNAMIC_PARTITIONS_PARTITION_LIST += system_dlkm vendor_dlkm
+BOARD_SEPOLICY_DIRS += device/linaro/dragonboard/shared/utils/dlkm_loader/sepolicy/
+
+# Graphics
+include device/linaro/dragonboard/shared/graphics/drm_hwcomposer/BoardConfig.mk
+BOARD_SEPOLICY_DIRS += \
+ device/linaro/dragonboard/shared/graphics/minigbm_msm/sepolicy \
+ device/linaro/dragonboard/shared/graphics/swangle/sepolicy
diff --git a/linaro_swr/device.mk b/linaro_swr/device.mk
new file mode 100644
index 0000000..8219bfb
--- /dev/null
+++ b/linaro_swr/device.mk
@@ -0,0 +1,69 @@
+#
+# Copyright (C) 2011 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.
+#
+
+# setup dalvik vm configs
+$(call inherit-product, frameworks/native/build/tablet-10in-xhdpi-2048-dalvik-heap.mk)
+
+include $(LOCAL_PATH)/../vendor-package-ver.mk
+$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota.mk)
+
+# dlkm_loader
+include device/linaro/dragonboard/shared/utils/dlkm_loader/device.mk
+PRODUCT_COPY_FILES += \
+ device/linaro/dragonboard/shared/utils/dlkm_loader/dlkm_loader.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/dlkm_loader.rc
+
+# Build generic Audio HAL
+PRODUCT_PACKAGES += audio.primary.linaro_swr
+
+# BootControl HAL
+PRODUCT_PACKAGES += \
+ android.hardware.boot@1.2-impl \
+ android.hardware.boot@1.2-impl.recovery \
+ android.hardware.boot@1.2-service
+
+# Set BT address
+PRODUCT_PACKAGES += bdaddr
+
+# Install bdaddr script
+PRODUCT_COPY_FILES += \
+ device/linaro/dragonboard/shared/utils/bdaddr/set_bdaddr.sh:$(TARGET_COPY_OUT_VENDOR)/bin/set_bdaddr.sh
+
+# Install scripts to set vendor.* properties
+PRODUCT_COPY_FILES += \
+ device/linaro/dragonboard/shared/utils/set_hw.sh:$(TARGET_COPY_OUT_VENDOR)/bin/set_hw.sh \
+ device/linaro/dragonboard/shared/utils/set_udc.sh:$(TARGET_COPY_OUT_VENDOR)/bin/set_udc.sh
+
+# Install scripts to set Ethernet MAC address
+PRODUCT_COPY_FILES += \
+ device/linaro/dragonboard/shared/utils/ethaddr/ethaddr.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/ethaddr.rc \
+ device/linaro/dragonboard/shared/utils/ethaddr/set_ethaddr.sh:$(TARGET_COPY_OUT_VENDOR)/bin/set_ethaddr.sh
+
+PRODUCT_VENDOR_PROPERTIES += \
+ ro.soc.manufacturer=Generic Qcom arm64 arch \
+ ro.soc.model=linaro_swr
+
+PRODUCT_SOONG_NAMESPACES += \
+ vendor/linaro/db845c/$(EXPECTED_LINARO_VENDOR_VERSION) \
+ vendor/linaro/rb5/$(EXPECTED_LINARO_VENDOR_VERSION)
+
+# Copy firmware files
+$(call inherit-product-if-exists, vendor/linaro/db845c/$(EXPECTED_LINARO_VENDOR_VERSION)/device.mk)
+$(call inherit-product-if-exists, vendor/linaro/rb5/$(EXPECTED_LINARO_VENDOR_VERSION)/device.mk)
+
+TARGET_HARDWARE := linaro_swr
+TARGET_KERNEL_USE ?= 6.6
+
+include device/linaro/dragonboard/device-common.mk
diff --git a/manifest.xml b/manifest.xml
index d0a07a3..8643532 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -1,4 +1,4 @@
-<manifest version="1.0" type="device" target-level="6">
+<manifest version="1.0" type="device" target-level="7">
<hal format="hidl">
<name>android.hardware.audio</name>
<transport>hwbinder</transport>
@@ -27,15 +27,6 @@
</interface>
</hal>
<hal format="hidl">
- <name>android.hardware.bluetooth.audio</name>
- <transport>hwbinder</transport>
- <version>2.0</version>
- <interface>
- <name>IBluetoothAudioProvidersFactory</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
<name>android.hardware.camera.provider</name>
<transport>hwbinder</transport>
<impl level="generic"></impl>
@@ -64,19 +55,6 @@
</interface>
</hal>
<hal format="hidl">
- <name>android.hardware.media.omx</name>
- <transport>hwbinder</transport>
- <version>1.0</version>
- <interface>
- <name>IOmx</name>
- <instance>default</instance>
- </interface>
- <interface>
- <name>IOmxStore</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
<name>android.hardware.soundtrigger</name>
<transport>hwbinder</transport>
<version>2.3</version>
diff --git a/mini.mk b/mini.mk
index bc6f400..0213c63 100644
--- a/mini.mk
+++ b/mini.mk
@@ -15,7 +15,7 @@
#
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_no_zygote.mk)
-$(call inherit-product, device/generic/goldfish/minimal_system.mk)
+$(call inherit-product, device/generic/goldfish/fvpbase/minimal_system.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/runtime_libart.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk)
diff --git a/product.prop b/product.prop
index d703af9..19b8fd5 100644
--- a/product.prop
+++ b/product.prop
@@ -15,12 +15,7 @@ bluetooth.device.class_of_device=90,2,12
bluetooth.profile.asha.central.enabled?=true
bluetooth.profile.a2dp.source.enabled?=true
bluetooth.profile.avrcp.target.enabled?=true
-bluetooth.profile.bap.broadcast.assist.enabled?=true
-bluetooth.profile.bap.unicast.client.enabled?=true
-bluetooth.profile.bas.client.enabled?=true
-bluetooth.profile.csip.set_coordinator.enabled?=true
bluetooth.profile.gatt.enabled?=true
-bluetooth.profile.hap.client.enabled?=true
bluetooth.profile.hfp.ag.enabled?=true
bluetooth.profile.hid.device.enabled?=true
bluetooth.profile.hid.host.enabled?=true
@@ -31,5 +26,12 @@ bluetooth.profile.pan.nap.enabled?=true
bluetooth.profile.pan.panu.enabled?=true
bluetooth.profile.pbap.server.enabled?=true
bluetooth.profile.sap.server.enabled?=true
-bluetooth.profile.ccp.server.enabled?=true
-bluetooth.profile.vcp.controller.enabled?=true
+
+# Disable LeAudio related profile as there is no support for it
+bluetooth.profile.bap.broadcast.assist.enabled=false
+bluetooth.profile.bap.unicast.client.enabled=false
+bluetooth.profile.bas.client.enabled=false
+bluetooth.profile.ccp.server.enabled=false
+bluetooth.profile.csip.set_coordinator.enabled=false
+bluetooth.profile.hap.client.enabled=false
+bluetooth.profile.vcp.controller.enabled=false
diff --git a/qcom/set_hw.sh b/qcom/set_hw.sh
deleted file mode 100644
index 98f76c3..0000000
--- a/qcom/set_hw.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /vendor/bin/sh
-# Set vendor.hw property to run device specific services
-#
-# grep the device name from /proc/device-tree/compatible
-
-HW=`/vendor/bin/cat /proc/device-tree/compatible | /vendor/bin/grep rb5`
-
-if [ -z "${HW}" ]; then
- setprop vendor.hw db845c
-else
- setprop vendor.hw rb5
-fi
diff --git a/rb5.mk b/rb5.mk
deleted file mode 100644
index 8d4f174..0000000
--- a/rb5.mk
+++ /dev/null
@@ -1,7 +0,0 @@
-$(call inherit-product, device/linaro/dragonboard/full.mk)
-$(call inherit-product, device/linaro/dragonboard/rb5/device.mk)
-
-# Product overrides
-PRODUCT_NAME := rb5
-PRODUCT_DEVICE := rb5
-PRODUCT_BRAND := Android
diff --git a/rb5/BoardConfig.mk b/rb5/BoardConfig.mk
deleted file mode 100644
index 92f536b..0000000
--- a/rb5/BoardConfig.mk
+++ /dev/null
@@ -1,47 +0,0 @@
-include device/linaro/dragonboard/BoardConfigCommon.mk
-
-# Primary Arch
-TARGET_ARCH := arm64
-TARGET_ARCH_VARIANT := armv8-2a
-TARGET_CPU_VARIANT := kryo385
-TARGET_CPU_ABI := arm64-v8a
-
-# Secondary Arch
-TARGET_2ND_ARCH := arm
-TARGET_2ND_ARCH_VARIANT := armv8-2a
-TARGET_2ND_CPU_VARIANT := kryo385
-TARGET_2ND_CPU_ABI := armeabi-v7a
-TARGET_2ND_CPU_ABI2 := armeabi
-
-# Board Information
-TARGET_BOOTLOADER_BOARD_NAME := rb5
-TARGET_BOARD_PLATFORM := rb5
-
-TARGET_NO_KERNEL := false
-BOARD_KERNEL_BASE := 0x80000000
-BOARD_KERNEL_PAGESIZE := 4096
-
-BOARD_INCLUDE_DTB_IN_BOOTIMG := true
-BOARD_BOOT_HEADER_VERSION := 4
-BOARD_MKBOOTIMG_ARGS := --header_version $(BOARD_BOOT_HEADER_VERSION)
-
-BOARD_KERNEL_CMDLINE := earlycon firmware_class.path=/vendor/firmware/
-BOARD_KERNEL_CMDLINE += init=/init printk.devkmsg=on
-BOARD_KERNEL_CMDLINE += pcie_pme=nomsi #For WiFi to work
-BOARD_KERNEL_CMDLINE += deferred_probe_timeout=30
-BOARD_KERNEL_CMDLINE += qcom_geni_serial.con_enabled=1
-BOARD_KERNEL_CMDLINE += console=ttyMSM0
-BOARD_BOOTCONFIG += androidboot.hardware=rb5 androidboot.boot_devices=soc@0/1d84000.ufshc
-BOARD_BOOTCONFIG += androidboot.verifiedbootstate=orange
-
-# Image Configuration
-BOARD_BOOTIMAGE_PARTITION_SIZE := 103079215104 #96M
-BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 103079215104 #96M
-BOARD_USERDATAIMAGE_PARTITION_SIZE := 21474836480
-BOARD_FLASH_BLOCK_SIZE := 131072
-
-# Super/Dynamic partition
-BOARD_SUPER_PARTITION_SIZE := 12437225472
-BOARD_DB_DYNAMIC_PARTITIONS_SIZE := 12433031168 # Reserve 4M for DAP metadata
-BOARD_SUPER_PARTITION_METADATA_DEVICE := super
-BOARD_SUPER_IMAGE_IN_UPDATE_PACKAGE := true
diff --git a/rb5/device.mk b/rb5/device.mk
deleted file mode 100644
index 6f4f75a..0000000
--- a/rb5/device.mk
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# Copyright (C) 2011 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.
-#
-
-# setup dalvik vm configs
-$(call inherit-product, frameworks/native/build/tablet-10in-xhdpi-2048-dalvik-heap.mk)
-
-include $(LOCAL_PATH)/../vendor-package-ver.mk
-
-$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota/launch_with_vendor_ramdisk.mk)
-
-PRODUCT_COPY_FILES := \
- $(LOCAL_PATH)/mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths.xml \
-
-# Build generic Audio HAL
-PRODUCT_PACKAGES += audio.primary.rb5
-
-# BootControl HAL
-PRODUCT_PACKAGES += \
- android.hardware.boot@1.2-impl \
- android.hardware.boot@1.2-impl.recovery \
- android.hardware.boot@1.2-service
-
-# Install scripts to set vendor.* properties
-PRODUCT_COPY_FILES += \
- device/linaro/dragonboard/qcom/set_hw.sh:$(TARGET_COPY_OUT_VENDOR)/bin/set_hw.sh
-
-PRODUCT_VENDOR_PROPERTIES += ro.soc.manufacturer=Qualcomm
-PRODUCT_VENDOR_PROPERTIES += ro.soc.model=QRB5165
-
-PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=160
-
-# Copy firmware files
-$(call inherit-product-if-exists, vendor/linaro/rb5/$(EXPECTED_LINARO_VENDOR_VERSION)/device.mk)
-
-TARGET_DTB := qrb5165-rb5.dtb
-TARGET_HARDWARE := rb5
-TARGET_KERNEL_USE ?= 5.15
-
-include device/linaro/dragonboard/device-common.mk
-
-PRODUCT_COPY_FILES += $(TARGET_KERNEL_DIR)/qrb5165-rb5.dtb:dtb.img
diff --git a/rb5/mixer_paths.xml b/rb5/mixer_paths.xml
deleted file mode 100644
index 86e67fc..0000000
--- a/rb5/mixer_paths.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<mixer>
- <!-- Enable HDMI out -->
- <ctl name="TERT_MI2S_RX Audio Mixer MultiMedia1" value="1" />
-</mixer>
diff --git a/rb5_mini.mk b/rb5_mini.mk
deleted file mode 100644
index 302e217..0000000
--- a/rb5_mini.mk
+++ /dev/null
@@ -1,7 +0,0 @@
-$(call inherit-product, device/linaro/dragonboard/mini.mk)
-$(call inherit-product, device/linaro/dragonboard/rb5/device.mk)
-
-# Product overrides
-PRODUCT_NAME := rb5_mini
-PRODUCT_DEVICE := rb5
-PRODUCT_BRAND := Android
diff --git a/sepolicy/eth_mac_addr.te b/sepolicy/eth_mac_addr.te
deleted file mode 100644
index d2e4e1a..0000000
--- a/sepolicy/eth_mac_addr.te
+++ /dev/null
@@ -1,12 +0,0 @@
-type eth_mac_addr, domain, coredomain;
-type eth_mac_addr_exec, exec_type, system_file_type, file_type;
-init_daemon_domain(eth_mac_addr);
-
-allow eth_mac_addr proc_cmdline:file { open read };
-allow eth_mac_addr rootfs:dir { open read };
-allow eth_mac_addr self:capability net_admin;
-allow eth_mac_addr self:netlink_route_socket { bind create getattr nlmsg_readpriv nlmsg_write read setopt write };
-allow eth_mac_addr self:udp_socket { create ioctl };
-allow eth_mac_addr shell_exec:file { execute getattr map read };
-allow eth_mac_addr system_file:file execute_no_trans;
-allow eth_mac_addr toolbox_exec:file { execute execute_no_trans getattr map open read };
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
index d7419dc..660539c 100644
--- a/sepolicy/file_contexts
+++ b/sepolicy/file_contexts
@@ -5,6 +5,7 @@
/dev/block/platform/soc@0/1d84000\.ufshc/by-name/super u:object_r:super_block_device:s0
/dev/block/platform/soc@0/1d84000\.ufshc/by-name/userdata u:object_r:userdata_block_device:s0
/dev/block/platform/soc@0/1d84000\.ufshc/by-name/misc u:object_r:misc_block_device:s0
+/dev/block/zram0 u:object_r:swap_block_device:s0
/dev/dri u:object_r:dri_device:s0
/dev/dri/card0 u:object_r:graphics_device:s0
@@ -20,6 +21,7 @@
/sys/devices/platform/soc@0/8300000.remoteproc u:object_r:sysfs_remoteproc:s0
/sys/devices/platform/soc@0/17300000.remoteproc u:object_r:sysfs_remoteproc:s0
/sys/devices/platform/soc@0/ae00000.mdss u:object_r:sysfs_gpu:s0
+/sys/devices/platform/soc@0/ae00000.display-subsystem u:object_r:sysfs_gpu:s0
#wakeups on db845c
/sys/devices/platform/soc@0/1c00000.pci/pci0000:00/0000:00:00.0/0000:01:00.0/wakeup/wakeup1 u:object_r:sysfs_wakeup:s0
@@ -48,30 +50,28 @@
/data/vendor/readwrite(/.*)? u:object_r:tqftpserv_vendor_data_file:s0
/data/vendor/readonly(/.*)? u:object_r:tqftpserv_vendor_data_file:s0
-/system/bin/eth_mac_addr\.sh u:object_r:eth_mac_addr_exec:s0
/system/bin/tinymix u:object_r:tinymix_exec:s0
/vendor/bin/grep u:object_r:vendor_toolbox_exec:s0
+/vendor/bin/ifconfig u:object_r:vendor_toolbox_exec:s0
/vendor/bin/hw/android\.hardware\.gatekeeper@1\.0-service\.software u:object_r:hal_gatekeeper_default_exec:s0
-/vendor/bin/hw/android\.hardware\.graphics\.allocator@4\.0-service\.minigbm_msm u:object_r:hal_graphics_allocator_default_exec:s0
/vendor/bin/pd-mapper u:object_r:pd_mapper_exec:s0
/vendor/bin/qrtr-cfg u:object_r:qrtr_exec:s0
/vendor/bin/qrtr-ns u:object_r:qrtr_exec:s0
/vendor/bin/rmtfs u:object_r:rmtfs_exec:s0
/vendor/bin/tqftpserv u:object_r:tqftpserv_exec:s0
/vendor/bin/suspend_blocker u:object_r:suspend_blocker_exec:s0
+/vendor/bin/set_bdaddr\.sh u:object_r:set_bdaddr_exec:s0
+/vendor/bin/set_ethaddr\.sh u:object_r:set_ethaddr_exec:s0
/vendor/bin/set_hw\.sh u:object_r:set_hw_exec:s0
/vendor/bin/set_udc\.sh u:object_r:set_udc_exec:s0
/vendor/lib(64)?/dri/.* u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/hw/gralloc\.gbm\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/hw/android\.hardware\.health@2\.0-impl-2\.1-cuttlefish\.so u:object_r:same_process_hal_file:s0
-/vendor/lib(64)?/hw/gralloc\.minigbm_msm\.so u:object_r:same_process_hal_file:s0
-/vendor/lib(64)?/hw/android\.hardware\.graphics\.mapper@4\.0-impl\.minigbm_msm\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/hw/vulkan\.freedreno\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libdrm\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libdrm_freedreno\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libgbm_mesa\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libglapi\.so u:object_r:same_process_hal_file:s0
-/vendor/lib(64)?/libminigbm_gralloc_msm\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libqrtr\.so u:object_r:same_process_hal_file:s0
diff --git a/sepolicy/genfs_contexts b/sepolicy/genfs_contexts
index 2a50d9c..4d7f4ea 100644
--- a/sepolicy/genfs_contexts
+++ b/sepolicy/genfs_contexts
@@ -6,6 +6,7 @@ genfscon sysfs /devices/platform/soc@0/4080000.remoteproc u:object_r:sysfs
genfscon sysfs /devices/platform/soc@0/8300000.remoteproc u:object_r:sysfs_remoteproc:s0
genfscon sysfs /devices/platform/soc@0/17300000.remoteproc u:object_r:sysfs_remoteproc:s0
genfscon sysfs /devices/platform/soc@0/ae00000.mdss u:object_r:sysfs_gpu:s0
+genfscon sysfs /devices/platform/soc@0/ae00000.display-subsystem u:object_r:sysfs_gpu:s0
genfscon sysfs /class/udc u:object_r:sysfs_udc:s0
genfscon sysfs /firmware/devicetree/base/compatible u:object_r:sysfs_dt_compatible:s0
diff --git a/sepolicy/rmtfs.te b/sepolicy/rmtfs.te
index 7cef38f..91f8d33 100644
--- a/sepolicy/rmtfs.te
+++ b/sepolicy/rmtfs.te
@@ -11,5 +11,6 @@ allow rmtfs self:qipcrtr_socket { bind create getattr read setopt write };
allow rmtfs sysfs_mss:dir { open read search };
allow rmtfs sysfs_remoteproc:dir { open read search };
allow rmtfs sysfs_remoteproc:file { open write };
+allow rmtfs sysfs_remoteproc:file read;
allow rmtfs sysfs_rmtfs:dir search;
allow rmtfs sysfs_rmtfs:file { open read };
diff --git a/sepolicy/set_bdaddr.te b/sepolicy/set_bdaddr.te
new file mode 100644
index 0000000..c7fa166
--- /dev/null
+++ b/sepolicy/set_bdaddr.te
@@ -0,0 +1,12 @@
+type set_bdaddr, domain;
+type set_bdaddr_exec, exec_type, vendor_file_type, file_type;
+init_daemon_domain(set_bdaddr);
+
+# audit2allow
+allow set_bdaddr proc_cmdline:file { open read };
+allow set_bdaddr proc_bootconfig:file { open read };
+allow set_bdaddr rootfs:dir { open read };
+allow set_bdaddr self:bluetooth_socket { bind create read write };
+allow set_bdaddr self:capability net_admin;
+allow set_bdaddr vendor_file:file execute_no_trans;
+allow set_bdaddr vendor_toolbox_exec:file execute_no_trans;
diff --git a/sepolicy/set_ethaddr.te b/sepolicy/set_ethaddr.te
new file mode 100644
index 0000000..2f92368
--- /dev/null
+++ b/sepolicy/set_ethaddr.te
@@ -0,0 +1,13 @@
+type set_ethaddr, domain;
+type set_ethaddr_exec, exec_type, vendor_file_type, file_type;
+init_daemon_domain(set_ethaddr);
+
+allow set_ethaddr proc_cmdline:file { open read };
+allow set_ethaddr proc_bootconfig:file { open read };
+allow set_ethaddr rootfs:dir { open read };
+allow set_ethaddr self:capability net_admin;
+allow set_ethaddr self:capability sys_module;
+allow set_ethaddr self:udp_socket create_socket_perms;
+allow set_ethaddr vendor_file:file execute_no_trans;
+allow set_ethaddr vendor_toolbox_exec:file execute_no_trans;
+allowxperm set_ethaddr self:udp_socket ioctl { SIOCSIFFLAGS SIOCSIFHWADDR };
diff --git a/sepolicy/tqftpserv.te b/sepolicy/tqftpserv.te
index d437c0d..6838c12 100644
--- a/sepolicy/tqftpserv.te
+++ b/sepolicy/tqftpserv.te
@@ -7,4 +7,4 @@ allow tqftpserv self:qipcrtr_socket { connect create getattr read setopt write }
allow tqftpserv sysfs_remoteproc:dir { open read search };
allow tqftpserv sysfs_remoteproc:file { open read };
allow tqftpserv tqftpserv_vendor_data_file:dir { add_name create open read search write };
-allow tqftpserv tqftpserv_vendor_data_file:file { create open write };
+allow tqftpserv tqftpserv_vendor_data_file:file { create getattr open read write };
diff --git a/shared/graphics/drm_hwcomposer/BoardConfig.mk b/shared/graphics/drm_hwcomposer/BoardConfig.mk
new file mode 100644
index 0000000..8c35fbf
--- /dev/null
+++ b/shared/graphics/drm_hwcomposer/BoardConfig.mk
@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2013 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.
+#
+
+# DRM hwcomposer
+BOARD_USES_DRM_HWCOMPOSER := true
+TARGET_USES_HWC2 := true
diff --git a/shared/graphics/drm_hwcomposer/device.mk b/shared/graphics/drm_hwcomposer/device.mk
new file mode 100644
index 0000000..7e3c75e
--- /dev/null
+++ b/shared/graphics/drm_hwcomposer/device.mk
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2014 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.
+#
+
+# Hardware Composer HAL
+PRODUCT_PACKAGES := \
+ hwcomposer.drm \
+ android.hardware.graphics.composer@2.3-impl \
+ android.hardware.graphics.composer@2.3-service
+
+PRODUCT_PROPERTY_OVERRIDES := \
+ ro.hardware.hwcomposer=drm
diff --git a/shared/graphics/mesa/BoardConfig.mk b/shared/graphics/mesa/BoardConfig.mk
new file mode 100644
index 0000000..e05a372
--- /dev/null
+++ b/shared/graphics/mesa/BoardConfig.mk
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2013 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.
+#
+
+BOARD_GPU_DRIVERS := freedreno
+ifeq ($(TARGET_BUILD_MESA),true)
+BOARD_MESA3D_USES_MESON_BUILD := true
+BOARD_MESA3D_GALLIUM_DRIVERS := freedreno zink
+BOARD_MESA3D_VULKAN_DRIVERS := freedreno
+else
+BOARD_USE_CUSTOMIZED_MESA := true
+endif
diff --git a/shared/graphics/mesa/device.mk b/shared/graphics/mesa/device.mk
new file mode 100644
index 0000000..027a42a
--- /dev/null
+++ b/shared/graphics/mesa/device.mk
@@ -0,0 +1,56 @@
+#
+# Copyright (C) 2014 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.
+#
+
+# GLES
+PRODUCT_PACKAGES := \
+ libGLES_mesa \
+ libEGL_mesa \
+ libGLESv1_CM_mesa \
+ libGLESv2_mesa \
+ libgallium_dri \
+ libglapi
+
+TARGET_BUILD_MESA ?= false
+ifeq ($(TARGET_BUILD_MESA), true)
+ PRODUCT_SOONG_NAMESPACES += \
+ external/mesa3d
+endif
+
+PRODUCT_PROPERTY_OVERRIDES := \
+ ro.sf.lcd_density=160 \
+ ro.hardware.egl=mesa \
+ ro.opengles.version=196608 \
+ persist.demo.rotationlock=1
+
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.opengles.aep.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.opengles.aep.xml \
+ frameworks/native/data/etc/android.software.opengles.deqp.level-2022-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.opengles.deqp.level.xml
+
+# Vulkan
+PRODUCT_PACKAGES += \
+ vulkan.freedreno
+
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute.xml \
+ frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \
+ frameworks/native/data/etc/android.hardware.vulkan.version-1_1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \
+ frameworks/native/data/etc/android.software.vulkan.deqp.level-2021-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml
+
+PRODUCT_VENDOR_PROPERTIES += \
+ ro.hardware.vulkan=freedreno
+
+# Will need to enable this after ANDROID_external_memory_android_hardware_buffer lands in Freedreno
+#TARGET_USES_VULKAN = true
diff --git a/shared/graphics/minigbm_msm/device.mk b/shared/graphics/minigbm_msm/device.mk
new file mode 100644
index 0000000..b7c1caa
--- /dev/null
+++ b/shared/graphics/minigbm_msm/device.mk
@@ -0,0 +1,28 @@
+#
+# Copyright (C) 2014 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.
+#
+
+PRODUCT_PACKAGES := \
+ gralloc.minigbm_msm \
+ android.hardware.graphics.allocator@4.0-service.minigbm_msm \
+ android.hardware.graphics.mapper@4.0-impl.minigbm_msm
+
+PRODUCT_PROPERTY_OVERRIDES := \
+ ro.hardware.gralloc=minigbm_msm
+
+ifeq ($(TARGET_USES_SWR), true)
+PRODUCT_VENDOR_PROPERTIES := \
+ vendor.minigbm.debug=nocompression
+endif
diff --git a/shared/graphics/minigbm_msm/sepolicy/file_contexts b/shared/graphics/minigbm_msm/sepolicy/file_contexts
new file mode 100644
index 0000000..3cd05e9
--- /dev/null
+++ b/shared/graphics/minigbm_msm/sepolicy/file_contexts
@@ -0,0 +1,11 @@
+/vendor/bin/hw/android\.hardware\.graphics\.allocator-service\.minigbm u:object_r:hal_graphics_allocator_default_exec:s0
+/vendor/bin/hw/android\.hardware\.graphics\.allocator@4\.0-service\.minigbm u:object_r:hal_graphics_allocator_default_exec:s0
+/vendor/bin/hw/android\.hardware\.graphics\.allocator@4\.0-service\.minigbm_msm u:object_r:hal_graphics_allocator_default_exec:s0
+
+/vendor/lib(64)?/libminigbm_gralloc.so u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/libminigbm_gralloc4_utils.so u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/libminigbm_gralloc_msm\.so u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/hw/android\.hardware\.graphics\.mapper@4\.0-impl\.minigbm\.so u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/hw/android\.hardware\.graphics\.mapper@4\.0-impl\.minigbm_msm\.so u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/hw/gralloc\.minigbm_msm\.so u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/hw/mapper\.minigbm\.so u:object_r:same_process_hal_file:s0
diff --git a/shared/graphics/minigbm_msm/sepolicy/minigbm_debug.te b/shared/graphics/minigbm_msm/sepolicy/minigbm_debug.te
new file mode 100644
index 0000000..fef3164
--- /dev/null
+++ b/shared/graphics/minigbm_msm/sepolicy/minigbm_debug.te
@@ -0,0 +1,33 @@
+vendor_public_prop(vendor_minigbm_debug_prop)
+set_prop(vendor_init, vendor_minigbm_debug_prop)
+
+#
+# audit2allow
+#
+
+#============= bootanim ==============
+allow bootanim vendor_minigbm_debug_prop:file { getattr map open read };
+
+#============= hal_graphics_allocator_default ==============
+allow hal_graphics_allocator_default vendor_minigbm_debug_prop:file { getattr map open read };
+
+#============= hal_graphics_composer_default ==============
+allow hal_graphics_composer_default vendor_minigbm_debug_prop:file { getattr map open read };
+
+#============= platform_app ==============
+allow platform_app vendor_minigbm_debug_prop:file { getattr map open read };
+
+#============= priv_app ==============
+allow priv_app vendor_minigbm_debug_prop:file { getattr map open read };
+
+#============= surfaceflinger ==============
+allow surfaceflinger vendor_minigbm_debug_prop:file { getattr map open read };
+
+#============= system_app ==============
+allow system_app vendor_minigbm_debug_prop:file { getattr map open read };
+
+#============= system_server ==============
+allow system_server vendor_minigbm_debug_prop:file { getattr map open read };
+
+#============= untrusted_app_xx ==============
+allow appdomain -isolated_app_all vendor_minigbm_debug_prop:file { getattr map open read };
diff --git a/shared/graphics/minigbm_msm/sepolicy/property_contexts b/shared/graphics/minigbm_msm/sepolicy/property_contexts
new file mode 100644
index 0000000..f6a7d01
--- /dev/null
+++ b/shared/graphics/minigbm_msm/sepolicy/property_contexts
@@ -0,0 +1 @@
+vendor.minigbm.debug u:object_r:vendor_minigbm_debug_prop:s0
diff --git a/shared/graphics/swangle/device.mk b/shared/graphics/swangle/device.mk
new file mode 100644
index 0000000..6f85a0e
--- /dev/null
+++ b/shared/graphics/swangle/device.mk
@@ -0,0 +1,52 @@
+#
+# Copyright (C) 2014 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.
+#
+
+# TODO(b/65201432): Swiftshader needs to create executable memory.
+PRODUCT_REQUIRES_INSECURE_EXECMEM_FOR_SWIFTSHADER := true
+
+# ANGLE provides an OpenGL implementation built on top of Vulkan.
+PRODUCT_PACKAGES := \
+ libEGL_angle \
+ libGLESv1_CM_angle \
+ libGLESv2_angle
+
+PRODUCT_VENDOR_PROPERTIES := \
+ ro.hardware.egl=angle \
+
+PRODUCT_PROPERTY_OVERRIDES := \
+ ro.sf.lcd_density=160 \
+ ro.opengles.version=196608 \
+ persist.demo.rotationlock=1
+
+PRODUCT_COPY_FILES := \
+ frameworks/native/data/etc/android.hardware.opengles.aep.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.opengles.aep.xml \
+ frameworks/native/data/etc/android.software.opengles.deqp.level-2022-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.opengles.deqp.level.xml
+
+# Vulkan
+TARGET_VULKAN_SUPPORT := true
+TARGET_USES_VULKAN := true
+
+PRODUCT_PACKAGES += vulkan.pastel
+
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute.xml \
+ frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \
+ frameworks/native/data/etc/android.hardware.vulkan.version-1_1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \
+ frameworks/native/data/etc/android.software.vulkan.deqp.level-2021-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml
+
+PRODUCT_VENDOR_PROPERTIES += \
+ debug.hwui.renderer=skiagl \
+ ro.hardware.vulkan=pastel
diff --git a/shared/graphics/swangle/sepolicy/file_contexts b/shared/graphics/swangle/sepolicy/file_contexts
new file mode 100644
index 0000000..472f013
--- /dev/null
+++ b/shared/graphics/swangle/sepolicy/file_contexts
@@ -0,0 +1,5 @@
+/vendor/lib(64)?/hw/vulkan.pastel.so u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/libEGL_angle\.so u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/libGLESv1_CM_angle\.so u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/libGLESv2_angle\.so u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/libfeature_support_angle\.so u:object_r:same_process_hal_file:s0
diff --git a/shared/graphics/swangle/sepolicy/sw_execmem.te b/shared/graphics/swangle/sepolicy/sw_execmem.te
new file mode 100644
index 0000000..0844c3c
--- /dev/null
+++ b/shared/graphics/swangle/sepolicy/sw_execmem.te
@@ -0,0 +1,5 @@
+# TODO(b/65201432): Swiftshader needs to create executable memory.
+allow bootanim self:process execmem;
+allow surfaceflinger self:process execmem;
+allow system_server self:process execmem;
+allow zygote self:process execmem;
diff --git a/shared/utils/bdaddr/Android.bp b/shared/utils/bdaddr/Android.bp
new file mode 100644
index 0000000..fe1eb29
--- /dev/null
+++ b/shared/utils/bdaddr/Android.bp
@@ -0,0 +1,28 @@
+//
+// Copyright (C) 2023 The Android Open-Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_binary {
+ name: "bdaddr",
+ relative_install_path: "hw",
+ vendor: true,
+
+ srcs: ["bdaddr.c"],
+ shared_libs: ["liblog"],
+ init_rc: ["bdaddr.rc"],
+}
diff --git a/shared/utils/bdaddr/bdaddr.c b/shared/utils/bdaddr/bdaddr.c
new file mode 100644
index 0000000..d71fcfc
--- /dev/null
+++ b/shared/utils/bdaddr/bdaddr.c
@@ -0,0 +1,215 @@
+/*
+ * Copyright 2023 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 LOG_TAG "bdaddr"
+
+#include <stdint.h>
+#include <errno.h>
+#include <string.h>
+#include <stdio.h>
+#include <sys/socket.h>
+#include <log/log.h>
+
+#define HCI_DEV_NONE 0xffff
+#define HCI_CHANNEL_CONTROL 3
+#define BTPROTO_HCI 1
+
+struct sockaddr_hci {
+ sa_family_t hci_family;
+ uint16_t hci_dev;
+ uint16_t hci_channel;
+};
+
+#define BTMGMT_CMD_READ_CONFIG_INFO 0x0037
+#define BTMGMT_CMD_SET_PUBLIC_ADDR 0x0039
+#define BTMGMT_EV_CMD_COMPLETE 0x0001
+#define BTMGMT_EV_CMD_STATUS 0x0002
+#define BTMGMT_EV_UNCONF_INDEX_ADDED 0x001d
+#define BTMGMT_OPT_PUBLIC_ADDRESS (1 << 1)
+#define BTMGMT_ERR_INVALID_INDEX 0x11
+
+struct btmgmt_hdr {
+ uint16_t cmd;
+ uint16_t id;
+ uint16_t len;
+} __attribute__((packed));
+
+struct btmgmt_cmd_set_public_addr {
+ struct btmgmt_hdr hdr;
+ uint8_t addr[6];
+} __attribute__((packed));
+
+struct btmgmt_ev_cmd_status {
+ struct btmgmt_hdr hdr;
+ uint16_t cmd;
+ uint8_t status;
+} __attribute__((packed));
+
+struct btmgmt_ev_cc_config_info {
+ struct btmgmt_ev_cmd_status ev;
+ uint16_t manufacturer;
+ uint32_t supported_options;
+ uint32_t missing_options;
+} __attribute__((packed));
+
+// TODO: Make this configurable
+#define HCI_CONTROLLER 0
+
+#define MAC_ADDRESS_SIZE 6
+#define MAC_ADDRESS_LENGTH (MAC_ADDRESS_SIZE*2 + MAC_ADDRESS_SIZE-1)
+#define MAC_ADDRESS_FORMAT "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx"
+#define MAC_ADDRESS_ARGS(addr) \
+ (addr)[5], (addr)[4], (addr)[3], (addr)[2], (addr)[1], (addr)[0]
+
+#define MESSAGE_BUFFER 512
+
+static int btmgmt_connect() {
+ int s = socket(PF_BLUETOOTH, SOCK_RAW | SOCK_CLOEXEC, BTPROTO_HCI);
+ if (s < 0)
+ return -1;
+
+ struct sockaddr_hci addr = {
+ .hci_family = AF_BLUETOOTH,
+ .hci_dev = HCI_DEV_NONE,
+ .hci_channel = HCI_CHANNEL_CONTROL,
+ };
+ if (bind(s, (struct sockaddr*) &addr, sizeof(addr)) < 0) {
+ close(s);
+ return -1;
+ }
+
+ return s;
+}
+
+static void btmgmt_request_config_info(int s) {
+ struct btmgmt_hdr cmd = {
+ .cmd = BTMGMT_CMD_READ_CONFIG_INFO,
+ .id = HCI_CONTROLLER,
+ .len = 0,
+ };
+
+ if (write(s, &cmd, sizeof(cmd)) < 0) {
+ ALOGE("Failed to request controller configuration information: %s",
+ strerror(errno));
+ }
+}
+
+static void btmgmt_set_public_addr(int s, const uint8_t bdaddr[MAC_ADDRESS_SIZE]) {
+ struct btmgmt_cmd_set_public_addr cmd = {
+ .hdr = {
+ .cmd = BTMGMT_CMD_SET_PUBLIC_ADDR,
+ .id = HCI_CONTROLLER,
+ .len = sizeof(cmd) - sizeof(cmd.hdr),
+ },
+ };
+ memcpy(cmd.addr, bdaddr, sizeof(cmd.addr));
+
+ if (write(s, &cmd, sizeof(cmd)) != sizeof(cmd)) {
+ ALOGE("Failed to write set public address command: %s", strerror(errno));
+ }
+}
+
+static void btmgmt_complete_set_public_addr(struct btmgmt_ev_cmd_status* ev,
+ const uint8_t bdaddr[MAC_ADDRESS_SIZE]) {
+ if (ev->status == 0) {
+ ALOGI("Updated public address to " MAC_ADDRESS_FORMAT,
+ MAC_ADDRESS_ARGS(bdaddr));
+ } else {
+ ALOGE("Failed to update public address to " MAC_ADDRESS_FORMAT
+ ": error 0x%x", MAC_ADDRESS_ARGS(bdaddr), ev->status);
+ }
+}
+
+static bool btmgmt_config_needs_public_addr(struct btmgmt_ev_cmd_status* ev) {
+ struct btmgmt_ev_cc_config_info* info = (struct btmgmt_ev_cc_config_info*) ev;
+ if (info->ev.status) {
+ if (info->ev.status != BTMGMT_ERR_INVALID_INDEX)
+ ALOGE("Failed to read controller configuration information: 0x%x",
+ info->ev.status);
+ return false;
+ }
+
+ if (info->ev.hdr.cmd != BTMGMT_EV_CMD_COMPLETE
+ || info->ev.hdr.len < sizeof(*info) - sizeof(info->ev.hdr))
+ return false;
+
+ if (info->missing_options & BTMGMT_OPT_PUBLIC_ADDRESS) {
+ return true;
+ } else {
+ ALOGD("Controller is already configured with a public address");
+ return false;
+ }
+}
+
+int main(int argc, char* argv[]) {
+ if (argc < 2) {
+ ALOGE("Usage: bdaddr <bdaddr>");
+ return 1;
+ }
+
+ uint8_t bdaddr[MAC_ADDRESS_SIZE];
+ if (strlen(argv[1]) != MAC_ADDRESS_LENGTH
+ || sscanf(argv[1], MAC_ADDRESS_FORMAT,
+ &bdaddr[5], &bdaddr[4], &bdaddr[3],
+ &bdaddr[2], &bdaddr[1], &bdaddr[0]) != MAC_ADDRESS_SIZE) {
+ ALOGE("Invalid MAC address: %s", argv[1]);
+ return 1;
+ }
+
+ int s = btmgmt_connect();
+ if (s < 0) {
+ ALOGE("Failed to create Bluetooth management socket: %s", strerror(errno));
+ return 1;
+ }
+
+ btmgmt_request_config_info(s);
+
+ char buf[MESSAGE_BUFFER];
+ struct btmgmt_hdr* hdr = (struct btmgmt_hdr*) buf;
+ struct btmgmt_ev_cmd_status* ev = (struct btmgmt_ev_cmd_status*) hdr;
+
+ while (true) {
+ ssize_t len = read(s, buf, sizeof(buf));
+ if (len < (ssize_t) sizeof(struct btmgmt_hdr))
+ continue;
+ if (len < (ssize_t) sizeof(struct btmgmt_hdr) + hdr->len)
+ continue;
+ if (hdr->id != HCI_CONTROLLER)
+ continue;
+
+ switch (hdr->cmd) {
+ case BTMGMT_EV_CMD_COMPLETE:
+ case BTMGMT_EV_CMD_STATUS:
+ if (hdr->len < sizeof(*ev) - sizeof(hdr))
+ continue;
+
+ switch (ev->cmd) {
+ case BTMGMT_CMD_READ_CONFIG_INFO:
+ if (btmgmt_config_needs_public_addr(ev))
+ btmgmt_set_public_addr(s, bdaddr);
+ break;
+ case BTMGMT_CMD_SET_PUBLIC_ADDR:
+ btmgmt_complete_set_public_addr(ev, bdaddr);
+ break;
+ }
+
+ break;
+ case BTMGMT_EV_UNCONF_INDEX_ADDED:
+ btmgmt_request_config_info(s);
+ break;
+ }
+ }
+}
diff --git a/shared/utils/bdaddr/bdaddr.rc b/shared/utils/bdaddr/bdaddr.rc
new file mode 100644
index 0000000..d6edb64
--- /dev/null
+++ b/shared/utils/bdaddr/bdaddr.rc
@@ -0,0 +1,22 @@
+#
+# Copyright (C) 2023 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.
+#
+
+service set_bdaddr /vendor/bin/set_bdaddr.sh
+ class core
+ user root
+ group system
+ capabilities NET_ADMIN
+ oneshot
diff --git a/shared/utils/bdaddr/set_bdaddr.sh b/shared/utils/bdaddr/set_bdaddr.sh
new file mode 100644
index 0000000..e59fa39
--- /dev/null
+++ b/shared/utils/bdaddr/set_bdaddr.sh
@@ -0,0 +1,40 @@
+#! /vendor/bin/sh
+# Set Bluetooth address (BT_ADDR).
+
+#
+# Copyright (C) 2023 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.
+#
+
+# Get the unique board serial number from /proc/cmdline or
+# /proc/bootconfig, prepend '0's to the serial number to
+# fill 5 LSBs of the BT address and prepend "C0" as MSB to
+# prepare a 6 byte Bluetooth Random Static Address. Reference:
+# https://www.bluetooth.com/wp-content/uploads/2022/05/Bluetooth_LE_Primer_Paper.pdf [Page 23]
+#
+# Format the output in xx:xx:xx:xx:xx:xx format for the
+# "bdaddr" command to work.
+
+BTADDR=`/vendor/bin/cat /proc/cmdline | /vendor/bin/grep -o serialno.* |\
+ /vendor/bin/cut -f2 -d'=' | /vendor/bin/awk '{printf("c0%010s\n", $1)}' |\
+ /vendor/bin/sed 's/\(..\)/\1:/g' | /vendor/bin/sed '$s/:$//'`
+if [ -z "${BTADDR}" ]
+then
+ BTADDR=`/vendor/bin/cat /proc/bootconfig | /vendor/bin/grep -o serialno.* |\
+ /vendor/bin/cut -f2 -d'=' | /vendor/bin/cut -c 3-10 |\
+ /vendor/bin/awk '{printf("c0%010s\n", $1)}' |\
+ /vendor/bin/sed 's/\(..\)/\1:/g' | /vendor/bin/sed '$s/:$//'`
+fi
+
+/vendor/bin/hw/bdaddr "${BTADDR}"
diff --git a/shared/utils/dlkm_loader/BoardConfig.mk b/shared/utils/dlkm_loader/BoardConfig.mk
new file mode 100644
index 0000000..3028b37
--- /dev/null
+++ b/shared/utils/dlkm_loader/BoardConfig.mk
@@ -0,0 +1,7 @@
+# system_dlkm partition
+BOARD_USES_SYSTEM_DLKMIMAGE := true
+BOARD_SYSTEM_DLKMIMAGE_FILE_SYSTEM_TYPE := erofs
+TARGET_COPY_OUT_SYSTEM_DLKM := system_dlkm
+BOARD_USES_VENDOR_DLKMIMAGE := true
+BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE := erofs
+TARGET_COPY_OUT_VENDOR_DLKM := vendor_dlkm
diff --git a/shared/utils/dlkm_loader/device.mk b/shared/utils/dlkm_loader/device.mk
new file mode 100644
index 0000000..d4df84c
--- /dev/null
+++ b/shared/utils/dlkm_loader/device.mk
@@ -0,0 +1,11 @@
+AB_OTA_PARTITIONS += system_dlkm vendor_dlkm
+PRODUCT_PACKAGES += dlkm_loader
+
+# List of modules that should not load automatically
+ifeq ($(TARGET_SDCARD_BOOT), true)
+PRODUCT_COPY_FILES += \
+ device/linaro/dragonboard/shared/utils/dlkm_loader/vendor_ramdisk.modules.blocklist:$(TARGET_COPY_OUT_RAMDISK)/lib/modules/modules.blocklist
+else
+PRODUCT_COPY_FILES += \
+ device/linaro/dragonboard/shared/utils/dlkm_loader/vendor_ramdisk.modules.blocklist:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/lib/modules/modules.blocklist
+endif
diff --git a/shared/utils/dlkm_loader/dlkm_loader.rc b/shared/utils/dlkm_loader/dlkm_loader.rc
new file mode 100644
index 0000000..b1e2c41
--- /dev/null
+++ b/shared/utils/dlkm_loader/dlkm_loader.rc
@@ -0,0 +1,17 @@
+on early-init
+ # start module load in the background
+ start vendor.dlkm_loader
+ # load "leaf" GKI modules
+ exec u:r:modprobe:s0 -- /system/bin/modprobe -a -d /system/lib/modules zram.ko
+ exec u:r:modprobe:s0 -- /system/bin/modprobe -a -d /system/lib/modules hci_uart.ko
+ # led-class-multicolor.ko as found in android14-5.15 but missing in android13-5.15
+ exec u:r:modprobe:s0 -- /system/bin/modprobe -a -d /system/lib/modules led-class-multicolor.ko
+ # regmap-spmi.ko as found in android13-5.15 but missing in android14-5.15
+ exec u:r:modprobe:s0 -- /system/bin/modprobe -a -d /system/lib/modules regmap-spmi.ko
+
+service vendor.dlkm_loader /vendor/bin/dlkm_loader
+ class main
+ user root
+ group root system
+ disabled
+ oneshot
diff --git a/shared/utils/dlkm_loader/sepolicy/dlkm_loader.te b/shared/utils/dlkm_loader/sepolicy/dlkm_loader.te
new file mode 100644
index 0000000..e6fd7c3
--- /dev/null
+++ b/shared/utils/dlkm_loader/sepolicy/dlkm_loader.te
@@ -0,0 +1,36 @@
+type dlkm_loader, domain;
+type dlkm_loader_exec, exec_type, vendor_file_type, file_type;
+init_daemon_domain(dlkm_loader)
+
+# Allow insmod on vendor, system and system_dlkm partitions
+allow dlkm_loader self:capability net_admin;
+allow dlkm_loader self:capability sys_module;
+allow dlkm_loader system_dlkm_file:dir r_dir_perms;
+allow dlkm_loader system_dlkm_file:file r_file_perms;
+allow dlkm_loader system_dlkm_file:system module_load;
+allow dlkm_loader system_file:system module_load;
+allow dlkm_loader vendor_file:system module_load;
+
+# needed for libmodprobe to read kernel commandline
+allow dlkm_loader proc_bootconfig:file r_file_perms;
+allow dlkm_loader proc_cmdline:file r_file_perms;
+
+# Needed because CONFIG_USB_DUMMY_HCD adds some additional logic to
+# finit_module() syscall, causing that syscall to create/update keyrings.
+# Once we remove CONFIG_USB_DUMMY_HCD config, self:key write permission can be
+# removed.
+allow dlkm_loader self:key write;
+
+# Needed because CONFIG_DMABUF_HEAPS_DEFERRED_FREE calls sched_set_normal()
+# in its module_init() function, which is attributed to dlkm_loader.
+allow dlkm_loader kernel:process setsched;
+allow dlkm_loader self:capability sys_nice;
+
+# Allow writing to kernel log
+allow dlkm_loader kmsg_device:chr_file rw_file_perms;
+
+# dlkm_loader searches tracefs while looking for modules
+dontaudit dlkm_loader debugfs_bootreceiver_tracing:dir search;
+dontaudit dlkm_loader debugfs_mm_events_tracing:dir search;
+
+set_prop(dlkm_loader, vendor_device_prop)
diff --git a/shared/utils/dlkm_loader/sepolicy/file_contexts b/shared/utils/dlkm_loader/sepolicy/file_contexts
new file mode 100644
index 0000000..a345de9
--- /dev/null
+++ b/shared/utils/dlkm_loader/sepolicy/file_contexts
@@ -0,0 +1 @@
+/vendor/bin/dlkm_loader u:object_r:dlkm_loader_exec:s0
diff --git a/shared/utils/dlkm_loader/sepolicy/property.te b/shared/utils/dlkm_loader/sepolicy/property.te
new file mode 100644
index 0000000..50f7b34
--- /dev/null
+++ b/shared/utils/dlkm_loader/sepolicy/property.te
@@ -0,0 +1 @@
+vendor_internal_prop(vendor_device_prop)
diff --git a/shared/utils/dlkm_loader/sepolicy/property_contexts b/shared/utils/dlkm_loader/sepolicy/property_contexts
new file mode 100644
index 0000000..2a347b3
--- /dev/null
+++ b/shared/utils/dlkm_loader/sepolicy/property_contexts
@@ -0,0 +1 @@
+vendor.dlkm.modules.ready u:object_r:vendor_device_prop:s0 exact bool
diff --git a/shared/utils/dlkm_loader/vendor.modules.list.mk b/shared/utils/dlkm_loader/vendor.modules.list.mk
new file mode 100644
index 0000000..f28f618
--- /dev/null
+++ b/shared/utils/dlkm_loader/vendor.modules.list.mk
@@ -0,0 +1,231 @@
+VENDOR_DLKM_KERNEL_MODULES_LIST := \
+ ath10k_core.ko \
+ ath10k_pci.ko \
+ ath10k_snoc.ko \
+ ath11k_ahb.ko \
+ ath11k.ko \
+ ath11k_pci.ko \
+ ath.ko \
+ clk-spmi-pmic-div.ko \
+ cqhci.ko \
+ gpu-sched.ko \
+ lmh.ko \
+ lontium-lt9611.ko \
+ lontium-lt9611uxc.ko \
+ mcp251xfd.ko \
+ michael_mic.ko \
+ msm.ko \
+ nvmem_qfprom.ko \
+ qcom-pon.ko \
+ qcom_q6v5_mss.ko \
+ qcom_q6v5_pas.ko \
+ qcom_q6v5_wcss.ko \
+ qcom-spmi-adc5.ko \
+ qcom-spmi-adc-tm5.ko \
+ qcom-spmi-pmic.ko \
+ qcom_spmi-regulator.ko \
+ qcom-spmi-temp-alarm.ko \
+ qcom_tsens.ko \
+ reboot-mode.ko \
+ sdhci-msm.ko \
+ syscon-reboot-mode.ko \
+ system_heap.ko \
+ videocc-sdm845.ko \
+ videocc-sm8250.ko
+
+VENDOR_RAMDISK_KERNEL_MODULES_LIST := \
+ apr.ko \
+ arm_smmu.ko \
+ bam_dma.ko \
+ clk-qcom.ko \
+ clk-rpmh.ko \
+ cmd-db.ko \
+ dispcc-sdm845.ko \
+ dispcc-sm8250.ko \
+ display-connector.ko \
+ extcon-usb-gpio.ko \
+ fastrpc.ko \
+ gcc-sdm845.ko \
+ gcc-sm8250.ko \
+ gpio-regulator.ko \
+ gpio-wcd934x.ko \
+ gpucc-sdm845.ko \
+ gpucc-sm8250.ko \
+ i2c-designware-core.ko \
+ i2c-designware-platform.ko \
+ i2c-dev.ko \
+ i2c-mux.ko \
+ i2c-mux-pca954x.ko \
+ i2c-qcom-geni.ko \
+ i2c-qup.ko \
+ i2c-rk3x.ko \
+ icc-bcm-voter.ko \
+ icc-osm-l3.ko \
+ icc-rpmh.ko \
+ llcc-qcom.ko \
+ lpass-gfm-sm8250.ko \
+ mdt_loader.ko \
+ mhi.ko \
+ msm_serial.ko \
+ ohci-hcd.ko \
+ ohci-pci.ko \
+ ohci-platform.ko \
+ pdr_interface.ko \
+ phy-qcom-qusb2.ko \
+ phy-qcom-snps-femto-v2.ko \
+ phy-qcom-usb-hs.ko \
+ pinctrl-lpass-lpi.ko \
+ pinctrl-msm.ko \
+ pinctrl-sdm845.ko \
+ pinctrl-sm8250.ko \
+ pinctrl-spmi-gpio.ko \
+ pinctrl-spmi-mpp.ko \
+ pm8916_wdt.ko \
+ pm8941-pwrkey.ko \
+ q6adm.ko \
+ q6afe-clocks.ko \
+ q6afe-dai.ko \
+ q6afe.ko \
+ q6asm-dai.ko \
+ q6asm.ko \
+ q6core.ko \
+ q6routing.ko \
+ qcom_aoss.ko \
+ qcom-apcs-ipc-mailbox.ko \
+ qcom_common.ko \
+ qcom-cpufreq-hw.ko \
+ qcom_glink.ko \
+ qcom_glink_rpm.ko \
+ qcom_glink_smem.ko \
+ qcom_hwspinlock.ko \
+ qcom-ipcc.ko \
+ qcom-pdc.ko \
+ qcom_pil_info.ko \
+ qcom_q6v5_adsp.ko \
+ qcom_q6v5.ko \
+ qcom_rpmh.ko \
+ qcom-rpmh-regulator.ko \
+ qcom-scm.ko \
+ qcom_smd.ko \
+ qcom_sysmon.ko \
+ qcom_usb_vbus-regulator.ko \
+ qcom-vadc-common.ko \
+ qcom-wdt.ko \
+ qmi_helpers.ko \
+ qnoc-sdm845.ko \
+ qnoc-sm8250.ko \
+ qrtr.ko \
+ qrtr-mhi.ko \
+ qrtr-smd.ko \
+ qrtr-tun.ko \
+ regmap-sdw.ko \
+ regmap-slimbus.ko \
+ reset-qcom-aoss.ko \
+ reset-qcom-pdc.ko \
+ rmtfs_mem.ko \
+ rpmhpd.ko \
+ rpmsg_ns.ko \
+ rtc-pm8xxx.ko \
+ slim-qcom-ngd-ctrl.ko \
+ slimbus.ko \
+ smem.ko \
+ smp2p.ko \
+ smsm.ko \
+ snd-soc-dmic.ko \
+ snd-soc-hdmi-codec.ko \
+ snd-soc-lpass-va-macro.ko \
+ snd-soc-lpass-wsa-macro.ko \
+ snd-soc-max98927.ko \
+ snd-soc-qcom-common.ko \
+ snd-soc-rl6231.ko \
+ snd-soc-rt5663.ko \
+ snd-soc-sdm845.ko \
+ snd-soc-sm8250.ko \
+ snd-soc-wcd9335.ko \
+ snd-soc-wcd934x.ko \
+ snd-soc-wcd-mbhc.ko \
+ snd-soc-wsa881x.ko \
+ socinfo.ko \
+ soundwire-bus.ko \
+ soundwire-qcom.ko \
+ spmi-pmic-arb.ko \
+ spi-geni-qcom.ko \
+ spi-pl022.ko \
+ spi-qcom-qspi.ko \
+ spi-qup.ko \
+ ulpi.ko \
+ wcd934x.ko
+
+ifeq ($(TARGET_KERNEL_USE),5.15)
+VENDOR_DLKM_KERNEL_MODULES_LIST += \
+ qcom-pmic-typec.ko
+
+VENDOR_RAMDISK_KERNEL_MODULES_LIST += \
+ phy-qcom-qmp.ko \
+ q6dsp-common.ko \
+ ufs_qcom.ko
+endif
+
+ifeq ($(TARGET_KERNEL_USE),6.1)
+VENDOR_DLKM_KERNEL_MODULES_LIST += \
+ leds-qcom-lpg.ko \
+ qcom-pmic-typec.ko \
+ qnoc-sm8450.ko
+
+VENDOR_RAMDISK_KERNEL_MODULES_LIST += \
+ cpr.ko \
+ drm_display_helper.ko \
+ drm_dp_aux_bus.ko \
+ gcc-sm8450.ko \
+ gpi.ko \
+ phy-qcom-qmp-combo.ko \
+ phy-qcom-qmp-pcie.ko \
+ phy-qcom-qmp-pcie-msm8996.ko \
+ phy-qcom-qmp-ufs.ko \
+ phy-qcom-qmp-usb.ko \
+ pinctrl-sm8250-lpass-lpi.ko \
+ pinctrl-sm8450.ko \
+ q6apm-dai.ko \
+ q6apm-lpass-dais.ko \
+ q6prm-clocks.ko \
+ q6prm.ko \
+ snd-q6apm.ko \
+ snd-q6dsp-common.ko \
+ snd-soc-lpass-macro-common.ko \
+ snd-soc-qcom-sdw.ko \
+ spm.ko \
+ ufs_qcom.ko
+endif
+
+ifeq ($(TARGET_KERNEL_USE),6.6)
+VENDOR_DLKM_KERNEL_MODULES_LIST += \
+ leds-qcom-lpg.ko \
+ qcom_pmic_tcpm.ko \
+ qnoc-sm8450.ko
+
+VENDOR_RAMDISK_KERNEL_MODULES_LIST += \
+ cpr.ko \
+ drm_display_helper.ko \
+ drm_dp_aux_bus.ko \
+ gcc-sm8450.ko \
+ gpi.ko \
+ phy-qcom-qmp-combo.ko \
+ phy-qcom-qmp-pcie.ko \
+ phy-qcom-qmp-pcie-msm8996.ko \
+ phy-qcom-qmp-ufs.ko \
+ phy-qcom-qmp-usb.ko \
+ pinctrl-sm8250-lpass-lpi.ko \
+ pinctrl-sm8450.ko \
+ q6apm-dai.ko \
+ q6apm-lpass-dais.ko \
+ q6prm-clocks.ko \
+ q6prm.ko \
+ qcom_ice.ko \
+ snd-q6apm.ko \
+ snd-q6dsp-common.ko \
+ snd-soc-lpass-macro-common.ko \
+ snd-soc-qcom-sdw.ko \
+ snd-soc-wcd-classh.ko \
+ spm.ko \
+ ufs-qcom.ko
+endif
diff --git a/shared/utils/dlkm_loader/vendor_ramdisk.modules.blocklist b/shared/utils/dlkm_loader/vendor_ramdisk.modules.blocklist
new file mode 100644
index 0000000..2099643
--- /dev/null
+++ b/shared/utils/dlkm_loader/vendor_ramdisk.modules.blocklist
@@ -0,0 +1,4 @@
+# List of kernel modules that should not load automatically
+
+# ptp_kvm.ko should only load when the kvm hypervisor is available on the target
+blocklist ptp_kvm.ko
diff --git a/shared/utils/ethaddr/ethaddr.rc b/shared/utils/ethaddr/ethaddr.rc
new file mode 100644
index 0000000..f8fe430
--- /dev/null
+++ b/shared/utils/ethaddr/ethaddr.rc
@@ -0,0 +1,9 @@
+service set_ethaddr /vendor/bin/set_ethaddr.sh
+ class core
+ user root
+ group system
+ disabled
+ oneshot
+
+on post-fs-data
+ start set_ethaddr
diff --git a/shared/utils/ethaddr/set_ethaddr.sh b/shared/utils/ethaddr/set_ethaddr.sh
new file mode 100644
index 0000000..93cd08a
--- /dev/null
+++ b/shared/utils/ethaddr/set_ethaddr.sh
@@ -0,0 +1,25 @@
+#! /vendor/bin/sh
+# Set eth0 mac address.
+#
+# Get the unique board serial number from /proc/cmdline or
+# /proc/bootconfig, prepend '0's to the serial number to
+# fill 5 LSBs of the MAC address and prepend "02" as MSB to
+# prepare a 6 byte locally administered unicast MAC address.
+#
+# Format the output in xx:xx:xx:xx:xx:xx format for the "ip"
+# set address command to work.
+
+ETHADDR=`/vendor/bin/cat /proc/cmdline | /vendor/bin/grep -o serialno.* |\
+ /vendor/bin/cut -f2 -d'=' | /vendor/bin/awk '{printf("02%010s\n", $1)}' |\
+ /vendor/bin/sed 's/\(..\)/\1:/g' | /vendor/bin/sed '$s/:$//'`
+if [ -z "${ETHADDR}" ]
+then
+ ETHADDR=`/vendor/bin/cat /proc/bootconfig | /vendor/bin/grep -o serialno.* |\
+ /vendor/bin/cut -f2 -d'=' | /vendor/bin/cut -c 3-10 |\
+ /vendor/bin/awk '{printf("02%010s\n", $1)}' |\
+ /vendor/bin/sed 's/\(..\)/\1:/g' | /vendor/bin/sed '$s/:$//'`
+fi
+
+/vendor/bin/ifconfig eth0 down
+/vendor/bin/ifconfig eth0 hw ether "${ETHADDR}"
+/vendor/bin/ifconfig eth0 up
diff --git a/qcom/init.qcom.rc b/shared/utils/init.utils.rc
index 38d8d00..a17edfd 100644
--- a/qcom/init.qcom.rc
+++ b/shared/utils/init.utils.rc
@@ -26,7 +26,7 @@ service tqftpserv /vendor/bin/tqftpserv
disabled
oneshot
-service rmtfs /vendor/bin/rmtfs -o /dev/block/platform/soc@0/1d84000.ufshc/by-name -P -r -s
+service rmtfs /vendor/bin/rmtfs -o /dev/block/by-name -P -r -s
class core
user root
group system
diff --git a/qcom/pd-mapper/Android.bp b/shared/utils/pd-mapper/Android.bp
index 7e86231..7e86231 100644
--- a/qcom/pd-mapper/Android.bp
+++ b/shared/utils/pd-mapper/Android.bp
diff --git a/qcom/pd-mapper/LICENSE b/shared/utils/pd-mapper/LICENSE
index aa8cb35..aa8cb35 100644
--- a/qcom/pd-mapper/LICENSE
+++ b/shared/utils/pd-mapper/LICENSE
diff --git a/qcom/pd-mapper/Makefile b/shared/utils/pd-mapper/Makefile
index 908dbfd..908dbfd 100644
--- a/qcom/pd-mapper/Makefile
+++ b/shared/utils/pd-mapper/Makefile
diff --git a/qcom/pd-mapper/assoc.c b/shared/utils/pd-mapper/assoc.c
index 460f0d0..460f0d0 100644
--- a/qcom/pd-mapper/assoc.c
+++ b/shared/utils/pd-mapper/assoc.c
diff --git a/qcom/pd-mapper/assoc.h b/shared/utils/pd-mapper/assoc.h
index 25d00fa..25d00fa 100644
--- a/qcom/pd-mapper/assoc.h
+++ b/shared/utils/pd-mapper/assoc.h
diff --git a/qcom/pd-mapper/json.c b/shared/utils/pd-mapper/json.c
index e08afa4..e08afa4 100644
--- a/qcom/pd-mapper/json.c
+++ b/shared/utils/pd-mapper/json.c
diff --git a/qcom/pd-mapper/json.h b/shared/utils/pd-mapper/json.h
index 91790a0..91790a0 100644
--- a/qcom/pd-mapper/json.h
+++ b/shared/utils/pd-mapper/json.h
diff --git a/qcom/pd-mapper/pd-mapper.c b/shared/utils/pd-mapper/pd-mapper.c
index 376d9fe..376d9fe 100644
--- a/qcom/pd-mapper/pd-mapper.c
+++ b/shared/utils/pd-mapper/pd-mapper.c
diff --git a/qcom/pd-mapper/pd-mapper.service.in b/shared/utils/pd-mapper/pd-mapper.service.in
index 09b594b..09b594b 100644
--- a/qcom/pd-mapper/pd-mapper.service.in
+++ b/shared/utils/pd-mapper/pd-mapper.service.in
diff --git a/qcom/pd-mapper/servreg_loc.c b/shared/utils/pd-mapper/servreg_loc.c
index 6309498..6309498 100644
--- a/qcom/pd-mapper/servreg_loc.c
+++ b/shared/utils/pd-mapper/servreg_loc.c
diff --git a/qcom/pd-mapper/servreg_loc.h b/shared/utils/pd-mapper/servreg_loc.h
index 2ac5faa..2ac5faa 100644
--- a/qcom/pd-mapper/servreg_loc.h
+++ b/shared/utils/pd-mapper/servreg_loc.h
diff --git a/qcom/pd-mapper/servreg_loc.qmi b/shared/utils/pd-mapper/servreg_loc.qmi
index 4dc04e6..4dc04e6 100644
--- a/qcom/pd-mapper/servreg_loc.qmi
+++ b/shared/utils/pd-mapper/servreg_loc.qmi
diff --git a/qcom/qrtr/Android.bp b/shared/utils/qrtr/Android.bp
index 8103bb6..8103bb6 100644
--- a/qcom/qrtr/Android.bp
+++ b/shared/utils/qrtr/Android.bp
diff --git a/qcom/qrtr/LICENSE b/shared/utils/qrtr/LICENSE
index afbafbe..afbafbe 100644
--- a/qcom/qrtr/LICENSE
+++ b/shared/utils/qrtr/LICENSE
diff --git a/qcom/qrtr/Makefile b/shared/utils/qrtr/Makefile
index 036691c..036691c 100644
--- a/qcom/qrtr/Makefile
+++ b/shared/utils/qrtr/Makefile
diff --git a/qcom/qrtr/lib/libqrtr.h b/shared/utils/qrtr/lib/libqrtr.h
index 93254df..93254df 100644
--- a/qcom/qrtr/lib/libqrtr.h
+++ b/shared/utils/qrtr/lib/libqrtr.h
diff --git a/qcom/qrtr/lib/logging.c b/shared/utils/qrtr/lib/logging.c
index 0b0f103..0b0f103 100644
--- a/qcom/qrtr/lib/logging.c
+++ b/shared/utils/qrtr/lib/logging.c
diff --git a/qcom/qrtr/lib/logging.h b/shared/utils/qrtr/lib/logging.h
index 8372a8f..8372a8f 100644
--- a/qcom/qrtr/lib/logging.h
+++ b/shared/utils/qrtr/lib/logging.h
diff --git a/qcom/qrtr/lib/qmi.c b/shared/utils/qrtr/lib/qmi.c
index d217a2d..d217a2d 100644
--- a/qcom/qrtr/lib/qmi.c
+++ b/shared/utils/qrtr/lib/qmi.c
diff --git a/qcom/qrtr/lib/qrtr.c b/shared/utils/qrtr/lib/qrtr.c
index 96756ba..96756ba 100644
--- a/qcom/qrtr/lib/qrtr.c
+++ b/shared/utils/qrtr/lib/qrtr.c
diff --git a/qcom/qrtr/qrtr-ns.service.in b/shared/utils/qrtr/qrtr-ns.service.in
index eaa791a..eaa791a 100644
--- a/qcom/qrtr/qrtr-ns.service.in
+++ b/shared/utils/qrtr/qrtr-ns.service.in
diff --git a/qcom/qrtr/qrtr.py b/shared/utils/qrtr/qrtr.py
index ab6189a..ab6189a 100755
--- a/qcom/qrtr/qrtr.py
+++ b/shared/utils/qrtr/qrtr.py
diff --git a/qcom/qrtr/src/addr.c b/shared/utils/qrtr/src/addr.c
index 61417dd..61417dd 100644
--- a/qcom/qrtr/src/addr.c
+++ b/shared/utils/qrtr/src/addr.c
diff --git a/qcom/qrtr/src/addr.h b/shared/utils/qrtr/src/addr.h
index 524e335..524e335 100644
--- a/qcom/qrtr/src/addr.h
+++ b/shared/utils/qrtr/src/addr.h
diff --git a/qcom/qrtr/src/cfg.c b/shared/utils/qrtr/src/cfg.c
index 97a8352..97a8352 100644
--- a/qcom/qrtr/src/cfg.c
+++ b/shared/utils/qrtr/src/cfg.c
diff --git a/qcom/qrtr/src/hash.c b/shared/utils/qrtr/src/hash.c
index ecfbc0a..ecfbc0a 100644
--- a/qcom/qrtr/src/hash.c
+++ b/shared/utils/qrtr/src/hash.c
diff --git a/qcom/qrtr/src/hash.h b/shared/utils/qrtr/src/hash.h
index 5b004b5..5b004b5 100644
--- a/qcom/qrtr/src/hash.h
+++ b/shared/utils/qrtr/src/hash.h
diff --git a/qcom/qrtr/src/list.h b/shared/utils/qrtr/src/list.h
index 1d1c8e6..1d1c8e6 100644
--- a/qcom/qrtr/src/list.h
+++ b/shared/utils/qrtr/src/list.h
diff --git a/qcom/qrtr/src/lookup.c b/shared/utils/qrtr/src/lookup.c
index 80cf984..80cf984 100644
--- a/qcom/qrtr/src/lookup.c
+++ b/shared/utils/qrtr/src/lookup.c
diff --git a/qcom/qrtr/src/map.c b/shared/utils/qrtr/src/map.c
index eed3488..eed3488 100644
--- a/qcom/qrtr/src/map.c
+++ b/shared/utils/qrtr/src/map.c
diff --git a/qcom/qrtr/src/map.h b/shared/utils/qrtr/src/map.h
index de68e19..de68e19 100644
--- a/qcom/qrtr/src/map.h
+++ b/shared/utils/qrtr/src/map.h
diff --git a/qcom/qrtr/src/ns.c b/shared/utils/qrtr/src/ns.c
index 393cc68..393cc68 100644
--- a/qcom/qrtr/src/ns.c
+++ b/shared/utils/qrtr/src/ns.c
diff --git a/qcom/qrtr/src/ns.h b/shared/utils/qrtr/src/ns.h
index d661ac8..d661ac8 100644
--- a/qcom/qrtr/src/ns.h
+++ b/shared/utils/qrtr/src/ns.h
diff --git a/qcom/qrtr/src/util.c b/shared/utils/qrtr/src/util.c
index 48d9d27..48d9d27 100644
--- a/qcom/qrtr/src/util.c
+++ b/shared/utils/qrtr/src/util.c
diff --git a/qcom/qrtr/src/util.h b/shared/utils/qrtr/src/util.h
index 3f371cd..3f371cd 100644
--- a/qcom/qrtr/src/util.h
+++ b/shared/utils/qrtr/src/util.h
diff --git a/qcom/qrtr/src/waiter.c b/shared/utils/qrtr/src/waiter.c
index f21896f..f21896f 100644
--- a/qcom/qrtr/src/waiter.c
+++ b/shared/utils/qrtr/src/waiter.c
diff --git a/qcom/qrtr/src/waiter.h b/shared/utils/qrtr/src/waiter.h
index e311453..e311453 100644
--- a/qcom/qrtr/src/waiter.h
+++ b/shared/utils/qrtr/src/waiter.h
diff --git a/qcom/rmtfs/Android.bp b/shared/utils/rmtfs/Android.bp
index 82cf7e1..82cf7e1 100644
--- a/qcom/rmtfs/Android.bp
+++ b/shared/utils/rmtfs/Android.bp
diff --git a/qcom/rmtfs/LICENSE b/shared/utils/rmtfs/LICENSE
index 42c13e9..42c13e9 100644
--- a/qcom/rmtfs/LICENSE
+++ b/shared/utils/rmtfs/LICENSE
diff --git a/qcom/rmtfs/Makefile b/shared/utils/rmtfs/Makefile
index 54ae35f..54ae35f 100644
--- a/qcom/rmtfs/Makefile
+++ b/shared/utils/rmtfs/Makefile
diff --git a/qcom/rmtfs/qmi_rmtfs.c b/shared/utils/rmtfs/qmi_rmtfs.c
index bda2b78..bda2b78 100644
--- a/qcom/rmtfs/qmi_rmtfs.c
+++ b/shared/utils/rmtfs/qmi_rmtfs.c
diff --git a/qcom/rmtfs/qmi_rmtfs.h b/shared/utils/rmtfs/qmi_rmtfs.h
index 03cbc8f..03cbc8f 100644
--- a/qcom/rmtfs/qmi_rmtfs.h
+++ b/shared/utils/rmtfs/qmi_rmtfs.h
diff --git a/qcom/rmtfs/qmi_rmtfs.qmi b/shared/utils/rmtfs/qmi_rmtfs.qmi
index ca350d7..ca350d7 100644
--- a/qcom/rmtfs/qmi_rmtfs.qmi
+++ b/shared/utils/rmtfs/qmi_rmtfs.qmi
diff --git a/qcom/rmtfs/qmi_tlv.c b/shared/utils/rmtfs/qmi_tlv.c
index c6d8207..c6d8207 100644
--- a/qcom/rmtfs/qmi_tlv.c
+++ b/shared/utils/rmtfs/qmi_tlv.c
diff --git a/qcom/rmtfs/rmtfs.c b/shared/utils/rmtfs/rmtfs.c
index b3ed289..b3ed289 100644
--- a/qcom/rmtfs/rmtfs.c
+++ b/shared/utils/rmtfs/rmtfs.c
diff --git a/qcom/rmtfs/rmtfs.h b/shared/utils/rmtfs/rmtfs.h
index fa4b806..fa4b806 100644
--- a/qcom/rmtfs/rmtfs.h
+++ b/shared/utils/rmtfs/rmtfs.h
diff --git a/qcom/rmtfs/rmtfs.service.in b/shared/utils/rmtfs/rmtfs.service.in
index 8384043..8384043 100644
--- a/qcom/rmtfs/rmtfs.service.in
+++ b/shared/utils/rmtfs/rmtfs.service.in
diff --git a/qcom/rmtfs/rproc.c b/shared/utils/rmtfs/rproc.c
index 68dc3c9..68dc3c9 100644
--- a/qcom/rmtfs/rproc.c
+++ b/shared/utils/rmtfs/rproc.c
diff --git a/qcom/rmtfs/sharedmem.c b/shared/utils/rmtfs/sharedmem.c
index b6d3279..b6d3279 100644
--- a/qcom/rmtfs/sharedmem.c
+++ b/shared/utils/rmtfs/sharedmem.c
diff --git a/qcom/rmtfs/storage.c b/shared/utils/rmtfs/storage.c
index 107b296..107b296 100644
--- a/qcom/rmtfs/storage.c
+++ b/shared/utils/rmtfs/storage.c
diff --git a/qcom/rmtfs/util.c b/shared/utils/rmtfs/util.c
index 5ca5bba..5ca5bba 100644
--- a/qcom/rmtfs/util.c
+++ b/shared/utils/rmtfs/util.c
diff --git a/qcom/rmtfs/util.h b/shared/utils/rmtfs/util.h
index 3a9ec3e..3a9ec3e 100644
--- a/qcom/rmtfs/util.h
+++ b/shared/utils/rmtfs/util.h
diff --git a/shared/utils/sdcard-boot/fstab.mmc b/shared/utils/sdcard-boot/fstab.mmc
new file mode 100644
index 0000000..387a0cd
--- /dev/null
+++ b/shared/utils/sdcard-boot/fstab.mmc
@@ -0,0 +1,11 @@
+system /system erofs ro wait,logical,first_stage_mount,slotselect
+/dev/block/platform/soc@0/8804000.mmc/by-name/userdata /data ext4 discard,noatime,noauto_da_alloc,data=ordered,user_xattr,barrier=1,inlinecrypt latemount,wait,formattable,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,keydirectory=/metadata/vold/metadata_encryption,quota
+/dev/block/platform/soc@0/8804000.mmc/by-name/metadata /metadata ext4 noatime,nosuid,nodev,discard wait,formattable,first_stage_mount,check
+/dev/block/platform/soc@0/8804000.mmc/by-name/misc /misc emmc defaults defaults
+/devices/platform/soc@0/a8f8800.usb/*/usb* auto auto defaults voldmanaged=usb1:auto
+/devices/platform/soc@0/1c00000.pci/*/usb* auto auto defaults voldmanaged=usb2:auto
+vendor /vendor erofs ro wait,logical,first_stage_mount,slotselect
+system_ext /system_ext erofs ro wait,logical,first_stage_mount,slotselect
+product /product erofs ro wait,logical,first_stage_mount,slotselect
+system_dlkm /system_dlkm erofs ro wait,logical,first_stage_mount,slotselect
+vendor_dlkm /vendor_dlkm erofs ro wait,logical,first_stage_mount,slotselect
diff --git a/shared/utils/sdcard-boot/fstab.sdhci b/shared/utils/sdcard-boot/fstab.sdhci
new file mode 100644
index 0000000..c385ba6
--- /dev/null
+++ b/shared/utils/sdcard-boot/fstab.sdhci
@@ -0,0 +1,11 @@
+system /system erofs ro wait,logical,first_stage_mount,slotselect
+/dev/block/platform/soc@0/8804000.sdhci/by-name/userdata /data ext4 discard,noatime,noauto_da_alloc,data=ordered,user_xattr,barrier=1,inlinecrypt latemount,wait,formattable,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,keydirectory=/metadata/vold/metadata_encryption,quota
+/dev/block/platform/soc@0/8804000.sdhci/by-name/metadata /metadata ext4 noatime,nosuid,nodev,discard wait,formattable,first_stage_mount,check
+/dev/block/platform/soc@0/8804000.sdhci/by-name/misc /misc emmc defaults defaults
+/devices/platform/soc@0/a8f8800.usb/*/usb* auto auto defaults voldmanaged=usb1:auto
+/devices/platform/soc@0/1c00000.pci/*/usb* auto auto defaults voldmanaged=usb2:auto
+vendor /vendor erofs ro wait,logical,first_stage_mount,slotselect
+system_ext /system_ext erofs ro wait,logical,first_stage_mount,slotselect
+product /product erofs ro wait,logical,first_stage_mount,slotselect
+system_dlkm /system_dlkm erofs ro wait,logical,first_stage_mount,slotselect
+vendor_dlkm /vendor_dlkm erofs ro wait,logical,first_stage_mount,slotselect
diff --git a/shared/utils/sdcard-boot/sepolicy/file_contexts b/shared/utils/sdcard-boot/sepolicy/file_contexts
new file mode 100644
index 0000000..79d5de8
--- /dev/null
+++ b/shared/utils/sdcard-boot/sepolicy/file_contexts
@@ -0,0 +1,15 @@
+/dev/block/platform/soc@0/8804000\.mmc/by-name/fsc u:object_r:modem_block_device:s0
+/dev/block/platform/soc@0/8804000\.mmc/by-name/fsg u:object_r:modem_block_device:s0
+/dev/block/platform/soc@0/8804000\.mmc/by-name/modemst[12] u:object_r:modem_block_device:s0
+/dev/block/platform/soc@0/8804000\.mmc/by-name/metadata u:object_r:metadata_block_device:s0
+/dev/block/platform/soc@0/8804000\.mmc/by-name/super u:object_r:super_block_device:s0
+/dev/block/platform/soc@0/8804000\.mmc/by-name/userdata u:object_r:userdata_block_device:s0
+/dev/block/platform/soc@0/8804000\.mmc/by-name/misc u:object_r:misc_block_device:s0
+
+/dev/block/platform/soc@0/8804000\.sdhci/by-name/fsc u:object_r:modem_block_device:s0
+/dev/block/platform/soc@0/8804000\.sdhci/by-name/fsg u:object_r:modem_block_device:s0
+/dev/block/platform/soc@0/8804000\.sdhci/by-name/modemst[12] u:object_r:modem_block_device:s0
+/dev/block/platform/soc@0/8804000\.sdhci/by-name/metadata u:object_r:metadata_block_device:s0
+/dev/block/platform/soc@0/8804000\.sdhci/by-name/super u:object_r:super_block_device:s0
+/dev/block/platform/soc@0/8804000\.sdhci/by-name/userdata u:object_r:userdata_block_device:s0
+/dev/block/platform/soc@0/8804000\.sdhci/by-name/misc u:object_r:misc_block_device:s0
diff --git a/shared/utils/set_hw.sh b/shared/utils/set_hw.sh
new file mode 100644
index 0000000..305a345
--- /dev/null
+++ b/shared/utils/set_hw.sh
@@ -0,0 +1,34 @@
+#! /vendor/bin/sh
+# Set vendor.hw property to run device specific services
+#
+# grep the device name from /proc/device-tree/compatible
+
+HW=`/vendor/bin/cat /proc/device-tree/compatible | /vendor/bin/grep db845c`
+if [ -n "${HW}" ]; then
+ setprop vendor.hw db845c
+ exit 0
+fi
+
+HW=`/vendor/bin/cat /proc/device-tree/compatible | /vendor/bin/grep rb5`
+if [ -n "${HW}" ]; then
+ setprop vendor.hw rb5
+ exit 0
+fi
+
+HW=`/vendor/bin/cat /proc/device-tree/compatible | /vendor/bin/grep sm8550-hdk`
+if [ -n "${HW}" ]; then
+ setprop vendor.hw sm8550hdk
+ exit 0
+fi
+
+HW=`/vendor/bin/cat /proc/device-tree/compatible | /vendor/bin/grep sm8550-qrd`
+if [ -n "${HW}" ]; then
+ setprop vendor.hw sm8550qrd
+ exit 0
+fi
+
+HW=`/vendor/bin/cat /proc/device-tree/compatible | /vendor/bin/grep sm8650-qrd`
+if [ -n "${HW}" ]; then
+ setprop vendor.hw sm8650qrd
+ exit 0
+fi
diff --git a/qcom/set_udc.sh b/shared/utils/set_udc.sh
index 571c25d..571c25d 100755
--- a/qcom/set_udc.sh
+++ b/shared/utils/set_udc.sh
diff --git a/qcom/tqftpserv/Android.bp b/shared/utils/tqftpserv/Android.bp
index 248c323..248c323 100644
--- a/qcom/tqftpserv/Android.bp
+++ b/shared/utils/tqftpserv/Android.bp
diff --git a/qcom/tqftpserv/LICENSE b/shared/utils/tqftpserv/LICENSE
index cd92517..cd92517 100644
--- a/qcom/tqftpserv/LICENSE
+++ b/shared/utils/tqftpserv/LICENSE
diff --git a/qcom/tqftpserv/Makefile b/shared/utils/tqftpserv/Makefile
index 60ad687..60ad687 100644
--- a/qcom/tqftpserv/Makefile
+++ b/shared/utils/tqftpserv/Makefile
diff --git a/qcom/tqftpserv/list.h b/shared/utils/tqftpserv/list.h
index c3488e3..c3488e3 100644
--- a/qcom/tqftpserv/list.h
+++ b/shared/utils/tqftpserv/list.h
diff --git a/qcom/tqftpserv/tqftpserv.c b/shared/utils/tqftpserv/tqftpserv.c
index fa6e3c9..fa6e3c9 100644
--- a/qcom/tqftpserv/tqftpserv.c
+++ b/shared/utils/tqftpserv/tqftpserv.c
diff --git a/qcom/tqftpserv/tqftpserv.service.in b/shared/utils/tqftpserv/tqftpserv.service.in
index 2cf828c..2cf828c 100644
--- a/qcom/tqftpserv/tqftpserv.service.in
+++ b/shared/utils/tqftpserv/tqftpserv.service.in
diff --git a/qcom/tqftpserv/translate.c b/shared/utils/tqftpserv/translate.c
index 63161a0..63161a0 100644
--- a/qcom/tqftpserv/translate.c
+++ b/shared/utils/tqftpserv/translate.c
diff --git a/qcom/tqftpserv/translate.h b/shared/utils/tqftpserv/translate.h
index ade2d09..ade2d09 100644
--- a/qcom/tqftpserv/translate.h
+++ b/shared/utils/tqftpserv/translate.h
diff --git a/sm8x50/BoardConfig.mk b/sm8x50/BoardConfig.mk
new file mode 100644
index 0000000..4995b75
--- /dev/null
+++ b/sm8x50/BoardConfig.mk
@@ -0,0 +1,56 @@
+include device/linaro/dragonboard/BoardConfigCommon.mk
+
+# Primary Arch
+TARGET_ARCH := arm64
+TARGET_ARCH_VARIANT := armv9-a
+TARGET_CPU_VARIANT := kryo385
+TARGET_CPU_ABI := arm64-v8a
+
+# Board Information
+TARGET_BOOTLOADER_BOARD_NAME := sm8x50
+TARGET_BOARD_PLATFORM := sm8x50
+
+TARGET_NO_KERNEL := false
+BOARD_INCLUDE_DTB_IN_BOOTIMG := true
+BOARD_BOOT_HEADER_VERSION := 2 # XXX v4 is WIP
+BOARD_MKBOOTIMG_ARGS := --header_version $(BOARD_BOOT_HEADER_VERSION)
+
+BOARD_KERNEL_BASE := 0x80000000
+BOARD_KERNEL_PAGESIZE := 4096
+BOARD_KERNEL_CMDLINE += earlycon firmware_class.path=/vendor/firmware/
+BOARD_KERNEL_CMDLINE += init=/init printk.devkmsg=on
+BOARD_KERNEL_CMDLINE += deferred_probe_timeout=30
+BOARD_KERNEL_CMDLINE += qcom_geni_serial.con_enabled=1
+BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200n8
+BOARD_KERNEL_CMDLINE += allow_mismatched_32bit_el0 clk_ignore_unused pd_ignore_unused
+BOARD_KERNEL_CMDLINE += androidboot.boot_devices=soc@0/1d84000.ufs
+BOARD_KERNEL_CMDLINE += androidboot.hardware=sm8x50
+BOARD_KERNEL_CMDLINE += androidboot.verifiedbootstate=orange
+
+# Image Configuration
+BOARD_BOOTIMAGE_PARTITION_SIZE := 67108864 #64M
+BOARD_USERDATAIMAGE_PARTITION_SIZE := 223226966016 #200+G
+BOARD_FLASH_BLOCK_SIZE := 131072
+# Super partition
+BOARD_SUPER_PARTITION_SIZE := 6442450944 #6GB
+BOARD_DB_DYNAMIC_PARTITIONS_SIZE := 6438256640 # Reserve 4M for DAP metadata
+BOARD_SUPER_PARTITION_METADATA_DEVICE := super
+BOARD_SUPER_IMAGE_IN_UPDATE_PACKAGE := true
+BOARD_DB_DYNAMIC_PARTITIONS_PARTITION_LIST := system vendor system_ext product
+
+# Platform specific sepolicies
+BOARD_SEPOLICY_DIRS += device/linaro/dragonboard/sm8x50/sepolicy/
+
+# dlkm partitions
+include device/linaro/dragonboard/shared/utils/dlkm_loader/BoardConfig.mk
+BOARD_DB_DYNAMIC_PARTITIONS_PARTITION_LIST += system_dlkm vendor_dlkm
+BOARD_SEPOLICY_DIRS += device/linaro/dragonboard/shared/utils/dlkm_loader/sepolicy/
+
+# Graphics
+include device/linaro/dragonboard/shared/graphics/drm_hwcomposer/BoardConfig.mk
+ifeq ($(TARGET_USES_SWR), true)
+BOARD_SEPOLICY_DIRS += device/linaro/dragonboard/shared/graphics/swangle/sepolicy
+else
+include device/linaro/dragonboard/shared/graphics/mesa/BoardConfig.mk
+endif
+BOARD_SEPOLICY_DIRS += device/linaro/dragonboard/shared/graphics/minigbm_msm/sepolicy
diff --git a/sm8x50/device.mk b/sm8x50/device.mk
new file mode 100644
index 0000000..1613a5f
--- /dev/null
+++ b/sm8x50/device.mk
@@ -0,0 +1,75 @@
+#
+# Copyright (C) 2024 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.
+#
+
+# setup dalvik vm configs
+$(call inherit-product, frameworks/native/build/tablet-10in-xhdpi-2048-dalvik-heap.mk)
+
+include $(LOCAL_PATH)/../vendor-package-ver.mk
+$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota.mk)
+
+# dlkm_loader
+include device/linaro/dragonboard/shared/utils/dlkm_loader/device.mk
+PRODUCT_COPY_FILES += \
+ device/linaro/dragonboard/shared/utils/dlkm_loader/dlkm_loader.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/dlkm_loader.rc
+
+# Build generic Audio HAL
+PRODUCT_PACKAGES += audio.primary.sm8x50
+
+# BootControl HAL
+PRODUCT_PACKAGES += \
+ android.hardware.boot@1.2-impl \
+ android.hardware.boot@1.2-impl.recovery \
+ android.hardware.boot@1.2-service
+
+# Set BT address
+PRODUCT_PACKAGES += bdaddr
+
+# Install bdaddr script
+PRODUCT_COPY_FILES += \
+ device/linaro/dragonboard/shared/utils/bdaddr/set_bdaddr.sh:$(TARGET_COPY_OUT_VENDOR)/bin/set_bdaddr.sh
+
+# Install scripts to set vendor.* properties
+PRODUCT_COPY_FILES += \
+ device/linaro/dragonboard/shared/utils/set_hw.sh:$(TARGET_COPY_OUT_VENDOR)/bin/set_hw.sh \
+ device/linaro/dragonboard/shared/utils/set_udc.sh:$(TARGET_COPY_OUT_VENDOR)/bin/set_udc.sh
+
+# Install scripts to set Ethernet MAC address
+PRODUCT_COPY_FILES += \
+ device/linaro/dragonboard/shared/utils/ethaddr/ethaddr.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/ethaddr.rc \
+ device/linaro/dragonboard/shared/utils/ethaddr/set_ethaddr.sh:$(TARGET_COPY_OUT_VENDOR)/bin/set_ethaddr.sh
+
+PRODUCT_COPY_FILES += \
+ $(LOCAL_PATH)/fstab:$(TARGET_COPY_OUT_RAMDISK)/first_stage_ramdisk/fstab.sm8x50 \
+ $(LOCAL_PATH)/fstab:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.sm8x50
+
+PRODUCT_VENDOR_PROPERTIES += \
+ ro.soc.manufacturer=Snapdragon 8 Gen Devboard \
+ ro.soc.model=SM8x50
+
+PRODUCT_SOONG_NAMESPACES += \
+ vendor/linaro/sm8x50/$(EXPECTED_LINARO_VENDOR_VERSION)
+
+# XXX until v4 support
+PRODUCT_COPY_FILES += \
+ device/linaro/dragonboard/shared/utils/dlkm_loader/vendor_ramdisk.modules.blocklist:$(TARGET_COPY_OUT_RAMDISK)/lib/modules/modules.blocklist
+
+# Copy firmware files
+$(call inherit-product-if-exists, vendor/linaro/sm8x50/$(EXPECTED_LINARO_VENDOR_VERSION)/device.mk)
+
+TARGET_HARDWARE := sm8x50
+TARGET_KERNEL_USE ?= mainline
+
+include device/linaro/dragonboard/device-common.mk
diff --git a/sm8x50/dtb-overlays/sm8550-hdk.dts b/sm8x50/dtb-overlays/sm8550-hdk.dts
new file mode 100644
index 0000000..caf4dc1
--- /dev/null
+++ b/sm8x50/dtb-overlays/sm8550-hdk.dts
@@ -0,0 +1,7 @@
+/dts-v1/;
+/plugin/;
+
+&{/} {
+ qcom,msm-id = <536 0x10000>, <536 0x20000>, <601 0x20000>;
+ qcom,board-id = <0x1001f 0>;
+};
diff --git a/sm8x50/dtb-overlays/sm8550-qrd.dts b/sm8x50/dtb-overlays/sm8550-qrd.dts
new file mode 100644
index 0000000..1f1d059
--- /dev/null
+++ b/sm8x50/dtb-overlays/sm8550-qrd.dts
@@ -0,0 +1,7 @@
+/dts-v1/;
+/plugin/;
+
+&{/} {
+ qcom,msm-id = <0x207 0x20000 0x218 0x20000>;
+ qcom,board-id = <0x1000b 0x00>;
+};
diff --git a/sm8x50/dtb-overlays/sm8650-qrd.dts b/sm8x50/dtb-overlays/sm8650-qrd.dts
new file mode 100644
index 0000000..7903ae2
--- /dev/null
+++ b/sm8x50/dtb-overlays/sm8650-qrd.dts
@@ -0,0 +1,7 @@
+/dts-v1/;
+/plugin/;
+
+&{/} {
+ qcom,msm-id = <0x22d 0x10000>;
+ qcom,board-id = <0x0b 0x00>;
+};
diff --git a/sm8x50/fstab b/sm8x50/fstab
new file mode 100644
index 0000000..6483e3e
--- /dev/null
+++ b/sm8x50/fstab
@@ -0,0 +1,11 @@
+system /system erofs ro wait,logical,first_stage_mount,slotselect
+/dev/block/platform/soc@0/1d84000.ufs/by-name/userdata /data ext4 discard,noatime,noauto_da_alloc,data=ordered,user_xattr,barrier=1,inlinecrypt latemount,wait,formattable,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,keydirectory=/metadata/vold/metadata_encryption,quota
+/dev/block/platform/soc@0/1d84000.ufs/by-name/metadata /metadata ext4 noatime,nosuid,nodev,discard wait,formattable,first_stage_mount,check
+/dev/block/platform/soc@0/1d84000.ufs/by-name/misc /misc emmc defaults defaults
+/devices/platform/soc@0/8804000.mmc/mmc_host/mmc* auto auto defaults voldmanaged=sdcard1:auto
+vendor /vendor erofs ro wait,logical,first_stage_mount,slotselect
+system_ext /system_ext erofs ro wait,logical,first_stage_mount,slotselect
+product /product erofs ro wait,logical,first_stage_mount,slotselect
+system_dlkm /system_dlkm erofs ro wait,logical,first_stage_mount,slotselect
+vendor_dlkm /vendor_dlkm erofs ro wait,logical,first_stage_mount,slotselect
+/dev/block/zram0 none swap defaults zramsize=75%
diff --git a/sm8x50/init.environ.rc b/sm8x50/init.environ.rc
new file mode 100644
index 0000000..bd44494
--- /dev/null
+++ b/sm8x50/init.environ.rc
@@ -0,0 +1,3 @@
+# set up the global environment
+on early-init
+ export MESA_LOADER_DRIVER_OVERRIDE zink
diff --git a/sm8x50/sepolicy/file_contexts b/sm8x50/sepolicy/file_contexts
new file mode 100644
index 0000000..2010957
--- /dev/null
+++ b/sm8x50/sepolicy/file_contexts
@@ -0,0 +1,17 @@
+/dev/block/platform/soc@0/1d84000\.ufs/by-name/fsc u:object_r:modem_block_device:s0
+/dev/block/platform/soc@0/1d84000\.ufs/by-name/fsg u:object_r:modem_block_device:s0
+/dev/block/platform/soc@0/1d84000\.ufs/by-name/modemst[12] u:object_r:modem_block_device:s0
+/dev/block/platform/soc@0/1d84000\.ufs/by-name/metadata u:object_r:metadata_block_device:s0
+/dev/block/platform/soc@0/1d84000\.ufs/by-name/super u:object_r:super_block_device:s0
+/dev/block/platform/soc@0/1d84000\.ufs/by-name/userdata u:object_r:userdata_block_device:s0
+/dev/block/platform/soc@0/1d84000\.ufs/by-name/misc u:object_r:misc_block_device:s0
+
+/sys/devices/platform/d4a80000.memory/rmtfs u:object_r:sysfs_rmtfs:s0
+/sys/devices/platform/d4a80000.rmtfs-region/rmtfs u:object_r:sysfs_rmtfs:s0
+
+/sys/devices/platform/soc@0/30000000.remoteproc u:object_r:sysfs_remoteproc:s0
+/sys/devices/platform/soc@0/32300000.remoteproc u:object_r:sysfs_remoteproc:s0
+
+#wakeups
+/sys/devices/platform/soc@0/4080000.remoteproc/wakeup/wakeup3 u:object_r:sysfs_wakeup:s0
+/sys/devices/platform/soc@0/30000000.remoteproc/wakeup/wakeup4 u:object_r:sysfs_wakeup:s0
diff --git a/sm8x50/sepolicy/genfs_contexts b/sm8x50/sepolicy/genfs_contexts
new file mode 100644
index 0000000..447edb3
--- /dev/null
+++ b/sm8x50/sepolicy/genfs_contexts
@@ -0,0 +1,9 @@
+genfscon sysfs /devices/platform/d4a80000.memory/rmtfs u:object_r:sysfs_rmtfs:s0
+genfscon sysfs /devices/platform/d4a80000.rmtfs-region/rmtfs u:object_r:sysfs_rmtfs:s0
+
+genfscon sysfs /devices/platform/soc@0/30000000.remoteproc u:object_r:sysfs_remoteproc:s0
+genfscon sysfs /devices/platform/soc@0/32300000.remoteproc u:object_r:sysfs_remoteproc:s0
+
+#wakeups
+genfscon sysfs /devices/platform/soc@0/4080000.remoteproc/wakeup/wakeup3 u:object_r:sysfs_wakeup:s0
+genfscon sysfs /devices/platform/soc@0/30000000.remoteproc/wakeup/wakeup4 u:object_r:sysfs_wakeup:s0
diff --git a/sm8x50/sm8x50.mk b/sm8x50/sm8x50.mk
new file mode 100644
index 0000000..55f8476
--- /dev/null
+++ b/sm8x50/sm8x50.mk
@@ -0,0 +1,23 @@
+$(call inherit-product, device/linaro/dragonboard/full.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit_only.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)
+
+# Target boots with software rendering by default
+TARGET_USES_SWR ?= true
+$(call inherit-product, device/linaro/dragonboard/shared/graphics/drm_hwcomposer/device.mk)
+ifeq ($(TARGET_USES_SWR), true)
+ $(call inherit-product, device/linaro/dragonboard/shared/graphics/swangle/device.mk)
+else
+ $(call inherit-product, device/linaro/dragonboard/shared/graphics/mesa/device.mk)
+ TARGET_USES_VULKAN := true
+ PRODUCT_VENDOR_PROPERTIES += debug.hwui.renderer=skiagl
+ PRODUCT_COPY_FILES += $(LOCAL_PATH)/init.environ.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.environ.rc
+endif
+$(call inherit-product, device/linaro/dragonboard/shared/graphics/minigbm_msm/device.mk)
+
+$(call inherit-product, device/linaro/dragonboard/sm8x50/device.mk)
+
+# Product overrides
+PRODUCT_NAME := sm8x50
+PRODUCT_DEVICE := sm8x50
+PRODUCT_BRAND := Android
diff --git a/vendor-package-ver.sh b/vendor-package-ver.sh
index 690f87e..127a208 100755
--- a/vendor-package-ver.sh
+++ b/vendor-package-ver.sh
@@ -1,9 +1,9 @@
#!/bin/bash
-export EXPECTED_LINARO_VENDOR_VERSION=20221126
+export EXPECTED_LINARO_VENDOR_VERSION=20240405
#make sure to use sha512sum here
-export EXPECTED_LINARO_VENDOR_SHA=b87346f0612809458f556d0770f32a542ffd200418fe89bf1bf11b250f8c9197cd7c3624c87d141837c315a308d166129f711cf8c7b0a31eafcc1c2b87556199
-export VND_PKG_URL=https://releases.linaro.org/android/aosp-linaro-vendor-package/extract-linaro_devices-20221126.tgz
+export EXPECTED_LINARO_VENDOR_SHA=b287858201bb3d3eaac4f2fa2626e2a594b5ea4364ad9fff8910c572e4c1b1a81283c48d342c1dc86984990fbd13720cdf4469e180a70624a739ccd168b50837
+export VND_PKG_URL=https://releases.devboardsforandroid.linaro.org/vendor-packages/20240405/extract-linaro_devices-20240405.tgz
if [ "$1" = "url" ]; then
echo $VND_PKG_URL