• Steve Twiss's avatar
    regulator: da9063: Bug fix when setting max voltage on LDOs 5-11 · ebf6dad0
    Steve Twiss authored
    Bug fix to allow the setting of maximum voltage for certain LDOs.
    
    What the bug is:
    
    There is a problem caused by an invalid calculation of n_voltages
    in the driver. This n_voltages value has the potential to be
    different for each regulator.
    
    The value for linear_min_sel is set as DA9063_V##regl_name#
    which can be different depending upon the regulator. This is
    chosen according to the following definitions in the DA9063
    registers.h file:
    
    DA9063_VLDO1_BIAS	0
    DA9063_VLDO2_BIAS	0
    DA9063_VLDO3_BIAS	0
    DA9063_VLDO4_BIAS	0
    DA9063_VLDO5_BIAS	2
    DA9063_VLDO6_BIAS	2
    DA9063_VLDO7_BIAS	2
    DA9063_VLDO8_BIAS	2
    DA9063_VLDO9_BIAS	3
    DA9063_VLDO10_BIAS	2
    DA9063_VLDO11_BIAS	2
    
    The calculation for n_voltages is valid for LDOs whose BIAS value
    is zero but this is not correct for those LDOs which have a
    non-zero value.
    
    What the fix is:
    
    In order to take into account the non-zero linear_min_sel value which
    is set for the regulators LDO5, LDO6, LDO7, LDO8, LDO9, LDO10 and
    LDO11, the calculation for n_voltages should take into account the
    missing term defined by DA9063_V##regl_name#.
    
    This will in turn allow the core constraints calculation to set the
    maximum voltage limits correctly and therefore allow users to apply
    the maximum expected voltage to all of the LDOs.
    Signed-off-by: default avatarSteve Twiss <stwiss.opensource@diasemi.com>
    Signed-off-by: default avatarMark Brown <broonie@linaro.org>
    Cc: stable@vger.kernel.org
    ebf6dad0
da9063-regulator.c 25.6 KB