diff mbox series

ASoC: rt5659: Fix the lost powers for the HDA header

Message ID 1438e0d6e7af4593a060808b11c62d67@realtek.com (mailing list archive)
State Superseded
Headers show
Series ASoC: rt5659: Fix the lost powers for the HDA header | expand

Commit Message

Jack Yu May 26, 2021, 10:10 a.m. UTC
The patch fixes the lost powers for the HDA header.

Signed-off-by: Oder Chiou <oder_chiou@realtek.com>
Signed-off-by: Jack Yu <jack.yu@realtek.com>
---
 sound/soc/codecs/rt5659.c | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

Comments

Mark Brown May 26, 2021, 10:36 a.m. UTC | #1
On Wed, May 26, 2021 at 10:10:15AM +0000, Jack Yu wrote:
> The patch fixes the lost powers for the HDA header.

What are the issues and how does this patch fix them?
Mark Brown May 26, 2021, 11:53 a.m. UTC | #2
On Wed, May 26, 2021 at 11:40:58AM +0000, Oder Chiou wrote:
> Oder Chiou <oder_chiou@realtek.com> 於 2021年5月26日 週三 下午7:27寫道:
> >
> > On Wed, May 26, 2021 at 10:10:15AM +0000, Jack Yu wrote:
> > > The patch fixes the lost powers for the HDA header.
> >
> > What are the issues and how does this patch fix them?
> The power of "LDO2", "MICBIAS1" and "Mic Det Power" were powered off after
> the DAPM widgets were added, and these powers were set by the JD settings
> "RT5659_JD_HDA_HEADER" in the probe function. In the codec probe function,
> these powers were ignored to prevent them controlled by DAPM, thanks.

OK, this should be covered in the changelog.
diff mbox series

Patch

diff --git a/sound/soc/codecs/rt5659.c b/sound/soc/codecs/rt5659.c
index 87f5709..4a50b16 100644
--- a/sound/soc/codecs/rt5659.c
+++ b/sound/soc/codecs/rt5659.c
@@ -2433,13 +2433,18 @@  static int set_dmic_power(struct snd_soc_dapm_widget *w,
 	return 0;
 }
 
-static const struct snd_soc_dapm_widget rt5659_dapm_widgets[] = {
+static const struct snd_soc_dapm_widget rt5659_particular_dapm_widgets[] = {
 	SND_SOC_DAPM_SUPPLY("LDO2", RT5659_PWR_ANLG_3, RT5659_PWR_LDO2_BIT, 0,
 		NULL, 0),
-	SND_SOC_DAPM_SUPPLY("PLL", RT5659_PWR_ANLG_3, RT5659_PWR_PLL_BIT, 0,
-		NULL, 0),
+	SND_SOC_DAPM_SUPPLY("MICBIAS1", RT5659_PWR_ANLG_2, RT5659_PWR_MB1_BIT,
+		0, NULL, 0),
 	SND_SOC_DAPM_SUPPLY("Mic Det Power", RT5659_PWR_VOL,
 		RT5659_PWR_MIC_DET_BIT, 0, NULL, 0),
+};
+
+static const struct snd_soc_dapm_widget rt5659_dapm_widgets[] = {
+	SND_SOC_DAPM_SUPPLY("PLL", RT5659_PWR_ANLG_3, RT5659_PWR_PLL_BIT, 0,
+		NULL, 0),
 	SND_SOC_DAPM_SUPPLY("Mono Vref", RT5659_PWR_ANLG_1,
 		RT5659_PWR_VREF3_BIT, 0, NULL, 0),
 
@@ -2464,8 +2469,6 @@  static int set_dmic_power(struct snd_soc_dapm_widget *w,
 		RT5659_ADC_MONO_R_ASRC_SFT, 0, NULL, 0),
 
 	/* Input Side */
-	SND_SOC_DAPM_SUPPLY("MICBIAS1", RT5659_PWR_ANLG_2, RT5659_PWR_MB1_BIT,
-		0, NULL, 0),
 	SND_SOC_DAPM_SUPPLY("MICBIAS2", RT5659_PWR_ANLG_2, RT5659_PWR_MB2_BIT,
 		0, NULL, 0),
 	SND_SOC_DAPM_SUPPLY("MICBIAS3", RT5659_PWR_ANLG_2, RT5659_PWR_MB3_BIT,
@@ -3660,10 +3663,23 @@  static int rt5659_set_bias_level(struct snd_soc_component *component,
 
 static int rt5659_probe(struct snd_soc_component *component)
 {
+	struct snd_soc_dapm_context *dapm =
+		snd_soc_component_get_dapm(component);
 	struct rt5659_priv *rt5659 = snd_soc_component_get_drvdata(component);
 
 	rt5659->component = component;
 
+	switch (rt5659->pdata.jd_src) {
+	case RT5659_JD_HDA_HEADER:
+		break;
+
+	default:
+		snd_soc_dapm_new_controls(dapm,
+			rt5659_particular_dapm_widgets,
+			ARRAY_SIZE(rt5659_particular_dapm_widgets));
+		break;
+	}
+
 	return 0;
 }