• Axel Lin's avatar
    regulator: wm831x-ldo - fix the logic to set REGULATOR_MODE_IDLE and REGULATOR_MODE_STANDBY modes · e260999c
    Axel Lin authored
    Problem description in current implementation:
    When setting REGULATOR_MODE_IDLE mode, current implementation set
    WM831X_LDO1_LP_MODE bit of ctrl_reg (which is wrong, it should clear the bit).
    But due to a missing break statement for case REGULATOR_MODE_IDLE, the code
    fall through to case REGULATOR_MODE_STANDBY and then clear
    WM831X_LDO1_LP_MODE bit. So it still looks OK when checking the status
    by wm831x_gp_ldo_get_mode().
    
    When setting REGULATOR_MODE_STANDBY mode, it just does not work.
    wm831x_gp_ldo_get_mode() will still return REGULATOR_MODE_IDLE because
    the accordingly WM831X_LDO1_LP_MODE bit is clear.
    
    Correct behavior should be:
    Clear WM831X_LDO1_LP_MODE bit of ctrl_reg for REGULATOR_MODE_IDLE mode.
    Set WM831X_LDO1_LP_MODE bit of ctrl_reg for REGULATOR_MODE_STANDBY mode.
    Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
    Acked-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
    Signed-off-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
    e260999c
wm831x-ldo.c 20.6 KB