• Krzysztof Kozlowski's avatar
    regulator: s5m8767: do not use reset value as DVS voltage if GPIO DVS is disabled · b16bef60
    Krzysztof Kozlowski authored
    The driver and its bindings, before commit 04f9f068 ("regulator:
    s5m8767: Modify parsing method of the voltage table of buck2/3/4") were
    requiring to provide at least one safe/default voltage for DVS registers
    if DVS GPIO is not being enabled.
    
    IOW, if s5m8767,pmic-buck2-uses-gpio-dvs is missing, the
    s5m8767,pmic-buck2-dvs-voltage should still be present and contain one
    voltage.
    
    This requirement was coming from driver behavior matching this condition
    (none of DVS GPIO is enabled): it was always initializing the DVS
    selector pins to 0 and keeping the DVS enable setting at reset value
    (enabled).  Therefore if none of DVS GPIO is enabled in devicetree,
    driver was configuring the first DVS voltage for buck[234].
    
    Mentioned commit 04f9f068 ("regulator: s5m8767: Modify parsing
    method of the voltage table of buck2/3/4") broke it because DVS voltage
    won't be parsed from devicetree if DVS GPIO is not enabled.  After the
    change, driver will configure bucks to use the register reset value as
    voltage which might have unpleasant effects.
    
    Fix this by relaxing the bindings constrain: if DVS GPIO is not enabled
    in devicetree (therefore DVS voltage is also not parsed), explicitly
    disable it.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 04f9f068 ("regulator: s5m8767: Modify parsing method of the voltage table of buck2/3/4")
    Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Acked-by: default avatarRob Herring <robh@kernel.org>
    Message-Id: <20211008113723.134648-2-krzysztof.kozlowski@canonical.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    b16bef60
s5m8767.c 25.9 KB