diff --git a/config/boards/qcom-robotics-rb5.conf b/config/boards/qcom-robotics-rb5.conf new file mode 100644 index 000000000..d67820e0f --- /dev/null +++ b/config/boards/qcom-robotics-rb5.conf @@ -0,0 +1,117 @@ +# Qualcomm Robotics RB5 Configuration +declare -g BOARD_NAME="Qualcomm Robotics RB5" +declare -g BOARD_MAINTAINER="FantasyGmm" +declare -g BOARDFAMILY="sm8250" +declare -g KERNEL_TARGET="current,edge" +declare -g KERNEL_TEST_TARGET="edge" +declare -g EXTRAWIFI="no" +declare -g BOOTCONFIG="none" +declare -g IMAGE_PARTITION_TABLE="gpt" +# declare -g -a ABL_DTB_LIST=("qrb5165-rb5") + +# Use the full firmware, complete linux-firmware plus Armbian's (for qcom/a650_sqe.fw) +declare -g BOARD_FIRMWARE_INSTALL="-full" + +declare -g SERIALCON="${SERIALCON:-tty1}" +declare -g GRUB_CMDLINE_LINUX_DEFAULT="clk_ignore_unused pd_ignore_unused arm64.nopauth efi=noruntime console=ttyMSM0,115200n8 pcie_pme=nomsi" +declare -g BOOT_FDT_FILE="qcom/qrb5165-rb5.dtb" +declare -g UEFI_PART_ALIGN="4096" +enable_extension "grub" +enable_extension "grub-with-dtb" # important, puts the whole DTB handling in place. + +function qcom-robotics-rb5_is_userspace_supported() { + [[ "${RELEASE}" == "bookworm" ]] && return 0 + [[ "${RELEASE}" == "jammy" ]] && return 0 + [[ "${RELEASE}" == "noble" ]] && return 0 + [[ "${RELEASE}" == "trixie" ]] && return 0 + return 1 +} + +function post_family_tweaks_bsp__qcom-robotics-rb5_add_services() { + if ! qcom-robotics-rb5_is_userspace_supported; then + if [[ "${RELEASE}" != "" ]]; then + display_alert "Missing userspace for ${BOARD}" "${RELEASE} does not have the userspace necessary to support the ${BOARD}" "warn" + fi + return 0 + fi + + display_alert "$BOARD" "Add services" "info" + + # Bluetooth MAC addr setup service + mkdir -p $destination/usr/local/bin/ + mkdir -p $destination/usr/lib/systemd/system/ + install -Dm655 $SRC/packages/bsp/generate-bt-mac-addr/bt-fixed-mac.sh $destination/usr/local/bin/ + install -Dm644 $SRC/packages/bsp/generate-bt-mac-addr/bt-fixed-mac.service $destination/usr/lib/systemd/system/ +} + +function post_family_tweaks__qcom-robotics-rb5_enable_services() { + if ! qcom-robotics-rb5_is_userspace_supported; then + if [[ "${RELEASE}" != "" ]]; then + display_alert "Missing userspace for ${BOARD}" "${RELEASE} does not have the userspace necessary to support the ${BOARD}" "warn" + fi + return 0 + fi + + display_alert "$BOARD" "Enable services" "info" + + chroot_sdcard systemctl enable bt-fixed-mac.service + return 0 +} + +function post_family_tweaks__qcom-robotics-rb5_extra_packages() { + if ! qcom-robotics-rb5_is_userspace_supported; then + if [[ "${RELEASE}" != "" ]]; then + display_alert "Missing userspace for ${BOARD}" "${RELEASE} does not have the userspace necessary to support the ${BOARD}" "warn" + fi + return 0 + fi + + if [[ "${RELEASE}" == "jammy" ]] || [[ "${RELEASE}" == "noble" ]]; then + display_alert "Adding qcom-mainline PPA" "${BOARD}" "info" + do_with_retries 3 chroot_sdcard add-apt-repository ppa:liujianfeng1994/qcom-mainline --yes --no-update + fi + + if [[ "${RELEASE}" == "noble" ]]; then + display_alert "Adding Mesa PPA For Ubuntu " "${BOARD}" "info" + do_with_retries 3 chroot_sdcard add-apt-repository ppa:oibaf/graphics-drivers --yes --no-update + fi + + do_with_retries 3 chroot_sdcard_apt_get_update + do_with_retries 3 chroot_sdcard_apt_get_install vulkan-tools mesa-vulkan-drivers btop mtools zstd + + if [[ "${RELEASE}" == "noble" ]]; then + do_with_retries 3 chroot_sdcard_apt_get_install qbootctl + fi + + if [[ "${DESKTOP_ENVIRONMENT}" == "kde-plasma" ]]; then + display_alert "Adding Extra KDE Package" "${BOARD}" "info" + do_with_retries 3 chroot_sdcard_apt_get_install plasma-workspace-wayland plasma-desktop plasma-systemmonitor plasma-nm kde-standard kde-spectacle kinfocenter kscreen krfb kfind filelight \ + dolphin clinfo vulkan-tools wayland-utils + fi + + if [[ "${RELEASE}" == "noble" ]]; then + chroot_sdcard systemctl enable qbootctl.service + fi + chroot_sdcard systemctl enable bt-fixed-mac.service + + # No driver support for suspend + chroot_sdcard systemctl mask suspend.target +} + +function post_family_tweaks_bsp__qcom-robotics-rb5_bsp_firmware_in_initrd() { + display_alert "Adding to bsp-cli" "${BOARD}: firmware in initrd" "info" + declare file_added_to_bsp_destination # Will be filled in by add_file_from_stdin_to_bsp_destination + # Using Elish's firmware for now + add_file_from_stdin_to_bsp_destination "/etc/initramfs-tools/hooks/qcom-robotics-rb5-firmware" <<- 'FIRMWARE_HOOK' + #!/bin/bash + [[ "$1" == "prereqs" ]] && exit 0 + . /usr/share/initramfs-tools/hook-functions + for f in /lib/firmware/qcom/sm8250/Thundercomm/RB5/* ; do + add_firmware "${f#/lib/firmware/}" + done + add_firmware "qcom/sm8250/a650_zap.mbn" # Extra one for dpu + add_firmware "qcom/a650_sqe.fw" # Extra one for dpu + add_firmware "qcom/a650_gmu.bin" # Extra one for gpu + FIRMWARE_HOOK + run_host_command_logged chmod -v +x "${file_added_to_bsp_destination}" +} diff --git a/config/kernel/linux-sm8250-current.config b/config/kernel/linux-sm8250-current.config index b0f002d35..4b62dc1ee 100644 --- a/config/kernel/linux-sm8250-current.config +++ b/config/kernel/linux-sm8250-current.config @@ -224,6 +224,9 @@ CONFIG_ZRAM_MEMORY_TRACKING=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_NBD=m CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_NVME=m +CONFIG_NVME_MULTIPATH=y +CONFIG_NVME_HWMON=y CONFIG_QCOM_FASTRPC=m CONFIG_SRAM=y CONFIG_PCI_ENDPOINT_TEST=m @@ -258,10 +261,95 @@ CONFIG_WIREGUARD=m CONFIG_MACVLAN=m CONFIG_MACVTAP=m CONFIG_IPVLAN=m +CONFIG_IPVTAP=m CONFIG_VXLAN=y CONFIG_TUN=y CONFIG_VETH=m -# CONFIG_ETHERNET is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +# CONFIG_NET_VENDOR_ALACRITECH is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMAZON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_AQUANTIA is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ASIX is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_CADENCE is not set +# CONFIG_NET_VENDOR_CAVIUM is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_NET_VENDOR_CORTINA is not set +# CONFIG_NET_VENDOR_DAVICOM is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_ENGLEDER is not set +# CONFIG_NET_VENDOR_EZCHIP is not set +# CONFIG_NET_VENDOR_FUNGIBLE is not set +# CONFIG_NET_VENDOR_GOOGLE is not set +# CONFIG_NET_VENDOR_HISILICON is not set +# CONFIG_NET_VENDOR_HUAWEI is not set +CONFIG_IGB=m +# CONFIG_IGB_HWMON is not set +CONFIG_IGBVF=m +CONFIG_IXGBE=m +# CONFIG_IXGBE_HWMON is not set +CONFIG_IXGBEVF=m +CONFIG_I40E=m +CONFIG_I40EVF=m +CONFIG_ICE=m +CONFIG_FM10K=m +CONFIG_IGC=m +CONFIG_IDPF=m +CONFIG_IDPF_SINGLEQ=y +# CONFIG_NET_VENDOR_ADI is not set +# CONFIG_NET_VENDOR_LITEX is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_META is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MICROSEMI is not set +# CONFIG_NET_VENDOR_MICROSOFT is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NETERION is not set +# CONFIG_NET_VENDOR_NETRONOME is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_VENDOR_PACKET_ENGINES is not set +# CONFIG_NET_VENDOR_PENSANDO is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_RDC is not set +CONFIG_8139TOO=m +CONFIG_8139TOO_TUNE_TWISTER=y +CONFIG_8139_OLD_RX_RESET=y +CONFIG_R8169=m +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SOLARFLARE is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_SOCIONEXT is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_SYNOPSYS is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VERTEXCOM is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WANGXUN is not set +# CONFIG_NET_VENDOR_WIZNET is not set +# CONFIG_NET_VENDOR_XILINX is not set CONFIG_QCOM_IPA=m CONFIG_PHYLIB=y CONFIG_AQUANTIA_PHY=y @@ -291,9 +379,11 @@ CONFIG_ATH11K_PCI=m # CONFIG_WLAN_VENDOR_MARVELL is not set # CONFIG_WLAN_VENDOR_MEDIATEK is not set # CONFIG_WLAN_VENDOR_MICROCHIP is not set +# CONFIG_WLAN_VENDOR_PURELIFI is not set # CONFIG_WLAN_VENDOR_RALINK is not set # CONFIG_WLAN_VENDOR_REALTEK is not set # CONFIG_WLAN_VENDOR_RSI is not set +# CONFIG_WLAN_VENDOR_SILABS is not set # CONFIG_WLAN_VENDOR_ST is not set # CONFIG_WLAN_VENDOR_TI is not set # CONFIG_WLAN_VENDOR_ZYDAS is not set @@ -349,7 +439,6 @@ CONFIG_SPI_QUP=y CONFIG_SPI_QCOM_GENI=m CONFIG_SPI_SPIDEV=m CONFIG_SPMI=y -CONFIG_PTP_1588_CLOCK=y CONFIG_PINCTRL_MAX77620=y CONFIG_PINCTRL_SINGLE=y CONFIG_PINCTRL_MSM=y @@ -518,10 +607,15 @@ CONFIG_USB_CHIPIDEA_UDC=y CONFIG_USB_CHIPIDEA_HOST=y CONFIG_USB_ISP1760=y CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_SIMPLE=m CONFIG_USB_SERIAL_CH341=m CONFIG_USB_SERIAL_CP210X=m CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QUALCOMM=m CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_QCOM_EUD=m CONFIG_USB_HSIC_USB3503=y CONFIG_NOP_USB_XCEIV=y CONFIG_USB_GADGET=y @@ -558,6 +652,7 @@ CONFIG_MMC_SDHCI_PLTFM=y CONFIG_MMC_SDHCI_MSM=y CONFIG_SCSI_UFSHCD=y CONFIG_SCSI_UFS_BSG=y +CONFIG_SCSI_UFS_HWMON=y CONFIG_SCSI_UFSHCD_PLATFORM=y CONFIG_SCSI_UFS_QCOM=y CONFIG_NEW_LEDS=y @@ -569,6 +664,7 @@ CONFIG_LEDS_PCA9532=m CONFIG_LEDS_GPIO=y CONFIG_LEDS_PWM=y CONFIG_LEDS_SYSCON=y +CONFIG_LEDS_USER=y CONFIG_LEDS_GROUP_MULTICOLOR=y CONFIG_LEDS_PWM_MULTICOLOR=y CONFIG_LEDS_QCOM_LPG=y @@ -576,8 +672,10 @@ CONFIG_LEDS_TRIGGER_TIMER=y CONFIG_LEDS_TRIGGER_DISK=y CONFIG_LEDS_TRIGGER_HEARTBEAT=y CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_ACTIVITY=y CONFIG_LEDS_TRIGGER_DEFAULT_ON=y CONFIG_LEDS_TRIGGER_PANIC=y +CONFIG_LEDS_TRIGGER_NETDEV=y CONFIG_EDAC=y CONFIG_EDAC_GHES=y CONFIG_RTC_CLASS=y @@ -687,12 +785,10 @@ CONFIG_QCOM_L3_PMU=y CONFIG_HISI_PMU=y CONFIG_ANDROID_BINDER_IPC=y CONFIG_NVMEM_QCOM_QFPROM=y +CONFIG_NVMEM_QCOM_SEC_QFPROM=m CONFIG_NVMEM_RMEM=m -CONFIG_FPGA=y -CONFIG_FPGA_BRIDGE=m -CONFIG_ALTERA_FREEZE_BRIDGE=m -CONFIG_FPGA_REGION=m -CONFIG_OF_FPGA_REGION=m +CONFIG_NVMEM_SPMI_SDAM=m +CONFIG_NVMEM_U_BOOT_ENV=m CONFIG_TEE=y CONFIG_OPTEE=y CONFIG_MUX_MMIO=y @@ -771,8 +867,6 @@ CONFIG_DMA_CMA=y CONFIG_CMA_SIZE_MBYTES=32 CONFIG_PRINTK_TIME=y CONFIG_DYNAMIC_DEBUG=y -CONFIG_DEBUG_INFO_DWARF5=y -CONFIG_DEBUG_INFO_BTF=y CONFIG_MAGIC_SYSRQ=y CONFIG_DEBUG_MEMORY_INIT=y CONFIG_FTRACE_SYSCALLS=y