OSDN Git Service

regulator: core: Change voltage setting path
authorMaciej Purski <m.purski@samsung.com>
Mon, 23 Apr 2018 14:33:42 +0000 (16:33 +0200)
committerMark Brown <broonie@kernel.org>
Thu, 17 May 2018 07:05:51 +0000 (16:05 +0900)
commit456e7cdf3b1a14e2606b8b687385ab2e3f23a49a
tree4e2dd59031c7112142205dc0c116019872c1be10
parent696861761a58d8c93605b5663824929fb6540f16
regulator: core: Change voltage setting path

On Odroid XU3/4 and other Exynos5422 based boards there is a case, that
different devices on the board are supplied by different regulators
with non-fixed voltages. If one of these devices temporarily requires
higher voltage, there might occur a situation that the spread between
two devices' voltages is so high, that there is a risk of changing
'high' and 'low' states on the interconnection between devices powered
by those regulators.

Uncoupled regulators should be a special case of coupled regulators, so
they should share a common voltage setting path. When enabling,
disabling or setting voltage of a coupled regulator, all coupled
regulators should be locked. Regulator's supplies should be locked, when
setting voltage of a single regulator. Enabling a coupled regulator or
setting its voltage should not be possible if some of its coupled
regulators, has not been registered.

Add function for locking coupled regulators and supplies. Extract
a new function regulator_set_voltage_rdev() from
regulator_set_voltage_unlocked(), which is called when setting
voltage of a single regulator.

Signed-off-by: Maciej Purski <m.purski@samsung.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/core.c