ASoC: codecs: ES8326: solve hp and button detect issue
authorZhang Yi <zhangyi@everest-semi.com>
Wed, 15 May 2024 06:25:17 +0000 (14:25 +0800)
committerMark Brown <broonie@kernel.org>
Wed, 15 May 2024 15:38:16 +0000 (16:38 +0100)
We got an error report about headphone type detection and button detection.
We fixed the headphone type detection error by adjusting the condition
of setting es8326->hp to 0.And we fixed the button detection error by
adjusting micbias and vref.

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

index 833ea52638abb4a4ff1080ab7fcac0e0adb76a92..03b539ba540f662fd4d564b8d3dec56394015023 100644 (file)
@@ -829,8 +829,8 @@ static void es8326_jack_detect_handler(struct work_struct *work)
                        /* mute adc when mic path switch */
                        regmap_write(es8326->regmap, ES8326_ADC1_SRC, 0x44);
                        regmap_write(es8326->regmap, ES8326_ADC2_SRC, 0x66);
-                       es8326->hp = 0;
                }
+               es8326->hp = 0;
                regmap_update_bits(es8326->regmap, ES8326_HPDET_TYPE, 0x03, 0x01);
                regmap_write(es8326->regmap, ES8326_SYS_BIAS, 0x0a);
                regmap_update_bits(es8326->regmap, ES8326_HP_DRIVER_REF, 0x0f, 0x03);
@@ -981,7 +981,7 @@ static int es8326_resume(struct snd_soc_component *component)
        regmap_write(es8326->regmap, ES8326_ANA_LP, 0xf0);
        usleep_range(10000, 15000);
        regmap_write(es8326->regmap, ES8326_HPJACK_TIMER, 0xd9);
-       regmap_write(es8326->regmap, ES8326_ANA_MICBIAS, 0xcb);
+       regmap_write(es8326->regmap, ES8326_ANA_MICBIAS, 0xd8);
        /* set headphone default type and detect pin */
        regmap_write(es8326->regmap, ES8326_HPDET_TYPE, 0x83);
        regmap_write(es8326->regmap, ES8326_CLK_RESAMPLE, 0x05);
@@ -1018,7 +1018,7 @@ static int es8326_resume(struct snd_soc_component *component)
 
        regmap_write(es8326->regmap, ES8326_ANA_VSEL, 0x7F);
        /* select vdda as micbias source */
-       regmap_write(es8326->regmap, ES8326_VMIDLOW, 0x23);
+       regmap_write(es8326->regmap, ES8326_VMIDLOW, 0x03);
        /* set dac dsmclip = 1 */
        regmap_write(es8326->regmap, ES8326_DAC_DSM, 0x08);
        regmap_write(es8326->regmap, ES8326_DAC_VPPSCALE, 0x15);