Update of /cvsroot/alsa/alsa-kernel/usb
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2641/alsa-kernel/usb

Modified Files:
        usbaudio.h usbaudio.c usbmixer.c 
Log Message:
replace usage of interface index with calls to usb_ifnum_to_if

Index: usbaudio.h
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/usb/usbaudio.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- usbaudio.h  17 Mar 2004 13:02:18 -0000      1.25
+++ usbaudio.h  17 Mar 2004 13:08:46 -0000      1.26
@@ -207,7 +207,6 @@
  * (conditional for compatibility with the older API)
  */
 #ifndef get_iface_desc
-#define get_iface(cfg, num)    ((cfg)->interface[(num)])
 #define get_iface_desc(iface)  (&(iface)->desc)
 #define get_endpoint(alt,ep)   (&(alt)->endpoint[ep].desc)
 #define get_ep_desc(ep)                (&(ep)->desc)

Index: usbaudio.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/usb/usbaudio.c,v
retrieving revision 1.87
retrieving revision 1.88
diff -u -r1.87 -r1.88
--- usbaudio.c  8 Mar 2004 09:29:51 -0000       1.87
+++ usbaudio.c  17 Mar 2004 13:08:47 -0000      1.88
@@ -1082,7 +1082,8 @@
        int is_playback = subs->direction == SNDRV_PCM_STREAM_PLAYBACK;
        int err;
 
-       iface = get_iface(config, fmt->iface);
+       iface = usb_ifnum_to_if(dev, fmt->iface);
+       snd_assert(iface, return -EINVAL);
        alts = &iface->altsetting[fmt->altset_idx];
        altsd = get_iface_desc(alts);
        snd_assert(altsd->bAlternateSetting == fmt->altsetting, return -EINVAL);
@@ -1213,10 +1214,9 @@
                return ret;
 
        if (subs->cur_rate != rate) {
-               struct usb_host_config *config = subs->dev->actconfig;
                struct usb_host_interface *alts;
                struct usb_interface *iface;
-               iface = get_iface(config, fmt->iface);
+               iface = usb_ifnum_to_if(subs->dev, fmt->iface);
                alts = &iface->altsetting[fmt->altset_idx];
                ret = init_usb_sample_rate(subs->dev, subs->interface, alts, fmt, 
rate);
                if (ret < 0)
@@ -2269,7 +2269,6 @@
 static int parse_audio_endpoints(snd_usb_audio_t *chip, int iface_no)
 {
        struct usb_device *dev;
-       struct usb_host_config *config;
        struct usb_interface *iface;
        struct usb_host_interface *alts;
        struct usb_interface_descriptor *altsd;
@@ -2279,10 +2278,9 @@
        unsigned char *fmt, *csep;
 
        dev = chip->dev;
-       config = dev->actconfig;
 
        /* parse the interface's altsettings */
-       iface = get_iface(config, iface_no);
+       iface = usb_ifnum_to_if(dev, iface_no);
        for (i = 0; i < iface->num_altsetting; i++) {
                alts = &iface->altsetting[i];
                altsd = get_iface_desc(alts);
@@ -2448,15 +2446,13 @@
 static int snd_usb_create_streams(snd_usb_audio_t *chip, int ctrlif)
 {
        struct usb_device *dev = chip->dev;
-       struct usb_host_config *config;
        struct usb_host_interface *host_iface;
        struct usb_interface *iface;
        unsigned char *p1;
        int i, j;
 
        /* find audiocontrol interface */
-       config = dev->actconfig;
-       host_iface = &get_iface(config, ctrlif)->altsetting[0];
+       host_iface = &usb_ifnum_to_if(dev, ctrlif)->altsetting[0];
        if (!(p1 = snd_usb_find_csint_desc(host_iface->extra, host_iface->extralen, 
NULL, HEADER))) {
                snd_printk(KERN_ERR "cannot find HEADER\n");
                return -EINVAL;
@@ -2473,12 +2469,12 @@
                struct usb_host_interface *alts;
                struct usb_interface_descriptor *altsd;
                j = p1[8 + i];
-               if (j >= get_cfg_desc(config)->bNumInterfaces) {
+               iface = usb_ifnum_to_if(dev, j);
+               if (!iface) {
                        snd_printk(KERN_ERR "%d:%u:%d : does not exist\n",
                                   dev->devnum, ctrlif, j);
                        continue;
                }
-               iface = get_iface(config, j);
                if (usb_interface_claimed(iface)) {
                        snd_printdd(KERN_INFO "%d:%d:%d: skipping, already claimed\n", 
dev->devnum, ctrlif, j);
                        continue;
@@ -2535,6 +2531,11 @@
                kfree(fp);
                return err;
        }
+       if (fp->iface != get_iface_desc(&iface->altsetting[0])->bInterfaceNumber ||
+           fp->altset_idx >= iface->num_altsetting) {
+               kfree(fp);
+               return -EINVAL;
+       }
        alts = &iface->altsetting[fp->altset_idx];
        usb_set_interface(chip->dev, fp->iface, 0);
        init_usb_pitch(chip->dev, fp->iface, alts, fp);

Index: usbmixer.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/usb/usbmixer.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- usbmixer.c  9 Mar 2004 16:57:36 -0000       1.25
+++ usbmixer.c  17 Mar 2004 13:08:47 -0000      1.26
@@ -1481,7 +1481,7 @@
        int err;
        const struct usbmix_ctl_map *map;
        struct usb_device_descriptor *dev = &chip->dev->descriptor;
-       struct usb_host_interface *hostif = &get_iface(chip->dev->actconfig, 
ctrlif)->altsetting[0];
+       struct usb_host_interface *hostif = &usb_ifnum_to_if(chip->dev, 
ctrlif)->altsetting[0];
 
        strcpy(chip->card->mixername, "USB Mixer");
 



-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to