Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 103e9625 authored by Alberto Aguirre's avatar Alberto Aguirre Committed by Takashi Iwai
Browse files

ALSA: usb-audio: simplify set_sync_ep_implicit_fb_quirk

parent c99c5a3b
Loading
Loading
Loading
Loading
+20 −32
Original line number Diff line number Diff line
@@ -321,6 +321,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)
@@ -330,44 +331,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 &&
@@ -382,6 +362,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,