OSDN Git Service

regulator: core: Change voltage setting path
authorMaciej Purski <m.purski@samsung.com>
Fri, 5 Oct 2018 15:36:29 +0000 (18:36 +0300)
committerMark Brown <broonie@kernel.org>
Thu, 8 Nov 2018 12:40:39 +0000 (12:40 +0000)
commit9243a195be7af96a9b69990e9313c4ba1c5fbeca
tree268ea209644b98239c45bdf064aae8dd4c215189
parentc054c6c792e165de2be51bc3feeaf3cebdedc8d6
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: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/core.c