]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ALSA: usb-audio: simplify set_sync_ep_implicit_fb_quirk
authorAlberto Aguirre <albaguirre@gmail.com>
Wed, 18 Apr 2018 14:35:34 +0000 (09:35 -0500)
committerBen Hutchings <ben@decadent.org.uk>
Tue, 28 Apr 2020 18:03:25 +0000 (19:03 +0100)
commit 103e9625647ad74d201e26fb74afcd8479142a37 upstream.

Signed-off-by: Alberto Aguirre <albaguirre@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
sound/usb/pcm.c

index ba920e85ccfd531bb28dfd4bc53017ad8de947a4..355a516a24fd65b3a3b9a12c76af3e1c2cb3a96b 100644 (file)
@@ -324,6 +324,7 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs,
        struct usb_host_interface *alts;
        struct usb_interface *iface;
        unsigned int ep;
+       unsigned int ifnum;
 
        /* Implicit feedback sync EPs consumers are always playback EPs */
        if (subs->direction != SNDRV_PCM_STREAM_PLAYBACK)
@@ -333,44 +334,23 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs,
        case USB_ID(0x0763, 0x2030): /* M-Audio Fast Track C400 */
        case USB_ID(0x0763, 0x2031): /* M-Audio Fast Track C600 */
                ep = 0x81;
-               iface = usb_ifnum_to_if(dev, 3);
-
-               if (!iface || iface->num_altsetting == 0)
-                       return -EINVAL;
-
-               alts = &iface->altsetting[1];
-               goto add_sync_ep;
-               break;
+               ifnum = 3;
+               goto add_sync_ep_from_ifnum;
        case USB_ID(0x0763, 0x2080): /* M-Audio FastTrack Ultra */
        case USB_ID(0x0763, 0x2081):
                ep = 0x81;
-               iface = usb_ifnum_to_if(dev, 2);
-
-               if (!iface || iface->num_altsetting == 0)
-                       return -EINVAL;
-
-               alts = &iface->altsetting[1];
-               goto add_sync_ep;
-       case USB_ID(0x2466, 0x8003):
+               ifnum = 2;
+               goto add_sync_ep_from_ifnum;
+       case USB_ID(0x2466, 0x8003): /* Fractal Audio Axe-Fx II */
                ep = 0x86;
-               iface = usb_ifnum_to_if(dev, 2);
-
-               if (!iface || iface->num_altsetting == 0)
-                       return -EINVAL;
-
-               alts = &iface->altsetting[1];
-               goto add_sync_ep;
-       case USB_ID(0x1397, 0x0002):
+               ifnum = 2;
+               goto add_sync_ep_from_ifnum;
+       case USB_ID(0x1397, 0x0002): /* Behringer UFX1204 */
                ep = 0x81;
-               iface = usb_ifnum_to_if(dev, 1);
-
-               if (!iface || iface->num_altsetting == 0)
-                       return -EINVAL;
-
-               alts = &iface->altsetting[1];
-               goto add_sync_ep;
-
+               ifnum = 1;
+               goto add_sync_ep_from_ifnum;
        }
+
        if (attr == USB_ENDPOINT_SYNC_ASYNC &&
            altsd->bInterfaceClass == USB_CLASS_VENDOR_SPEC &&
            altsd->bInterfaceProtocol == 2 &&
@@ -385,6 +365,14 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs,
        /* No quirk */
        return 0;
 
+add_sync_ep_from_ifnum:
+       iface = usb_ifnum_to_if(dev, ifnum);
+
+       if (!iface || iface->num_altsetting == 0)
+               return -EINVAL;
+
+       alts = &iface->altsetting[1];
+
 add_sync_ep:
        subs->sync_endpoint = snd_usb_add_endpoint(subs->stream->chip,
                                                   alts, ep, !subs->direction,