android_kernel_xiaomi_sm8450/sound/usb
chihhao.chen 71f39badc8 ALSA: usb-audio: fix incorrect clock source setting
[ Upstream commit 4511781f95da0a3b2bad34f3f5e3967e80cd2d18 ]

The following scenario describes an echo test for
Samsung USBC Headset (AKG) with VID/PID (0x04e8/0xa051).

We first start a capture stream(USB IN transfer) in 96Khz/24bit/1ch mode.
In clock find source function, we get value 0x2 for clock selector
and 0x1 for clock source.

Kernel-4.14 behavior
Since clock source is valid so clock selector was not set again.
We pass through this function and start a playback stream(USB OUT transfer)
in 48Khz/32bit/2ch mode. This time we get value 0x1 for clock selector
and 0x1 for clock source. Finally clock id with this setting is 0x9.

Kernel-5.10 behavior
Clock selector was always set one more time even it is valid.
When we start a playback stream, we will get 0x2 for clock selector
and 0x1 for clock source. In this case clock id becomes 0xA.
This is an incorrect clock source setting and results in severe noises.
We see wrong data rate in USB IN transfer.
(From 288 bytes/ms becomes 144 bytes/ms) It should keep in 288 bytes/ms.

This earphone works fine on older kernel version load because
this is a newly-added behavior.

Fixes: d2e8f641257d ("ALSA: usb-audio: Explicitly set up the clock selector")
Signed-off-by: chihhao.chen <chihhao.chen@mediatek.com>
Link: https://lore.kernel.org/r/1627100621-19225-1-git-send-email-chihhao.chen@mediatek.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-08-12 13:22:03 +02:00
..
6fire sound: 6fire: move to use usb_control_msg_send() and usb_control_msg_recv() 2020-09-25 16:33:59 +02:00
bcd2000 ALSA: bcd2000: More constifications 2020-01-05 16:14:49 +01:00
caiaq ALSA: Replace with fallthrough pseudo keyword in the remaining places 2020-07-09 19:10:43 +02:00
hiface sound: hiface: move to use usb_control_msg_send() 2020-09-25 16:33:59 +02:00
line6 ALSA: line6: Fix racy initialization of LINE6 MIDI 2021-05-26 12:06:51 +02:00
misc ALSA: ua101: Replace tasklet with work 2020-09-09 18:33:15 +02:00
usx2y ALSA: usx2y: Don't call free_pages_exact() with NULL address 2021-07-20 16:05:39 +02:00
card.c ALSA: usb-audio: Add error checks for usb_driver_claim_interface() calls 2021-05-14 09:50:33 +02:00
card.h ALSA: usb-audio: work around streaming quirk for MacroSilicon MS2109 2020-08-10 12:57:12 +02:00
clock.c ALSA: usb-audio: fix incorrect clock source setting 2021-08-12 13:22:03 +02:00
clock.h ALSA: usb-audio: Add clock validity quirk for Denon MC7000/MCX8000 2020-02-13 07:18:58 +01:00
debug.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
endpoint.c ALSA: usb-audio: Don't avoid stopping the stream at disconnection 2021-03-20 10:43:44 +01:00
endpoint.h ALSA: usb-audio: Improve frames size computation 2020-04-24 08:25:24 +02:00
format.c ALSA: usb-audio: fix rate on Ozone Z90 USB headset 2021-07-14 16:55:35 +02:00
format.h ALSA: usb: initial USB Audio Device Class 3.0 support 2018-03-21 11:46:33 +01:00
helper.c USB: move snd_usb_pipe_sanity_check into the USB core 2020-09-16 11:02:23 +02:00
helper.h USB: move snd_usb_pipe_sanity_check into the USB core 2020-09-16 11:02:23 +02:00
Kconfig sound: Fix Kconfig indentation 2019-10-07 03:53:03 +02:00
Makefile ALSA: usb-audio: Add support for Presonus Studio 1810c 2020-02-15 09:46:16 +01:00
media.c media: sound/usb: Use Media Controller API to share media resources 2019-04-22 11:21:06 -04:00
media.h media: sound/usb: Use Media Controller API to share media resources 2019-04-22 11:21:06 -04:00
midi.c ALSA: usb-audio: Validate MS endpoint descriptors 2021-05-26 12:06:51 +02:00
midi.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mixer_maps.c ALSA: usb-audio: Add dB range mapping for Sennheiser Communications Headset PC 8 2021-05-11 14:47:32 +02:00
mixer_quirks.c ALSA: usb-audio: scarlett2: Improve driver startup messages 2021-06-03 09:00:27 +02:00
mixer_quirks.h ALSA: usb-audio: Initialize Dell Dock playback volumes 2018-05-02 16:02:32 +02:00
mixer_s1810c.c ALSA: usb-audio: Fix some typos 2020-06-30 19:48:18 +02:00
mixer_s1810c.h ALSA: usb-audio: Add support for Presonus Studio 1810c 2020-02-15 09:46:16 +01:00
mixer_scarlett_gen2.c ALSA: usb-audio: scarlett2: Fix 6i6 Gen 2 line out descriptions 2021-07-20 16:05:45 +02:00
mixer_scarlett_gen2.h ALSA: usb-audio: scarlett2: Improve driver startup messages 2021-06-03 09:00:27 +02:00
mixer_scarlett.c ALSA: usb-audio: More constifications 2020-01-05 16:14:34 +01:00
mixer_scarlett.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mixer_us16x08.c ALSA: usb-audio: US16x08: fix value count for level meters 2020-11-27 14:56:40 +01:00
mixer_us16x08.h ALSA: usb: Constify snd_kcontrol_new items 2020-01-03 09:24:34 +01:00
mixer.c ALSA: usb-audio: Add missing proc text entry for BESPOKEN type 2021-07-28 14:35:42 +02:00
mixer.h ALSA: usb-audio: scarlett2: Fix wrong resume call 2021-07-14 16:55:35 +02:00
pcm.c ALSA: usb-audio: Don't avoid stopping the stream at disconnection 2021-03-20 10:43:44 +01:00
pcm.h ALSA: usb-audio: Add UAC3 Power Domains to suspend/resume 2018-07-31 15:01:36 +02:00
power.c ALSA: usb-audio: More validations of descriptor units 2019-08-22 10:35:59 +02:00
power.h ALSA: usb-audio: Initial Power Domain support 2018-07-31 15:01:22 +02:00
proc.c ALSA: usb-audio: Fix a limit check in proc_dump_substream_formats() 2020-04-22 11:29:15 +02:00
proc.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
quirks-table.h ALSA: usb-audio: Add MIDI quirk for Vox ToneLab EX 2021-05-07 11:04:33 +02:00
quirks.c ALSA: usb-audio: Add registration quirk for JBL Quantum headsets 2021-07-28 14:35:42 +02:00
quirks.h ALSA: usb-audio: Rewrite registration quirk handling 2020-03-26 10:47:00 +01:00
stream.c ALSA: usb-audio: Fix control 'access overflow' errors from chmap 2020-12-21 13:30:07 +01:00
stream.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
usbaudio.h ALSA: usb-audio: Add error checks for usb_driver_claim_interface() calls 2021-05-14 09:50:33 +02:00
validate.c ALSA: usb-audio: Fix endianess in descriptor validation 2020-02-01 09:06:11 +01:00