regulator: fixed/gpio: Pull inversion/OD into gpiolib
This pushes the handling of inversion semantics and open drain settings to the GPIO descriptor and gpiolib. All affected board files are also augmented. This is especially nice since we don't have to have any confusing flags passed around to the left and right littering the fixed and GPIO regulator drivers and the regulator core. It is all just very straight-forward: the core asks the GPIO line to be asserted or deasserted and gpiolib deals with the rest depending on how the platform is configured: if the line is active low, it deals with that, if the line is open drain, it deals with that too. Cc: Alexander Shiyan <shc_work@mail.ru> # i.MX boards user Cc: Haojian Zhuang <haojian.zhuang@gmail.com> # MMP2 maintainer Cc: Aaro Koskinen <aaro.koskinen@iki.fi> # OMAP1 maintainer Cc: Tony Lindgren <tony@atomide.com> # OMAP1,2,3 maintainer Cc: Mike Rapoport <rppt@linux.vnet.ibm.com> # EM-X270 maintainer Cc: Robert Jarzmik <robert.jarzmik@free.fr> # EZX maintainer Cc: Philipp Zabel <philipp.zabel@gmail.com> # Magician maintainer Cc: Petr Cvek <petr.cvek@tul.cz> # Magician Cc: Robert Jarzmik <robert.jarzmik@free.fr> # PXA Cc: Paul Parsons <lost.distance@yahoo.com> # hx4700 Cc: Daniel Mack <zonque@gmail.com> # Raumfeld maintainer Cc: Marc Zyngier <marc.zyngier@arm.com> # Zeus maintainer Cc: Geert Uytterhoeven <geert+renesas@glider.be> # SuperH pinctrl/GPIO maintainer Cc: Russell King <rmk+kernel@armlinux.org.uk> # SA1100 Tested-by: Marek Szyprowski <m.szyprowski@samsung.com> Tested-by: Janusz Krzysztofik <jmkrzyszt@gmail.com> #OMAP1 Amstrad Delta Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:

committed by
Mark Brown

parent
d6cd33ad71
commit
01dc79cd6f
@@ -79,15 +79,6 @@ of_get_fixed_voltage_config(struct device *dev,
|
||||
|
||||
of_property_read_u32(np, "startup-delay-us", &config->startup_delay);
|
||||
|
||||
/*
|
||||
* 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";
|
||||
|
||||
@@ -151,24 +142,14 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev)
|
||||
|
||||
drvdata->desc.fixed_uV = config->microvolts;
|
||||
|
||||
cfg.ena_gpio_invert = !config->enable_high;
|
||||
if (config->enabled_at_boot) {
|
||||
if (config->enable_high)
|
||||
gflags = GPIOD_OUT_HIGH;
|
||||
else
|
||||
gflags = GPIOD_OUT_LOW;
|
||||
} else {
|
||||
if (config->enable_high)
|
||||
gflags = GPIOD_OUT_LOW;
|
||||
else
|
||||
gflags = GPIOD_OUT_HIGH;
|
||||
}
|
||||
if (config->gpio_is_open_drain) {
|
||||
if (gflags == GPIOD_OUT_HIGH)
|
||||
gflags = GPIOD_OUT_HIGH_OPEN_DRAIN;
|
||||
else
|
||||
gflags = GPIOD_OUT_LOW_OPEN_DRAIN;
|
||||
}
|
||||
/*
|
||||
* The signal will be inverted by the GPIO core if flagged so in the
|
||||
* decriptor.
|
||||
*/
|
||||
if (config->enabled_at_boot)
|
||||
gflags = GPIOD_OUT_HIGH;
|
||||
else
|
||||
gflags = GPIOD_OUT_LOW;
|
||||
|
||||
/*
|
||||
* Some fixed regulators share the enable line between two
|
||||
|
Reference in New Issue
Block a user