summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Vogel <jvogel@stygian.me>2026-07-28 05:04:09 -0400
committerJohn Vogel <jvogel@stygian.me>2026-07-28 05:04:09 -0400
commit2b0afe1960bc606395238eb191f28f67fe049e27 (patch)
treeca52626b909a821216594507a06a7da3b807d91b
parent7bc38f416153ad68e09fe0c70b349ee19a86a2e6 (diff)
downloaddragon-2b0afe1960bc606395238eb191f28f67fe049e27.tar.gz
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.
-rw-r--r--aic8800-dragon/APKBUILD150
1 files changed, 150 insertions, 0 deletions
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 <jvogel@stygian.me>
+
+# 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 <jvogel@stygian.me>"
+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
+"