[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 <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2026-02-11 15:19:13 +00:00
parent 481e043116
commit 4d6c8ab443
14 changed files with 66 additions and 266 deletions

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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

View File

@ -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 */