• Mark Brown's avatar
    ata: libahci_platform: Fix regulator_get_optional() misuse · 962399bb
    Mark Brown authored
    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: default avatarHans de Goede <hdegoede@redhat.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    962399bb
libahci_platform.c 20.5 KB