# Generate kernel and rootfs image for Qcom ABL booting declare -g BOARD_NAME="Oneplus Kebab" declare -g BOARD_VENDOR="oneplus" declare -g BOARD_MAINTAINER="amazingfate" declare -g BOARDFAMILY="sm8250" declare -g KERNEL_TARGET="current" declare -g EXTRAWIFI="no" declare -g MODULES="spi-geni-qcom" declare -g BOOTCONFIG="none" declare -g IMAGE_PARTITION_TABLE="gpt" declare -g -a ABL_DTB_LIST=("sm8250-oneplus-kebab") # Use the full firmware, complete linux-firmware plus Armbian's (for qcom/a650_sqe.fw) declare -g BOARD_FIRMWARE_INSTALL="-full" function oneplus-kebab_is_userspace_supported() { [[ "${RELEASE}" == "jammy" ]] && return 0 [[ "${RELEASE}" == "trixie" ]] && return 0 [[ "${RELEASE}" == "noble" ]] && return 0 return 1 } function post_family_tweaks_bsp__oneplus-kebab_firmware() { display_alert "$BOARD" "Install firmwares for oneplus kebab" "info" # USB Gadget Network service mkdir -p $destination/usr/local/bin/ mkdir -p $destination/usr/lib/systemd/system/ mkdir -p $destination/etc/initramfs-tools/scripts/init-bottom/ install -Dm655 $SRC/packages/bsp/usb-gadget-network/setup-usbgadget-network.sh $destination/usr/local/bin/ install -Dm655 $SRC/packages/bsp/usb-gadget-network/remove-usbgadget-network.sh $destination/usr/local/bin/ install -Dm644 $SRC/packages/bsp/usb-gadget-network/usbgadget-rndis.service $destination/usr/lib/systemd/system/ install -Dm655 $SRC/packages/bsp/usb-gadget-network/usb-gadget-initramfs-hook $destination/etc/initramfs-tools/hooks/usb-gadget install -Dm655 $SRC/packages/bsp/usb-gadget-network/usb-gadget-initramfs-premount $destination/etc/initramfs-tools/scripts/init-premount/usb-gadget install -Dm655 $SRC/packages/bsp/usb-gadget-network/dropbear $destination/etc/initramfs-tools/scripts/init-premount/ install -Dm655 $SRC/packages/bsp/usb-gadget-network/kill-dropbear $destination/etc/initramfs-tools/scripts/init-bottom/ # Bluetooth MAC addr setup service 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/ # Kernel postinst script to update abl boot partition install -Dm655 $SRC/packages/bsp/oneplus-kebab/zz-update-abl-kernel $destination/etc/kernel/postinst.d/ # Add kebab firmwares mkdir -p $destination/lib/firmware/qcom/sm8250/OnePlus/kebab install -Dm644 $SRC/packages/bsp/oneplus-kebab/a650_zap.mbn $destination/lib/firmware/qcom/sm8250/OnePlus/ install -Dm644 $SRC/packages/bsp/oneplus-kebab/adsp.mbn $destination/lib/firmware/qcom/sm8250/OnePlus/ install -Dm644 $SRC/packages/bsp/oneplus-kebab/cdsp.mbn $destination/lib/firmware/qcom/sm8250/OnePlus/ install -Dm644 $SRC/packages/bsp/oneplus-kebab/venus.mbn $destination/lib/firmware/qcom/sm8250/OnePlus/kebab return 0 } function post_family_tweaks__oneplus-kebab_enable_services() { if ! oneplus-kebab_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 # we need unudhcpd from armbian repo, so enable it mv "${SDCARD}"/etc/apt/sources.list.d/armbian.sources.disabled "${SDCARD}"/etc/apt/sources.list.d/armbian.sources do_with_retries 3 chroot_sdcard_apt_get_update display_alert "$BOARD" "Installing board tweaks" "info" do_with_retries 3 chroot_sdcard_apt_get_install alsa-ucm-conf qbootctl qrtr-tools unudhcpd mkbootimg dropbear-bin # disable armbian repo back mv "${SDCARD}"/etc/apt/sources.list.d/armbian.sources "${SDCARD}"/etc/apt/sources.list.d/armbian.sources.disabled do_with_retries 3 chroot_sdcard_apt_get_update chroot_sdcard systemctl enable qbootctl.service chroot_sdcard systemctl enable usbgadget-rndis.service chroot_sdcard systemctl enable bt-fixed-mac.service return 0 } function post_family_tweaks_bsp__oneplus-kebab_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 add_file_from_stdin_to_bsp_destination "/etc/initramfs-tools/hooks/oneplus-kebab-firmware" <<- 'FIRMWARE_HOOK' #!/bin/bash [[ "$1" == "prereqs" ]] && exit 0 . /usr/share/initramfs-tools/hook-functions for f in /lib/firmware/qcom/sm8250/OnePlus/* ; do add_firmware "${f#/lib/firmware/}" done 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}" } ## Modules, required to boot, add them to initrd function post_family_tweaks_bsp__oneplus-kebab_bsp_modules_in_initrd() { display_alert "Adding to bsp-cli" "${BOARD}: modules in initrd" "info" add_file_from_stdin_to_bsp_destination "/etc/initramfs-tools/modules" <<- 'EXTRA_MODULES' spi-geni-qcom EXTRA_MODULES }