Message ID | 20191018100538.9137-1-l.stach@pengutronix.de |
---|---|
State | New |
Headers | show |
Series | gpio: of: don't warn if ignored GPIO flag matches the behavior | expand |
pt., 18 paź 2019 o 12:05 Lucas Stach <l.stach@pengutronix.de> napisał(a): > > Some devicetrees specify the ACTIVE_LOW flag in the fixed regulator GPIO > handle. While this has always been ignored, it's consistent with the > behavior of the regulator binding in the absence of the > "enable-active-high" DT property. It doesn't make much sense to print a > user visible warning for a configuration which is consistent, so only > print the warning if the GPIO flag contradicts the behavior dictated by > by the enable-active-high property. > > Signed-off-by: Lucas Stach <l.stach@pengutronix.de> > --- > drivers/gpio/gpiolib-of.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c > index 1eea2c6c2e1d..0b5383706b91 100644 > --- a/drivers/gpio/gpiolib-of.c > +++ b/drivers/gpio/gpiolib-of.c > @@ -134,18 +134,20 @@ static void of_gpio_flags_quirks(struct device_node *np, > (!(strcmp(propname, "enable-gpio") && > strcmp(propname, "enable-gpios")) && > of_device_is_compatible(np, "regulator-gpio")))) { > + bool active_low = > + !of_property_read_bool(np, "enable-active-high"); > /* > * The regulator GPIO handles are specified such that the > * presence or absence of "enable-active-high" solely controls > * the polarity of the GPIO line. Any phandle flags must > * be actively ignored. > */ > - if (*flags & OF_GPIO_ACTIVE_LOW) { > + if ((*flags & OF_GPIO_ACTIVE_LOW) && !active_low) { > pr_warn("%s GPIO handle specifies active low - ignored\n", > of_node_full_name(np)); > *flags &= ~OF_GPIO_ACTIVE_LOW; > } > - if (!of_property_read_bool(np, "enable-active-high")) > + if (active_low) > *flags |= OF_GPIO_ACTIVE_LOW; > } > /* > -- > 2.20.1 > This makes perfect sense, so applied right away. Bart
diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c index 1eea2c6c2e1d..0b5383706b91 100644 --- a/drivers/gpio/gpiolib-of.c +++ b/drivers/gpio/gpiolib-of.c @@ -134,18 +134,20 @@ static void of_gpio_flags_quirks(struct device_node *np, (!(strcmp(propname, "enable-gpio") && strcmp(propname, "enable-gpios")) && of_device_is_compatible(np, "regulator-gpio")))) { + bool active_low = + !of_property_read_bool(np, "enable-active-high"); /* * The regulator GPIO handles are specified such that the * presence or absence of "enable-active-high" solely controls * the polarity of the GPIO line. Any phandle flags must * be actively ignored. */ - if (*flags & OF_GPIO_ACTIVE_LOW) { + if ((*flags & OF_GPIO_ACTIVE_LOW) && !active_low) { pr_warn("%s GPIO handle specifies active low - ignored\n", of_node_full_name(np)); *flags &= ~OF_GPIO_ACTIVE_LOW; } - if (!of_property_read_bool(np, "enable-active-high")) + if (active_low) *flags |= OF_GPIO_ACTIVE_LOW; } /*
Some devicetrees specify the ACTIVE_LOW flag in the fixed regulator GPIO handle. While this has always been ignored, it's consistent with the behavior of the regulator binding in the absence of the "enable-active-high" DT property. It doesn't make much sense to print a user visible warning for a configuration which is consistent, so only print the warning if the GPIO flag contradicts the behavior dictated by by the enable-active-high property. Signed-off-by: Lucas Stach <l.stach@pengutronix.de> --- drivers/gpio/gpiolib-of.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)