lkml.org 
[lkml]   [2020]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 074/109] ALSA: usb-audio: add quirk for MacroSilicon MS2109
    Date
    From: Hector Martin <marcan@marcan.st>

    commit e337bf19f6af38d5c3fa6d06cd594e0f890ca1ac upstream.

    These devices claim to be 96kHz mono, but actually are 48kHz stereo with
    swapped channels and unaligned transfers.

    Cc: stable@vger.kernel.org
    Signed-off-by: Hector Martin <marcan@marcan.st>
    Link: https://lore.kernel.org/r/20200702071433.237843-1-marcan@marcan.st
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    sound/usb/quirks-table.h | 52 +++++++++++++++++++++++++++++++++++++++++++++++
    1 file changed, 52 insertions(+)

    --- a/sound/usb/quirks-table.h
    +++ b/sound/usb/quirks-table.h
    @@ -3695,4 +3695,56 @@ ALC1220_VB_DESKTOP(0x26ce, 0x0a01), /* A
    }
    },

    +/*
    + * MacroSilicon MS2109 based HDMI capture cards
    + *
    + * These claim 96kHz 1ch in the descriptors, but are actually 48kHz 2ch.
    + * They also need QUIRK_AUDIO_ALIGN_TRANSFER, which makes one wonder if
    + * they pretend to be 96kHz mono as a workaround for stereo being broken
    + * by that...
    + *
    + * They also have swapped L-R channels, but that's for userspace to deal
    + * with.
    + */
    +{
    + USB_DEVICE(0x534d, 0x2109),
    + .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
    + .vendor_name = "MacroSilicon",
    + .product_name = "MS2109",
    + .ifnum = QUIRK_ANY_INTERFACE,
    + .type = QUIRK_COMPOSITE,
    + .data = &(const struct snd_usb_audio_quirk[]) {
    + {
    + .ifnum = 2,
    + .type = QUIRK_AUDIO_ALIGN_TRANSFER,
    + },
    + {
    + .ifnum = 2,
    + .type = QUIRK_AUDIO_STANDARD_MIXER,
    + },
    + {
    + .ifnum = 3,
    + .type = QUIRK_AUDIO_FIXED_ENDPOINT,
    + .data = &(const struct audioformat) {
    + .formats = SNDRV_PCM_FMTBIT_S16_LE,
    + .channels = 2,
    + .iface = 3,
    + .altsetting = 1,
    + .altset_idx = 1,
    + .attributes = 0,
    + .endpoint = 0x82,
    + .ep_attr = USB_ENDPOINT_XFER_ISOC |
    + USB_ENDPOINT_SYNC_ASYNC,
    + .rates = SNDRV_PCM_RATE_CONTINUOUS,
    + .rate_min = 48000,
    + .rate_max = 48000,
    + }
    + },
    + {
    + .ifnum = -1
    + }
    + }
    + }
    +},
    +
    #undef USB_DEVICE_VENDOR_SPEC

    \
     
     \ /
      Last update: 2022-09-17 16:08    [W:5.300 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site