The property is implemented in the driver but not described in dt-bindings.
Add missing property 'gpio-activelow' to DT schema.
Signed-off-by: Markus Burri <markus.burri@mt.com>
---
.../devicetree/bindings/input/gpio-matrix-keypad.yaml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml
index 0f348b9..9c91224 100644
--- a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml
+++ b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml
@@ -40,6 +40,12 @@ properties:
type: boolean
description: Do not enable autorepeat feature.
+ gpio-activelow:
+ type: boolean
+ deprecated: true
+ description:
+ The GPIOs are low active (deprecated).
+ Use the GPIO-flags in gpio controller instead of this property.
debounce-delay-ms:
description: Debounce interval in milliseconds.
--
2.39.5
On Fri, Jan 10, 2025 at 06:49:03AM +0100, Markus Burri wrote: > The property is implemented in the driver but not described in dt-bindings. > Add missing property 'gpio-activelow' to DT schema. > > Signed-off-by: Markus Burri <markus.burri@mt.com> Reviewed-by: Manuel Traut <manuel.traut@mt.com> > --- > .../devicetree/bindings/input/gpio-matrix-keypad.yaml | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > index 0f348b9..9c91224 100644 > --- a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > +++ b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > @@ -40,6 +40,12 @@ properties: > type: boolean > description: Do not enable autorepeat feature. > > + gpio-activelow: > + type: boolean > + deprecated: true > + description: > + The GPIOs are low active (deprecated). > + Use the GPIO-flags in gpio controller instead of this property. > > debounce-delay-ms: > description: Debounce interval in milliseconds. > -- > 2.39.5 >
On Wed, Feb 19, 2025 at 05:42:00PM +0100, Manuel Traut wrote: > On Fri, Jan 10, 2025 at 06:49:03AM +0100, Markus Burri wrote: > > The property is implemented in the driver but not described in dt-bindings. > > Add missing property 'gpio-activelow' to DT schema. > > > > Signed-off-by: Markus Burri <markus.burri@mt.com> > > Reviewed-by: Manuel Traut <manuel.traut@mt.com> > > > --- > > .../devicetree/bindings/input/gpio-matrix-keypad.yaml | 6 ++++++ > > 1 file changed, 6 insertions(+) > > > > diff --git a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > > index 0f348b9..9c91224 100644 > > --- a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > > +++ b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > > @@ -40,6 +40,12 @@ properties: > > type: boolean > > description: Do not enable autorepeat feature. > > > > + gpio-activelow: > > + type: boolean > > + deprecated: true > > + description: > > + The GPIOs are low active (deprecated). > > + Use the GPIO-flags in gpio controller instead of this property. No, we unfortunately can not rely on GPIO-flags. This is not how driver works: current driver behavior is to force GPIOs as active high if the property is missing and ignore polarity specified in GPIO property. Thanks. -- Dmitry
On Mon, Feb 24, 2025 at 10:46:09PM -0800, Dmitry Torokhov wrote: > On Wed, Feb 19, 2025 at 05:42:00PM +0100, Manuel Traut wrote: > > On Fri, Jan 10, 2025 at 06:49:03AM +0100, Markus Burri wrote: > > > The property is implemented in the driver but not described in dt-bindings. > > > Add missing property 'gpio-activelow' to DT schema. > > > > > > Signed-off-by: Markus Burri <markus.burri@mt.com> > > > > Reviewed-by: Manuel Traut <manuel.traut@mt.com> > > > > > --- > > > .../devicetree/bindings/input/gpio-matrix-keypad.yaml | 6 ++++++ > > > 1 file changed, 6 insertions(+) > > > > > > diff --git a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > > > index 0f348b9..9c91224 100644 > > > --- a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > > > +++ b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > > > @@ -40,6 +40,12 @@ properties: > > > type: boolean > > > description: Do not enable autorepeat feature. > > > > > > + gpio-activelow: > > > + type: boolean > > > + deprecated: true > > > + description: > > > + The GPIOs are low active (deprecated). > > > + Use the GPIO-flags in gpio controller instead of this property. > > No, we unfortunately can not rely on GPIO-flags. This is not how driver > works: current driver behavior is to force GPIOs as active high if the > property is missing and ignore polarity specified in GPIO property. So you mean this property is still valid? Current implementation toggle the GPIO flags to low active if the property and the GPIO flags are different. So in case of missing property (false) the settings from GPIO flags will be used. In case of gpio-activelow (true) GPIO flags are set to low active. So I will remove the deprecated flag and change the description to: "Force GPIO flags to active low. Use GPIO flags if property is missing." OK? > > Thanks. > > -- > Dmitry
On Tue, Feb 25, 2025 at 11:16:07AM +0100, Markus Burri wrote: > On Mon, Feb 24, 2025 at 10:46:09PM -0800, Dmitry Torokhov wrote: > > On Wed, Feb 19, 2025 at 05:42:00PM +0100, Manuel Traut wrote: > > > On Fri, Jan 10, 2025 at 06:49:03AM +0100, Markus Burri wrote: > > > > The property is implemented in the driver but not described in dt-bindings. > > > > Add missing property 'gpio-activelow' to DT schema. > > > > > > > > Signed-off-by: Markus Burri <markus.burri@mt.com> > > > > > > Reviewed-by: Manuel Traut <manuel.traut@mt.com> > > > > > > > --- > > > > .../devicetree/bindings/input/gpio-matrix-keypad.yaml | 6 ++++++ > > > > 1 file changed, 6 insertions(+) > > > > > > > > diff --git a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > > > > index 0f348b9..9c91224 100644 > > > > --- a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > > > > +++ b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > > > > @@ -40,6 +40,12 @@ properties: > > > > type: boolean > > > > description: Do not enable autorepeat feature. > > > > > > > > + gpio-activelow: > > > > + type: boolean > > > > + deprecated: true > > > > + description: > > > > + The GPIOs are low active (deprecated). > > > > + Use the GPIO-flags in gpio controller instead of this property. > > > > No, we unfortunately can not rely on GPIO-flags. This is not how driver > > works: current driver behavior is to force GPIOs as active high if the > > property is missing and ignore polarity specified in GPIO property. > > So you mean this property is still valid? > Current implementation toggle the GPIO flags to low active if the property and the GPIO flags are different. > So in case of missing property (false) the settings from GPIO flags will be used. > In case of gpio-activelow (true) GPIO flags are set to low active. The driver does: active_low = device_property_read_bool(&pdev->dev, "gpio-activelow"); ... if (active_low ^ gpiod_is_active_low(keypad->col_gpios[i])) gpiod_toggle_active_low(keypad->col_gpios[i]); f the property is present active_low is true. If it is absent active_low is false. And the code below, if GPIO polarity setting from DT disagree with active_low value it will flip GPIO polarity. You probably think that gpiod_toggle_active_low() sets line as active low, when in fact it flips to opposite setting: void gpiod_toggle_active_low(struct gpio_desc *desc) { VALIDATE_DESC_VOID(desc); change_bit(FLAG_ACTIVE_LOW, &desc->flags); ^^^ flip, not set or clear. gpiod_line_state_notify(desc, GPIO_V2_LINE_CHANGED_CONFIG); } > > So I will remove the deprecated flag and change the description to: > "Force GPIO flags to active low. Use GPIO flags if property is missing." > OK? No. It should say: "Force GPIO polarity to active low. In the absence of this property GPIOs are treated as active high." Thanks. -- Dmitry
On Tue, Feb 25, 2025 at 09:43:21AM -0800, Dmitry Torokhov wrote: > On Tue, Feb 25, 2025 at 11:16:07AM +0100, Markus Burri wrote: > > On Mon, Feb 24, 2025 at 10:46:09PM -0800, Dmitry Torokhov wrote: > > > On Wed, Feb 19, 2025 at 05:42:00PM +0100, Manuel Traut wrote: > > > > On Fri, Jan 10, 2025 at 06:49:03AM +0100, Markus Burri wrote: > > > > > The property is implemented in the driver but not described in dt-bindings. > > > > > Add missing property 'gpio-activelow' to DT schema. > > > > > > > > > > Signed-off-by: Markus Burri <markus.burri@mt.com> > > > > > > > > Reviewed-by: Manuel Traut <manuel.traut@mt.com> > > > > > > > > > --- > > > > > .../devicetree/bindings/input/gpio-matrix-keypad.yaml | 6 ++++++ > > > > > 1 file changed, 6 insertions(+) > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > > > > > index 0f348b9..9c91224 100644 > > > > > --- a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > > > > > +++ b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > > > > > @@ -40,6 +40,12 @@ properties: > > > > > type: boolean > > > > > description: Do not enable autorepeat feature. > > > > > > > > > > + gpio-activelow: > > > > > + type: boolean > > > > > + deprecated: true > > > > > + description: > > > > > + The GPIOs are low active (deprecated). > > > > > + Use the GPIO-flags in gpio controller instead of this property. > > > > > > No, we unfortunately can not rely on GPIO-flags. This is not how driver > > > works: current driver behavior is to force GPIOs as active high if the > > > property is missing and ignore polarity specified in GPIO property. > > > > So you mean this property is still valid? > > Current implementation toggle the GPIO flags to low active if the property and the GPIO flags are different. > > So in case of missing property (false) the settings from GPIO flags will be used. > > In case of gpio-activelow (true) GPIO flags are set to low active. > > The driver does: > > active_low = device_property_read_bool(&pdev->dev, "gpio-activelow"); > > ... > > if (active_low ^ gpiod_is_active_low(keypad->col_gpios[i])) > gpiod_toggle_active_low(keypad->col_gpios[i]); > > f the property is present active_low is true. If it is absent active_low > is false. And the code below, if GPIO polarity setting from DT disagree > with active_low value it will flip GPIO polarity. > > You probably think that gpiod_toggle_active_low() sets line as active > low, when in fact it flips to opposite setting: Yes exactly my fault. Thanks for the hint! > > void gpiod_toggle_active_low(struct gpio_desc *desc) > { > VALIDATE_DESC_VOID(desc); > change_bit(FLAG_ACTIVE_LOW, &desc->flags); > > ^^^ flip, not set or clear. > > gpiod_line_state_notify(desc, GPIO_V2_LINE_CHANGED_CONFIG); > } > > > > > So I will remove the deprecated flag and change the description to: > > "Force GPIO flags to active low. Use GPIO flags if property is missing." > > OK? > > No. It should say: > > "Force GPIO polarity to active low. In the absence of this property > GPIOs are treated as active high." I will send a new version of the patch > > Thanks. > > -- > Dmitry
On Fri, 10 Jan 2025 06:49:03 +0100, Markus Burri wrote: > The property is implemented in the driver but not described in dt-bindings. > Add missing property 'gpio-activelow' to DT schema. > > Signed-off-by: Markus Burri <markus.burri@mt.com> > > --- > .../devicetree/bindings/input/gpio-matrix-keypad.yaml | 6 ++++++ > 1 file changed, 6 insertions(+) > Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
© 2016 - 2025 Red Hat, Inc.