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.pdf Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com> Reviewed-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> Reviewed-by: Igor Opaniuk <igor.opaniuk@toradex.com> Reviewed-by: Fabio Estevam <festevam@gmail.com> Link: https://lore.kernel.org/r/20190719100524.23300-7-oleksandr.suvorov@toradex.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
631bc8f013
commit
b6319b061b
@ -1338,12 +1338,17 @@ static int sgtl5000_set_power_regs(struct snd_soc_component *component)
|
||||
SGTL5000_INT_OSC_EN);
|
||||
/* Enable VDDC charge pump */
|
||||
ana_pwr |= SGTL5000_VDDC_CHRGPMP_POWERUP;
|
||||
} else if (vddio >= 3100 && vdda >= 3100) {
|
||||
} else {
|
||||
ana_pwr &= ~SGTL5000_VDDC_CHRGPMP_POWERUP;
|
||||
/* VDDC use VDDIO rail */
|
||||
lreg_ctrl |= SGTL5000_VDDC_ASSN_OVRD;
|
||||
lreg_ctrl |= SGTL5000_VDDC_MAN_ASSN_VDDIO <<
|
||||
SGTL5000_VDDC_MAN_ASSN_SHIFT;
|
||||
/*
|
||||
* if vddio == vdda the source of charge pump should be
|
||||
* assigned manually to VDDIO
|
||||
*/
|
||||
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);
|
||||
|
Loading…
Reference in New Issue
Block a user