Update of /cvsroot/alsa/alsa-kernel/usb
In directory usw-pr-cvs1:/tmp/cvs-serv20832

Modified Files:
        usbaudio.c usbmidi.c usbmixer.c 
Log Message:
Fixes for 2.5 USB core

Index: usbaudio.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/usb/usbaudio.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- usbaudio.c  2 Oct 2002 17:34:30 -0000       1.12
+++ usbaudio.c  3 Oct 2002 10:33:09 -0000       1.13
@@ -1308,9 +1308,15 @@
  * entry point for linux usb interface
  */
 
-static void * usb_audio_probe(struct usb_device *dev, unsigned int ifnum,
+#ifndef OLD_USB
+static int usb_audio_probe(struct usb_interface *intf,
+                          const struct usb_device_id *id);
+static void usb_audio_disconnect(struct usb_interface *intf);
+#else
+static void * usb_audio_probe(usb_device *dev, unsigned int ifnum,
                              const struct usb_device_id *id);
 static void usb_audio_disconnect(struct usb_device *dev, void *ptr);
+#endif
 
 static struct usb_device_id usb_audio_ids [] = {
 #include "usbquirks.h"
@@ -1326,7 +1332,9 @@
        .name =         "snd-usb-audio",
        .probe =        usb_audio_probe,
        .disconnect =   usb_audio_disconnect,
+#ifdef OLD_USB
        .driver_list =  LIST_HEAD_INIT(usb_audio_driver.driver_list), 
+#endif
        .id_table =     usb_audio_ids,
 };
 
@@ -2058,9 +2066,18 @@
  * only at the first time.  the successive calls of this function will
  * append the pcm interface to the corresponding card.
  */
+#ifndef OLD_USB
+static int usb_audio_probe(struct usb_interface *intf,
+                          const struct usb_device_id *id)
+#else
 static void *usb_audio_probe(struct usb_device *dev, unsigned int ifnum,
                             const struct usb_device_id *id)
+#endif
 {
+#ifndef OLD_USB
+       struct usb_device *dev = interface_to_usbdev(intf);
+       int ifnum = intf->altsetting->bInterfaceNumber;
+#endif
        struct usb_config_descriptor *config = dev->actconfig;  
        const snd_usb_audio_quirk_t *quirk = (const snd_usb_audio_quirk_t 
*)id->driver_info;
        unsigned char *buffer;
@@ -2070,17 +2087,17 @@
        snd_usb_audio_t *chip;
 
        if (quirk && ifnum != quirk->ifnum)
-               return NULL;
+               goto __err_val;
 
        if (usb_set_configuration(dev, config->bConfigurationValue) < 0) {
                snd_printk(KERN_ERR "cannot set configuration (value 0x%x)\n", 
config->bConfigurationValue);
-               return NULL;
+               goto __err_val;
        }
 
        index = dev->actconfig - config;
        buflen = alloc_desc_buffer(dev, index, &buffer);
        if (buflen <= 0)
-               return NULL;
+               goto __err_val;
 
        /*
         * found a config.  now register to ALSA
@@ -2142,12 +2159,21 @@
        chip->num_interfaces++;
        up(&register_mutex);
        kfree(buffer);
+#ifndef OLD_USB
+       return 0;
+#else
        return chip;
+#endif
 
  __error:
        up(&register_mutex);
        kfree(buffer);
+ __err_val:
+#ifndef OLD_USB
+       return -EIO;
+#else
        return NULL;
+#endif
 }
 
 
@@ -2155,8 +2181,15 @@
  * we need to take care of counter, since disconnection can be called also
  * many times as well as usb_audio_probe(). 
  */
+#ifndef OLD_USB
+static void usb_audio_disconnect(struct usb_interface *intf)
+#else
 static void usb_audio_disconnect(struct usb_device *dev, void *ptr)
+#endif
 {
+#ifndef OLD_USB
+       void *ptr = dev_get_drvdata(&intf->dev);
+#endif
        snd_usb_audio_t *chip;
 
        if (ptr == (void *)-1)

Index: usbmidi.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/usb/usbmidi.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- usbmidi.c   26 Aug 2002 16:05:43 -0000      1.4
+++ usbmidi.c   3 Oct 2002 10:33:09 -0000       1.5
@@ -479,6 +479,22 @@
        snd_magic_kfree(ep);
 }
 
+#ifndef OLD_USB
+/* this code is not exported from USB core anymore */
+struct usb_interface *local_usb_ifnum_to_if(struct usb_device *dev, unsigned ifnum)
+{
+       int i;
+        
+       for (i = 0; i < dev->actconfig->bNumInterfaces; i++)
+               if (dev->actconfig->interface[i].altsetting[0].bInterfaceNumber == 
+ifnum)
+                       return &dev->actconfig->interface[i];
+                                                        
+       return NULL;
+}
+#else
+#define local_usb_ifnum_to_if usb_ifnum_to_if
+#endif
+
 /*
  * For Roland devices, use the alternate setting which uses interrupt
  * transfers for input.
@@ -491,7 +507,7 @@
 
        if (umidi->chip->dev->descriptor.idVendor != 0x0582)
                return NULL;
-       intf = usb_ifnum_to_if(umidi->chip->dev, umidi->ifnum);
+       intf = local_usb_ifnum_to_if(umidi->chip->dev, umidi->ifnum);
        if (!intf || intf->num_altsetting != 2)
                return NULL;
 
@@ -803,7 +819,7 @@
 
        memset(endpoints, 0, sizeof(*endpoints) * MIDI_MAX_ENDPOINTS);
 
-       intf = usb_ifnum_to_if(umidi->chip->dev, umidi->ifnum);
+       intf = local_usb_ifnum_to_if(umidi->chip->dev, umidi->ifnum);
        if (!intf)
                return -ENXIO;
        intfd = &intf->altsetting[0];
@@ -862,7 +878,7 @@
        usb_endpoint_descriptor_t* epd;
 
        if (endpoint->epnum == -1) {
-               intf = usb_ifnum_to_if(umidi->chip->dev, umidi->ifnum);
+               intf = local_usb_ifnum_to_if(umidi->chip->dev, umidi->ifnum);
                if (!intf || intf->num_altsetting < 1)
                        return -ENOENT;
                intfd = intf->altsetting;

Index: usbmixer.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/usb/usbmixer.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- usbmixer.c  2 Sep 2002 15:51:16 -0000       1.3
+++ usbmixer.c  3 Oct 2002 10:33:09 -0000       1.4
@@ -60,7 +60,7 @@
        unsigned char *buffer;
        unsigned int buflen;
        unsigned int ctrlif;
-       unsigned long unitbitmap[32/sizeof(unsigned long)];
+       DECLARE_BITMAP(unitbitmap, 32*32);
        usb_audio_term_t oterm;
 };
 
@@ -1252,7 +1252,7 @@
 {
        unsigned char *p1;
 
-       if (test_and_set_bit(unitid, &state->unitbitmap))
+       if (test_and_set_bit(unitid, state->unitbitmap))
                return 0; /* the unit already visited */
 
        p1 = find_audio_control_unit(state, unitid);
@@ -1302,7 +1302,7 @@
        while ((desc = snd_usb_find_csint_desc(buffer, buflen, desc, OUTPUT_TERMINAL, 
ctrlif, -1)) != NULL) {
                if (desc[0] < 9)
                        continue; /* invalid descriptor? */
-               set_bit(desc[3], &state.unitbitmap);  /* mark terminal ID as visited */
+               set_bit(desc[3], state.unitbitmap);  /* mark terminal ID as visited */
                state.oterm.id = desc[3];
                state.oterm.type = combine_word(&desc[4]);
                state.oterm.name = desc[8];



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to