[][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/Config.in b/package-21.02/kernel/tops/Config.in
index b76fc0b..768323c 100644
--- a/package-21.02/kernel/tops/Config.in
+++ b/package-21.02/kernel/tops/Config.in
@@ -1,7 +1,22 @@
-menu "TOPS configuration"
+menu "TOPS Configurations"
 	depends on PACKAGE_kmod-tops
 
-source "Config-protocols.in"
+choice
+	prompt "TOPS Build Target"
+	default MTK_TOPS_RELEASE_TARGET
+	help
+	  select TOPS build target. Either release or developing target
+
+config MTK_TOPS_RELEASE_TARGET
+	bool "MTK TOPS Release Target Build"
+	select PACKAGE_kmod-tops-release
+	select PACAKGE_tops-rebb-fw-release
+
+config MTK_TOPS_DEV_TARGET
+	bool "MTK TOPS Developing Target Build"
+	select PACKAGE_kmod-tops-dev
+	select PACKAGE_tops-rebb-fw-dev
+endchoice
 
 choice
 	prompt "TOPS Tunnel Count"
@@ -14,27 +29,7 @@
 
 endchoice
 
-choice
-	prompt "TOPS Firmware Target"
-	default MTK_TOPS_FIRMWARE_RELEASE
-	help
-	  Select TOPS firmware target. Either release or latest firmware
-
-config MTK_TOPS_FIRMWARE_RELEASE
-	bool "MTK TOPS Firmware Release Build"
-	select PACKAGE_tops-rebb-fw-release
-
-config MTK_TOPS_FIRMWARE_LATEST
-	bool "MTK TOPS Firmware Latest Build"
-	select PACKAGE_tops-rebb-fw
-
-endchoice
-
-config MTK_TOPS_SECURE_FW
-	bool "TOPS Secure Firmware Load"
-	default n
-	help
-	  Enable TOPS secure firmware load
+source "$(SOURCE)/Config-protocols.in"
 
 config TOPS_TNL_NUM
 	int
@@ -50,4 +45,10 @@
 	  Configuration for TOPS tunnel map bit. This value should be the log
 	  of TOPS_TNL_NUM.
 
+config MTK_TOPS_SECURE_FW
+	bool "TOPS Secure Firmware Load"
+	default n
+	help
+	  Enable TOPS secure firmware load
+
 endmenu
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))
diff --git a/package-21.02/kernel/tops/tops.mk b/package-21.02/kernel/tops/tops.mk
new file mode 100644
index 0000000..dab1b4b
--- /dev/null
+++ b/package-21.02/kernel/tops/tops.mk
@@ -0,0 +1,25 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# Copyright (C) 2023 Mediatek Inc. All Rights Reserved.
+# Author: Ren-Ting Wang <ren-ting.wang@mediatek.com>
+#
+
+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