Update of /cvsroot/alsa/alsa-driver/usb
In directory sc8-pr-cvs1:/tmp/cvs-serv501

Modified Files:
        .cvsignore Makefile 
Added Files:
        usbaudio.inc usbaudio.inc1 usbaudio.patch 
Removed Files:
        usbaudio.c 
Log Message:
2.5 cleanups

--- NEW FILE: usbaudio.inc ---
#define SND_NEED_USB_WRAPPER
#include <sound/driver.h>
#include <linux/usb.h>

#ifdef OLD_USB
#define snd_usb_complete_callback(x) __old_ ## x
static void __old_snd_complete_urb(struct urb *urb);
static void __old_snd_complete_sync_urb(struct urb *urb);

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);
#endif

--- NEW FILE: usbaudio.inc1 ---
#ifdef OLD_USB
/*
 * 2.4 USB kernel API
 */
static void *usb_audio_probe(struct usb_device *dev, unsigned int ifnum,
                             const struct usb_device_id *id)
{
        return snd_usb_audio_probe(dev, usb_ifnum_to_if(dev, ifnum), id);
}
                                       
static void usb_audio_disconnect(struct usb_device *dev, void *ptr)
{
        snd_usb_audio_disconnect(dev, ptr);
}

static void __old_snd_complete_urb(struct urb *urb)
{
        snd_complete_urb(urb, NULL);
}

static void __old_snd_complete_sync_urb(struct urb *urb)
{
        snd_complete_sync_urb(urb, NULL);
}
#endif

/*
 * workarounds / hacks for the older kernels follow below
 */

#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 24)
/* M-Audio Quattro has weird alternate settings.  the altsetting jumps
 * from 0 to 4 or 3 insuccessively, and this screws up
 * usb_set_interface() (at least on 2.4.18/19 and 2.4.21).
 */

/*
 * the following is a stripped version of usb_set_interface() with the fix
 * for insuccessive altsetting numbers.
 */

/* stripped version for isochronos only */
static void hack_usb_set_maxpacket(struct usb_device *dev)
{
        int i, b;

        for (i=0; i<dev->actconfig->bNumInterfaces; i++) {
                struct usb_interface *ifp = dev->actconfig->interface + i;
                struct usb_interface_descriptor *as = ifp->altsetting + 
ifp->act_altsetting;
                struct usb_endpoint_descriptor *ep = as->endpoint;
                int e;

                for (e=0; e<as->bNumEndpoints; e++) {
                        b = ep[e].bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
                        if (usb_endpoint_out(ep[e].bEndpointAddress)) {
                                if (ep[e].wMaxPacketSize > dev->epmaxpacketout[b])
                                        dev->epmaxpacketout[b] = ep[e].wMaxPacketSize;
                        }
                        else {
                                if (ep[e].wMaxPacketSize > dev->epmaxpacketin [b])
                                        dev->epmaxpacketin [b] = ep[e].wMaxPacketSize;
                        }
                }
        }
}

/* stripped version */
int snd_hack_usb_set_interface(struct usb_device *dev, int interface, int alternate)
{
        struct usb_interface *iface;
        struct usb_interface_descriptor *iface_as;
        int i, ret;

        iface = usb_ifnum_to_if(dev, interface);
        if (!iface)
                return -EINVAL;
        if (iface->num_altsetting == 1)
                return 0;
        if (alternate < 0 || alternate >= iface->num_altsetting)
                return -EINVAL;

        if ((ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
                                   USB_REQ_SET_INTERFACE, USB_RECIP_INTERFACE,
                                   iface->altsetting[alternate].bAlternateSetting,
                                   interface, NULL, 0, HZ * 5)) < 0)
                return ret;

        iface->act_altsetting = alternate;
        iface_as = &iface->altsetting[alternate];
        for (i = 0; i < iface_as->bNumEndpoints; i++) {
                u8 ep = iface_as->endpoint[i].bEndpointAddress;
                usb_settoggle(dev, ep&USB_ENDPOINT_NUMBER_MASK, usb_endpoint_out(ep), 
0);
        }
        hack_usb_set_maxpacket(dev);
        return 0;
}

#endif /* LINUX_VERSION < 2.5.24 */


/*
 * symbols
 */
EXPORT_NO_SYMBOLS;

--- NEW FILE: usbaudio.patch ---
--- usbaudio.c  2003-06-01 20:32:24.000000000 +0200
+++ usbaudio.c.old      2003-06-01 20:32:42.000000000 +0200
@@ -1,3 +1,4 @@
+#include "usbaudio.inc"
 /*
  *   (Tentative) USB Audio Driver for ALSA
  *
@@ -1656,9 +1657,11 @@
  * entry point for linux usb interface
  */
 
+#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);
+#endif
 
 static struct usb_device_id usb_audio_ids [] = {
 #include "usbquirks.h"
@@ -1671,10 +1674,15 @@
 MODULE_DEVICE_TABLE (usb, usb_audio_ids);
 
 static struct usb_driver usb_audio_driver = {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 70)     /* FIXME: find right number */
        .owner =        THIS_MODULE,
+#endif
        .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,
 };
 
@@ -2744,6 +2752,7 @@
        }
 }
 
+#ifndef OLD_USB
 /*
  * new 2.5 USB kernel API
  */
@@ -2764,6 +2773,8 @@
        snd_usb_audio_disconnect(interface_to_usbdev(intf),
                                 dev_get_drvdata(&intf->dev));
 }
+#endif
+
 
 
 static int __init snd_usb_audio_init(void)
@@ -2803,3 +2814,5 @@
 __setup("snd-usb-audio=", snd_usb_audio_module_setup);
 
 #endif /* !MODULE */
+
+#include "usbaudio.inc1"

Index: .cvsignore
===================================================================
RCS file: /cvsroot/alsa/alsa-driver/usb/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- .cvsignore  4 Jun 2002 15:49:13 -0000       1.1
+++ .cvsignore  1 Jun 2003 18:37:45 -0000       1.2
@@ -1 +1,2 @@
 .depend
+usbaudio.c

Index: Makefile
===================================================================
RCS file: /cvsroot/alsa/alsa-driver/usb/Makefile,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- Makefile    8 Mar 2003 14:23:04 -0000       1.7
+++ Makefile    1 Jun 2003 18:37:45 -0000       1.8
@@ -3,6 +3,8 @@
 include $(TOPDIR)/toplevel.config
 include $(TOPDIR)/Makefile.conf
 
+EXTRA_CLEAN = usbaudio.c
+
 TOPDIR = $(MAINSRCDIR)
 
 # for compatibility
@@ -10,4 +12,8 @@
 
 include $(TOPDIR)/alsa-kernel/usb/Makefile
 
+EXTRA_CFLAGS = -I$(TOPDIR)/alsa-kernel/usb
+
 include $(TOPDIR)/Rules.make
+
+usbaudio.c: usbaudio.patch usbaudio.inc usbaudio.inc1 
$(TOPDIR)/alsa-kernel/usb/usbaudio.c

--- usbaudio.c DELETED ---



-------------------------------------------------------
This SF.net email is sponsored by: eBay
Get office equipment for less on eBay!
http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to