public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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

      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