• Nishanth Menon's avatar
    regulator: palmas: Fix SMPS enable/disable/is_enabled · 318dbb02
    Nishanth Menon authored
    We use regmap regulator ops to enable/disable and check if regulator
    is enabled for various SMPS. However, these depend on valid
    enable_reg, enable_mask and enable_value in regulator descriptor.
    
    Currently we do not populate these for SMPS other than SMPS10, this
    results in spurious results as regmap assumes that the values are
    valid and ends up reading register 0x0 RTC:SECONDS_REG on Palmas
    variants that do have RTC! To fix this, we update proper parameters
    for the descriptor fields.
    
    Further, we want to ensure the behavior consistent with logic
    prior to commit dbabd624, where, once you do a set_mode,
    enable/disable ensure the logic remains consistent and configures
    Palmas to the configuration that we set with set_mode (since the
    configuration register is common). To do this, we can rely on the
    regulator core's regulator_register behavior where the regulator
    descriptor pointer provided by the regulator driver is stored. (no
    reallocation and copy is done). This lets us update the enable_value
    post registration, to remain consistent with the mode we configure as
    part of set_mode.
    
    Fixes: dbabd624 ("regulator: palmas: Reemove open coded functions with helper functions")
    Reported-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
    Signed-off-by: default avatarNishanth Menon <nm@ti.com>
    Tested-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
    Signed-off-by: default avatarMark Brown <broonie@linaro.org>
    318dbb02
palmas-regulator.c 29.1 KB