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