From 40bb3f82b40dffca1ea482f0be0f3799249fae10 Mon Sep 17 00:00:00 2001 From: xuxinchun1003 Date: Wed, 7 Oct 2026 01:48:49 +0800 Subject: [PATCH] usb: add TP-Link AIC8800DC (2357:0147) device support Both maintained branches ship no binding for this PID: the TP entries in aicwf_usb_id_table cover 0x014b (Mercury) and 0x014e only, and aicwf_usb_chipmatch only matches pid == 0x88dc for the DC family, so the device is ignored by the interface table and rejected by chipmatch even if force-bound. - add USB_PRODUCT_ID_TP_AIC8800DC (0x0147) - match it in aicwf_usb_id_table and in aicwf_usb_chipmatch (DC chipid) Verified on legacy-mcu1 @ b7a476c (arch1-2 kernel7.2.8, VFIO lab): clean baseline probe shows BIND=NONE (no driver claims 1-10); with this commit the interface binds and the issue71 loader profile boots the chip (Firmware Version: zh Aug 08 2022 ... gcf79227 -> wlan0 created). --- drivers/aic8800/aic8800_fdrv/aicwf_usb.c | 5 +++++ drivers/aic8800/aic8800_fdrv/aicwf_usb.h | 1 + 2 files changed, 6 insertions(+) diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_usb.c b/drivers/aic8800/aic8800_fdrv/aicwf_usb.c index c25171b..2fa52bd 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_usb.c +++ b/drivers/aic8800/aic8800_fdrv/aicwf_usb.c @@ -2367,6 +2367,10 @@ static int aicwf_usb_chipmatch(struct aic_usb_dev *usb_dev, u16_l vid, u16_l pid } AICWFDBG(LOGINFO, "%s USE AIC8800D89X2\r\n", __func__); return 0; + } else if (pid == USB_PRODUCT_ID_TP_AIC8800DC) { + usb_dev->chipid = PRODUCT_ID_AIC8800DC; + AICWFDBG(LOGINFO, "%s USE AIC8800DC (TP-Link 0x0147)\r\n", __func__); + return 0; } else if ((pid == USB_PRODUCT_ID_AIC8800D80N) || (pid == USB_PRODUCT_ID_AIC8800D80LN) || (pid == USB_PRODUCT_ID_AIC8800D80WN) || @@ -2680,6 +2684,7 @@ static struct usb_device_id aicwf_usb_id_table[] = { {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800M80_CUS8)}, {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800D80_UGREEN)}, {USB_DEVICE(USB_VENDOR_ID_TP, USB_PRODUCT_ID_MERCURY)}, + {USB_DEVICE(USB_VENDOR_ID_TP, USB_PRODUCT_ID_TP_AIC8800DC)}, {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_TP, USB_PRODUCT_ID_TP, 0xff, 0xff, 0xff)}, #endif {} diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_usb.h b/drivers/aic8800/aic8800_fdrv/aicwf_usb.h index 0ed15f0..9076fd0 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_usb.h +++ b/drivers/aic8800/aic8800_fdrv/aicwf_usb.h @@ -24,6 +24,7 @@ #define USB_PRODUCT_ID_TP 0x014e #define USB_PRODUCT_ID_MERCURY 0x014b #define USB_PRODUCT_ID_FAST 0x014f +#define USB_PRODUCT_ID_TP_AIC8800DC 0x0147 #define USB_PRODUCT_ID_TENDA_U11 0x001f #define USB_PRODUCT_ID_TENDA_U11_PRO 0x0020