From: Takashi Iwai <tiwai@suse.de>
To: Karol Kosik <k.kosik@outlook.com>
Cc: Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
"Steven 'Steve' Kendall" <skend@chromium.org>,
Alexander Tsoy <alexander@tsoy.me>,
wangdicheng <wangdicheng@kylinos.cn>, Kenny Levinsen <kl@kl.wtf>,
Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
Christos Skevis <xristos.thes@gmail.com>,
"Geoffrey D. Bennett" <g@b4.vu>, Sarah Grant <s@srd.tw>,
Stefan Stistrup <sstistrup@gmail.com>,
Johan Carlsson <johan.carlsson@teenage.engineering>,
linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] ALSA: usb-audio: Support multiple control interfaces
Date: Mon, 12 Aug 2024 16:18:40 +0200 [thread overview]
Message-ID: <87wmklddtr.wl-tiwai@suse.de> (raw)
In-Reply-To: <AS8P190MB1285893F4735C8B32AD3886BEC852@AS8P190MB1285.EURP190.PROD.OUTLOOK.COM>
On Mon, 12 Aug 2024 02:29:56 +0200,
Karol Kosik wrote:
>
> Registering Numark Party Mix II fails with error 'bogus bTerminalLink 1'.
> The problem stems from the driver not being able to find input/output
> terminals required to configure audio streaming. The information about
> those terminals is stored in AudioControl Interface. Numark device
> contains 2 AudioControl Interfaces and the driver checks only one of them.
>
> According to the USB standard, a device can have multiple audio functions,
> each represented by Audio Interface Collection. Every audio function is
> considered to be closed box and will contain unique AudioControl Interface
> and zero or more AudioStreaming and MIDIStreaming Interfaces.
>
> The Numark device adheres to the standard and defines two audio functions:
> - MIDIStreaming function
> - AudioStreaming function
> It starts with MIDI function, followed by the audio function. The driver
> saves the first AudioControl Interface in `snd_usb_audio` structure
> associated with the entire device. It then attempts to use this interface
> to query for terminals and clocks. However, this fails because the correct
> information is stored in the second AudioControl Interface, defined in the
> second Audio Interface Collection.
>
> This patch introduces a structure holding association between each
> MIDI/Audio Interface and its corresponding AudioControl Interface,
> instead of relying on AudioControl Interface defined for the entire
> device. This structure is populated during usb probing phase and leveraged
> later when querying for terminals and when sending USB requests.
>
> Alternative solutions considered include:
> - defining a quirk for Numark where the order of interface is manually
> changed, or terminals are hardcoded in the driver. This solution would
> have fixed only this model, though it seems that device is USB compliant,
> and it also seems that other devices from this company may be affected.
> What's more, it looks like products from other manufacturers have similar
> problems, i.e. Rane One DJ console
> - keeping a list of all AudioControl Interfaces and querying all of them
> to find required information. That would have solved my problem and have
> low probability of breaking other devices, as we would always start with
> the same logic of querying first AudioControl Interface. This solution
> would not have followed the standard though.
>
> This patch preserves the `snd_usb_audio.ctrl_intf` variable, which holds
> the first AudioControl Interface, and uses it as a fallback when some
> interfaces are not parsed correctly and lack an associated AudioControl
> Interface, i.e., when configured via quirks.
>
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=217865
>
> Signed-off-by: Karol Kosik <k.kosik@outlook.com>
Applied now to for-next branch. Thanks!
Takashi
prev parent reply other threads:[~2024-08-12 14:18 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-10 18:49 [PATCH] ALSA: usb-audio: Support multiple control interfaces Karol Kosik
2024-08-11 8:29 ` Takashi Iwai
2024-08-12 0:29 ` [PATCH v2] " Karol Kosik
2024-08-12 14:18 ` Takashi Iwai [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wmklddtr.wl-tiwai@suse.de \
--to=tiwai@suse.de \
--cc=alexander@tsoy.me \
--cc=g@b4.vu \
--cc=johan.carlsson@teenage.engineering \
--cc=k.kosik@outlook.com \
--cc=kl@kl.wtf \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=perex@perex.cz \
--cc=peter.ujfalusi@linux.intel.com \
--cc=s@srd.tw \
--cc=skend@chromium.org \
--cc=sstistrup@gmail.com \
--cc=tiwai@suse.com \
--cc=wangdicheng@kylinos.cn \
--cc=xristos.thes@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.