From 2b0afe1960bc606395238eb191f28f67fe049e27 Mon Sep 17 00:00:00 2001 From: John Vogel Date: Tue, 28 Jul 2026 05:04:09 -0400 Subject: dragon/aic8800-dragon: new aport Linux kernel drivers for the Aicsemi Wifi 6 / BT USB chip found on the Radxa Dragon Q6A: Sources originate from Radxa's repository for the driver and firmware. --- aic8800-dragon/APKBUILD | 150 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 aic8800-dragon/APKBUILD diff --git a/aic8800-dragon/APKBUILD b/aic8800-dragon/APKBUILD new file mode 100644 index 0000000..c353a14 --- /dev/null +++ b/aic8800-dragon/APKBUILD @@ -0,0 +1,150 @@ +# Maintainer: John Vogel + +# This APKBUILD borrows heavily from the jool-lts and jool-rpi aports. + +# AIC8800 version +# Keep _ver in sync with radxa/aic8800 +# When changing _ver we *must* bump _rel! +_name=aic8800 +_ver=5.0_git20260429 +_srcver=5.0+git20260123.5f7be68d-5 +_rel=0 +_flavor=dragon + +# For custom kernels set $FLAVOR. +_flavor="$FLAVOR" +_extra_flavors="" +if [ -z "$FLAVOR" ]; then + _flavor="dragon" +fi + +# Kernel version +# Keep in sync with radxa/linux-dragon! +_kpkg=linux-$_flavor +_kver=7.0.11 +_krel=0 +_kpkgver="$_kver-r$_krel" + +maintainer="John Vogel " +pkgname=$_name-$_flavor +pkgver=$_kver +pkgrel=$(( _krel + _rel )) +pkgdesc="Aicsemi AIC8800 drivers for Linux (kernel modules for linux-$_flavor)" +url="https://github.com/radxa-pkg/aic8800" +arch="aarch64" +license="GPL-3.0-or-later" +makedepends="$_kpkg-dev=$_kpkgver linux-headers xz" +subpackages="$pkgname-doc $pkgname-firmware" +source="aic8800-$_srcver.tar.gz::https://github.com/radxa-pkg/aic8800/archive/refs/tags/$_srcver.tar.gz" +builddir="$srcdir/$_name-${_srcver/+/-}" +options="!strip !check !usrmerge" + +for _f in $_extra_flavors; do + makedepends="$makedepends linux-$_f-dev=$_kpkgver" + subpackages="$subpackages $_name-$_f:_extra" +done + +prepare() { + default_prepare + + dos2unix src/USB/driver_fw/drivers/aic8800/aic_load_fw/aicbluetooth.c + dos2unix src/USB/driver_fw/drivers/aic_btusb/aic_btusb.h + dos2unix src/USB/driver_fw/drivers/aic8800/aic_load_fw/aic_bluetooth_main.c + + while read -r p; do + printf 'applying %s\n' "$p" + patch -Np1 -i debian/patches/$p + done < debian/patches/series + + # verify the kernel version + local _kapkbuild="$startdir"/../../testing/linux-$_flavor/APKBUILD + if [ -f $_kapkbuild ]; then + ( . $_kapkbuild + pkgname=$_name-$_flavor + [ "$_kver" != "$pkgver" ] && die "please update _kver to $pkgver" + [ "$_krel" != "$pkgrel" ] && die "please update _krel to $pkgrel" + return 0 + ) + fi +} + +_kernelarch() { + local arch="$1" + case "$arch" in + aarch64*) arch="arm64" ;; + arm*) arch="arm" ;; + ppc*) arch="powerpc" ;; + s390*) arch="s390" ;; + riscv*) arch="riscv" ;; + loongarch64) arch="loongarch" ;; + esac + echo "$arch" +} + +build() { + local flavor= kabi= + for flavor in $_flavor $_extra_flavors; do + kabi="${_kver/_rc/-rc}-$_krel-$flavor" + cp -a -l "$builddir" "$srcdir"/"$kabi" + cd "$srcdir"/"$kabi" + make -C "/lib/modules/$_kver-$_krel-$flavor/build" \ + M="$srcdir/$kabi/src/USB/driver_fw/drivers/aic_btusb" \ + ARCH="$(_kernelarch $CBUILD)" \ + CROSS_COMPILE= \ + modules + make -C "/lib/modules/$_kver-$_krel-$flavor/build" \ + M="$srcdir/$kabi/src/USB/driver_fw/drivers/aic8800" \ + ARCH="$(_kernelarch $CBUILD)" \ + CROSS_COMPILE= \ + modules + done +} + +package() { + install -Dm644 -t "$pkgdir"/usr/share/licenses/"$pkgname" LICENSE + + local flavor= kabi= + for flavor in $_flavor $_extra_flavors; do + kabi="${_kver/_rc/-rc}-$_krel-$flavor" + cd "$srcdir"/"$kabi" + make -C "/lib/modules/$_kver-$_krel-$flavor/build" \ + M="$srcdir/$kabi/src/USB/driver_fw/drivers/aic_btusb" \ + ARCH="$(_kernelarch $CBUILD)" \ + CROSS_COMPILE= \ + INSTALL_MOD_PATH="$pkgdir" \ + CONFIG_MODULE_SIG_KEY="/lib/modules/$_kver-$_krel-$flavor/build/certs/signing_key.x509" \ + modules_install + make -C "/lib/modules/$_kver-$_krel-$flavor/build" \ + M="$srcdir/$kabi/src/USB/driver_fw/drivers/aic8800" \ + ARCH="$(_kernelarch $CBUILD)" \ + CROSS_COMPILE= \ + INSTALL_MOD_PATH="$pkgdir" \ + CONFIG_MODULE_SIG_KEY="/lib/modules/$_kver-$_krel-$flavor/build/certs/signing_key.x509" \ + modules_install + done + +} + +_extra() { + local flavor=${subpkgname##*-} + local kabi="${_kver/_rc/-rc}-$_krel-$flavor" + depends="linux-$flavor=$_kpkgver" + install_if="linux-$flavor=$_kpkgver" + pkgdesc="Aicsemi AIC8800 drivers for Linux (kernel modules for linux-$flavor)" + + install -dm755 "$subpkgdir"/lib/modules + mv "$pkgdir"/lib/modules/"$kabi" "$subpkgdir"/lib/modules +} + +firmware() { + pkgdesc="Aicsemi AIC8800 drivers for Linux (usb firmware)" + + install -Dm644 -t "$subpkgdir"/lib/firmware/aic8800_fw/USB/aic8800D80 \ + "$builddir"/src/USB/driver_fw/fw/aic8800D80/*.bin + install -Dm644 -t "$subpkgdir"/lib/firmware/aic8800_fw/USB/aic8800D80 \ + "$builddir"/src/USB/driver_fw/fw/aic8800D80/*.txt +} + +sha512sums=" +d99215a577ebc65d275c00298e7ddd8819e3ecd16f0db352dd7b2a3665d12da80ee62c97e7f7de96c62b7237c0f6b7d1dffc13e6d16bac86fd2d052432772be8 aic8800-5.0+git20260123.5f7be68d-5.tar.gz +" -- cgit v1.2.3