aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjoern A. Zeeb <bz@FreeBSD.org>2026-01-26 13:19:14 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2026-02-10 10:16:34 +0000
commit9e175561196066a09c1a89202fd60e0433b87868 (patch)
treedac32fce0df8c9f135b1a32541dff54acad6ce77
parent49c1b388d5a89761980d24aee14f3bd0db7c0dda (diff)
rtw88: Add bus attachments to the module Makefile
In addition to PCIe we will support USB and also prepare for SDIO (still disabled locally). The module SRCS are split up into a common part, which we always add. All three bus parts are guarded by a local variable in the Makefile. In addition the PCI parts require PCI to be compiled into the kernel. We add that check in case of, e.g., SoCs with SDIO but no PCI, which may not have PCI in the kernel config and thus the module would fail to attach. USB has no additional check as it is fully loadable and does not have to be in a kernel config. SDIO depends on an MMCCAM-enabled kernel but is otherwise loadable. While we could, we are not splitting the various bus attachments into individual modules as we generally do not do that in FreeBSD. [1] Sponsored by: The FreeBSD Foundation MFC after: 3 days Discussed with: imp and jhb (2022, 2024), see also 17732dd8f01b [1] OKed by: imp (KERN_OPTS checks initially suggested by jhb) Differential Revision: https://reviews.freebsd.org/D55022
-rw-r--r--sys/modules/rtw88/Makefile82
1 files changed, 59 insertions, 23 deletions
diff --git a/sys/modules/rtw88/Makefile b/sys/modules/rtw88/Makefile
index 0ce6ad3f99bb..2347093db1a5 100644
--- a/sys/modules/rtw88/Makefile
+++ b/sys/modules/rtw88/Makefile
@@ -1,7 +1,15 @@
+.include <kmod.opts.mk>
+
DEVRTW88DIR= ${SRCTOP}/sys/contrib/dev/rtw88
.PATH: ${DEVRTW88DIR}
+# Bus attachments.
+WITH_PCI= 1
+WITH_USB= 0
+WITH_SDIO= 0
+
+# Options.
WITH_CONFIG_PM= 0
WITH_DEBUGFS= 1
WITH_LEDS= 0
@@ -19,41 +27,69 @@ SRCS+= wow.c
CFLAGS+= -DCONFIG_PM=${WITH_CONFIG_PM}
.endif
-# PCI parts.
+# Common
+SRCS+= rtw8723x.c # 87x3 common
+SRCS+= rtw8703b.c rtw8703b_tables.c # 11n
+SRCS+= rtw8723d.c rtw8723d_table.c # 11n
+SRCS+= rtw8814a.c rtw8814a_table.c # 11ac
+SRCS+= rtw8821c.c rtw8821c_table.c # 11ac
+SRCS+= rtw8822b.c rtw8822b_table.c # 11ac
+SRCS+= rtw8822c.c rtw8822c_table.c # 11ac
+
+# PCI parts; PCI needs to be compiled into the kernel and cannot be loaded.
+.if defined(WITH_PCI) && ${WITH_PCI} > 0 && ${KERN_OPTS:MDEV_PCI}
SRCS+= pci.c
-SRCS+= rtw8723x.c # 87x3 common
-SRCS+= rtw8703b.c rtw8703b_tables.c # 11n
-SRCS+= rtw8723d.c rtw8723d_table.c rtw8723de.c # 11n
-SRCS+= rtw8821c.c rtw8821c_table.c rtw8821ce.c # 11ac
-SRCS+= rtw8822b.c rtw8822b_table.c rtw8822be.c # 11ac
-SRCS+= rtw8822c.c rtw8822c_table.c rtw8822ce.c # 11ac
-SRCS+= rtw8814a.c rtw8814a_table.c rtw8814ae.c # 11ac
-
-# USB parts
-#SRCS+= rtw88xxa.c # 88xxa common
-#SRCS+= rtw8812a.c rtw8812a_table.c rtw8812au.c
-#SRCS+= rtw8814au.c
-#SRCS+= rtw8821a.c rtw8821a_table.c rtw8821au.c
-#CFLAGS+= -DCONFIG_RTW88_USB
+SRCS+= rtw8723de.c
+SRCS+= rtw8814ae.c
+SRCS+= rtw8821ce.c
+SRCS+= rtw8822be.c
+SRCS+= rtw8822ce.c
+.endif
+
+# USB parts; USB can be loaded and is unconditional on any kernel config.
+.if defined(WITH_USB) && ${WITH_USB} > 0
+SRCS+= usb.c
+SRCS+= rtw8723du.c
+SRCS+= rtw88xxa.c # 88xxa common
+SRCS+= rtw8812a.c rtw8812a_table.c rtw8812au.c
+SRCS+= rtw8814au.c
+SRCS+= rtw8821a.c rtw8821a_table.c rtw8821au.c
+SRCS+= rtw8821cu.c
+SRCS+= rtw8822bu.c
+SRCS+= rtw8822cu.c
+
+CFLAGS+= -DCONFIG_RTW88_USB
+.endif
+
+# SDIO parts; SDIO depends on an MMCCAM kernel.
+.if defined(WITH_SDIO) && ${WITH_SDIO} > 0 && ${KERN_OPTS:MMMCCAM}
+SRCS+= rtw8723cs.c
+SRCS+= rtw8723ds.c
+SRCS+= rtw8821cs.c
+SRCS+= rtw8822bs.c
+SRCS+= rtw8822cs.c
+.endif
.if defined(WITH_LEDS) && ${WITH_LEDS} > 0
CFLAGS+= -DCONFIG_RTW88_LEDS
SRCS+= led.c
.endif
+.if defined(WITH_DEBUGFS) && ${WITH_DEBUGFS} > 0
+CFLAGS+= -DCONFIG_RTW88_DEBUGFS
+.endif
+
# Other
-SRCS+= ${LINUXKPI_GENSRCS}
-SRCS+= opt_wlan.h opt_inet6.h opt_inet.h
+SRCS+= opt_wlan.h opt_inet6.h opt_inet.h
+SRCS+= ${LINUXKPI_GENSRCS}
-CFLAGS+= -DKBUILD_MODNAME='"rtw88"'
-CFLAGS+= -DLINUXKPI_VERSION=61900
+CFLAGS+= ${LINUXKPI_INCLUDES}
CFLAGS+= -I${DEVRTW88DIR}
-CFLAGS+= ${LINUXKPI_INCLUDES}
CFLAGS+= -DCONFIG_RTW88_DEBUG
-.if defined(WITH_DEBUGFS) && ${WITH_DEBUGFS} > 0
-CFLAGS+= -DCONFIG_RTW88_DEBUGFS
-.endif
+
+CFLAGS+= -DKBUILD_MODNAME='"rtw88"'
+CFLAGS+= -DLINUXKPI_VERSION=61900
# Helpful after fresh imports.
#CFLAGS+= -ferror-limit=0