diff mbox series

[v9,3/3] dt-bindings: input: Update dtbinding for adp5588

Message ID 20240806-adp5588_gpio_support-v9-3-4d6118b6d653@analog.com (mailing list archive)
State Superseded
Headers show
Series adp5588-keys: Support for dedicated gpio operation | expand

Commit Message

Utsav Agarwal via B4 Relay Aug. 6, 2024, 8:48 a.m. UTC
From: Utsav Agarwal <utsav.agarwal@analog.com>

Updating dt bindings for adp5588. Since the device can now function in a
purely gpio mode, the following keypad specific properties are now made
optional:
	- interrupts
	- keypad,num-rows
	- keypad,num-columns
	- linux,keymap

However the above properties are required to be specified when
configuring the device as a keypad, dependencies have been added
such that specifying either one would require the remaining as well.

Note that interrupts are optional, but required when the device has
either been configured in keypad mode or as an interrupt controller.

Signed-off-by: Utsav Agarwal <utsav.agarwal@analog.com>
---
 .../devicetree/bindings/input/adi,adp5588.yaml     | 51 +++++++++++++++++++---
 1 file changed, 45 insertions(+), 6 deletions(-)

Comments

Krzysztof Kozlowski Aug. 6, 2024, 9:04 a.m. UTC | #1
On 06/08/2024 10:48, Utsav Agarwal via B4 Relay wrote:
> From: Utsav Agarwal <utsav.agarwal@analog.com>
> 

A nit, subject: drop second/last, redundant "dtbinding". The
"dt-bindings" prefix is already stating that these are bindings.
See also:
https://elixir.bootlin.com/linux/v6.7-rc8/source/Documentation/devicetree/bindings/submitting-patches.rst#L18

Subject: everything is an update. Be descriptive and specific.

> Updating dt bindings for adp5588. Since the device can now function in a
> purely gpio mode, the following keypad specific properties are now made

Hardware changed? How?

> optional:
> 	- interrupts
> 	- keypad,num-rows
> 	- keypad,num-columns
> 	- linux,keymap
> 
> However the above properties are required to be specified when
> configuring the device as a keypad, dependencies have been added
> such that specifying either one would require the remaining as well.
> 
> Note that interrupts are optional, but required when the device has
> either been configured in keypad mode or as an interrupt controller.
> 
> Signed-off-by: Utsav Agarwal <utsav.agarwal@analog.com>
> ---
>  .../devicetree/bindings/input/adi,adp5588.yaml     | 51 +++++++++++++++++++---
>  1 file changed, 45 insertions(+), 6 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/input/adi,adp5588.yaml b/Documentation/devicetree/bindings/input/adi,adp5588.yaml
> index 26ea66834ae2..827d72ece54b 100644
> --- a/Documentation/devicetree/bindings/input/adi,adp5588.yaml
> +++ b/Documentation/devicetree/bindings/input/adi,adp5588.yaml
> @@ -49,7 +49,12 @@ properties:
>    interrupt-controller:
>      description:
>        This property applies if either keypad,num-rows lower than 8 or
> -      keypad,num-columns lower than 10.
> +      keypad,num-columns lower than 10. This property is optional if
> +      keypad,num-rows or keypad,num-columns are not specified since the
> +      device then acts as gpio only, during which interrupts may or may
> +      not be utilized. If specified however, interrupts must be also be
> +      provided as all interrupt communication is h

Don't repeat constraints in free form text.


andled via a single
> +      interrupt line.
>  
>    '#interrupt-cells':
>      const: 2
> @@ -65,13 +70,30 @@ properties:
>      minItems: 1
>      maxItems: 2
>  
> +
> +dependencies:
> +  keypad,num-rows:
> +    - linux,keymap
> +    - keypad,num-columns
> +  keypad,num-columns:
> +    - linux,keymap
> +    - keypad,num-rows
> +  linux,keymap:
> +    - keypad,num-rows
> +    - keypad,num-columns
> +  interrupt-controller:
> +    - interrupts

How is this related to this patchset? Why? I don't understand what are
you trying to achieve here. Hardware changed? Are you fixing something?
How many issues are you fixing in one (!!!) commit?

> +
> +if:
> +  required:
> +    - linux,keymap
> +then:
> +  required:
> +    - interrupts
> +
>  required:
>    - compatible
>    - reg
> -  - interrupts
> -  - keypad,num-rows
> -  - keypad,num-columns
> -  - linux,keymap
>  
>  unevaluatedProperties: false
>  
> @@ -108,4 +130,21 @@ examples:
>              >;
>          };
>      };
> -...
> +
> +  - |
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +    #include <dt-bindings/input/input.h>
> +    #include <dt-bindings/gpio/gpio.h>

Where do you use these headers?

> +    i2c {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +        gpio@34 {
> +            compatible = "adi,adp5588";
> +            reg = <0x34>;
> +
> +            #gpio-cells = <2>;
> +            gpio-controller;
> +        };
> +    };
> +
> +.

Why this change?


Best regards,
Krzysztof
Agarwal, Utsav Aug. 6, 2024, 10:05 a.m. UTC | #2
> -----Original Message-----
> From: Krzysztof Kozlowski <krzk@kernel.org>
> Sent: Tuesday, August 6, 2024 10:04 AM
> To: Agarwal, Utsav <Utsav.Agarwal@analog.com>; Hennerich, Michael
> <Michael.Hennerich@analog.com>; Dmitry Torokhov
> <dmitry.torokhov@gmail.com>; Rob Herring <robh@kernel.org>; Krzysztof
> Kozlowski <krzk+dt@kernel.org>; Conor Dooley <conor+dt@kernel.org>; Sa,
> Nuno <Nuno.Sa@analog.com>
> Cc: linux-input@vger.kernel.org; devicetree@vger.kernel.org; linux-
> kernel@vger.kernel.org; Artamonovs, Arturs
> <Arturs.Artamonovs@analog.com>; Bimpikas, Vasileios
> <Vasileios.Bimpikas@analog.com>; Gaskell, Oliver
> <Oliver.Gaskell@analog.com>
> Subject: Re: [PATCH v9 3/3] dt-bindings: input: Update dtbinding for adp5588
> 
> [External]
> 
> On 06/08/2024 10:48, Utsav Agarwal via B4 Relay wrote:
> > From: Utsav Agarwal <utsav.agarwal@analog.com>
> >
> 
> A nit, subject: drop second/last, redundant "dtbinding". The
> "dt-bindings" prefix is already stating that these are bindings.
> See also:
> https://urldefense.com/v3/__https://elixir.bootlin.com/linux/v6.7-
> rc8/source/Documentation/devicetree/bindings/submitting-
> patches.rst*L18__;Iw!!A3Ni8CS0y2Y!_px-
> SkCaAOezCa_s0eiP5BTliLmvyA110d4MXahf8mHkAXr0vJtpM0EXu7EsoG2jWg
> 5qW9FgaYf2gCZf$
> 
> Subject: everything is an update. Be descriptive and specific.
> 
> > Updating dt bindings for adp5588. Since the device can now function in a
> > purely gpio mode, the following keypad specific properties are now made
> 
> Hardware changed? How?

The hardware was not changed, rather support was added for an already
present functionality in regard to a new use case where the chip was being 
used purely for gpio. I will update the commit description to be more elaborate.

> > optional:
> > 	- interrupts
> > 	- keypad,num-rows
> > 	- keypad,num-columns
> > 	- linux,keymap
> >
> > However the above properties are required to be specified when
> > configuring the device as a keypad, dependencies have been added
> > such that specifying either one would require the remaining as well.
> >
> > Note that interrupts are optional, but required when the device has
> > either been configured in keypad mode or as an interrupt controller.
> >
> > Signed-off-by: Utsav Agarwal <utsav.agarwal@analog.com>
> > ---
> >  .../devicetree/bindings/input/adi,adp5588.yaml     | 51
> +++++++++++++++++++---
> >  1 file changed, 45 insertions(+), 6 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/input/adi,adp5588.yaml
> b/Documentation/devicetree/bindings/input/adi,adp5588.yaml
> > index 26ea66834ae2..827d72ece54b 100644
> > --- a/Documentation/devicetree/bindings/input/adi,adp5588.yaml
> > +++ b/Documentation/devicetree/bindings/input/adi,adp5588.yaml
> > @@ -49,7 +49,12 @@ properties:
> >    interrupt-controller:
> >      description:
> >        This property applies if either keypad,num-rows lower than 8 or
> > -      keypad,num-columns lower than 10.
> > +      keypad,num-columns lower than 10. This property is optional if
> > +      keypad,num-rows or keypad,num-columns are not specified since the
> > +      device then acts as gpio only, during which interrupts may or may
> > +      not be utilized. If specified however, interrupts must be also be
> > +      provided as all interrupt communication is h
> 
> Don't repeat constraints in free form text.
> 
Thank you for pointing the same out, I will remove it.
> 
> andled via a single
> > +      interrupt line.
> >
> >    '#interrupt-cells':
> >      const: 2
> > @@ -65,13 +70,30 @@ properties:
> >      minItems: 1
> >      maxItems: 2
> >
> > +
> > +dependencies:
> > +  keypad,num-rows:
> > +    - linux,keymap
> > +    - keypad,num-columns
> > +  keypad,num-columns:
> > +    - linux,keymap
> > +    - keypad,num-rows
> > +  linux,keymap:
> > +    - keypad,num-rows
> > +    - keypad,num-columns
> > +  interrupt-controller:
> > +    - interrupts
> 
> How is this related to this patchset? Why? I don't understand what are
> you trying to achieve here. Hardware changed? Are you fixing something?
> How many issues are you fixing in one (!!!) commit?

Apologies for the confusion, but the issue I'm wanting to address is the lack of
support for a pure gpio mode. Since in this case, interrupts are not used, they
are made optional, but in doing so, I also need to be careful of its requirements
as a keypad, which it was originally structured as. As a result, there is an
interdependency that was established between the keypad properties
(prior to this as you can see, they were all required). This was followed 
by a requirement to make the interrupts required if the device 
was intended to be an interrupt controller in the last review
(https://lore.kernel.org/all/Zq17uABHdNENnwVq@google.com/)

> 
> > +
> > +if:
> > +  required:
> > +    - linux,keymap
> > +then:
> > +  required:
> > +    - interrupts
> > +
> >  required:
> >    - compatible
> >    - reg
> > -  - interrupts
> > -  - keypad,num-rows
> > -  - keypad,num-columns
> > -  - linux,keymap
> >
> >  unevaluatedProperties: false
> >
> > @@ -108,4 +130,21 @@ examples:
> >              >;
> >          };
> >      };
> > -...
> > +
> > +  - |
> > +    #include <dt-bindings/interrupt-controller/irq.h>
> > +    #include <dt-bindings/input/input.h>
> > +    #include <dt-bindings/gpio/gpio.h>
> 
> Where do you use these headers?

I will remove the extra headers
> 

Utsav
Krzysztof Kozlowski Aug. 6, 2024, 10:41 a.m. UTC | #3
On 06/08/2024 12:05, Agarwal, Utsav wrote:
>>
>> A nit, subject: drop second/last, redundant "dtbinding". The
>> "dt-bindings" prefix is already stating that these are bindings.
>> See also:
>> https://urldefense.com/v3/__https://elixir.bootlin.com/linux/v6.7-
>> rc8/source/Documentation/devicetree/bindings/submitting-
>> patches.rst*L18__;Iw!!A3Ni8CS0y2Y!_px-
>> SkCaAOezCa_s0eiP5BTliLmvyA110d4MXahf8mHkAXr0vJtpM0EXu7EsoG2jWg
>> 5qW9FgaYf2gCZf$
>>
>> Subject: everything is an update. Be descriptive and specific.
>>
>>> Updating dt bindings for adp5588. Since the device can now function in a
>>> purely gpio mode, the following keypad specific properties are now made
>>
>> Hardware changed? How?
> 
> The hardware was not changed, rather support was added for an already
> present functionality in regard to a new use case where the chip was being 
> used purely for gpio. I will update the commit description to be more elaborate.

Bindings should reflect hardware, not current Linux support. If the
binding is incomplete, explain it in the commit msg. Commit msg claims
"device can now", so it is not about the driver. This is just confusing.


> 
>>> optional:
>>> 	- interrupts
>>> 	- keypad,num-rows
>>> 	- keypad,num-columns
>>> 	- linux,keymap
>>>
>>> However the above properties are required to be specified when
>>> configuring the device as a keypad, dependencies have been added
>>> such that specifying either one would require the remaining as well.
>>>
>>> Note that interrupts are optional, but required when the device has
>>> either been configured in keypad mode or as an interrupt controller.
>>>
>>> Signed-off-by: Utsav Agarwal <utsav.agarwal@analog.com>
>>> ---
>>>  .../devicetree/bindings/input/adi,adp5588.yaml     | 51
>> +++++++++++++++++++---
>>>  1 file changed, 45 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/Documentation/devicetree/bindings/input/adi,adp5588.yaml
>> b/Documentation/devicetree/bindings/input/adi,adp5588.yaml
>>> index 26ea66834ae2..827d72ece54b 100644
>>> --- a/Documentation/devicetree/bindings/input/adi,adp5588.yaml
>>> +++ b/Documentation/devicetree/bindings/input/adi,adp5588.yaml
>>> @@ -49,7 +49,12 @@ properties:
>>>    interrupt-controller:
>>>      description:
>>>        This property applies if either keypad,num-rows lower than 8 or
>>> -      keypad,num-columns lower than 10.
>>> +      keypad,num-columns lower than 10. This property is optional if
>>> +      keypad,num-rows or keypad,num-columns are not specified since the
>>> +      device then acts as gpio only, during which interrupts may or may
>>> +      not be utilized. If specified however, interrupts must be also be
>>> +      provided as all interrupt communication is h
>>
>> Don't repeat constraints in free form text.
>>
> Thank you for pointing the same out, I will remove it.
>>
>> andled via a single
>>> +      interrupt line.
>>>
>>>    '#interrupt-cells':
>>>      const: 2
>>> @@ -65,13 +70,30 @@ properties:
>>>      minItems: 1
>>>      maxItems: 2
>>>
>>> +
>>> +dependencies:
>>> +  keypad,num-rows:
>>> +    - linux,keymap
>>> +    - keypad,num-columns
>>> +  keypad,num-columns:
>>> +    - linux,keymap
>>> +    - keypad,num-rows
>>> +  linux,keymap:
>>> +    - keypad,num-rows
>>> +    - keypad,num-columns
>>> +  interrupt-controller:
>>> +    - interrupts
>>
>> How is this related to this patchset? Why? I don't understand what are
>> you trying to achieve here. Hardware changed? Are you fixing something?
>> How many issues are you fixing in one (!!!) commit?
> 
> Apologies for the confusion, but the issue I'm wanting to address is the lack of
> support for a pure gpio mode. Since in this case, interrupts are not used, they

Initial bindings made a mistake of being strictly tied to what driver
supports. Aren't you repeating the mistake?

The commit mentions "gpio mode" but it is not explained - neither in
commit msg nor in the code. What is the "gpio mode" of the device?

> are made optional, but in doing so, I also need to be careful of its requirements
> as a keypad, which it was originally structured as. As a result, there is an
> interdependency that was established between the keypad properties
> (prior to this as you can see, they were all required). This was followed 
> by a requirement to make the interrupts required if the device 
> was intended to be an interrupt controller in the last review
> (https://lore.kernel.org/all/Zq17uABHdNENnwVq@google.com/)

This makes sense, I assume device cannot be an interrupt controller if
it is unable to pass the interrupt to the SoC.

BTW, do not add multiple blank lines before dependencies: block.

> 
>>
>>> +
>>> +if:
>>> +  required:
>>> +    - linux,keymap
>>> +then:
>>> +  required:
>>> +    - interrupts

This can be part of earlier dependencies.

Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/input/adi,adp5588.yaml b/Documentation/devicetree/bindings/input/adi,adp5588.yaml
index 26ea66834ae2..827d72ece54b 100644
--- a/Documentation/devicetree/bindings/input/adi,adp5588.yaml
+++ b/Documentation/devicetree/bindings/input/adi,adp5588.yaml
@@ -49,7 +49,12 @@  properties:
   interrupt-controller:
     description:
       This property applies if either keypad,num-rows lower than 8 or
-      keypad,num-columns lower than 10.
+      keypad,num-columns lower than 10. This property is optional if
+      keypad,num-rows or keypad,num-columns are not specified since the
+      device then acts as gpio only, during which interrupts may or may
+      not be utilized. If specified however, interrupts must be also be
+      provided as all interrupt communication is handled via a single
+      interrupt line.
 
   '#interrupt-cells':
     const: 2
@@ -65,13 +70,30 @@  properties:
     minItems: 1
     maxItems: 2
 
+
+dependencies:
+  keypad,num-rows:
+    - linux,keymap
+    - keypad,num-columns
+  keypad,num-columns:
+    - linux,keymap
+    - keypad,num-rows
+  linux,keymap:
+    - keypad,num-rows
+    - keypad,num-columns
+  interrupt-controller:
+    - interrupts
+
+if:
+  required:
+    - linux,keymap
+then:
+  required:
+    - interrupts
+
 required:
   - compatible
   - reg
-  - interrupts
-  - keypad,num-rows
-  - keypad,num-columns
-  - linux,keymap
 
 unevaluatedProperties: false
 
@@ -108,4 +130,21 @@  examples:
             >;
         };
     };
-...
+
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/input/input.h>
+    #include <dt-bindings/gpio/gpio.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        gpio@34 {
+            compatible = "adi,adp5588";
+            reg = <0x34>;
+
+            #gpio-cells = <2>;
+            gpio-controller;
+        };
+    };
+
+.