Skip to content

Commit e337bf1

Browse files
marcantiwai
authored andcommitted
ALSA: usb-audio: add quirk for MacroSilicon MS2109
These devices claim to be 96kHz mono, but actually are 48kHz stereo with swapped channels and unaligned transfers. Cc: [email protected] Signed-off-by: Hector Martin <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Takashi Iwai <[email protected]>
1 parent 781c90c commit e337bf1

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

sound/usb/quirks-table.h

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3633,4 +3633,56 @@ ALC1220_VB_DESKTOP(0x26ce, 0x0a01), /* Asrock TRX40 Creator */
36333633
}
36343634
},
36353635

3636+
/*
3637+
* MacroSilicon MS2109 based HDMI capture cards
3638+
*
3639+
* These claim 96kHz 1ch in the descriptors, but are actually 48kHz 2ch.
3640+
* They also need QUIRK_AUDIO_ALIGN_TRANSFER, which makes one wonder if
3641+
* they pretend to be 96kHz mono as a workaround for stereo being broken
3642+
* by that...
3643+
*
3644+
* They also have swapped L-R channels, but that's for userspace to deal
3645+
* with.
3646+
*/
3647+
{
3648+
USB_DEVICE(0x534d, 0x2109),
3649+
.driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3650+
.vendor_name = "MacroSilicon",
3651+
.product_name = "MS2109",
3652+
.ifnum = QUIRK_ANY_INTERFACE,
3653+
.type = QUIRK_COMPOSITE,
3654+
.data = &(const struct snd_usb_audio_quirk[]) {
3655+
{
3656+
.ifnum = 2,
3657+
.type = QUIRK_AUDIO_ALIGN_TRANSFER,
3658+
},
3659+
{
3660+
.ifnum = 2,
3661+
.type = QUIRK_AUDIO_STANDARD_MIXER,
3662+
},
3663+
{
3664+
.ifnum = 3,
3665+
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
3666+
.data = &(const struct audioformat) {
3667+
.formats = SNDRV_PCM_FMTBIT_S16_LE,
3668+
.channels = 2,
3669+
.iface = 3,
3670+
.altsetting = 1,
3671+
.altset_idx = 1,
3672+
.attributes = 0,
3673+
.endpoint = 0x82,
3674+
.ep_attr = USB_ENDPOINT_XFER_ISOC |
3675+
USB_ENDPOINT_SYNC_ASYNC,
3676+
.rates = SNDRV_PCM_RATE_CONTINUOUS,
3677+
.rate_min = 48000,
3678+
.rate_max = 48000,
3679+
}
3680+
},
3681+
{
3682+
.ifnum = -1
3683+
}
3684+
}
3685+
}
3686+
},
3687+
36363688
#undef USB_DEVICE_VENDOR_SPEC

0 commit comments

Comments
 (0)