mirror of
https://github.com/torvalds/linux.git
synced 2024-10-31 17:21:49 +00:00
ALSA: usb-audio: reverse condition logic in set_sync_endpoint
Reverse logic on the conditions required to qualify for a sync endpoint and remove one level of indendation. Signed-off-by: Eldad Zack <eldad@fogrefinery.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
a60945fd08
commit
f34d065013
@ -419,48 +419,51 @@ static int set_sync_endpoint(struct snd_usb_substream *subs,
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
if (((is_playback && attr == USB_ENDPOINT_SYNC_ASYNC) ||
|
||||
(!is_playback && attr == USB_ENDPOINT_SYNC_ADAPTIVE)) &&
|
||||
altsd->bNumEndpoints >= 2) {
|
||||
/* check sync-pipe endpoint */
|
||||
/* ... and check descriptor size before accessing bSynchAddress
|
||||
because there is a version of the SB Audigy 2 NX firmware lacking
|
||||
the audio fields in the endpoint descriptors */
|
||||
if ((get_endpoint(alts, 1)->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_ISOC ||
|
||||
(get_endpoint(alts, 1)->bLength >= USB_DT_ENDPOINT_AUDIO_SIZE &&
|
||||
get_endpoint(alts, 1)->bSynchAddress != 0 &&
|
||||
!implicit_fb)) {
|
||||
snd_printk(KERN_ERR "%d:%d:%d : invalid sync pipe. bmAttributes %02x, bLength %d, bSynchAddress %02x\n",
|
||||
dev->devnum, fmt->iface, fmt->altsetting,
|
||||
get_endpoint(alts, 1)->bmAttributes,
|
||||
get_endpoint(alts, 1)->bLength,
|
||||
get_endpoint(alts, 1)->bSynchAddress);
|
||||
return -EINVAL;
|
||||
}
|
||||
ep = get_endpoint(alts, 1)->bEndpointAddress;
|
||||
if (!implicit_fb &&
|
||||
get_endpoint(alts, 0)->bLength >= USB_DT_ENDPOINT_AUDIO_SIZE &&
|
||||
(( is_playback && ep != (unsigned int)(get_endpoint(alts, 0)->bSynchAddress | USB_DIR_IN)) ||
|
||||
(!is_playback && ep != (unsigned int)(get_endpoint(alts, 0)->bSynchAddress & ~USB_DIR_IN)))) {
|
||||
snd_printk(KERN_ERR "%d:%d:%d : invalid sync pipe. is_playback %d, ep %02x, bSynchAddress %02x\n",
|
||||
dev->devnum, fmt->iface, fmt->altsetting,
|
||||
is_playback, ep, get_endpoint(alts, 0)->bSynchAddress);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (altsd->bNumEndpoints < 2)
|
||||
return 0;
|
||||
|
||||
implicit_fb = (get_endpoint(alts, 1)->bmAttributes & USB_ENDPOINT_USAGE_MASK)
|
||||
== USB_ENDPOINT_USAGE_IMPLICIT_FB;
|
||||
if ((is_playback && attr != USB_ENDPOINT_SYNC_ASYNC) ||
|
||||
(!is_playback && attr != USB_ENDPOINT_SYNC_ADAPTIVE))
|
||||
return 0;
|
||||
|
||||
subs->sync_endpoint = snd_usb_add_endpoint(subs->stream->chip,
|
||||
alts, ep, !subs->direction,
|
||||
implicit_fb ?
|
||||
SND_USB_ENDPOINT_TYPE_DATA :
|
||||
SND_USB_ENDPOINT_TYPE_SYNC);
|
||||
if (!subs->sync_endpoint)
|
||||
return -EINVAL;
|
||||
|
||||
subs->data_endpoint->sync_master = subs->sync_endpoint;
|
||||
/* check sync-pipe endpoint */
|
||||
/* ... and check descriptor size before accessing bSynchAddress
|
||||
because there is a version of the SB Audigy 2 NX firmware lacking
|
||||
the audio fields in the endpoint descriptors */
|
||||
if ((get_endpoint(alts, 1)->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_ISOC ||
|
||||
(get_endpoint(alts, 1)->bLength >= USB_DT_ENDPOINT_AUDIO_SIZE &&
|
||||
get_endpoint(alts, 1)->bSynchAddress != 0 &&
|
||||
!implicit_fb)) {
|
||||
snd_printk(KERN_ERR "%d:%d:%d : invalid sync pipe. bmAttributes %02x, bLength %d, bSynchAddress %02x\n",
|
||||
dev->devnum, fmt->iface, fmt->altsetting,
|
||||
get_endpoint(alts, 1)->bmAttributes,
|
||||
get_endpoint(alts, 1)->bLength,
|
||||
get_endpoint(alts, 1)->bSynchAddress);
|
||||
return -EINVAL;
|
||||
}
|
||||
ep = get_endpoint(alts, 1)->bEndpointAddress;
|
||||
if (!implicit_fb &&
|
||||
get_endpoint(alts, 0)->bLength >= USB_DT_ENDPOINT_AUDIO_SIZE &&
|
||||
((is_playback && ep != (unsigned int)(get_endpoint(alts, 0)->bSynchAddress | USB_DIR_IN)) ||
|
||||
(!is_playback && ep != (unsigned int)(get_endpoint(alts, 0)->bSynchAddress & ~USB_DIR_IN)))) {
|
||||
snd_printk(KERN_ERR "%d:%d:%d : invalid sync pipe. is_playback %d, ep %02x, bSynchAddress %02x\n",
|
||||
dev->devnum, fmt->iface, fmt->altsetting,
|
||||
is_playback, ep, get_endpoint(alts, 0)->bSynchAddress);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
implicit_fb = (get_endpoint(alts, 1)->bmAttributes & USB_ENDPOINT_USAGE_MASK)
|
||||
== USB_ENDPOINT_USAGE_IMPLICIT_FB;
|
||||
|
||||
subs->sync_endpoint = snd_usb_add_endpoint(subs->stream->chip,
|
||||
alts, ep, !subs->direction,
|
||||
implicit_fb ?
|
||||
SND_USB_ENDPOINT_TYPE_DATA :
|
||||
SND_USB_ENDPOINT_TYPE_SYNC);
|
||||
if (!subs->sync_endpoint)
|
||||
return -EINVAL;
|
||||
|
||||
subs->data_endpoint->sync_master = subs->sync_endpoint;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user