diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-11-28 03:58:46 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-11-28 03:58:46 +0000 |
commit | b63ad0882a16a5d28003e57f2b0b81dee3fb322b (patch) | |
tree | 0a343ce219e2b8b38a5d702d66032c57b83d9720 /drivers/usb/audio.c | |
parent | a9d7bff9a84dba79609a0002e5321b74c4d64c64 (diff) |
Merge with 2.4.0-test11.
Diffstat (limited to 'drivers/usb/audio.c')
-rw-r--r-- | drivers/usb/audio.c | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/drivers/usb/audio.c b/drivers/usb/audio.c index 1db828b24..065d31942 100644 --- a/drivers/usb/audio.c +++ b/drivers/usb/audio.c @@ -2691,16 +2691,23 @@ static /*const*/ struct file_operations usb_audio_fops = { /* --------------------------------------------------------------------- */ -static void * usb_audio_probe(struct usb_device *dev, unsigned int ifnum); +static void * usb_audio_probe(struct usb_device *dev, unsigned int ifnum, + const struct usb_device_id *id); static void usb_audio_disconnect(struct usb_device *dev, void *ptr); +static struct usb_device_id usb_audio_ids [] = { + { bInterfaceClass: USB_CLASS_AUDIO, bInterfaceSubClass: 1}, + { } /* Terminating entry */ +}; + +MODULE_DEVICE_TABLE (usb, usb_audio_ids); + static struct usb_driver usb_audio_driver = { - "audio", - usb_audio_probe, - usb_audio_disconnect, - LIST_HEAD_INIT(usb_audio_driver.driver_list), - NULL, - 0 + name: "audio", + probe: usb_audio_probe, + disconnect: usb_audio_disconnect, + driver_list: LIST_HEAD_INIT(usb_audio_driver.driver_list), + id_table: usb_audio_ids, }; static void *find_descriptor(void *descstart, unsigned int desclen, void *after, @@ -3640,7 +3647,8 @@ ret: /* we only care for the currently active configuration */ -static void *usb_audio_probe(struct usb_device *dev, unsigned int ifnum) +static void *usb_audio_probe(struct usb_device *dev, unsigned int ifnum, + const struct usb_device_id *id) { struct usb_config_descriptor *config = dev->actconfig; unsigned char *buffer; @@ -3653,25 +3661,13 @@ static void *usb_audio_probe(struct usb_device *dev, unsigned int ifnum) config->interface[ifnum].altsetting[0].bInterfaceClass, config->interface[ifnum].altsetting[0].bInterfaceSubClass); #endif - if (config->interface[ifnum].altsetting[0].bInterfaceClass != USB_CLASS_AUDIO || - config->interface[ifnum].altsetting[0].bInterfaceSubClass != 1) { -#if 0 - printk(KERN_DEBUG "usbaudio: vendor id 0x%04x, product id 0x%04x contains no AudioControl interface\n", - dev->descriptor.idVendor, dev->descriptor.idProduct); -#endif - return NULL; - } + /* * audiocontrol interface found * find which configuration number is active */ - for (i = 0; i < dev->descriptor.bNumConfigurations; i++) - if (dev->config+i == config) - goto configfound; - printk(KERN_ERR "usbaudio: cannot find active configuration number of device %d\n", dev->devnum); - return NULL; + i = dev->actconfig - config; - configfound: if (usb_set_configuration(dev, config->bConfigurationValue) < 0) { printk(KERN_ERR "usbaudio: set_configuration failed (ConfigValue 0x%x)\n", config->bConfigurationValue); return NULL; |