[alsa-devel] [PATCH 2/2] ASoC: sgtl5000: clean up sgtl5000_enable_regulators()
Shawn Guo
shawn.guo at linaro.org
Tue Dec 17 14:58:09 CET 2013
On Fri, Dec 13, 2013 at 02:43:03PM +0800, Shawn Guo wrote:
> Function sgtl5000_enable_regulators() is somehow odd in handling the
> optional external VDDD supply. The driver can only enable this supply
> on SGTL5000 chip before revision 0x11, and of course when this external
> VDDD is present. It currently does something like below.
>
> 1. Check if regulator_bulk_get() on VDDA, VDDIO and VDDD will fail. If
> it fails, VDDD must be absent and it falls on internal LDO by calling
> sgtl5000_replace_vddd_with_ldo(). Otherwise, VDDD is used. And in
> either case, regulator_bulk_enable() will be called to enable
> 3 supplies.
>
> 2. In case that SGTL5000 revision is later than 0x11, even if external
> VDDD is present, it has to roll back the 'enable' and 'get' calls
> with regulator_bulk_disable() and regulator_bulk_free(), and starts
> over again by calling sgtl5000_replace_vddd_with_ldo() and
> regulator_bulk_enable().
>
> Such back and forth calls sequence is complicated and unnecessary.
> Also, since commit 4ddfebd (regulator: core: Provide a dummy regulator
> with full constraints), regulator_bulk_get() will always succeeds
> because of the dummy regulator. Thus the VDDD detection is broken.
>
> The patch changes the flow to something like the following, which should
> be more reasonable and clear, and also fix the VDDD detection breakage.
>
> 1. Check if we're running a chip before revision 0x11, on which an
> external VDDD can possibly be an option.
>
> 2. If it is an early revision, call regulator_get_optional() to detect
> whether an external VDDD supply is available.
>
> 3. If external VDDD is present, call sgtl5000_replace_vddd_with_ldo() to
> update sgtl5000->supplies info.
>
> 4. Drop regulator_bulk_get() call in sgtl5000_replace_vddd_with_ldo(),
> and call it in sgtl5000_enable_regulators() no matter it's an
> external VDDD or internal LDO.
>
> 5. Call regulator_bulk_enable() to enable these 3 regulators.
>
> Signed-off-by: Shawn Guo <shawn.guo at linaro.org>
Mark,
Since what Xiubo is concerned by is another issue apart from this patch
itself and being discussed, can you apply the patch?
Shawn
More information about the Alsa-devel
mailing list