• J
    regulator: max77802: Add set suspend mode for BUCKs and simplify code · 2e0eaa1a
    Javier Martinez Canillas 提交于
    The max77802 PMIC has a special enable pin (PWRREQ) that can be used
    by the Application Processor (AP) to power down and up voltage rails.
    
    The max77802 PMIC regulators have 3 different enable control logics.
    Some regulators support to be configured on different operational mode
    during normal operation while others only support to be put in a Low
    Power Mode while the system has entered in sleep mode. Some regulators
    don't even support that configuration. The logics are the following:
    
    Enable Control Logic1 by PWRREQ (BUCK 2-4, LDO2, LDO4-19, LDO22, LDO35)
    -------------------------------
    0: Output OFF
    1: Output ON/OFF (Controlled by PWRREQ)
         PWRREQ = HIGH (1): Output ON in Normal Mode
         PWRREQ = LOW (0): Output OFF
    2: Output On with Low Power Mode (Controlled by PWRREQ)
         PWRREQ = HIGH (1) : Output ON in Normal Mode
         PWRREQ = LOW (0): Output ON in Low Power Mode
    3: Output ON in Normal Mode
    
    Enable Control Logic2 by PWRREQ (LDO1, LDO20, LDO21)
    -------------------------------
    0: Output ON/OFF by ENx
    1: Output ON in Low Power Mode
    2: Output ON in Low Power Mode (Controlled by PWRREQ)
       PWRREQ = HIGH (1): Output ON in Normal Mode
       PWRREQ = LOW (0): Output ON in Low Power Mode
    3: Output ON in Normal Mode
    
    Enable Control Logic3 by PWRREQ (LDO3)
    -------------------------------
    0 or 3: Output ON in Normal Mode
    1: Output ON in Low Power Mode
    2: Output ON in Low Power Mode (Controlled by PWRREQ)
       PWRREQ = HIGH (1): Output ON in Normal Mode
       PWRREQ = LOW (0): Output ON in Low Power Mode
    
    The driver only implemented .set_suspend_mode for the LDOs regulators
    but some BUCKs also support to be put in Low Power Mode on system wide
    suspend so they should be supported as well. Two different functions
    were used for the logic 1 and 2 but this is not necessary.
    
    Only normal and Low Power Mode are valid operational modes, OFF is not
    an mode but is a regulator state that is handled by .set_suspend_enable
    ad .set_suspend_disable. So the same .set_suspend_mode function can be
    used by all the regulators that support Output On with Low Power Mode
    by PWRREQ, making much simpler the code to set the suspend mode.
    Signed-off-by: NJavier Martinez Canillas <javier.martinez@collabora.co.uk>
    Signed-off-by: NMark Brown <broonie@kernel.org>
    2e0eaa1a
max77802.c 19.6 KB