lkml.org 
[lkml]   [2020]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 042/639] regulator: fixed: Default enable high on DT regulators
    Date
    From: Linus Walleij <linus.walleij@linaro.org>

    [ Upstream commit 28be5f15df2ee6882b0a122693159c96a28203c7 ]

    commit efdfeb079cc3
    ("regulator: fixed: Convert to use GPIO descriptor only")
    switched to use gpiod_get() to look up the regulator from the
    gpiolib core whether that is device tree or boardfile.

    This meant that we activate the code in
    a603a2b8d86e ("gpio: of: Add special quirk to parse regulator flags")
    which means the descriptors coming from the device tree already
    have the right inversion and open drain semantics set up from
    the gpiolib core.

    As the fixed regulator was inspected again we got the
    inverted inversion and things broke.

    Fix it by ignoring the config in the device tree for now: the
    later patches in the series will push all inversion handling
    over to the gpiolib core and set it up properly in the
    boardfiles for legacy devices, but I did not finish that
    for this kernel cycle.

    Fixes: commit efdfeb079cc3 ("regulator: fixed: Convert to use GPIO descriptor only")
    Reported-by: Leonard Crestez <leonard.crestez@nxp.com>
    Reported-by: Fabio Estevam <festevam@gmail.com>
    Reported-by: John Stultz <john.stultz@linaro.org>
    Reported-by: Anders Roxell <anders.roxell@linaro.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Tested-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/regulator/fixed.c | 11 ++++++++---
    1 file changed, 8 insertions(+), 3 deletions(-)

    diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c
    index 988a7472c2ab5..d68ff65a5adc9 100644
    --- a/drivers/regulator/fixed.c
    +++ b/drivers/regulator/fixed.c
    @@ -84,9 +84,14 @@ of_get_fixed_voltage_config(struct device *dev,

    of_property_read_u32(np, "startup-delay-us", &config->startup_delay);

    - config->enable_high = of_property_read_bool(np, "enable-active-high");
    - config->gpio_is_open_drain = of_property_read_bool(np,
    - "gpio-open-drain");
    + /*
    + * FIXME: we pulled active low/high and open drain handling into
    + * gpiolib so it will be handled there. Delete this in the second
    + * step when we also remove the custom inversion handling for all
    + * legacy boardfiles.
    + */
    + config->enable_high = 1;
    + config->gpio_is_open_drain = 0;

    if (of_find_property(np, "vin-supply", NULL))
    config->input_supply = "vin";
    --
    2.20.1


    \
     
     \ /
      Last update: 2020-01-24 12:44    [W:4.120 / U:0.228 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site