int is_playback = subs->direction == SNDRV_PCM_STREAM_PLAYBACK;
int err;
- iface = &config->interface[fmt->iface];
+ iface = get_iface(config, fmt->iface);
alts = &iface->altsetting[fmt->altset_idx];
altsd = get_iface_desc(alts);
snd_assert(altsd->bAlternateSetting == fmt->altsetting, return -EINVAL);
struct usb_host_config *config = subs->dev->actconfig;
struct usb_host_interface *alts;
struct usb_interface *iface;
- iface = &config->interface[fmt->iface];
+ iface = get_iface(config, fmt->iface);
alts = &iface->altsetting[fmt->altset_idx];
ret = init_usb_sample_rate(subs->dev, subs->interface, alts, fmt, rate);
if (ret < 0)
config = dev->actconfig;
/* parse the interface's altsettings */
- iface = &config->interface[iface_no];
+ iface = get_iface(config, iface_no);
for (i = 0; i < iface->num_altsetting; i++) {
alts = &iface->altsetting[i];
altsd = get_iface_desc(alts);
/* find audiocontrol interface */
config = dev->actconfig;
- host_iface = &config->interface[ctrlif].altsetting[0];
+ host_iface = &get_iface(config, 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;
dev->devnum, ctrlif, j);
continue;
}
- iface = &config->interface[j];
+ 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;
for (quirk = quirk->data; quirk->ifnum >= 0; ++quirk) {
if (quirk->ifnum >= get_cfg_desc(config)->bNumInterfaces)
continue;
- iface = &config->interface[quirk->ifnum];
+ iface = get_iface(config, quirk->ifnum);
if (quirk->ifnum != probed_ifnum &&
usb_interface_claimed(iface))
continue;
err = usb_get_device_descriptor(dev);
config = dev->actconfig;
if (err < 0) snd_printdd("error usb_get_device_descriptor: %d\n", err);
- err = usb_set_configuration(dev, get_cfg_desc(config)->bConfigurationValue);
- if (err < 0) snd_printdd("error usb_set_configuration: %d\n", err);
+ err = usb_reset_configuration(dev);
+ if (err < 0) snd_printdd("error usb_reset_configuration: %d\n", err);
snd_printdd("extigy_boot: new boot length = %d\n", get_cfg_desc(config)->wTotalLength);
return -ENODEV; /* quit this anyway */
}
* now look for an empty slot and create a new card instance
*/
/* first, set the current configuration for this device */
- if (usb_set_configuration(dev, get_cfg_desc(config)->bConfigurationValue) < 0) {
- snd_printk(KERN_ERR "cannot set configuration (value 0x%x)\n", get_cfg_desc(config)->bConfigurationValue);
+ if (usb_reset_configuration(dev) < 0) {
+ snd_printk(KERN_ERR "cannot reset configuration (value 0x%x)\n", get_cfg_desc(config)->bConfigurationValue);
goto __error;
}
for (i = 0; i < SNDRV_CARDS; i++)