diff options
author | Amit Pundir <amit.pundir@linaro.org> | 2024-03-08 22:31:43 +0530 |
---|---|---|
committer | Amit Pundir <amit.pundir@linaro.org> | 2024-04-04 01:30:33 +0530 |
commit | bd765d63de9d08e4eda7eb5fb4c2f41be2e5474a (patch) | |
tree | 8f4133cf73f7d7a89d1b89fc645b2f18bc227fee | |
parent | d898026dd53315db8cf4756ffba2f0e54bc4d70f (diff) | |
download | dragonboard-bd765d63de9d08e4eda7eb5fb4c2f41be2e5474a.tar.gz |
sm8x50-userdebug: Add a generic build target for Qcom ARMv9 devboards
Adding a 64-bit only generic build target for Qcom armv9
(Snapdragon 8 gen) devboards and enable it in LKFT. It is
supported only on v6.8+ kernel versions.
SM8550-HDK, https://www.lantronix.com/products/snapdragon-8-gen-2-mobile-hardware-development-kit/
is the primary device supported by this build configuration.
Other Snapdragon 8 gen devboards are supported on the best
efforts basis.
Smoke tested sm8x50-userdebug build target on SM8550-HDK.
Boots to UI with upstream kernel using software rendering
and linux-firmware binaries for now, which is good enough to
kickstart testing in LKFT lab.
`lunch` target is not added yet and will be added as soon
the firmware binaries land in linaro-vendor / linux-firmware
repo to make sure that the device has more features enabled
and is in a more usable state. Boot image header v2 is used
for now, while we are working on releasing ABL with header
v4 support.
And since qcom,board-id and qcom,msm-id DT properties are no
longer accepted upstream, we are using fdtoverlay to apply
them at build time. So make sure that the base DT is built
with `DTC_FLAGS=-@` build flag to allow overlays, otherwise
fdtoverlay command will run into "FDT_ERR_NOTFOUND" error at
the build time.
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Change-Id: I2c6a0331173ef11a542b07ee3a270ece36d96786
-rw-r--r-- | Android.mk | 2 | ||||
-rw-r--r-- | AndroidProducts.mk | 1 | ||||
-rw-r--r-- | build/tasks/kernel.mk | 25 | ||||
-rw-r--r-- | full.mk | 3 | ||||
-rw-r--r-- | sepolicy/tqftpserv.te | 2 | ||||
-rw-r--r-- | shared/utils/set_hw.sh | 30 | ||||
-rw-r--r-- | sm8x50/BoardConfig.mk | 52 | ||||
-rw-r--r-- | sm8x50/device.mk | 75 | ||||
-rw-r--r-- | sm8x50/dtb-overlays/sm8550-hdk.dts | 7 | ||||
-rw-r--r-- | sm8x50/dtb-overlays/sm8550-qrd.dts | 7 | ||||
-rw-r--r-- | sm8x50/dtb-overlays/sm8650-qrd.dts | 7 | ||||
-rw-r--r-- | sm8x50/fstab | 11 | ||||
-rw-r--r-- | sm8x50/sepolicy/file_contexts | 17 | ||||
-rw-r--r-- | sm8x50/sepolicy/genfs_contexts | 9 | ||||
-rw-r--r-- | sm8x50/sm8x50.mk | 16 |
15 files changed, 255 insertions, 9 deletions
@@ -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 linaro_swr, $(TARGET_BOARD_PLATFORM)),) +ifneq ($(filter db845c linaro_swr sm8x50, $(TARGET_BOARD_PLATFORM)),) LOCAL_PATH := $(call my-dir) diff --git a/AndroidProducts.mk b/AndroidProducts.mk index 2479437..f121e04 100644 --- a/AndroidProducts.mk +++ b/AndroidProducts.mk @@ -14,6 +14,7 @@ PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/db845c_mini.mk \ $(LOCAL_DIR)/sm8450_mini.mk \ $(LOCAL_DIR)/linaro_swr.mk \ + $(LOCAL_DIR)/sm8x50/sm8x50.mk COMMON_LUNCH_CHOICES := \ db845c-trunk_staging-userdebug diff --git a/build/tasks/kernel.mk b/build/tasks/kernel.mk index ed747b7..1478753 100644 --- a/build/tasks/kernel.mk +++ b/build/tasks/kernel.mk @@ -1,7 +1,26 @@ -ifneq ($(filter db845c db845c_mini linaro_swr, $(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 @@ -170,8 +170,11 @@ PRODUCT_PACKAGES += com.android.hardware.thermal 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 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/utils/set_hw.sh b/shared/utils/set_hw.sh index 98f76c3..305a345 100644 --- a/shared/utils/set_hw.sh +++ b/shared/utils/set_hw.sh @@ -3,10 +3,32 @@ # # 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 +HW=`/vendor/bin/cat /proc/device-tree/compatible | /vendor/bin/grep db845c` +if [ -n "${HW}" ]; then setprop vendor.hw db845c -else + 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/sm8x50/BoardConfig.mk b/sm8x50/BoardConfig.mk new file mode 100644 index 0000000..9015b1c --- /dev/null +++ b/sm8x50/BoardConfig.mk @@ -0,0 +1,52 @@ +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 +BOARD_SEPOLICY_DIRS += device/linaro/dragonboard/shared/graphics/swangle/sepolicy +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/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..79d5441 --- /dev/null +++ b/sm8x50/sm8x50.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 boots with 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/swangle/device.mk) +$(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 |