From: Greg Kroah-Hartman Date: Sun, 5 Jun 2022 10:31:09 +0000 (+0200) Subject: 5.18-stable patches X-Git-Tag: v4.9.317~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=22d1e94dc1c02675e0ff053e2c4aa2b8a4392f7f;p=thirdparty%2Fkernel%2Fstable-queue.git 5.18-stable patches added patches: alsa-usb-audio-optimize-teac-clock-quirk.patch --- diff --git a/queue-5.18/alsa-usb-audio-optimize-teac-clock-quirk.patch b/queue-5.18/alsa-usb-audio-optimize-teac-clock-quirk.patch new file mode 100644 index 00000000000..d3eaca22631 --- /dev/null +++ b/queue-5.18/alsa-usb-audio-optimize-teac-clock-quirk.patch @@ -0,0 +1,50 @@ +From 3753fcc22974affa26160ce1c46a6ebaaaa86758 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Tue, 31 May 2022 15:07:49 +0200 +Subject: ALSA: usb-audio: Optimize TEAC clock quirk + +From: Takashi Iwai + +commit 3753fcc22974affa26160ce1c46a6ebaaaa86758 upstream. + +Maris found out that the quirk for TEAC devices to work around the +clock setup is needed to apply only when the base clock is changed, +e.g. from 48000-based clocks (48000, 96000, 192000, 384000) to +44100-based clocks (44100, 88200, 176400, 352800), or vice versa, +while switching to another clock with the same base clock doesn't need +the (forcible) interface setup. + +This patch implements the optimization for the TEAC clock quirk to +avoid the unnecessary interface re-setup. + +Fixes: 5ce0b06ae5e6 ("ALSA: usb-audio: Workaround for clock setup on TEAC devices") +Reported-by: Maris Abele +Cc: +Link: https://lore.kernel.org/r/20220531130749.30357-1-tiwai@suse.de +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/usb/clock.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +--- a/sound/usb/clock.c ++++ b/sound/usb/clock.c +@@ -573,10 +573,14 @@ static int set_sample_rate_v2v3(struct s + } + + /* FIXME - TEAC devices require the immediate interface setup */ +- if (rate != prev_rate && USB_ID_VENDOR(chip->usb_id) == 0x0644) { +- usb_set_interface(chip->dev, fmt->iface, fmt->altsetting); +- if (chip->quirk_flags & QUIRK_FLAG_IFACE_DELAY) +- msleep(50); ++ if (USB_ID_VENDOR(chip->usb_id) == 0x0644) { ++ bool cur_base_48k = (rate % 48000 == 0); ++ bool prev_base_48k = (prev_rate % 48000 == 0); ++ if (cur_base_48k != prev_base_48k) { ++ usb_set_interface(chip->dev, fmt->iface, fmt->altsetting); ++ if (chip->quirk_flags & QUIRK_FLAG_IFACE_DELAY) ++ msleep(50); ++ } + } + + validation: diff --git a/queue-5.18/series b/queue-5.18/series index f7cda20b29f..21d52e249f5 100644 --- a/queue-5.18/series +++ b/queue-5.18/series @@ -64,3 +64,4 @@ bpf-fix-excessive-memory-allocation-in-stack_map_alloc.patch bpf-reject-writes-for-ptr_to_map_key-in-check_helper_mem_access.patch bpf-check-ptr_to_mem-mem_rdonly-in-check_helper_mem_access.patch bpf-do-write-access-check-for-kfunc-and-global-func.patch +alsa-usb-audio-optimize-teac-clock-quirk.patch