]> git.baikalelectronics.ru Git - kernel.git/commit
ata: libahci_platform: Fix regulator_get_optional() misuse
authorMark Brown <broonie@kernel.org>
Wed, 16 Oct 2019 10:51:05 +0000 (11:51 +0100)
committerJens Axboe <axboe@kernel.dk>
Fri, 25 Oct 2019 20:22:20 +0000 (14:22 -0600)
commit0de2194210f33ca6d7713c416ff0c23c26e166ae
tree14f1f47db642455f58f3dc3dfc1817b7630d76d8
parent2755715268e93e354d8d0f5c97f3f39cecda919b
ata: libahci_platform: Fix regulator_get_optional() misuse

This driver is using regulator_get_optional() to handle all the supplies
that it handles, and only ever enables and disables all supplies en masse
without ever doing any other configuration of the device to handle missing
power. These are clear signs that the API is being misused - it should only
be used for supplies that may be physically absent from the system and in
these cases the hardware usually needs different configuration if the
supply is missing. Instead use normal regualtor_get(), if the supply is
not described in DT then the framework will substitute a dummy regulator in
so no special handling is needed by the consumer driver.

In the case of the PHY regulator the handling in the driver is a hack to
deal with integrated PHYs; the supplies are only optional in the sense
that that there's some confusion in the code about where they're bound to.
From a code point of view they function exactly as normal supplies so can
be treated as such. It'd probably be better to model this by instantiating
a PHY object for integrated PHYs.

Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/ata/libahci_platform.c