Date: Mon, 5 Jan 2026 14:04:58 +0100 From: Tassilo Philipp <tphilipp@potion-studios.com> To: freebsd-wireless@freebsd.org Subject: iwlwifi(4) on riscv64 (intel ax200) Message-ID: <20260117535483.43589553@potion-studios.com> Resent-Message-ID: <aVu41TGjTy5wgZhE@localhost>
index | next in thread | raw e-mail
[-- Attachment #1 --]
I thought I simply share this here, maybe it's useful to someone. I got
an intel wifi-6 ax200 m.2 slot card working on a HiFive Unmatched board
w/ fbsd 15.0. It seems to work fine for me, so far, but it's in no way
thoroughly tested...
In order to build the if_iwlwifi kernel module I needed to
disable ACPI in the module's Makefile, and patch a source file to add
some missing ACPI related #ifdefs.
Also, some firmware files need to be built and installed via ports'
net/wifi-firmware-iwlwifi-kmod. Those firmware files can be built on
any platform - when building them on riscv64 themselves, a small patch
needs to be applied to net/wifi-firmware-kmod so riscv64 isn't excluded,
though.
Anywho, to have a seemingly working iwlwifi(4) on my riscv64 setup, the
following steps were needed:
1) make sure src is installed
2) apply attached patch (which does the tweaks described above)
3) build/install kernel module from source:
cd /usr/src/sys/modules/iwlwifi
make
make install clean
4) install firmware port:
cd /usr/ports/net/wifi-firmware-iwlwifi-kmod
make install clean
5) kldload wlan_ccmp wlan_amrr if_iwlwifi
As said, thought that I share this here, happy that it's working, but no
idea or guarantee about stability and correctness.
Cheers
[-- Attachment #2 --]
--- /usr/src/sys/contrib/dev/iwlwifi/pcie/gen1_2/trans.c
+++ /usr/src/sys/contrib/dev/iwlwifi/pcie/gen1_2/trans.c
@@ -2060,6 +2060,7 @@
void iwl_trans_pcie_check_product_reset_mode(struct pci_dev *pdev)
{
+#ifdef CONFIG_ACPI
union acpi_object *res;
res = iwl_trans_pcie_call_prod_reset_dsm(pdev,
@@ -2077,11 +2078,13 @@
res->integer.value);
ACPI_FREE(res);
+#endif
}
static void iwl_trans_pcie_set_product_reset(struct pci_dev *pdev, bool enable,
bool integrated)
{
+#ifdef CONFIG_ACPI
union acpi_object *res;
u16 mode = enable ? DSM_INTERNAL_PLDR_MODE_EN_PROD_RESET : 0;
@@ -2104,10 +2107,12 @@
IWL_DEBUG_DEV_POWER(&pdev->dev, "%sabled product reset via DSM\n",
enable ? "En" : "Dis");
iwl_trans_pcie_check_product_reset_mode(pdev);
+#endif
}
void iwl_trans_pcie_check_product_reset_status(struct pci_dev *pdev)
{
+#ifdef CONFIG_ACPI
union acpi_object *res;
res = iwl_trans_pcie_call_prod_reset_dsm(pdev,
@@ -2125,6 +2130,7 @@
res->integer.value);
ACPI_FREE(res);
+#endif
}
static void iwl_trans_pcie_call_reset(struct pci_dev *pdev)
--- /usr/src/sys/modules/iwlwifi/Makefile
+++ /usr/src/sys/modules/iwlwifi/Makefile
@@ -4,7 +4,7 @@
WITH_CONFIG_PM= 0
WITH_DEBUGFS= 0
-WITH_CONFIG_ACPI= 1
+WITH_CONFIG_ACPI= 0
KMOD= if_iwlwifi
--- /usr/ports/net/wifi-firmware-kmod/Makefile.inc
+++ /usr/ports/net/wifi-firmware-kmod/Makefile.inc
@@ -77,7 +77,7 @@
DIST_SUBDIR= linux-firmware/${FWDRV}fw
EXTRACT_ONLY=
-ONLY_FOR_ARCHS= aarch64 amd64 i386
+ONLY_FOR_ARCHS= aarch64 amd64 i386 riscv64
ONLY_FOR_ARCHS_REASON= LinuxKPI driver only available for these architectures
USES= uidfix
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20260117535483.43589553>
