Message ID | 20190521103619.4707-5-oleksandr.suvorov@toradex.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | VAG power control improvement for sgtl5000 codec | expand |
On Tue, 2019-05-21 at 13:36 +0300, Oleksandr Suvorov wrote: > If VDDA != VDDIO and any of them is greater than 3.1V, charge pump > source can be assigned automatically. > > Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com> Reviewed-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> > --- > > sound/soc/codecs/sgtl5000.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git sound/soc/codecs/sgtl5000.c sound/soc/codecs/sgtl5000.c > index e813a37910af..ee1e4bf61322 100644 > --- sound/soc/codecs/sgtl5000.c > +++ sound/soc/codecs/sgtl5000.c > @@ -1174,12 +1174,16 @@ 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); > -- > 2.20.1
diff --git sound/soc/codecs/sgtl5000.c sound/soc/codecs/sgtl5000.c index e813a37910af..ee1e4bf61322 100644 --- sound/soc/codecs/sgtl5000.c +++ sound/soc/codecs/sgtl5000.c @@ -1174,12 +1174,16 @@ 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);
If VDDA != VDDIO and any of them is greater than 3.1V, charge pump source can be assigned automatically. Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com> --- sound/soc/codecs/sgtl5000.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)