diff --git a/drivers/net/wireless/realtek/rtw88/Makefile b/drivers/net/wireless/realtek/rtw88/Makefile
index c0e4b111c..4b245d2e1 100644
--- a/drivers/net/wireless/realtek/rtw88/Makefile
+++ b/drivers/net/wireless/realtek/rtw88/Makefile
@@ -1,7 +1,39 @@
-# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
+SHELL := /bin/sh
+KVER  ?= $(shell uname -r)
+KSRC := /lib/modules/$(KVER)/build
+FIRMWAREDIR := /lib/firmware/
+PWD := $(shell pwd)
+CLR_MODULE_FILES := *.mod.c *.mod *.o .*.cmd *.ko *~ .tmp_versions* modules.order Module.symvers
+SYMBOL_FILE := Module.symvers
+# 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

-obj-$(CONFIG_RTW88_CORE)	+= rtw88_core.o
-rtw88_core-y += main.o \
+#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
+ifeq ("","$(wildcard MOK.der)")
+NO_SKIP_SIGN := y
+endif
+
+EXTRA_CFLAGS += -O2
+EXTRA_CFLAGS += -DCONFIG_RTW88_8822BE=1
+EXTRA_CFLAGS += -DCONFIG_RTW88_8821CE=1
+EXTRA_CFLAGS += -DCONFIG_RTW88_8822CE=1
+EXTRA_CFLAGS += -DCONFIG_RTW88_8723DE=1
+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 \
@@ -14,34 +46,130 @@ rtw88_core-y += main.o \
 	   fw.o \
 	   ps.o \
 	   sec.o \
-	   bf.o \
 	   wow.o \
-	   regd.o
+	   bf.o \
+	   regd.o \
+	   sar.o
+
+obj-m       += rtw_8822b.o
+rtw_8822b-objs                := rtw8822b.o rtw8822b_table.o
+
+obj-m      += rtw_8822be.o
+rtw_8822be-objs               := rtw8822be.o
+
+obj-m      += rtw_8822bu.o
+rtw_8822bu-objs		:= rtw8822bu.o
+
+obj-m	   += rtw_8822bs.o
+rtw_8822bs-objs		:= rtw8822bs.o
+
+obj-m       += rtw_8822c.o
+rtw_8822c-objs                := rtw8822c.o rtw8822c_table.o
+
+obj-m      += rtw_8822ce.o
+rtw_8822ce-objs               := rtw8822ce.o
+
+obj-m      += rtw_8822cu.o
+rtw_8822cu-objs		:= rtw8822cu.o
+
+obj-m	   += rtw_8822cs.o
+rtw_8822cs-objs		:= rtw8822cs.o
+
+obj-m       += rtw_8723d.o
+rtw_8723d-objs          := rtw8723d.o rtw8723d_table.o
+
+obj-m      += rtw_8723de.o
+rtw_8723de-objs               := rtw8723de.o
+
+obj-m      += rtw_8723du.o
+rtw_8723du-objs		:= rtw8723du.o
+
+obj-m	+= rtw_8821c.o
+rtw_8821c-objs		:= rtw8821c.o rtw8821c_table.o
+
+obj-m	+= rtw_8821ce.o
+rtw_8821ce-objs		:= rtw8821ce.o
+
+obj-m	   += rtw_8821cs.o
+rtw_8821cs-objs		:= rtw8822cs.o
+
+obj-m	+= rtw_8821cu.o
+rtw_8821cu-objs		:= rtw8821cu.o
+
+obj-m			+= rtw_pci.o
+rtw_pci-objs		:= pci.o
+
+obj-m			+= rtw_sdio.o
+rtw_sdio-objs		:= sdio.o
+
+obj-m			+= rtw_usb.o
+rtw_usb-objs		:= usb.o

+obj-m         += rtw_usb.o
+rtw_usb-objs                := usb.o

-obj-$(CONFIG_RTW88_8822B)	+= rtw88_8822b.o
-rtw88_8822b-objs		:= rtw8822b.o rtw8822b_table.o
+ccflags-y += -D__CHECK_ENDIAN__

-obj-$(CONFIG_RTW88_8822BE)	+= rtw88_8822be.o
-rtw88_8822be-objs		:= rtw8822be.o
+all:
+	$(MAKE) -C $(KSRC) M=$(PWD) modules
+install: all
+	@mkdir -p $(MODDESTDIR)
+	@install -p -D -m 644 *.ko $(MODDESTDIR)
+	@#copy firmware images to target folder
+	@mkdir -p $(FIRMWAREDIR)/rtw88/
+	@cp -f *.bin $(FIRMWAREDIR)/rtw88/
+ifeq ($(COMPRESS_GZIP), y)
+	@gzip -f $(MODDESTDIR)/*.ko
+endif
+ifeq ($(COMPRESS_XZ), y)
+	@xz -f $(MODDESTDIR)/*.ko
+endif

-obj-$(CONFIG_RTW88_8822C)	+= rtw88_8822c.o
-rtw88_8822c-objs		:= rtw8822c.o rtw8822c_table.o
+	@depmod -a $(KVER)

-obj-$(CONFIG_RTW88_8822CE)	+= rtw88_8822ce.o
-rtw88_8822ce-objs		:= rtw8822ce.o
+	@echo "Install rtw88 SUCCESS"

-obj-$(CONFIG_RTW88_8723D)	+= rtw88_8723d.o
-rtw88_8723d-objs		:= rtw8723d.o rtw8723d_table.o
+uninstall:
+	@modprobe -r rtw_8822be
+	@modprobe -r rtw_8822ce
+	@modprobe -r rtw_8723de
+	@rm -f $(MODDESTDIR)/rtw_*.ko
+
+	@depmod -a
+
+	@echo "Uninstall rtw88 SUCCESS"

-obj-$(CONFIG_RTW88_8723DE)	+= rtw88_8723de.o
-rtw88_8723de-objs		:= rtw8723de.o
+clean:
+	@rm -fr *.mod.c *.mod *.cmd *.o .*.cmd *.ko *~ .*.o.d .cache.mk
+	@rm -fr .tmp_versions
+	@rm -fr Modules.symvers
+	@rm -fr Module.symvers
+	@rm -fr Module.markers
+	@rm -fr modules.order

-obj-$(CONFIG_RTW88_8821C)	+= rtw88_8821c.o
-rtw88_8821c-objs		:= rtw8821c.o rtw8821c_table.o
+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
+	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der rtw_pci.ko
+	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der rtw_core.ko
+	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der rtw_8723d.ko
+	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der rtw_8723de.ko
+	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der rtw_8822b.ko
+	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der rtw_8822be.ko
+	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der rtw_8822bu.ko
+	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der rtw_8822bs.ko
+	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der rtw_8821c.ko
+	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der rtw_8821ce.ko
+	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der rtw_8821cu.ko
+	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der rtw_8821cs.ko
+	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der rtw_8822c.ko
+	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der rtw_8822ce.ko
+	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der rtw_8822cu.ko
+	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der rtw_8822cs.ko

-obj-$(CONFIG_RTW88_8821CE)	+= rtw88_8821ce.o
-rtw88_8821ce-objs		:= rtw8821ce.o
+sign-install: all sign install

-obj-$(CONFIG_RTW88_PCI)		+= rtw88_pci.o
-rtw88_pci-objs			:= pci.o
