[][openwrt][mt7988][tops][split release and develop package]

[Description]
Change Makefile structure to support release and developing package.

The first version of this package only support release driver but can
support release and developing firmware.
However, this would lead to some unsynchronized driver and firmware issue
that eventually cause tunnel offload feature failed.

To solve this problem, we provide another driver package that is support
developing driver and firmware.

The new architecture only let customer be able to select release driver and
firmware. For internal development, we can select latest driver and
firmware.

[Release-log]
N/A

Change-Id: I938f183784c65e022945bb1258a05887b819760e
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7950733
diff --git a/package-21.02/kernel/tops/Makefile b/package-21.02/kernel/tops/Makefile
index c84565e..b848646 100644
--- a/package-21.02/kernel/tops/Makefile
+++ b/package-21.02/kernel/tops/Makefile
@@ -13,26 +13,6 @@
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/package-defaults.mk
 
-EXTRA_KCONFIG+= \
-	CONFIG_MTK_TOPS_SUPPORT=m \
-	CONFIG_MTK_TOPS_GRE=$(CONFIG_MTK_TOPS_GRE) \
-	CONFIG_MTK_TOPS_GRETAP=$(CONFIG_MTK_TOPS_GRETAP) \
-	CONFIG_MTK_TOPS_L2TP=$(CONFIG_MTK_TOPS_L2TP) \
-	CONFIG_MTK_TOPS_UDP_L2TP_DATA=$(CONFIG_MTK_TOPS_UDP_L2TP_DATA) \
-	CONFIG_MTK_TOPS_SECURE_FW=$(CONFIG_MTK_TOPS_SECURE_FW)
-
-EXTRA_CFLAGS+= \
-	$(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=m,%,$(filter %=m,$(EXTRA_KCONFIG)))) \
-	$(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(EXTRA_KCONFIG))))
-
-EXTRA_CFLAGS+= \
-	-I$(LINUX_DIR)/drivers/net/ethernet/mediatek/ \
-	-I$(LINUX_DIR)/drivers/dma/ \
-	-I$(KERNEL_BUILD_DIR)/pce/inc/ \
-	-DCONFIG_TOPS_TNL_NUM=$(CONFIG_TOPS_TNL_NUM) \
-	-DCONFIG_TOPS_TNL_MAP_BIT=$(CONFIG_TOPS_TNL_MAP_BIT) \
-	-Wall -Werror
-
 define Build/Prepare
 	mkdir -p $(PKG_BUILD_DIR)
 	$(CP) ./firmware $(PKG_BUILD_DIR)/firmware
@@ -40,16 +20,18 @@
 endef
 
 define Package/tops-rebb-fw-release
-  TITLE:=Mediatek Tunnel Offload Processor System ReBB Firmware
+  TITLE:=Mediatek Tunnel Offload Processor System ReBB Release Firmware
   SECTION:=firmware
   CATEGORY:=Firmware
-  DEPENDS:=@MTK_TOPS_FIRMWARE_RELEASE
+  DEPENDS:= \
+	@MTK_TOPS_RELEASE_TARGET \
+	kmod-tops-release
 endef
 
 define Package/tops-rebb-fw-release/description
-  Support for Mediatek Tunnel Offload Processor System ReBB firmware. The
-  firmware offload and accerlerate APMCU's tunnel protocols traffic. Available
-  offload tunnel include L2oGRE, L2TP.
+  Support for Mediatek Tunnel Offload Processor System ReBB release firmware.
+  The firmware offload and accerlerate APMCU's tunnel protocols traffic.
+  Available offload tunnel include L2oGRE, L2TP.
 endef
 
 define Package/tops-rebb-fw-release/install
@@ -60,46 +42,61 @@
 		$(1)/lib/firmware/mediatek
 endef
 
-define KernelPackage/tops
+define KernelPackage/tops-release
   CATEGORY:=MTK Properties
   SUBMENU:=Drivers
-  TITLE:= MTK Tunnel Offload Processor System Driver
+  TITLE:= MTK Tunnel Offload Processor System Kernel Driver
   FILES+=$(PKG_BUILD_DIR)/tops.ko
   KCONFIG:=
-  DEFAULT:=y
   DEPENDS:= \
-	@TARGET_mediatek_mt7988 \
+	@MTK_TOPS_RELEASE_TARGET \
 	kmod-mediatek_hnat \
+	kmod-tops \
 	+kmod-pce \
 	+@KERNEL_RELAY
 endef
 
-define KernelPackage/tops/description
-  Support for MTK Tunnel Offload Processor System. This system reduces the
-  loading of APMCU's tunnel protocol overhead and improve tunnel protocol's
-  throughput.
-endef
-
-define KernelPackage/tops/config
-	source "$(SOURCE)/Config.in"
+define KernelPackage/tops-release/description
+  Support for MTK Tunnel Offload Processor System Released Driver. The driver
+  controls the TOPS system to reduce the loading of tunnel protocol processing
+  in APMCU.
 endef
 
-define KernelPackage/tops-autoload
+define KernelPackage/tops-release-autoload
   CATEGORY:=MTK Properties
   SUBMENU:=Drivers
   TITLE:= MTK Tunnel Offload Processor System Auto Load
   AUTOLOAD:=$(call AutoLoad,51,tops)
   KCONFIG:=
   DEPENDS:= \
-	kmod-tops \
+	kmod-tops-release \
 	+kmod-pce-autoload
 endef
 
-define KernelPackage/tops-autoload/description
+define KernelPackage/tops-release-autoload/description
   Support for MTK Tunnel Offload Processor System auto load on system
   boot process.
 endef
 
+define KernelPackage/tops
+  CATEGORY:=MTK Properties
+  TITLE:=Mediatek Tunnel Offload Processor System
+  SUBMENU:=Drivers
+  DEFAULT:=y
+  DEPENDS:= \
+	@TARGET_mediatek_mt7988
+endef
+
+define KernelPackage/tops/config
+	source "$(SOURCE)/Config.in"
+endef
+
+define KernelPackage/tops/description
+  Support for MTK Tunnel Offload Processor System. This system reduces the
+  loading of APMCU's tunnel protocol overhead and improve tunnel protocol's
+  throughput.
+endef
+
 define Build/Compile
 	$(MAKE) -C "$(LINUX_DIR)" \
 		$(KERNEL_MAKE_FLAGS) \
@@ -109,6 +106,10 @@
 		modules
 endef
 
+include tops.mk
+include $(filter-out tops.mk,$(wildcard *.mk))
+
 $(eval $(call BuildPackage,tops-rebb-fw-release))
 $(eval $(call KernelPackage,tops))
-$(eval $(call KernelPackage,tops-autoload))
+$(eval $(call KernelPackage,tops-release))
+$(eval $(call KernelPackage,tops-release-autoload))