diff options
author | Hector Martin <marcan@marcan.st> | 2020-08-10 10:24:00 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2020-08-10 12:57:12 +0200 |
commit | 1b7ecc241a67ad6b584e071bd791a54e0cd5f097 (patch) | |
tree | f3f50d33541982032c151bfe33a91378584f1120 /sound/usb/stream.c | |
parent | ALSA: hda - fix the micmute led status for Lenovo ThinkCentre AIO (diff) | |
download | linux-1b7ecc241a67ad6b584e071bd791a54e0cd5f097.tar.xz linux-1b7ecc241a67ad6b584e071bd791a54e0cd5f097.zip |
ALSA: usb-audio: work around streaming quirk for MacroSilicon MS2109
Further investigation of the L-R swap problem on the MS2109 reveals that
the problem isn't that the channels are swapped, but rather that they
are swapped and also out of phase by one sample. In other words, the
issue is actually that the very first frame that comes from the hardware
is a half-frame containing only the right channel, and after that
everything becomes offset.
So introduce a new quirk field to drop the very first 2 bytes that come
in after the format is configured and a capture stream starts. This puts
the channels in phase and in the correct order.
Cc: stable@vger.kernel.org
Signed-off-by: Hector Martin <marcan@marcan.st>
Link: https://lore.kernel.org/r/20200810082400.225858-1-marcan@marcan.st
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to '')
-rw-r--r-- | sound/usb/stream.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/usb/stream.c b/sound/usb/stream.c index 4d1e6579e54d..ca76ba5b5c0b 100644 --- a/sound/usb/stream.c +++ b/sound/usb/stream.c @@ -94,6 +94,7 @@ static void snd_usb_init_substream(struct snd_usb_stream *as, subs->tx_length_quirk = as->chip->tx_length_quirk; subs->speed = snd_usb_get_speed(subs->dev); subs->pkt_offset_adj = 0; + subs->stream_offset_adj = 0; snd_usb_set_pcm_ops(as->pcm, stream); |