aic8800: Update to V5.0_2026_0123_5f7be68d

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen
2026-03-18 09:56:04 +08:00
parent 7a9c29bd84
commit cd99fb62ac
6 changed files with 617 additions and 521 deletions
+13 -4
View File
@@ -5,13 +5,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=aic8800
PKG_RELEASE:=2
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_DATE:=2025-09-30
PKG_SOURCE_URL:=https://github.com/radxa-pkg/aic8800.git
PKG_SOURCE_VERSION:=2bf2dc64bedaf3f0fcbcc206125afa5da8b3835b
PKG_MIRROR_HASH:=0a2defc3a57e3c1007d719648c83ea5ee0becfb72b77ef30a2fa5833b7622ceb
PKG_SOURCE_DATE:=2026-03-10
PKG_SOURCE_VERSION:=89f865b80f5f2ba6c0711c560e1d0191e87a1bf0
PKG_MIRROR_HASH:=fb54d2ac13109cf49c1b981424f26e3cc595826f033392284f6b3835a162e069
PKG_CONFIG_DEPENDS:=CONFIG_AIC8800_SDIO_BT_SUPPORT
PKG_FLAGS:=nonshared
@@ -138,6 +138,9 @@ define Package/aic8800-sdio-firmware/install
$(CP) \
$(PKG_BUILD_DIR)/src/SDIO/driver_fw/fw/aic8800D80/* \
$(1)/lib/firmware/aic8800/sdio/
$(CP) \
$(PKG_BUILD_DIR)/src/SDIO/driver_fw/fw/aic8800D80N/* \
$(1)/lib/firmware/aic8800/sdio/
$(CP) \
$(PKG_BUILD_DIR)/src/SDIO/driver_fw/fw/aic8800D80X2/* \
$(1)/lib/firmware/aic8800/sdio/
@@ -154,12 +157,18 @@ define Package/aic8800-usb-firmware/install
$(CP) \
$(PKG_BUILD_DIR)/src/USB/driver_fw/fw/aic8800D80/* \
$(1)/lib/firmware/aic8800/usb/
$(CP) \
$(PKG_BUILD_DIR)/src/USB/driver_fw/fw/aic8800D80N/* \
$(1)/lib/firmware/aic8800/usb/
$(CP) \
$(PKG_BUILD_DIR)/src/USB/driver_fw/fw/aic8800D80X2/* \
$(1)/lib/firmware/aic8800/usb/
$(CP) \
$(PKG_BUILD_DIR)/src/USB/driver_fw/fw/aic8800DC/* \
$(1)/lib/firmware/aic8800/usb/
$(CP) \
$(PKG_BUILD_DIR)/src/USB/driver_fw/fw/aic8800DLN/* \
$(1)/lib/firmware/aic8800/usb/
endef
$(eval $(call BuildPackage,aic8800-pcie-firmware))
@@ -1,6 +1,6 @@
--- a/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_main.c
+++ b/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_main.c
@@ -1560,7 +1560,7 @@ static struct rwnx_vif *rwnx_interface_a
@@ -1658,7 +1658,7 @@ static struct rwnx_vif *rwnx_interface_a
vif->ap.generation = 0;
vif->ap.mesh_pm = NL80211_MESH_POWER_ACTIVE;
vif->ap.next_mesh_pm = NL80211_MESH_POWER_ACTIVE;
@@ -9,7 +9,7 @@
case NL80211_IFTYPE_AP:
INIT_LIST_HEAD(&vif->ap.sta_list);
memset(&vif->ap.bcn, 0, sizeof(vif->ap.bcn));
@@ -1971,7 +1971,7 @@ static int rwnx_cfg80211_change_iface(st
@@ -2078,7 +2078,7 @@ static int rwnx_cfg80211_change_iface(st
INIT_LIST_HEAD(&vif->ap.proxy_list);
vif->ap.create_path = false;
vif->ap.generation = 0;
@@ -18,7 +18,7 @@
case NL80211_IFTYPE_AP:
case NL80211_IFTYPE_P2P_GO:
INIT_LIST_HEAD(&vif->ap.sta_list);
@@ -3927,6 +3927,7 @@ static int rwnx_cfg80211_mgmt_tx(struct
@@ -4124,6 +4124,7 @@ static int rwnx_cfg80211_mgmt_tx(struct
switch (RWNX_VIF_TYPE(rwnx_vif)) {
case NL80211_IFTYPE_AP_VLAN:
rwnx_vif = rwnx_vif->ap_vlan.master;
@@ -26,7 +26,7 @@
case NL80211_IFTYPE_AP:
case NL80211_IFTYPE_P2P_GO:
case NL80211_IFTYPE_MESH_POINT:
@@ -4236,7 +4237,7 @@ rwnx_cfg80211_tdls_mgmt(struct wiphy *wi
@@ -4456,7 +4457,7 @@ rwnx_cfg80211_tdls_mgmt(struct wiphy *wi
printk("%s: only one TDLS link is supported!\n", __func__);
status_code = WLAN_STATUS_REQUEST_DECLINED;
}
@@ -35,7 +35,7 @@
case WLAN_TDLS_SETUP_REQUEST:
case WLAN_TDLS_TEARDOWN:
case WLAN_TDLS_DISCOVERY_REQUEST:
@@ -4565,6 +4566,7 @@ static int rwnx_fill_station_info(struct
@@ -4785,6 +4786,7 @@ static int rwnx_fill_station_info(struct
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)
case FORMATMOD_HE_MU:
sinfo->rxrate.he_ru_alloc = rx_vect1->he.ru_size;
@@ -45,7 +45,7 @@
sinfo->rxrate.flags = RATE_INFO_FLAGS_HE_MCS;
--- a/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_msg_tx.c
+++ b/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_msg_tx.c
@@ -524,7 +524,7 @@ int rwnx_send_add_if (struct rwnx_hw *rw
@@ -525,7 +525,7 @@ int rwnx_send_add_if (struct rwnx_hw *rw
//case NL80211_IFTYPE_P2P_DEVICE:
case NL80211_IFTYPE_P2P_CLIENT:
add_if_req_param->p2p = true;
@@ -54,7 +54,7 @@
#endif /* CONFIG_RWNX_FULLMAC */
case NL80211_IFTYPE_STATION:
add_if_req_param->type = MM_STA;
@@ -537,7 +537,7 @@ int rwnx_send_add_if (struct rwnx_hw *rw
@@ -538,7 +538,7 @@ int rwnx_send_add_if (struct rwnx_hw *rw
#ifdef CONFIG_RWNX_FULLMAC
case NL80211_IFTYPE_P2P_GO:
add_if_req_param->p2p = true;
@@ -94,7 +94,7 @@
static void
--- a/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_tx.c
+++ b/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_tx.c
@@ -332,6 +332,7 @@ u16 rwnx_select_txq(struct rwnx_vif *rwn
@@ -334,6 +334,7 @@ u16 rwnx_select_txq(struct rwnx_vif *rwn
/* AP_VLAN interface is not used for a 4A STA,
fallback searching sta amongs all AP's clients */
rwnx_vif = rwnx_vif->ap_vlan.master;
@@ -114,7 +114,7 @@
case NL80211_IFTYPE_P2P_GO:
--- a/src/USB/driver_fw/drivers/aic8800/aic8800_fdrv/rwnx_main.c
+++ b/src/USB/driver_fw/drivers/aic8800/aic8800_fdrv/rwnx_main.c
@@ -1866,7 +1866,7 @@ static struct rwnx_vif *rwnx_interface_a
@@ -1950,7 +1950,7 @@ static struct rwnx_vif *rwnx_interface_a
vif->ap.generation = 0;
vif->ap.mesh_pm = NL80211_MESH_POWER_ACTIVE;
vif->ap.next_mesh_pm = NL80211_MESH_POWER_ACTIVE;
@@ -123,7 +123,7 @@
case NL80211_IFTYPE_AP:
INIT_LIST_HEAD(&vif->ap.sta_list);
memset(&vif->ap.bcn, 0, sizeof(vif->ap.bcn));
@@ -2465,7 +2465,7 @@ static int rwnx_cfg80211_change_iface(st
@@ -2679,7 +2679,7 @@ static int rwnx_cfg80211_change_iface(st
INIT_LIST_HEAD(&vif->ap.proxy_list);
vif->ap.create_path = false;
vif->ap.generation = 0;
@@ -132,7 +132,7 @@
case NL80211_IFTYPE_AP:
case NL80211_IFTYPE_P2P_GO:
INIT_LIST_HEAD(&vif->ap.sta_list);
@@ -4626,6 +4626,7 @@ static int rwnx_cfg80211_mgmt_tx(struct
@@ -4984,6 +4984,7 @@ static int rwnx_cfg80211_mgmt_tx(struct
switch (RWNX_VIF_TYPE(rwnx_vif)) {
case NL80211_IFTYPE_AP_VLAN:
rwnx_vif = rwnx_vif->ap_vlan.master;
@@ -140,7 +140,7 @@
case NL80211_IFTYPE_AP:
case NL80211_IFTYPE_P2P_GO:
case NL80211_IFTYPE_MESH_POINT:
@@ -5299,6 +5300,7 @@ static int rwnx_fill_station_info(struct
@@ -5821,6 +5822,7 @@ int rwnx_fill_station_info(struct rwnx_s
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)
case FORMATMOD_HE_MU:
sinfo->rxrate.he_ru_alloc = rx_vect1->he.ru_size;
@@ -150,7 +150,7 @@
sinfo->rxrate.flags = RATE_INFO_FLAGS_HE_MCS;
--- a/src/USB/driver_fw/drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.c
+++ b/src/USB/driver_fw/drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.c
@@ -613,7 +613,7 @@ int rwnx_send_add_if(struct rwnx_hw *rwn
@@ -618,7 +618,7 @@ int rwnx_send_add_if(struct rwnx_hw *rwn
//case NL80211_IFTYPE_P2P_DEVICE:
case NL80211_IFTYPE_P2P_CLIENT:
add_if_req_param->p2p = true;
@@ -159,7 +159,7 @@
#endif /* CONFIG_RWNX_FULLMAC */
case NL80211_IFTYPE_STATION:
add_if_req_param->type = MM_STA;
@@ -626,7 +626,7 @@ int rwnx_send_add_if(struct rwnx_hw *rwn
@@ -631,7 +631,7 @@ int rwnx_send_add_if(struct rwnx_hw *rwn
#ifdef CONFIG_RWNX_FULLMAC
case NL80211_IFTYPE_P2P_GO:
add_if_req_param->p2p = true;
@@ -199,7 +199,7 @@
static void
--- a/src/USB/driver_fw/drivers/aic8800/aic8800_fdrv/rwnx_tx.c
+++ b/src/USB/driver_fw/drivers/aic8800/aic8800_fdrv/rwnx_tx.c
@@ -328,6 +328,7 @@ u16 rwnx_select_txq(struct rwnx_vif *rwn
@@ -329,6 +329,7 @@ u16 rwnx_select_txq(struct rwnx_vif *rwn
/* AP_VLAN interface is not used for a 4A STA,
fallback searching sta amongs all AP's clients */
rwnx_vif = rwnx_vif->ap_vlan.master;
@@ -217,36 +217,3 @@
case NL80211_IFTYPE_AP:
case NL80211_IFTYPE_MESH_POINT:
case NL80211_IFTYPE_P2P_GO:
--- a/src/USB/driver_fw/drivers/aic_btusb/aic_btusb.c
+++ b/src/USB/driver_fw/drivers/aic_btusb/aic_btusb.c
@@ -1476,6 +1476,7 @@ static long btchr_ioctl(struct file *fil
return 1;
case DWFW_CMPLT:
AICBT_INFO(" btchr_ioctl DWFW_CMPLT");
+ fallthrough;
#if 1
case SET_ISO_CFG:
AICBT_INFO("btchr_ioctl SET_ISO_CFG");
@@ -1485,6 +1486,7 @@ static long btchr_ioctl(struct file *fil
//hdev->voice_setting = *(uint16_t*)arg;
AICBT_INFO(" voice settings = %d", hdev->voice_setting);
//return 1;
+ fallthrough;
#endif
case GET_USB_INFO:
//ret = download_patch(fw_info,1);
@@ -1513,14 +1515,6 @@ static long btchr_ioctl(struct file *fil
}
-#ifdef CONFIG_PLATFORM_UBUNTU//AIDEN
-typedef u32 compat_uptr_t;
-static inline void __user *compat_ptr(compat_uptr_t uptr)
-{
- return (void __user *)(unsigned long)uptr;
-}
-#endif
-
#ifdef CONFIG_COMPAT
static long compat_btchr_ioctl (struct file *filp, unsigned int cmd, unsigned long arg)
{
File diff suppressed because it is too large Load Diff
@@ -1,6 +1,6 @@
--- a/src/PCIE/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_main.c
+++ b/src/PCIE/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_main.c
@@ -524,8 +524,8 @@ int wifi_fail = 0;
@@ -535,8 +535,8 @@ int wifi_fail = 0;
module_param(testmode, int, 0660);
module_param(adap_test, int, 0660);
module_param(wifi_fail, int, 0660);
@@ -13,7 +13,7 @@
u8 chip_id = 0;
--- a/src/USB/driver_fw/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80.c
+++ b/src/USB/driver_fw/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80.c
@@ -38,7 +38,7 @@ int rwnx_plat_userconfig_load_8800d80(st
@@ -39,7 +39,7 @@ int rwnx_plat_userconfig_load_8800d80(st
u32 *dst=NULL;
char *filename = FW_USERCONFIG_NAME_8800D80;
@@ -24,18 +24,18 @@
--- a/src/USB/driver_fw/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80x2.c
+++ b/src/USB/driver_fw/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80x2.c
@@ -39,7 +39,7 @@ int rwnx_plat_userconfig_load_8800d80x2(
u32 *dst=NULL;
char *filename = FW_USERCONFIG_NAME_8800D80X2;
-#ifndef ANDROID_PLATFORM
+#if 0
sprintf(aic_fw_path, "%s/%s", aic_fw_path, "aic8800D80X2");
#endif
@@ -40,7 +40,7 @@ int rwnx_plat_userconfig_load_8800d80x2(
u32 *dst=NULL;
char *filename = FW_USERCONFIG_NAME_8800D80X2;
-#ifndef ANDROID_PLATFORM
+#if 0
sprintf(aic_fw_path, "%s/%s", aic_fw_path, "aic8800D80X2");
#endif
--- a/src/USB/driver_fw/drivers/aic8800/aic8800_fdrv/rwnx_platform.c
+++ b/src/USB/driver_fw/drivers/aic8800/aic8800_fdrv/rwnx_platform.c
@@ -1599,7 +1599,7 @@ static int rwnx_plat_patch_load(struct r
@@ -1668,7 +1668,7 @@ static int rwnx_plat_patch_load(struct r
if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DC ||
rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DW){
@@ -46,7 +46,7 @@
AICWFDBG(LOGINFO, "testmode=%d\n", testmode);
--- a/src/USB/driver_fw/drivers/aic8800/aic_load_fw/Makefile
+++ b/src/USB/driver_fw/drivers/aic8800/aic_load_fw/Makefile
@@ -26,6 +26,7 @@ CONFIG_AIC_LOADFW_SUPPORT = m
@@ -29,6 +29,7 @@ CONFIG_AIC_LOADFW_SUPPORT = m
MODULE_NAME = aic_load_fw
# CONFIG_AIC_FW_PATH = "/vendor/etc/firmware"
# export CONFIG_AIC_FW_PATH
@@ -56,7 +56,7 @@
ccflags-y += -DAICWF_USB_SUPPORT
--- a/src/USB/driver_fw/drivers/aic8800/aic_load_fw/aicbluetooth.c
+++ b/src/USB/driver_fw/drivers/aic8800/aic_load_fw/aicbluetooth.c
@@ -174,7 +174,7 @@ enum aicbsp_cpmode_type {
@@ -144,7 +144,7 @@ enum aicbsp_cpmode_type {
#define FW_PATH_MAX 200
#if defined(CONFIG_PLATFORM_UBUNTU)
@@ -65,7 +65,7 @@
#else
static const char* aic_default_fw_path = "/vendor/etc/firmware";
#endif
@@ -274,7 +274,7 @@ static int aic_load_firmware(u32 ** fw_b
@@ -321,7 +321,7 @@ static int aic_load_firmware(u32 ** fw_b
printk("%s: use customer define fw_path\n", __func__);
len = snprintf(path, FW_PATH_MAX, "%s/%s", aic_fw_path, name);
} else {
@@ -86,12 +86,12 @@
obj-$(CONFIG_AIC8800_BTUSB_SUPPORT) := $(MODULE_NAME).o aic_btusb_external_featrue.o
--- a/src/USB/driver_fw/drivers/aic_btusb/aic_btusb.c
+++ b/src/USB/driver_fw/drivers/aic_btusb/aic_btusb.c
@@ -2411,7 +2411,7 @@ struct aicbsp_info_t aicbsp_info = {
char aic_fw_path[FW_PATH_MAX];
#if (CONFIG_BLUEDROID == 0)
-static const char* aic_default_fw_path = "/lib/firmware/aic8800DC";
+static const char* aic_default_fw_path = CONFIG_AIC_FW_PATH;
#else
static const char* aic_default_fw_path = "/vendor/etc/firmware";
#endif
@@ -2844,7 +2844,7 @@ struct aicbsp_info_t aicbsp_info = {
char aic_fw_path[FW_PATH_MAX];
#if (CONFIG_BLUEDROID == 0) || defined (CONFIG_PLATFORM_UBUNTU)
-static const char* aic_default_fw_path = "/lib/firmware";
+static const char* aic_default_fw_path = CONFIG_AIC_FW_PATH;
#else
static const char* aic_default_fw_path = "/vendor/etc/firmware";
#endif
@@ -1,10 +1,10 @@
--- a/src/PCIE/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_main.c
+++ b/src/PCIE/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_main.c
@@ -512,7 +512,7 @@ static const int rwnx_hwq2uapsd[NL80211_
@@ -523,7 +523,7 @@ static const int rwnx_hwq2uapsd[NL80211_
#endif
extern uint8_t scanning;
-int aicwf_dbg_level = LOGERROR|LOGINFO|LOGDEBUG|LOGTRACE;
-int aicwf_dbg_level = LOGERROR|LOGINFO|LOGDEBUG|LOGTRACE|LOGFW;
+int aicwf_dbg_level = LOGDATA;
module_param(aicwf_dbg_level, int, 0660);
#ifdef CONFIG_DYNAMIC_PWR
@@ -43,18 +43,18 @@
--- a/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_main.c
+++ b/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_main.c
@@ -512,7 +512,7 @@ static const int rwnx_hwq2uapsd[NL80211_
@@ -535,7 +535,7 @@ static const int rwnx_hwq2uapsd[NL80211_
extern uint8_t scanning;
-int aicwf_dbg_level = LOGERROR|LOGINFO|LOGDEBUG|LOGTRACE;
-int aicwf_dbg_level = LOGERROR|LOGINFO|LOGDEBUG|LOGTRACE|LOGFW;
+int aicwf_dbg_level = LOGWAKELOCK;
module_param(aicwf_dbg_level, int, 0660);
int testmode = 0;
char aic_fw_path[200];
#ifdef CONFIG_DYNAMIC_PWR
int dynamic_pwr = 1;
--- a/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_platform.c
+++ b/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_platform.c
@@ -1027,7 +1027,7 @@ s8_l get_txpwr_max(s8_l power)
@@ -1073,7 +1073,7 @@ s8_l get_txpwr_max(s8_l power)
}
}
@@ -65,11 +65,11 @@
--- a/src/USB/driver_fw/drivers/aic8800/aic8800_fdrv/rwnx_main.c
+++ b/src/USB/driver_fw/drivers/aic8800/aic8800_fdrv/rwnx_main.c
@@ -536,7 +536,7 @@ static const int rwnx_hwq2uapsd[NL80211_
@@ -548,7 +548,7 @@ static const int rwnx_hwq2uapsd[NL80211_
struct semaphore aicwf_deinit_sem;
atomic_t aicwf_deinit_atomic;
-int aicwf_dbg_level = LOGERROR|LOGINFO;
-int aicwf_dbg_level = LOGERROR|LOGINFO|LOGFW;
+int aicwf_dbg_level = LOGDATA;
module_param(aicwf_dbg_level, int, 0660);
#ifdef CONFIG_DYNAMIC_PWR
@@ -1,6 +1,6 @@
--- a/src/USB/driver_fw/drivers/aic8800/aic8800_fdrv/aicwf_usb.c
+++ b/src/USB/driver_fw/drivers/aic8800/aic8800_fdrv/aicwf_usb.c
@@ -1250,7 +1250,7 @@ int usb_bustx_thread(void *data)
@@ -1252,7 +1252,7 @@ int usb_bustx_thread(void *data)
#ifdef CONFIG_THREAD_INFO_IN_TASK
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 16, 0))
@@ -9,7 +9,7 @@
#else
AICWFDBG(LOGINFO, "%s the cpu is:%d\n", __func__, current->cpu);
#endif
@@ -1259,7 +1259,7 @@ int usb_bustx_thread(void *data)
@@ -1261,7 +1261,7 @@ int usb_bustx_thread(void *data)
#ifdef CONFIG_THREAD_INFO_IN_TASK
AICWFDBG(LOGINFO, "%s set_cpu_ret is:%d\n", __func__, set_cpu_ret);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 16, 0))
@@ -18,7 +18,7 @@
#else
AICWFDBG(LOGINFO, "%s change cpu to:%d\n", __func__, current->cpu);
#endif
@@ -1317,7 +1317,7 @@ int usb_busrx_thread(void *data)
@@ -1319,7 +1319,7 @@ int usb_busrx_thread(void *data)
#ifdef CONFIG_THREAD_INFO_IN_TASK
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 16, 0))
@@ -27,7 +27,7 @@
#else
AICWFDBG(LOGINFO, "%s the cpu is:%d\n", __func__, current->cpu);
#endif
@@ -1326,7 +1326,7 @@ int usb_busrx_thread(void *data)
@@ -1328,7 +1328,7 @@ int usb_busrx_thread(void *data)
#ifdef CONFIG_THREAD_INFO_IN_TASK
AICWFDBG(LOGINFO, "%s set_cpu_ret is:%d\n", __func__, set_cpu_ret);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 16, 0))