diff --git a/src/arch/i386/drivers/net/undi.c b/src/arch/i386/drivers/net/undi.c index c4a11c57..9820cf62 100644 --- a/src/arch/i386/drivers/net/undi.c +++ b/src/arch/i386/drivers/net/undi.c @@ -140,7 +140,7 @@ static struct pci_device_id undipci_nics[] = { struct pci_driver undipci_driver __pci_driver_fallback = { .ids = undipci_nics, .id_count = ( sizeof ( undipci_nics ) / sizeof ( undipci_nics[0] ) ), - .class = PCI_CLASS ( PCI_CLASS_NETWORK, PCI_ANY_ID, PCI_ANY_ID ), + .class = PCI_CLASS_ID ( PCI_CLASS_NETWORK, PCI_ANY_ID, PCI_ANY_ID ), .probe = undipci_probe, .remove = undipci_remove, }; diff --git a/src/drivers/usb/ehci.c b/src/drivers/usb/ehci.c index e33b0e19..653e72c1 100644 --- a/src/drivers/usb/ehci.c +++ b/src/drivers/usb/ehci.c @@ -1877,8 +1877,8 @@ static struct pci_device_id ehci_ids[] = { struct pci_driver ehci_driver __pci_driver = { .ids = ehci_ids, .id_count = ( sizeof ( ehci_ids ) / sizeof ( ehci_ids[0] ) ), - .class = PCI_CLASS ( PCI_CLASS_SERIAL, PCI_CLASS_SERIAL_USB, - PCI_CLASS_SERIAL_USB_EHCI ), + .class = PCI_CLASS_ID ( PCI_CLASS_SERIAL, PCI_CLASS_SERIAL_USB, + PCI_CLASS_SERIAL_USB_EHCI ), .probe = ehci_probe, .remove = ehci_remove, }; diff --git a/src/drivers/usb/xhci.c b/src/drivers/usb/xhci.c index 831e8e6e..307a9912 100644 --- a/src/drivers/usb/xhci.c +++ b/src/drivers/usb/xhci.c @@ -3280,8 +3280,8 @@ static struct pci_device_id xhci_ids[] = { struct pci_driver xhci_driver __pci_driver = { .ids = xhci_ids, .id_count = ( sizeof ( xhci_ids ) / sizeof ( xhci_ids[0] ) ), - .class = PCI_CLASS ( PCI_CLASS_SERIAL, PCI_CLASS_SERIAL_USB, - PCI_CLASS_SERIAL_USB_XHCI ), + .class = PCI_CLASS_ID ( PCI_CLASS_SERIAL, PCI_CLASS_SERIAL_USB, + PCI_CLASS_SERIAL_USB_XHCI ), .probe = xhci_probe, .remove = xhci_remove, }; diff --git a/src/include/ipxe/pci.h b/src/include/ipxe/pci.h index 976a37c5..ccc42fee 100644 --- a/src/include/ipxe/pci.h +++ b/src/include/ipxe/pci.h @@ -118,6 +118,16 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #define PCI_CLASS_SERIAL_USB_EHCI 0x20 /**< ECHI USB controller */ #define PCI_CLASS_SERIAL_USB_XHCI 0x30 /**< xHCI USB controller */ +/** Construct PCI class + * + * @v base Base class (or PCI_ANY_ID) + * @v sub Subclass (or PCI_ANY_ID) + * @v progif Programming interface (or PCI_ANY_ID) + */ +#define PCI_CLASS( base, sub, progif ) \ + ( ( ( (base) & 0xff ) << 16 ) | ( ( (sub) & 0xff ) << 8 ) | \ + ( ( (progif) & 0xff) << 0 ) ) + /** A PCI device ID list entry */ struct pci_device_id { /** Name */ @@ -147,10 +157,8 @@ struct pci_class_id { * @v sub Subclass (or PCI_ANY_ID) * @v progif Programming interface (or PCI_ANY_ID) */ -#define PCI_CLASS(base,sub,progif) { \ - .class = ( ( ( (base) & 0xff ) << 16 ) | \ - ( ( (sub) & 0xff ) << 8 ) | \ - ( ( (progif) & 0xff) << 0 ) ), \ +#define PCI_CLASS_ID( base, sub, progif ) { \ + .class = PCI_CLASS ( base, sub, progif ), \ .mask = ( ( ( ( (base) == PCI_ANY_ID ) ? 0x00 : 0xff ) << 16 ) | \ ( ( ( (sub) == PCI_ANY_ID ) ? 0x00 : 0xff ) << 8 ) | \ ( ( ( (progif) == PCI_ANY_ID ) ? 0x00 : 0xff ) << 0 ) ), \