ALSA: hda/cs8409: Fix Jack detection after resume
[ Upstream commit 57f234248ff925d88caedf4019ec84e6ecb83909 ] The suspend code unconditionally sets ->hp_jack_in and ->mic_jack_in to zero but without reporting this status change to the HDA core. To compensate for this, always assume a status change on the first unsol event after boot or resume. Fixes: 424e531b47f8 ("ALSA: hda/cs8409: Ensure Type Detection is only run on startup when necessary") Signed-off-by: Christian A. Ehrhardt <lk@c--e.de> Link: https://lore.kernel.org/r/20211231134432.atwmuzeceqiklcoa@cae.in-ulm.de Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
b624b5b2fe
commit
32faa4c17a
@ -252,6 +252,7 @@ struct sub_codec cs8409_cs42l42_codec = {
|
||||
.init_seq_num = ARRAY_SIZE(cs42l42_init_reg_seq),
|
||||
.hp_jack_in = 0,
|
||||
.mic_jack_in = 0,
|
||||
.force_status_change = 1,
|
||||
.paged = 1,
|
||||
.suspended = 1,
|
||||
.no_type_dect = 0,
|
||||
@ -443,6 +444,7 @@ struct sub_codec dolphin_cs42l42_0 = {
|
||||
.init_seq_num = ARRAY_SIZE(dolphin_c0_init_reg_seq),
|
||||
.hp_jack_in = 0,
|
||||
.mic_jack_in = 0,
|
||||
.force_status_change = 1,
|
||||
.paged = 1,
|
||||
.suspended = 1,
|
||||
.no_type_dect = 0,
|
||||
@ -456,6 +458,7 @@ struct sub_codec dolphin_cs42l42_1 = {
|
||||
.init_seq_num = ARRAY_SIZE(dolphin_c1_init_reg_seq),
|
||||
.hp_jack_in = 0,
|
||||
.mic_jack_in = 0,
|
||||
.force_status_change = 1,
|
||||
.paged = 1,
|
||||
.suspended = 1,
|
||||
.no_type_dect = 1,
|
||||
|
@ -636,7 +636,9 @@ static void cs42l42_run_jack_detect(struct sub_codec *cs42l42)
|
||||
|
||||
static int cs42l42_handle_tip_sense(struct sub_codec *cs42l42, unsigned int reg_ts_status)
|
||||
{
|
||||
int status_changed = 0;
|
||||
int status_changed = cs42l42->force_status_change;
|
||||
|
||||
cs42l42->force_status_change = 0;
|
||||
|
||||
/* TIP_SENSE INSERT/REMOVE */
|
||||
switch (reg_ts_status) {
|
||||
@ -791,6 +793,7 @@ static void cs42l42_suspend(struct sub_codec *cs42l42)
|
||||
cs42l42->last_page = 0;
|
||||
cs42l42->hp_jack_in = 0;
|
||||
cs42l42->mic_jack_in = 0;
|
||||
cs42l42->force_status_change = 1;
|
||||
|
||||
/* Put CS42L42 into Reset */
|
||||
gpio_data = snd_hda_codec_read(codec, CS8409_PIN_AFG, 0, AC_VERB_GET_GPIO_DATA, 0);
|
||||
|
@ -305,6 +305,7 @@ struct sub_codec {
|
||||
|
||||
unsigned int hp_jack_in:1;
|
||||
unsigned int mic_jack_in:1;
|
||||
unsigned int force_status_change:1;
|
||||
unsigned int suspended:1;
|
||||
unsigned int paged:1;
|
||||
unsigned int last_page;
|
||||
|
Loading…
x
Reference in New Issue
Block a user