From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Alexander Tsoy <alexander@tsoy.me>, Takashi Iwai <tiwai@suse.de>,
Sasha Levin <sashal@kernel.org>,
perex@perex.cz, tiwai@suse.com, linux-sound@vger.kernel.org
Subject: [PATCH AUTOSEL 5.15 13/23] ALSA: usb-audio: Ignore clock selector errors for single connection
Date: Wed, 7 Feb 2024 16:25:54 -0500 [thread overview]
Message-ID: <20240207212611.3793-13-sashal@kernel.org> (raw)
In-Reply-To: <20240207212611.3793-1-sashal@kernel.org>
From: Alexander Tsoy <alexander@tsoy.me>
[ Upstream commit eaa1b01fe709d6a236a9cec74813e0400601fd23 ]
For devices with multiple clock sources connected to a selector, we need
to check what a clock selector control request has returned. This is
needed to ensure that a requested clock source is indeed selected and for
autoclock feature to work.
For devices with single clock source connected, if we get an error there
is nothing else we can do about it. We can't skip clock selector setup as
it is required by some devices. So lets just ignore error in this case.
This should fix various buggy Mackie devices:
[ 649.109785] usb 1-1.3: parse_audio_format_rates_v2v3(): unable to find clock source (clock -32)
[ 649.111946] usb 1-1.3: parse_audio_format_rates_v2v3(): unable to find clock source (clock -32)
[ 649.113822] usb 1-1.3: parse_audio_format_rates_v2v3(): unable to find clock source (clock -32)
There is also interesting info from the Windows documentation [1] (this
is probably why manufacturers dont't even test this feature):
"The USB Audio 2.0 driver doesn't support clock selection. The driver
uses the Clock Source Entity, which is selected by default and never
issues a Clock Selector Control SET CUR request."
Link: https://learn.microsoft.com/en-us/windows-hardware/drivers/audio/usb-2-0-audio-drivers [1]
Link: https://bugzilla.kernel.org/show_bug.cgi?id=217314
Link: https://bugzilla.kernel.org/show_bug.cgi?id=218175
Link: https://bugzilla.kernel.org/show_bug.cgi?id=218342
Signed-off-by: Alexander Tsoy <alexander@tsoy.me>
Link: https://lore.kernel.org/r/20240201115308.17838-1-alexander@tsoy.me
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/usb/clock.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/sound/usb/clock.c b/sound/usb/clock.c
index ccca9efa7d33..970e14ff54d1 100644
--- a/sound/usb/clock.c
+++ b/sound/usb/clock.c
@@ -328,8 +328,16 @@ static int __uac_clock_find_source(struct snd_usb_audio *chip,
if (chip->quirk_flags & QUIRK_FLAG_SKIP_CLOCK_SELECTOR)
return ret;
err = uac_clock_selector_set_val(chip, entity_id, cur);
- if (err < 0)
+ if (err < 0) {
+ if (pins == 1) {
+ usb_audio_dbg(chip,
+ "%s(): selector returned an error, "
+ "assuming a firmware bug, id %d, ret %d\n",
+ __func__, clock_id, err);
+ return ret;
+ }
return err;
+ }
}
if (!validate || ret > 0 || !chip->autoclock)
--
2.43.0
next prev parent reply other threads:[~2024-02-07 21:26 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-07 21:25 [PATCH AUTOSEL 5.15 01/23] ext4: avoid dividing by 0 in mb_update_avg_fragment_size() when block bitmap corrupt Sasha Levin
2024-02-07 21:25 ` [PATCH AUTOSEL 5.15 02/23] ext4: avoid allocating blocks from corrupted group in ext4_mb_try_best_found() Sasha Levin
2024-02-07 21:25 ` [PATCH AUTOSEL 5.15 03/23] ext4: avoid allocating blocks from corrupted group in ext4_mb_find_by_goal() Sasha Levin
2024-02-07 21:25 ` [PATCH AUTOSEL 5.15 04/23] dmaengine: ti: edma: Add some null pointer checks to the edma_probe Sasha Levin
2024-02-07 21:25 ` [PATCH AUTOSEL 5.15 05/23] ASoC: codecs: wcd934x: drop unneeded regulator include Sasha Levin
2024-02-07 21:25 ` [PATCH AUTOSEL 5.15 06/23] regulator: pwm-regulator: Add validity checks in continuous .get_voltage Sasha Levin
2024-02-07 21:25 ` [PATCH AUTOSEL 5.15 07/23] nvmet-tcp: fix nvme tcp ida memory leak Sasha Levin
2024-02-07 21:25 ` [PATCH AUTOSEL 5.15 08/23] ALSA: usb-audio: Check presence of valid altsetting control Sasha Levin
2024-02-07 21:25 ` [PATCH AUTOSEL 5.15 09/23] ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616 Sasha Levin
2024-02-07 21:25 ` [PATCH AUTOSEL 5.15 10/23] spi: sh-msiof: avoid integer overflow in constants Sasha Levin
2024-02-07 21:25 ` [PATCH AUTOSEL 5.15 11/23] Input: xpad - add Lenovo Legion Go controllers Sasha Levin
2024-02-07 21:25 ` [PATCH AUTOSEL 5.15 12/23] netfilter: conntrack: check SCTP_CID_SHUTDOWN_ACK for vtag setting in sctp_new Sasha Levin
2024-02-07 21:25 ` Sasha Levin [this message]
2024-02-07 21:25 ` [PATCH AUTOSEL 5.15 14/23] nvme-fc: do not wait in vain when unloading module Sasha Levin
2024-02-07 21:25 ` [PATCH AUTOSEL 5.15 15/23] nvmet-fcloop: swap the list_add_tail arguments Sasha Levin
2024-02-07 21:25 ` [PATCH AUTOSEL 5.15 16/23] nvmet-fc: release reference on target port Sasha Levin
2024-02-07 21:25 ` [PATCH AUTOSEL 5.15 17/23] nvmet-fc: defer cleanup using RCU properly Sasha Levin
2024-02-07 21:25 ` [PATCH AUTOSEL 5.15 18/23] nvmet-fc: hold reference on hostport match Sasha Levin
2024-02-07 21:26 ` [PATCH AUTOSEL 5.15 19/23] nvmet-fc: abort command when there is no binding Sasha Levin
2024-02-07 21:26 ` [PATCH AUTOSEL 5.15 20/23] nvmet-fc: avoid deadlock on delete association path Sasha Levin
2024-02-07 21:26 ` [PATCH AUTOSEL 5.15 21/23] nvmet-fc: take ref count on tgtport before delete assoc Sasha Levin
2024-02-07 21:26 ` [PATCH AUTOSEL 5.15 22/23] ext4: correct the hole length returned by ext4_map_blocks() Sasha Levin
2024-02-07 21:26 ` [PATCH AUTOSEL 5.15 23/23] Input: i8042 - add Fujitsu Lifebook U728 to i8042 quirk table Sasha Levin
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=20240207212611.3793-13-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=alexander@tsoy.me \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=perex@perex.cz \
--cc=stable@vger.kernel.org \
--cc=tiwai@suse.com \
--cc=tiwai@suse.de \
/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