ASoC: rt5645: Update dapm pins when the card is not instantiated yet
This makes sure the dapm state is consistent when the card is instantiated. However, if the card is not instantiated yet, we still update the registers manually in the "jack in" case, so that we can immediately report if a mic is present or not. Disabling "Mic Det Power" after detection, and on jack out, can wait until the card gets instantiated. Signed-off-by: Nicolas Boichat <drinkcat@chromium.org> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
f312bc59d2
commit
b14c917409
|
@ -2805,12 +2805,11 @@ static int rt5645_jack_detect(struct snd_soc_codec *codec, int jack_insert)
|
|||
if (jack_insert) {
|
||||
regmap_write(rt5645->regmap, RT5645_CHARGE_PUMP, 0x0006);
|
||||
|
||||
if (codec->component.card->instantiated) {
|
||||
/* for jack type detect */
|
||||
snd_soc_dapm_force_enable_pin(dapm, "LDO2");
|
||||
snd_soc_dapm_force_enable_pin(dapm, "Mic Det Power");
|
||||
snd_soc_dapm_sync(dapm);
|
||||
} else {
|
||||
/* for jack type detect */
|
||||
snd_soc_dapm_force_enable_pin(dapm, "LDO2");
|
||||
snd_soc_dapm_force_enable_pin(dapm, "Mic Det Power");
|
||||
snd_soc_dapm_sync(dapm);
|
||||
if (!dapm->card->instantiated) {
|
||||
/* Power up necessary bits for JD if dapm is
|
||||
not ready yet */
|
||||
regmap_update_bits(rt5645->regmap, RT5645_PWR_ANLG1,
|
||||
|
@ -2841,12 +2840,8 @@ static int rt5645_jack_detect(struct snd_soc_codec *codec, int jack_insert)
|
|||
rt5645_enable_push_button_irq(codec, true);
|
||||
}
|
||||
} else {
|
||||
if (codec->component.card->instantiated) {
|
||||
snd_soc_dapm_disable_pin(dapm, "Mic Det Power");
|
||||
snd_soc_dapm_sync(dapm);
|
||||
} else
|
||||
regmap_update_bits(rt5645->regmap,
|
||||
RT5645_PWR_VOL, RT5645_PWR_MIC_DET, 0);
|
||||
snd_soc_dapm_disable_pin(dapm, "Mic Det Power");
|
||||
snd_soc_dapm_sync(dapm);
|
||||
rt5645->jack_type = SND_JACK_HEADPHONE;
|
||||
}
|
||||
|
||||
|
@ -2855,19 +2850,10 @@ static int rt5645_jack_detect(struct snd_soc_codec *codec, int jack_insert)
|
|||
if (rt5645->en_button_func)
|
||||
rt5645_enable_push_button_irq(codec, false);
|
||||
else {
|
||||
if (codec->component.card->instantiated) {
|
||||
if (rt5645->pdata.jd_mode == 0)
|
||||
snd_soc_dapm_disable_pin(dapm, "LDO2");
|
||||
snd_soc_dapm_disable_pin(dapm, "Mic Det Power");
|
||||
snd_soc_dapm_sync(dapm);
|
||||
} else {
|
||||
if (rt5645->pdata.jd_mode == 0)
|
||||
regmap_update_bits(rt5645->regmap,
|
||||
RT5645_PWR_MIXER,
|
||||
RT5645_PWR_LDO2, 0);
|
||||
regmap_update_bits(rt5645->regmap,
|
||||
RT5645_PWR_VOL, RT5645_PWR_MIC_DET, 0);
|
||||
}
|
||||
if (rt5645->pdata.jd_mode == 0)
|
||||
snd_soc_dapm_disable_pin(dapm, "LDO2");
|
||||
snd_soc_dapm_disable_pin(dapm, "Mic Det Power");
|
||||
snd_soc_dapm_sync(dapm);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue