regulator: core: Optimise enable/disable path for always on regulators
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Thu, 19 Apr 2012 12:19:07 +0000 (13:19 +0100)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 20 Apr 2012 09:12:38 +0000 (10:12 +0100)
commit6492bc1b1a9cb21d28cde3c70d090c7648c8b0ed
tree864ac01b80bbc6e57cbd86e0938b20112d68fe4a
parent854ccbaee7e48734936690a3fd4817c57e98aaad
regulator: core: Optimise enable/disable path for always on regulators

If a regulator is always on for any reason then cache that when the
consumer is created and use it to optimise away the need to take locks
or recurse up the supply tree when consumers do enable or disable calls.
The scheduling of asynchronous work for bulk enables is also skipped.

We don't actually check if the device physically supports control on the
basis that constraints allowing status changes on physically always on
regulators are nonsensical anyway.

This is a very common pattern in hardware - it's normal to have some
power supplies that have either no software control or are critical to
system function - so many systems should be able to benefit.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
drivers/regulator/core.c