forked from luck/tmp_suning_uos_patched
ALSA: hda/realtek - Move to ACT_INIT state
It will be lose Mic JD state when Chrome OS boot and headset was plugged.
Just Implement of reset combo jack JD verb for ACT_PRE_PROBE state.
Intel test result was also failed.
It test passed until changed the initial state to ACT_INIT.
Mic JD will show every time.
This patch also changed the model name as 'alc-chrome-book' for
application of Chrome OS.
Fixes: 10f5b1b85e
("ALSA: hda/realtek - Fixed Headset Mic JD not stable")
Signed-off-by: Kailang Yang <kailang@realtek.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
b5bdbb6ccd
commit
8983eb602a
|
@ -5491,7 +5491,7 @@ static void alc_headset_btn_callback(struct hda_codec *codec,
|
||||||
jack->jack->button_state = report;
|
jack->jack->button_state = report;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void alc295_fixup_chromebook(struct hda_codec *codec,
|
static void alc_fixup_headset_jack(struct hda_codec *codec,
|
||||||
const struct hda_fixup *fix, int action)
|
const struct hda_fixup *fix, int action)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -5501,16 +5501,6 @@ static void alc295_fixup_chromebook(struct hda_codec *codec,
|
||||||
alc_headset_btn_callback);
|
alc_headset_btn_callback);
|
||||||
snd_hda_jack_add_kctl(codec, 0x55, "Headset Jack", false,
|
snd_hda_jack_add_kctl(codec, 0x55, "Headset Jack", false,
|
||||||
SND_JACK_HEADSET, alc_headset_btn_keymap);
|
SND_JACK_HEADSET, alc_headset_btn_keymap);
|
||||||
switch (codec->core.vendor_id) {
|
|
||||||
case 0x10ec0295:
|
|
||||||
alc_update_coef_idx(codec, 0x4a, 0x8000, 1 << 15); /* Reset HP JD */
|
|
||||||
alc_update_coef_idx(codec, 0x4a, 0x8000, 0 << 15);
|
|
||||||
break;
|
|
||||||
case 0x10ec0236:
|
|
||||||
alc_update_coef_idx(codec, 0x1b, 0x8000, 1 << 15); /* Reset HP JD */
|
|
||||||
alc_update_coef_idx(codec, 0x1b, 0x8000, 0 << 15);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case HDA_FIXUP_ACT_INIT:
|
case HDA_FIXUP_ACT_INIT:
|
||||||
switch (codec->core.vendor_id) {
|
switch (codec->core.vendor_id) {
|
||||||
|
@ -5531,6 +5521,25 @@ static void alc295_fixup_chromebook(struct hda_codec *codec,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void alc295_fixup_chromebook(struct hda_codec *codec,
|
||||||
|
const struct hda_fixup *fix, int action)
|
||||||
|
{
|
||||||
|
switch (action) {
|
||||||
|
case HDA_FIXUP_ACT_INIT:
|
||||||
|
switch (codec->core.vendor_id) {
|
||||||
|
case 0x10ec0295:
|
||||||
|
alc_update_coef_idx(codec, 0x4a, 0x8000, 1 << 15); /* Reset HP JD */
|
||||||
|
alc_update_coef_idx(codec, 0x4a, 0x8000, 0 << 15);
|
||||||
|
break;
|
||||||
|
case 0x10ec0236:
|
||||||
|
alc_update_coef_idx(codec, 0x1b, 0x8000, 1 << 15); /* Reset HP JD */
|
||||||
|
alc_update_coef_idx(codec, 0x1b, 0x8000, 0 << 15);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void alc_fixup_disable_mic_vref(struct hda_codec *codec,
|
static void alc_fixup_disable_mic_vref(struct hda_codec *codec,
|
||||||
const struct hda_fixup *fix, int action)
|
const struct hda_fixup *fix, int action)
|
||||||
{
|
{
|
||||||
|
@ -5685,6 +5694,7 @@ enum {
|
||||||
ALC285_FIXUP_LENOVO_PC_BEEP_IN_NOISE,
|
ALC285_FIXUP_LENOVO_PC_BEEP_IN_NOISE,
|
||||||
ALC255_FIXUP_ACER_HEADSET_MIC,
|
ALC255_FIXUP_ACER_HEADSET_MIC,
|
||||||
ALC295_FIXUP_CHROME_BOOK,
|
ALC295_FIXUP_CHROME_BOOK,
|
||||||
|
ALC225_FIXUP_HEADSET_JACK,
|
||||||
ALC225_FIXUP_DELL_WYSE_AIO_MIC_NO_PRESENCE,
|
ALC225_FIXUP_DELL_WYSE_AIO_MIC_NO_PRESENCE,
|
||||||
ALC225_FIXUP_WYSE_AUTO_MUTE,
|
ALC225_FIXUP_WYSE_AUTO_MUTE,
|
||||||
ALC225_FIXUP_WYSE_DISABLE_MIC_VREF,
|
ALC225_FIXUP_WYSE_DISABLE_MIC_VREF,
|
||||||
|
@ -6646,6 +6656,12 @@ static const struct hda_fixup alc269_fixups[] = {
|
||||||
[ALC295_FIXUP_CHROME_BOOK] = {
|
[ALC295_FIXUP_CHROME_BOOK] = {
|
||||||
.type = HDA_FIXUP_FUNC,
|
.type = HDA_FIXUP_FUNC,
|
||||||
.v.func = alc295_fixup_chromebook,
|
.v.func = alc295_fixup_chromebook,
|
||||||
|
.chained = true,
|
||||||
|
.chain_id = ALC225_FIXUP_HEADSET_JACK
|
||||||
|
},
|
||||||
|
[ALC225_FIXUP_HEADSET_JACK] = {
|
||||||
|
.type = HDA_FIXUP_FUNC,
|
||||||
|
.v.func = alc_fixup_headset_jack,
|
||||||
},
|
},
|
||||||
[ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE] = {
|
[ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE] = {
|
||||||
.type = HDA_FIXUP_PINS,
|
.type = HDA_FIXUP_PINS,
|
||||||
|
@ -7144,7 +7160,8 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
|
||||||
{.id = ALC255_FIXUP_DUMMY_LINEOUT_VERB, .name = "alc255-dummy-lineout"},
|
{.id = ALC255_FIXUP_DUMMY_LINEOUT_VERB, .name = "alc255-dummy-lineout"},
|
||||||
{.id = ALC255_FIXUP_DELL_HEADSET_MIC, .name = "alc255-dell-headset"},
|
{.id = ALC255_FIXUP_DELL_HEADSET_MIC, .name = "alc255-dell-headset"},
|
||||||
{.id = ALC295_FIXUP_HP_X360, .name = "alc295-hp-x360"},
|
{.id = ALC295_FIXUP_HP_X360, .name = "alc295-hp-x360"},
|
||||||
{.id = ALC295_FIXUP_CHROME_BOOK, .name = "alc-sense-combo"},
|
{.id = ALC225_FIXUP_HEADSET_JACK, .name = "alc-headset-jack"},
|
||||||
|
{.id = ALC295_FIXUP_CHROME_BOOK, .name = "alc-chrome-book"},
|
||||||
{.id = ALC299_FIXUP_PREDATOR_SPK, .name = "predator-spk"},
|
{.id = ALC299_FIXUP_PREDATOR_SPK, .name = "predator-spk"},
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user