From: Michael Brown Date: Wed, 11 Feb 2026 15:19:13 +0000 (+0000) Subject: [usb] Add USB_ROM() and USB_ID() macros X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4d6c8ab443e9bbbe74998630c5f523291e383c47;p=thirdparty%2Fipxe.git [usb] Add USB_ROM() and USB_ID() macros Add USB_ROM() and USB_ID() macros following the pattern for PCI_ROM() and PCI_ID(), to allow for the possibility of including USB network devices within the "all-drivers" build of iPXE. Signed-off-by: Michael Brown --- diff --git a/src/drivers/net/acm.c b/src/drivers/net/acm.c index 0cb2713b2..fd5f31a8d 100644 --- a/src/drivers/net/acm.c +++ b/src/drivers/net/acm.c @@ -491,11 +491,7 @@ static void acm_remove ( struct usb_function *func ) { /** USB CDC-ACM device IDs */ static struct usb_device_id cdc_acm_ids[] = { - { - .name = "cdc-acm", - .vendor = USB_ANY_ID, - .product = USB_ANY_ID, - }, + USB_ROM ( 0xffff, 0xffff, "cdc-acm", "USB CDC-ACM NIC", 0 ), }; /** USB CDC-ACM driver */ @@ -511,11 +507,7 @@ struct usb_driver cdc_acm_driver __usb_driver = { /** USB RF-RNDIS device IDs */ static struct usb_device_id rf_rndis_ids[] = { - { - .name = "rf-rndis", - .vendor = USB_ANY_ID, - .product = USB_ANY_ID, - }, + USB_ROM ( 0xffff, 0xffff, "rf-rndis", "USB RNDIS NIC", 0 ), }; /** USB RF-RNDIS driver */ diff --git a/src/drivers/net/axge.c b/src/drivers/net/axge.c index 922c94d91..507f8a9c7 100644 --- a/src/drivers/net/axge.c +++ b/src/drivers/net/axge.c @@ -779,36 +779,12 @@ static void axge_remove ( struct usb_function *func ) { /** AXGE device IDs */ static struct usb_device_id axge_ids[] = { - { - .name = "ax88179", - .vendor = 0x0b95, - .product = 0x1790, - }, - { - .name = "ax88178a", - .vendor = 0x0b95, - .product = 0x178a, - }, - { - .name = "dub1312", - .vendor = 0x2001, - .product = 0x4a00, - }, - { - .name = "axge-sitecom", - .vendor = 0x0df6, - .product = 0x0072, - }, - { - .name = "axge-samsung", - .vendor = 0x04e8, - .product = 0xa100, - }, - { - .name = "onelinkdock", - .vendor = 0x17ef, - .product = 0x304b, - }, + USB_ROM ( 0x0b95, 0x1790, "ax88179", "AX88179", 0 ), + USB_ROM ( 0x0b95, 0x178a, "ax88178a", "AX88178A", 0 ), + USB_ROM ( 0x2001, 0x4a00, "dub1312", "DUB-1312", 0 ), + USB_ROM ( 0x0df6, 0x0072, "axge-sitecom", "AX88179 (Sitecom)", 0 ), + USB_ROM ( 0x04e8, 0xa100, "axge-samsung", "AX88179 (Samsung)", 0 ), + USB_ROM ( 0x17ef, 0x304b, "onelinkdock", "ThinkPad OneLink dock", 0 ), }; /** AXGE driver */ diff --git a/src/drivers/net/dm96xx.c b/src/drivers/net/dm96xx.c index 193980a40..7cff63861 100644 --- a/src/drivers/net/dm96xx.c +++ b/src/drivers/net/dm96xx.c @@ -591,76 +591,20 @@ static void dm96xx_remove ( struct usb_function *func ) { /** DM96xx device IDs */ static struct usb_device_id dm96xx_ids[] = { - { - .name = "dm9601-corega", - .vendor = 0x07aa, - .product = 0x9601, - }, - { - .name = "dm9601", - .vendor = 0x0a46, - .product = 0x9601, - }, - { - .name = "zt6688", - .vendor = 0x0a46, - .product = 0x6688, - }, - { - .name = "st268", - .vendor = 0x0a46, - .product = 0x0268, - }, - { - .name = "adm8515", - .vendor = 0x0a46, - .product = 0x8515, - }, - { - .name = "dm9601-hirose", - .vendor = 0x0a47, - .product = 0x9601, - }, - { - .name = "dm9601-8101", - .vendor = 0x0fe6, - .product = 0x8101, - }, - { - .name = "dm9601-9700", - .vendor = 0x0fe6, - .product = 0x9700, - }, - { - .name = "dm9000e", - .vendor = 0x0a46, - .product = 0x9000, - }, - { - .name = "dm9620", - .vendor = 0x0a46, - .product = 0x9620, - }, - { - .name = "dm9621A", - .vendor = 0x0a46, - .product = 0x9621, - }, - { - .name = "dm9622", - .vendor = 0x0a46, - .product = 0x9622, - }, - { - .name = "dm962Oa", - .vendor = 0x0a46, - .product = 0x0269, - }, - { - .name = "dm9621a", - .vendor = 0x0a46, - .product = 0x1269, - }, + USB_ROM ( 0x07aa, 0x9601, "dm9601-corega", "Corega FEther", 0 ), + USB_ROM ( 0x0a46, 0x9601, "dm9601", "DM9601", 0 ), + USB_ROM ( 0x0a46, 0x6688, "zt6688", "ZT6688", 0 ), + USB_ROM ( 0x0a46, 0x0268, "st268", "ST268", 0 ), + USB_ROM ( 0x0a46, 0x8515, "adm8515", "ADMtek ADM8515", 0 ), + USB_ROM ( 0x0a47, 0x9601, "dm9601-hirose", "DM9601 (Hirose)", 0 ), + USB_ROM ( 0x0fe6, 0x8101, "dm9601-8101", "DM9601 (ICS8101)", 0 ), + USB_ROM ( 0x0fe6, 0x9700, "dm9601-9700", "DM9601 (ICS9700)", 0 ), + USB_ROM ( 0x0a46, 0x9000, "dm9000e", "DM9000E", 0 ), + USB_ROM ( 0x0a46, 0x9620, "dm9620", "DM9620", 0 ), + USB_ROM ( 0x0a46, 0x9621, "dm9621A", "DM9621A", 0 ), + USB_ROM ( 0x0a46, 0x9622, "dm9622", "DM9622", 0 ), + USB_ROM ( 0x0a46, 0x0269, "dm962Oa", "DM9620A", 0 ), + USB_ROM ( 0x0a46, 0x1269, "dm9621a", "DM9621A", 0 ), }; /** Davicom DM96xx driver */ diff --git a/src/drivers/net/ecm.c b/src/drivers/net/ecm.c index 9a13b68a5..63f1d86c6 100644 --- a/src/drivers/net/ecm.c +++ b/src/drivers/net/ecm.c @@ -519,11 +519,7 @@ static void ecm_remove ( struct usb_function *func ) { /** CDC-ECM device IDs */ static struct usb_device_id ecm_ids[] = { - { - .name = "cdc-ecm", - .vendor = USB_ANY_ID, - .product = USB_ANY_ID, - }, + USB_ROM ( 0xffff, 0xffff, "cdc-ecm", "USB CDC-ECM NIC", 0 ), }; /** CDC-ECM driver */ diff --git a/src/drivers/net/iphone.c b/src/drivers/net/iphone.c index b58017560..108a5a836 100644 --- a/src/drivers/net/iphone.c +++ b/src/drivers/net/iphone.c @@ -1172,11 +1172,7 @@ static void imux_remove ( struct usb_function *func ) { /** USB multiplexer device IDs */ static struct usb_device_id imux_ids[] = { - { - .name = "imux", - .vendor = 0x05ac, - .product = USB_ANY_ID, - }, + USB_ID ( 0x05ac, 0xffff, "imux", "iPhone (multiplexer)", 0 ), }; /** USB multiplexer driver */ @@ -2226,11 +2222,7 @@ static void iphone_remove ( struct usb_function *func ) { /** iPhone device IDs */ static struct usb_device_id iphone_ids[] = { - { - .name = "iphone", - .vendor = 0x05ac, - .product = USB_ANY_ID, - }, + USB_ROM ( 0x05ac, 0xffff, "iphone", "iPhone", 0 ), }; /** iPhone driver */ diff --git a/src/drivers/net/lan78xx.c b/src/drivers/net/lan78xx.c index 32333e787..3b369628e 100644 --- a/src/drivers/net/lan78xx.c +++ b/src/drivers/net/lan78xx.c @@ -387,16 +387,8 @@ static void lan78xx_remove ( struct usb_function *func ) { /** LAN78xx device IDs */ static struct usb_device_id lan78xx_ids[] = { - { - .name = "lan7800", - .vendor = 0x0424, - .product = 0x7800, - }, - { - .name = "lan7850", - .vendor = 0x0424, - .product = 0x7850, - }, + USB_ROM ( 0x0424, 0x7800, "lan7800", "SMSC LAN7800", 0 ), + USB_ROM ( 0x0424, 0x7850, "lan7850", "SMSC LAN7850", 0 ), }; /** LAN78xx driver */ diff --git a/src/drivers/net/ncm.c b/src/drivers/net/ncm.c index 48f9856b0..d2e0acfab 100644 --- a/src/drivers/net/ncm.c +++ b/src/drivers/net/ncm.c @@ -664,11 +664,7 @@ static void ncm_remove ( struct usb_function *func ) { /** CDC-NCM device IDs */ static struct usb_device_id ncm_ids[] = { - { - .name = "cdc-ncm", - .vendor = USB_ANY_ID, - .product = USB_ANY_ID, - }, + USB_ROM ( 0xffff, 0xffff, "cdc-ncm", "USB CDC-NCM NIC", 0 ), }; /** CDC-NCM driver */ diff --git a/src/drivers/net/smsc75xx.c b/src/drivers/net/smsc75xx.c index 8ae65e42a..fb6ed44d8 100644 --- a/src/drivers/net/smsc75xx.c +++ b/src/drivers/net/smsc75xx.c @@ -555,16 +555,8 @@ static void smsc75xx_remove ( struct usb_function *func ) { /** SMSC75xx device IDs */ static struct usb_device_id smsc75xx_ids[] = { - { - .name = "smsc7500", - .vendor = 0x0424, - .product = 0x7500, - }, - { - .name = "smsc7505", - .vendor = 0x0424, - .product = 0x7505, - }, + USB_ROM ( 0x0424, 0x7500, "smsc7500", "SMSC LAN7500", 0 ), + USB_ROM ( 0x0424, 0x7505, "smsc7505", "SMSC LAN7505", 0 ), }; /** SMSC LAN75xx driver */ diff --git a/src/drivers/net/smsc95xx.c b/src/drivers/net/smsc95xx.c index 16086b33e..f4fa60118 100644 --- a/src/drivers/net/smsc95xx.c +++ b/src/drivers/net/smsc95xx.c @@ -644,96 +644,24 @@ static void smsc95xx_remove ( struct usb_function *func ) { /** SMSC95xx device IDs */ static struct usb_device_id smsc95xx_ids[] = { - { - .name = "smsc9500", - .vendor = 0x0424, - .product = 0x9500, - }, - { - .name = "smsc9505", - .vendor = 0x0424, - .product = 0x9505, - }, - { - .name = "smsc9500a", - .vendor = 0x0424, - .product = 0x9e00, - }, - { - .name = "smsc9505a", - .vendor = 0x0424, - .product = 0x9e01, - }, - { - .name = "smsc9514", - .vendor = 0x0424, - .product = 0xec00, - }, - { - .name = "smsc9500-s", - .vendor = 0x0424, - .product = 0x9900, - }, - { - .name = "smsc9505-s", - .vendor = 0x0424, - .product = 0x9901, - }, - { - .name = "smsc9500a-s", - .vendor = 0x0424, - .product = 0x9902, - }, - { - .name = "smsc9505a-s", - .vendor = 0x0424, - .product = 0x9903, - }, - { - .name = "smsc9514-s", - .vendor = 0x0424, - .product = 0x9904, - }, - { - .name = "smsc9500a-h", - .vendor = 0x0424, - .product = 0x9905, - }, - { - .name = "smsc9505a-h", - .vendor = 0x0424, - .product = 0x9906, - }, - { - .name = "smsc9500-2", - .vendor = 0x0424, - .product = 0x9907, - }, - { - .name = "smsc9500a-2", - .vendor = 0x0424, - .product = 0x9908, - }, - { - .name = "smsc9514-2", - .vendor = 0x0424, - .product = 0x9909, - }, - { - .name = "smsc9530", - .vendor = 0x0424, - .product = 0x9530, - }, - { - .name = "smsc9730", - .vendor = 0x0424, - .product = 0x9730, - }, - { - .name = "smsc89530", - .vendor = 0x0424, - .product = 0x9e08, - }, + USB_ROM ( 0x0424, 0x9500, "smsc9500", "SMSC LAN9500", 0 ), + USB_ROM ( 0x0424, 0x9505, "smsc9505", "SMSC LAN9505", 0 ), + USB_ROM ( 0x0424, 0x9e00, "smsc9500a", "SMSC LAN9500A", 0 ), + USB_ROM ( 0x0424, 0x9e01, "smsc9505a", "SMSC LAN9505A", 0 ), + USB_ROM ( 0x0424, 0xec00, "smsc9514", "SMSC LAN9512/9514", 0 ), + USB_ROM ( 0x0424, 0x9900, "smsc9500-s", "SMSC LAN9500-S", 0 ), + USB_ROM ( 0x0424, 0x9901, "smsc9505-s", "SMSC LAN9505-S", 0 ), + USB_ROM ( 0x0424, 0x9902, "smsc9500a-s", "SMSC LAN9500A-S", 0 ), + USB_ROM ( 0x0424, 0x9903, "smsc9505a-s", "SMSC LAN9505A-S", 0 ), + USB_ROM ( 0x0424, 0x9904, "smsc9514-s", "SMSC LAN9512/9514-S", 0 ), + USB_ROM ( 0x0424, 0x9905, "smsc9500a-h", "SMSC LAN9500A-H", 0 ), + USB_ROM ( 0x0424, 0x9906, "smsc9505a-h", "SMSC LAN9505A-H", 0 ), + USB_ROM ( 0x0424, 0x9907, "smsc9500-2", "SMSC LAN9500-2", 0 ), + USB_ROM ( 0x0424, 0x9908, "smsc9500a-2", "SMSC LAN9500A-2", 0 ), + USB_ROM ( 0x0424, 0x9909, "smsc9514-2", "SMSC LAN9512/9514-2", 0 ), + USB_ROM ( 0x0424, 0x9530, "smsc9530", "SMSC LAN9530", 0 ), + USB_ROM ( 0x0424, 0x9730, "smsc9730", "SMSC LAN9730", 0 ), + USB_ROM ( 0x0424, 0x9e08, "smsc89530", "SMSC LAN89530", 0 ), }; /** SMSC LAN95xx driver */ diff --git a/src/drivers/usb/usbblk.c b/src/drivers/usb/usbblk.c index b42c70645..700678dd1 100644 --- a/src/drivers/usb/usbblk.c +++ b/src/drivers/usb/usbblk.c @@ -895,11 +895,7 @@ static void usbblk_remove ( struct usb_function *func ) { /** Mass storage class device IDs */ static struct usb_device_id usbblk_ids[] = { - { - .name = "usbblk", - .vendor = USB_ANY_ID, - .product = USB_ANY_ID, - }, + USB_ID ( 0xffff, 0xffff, "usbblk", "USB block device", 0 ), }; /** Mass storage driver */ diff --git a/src/drivers/usb/usbhub.c b/src/drivers/usb/usbhub.c index 1d7b03e77..78e8d7af9 100644 --- a/src/drivers/usb/usbhub.c +++ b/src/drivers/usb/usbhub.c @@ -529,17 +529,9 @@ static void hub_remove ( struct usb_function *func ) { /** USB hub device IDs */ static struct usb_device_id hub_ids[] = { - { - .name = "avocent-hub", - .vendor = 0x0624, - .product = 0x0248, - .driver_data = USB_HUB_SLOW_START, - }, - { - .name = "hub", - .vendor = USB_ANY_ID, - .product = USB_ANY_ID, - }, + USB_ID ( 0x0624, 0x0248, "avocent-hub", "Avocent USB hub", + USB_HUB_SLOW_START ), + USB_ID ( 0xffff, 0xffff, "hub", "USB hub", 0 ), }; /** USB hub driver */ diff --git a/src/drivers/usb/usbkbd.c b/src/drivers/usb/usbkbd.c index cf881ad1a..dd1b7ed21 100644 --- a/src/drivers/usb/usbkbd.c +++ b/src/drivers/usb/usbkbd.c @@ -518,11 +518,7 @@ static void usbkbd_remove ( struct usb_function *func ) { /** USB keyboard device IDs */ static struct usb_device_id usbkbd_ids[] = { - { - .name = "kbd", - .vendor = USB_ANY_ID, - .product = USB_ANY_ID, - }, + USB_ID ( 0xffff, 0xffff, "kbd", "USB keyboard", 0 ), }; /** USB keyboard driver */ diff --git a/src/include/ipxe/usb.h b/src/include/ipxe/usb.h index 9b8c7ae00..72f44e220 100644 --- a/src/include/ipxe/usb.h +++ b/src/include/ipxe/usb.h @@ -1369,6 +1369,18 @@ struct usb_device_id { unsigned long driver_data; }; +/* Define a USB device ID */ +#define USB_ID( _vendor, _product, _name, _description, _data ) { \ + .vendor = _vendor, \ + .product = _product, \ + .name = _name, \ + .driver_data = _data \ +} + +/* Define a USB device ID with a corresponding build rule */ +#define USB_ROM( _vendor, _product, _name, _description, _data ) \ + USB_ID ( _vendor, _product, _name, _description, _data ) + /** Match-anything ID */ #define USB_ANY_ID 0xffff diff --git a/src/interface/efi/efi_usb.c b/src/interface/efi/efi_usb.c index a3b153c88..789d0f571 100644 --- a/src/interface/efi/efi_usb.c +++ b/src/interface/efi/efi_usb.c @@ -1349,11 +1349,7 @@ static void efi_usb_remove ( struct usb_function *func ) { /** USB I/O protocol device IDs */ static struct usb_device_id efi_usb_ids[] = { - { - .name = "usbio", - .vendor = USB_ANY_ID, - .product = USB_ANY_ID, - }, + USB_ID ( 0xffff, 0xffff, "usbio", "USB passthrough", 0 ), }; /** USB I/O protocol driver */