SHELL := /bin/sh KVER ?= $(if $(KERNELRELEASE),$(KERNELRELEASE),$(shell uname -r)) KSRC ?= $(if $(KERNEL_SRC),$(KERNEL_SRC),/lib/modules/$(KVER)/build) FWDIR := /lib/firmware/rtw88 JOBS ?= $(shell nproc --ignore=1) MODLIST := rtw_8723cs rtw_8723de rtw_8723ds rtw_8723du \ rtw_8812au rtw_8814ae rtw_8814au rtw_8821au rtw_8821ce rtw_8821cs rtw_8821cu \ rtw_8822be rtw_8822bs rtw_8822bu rtw_8822ce rtw_8822cs rtw_8822cu \ rtw_8703b rtw_8723d rtw_8821a rtw_8812a rtw_8814a rtw_8821c rtw_8822b rtw_8822c \ rtw_8723x rtw_88xxa rtw_pci rtw_sdio rtw_usb rtw_core # Handle the move of the entire rtw88 tree ifneq ("","$(wildcard /lib/modules/$(KVER)/kernel/drivers/net/wireless/realtek)") MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/realtek/rtw88 else MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/rtw88 endif ifneq ("$(INSTALL_MOD_PATH)", "") DEPMOD_ARGS = -b $(INSTALL_MOD_PATH) else DEPMOD_ARGS = endif #Handle the compression option for modules in 3.18+ ifneq ("","$(wildcard $(MODDESTDIR)/*.ko.gz)") COMPRESS_GZIP := y endif ifneq ("","$(wildcard $(MODDESTDIR)/*.ko.xz)") COMPRESS_XZ := y endif ifneq ("","$(wildcard $(MODDESTDIR)/*.ko.zst)") COMPRESS_ZSTD := y endif ifeq ("","$(wildcard MOK.der)") NO_SKIP_SIGN := y endif EXTRA_CFLAGS += -O2 -std=gnu11 -Wno-declaration-after-statement ifeq ($(CONFIG_PCI), y) EXTRA_CFLAGS += -DCONFIG_RTW88_8822BE=1 EXTRA_CFLAGS += -DCONFIG_RTW88_8821CE=1 EXTRA_CFLAGS += -DCONFIG_RTW88_8822CE=1 EXTRA_CFLAGS += -DCONFIG_RTW88_8723DE=1 endif EXTRA_CFLAGS += -DCONFIG_RTW88_DEBUG=1 EXTRA_CFLAGS += -DCONFIG_RTW88_DEBUGFS=1 #EXTRA_CFLAGS += -DCONFIG_RTW88_REGD_USER_REG_HINTS obj-m += rtw_core.o rtw_core-objs += main.o \ mac80211.o \ util.o \ debug.o \ tx.o \ rx.o \ mac.o \ phy.o \ coex.o \ efuse.o \ fw.o \ ps.o \ sec.o \ bf.o \ regd.o \ sar.o ifeq ($(CONFIG_PM), y) rtw_core-objs += wow.o endif obj-m += rtw_8703b.o rtw_8703b-objs := rtw8703b.o rtw8703b_tables.o ifneq ($(CONFIG_MMC), ) obj-m += rtw_8723cs.o rtw_8723cs-objs := rtw8723cs.o endif obj-m += rtw_8723d.o rtw_8723d-objs := rtw8723d.o rtw8723d_table.o ifeq ($(CONFIG_PCI), y) obj-m += rtw_8723de.o rtw_8723de-objs := rtw8723de.o endif ifneq ($(CONFIG_MMC), ) obj-m += rtw_8723ds.o rtw_8723ds-objs := rtw8723ds.o endif obj-m += rtw_8723du.o rtw_8723du-objs := rtw8723du.o obj-m += rtw_8723x.o rtw_8723x-objs := rtw8723x.o obj-m += rtw_8812au.o rtw_8812au-objs := rtw8812au.o obj-m += rtw_8821a.o rtw_8821a-objs := rtw8821a.o rtw8821a_table.o obj-m += rtw_8812a.o rtw_8812a-objs := rtw8812a.o rtw8812a_table.o obj-m += rtw_88xxa.o rtw_88xxa-objs := rtw88xxa.o obj-m += rtw_8821au.o rtw_8821au-objs := rtw8821au.o obj-m += rtw_8814a.o rtw_8814a-objs := rtw8814a.o rtw8814a_table.o obj-m += rtw_8814au.o rtw_8814au-objs := rtw8814au.o ifeq ($(CONFIG_PCI), y) obj-m += rtw_8814ae.o rtw_8814ae-objs := rtw8814ae.o endif obj-m += rtw_8821c.o rtw_8821c-objs := rtw8821c.o rtw8821c_table.o ifeq ($(CONFIG_PCI), y) obj-m += rtw_8821ce.o rtw_8821ce-objs := rtw8821ce.o endif ifneq ($(CONFIG_MMC), ) obj-m += rtw_8821cs.o rtw_8821cs-objs := rtw8821cs.o endif obj-m += rtw_8821cu.o rtw_8821cu-objs := rtw8821cu.o obj-m += rtw_8822b.o rtw_8822b-objs := rtw8822b.o rtw8822b_table.o ifeq ($(CONFIG_PCI), y) obj-m += rtw_8822be.o rtw_8822be-objs := rtw8822be.o endif ifneq ($(CONFIG_MMC), ) obj-m += rtw_8822bs.o rtw_8822bs-objs := rtw8822bs.o endif obj-m += rtw_8822bu.o rtw_8822bu-objs := rtw8822bu.o obj-m += rtw_8822c.o rtw_8822c-objs := rtw8822c.o rtw8822c_table.o ifeq ($(CONFIG_PCI), y) obj-m += rtw_8822ce.o rtw_8822ce-objs := rtw8822ce.o endif ifneq ($(CONFIG_MMC), ) obj-m += rtw_8822cs.o rtw_8822cs-objs := rtw8822cs.o endif obj-m += rtw_8822cu.o rtw_8822cu-objs := rtw8822cu.o ifeq ($(CONFIG_PCI), y) obj-m += rtw_pci.o rtw_pci-objs := pci.o endif ifneq ($(CONFIG_MMC), ) obj-m += rtw_sdio.o rtw_sdio-objs := sdio.o endif obj-m += rtw_usb.o rtw_usb-objs := usb.o ccflags-y += -D__CHECK_ENDIAN__ all: $(MAKE) -j$(JOBS) -C $(KSRC) M=$$PWD modules install: all @install -D -m 644 -t $(MODDESTDIR) *.ko @install -D -m 644 -t /etc/modprobe.d blacklist-rtw88.conf ifeq ($(COMPRESS_GZIP), y) @gzip -f $(MODDESTDIR)/*.ko endif ifeq ($(COMPRESS_XZ), y) @xz -f -C crc32 $(MODDESTDIR)/*.ko endif ifeq ($(COMPRESS_ZSTD), y) @zstd -f -q --rm $(MODDESTDIR)/*.ko endif @depmod $(DEPMOD_ARGS) -a $(KVER) @echo "The rtw88 drivers and firmware files were installed successfully." install_fw: ifeq ($(wildcard $(FWDIR)), ) @install -Dvm 644 -t $(FWDIR) firmware/*.bin else @cp -r firmware tmp ifneq ($(wildcard $(FWDIR)/*.zst), ) @zstd -fq --rm tmp/*.bin endif ifneq ($(wildcard $(FWDIR)/*.xz), ) @xz -f -C crc32 tmp/*.bin endif ifneq ($(wildcard $(FWDIR)/*.gz), ) @gzip -f tmp/*.bin endif @install -Dvm 644 -t $(FWDIR) tmp/* @rm -rf tmp endif uninstall: @for mod in $(MODLIST); do \ rmmod -s $$mod || true; \ done @rm -vf $(MODDESTDIR)/rtw_*.ko* @rm -vf /etc/modprobe.d/blacklist-rtw88.conf @depmod $(DEPMOD_ARGS) @echo "The rtw88 drivers were removed successfully." clean: $(MAKE) -C $(KSRC) M=$$PWD clean @rm -f MOK.* sign: ifeq ($(NO_SKIP_SIGN), y) @openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Custom MOK/" @mokutil --import MOK.der else echo "Skipping key creation" endif @for mod in $(wildcard *.ko); do \ $(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der $$mod; \ done sign-install: all sign install