gpio: of: Restrict enable-gpio quirk to regulator-gpio
Subsystems (2)
PATCH 1/1 gpio: of: Restrict enable-gpio quirk to regulator-gpio
From: Thierry Reding <[email protected]>
Commit 0e7d6f940164 ("gpio: of: Apply regulator-gpio quirk only to enable-gpios") breaks the device tree ABI specified in the device tree bindings for fixed regulators (compatible "regulator-fixed"). According to these bindings the polarity of the GPIO is exclusively controlled by the presence or absence of the enable-active-high property. As such the polarity quirk implemented in of_gpio_flags_quirks() must be applied to the GPIO specified for fixed regulators.
However, commit 0e7d6f940164 ("gpio: of: Apply regulator-gpio quirk only to enable-gpios") restricted the quirk to the enable-gpios property for fixed regulators as well, whereas according to the commit message itself it should only apply to "regulator-gpio" compatible device tree nodes.
Fix this by actually implementing what the offending commit intended, which is to ensure that the quirk is applied to the GPIO specified by the "enable-gpio" property for the "regulator-gpio" bindings only.
This fixes a regression on Jetson TX1 where the fixed regulator for the HDMI +5V pin relies on the flags quirk for the proper polarity.
--- drivers/gpio/gpiolib-of.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpio/gpiolib-of.c +2 -2
@@ -84,10 +84,10 @@ static void of_gpio_flags_quirks(struct device_node *np,* Note that active low is the default. */ if (IS_ENABLED (CONFIG_REGULATOR ) && - !strcmp (propname,"enable-gpio" ) && (of_device_is_compatible (np,"regulator-fixed" ) ||of_device_is_compatible (np,"reg-fixed-voltage" ) || -of_device_is_compatible (np,"regulator-gpio" ))) { + (of_device_is_compatible (np,"regulator-gpio" ) && +strcmp (propname,"enable-gpio" ) ==0 ))) {/* * The regulator GPIO handles are specified such that the * presence or absence of "enable-active-high" solely controls
Signature · 1 line
2.20.1
Quoted 35 lines · Thierry Reding
From: Thierry Reding <[email protected]>
Commit
0e7d6f940164("gpio: of: Apply regulator-gpio quirk only to enable-gpios") breaks the device tree ABI specified in the device tree bindings for fixed regulators (compatible "regulator-fixed"). According to these bindings the polarity of the GPIO is exclusively controlled by the presence or absence of the enable-active-high property. As such the polarity quirk implemented inof_gpio_flags_quirks()must be applied to the GPIO specified for fixed regulators.However, commit
0e7d6f940164("gpio: of: Apply regulator-gpio quirk only to enable-gpios") restricted the quirk to the enable-gpios property for fixed regulators as well, whereas according to the commit message itself it should only apply to "regulator-gpio" compatible device tree nodes.Fix this by actually implementing what the offending commit intended, which is to ensure that the quirk is applied to the GPIO specified by the "enable-gpio" property for the "regulator-gpio" bindings only.
This fixes a regression on Jetson TX1 where the fixed regulator for the HDMI +5V pin relies on the flags quirk for the proper polarity.
Fixes 0e7d6f940164 ("gpio: of: Apply regulator-gpio quirk only to enable-gpios")Signed-off-by Thierry Reding <[email protected]>--- drivers/gpio/gpiolib-of.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)drivers/gpio/gpiolib-of.c +0
-0@@ -84,10 +84,10 @@ static void of_gpio_flags_quirks(struct device_node *np,* Note that active low is the default. */
drivers/gpio/gpiolib-of.c static void of_gpio_flags_quirks(struct device_node *np, · line 93
Quoted 10 lines
drivers/gpio/gpiolib-of.c +2
-2if (IS_ENABLED (CONFIG_REGULATOR ) && - !strcmp (propname,"enable-gpio" ) && (of_device_is_compatible (np,"regulator-fixed" ) ||of_device_is_compatible (np,"reg-fixed-voltage" ) || -of_device_is_compatible (np,"regulator-gpio" ))) { + (of_device_is_compatible (np,"regulator-gpio" ) && +strcmp (propname,"enable-gpio" ) ==0 ))) {/* * The regulator GPIO handles are specified such that the * presence or absence of "enable-active-high" solely controls
On R8A7795 Salvator-XS
Signature · 2 lines
Best regards, Marek Vasut
Quoted 19 lines · Thierry Reding
From: Thierry Reding <[email protected]>
Commit
0e7d6f940164("gpio: of: Apply regulator-gpio quirk only to enable-gpios") breaks the device tree ABI specified in the device tree bindings for fixed regulators (compatible "regulator-fixed"). According to these bindings the polarity of the GPIO is exclusively controlled by the presence or absence of the enable-active-high property. As such the polarity quirk implemented inof_gpio_flags_quirks()must be applied to the GPIO specified for fixed regulators.However, commit
0e7d6f940164("gpio: of: Apply regulator-gpio quirk only to enable-gpios") restricted the quirk to the enable-gpios property for fixed regulators as well, whereas according to the commit message itself it should only apply to "regulator-gpio" compatible device tree nodes.Fix this by actually implementing what the offending commit intended, which is to ensure that the quirk is applied to the GPIO specified by the "enable-gpio" property for the "regulator-gpio" bindings only.
Quoted 5 lines
This fixes a regression on Jetson TX1 where the fixed regulator for the HDMI +5V pin relies on the flags quirk for the proper polarity.
Fixes 0e7d6f940164 ("gpio: of: Apply regulator-gpio quirk only to enable-gpios")Signed-off-by Thierry Reding <[email protected]>
Patch applied with Marek's tested-by, thanks for thorough commit message and helping out in sorting out this mess we've built up over the years.
Yours,
Linus Walleij