git: 9e1755611960 - main - rtw88: Add bus attachments to the module Makefile

From: Bjoern A. Zeeb <bz_at_FreeBSD.org>
Date: Tue, 10 Feb 2026 10:16:54 UTC
The branch main has been updated by bz:

URL: https://cgit.FreeBSD.org/src/commit/?id=9e175561196066a09c1a89202fd60e0433b87868

commit 9e175561196066a09c1a89202fd60e0433b87868
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2026-01-26 13:19:14 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2026-02-10 10:16:34 +0000

    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
---
 sys/modules/rtw88/Makefile | 82 +++++++++++++++++++++++++++++++++-------------
 1 file 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