[alsa-devel] [PATCH v2 7/9] ALSA: usb-audio: remove is_playback from implicit feedback quirks
Eldad Zack
eldad at fogrefinery.com
Sat Aug 3 11:05:21 CEST 2013
I had some error while sending, and this was sent twice.
On Sat, 3 Aug 2013, Eldad Zack wrote:
> An implicit feedback endpoint can only be a capture source. The
> consumer (sink) of the implicit feedback endpoint is therefore limited
> to playback EPs.
> Check if the target endpoint is a playback first and remove redundant
> checks.
>
> Signed-off-by: Eldad Zack <eldad at fogrefinery.com>
> ---
> sound/usb/pcm.c | 40 +++++++++++++++++++---------------------
> 1 file changed, 19 insertions(+), 21 deletions(-)
>
> diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
> index bb2e0f5..af30e08 100644
> --- a/sound/usb/pcm.c
> +++ b/sound/usb/pcm.c
> @@ -334,41 +334,39 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs,
> {
> struct usb_host_interface *alts;
> struct usb_interface *iface;
> - int is_playback = subs->direction == SNDRV_PCM_STREAM_PLAYBACK;
> int implicit_fb = 0;
> unsigned int ep;
>
> + /* Implicit feedback sync EPs consumers are always playback EPs */
> + if (subs->direction != SNDRV_PCM_STREAM_PLAYBACK)
> + return 0;
> +
> switch (subs->stream->chip->usb_id) {
> case USB_ID(0x0763, 0x2030): /* M-Audio Fast Track C400 */
> case USB_ID(0x0763, 0x2031): /* M-Audio Fast Track C600 */
> - if (is_playback) {
> - implicit_fb = 1;
> - ep = 0x81;
> - iface = usb_ifnum_to_if(dev, 3);
> + implicit_fb = 1;
> + ep = 0x81;
> + iface = usb_ifnum_to_if(dev, 3);
>
> - if (!iface || iface->num_altsetting == 0)
> - return -EINVAL;
> + if (!iface || iface->num_altsetting == 0)
> + return -EINVAL;
>
> - alts = &iface->altsetting[1];
> - goto add_sync_ep;
> - }
> + alts = &iface->altsetting[1];
> + goto add_sync_ep;
> break;
> case USB_ID(0x0763, 0x2080): /* M-Audio FastTrack Ultra */
> case USB_ID(0x0763, 0x2081):
> - if (is_playback) {
> - implicit_fb = 1;
> - ep = 0x81;
> - iface = usb_ifnum_to_if(dev, 2);
> + implicit_fb = 1;
> + ep = 0x81;
> + iface = usb_ifnum_to_if(dev, 2);
>
> - if (!iface || iface->num_altsetting == 0)
> - return -EINVAL;
> + if (!iface || iface->num_altsetting == 0)
> + return -EINVAL;
>
> - alts = &iface->altsetting[1];
> - goto add_sync_ep;
> - }
> + alts = &iface->altsetting[1];
> + goto add_sync_ep;
> }
> - if (is_playback &&
> - attr == USB_ENDPOINT_SYNC_ASYNC &&
> + if (attr == USB_ENDPOINT_SYNC_ASYNC &&
> altsd->bInterfaceClass == USB_CLASS_VENDOR_SPEC &&
> altsd->bInterfaceProtocol == 2 &&
> altsd->bNumEndpoints == 1 &&
> --
> 1.8.1.5
>
More information about the Alsa-devel
mailing list