lkml.org 
[lkml]   [2020]   [Apr]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.6 46/71] ALSA: usb-audio: Dont create jack controls for PCM terminals
    Date
    From: Takashi Iwai <tiwai@suse.de>

    commit 7dc3c5a0172e6c0449502103356c3628d05bc0e0 upstream.

    Some funky firmwares set the connector flag even on PCM terminals
    although it doesn't make sense (and even actually the firmware doesn't
    react properly!). Let's skip creation of jack controls in such a
    case.

    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206873
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200412081331.4742-4-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    sound/usb/mixer.c | 9 ++++++---
    1 file changed, 6 insertions(+), 3 deletions(-)

    --- a/sound/usb/mixer.c
    +++ b/sound/usb/mixer.c
    @@ -2088,7 +2088,8 @@ static int parse_audio_input_terminal(st
    check_input_term(state, term_id, &iterm);

    /* Check for jack detection. */
    - if (uac_v2v3_control_is_readable(bmctls, control))
    + if ((iterm.type & 0xff00) != 0x0100 &&
    + uac_v2v3_control_is_readable(bmctls, control))
    build_connector_control(state->mixer, &iterm, true);

    return 0;
    @@ -3128,7 +3129,8 @@ static int snd_usb_mixer_controls(struct
    if (err < 0 && err != -EINVAL)
    return err;

    - if (uac_v2v3_control_is_readable(le16_to_cpu(desc->bmControls),
    + if ((state.oterm.type & 0xff00) != 0x0100 &&
    + uac_v2v3_control_is_readable(le16_to_cpu(desc->bmControls),
    UAC2_TE_CONNECTOR)) {
    build_connector_control(state.mixer, &state.oterm,
    false);
    @@ -3153,7 +3155,8 @@ static int snd_usb_mixer_controls(struct
    if (err < 0 && err != -EINVAL)
    return err;

    - if (uac_v2v3_control_is_readable(le32_to_cpu(desc->bmControls),
    + if ((state.oterm.type & 0xff00) != 0x0100 &&
    + uac_v2v3_control_is_readable(le32_to_cpu(desc->bmControls),
    UAC3_TE_INSERTION)) {
    build_connector_control(state.mixer, &state.oterm,
    false);

    \
     
     \ /
      Last update: 2020-04-20 14:58    [W:4.490 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site