summaryrefslogtreecommitdiff
path: root/net/wifi-firmware-rtw88-kmod
diff options
context:
space:
mode:
Diffstat (limited to 'net/wifi-firmware-rtw88-kmod')
-rw-r--r--net/wifi-firmware-rtw88-kmod/Makefile36
-rw-r--r--net/wifi-firmware-rtw88-kmod/distinfo48
-rw-r--r--net/wifi-firmware-rtw88-kmod/files/extract-fw-list.sh205
-rw-r--r--net/wifi-firmware-rtw88-kmod/pkg-descr6
4 files changed, 257 insertions, 38 deletions
diff --git a/net/wifi-firmware-rtw88-kmod/Makefile b/net/wifi-firmware-rtw88-kmod/Makefile
index dfd374718937..c1984c95e274 100644
--- a/net/wifi-firmware-rtw88-kmod/Makefile
+++ b/net/wifi-firmware-rtw88-kmod/Makefile
@@ -6,7 +6,8 @@ FWSUBDIR= rtw88
#FWDRV_VERSION= 20230117 # rtw8822c is barfing
#FWDRV_VERSION= 20220209 # Used for a long time
#FWDRV_VERSION= 20240513
-FWDRV_VERSION= 20241017
+#FWDRV_VERSION= 20241017
+FWDRV_VERSION= 20251125
LICENSE_FILE= LICENCE.rtlwifi_firmware.txt
LICENSE_NAME= Realtek firmware license (${FWDRV})
@@ -15,40 +16,53 @@ WHENCE_REGEX= rtw88 -.*
COMPAT_LINUXKPI_SKB_MEM_LIMIT= 1
-# The flavor/firmware lists below are generated by a script
-# also helping to generate the fwget(8) definitions.
-# { sys/contrib/dev/rtw88/zzz_fw_ports_fwget.sh }
+# The flavor/firmware lists below are generated by the
+# files/extract-fw-list.sh script. Usage:
+# 1: checkout the correct tag (FWDRV_VERSION) in linux-firmware.git.
+# 2: ./files/extract-fw-list.sh /path/to/linux-firmware.git rtw88
### >>>
FWSUBS= \
rtw8703b \
rtw8723d \
+ rtw8812a \
+ rtw8814a \
+ rtw8821a \
rtw8821c \
rtw8822b \
rtw8822c
-DISTFILES_rtw8703b= \
+DISTFILES_rtw8703b+= \
${FWSUBDIR}/rtw8703b_fw.bin${DISTURL_SUFFIX} \
${FWSUBDIR}/rtw8703b_wow_fw.bin${DISTURL_SUFFIX}
-DISTFILES_rtw8723d= \
+DISTFILES_rtw8723d+= \
${FWSUBDIR}/rtw8723d_fw.bin${DISTURL_SUFFIX}
-DISTFILES_rtw8821c= \
+DISTFILES_rtw8812a+= \
+ ${FWSUBDIR}/rtw8812a_fw.bin${DISTURL_SUFFIX}
+DISTFILES_rtw8814a+= \
+ ${FWSUBDIR}/rtw8814a_fw.bin${DISTURL_SUFFIX}
+DISTFILES_rtw8821a+= \
+ ${FWSUBDIR}/rtw8821a_fw.bin${DISTURL_SUFFIX}
+DISTFILES_rtw8821c+= \
${FWSUBDIR}/rtw8821c_fw.bin${DISTURL_SUFFIX}
-DISTFILES_rtw8822b= \
+DISTFILES_rtw8822b+= \
${FWSUBDIR}/rtw8822b_fw.bin${DISTURL_SUFFIX}
-DISTFILES_rtw8822c= \
+DISTFILES_rtw8822c+= \
${FWSUBDIR}/rtw8822c_fw.bin${DISTURL_SUFFIX} \
${FWSUBDIR}/rtw8822c_wow_fw.bin${DISTURL_SUFFIX}
DISTFILES_${FWDRV}= \
${DISTFILES_rtw8703b} \
${DISTFILES_rtw8723d} \
+ ${DISTFILES_rtw8812a} \
+ ${DISTFILES_rtw8814a} \
+ ${DISTFILES_rtw8821a} \
${DISTFILES_rtw8821c} \
${DISTFILES_rtw8822b} \
${DISTFILES_rtw8822c}
-
-### <<<
DISTFILES_${FWDRV}_lic= \
${FWSUBDIR}/README${DISTURL_SUFFIX}
+### <<<
+
.include "${BASEDIR}/Makefile.inc"
diff --git a/net/wifi-firmware-rtw88-kmod/distinfo b/net/wifi-firmware-rtw88-kmod/distinfo
index 2fa8d535f6f6..745b8cca6787 100644
--- a/net/wifi-firmware-rtw88-kmod/distinfo
+++ b/net/wifi-firmware-rtw88-kmod/distinfo
@@ -1,21 +1,27 @@
-TIMESTAMP = 1730331931
-SHA256 (linux-firmware/rtw88fw/rtw88/rtw8703b_fw.bin?h=20241017) = 5e32bd891c74a0719c871726b74490cf5e1a05cdcefb8fe2414f80fffdeb9f9d
-SIZE (linux-firmware/rtw88fw/rtw88/rtw8703b_fw.bin?h=20241017) = 20290
-SHA256 (linux-firmware/rtw88fw/rtw88/rtw8703b_wow_fw.bin?h=20241017) = 7156b0d2b4580e63d11a3a78258c35ff28e840c7c6428953920ae6a1cd5d05ac
-SIZE (linux-firmware/rtw88fw/rtw88/rtw8703b_wow_fw.bin?h=20241017) = 23074
-SHA256 (linux-firmware/rtw88fw/rtw88/rtw8723d_fw.bin?h=20241017) = 9c64e079815a333a3f7b731be7cc0be65206ebc883891659dc8ff5ed36a5e2f5
-SIZE (linux-firmware/rtw88fw/rtw88/rtw8723d_fw.bin?h=20241017) = 28884
-SHA256 (linux-firmware/rtw88fw/rtw88/rtw8821c_fw.bin?h=20241017) = 2ef409bc418549fcf294061dd0cae1fc22fd9da79b60524950b25de18732f3f0
-SIZE (linux-firmware/rtw88fw/rtw88/rtw8821c_fw.bin?h=20241017) = 139472
-SHA256 (linux-firmware/rtw88fw/rtw88/rtw8822b_fw.bin?h=20241017) = 378ff7b43ae7da18a0311175abc351a1758d25ce553b44f3c5694758efbea84c
-SIZE (linux-firmware/rtw88fw/rtw88/rtw8822b_fw.bin?h=20241017) = 150984
-SHA256 (linux-firmware/rtw88fw/rtw88/rtw8822c_fw.bin?h=20241017) = 3deecb31210986d98cdbfb000391e08d602a6eee4ffc883969faa2b907ab03ba
-SIZE (linux-firmware/rtw88fw/rtw88/rtw8822c_fw.bin?h=20241017) = 202600
-SHA256 (linux-firmware/rtw88fw/rtw88/rtw8822c_wow_fw.bin?h=20241017) = 6717fc6ff426a74571ac4f04cd9698fb2f356012c05c58aa64cf21ceb6b958a2
-SIZE (linux-firmware/rtw88fw/rtw88/rtw8822c_wow_fw.bin?h=20241017) = 145224
-SHA256 (linux-firmware/rtw88fw/rtw88/README?h=20241017) = 39c44c710469c1069305add9889921b42704a83f11b94c6d88b06dc2efe40686
-SIZE (linux-firmware/rtw88fw/rtw88/README?h=20241017) = 1181
-SHA256 (linux-firmware/rtw88fw/LICENCE.rtlwifi_firmware.txt?h=20241017) = a61351665b4f264f6c631364f85b907d8f8f41f8b369533ef4021765f9f3b62e
-SIZE (linux-firmware/rtw88fw/LICENCE.rtlwifi_firmware.txt?h=20241017) = 2115
-SHA256 (linux-firmware/rtw88fw/WHENCE?h=20241017) = 7851ae8e04d71ccfc741fd2df450ef5724c4a172a0a282f69e8a8ce44877ba84
-SIZE (linux-firmware/rtw88fw/WHENCE?h=20241017) = 291838
+TIMESTAMP = 1765584880
+SHA256 (linux-firmware/rtw88fw/rtw88/rtw8703b_fw.bin?h=20251125) = 5e32bd891c74a0719c871726b74490cf5e1a05cdcefb8fe2414f80fffdeb9f9d
+SIZE (linux-firmware/rtw88fw/rtw88/rtw8703b_fw.bin?h=20251125) = 20290
+SHA256 (linux-firmware/rtw88fw/rtw88/rtw8703b_wow_fw.bin?h=20251125) = 7156b0d2b4580e63d11a3a78258c35ff28e840c7c6428953920ae6a1cd5d05ac
+SIZE (linux-firmware/rtw88fw/rtw88/rtw8703b_wow_fw.bin?h=20251125) = 23074
+SHA256 (linux-firmware/rtw88fw/rtw88/rtw8723d_fw.bin?h=20251125) = 9c64e079815a333a3f7b731be7cc0be65206ebc883891659dc8ff5ed36a5e2f5
+SIZE (linux-firmware/rtw88fw/rtw88/rtw8723d_fw.bin?h=20251125) = 28884
+SHA256 (linux-firmware/rtw88fw/rtw88/rtw8812a_fw.bin?h=20251125) = abdcca4e8bf76ebfba23d433de310ffefebd0ff9d01990639d4cd9602b32b71a
+SIZE (linux-firmware/rtw88fw/rtw88/rtw8812a_fw.bin?h=20251125) = 27030
+SHA256 (linux-firmware/rtw88fw/rtw88/rtw8814a_fw.bin?h=20251125) = aa6bf9d62b2d2d8a37254fd6d917ba2839888cdedc21850d4481874cb1d3d7cb
+SIZE (linux-firmware/rtw88fw/rtw88/rtw8814a_fw.bin?h=20251125) = 68320
+SHA256 (linux-firmware/rtw88fw/rtw88/rtw8821a_fw.bin?h=20251125) = 4693ece655044d96f81bd3f3e8db14dc352b493219c4fd0a75788a6fbd9eac3c
+SIZE (linux-firmware/rtw88fw/rtw88/rtw8821a_fw.bin?h=20251125) = 31898
+SHA256 (linux-firmware/rtw88fw/rtw88/rtw8821c_fw.bin?h=20251125) = 2ef409bc418549fcf294061dd0cae1fc22fd9da79b60524950b25de18732f3f0
+SIZE (linux-firmware/rtw88fw/rtw88/rtw8821c_fw.bin?h=20251125) = 139472
+SHA256 (linux-firmware/rtw88fw/rtw88/rtw8822b_fw.bin?h=20251125) = a72da690597bfa99d8eb6fc2ab090d18d8ad92ac2befd35db1c9e3662d8d8418
+SIZE (linux-firmware/rtw88fw/rtw88/rtw8822b_fw.bin?h=20251125) = 161240
+SHA256 (linux-firmware/rtw88fw/rtw88/rtw8822c_fw.bin?h=20251125) = 3deecb31210986d98cdbfb000391e08d602a6eee4ffc883969faa2b907ab03ba
+SIZE (linux-firmware/rtw88fw/rtw88/rtw8822c_fw.bin?h=20251125) = 202600
+SHA256 (linux-firmware/rtw88fw/rtw88/rtw8822c_wow_fw.bin?h=20251125) = 6717fc6ff426a74571ac4f04cd9698fb2f356012c05c58aa64cf21ceb6b958a2
+SIZE (linux-firmware/rtw88fw/rtw88/rtw8822c_wow_fw.bin?h=20251125) = 145224
+SHA256 (linux-firmware/rtw88fw/rtw88/README?h=20251125) = f94c70b012eea68bfb45e0cfeea17bd76b8f0b3e872b6dbf313012f75ffd4ab0
+SIZE (linux-firmware/rtw88fw/rtw88/README?h=20251125) = 1253
+SHA256 (linux-firmware/rtw88fw/LICENCE.rtlwifi_firmware.txt?h=20251125) = a61351665b4f264f6c631364f85b907d8f8f41f8b369533ef4021765f9f3b62e
+SIZE (linux-firmware/rtw88fw/LICENCE.rtlwifi_firmware.txt?h=20251125) = 2115
+SHA256 (linux-firmware/rtw88fw/WHENCE?h=20251125) = 978a5f084a81eec37f7fc146d0f12b21d263dc1afe97a38bd9556d68fa5b421f
+SIZE (linux-firmware/rtw88fw/WHENCE?h=20251125) = 365316
diff --git a/net/wifi-firmware-rtw88-kmod/files/extract-fw-list.sh b/net/wifi-firmware-rtw88-kmod/files/extract-fw-list.sh
new file mode 100644
index 000000000000..fdfeabc60d11
--- /dev/null
+++ b/net/wifi-firmware-rtw88-kmod/files/extract-fw-list.sh
@@ -0,0 +1,205 @@
+#!/bin/sh
+#
+# Copyright (c) 2025 The FreeBSD Foundation
+#
+# This software was developed by Björn Zeeb
+# under sponsorship from the FreeBSD Foundation.
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Generate the firmware flavors and files from the WHENCE file in
+# linux-firmware.git based on the "MAC" names.
+# It is no longer feasible to generate them from the driver as the
+# firmware names are fully dynamic and require at least a register
+# read on each card. The combinations likely go into the hundreds
+# or thousands.
+# We still check for the firmware file with the highest API version
+# available based on each file name and sort out all the others.
+# We also have to sort out the DVM drier parts which we are not
+# interested in.
+#
+
+FWDIR=${1:-/nonexistent}
+DRVNAME=${2:-NODRVNAMEGIVEN}
+
+if test ! -d ${FWDIR} -o ! -r ${FWDIR}/WHENCE; then
+ printf "Cannot find '%s' or '%s/WHENCE'\n" ${FWDIR} ${FWDIR} >&2
+ printf "USAGE: %s /path/to/linux-firmware.git rtw8[89]\n" $0 >&2
+ exit
+fi
+case "${DRVNAME}" in
+NODRVNAMEGIVEN)
+ printf "USAGE: %s /path/to/linux-firmware.git rtw8[89]\n" $0 >&2
+ exit
+ ;;
+esac
+
+sed -e "s@%%XXX%%@"${DRVNAME}" -.*@g" ../wifi-firmware-kmod/files/WHENCE.awk.in > WHENCE.awk
+awk -f WHENCE.awk ${FWDIR}/WHENCE > WHENCE
+awk -v FWDIR="${FWDIR}" -v DRVNAME="${DRVNAME}" '
+function file_exists(fname)
+{
+ xname = FWDIR "/" DRVNAME "/" fname;
+
+ #printf("DEBUG: checking for file %s\n", xname);
+
+ if ((getline _ < xname) >= 0) {
+ return 1;
+ }
+}
+
+function known_in_2arr(arr, idx1, idx2)
+{
+ for (both in arr) {
+ split(both, sep, SUBSEP);
+ if (sep[1] == idx1 && sep[2] == idx2) {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+function get_flavor(name)
+{
+
+ name = tolower(name);
+
+ # Remove the file name if in subdir.
+ gsub("/[^/]*$", "", name);
+
+ # Reduce to one level
+ n = split(name, a, "/")
+ if (n > 1) {
+ name = a[1];
+ }
+ # Reduce to prefix.
+ if (name ~ /^rtw/) {
+ n = split(name, a, "_")
+ if (n > 1) {
+ name = a[1];
+ }
+ }
+
+ # replace special characters
+ gsub("/", "_", name);
+ gsub("\\.", "", name);
+
+ #printf("FLAVNAME >>%s<<\n", name);
+
+ return name;
+}
+
+function is_flavor_known(name, n, flavarr)
+{
+
+ for (f = 1; f <= n ; f++) {
+ if (flavarr[f] == name)
+ return 1;
+ }
+
+ return 0;
+}
+
+BEGIN {
+ if (!FWDIR) {
+ printf "USAGE: -v FWDIR=/path/to/linux-firmware.git\n"
+ exit
+ }
+
+ flavors_n = 0;
+}
+{
+ if (! /^File:/) {
+ next;
+ }
+
+ gsub("^File: " DRVNAME "/", "");
+
+ name=$0
+ if (!file_exists(name)) {
+ print "DEBUG :: file does not exist :: " $0;
+ next;
+ }
+
+ flav = get_flavor($name);
+
+ if (DRVNAME == "rtw88" && flav == "readme") {
+ print "DEBUG :: skipping rtw88 readme :: " $0;
+ next;
+ }
+
+ if (!is_flavor_known(flav, flavors_n, flavors)) {
+ flavors[++flavors_n] = flav;
+ }
+
+ fwn[flav]++;
+ fwname[flav,fwn[flav]] = name;
+}
+END {
+ # Sort flavors
+ for (i = 1; i < length(flavors); i++) {
+ for (j = i + 1; j <= length(flavors); j++) {
+ if (flavors[i] > flavors[j]) {
+ t=flavors[i]
+ flavors[i]=flavors[j]
+ flavors[j]=t
+ }
+ }
+ }
+
+ printf("FWSUBS=");
+ for (f = 1; f <= length(flavors); f++) {
+ if (fwn[flavors[f]] > 0) {
+ printf(" \\\n\t%s", flavors[f]);
+ }
+ }
+ printf("\n\n");
+
+ # Deal with all the firmware flavors:
+ for (f = 1; f <= length(flavors); f++) {
+ flav=flavors[f];
+
+ #
+ # Firmware files.
+ #
+ if (fwn[flav] > 0) {
+ if (f > 1) {
+ printf("\n");
+ }
+ printf("DISTFILES_%s+=", flav);
+ }
+ # Sort
+ for (i = 1; i < fwn[flav]; i++) {
+ for (j = i + 1; j <= fwn[flav]; j++) {
+ if (fwname[flav,i] > fwname[flav,j]) {
+ t=fwname[flav,i]
+ fwname[flav,i]=fwname[flav,j]
+ fwname[flav,j]=t
+ }
+ }
+ }
+ # Print
+ for (i = 1; i <= fwn[flav]; i++) {
+ printf(" \\\n\t\${FWSUBDIR}/%s\${DISTURL_SUFFIX}", fwname[flav,i]);
+ }
+ }
+ printf("\n");
+
+ printf("\n");
+ printf("DISTFILES_\${FWDRV}=");
+ for (f = 1; f <= length(flavors); f++) {
+ if (fwn[flavors[f]] > 0) {
+ printf(" \\\n\t\${DISTFILES_%s}", flavors[f]);
+ }
+ }
+ printf("\n");
+ printf("DISTFILES_\${FWDRV}_lic=");
+ if (DRVNAME == "rtw88") {
+ printf(" \\\n\t\${FWSUBDIR}/%s\${DISTURL_SUFFIX}", "README");
+ }
+ printf("\n");
+}' WHENCE
+
+rm -f WHENCE.awk WHENCE
+
+# end
diff --git a/net/wifi-firmware-rtw88-kmod/pkg-descr b/net/wifi-firmware-rtw88-kmod/pkg-descr
index 7648756cc451..ae438dbbf99d 100644
--- a/net/wifi-firmware-rtw88-kmod/pkg-descr
+++ b/net/wifi-firmware-rtw88-kmod/pkg-descr
@@ -1,7 +1 @@
Firmware files for Realtek WiFi NICs supported by the rtw88 driver.
-
-Currently supported chipsets:
-- RTL8822BE
-- RTL8821CE
-- RTL8822CE
-- RTL8723DE