Commit b6319b06 authored by Oleksandr Suvorov's avatar Oleksandr Suvorov Committed by Mark Brown

ASoC: sgtl5000: Fix charge pump source assignment

If VDDA != VDDIO and any of them is greater than 3.1V, charge pump
source can be assigned automatically [1].

[1] https://www.nxp.com/docs/en/data-sheet/SGTL5000.pdfSigned-off-by: default avatarOleksandr Suvorov <oleksandr.suvorov@toradex.com>
Reviewed-by: default avatarMarcel Ziswiler <marcel.ziswiler@toradex.com>
Reviewed-by: default avatarIgor Opaniuk <igor.opaniuk@toradex.com>
Reviewed-by: default avatarFabio Estevam <festevam@gmail.com>
Link: https://lore.kernel.org/r/20190719100524.23300-7-oleksandr.suvorov@toradex.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 631bc8f0
...@@ -1338,12 +1338,17 @@ static int sgtl5000_set_power_regs(struct snd_soc_component *component) ...@@ -1338,12 +1338,17 @@ static int sgtl5000_set_power_regs(struct snd_soc_component *component)
SGTL5000_INT_OSC_EN); SGTL5000_INT_OSC_EN);
/* Enable VDDC charge pump */ /* Enable VDDC charge pump */
ana_pwr |= SGTL5000_VDDC_CHRGPMP_POWERUP; ana_pwr |= SGTL5000_VDDC_CHRGPMP_POWERUP;
} else if (vddio >= 3100 && vdda >= 3100) { } else {
ana_pwr &= ~SGTL5000_VDDC_CHRGPMP_POWERUP; ana_pwr &= ~SGTL5000_VDDC_CHRGPMP_POWERUP;
/* VDDC use VDDIO rail */ /*
lreg_ctrl |= SGTL5000_VDDC_ASSN_OVRD; * if vddio == vdda the source of charge pump should be
lreg_ctrl |= SGTL5000_VDDC_MAN_ASSN_VDDIO << * assigned manually to VDDIO
SGTL5000_VDDC_MAN_ASSN_SHIFT; */
if (vddio == vdda) {
lreg_ctrl |= SGTL5000_VDDC_ASSN_OVRD;
lreg_ctrl |= SGTL5000_VDDC_MAN_ASSN_VDDIO <<
SGTL5000_VDDC_MAN_ASSN_SHIFT;
}
} }
snd_soc_component_write(component, SGTL5000_CHIP_LINREG_CTRL, lreg_ctrl); snd_soc_component_write(component, SGTL5000_CHIP_LINREG_CTRL, lreg_ctrl);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment