USB has complicated classes drivers/usb/audio.c static struct usb_device_id usb_audio_ids [] = { { match_flags: (USB_DEVICE_ID_MATCH_INT_CLASS | USB_DEVICE_ID_MATCH_INT_SUBCLASS), bInterfaceClass: USB_CLASS_AUDIO, bInterfaceSubClass: 1, }, { } /* Terminating entry */ }; MODULE_DEVICE_TABLE (usb, usb_audio_ids);