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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox