lkml.org 
[lkml]   [2019]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 281/313] ALSA: hda/realtek - Fix lose hp_pins for disable auto mute
    Date
    4.19-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Kailang Yang <kailang@realtek.com>

    commit d561aa0a70bb2e1dd85fde98b6a5561e4175ac3e upstream.

    When auto_mute = no or spec->suppress_auto_mute = 1, cfg->hp_pins will
    lose value.

    Add this patch to find hp_pins value.
    I add fixed for ALC282 ALC225 ALC256 ALC294 and alc_default_init()
    alc_default_shutup().

    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    sound/pci/hda/patch_realtek.c | 45 ++++++++++++++++++++++++++++++++++++++++++
    1 file changed, 45 insertions(+)

    --- a/sound/pci/hda/patch_realtek.c
    +++ b/sound/pci/hda/patch_realtek.c
    @@ -2963,6 +2963,11 @@ static void alc282_init(struct hda_codec
    bool hp_pin_sense;
    int coef78;

    + if (!spec->gen.autocfg.hp_outs && spec->gen.suppress_auto_mute) {
    + if (spec->gen.autocfg.line_out_type == AC_JACK_HP_OUT)
    + hp_pin = spec->gen.autocfg.line_out_pins[0];
    + }
    +
    alc282_restore_default_value(codec);

    if (!hp_pin)
    @@ -3000,6 +3005,11 @@ static void alc282_shutup(struct hda_cod
    bool hp_pin_sense;
    int coef78;

    + if (!spec->gen.autocfg.hp_outs && spec->gen.suppress_auto_mute) {
    + if (spec->gen.autocfg.line_out_type == AC_JACK_HP_OUT)
    + hp_pin = spec->gen.autocfg.line_out_pins[0];
    + }
    +
    if (!hp_pin) {
    alc269_shutup(codec);
    return;
    @@ -3159,6 +3169,11 @@ static void alc256_init(struct hda_codec
    hda_nid_t hp_pin = spec->gen.autocfg.hp_pins[0];
    bool hp_pin_sense;

    + if (!spec->gen.autocfg.hp_outs && spec->gen.suppress_auto_mute) {
    + if (spec->gen.autocfg.line_out_type == AC_JACK_HP_OUT)
    + hp_pin = spec->gen.autocfg.line_out_pins[0];
    + }
    +
    if (!hp_pin)
    return;

    @@ -3195,6 +3210,11 @@ static void alc256_shutup(struct hda_cod
    hda_nid_t hp_pin = spec->gen.autocfg.hp_pins[0];
    bool hp_pin_sense;

    + if (!spec->gen.autocfg.hp_outs && spec->gen.suppress_auto_mute) {
    + if (spec->gen.autocfg.line_out_type == AC_JACK_HP_OUT)
    + hp_pin = spec->gen.autocfg.line_out_pins[0];
    + }
    +
    if (!hp_pin) {
    alc269_shutup(codec);
    return;
    @@ -3231,6 +3251,11 @@ static void alc225_init(struct hda_codec
    hda_nid_t hp_pin = spec->gen.autocfg.hp_pins[0];
    bool hp1_pin_sense, hp2_pin_sense;

    + if (!spec->gen.autocfg.hp_outs && spec->gen.suppress_auto_mute) {
    + if (spec->gen.autocfg.line_out_type == AC_JACK_HP_OUT)
    + hp_pin = spec->gen.autocfg.line_out_pins[0];
    + }
    +
    if (!hp_pin)
    return;

    @@ -3274,6 +3299,11 @@ static void alc225_shutup(struct hda_cod
    hda_nid_t hp_pin = spec->gen.autocfg.hp_pins[0];
    bool hp1_pin_sense, hp2_pin_sense;

    + if (!spec->gen.autocfg.hp_outs && spec->gen.suppress_auto_mute) {
    + if (spec->gen.autocfg.line_out_type == AC_JACK_HP_OUT)
    + hp_pin = spec->gen.autocfg.line_out_pins[0];
    + }
    +
    if (!hp_pin) {
    alc269_shutup(codec);
    return;
    @@ -3318,6 +3348,11 @@ static void alc_default_init(struct hda_
    hda_nid_t hp_pin = spec->gen.autocfg.hp_pins[0];
    bool hp_pin_sense;

    + if (!spec->gen.autocfg.hp_outs && spec->gen.suppress_auto_mute) {
    + if (spec->gen.autocfg.line_out_type == AC_JACK_HP_OUT)
    + hp_pin = spec->gen.autocfg.line_out_pins[0];
    + }
    +
    if (!hp_pin)
    return;

    @@ -3347,6 +3382,11 @@ static void alc_default_shutup(struct hd
    hda_nid_t hp_pin = spec->gen.autocfg.hp_pins[0];
    bool hp_pin_sense;

    + if (!spec->gen.autocfg.hp_outs && spec->gen.suppress_auto_mute) {
    + if (spec->gen.autocfg.line_out_type == AC_JACK_HP_OUT)
    + hp_pin = spec->gen.autocfg.line_out_pins[0];
    + }
    +
    if (!hp_pin) {
    alc269_shutup(codec);
    return;
    @@ -3379,6 +3419,11 @@ static void alc294_hp_init(struct hda_co
    hda_nid_t hp_pin = spec->gen.autocfg.hp_pins[0];
    int i, val;

    + if (!spec->gen.autocfg.hp_outs && spec->gen.suppress_auto_mute) {
    + if (spec->gen.autocfg.line_out_type == AC_JACK_HP_OUT)
    + hp_pin = spec->gen.autocfg.line_out_pins[0];
    + }
    +
    if (!hp_pin)
    return;


    \
     
     \ /
      Last update: 2019-02-11 16:36    [W:5.548 / U:0.576 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site