| From 7658c8faeff3badf6a27420376d887857429fd16 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 19 Jul 2019 10:05:37 +0000 |
| Subject: ASoC: sgtl5000: Fix charge pump source assignment |
| |
| From: Oleksandr Suvorov <oleksandr.suvorov@toradex.com> |
| |
| [ Upstream commit b6319b061ba279577fd7030a9848fbd6a17151e3 ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| sound/soc/codecs/sgtl5000.c | 15 ++++++++++----- |
| 1 file changed, 10 insertions(+), 5 deletions(-) |
| |
| diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c |
| index 3dba5550a6659..d81ac4e499aab 100644 |
| --- a/sound/soc/codecs/sgtl5000.c |
| +++ b/sound/soc/codecs/sgtl5000.c |
| @@ -987,12 +987,17 @@ static int sgtl5000_set_power_regs(struct snd_soc_codec *codec) |
| 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_write(codec, SGTL5000_CHIP_LINREG_CTRL, lreg_ctrl); |
| -- |
| 2.20.1 |
| |