• Douglas Anderson's avatar
    regulator: core: Only count load for enabled consumers · 5451781d
    Douglas Anderson authored
    In general when the consumer of a regulator requests that the
    regulator be disabled it no longer will be drawing much load from the
    regulator--it should just be the leakage current and that should be
    very close to 0.
    
    Up to this point the regulator framework has continued to count a
    consumer's load request for disabled regulators.  This has led to code
    patterns that look like this:
    
      enable_my_thing():
        regular_set_load(reg, load_uA)
        regulator_enable(reg)
    
      disable_my_thing():
        regulator_disable(reg)
        regulator_set_load(reg, 0)
    
    Sometimes disable_my_thing() sets a nominal (<= 100 uA) load instead
    of setting a 0 uA load.  I will make the assertion that nearly all (if
    not all) places where we set a nominal load of 100 uA or less we end
    up with a result that is the same as if we had set a load of 0 uA.
    Specifically:
    - The whole point of setting the load is to help set the operating
      mode of the regulator.  Higher loads may need less efficient
      operating modes.
    - The only time this matters at all is if there is another consumer of
      the regulator that wants the regulator on.  If there are no other
      consumers of the regulator then the regulator will turn off and we
      don't care about the operating mode.
    - If there's another consumer that actually wants the regulator on
      then presumably it is requesting a load that makes our nominal
      <= 100 uA load insignificant.
    
    A quick survey of the existing callers to regulator_set_load() to see
    how everyone uses it:
    Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    5451781d
core.c 142 KB