[alsa-devel] [PATCH RFC 0/6] ASoC: sgtl5000: fix use of regulators and internal LDO

Russell King - ARM Linux linux at arm.linux.org.uk
Sat Mar 7 00:24:29 CET 2015


On Fri, Mar 06, 2015 at 04:16:18PM -0700, Eric Nelson wrote:
> Hi Russell,
> 
> On 03/06/2015 03:58 PM, Eric Nelson wrote:
> > Hi Russell,
> > 
> > On 03/06/2015 03:53 PM, Russell King - ARM Linux wrote:
> >> On Fri, Mar 06, 2015 at 03:49:39PM -0700, Eric Nelson wrote:
> >>> Based on your review, it seems like the following is needed for a
> >>> V2 patch (set):
> >>>
> >>> - Move call to sgtl5000_fill_defaults() earlier in the
> >>>   sgtl5000_i2c_probe routine, before adjusting ANA_POWER.
> >>>   This will allow registers LINEREG_CTRL, CLK_CTRL, and even ANA_POWER
> >>>   back into the default	register list.
> >>> - Move regulators from codec to I2C device
> >>> - switch to devm_regulator api
> >>> - various code cleanups to simplify logic
> >>> - Adjust regulator usage in SND_SOC_BIAS_OFF
> >>>
> >>> I'll leave out the "write all default" registers for the moment.
> >>
> >> I'll also interject here to say that, against mainline, I need this
> >> patch to make the sgtl5k work on SolidRun's Hummingboard hardware.
> >> Without this, the internal regulator seems to get powered down, and
> >> we lose access to the device until the entire board is power cycled.
> >>
> > 
> > Mark applied essentially the patch below separately from
> > the LDO support:
> > 	http://mailman.alsa-project.org/pipermail/alsa-devel/2015-February/088376.html
> > 	http://mailman.alsa-project.org/pipermail/alsa-devel/2015-March/088773.html
> > 
> >>  sound/soc/codecs/sgtl5000.c | 11 +++++++++--
> >>  1 file changed, 9 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c
> >> index e182e6569bbd..79d5cbd65f36 100644
> >> --- a/sound/soc/codecs/sgtl5000.c
> >> +++ b/sound/soc/codecs/sgtl5000.c
> >> @@ -825,6 +825,10 @@ static int ldo_regulator_disable(struct regulator_dev *dev)
> >>  	struct snd_soc_codec *codec = (struct snd_soc_codec *)ldo->codec_data;
> >>  
> 
> Sorry. This part of the patch you sent wasn't included in the
> patch I mentioned above:
> 
> >>  	snd_soc_update_bits(codec, SGTL5000_CHIP_ANA_POWER,
> >> +				SGTL5000_LINREG_SIMPLE_POWERUP,
> >> +				SGTL5000_LINREG_SIMPLE_POWERUP);
> >> +
> >> +	snd_soc_update_bits(codec, SGTL5000_CHIP_ANA_POWER,
> >>  				SGTL5000_LINEREG_D_POWERUP,
> >>  				0);
> >>  
> 
> In the full patch-set, initialization of ANA_POWER is placed inside
> the sgtl5000_i2c_probe routine and the ldo_regulator is discarded.
> 
> I'm not sure why the code above is needed though.
> 
> Do you know what sequence of events causes this to fail?

All that I remember is that as the mainline code stood in 3.19 etc,
the SGTL5k would be partially detected and then I2C communication
with it was lost.  Probing the pins with a scope showed that it had
basically lost power.

The patch above is over a year old now, and I don't remember much
more detail than that.

I'm not going to be physically in a state where I can look at it for
about a week and a bit, sorry.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.


More information about the Alsa-devel mailing list