]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: codecs: ES8326: suspend issue
authorZhang Yi <zhangyi@everest-semi.com>
Fri, 26 Jul 2024 03:10:02 +0000 (11:10 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 29 Jul 2024 00:18:36 +0000 (01:18 +0100)
We find that we need to disable micbias for the codec to enter suspend
So We modify the trigger conditions for enable_micbias and disable_micbias

Signed-off-by: Zhang Yi <zhangyi@everest-semi.com>
Link: https://patch.msgid.link/20240726031002.35055-1-zhangyi@everest-semi.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/es8326.c

index b246694ebb4faa4d7aab7de3c9145eeed9e124b9..60877116c0ef654cfd599276e12f2529c6bc7653 100644 (file)
@@ -805,6 +805,7 @@ static void es8326_jack_button_handler(struct work_struct *work)
                                    SND_JACK_BTN_0 | SND_JACK_BTN_1 | SND_JACK_BTN_2);
                        button_to_report = 0;
                }
+               es8326_disable_micbias(es8326->component);
        }
        mutex_unlock(&es8326->lock);
 }
@@ -878,7 +879,6 @@ static void es8326_jack_detect_handler(struct work_struct *work)
                        regmap_write(es8326->regmap, ES8326_INT_SOURCE, 0x00);
                        regmap_update_bits(es8326->regmap, ES8326_HPDET_TYPE, 0x03, 0x01);
                        regmap_update_bits(es8326->regmap, ES8326_HPDET_TYPE, 0x10, 0x00);
-                       es8326_enable_micbias(es8326->component);
                        usleep_range(50000, 70000);
                        regmap_update_bits(es8326->regmap, ES8326_HPDET_TYPE, 0x03, 0x00);
                        regmap_update_bits(es8326->regmap, ES8326_HPDET_TYPE, 0x10, 0x10);
@@ -897,6 +897,7 @@ static void es8326_jack_detect_handler(struct work_struct *work)
                        dev_dbg(comp->dev, "button pressed\n");
                        regmap_write(es8326->regmap, ES8326_INT_SOURCE,
                                        (ES8326_INT_SRC_PIN9 | ES8326_INT_SRC_BUTTON));
+                       es8326_enable_micbias(es8326->component);
                        queue_delayed_work(system_wq, &es8326->button_press_work, 10);
                        goto exit;
                }
@@ -1067,6 +1068,7 @@ static void es8326_init(struct snd_soc_component *component)
 
        regmap_write(es8326->regmap, ES8326_ADC_MUTE, 0x0f);
        regmap_write(es8326->regmap, ES8326_CLK_DIV_LRCK, 0xff);
+       es8326_disable_micbias(es8326->component);
 
        msleep(200);
        regmap_write(es8326->regmap, ES8326_INT_SOURCE, ES8326_INT_SRC_PIN9);