arm64: dts: renesas: rzg3s-smarc: Add gpio keys

Message ID 20231227130810.2744550-1-claudiu.beznea.uj@bp.renesas.com
State New
Headers
Series arm64: dts: renesas: rzg3s-smarc: Add gpio keys |

Commit Message

claudiu beznea Dec. 27, 2023, 1:08 p.m. UTC
  From: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>

RZ SMARC Carrier II board has 3 user buttons called USER_SW1, USER_SW2,
USER_SW3. Add a DT node in device tree to propertly instantiate the
gpio-keys driver for these buttons.

Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
---
 arch/arm64/boot/dts/renesas/rzg3s-smarc.dtsi | 53 ++++++++++++++++++++
 1 file changed, 53 insertions(+)
  

Comments

Geert Uytterhoeven Jan. 12, 2024, 1:55 p.m. UTC | #1
Hi Claudiu,

On Wed, Dec 27, 2023 at 2:08 PM Claudiu <claudiu.beznea@tuxon.dev> wrote:
> From: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
>
> RZ SMARC Carrier II board has 3 user buttons called USER_SW1, USER_SW2,
> USER_SW3. Add a DT node in device tree to propertly instantiate the
> gpio-keys driver for these buttons.
>
> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>

Thanks for your patch!

> --- a/arch/arm64/boot/dts/renesas/rzg3s-smarc.dtsi
> +++ b/arch/arm64/boot/dts/renesas/rzg3s-smarc.dtsi
> @@ -6,6 +6,7 @@
>   */
>
>  #include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
>  #include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
>
>  / {
> @@ -14,6 +15,37 @@ aliases {
>                 mmc1 = &sdhi1;
>         };
>
> +       keys {

Do you mind if I s/keys/keypad/ while applying? ...

> +               compatible = "gpio-keys";
> +
> +               key-1 {
> +                       interrupts = <RZG2L_GPIO(18, 0) IRQ_TYPE_EDGE_FALLING>;

Oh, the horror of interrupt controllers that don't support generating
interrupts on both edges...

> +                       interrupt-parent = <&pinctrl>;

.. and move these one level up, to avoid duplication?

> +                       linux,code = <KEY_1>;
> +                       label = "USER_SW1";
> +                       wakeup-source;
> +                       debounce-interval = <20>;
> +               };
> +
> +               key-2 {
> +                       interrupts = <RZG2L_GPIO(0, 1) IRQ_TYPE_EDGE_FALLING>;
> +                       interrupt-parent = <&pinctrl>;
> +                       linux,code = <KEY_2>;
> +                       label = "USER_SW2";
> +                       wakeup-source;
> +                       debounce-interval = <20>;
> +               };
> +
> +               key-3 {
> +                       interrupts = <RZG2L_GPIO(0, 3) IRQ_TYPE_EDGE_FALLING>;
> +                       interrupt-parent = <&pinctrl>;
> +                       linux,code = <KEY_3>;
> +                       label = "USER_SW3";
> +                       wakeup-source;
> +                       debounce-interval = <20>;
> +               };
> +       };
> +
>         vcc_sdhi1: regulator-vcc-sdhi1 {
>                 compatible = "regulator-fixed";
>                 regulator-name = "SDHI1 Vcc";

Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
i.e. will queue in renesas-devel for v6.9, with the above fixed.

Gr{oetje,eeting}s,

                        Geert
  
claudiu beznea Jan. 12, 2024, 3:38 p.m. UTC | #2
Hi, Geert,

On 12.01.2024 15:55, Geert Uytterhoeven wrote:
> Hi Claudiu,
> 
> On Wed, Dec 27, 2023 at 2:08 PM Claudiu <claudiu.beznea@tuxon.dev> wrote:
>> From: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
>>
>> RZ SMARC Carrier II board has 3 user buttons called USER_SW1, USER_SW2,
>> USER_SW3. Add a DT node in device tree to propertly instantiate the
>> gpio-keys driver for these buttons.
>>
>> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
> 
> Thanks for your patch!
> 
>> --- a/arch/arm64/boot/dts/renesas/rzg3s-smarc.dtsi
>> +++ b/arch/arm64/boot/dts/renesas/rzg3s-smarc.dtsi
>> @@ -6,6 +6,7 @@
>>   */
>>
>>  #include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/input/input.h>
>>  #include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
>>
>>  / {
>> @@ -14,6 +15,37 @@ aliases {
>>                 mmc1 = &sdhi1;
>>         };
>>
>> +       keys {
> 
> Do you mind if I s/keys/keypad/ while applying? ...

Is not actually a keypad... there are 3 buttons in a corner of the board...

I see only 2 entries in arm64 and arm DTS directory following this pattern
for gpio-keys compatible node:

 arch/arm/boot/dts/renesas/r8a7779-marzen.dts
 arch/arm/boot/dts/renesas/r8a7779-marzen.dts

But if you prefer it like this, I have nothing against.

Just asking, do you have a particular reason for naming it like this?

> 
>> +               compatible = "gpio-keys";
>> +
>> +               key-1 {
>> +                       interrupts = <RZG2L_GPIO(18, 0) IRQ_TYPE_EDGE_FALLING>;
> 
> Oh, the horror of interrupt controllers that don't support generating
> interrupts on both edges...

Yes.

> 
>> +                       interrupt-parent = <&pinctrl>;
> 
> ... and move these one level up, to avoid duplication?

Moving it just near compatible will make the schema validation to fail with
this (driver is working, though):

arch/arm64/boot/dts/renesas/r9a08g045s33-smarc.dtb: keys:
'interrupt-parent' does not match any of the regexes:
'^(button|event|key|switch|(button|event|key|switch)-[a-z0-9-]+|[a-z0-9-]+-(button|event|key|switch))$',
'pinctrl-[0-9]+'
	from schema $id: http://devicetree.org/schemas/input/gpio-keys.yaml#

Thank  you,
Claudiu Beznea

> 
>> +                       linux,code = <KEY_1>;
>> +                       label = "USER_SW1";
>> +                       wakeup-source;
>> +                       debounce-interval = <20>;
>> +               };
>> +
>> +               key-2 {
>> +                       interrupts = <RZG2L_GPIO(0, 1) IRQ_TYPE_EDGE_FALLING>;
>> +                       interrupt-parent = <&pinctrl>;
>> +                       linux,code = <KEY_2>;
>> +                       label = "USER_SW2";
>> +                       wakeup-source;
>> +                       debounce-interval = <20>;
>> +               };
>> +
>> +               key-3 {
>> +                       interrupts = <RZG2L_GPIO(0, 3) IRQ_TYPE_EDGE_FALLING>;
>> +                       interrupt-parent = <&pinctrl>;
>> +                       linux,code = <KEY_3>;
>> +                       label = "USER_SW3";
>> +                       wakeup-source;
>> +                       debounce-interval = <20>;
>> +               };
>> +       };
>> +
>>         vcc_sdhi1: regulator-vcc-sdhi1 {
>>                 compatible = "regulator-fixed";
>>                 regulator-name = "SDHI1 Vcc";
> 
> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
> i.e. will queue in renesas-devel for v6.9, with the above fixed.
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
>
  
Geert Uytterhoeven Jan. 12, 2024, 4:20 p.m. UTC | #3
Hi Claudiu,

On Fri, Jan 12, 2024 at 4:38 PM claudiu beznea <claudiu.beznea@tuxon.dev> wrote:
> On 12.01.2024 15:55, Geert Uytterhoeven wrote:
> > On Wed, Dec 27, 2023 at 2:08 PM Claudiu <claudiu.beznea@tuxon.dev> wrote:
> >> From: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
> >>
> >> RZ SMARC Carrier II board has 3 user buttons called USER_SW1, USER_SW2,
> >> USER_SW3. Add a DT node in device tree to propertly instantiate the
> >> gpio-keys driver for these buttons.
> >>
> >> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
> >
> > Thanks for your patch!
> >
> >> --- a/arch/arm64/boot/dts/renesas/rzg3s-smarc.dtsi
> >> +++ b/arch/arm64/boot/dts/renesas/rzg3s-smarc.dtsi
> >> @@ -14,6 +15,37 @@ aliases {
> >>                 mmc1 = &sdhi1;
> >>         };
> >>
> >> +       keys {
> >
> > Do you mind if I s/keys/keypad/ while applying? ...
>
> Is not actually a keypad... there are 3 buttons in a corner of the board..
>
> I see only 2 entries in arm64 and arm DTS directory following this pattern
> for gpio-keys compatible node:
>
>  arch/arm/boot/dts/renesas/r8a7779-marzen.dts
>  arch/arm/boot/dts/renesas/r8a7779-marzen.dts
>
> But if you prefer it like this, I have nothing against.
>
> Just asking, do you have a particular reason for naming it like this?

See the discussion in [1], and the resulting patch[2], which added the
(so far) single user in arch/arm/boot/dts/renesas/r8a7779-marzen.dts

[1] https://lore.kernel.org/all/20231023144134.1881973-1-geert+renesas@glider.be
[2] https://lore.kernel.org/all/eec1ccfb75c6215428609fdcaf3a37c75fe1fc87.1698228163.git.geert+renesas@glider.be
>
> >> +                       interrupt-parent = <&pinctrl>;
> >
> > ... and move these one level up, to avoid duplication?
>
> Moving it just near compatible will make the schema validation to fail with
> this (driver is working, though):
>
> arch/arm64/boot/dts/renesas/r9a08g045s33-smarc.dtb: keys:
> 'interrupt-parent' does not match any of the regexes:
> '^(button|event|key|switch|(button|event|key|switch)-[a-z0-9-]+|[a-z0-9-]+-(button|event|key|switch))$',
> 'pinctrl-[0-9]+'
>         from schema $id: http://devicetree.org/schemas/input/gpio-keys.yaml#

Oops, I had completely forgotten r8a7779-marzen.dts triggers this, too...
Let's keep it for now.

Gr{oetje,eeting}s,

                        Geert
  
claudiu beznea Jan. 13, 2024, 10:13 a.m. UTC | #4
Hi, Geert,

On 12.01.2024 18:20, Geert Uytterhoeven wrote:
> Hi Claudiu,
> 
> On Fri, Jan 12, 2024 at 4:38 PM claudiu beznea <claudiu.beznea@tuxon.dev> wrote:
>> On 12.01.2024 15:55, Geert Uytterhoeven wrote:
>>> On Wed, Dec 27, 2023 at 2:08 PM Claudiu <claudiu.beznea@tuxon.dev> wrote:
>>>> From: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
>>>>
>>>> RZ SMARC Carrier II board has 3 user buttons called USER_SW1, USER_SW2,
>>>> USER_SW3. Add a DT node in device tree to propertly instantiate the
>>>> gpio-keys driver for these buttons.
>>>>
>>>> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
>>>
>>> Thanks for your patch!
>>>
>>>> --- a/arch/arm64/boot/dts/renesas/rzg3s-smarc.dtsi
>>>> +++ b/arch/arm64/boot/dts/renesas/rzg3s-smarc.dtsi
>>>> @@ -14,6 +15,37 @@ aliases {
>>>>                 mmc1 = &sdhi1;
>>>>         };
>>>>
>>>> +       keys {
>>>
>>> Do you mind if I s/keys/keypad/ while applying? ...
>>
>> Is not actually a keypad... there are 3 buttons in a corner of the board...
>>
>> I see only 2 entries in arm64 and arm DTS directory following this pattern
>> for gpio-keys compatible node:
>>
>>  arch/arm/boot/dts/renesas/r8a7779-marzen.dts
>>  arch/arm/boot/dts/renesas/r8a7779-marzen.dts
>>
>> But if you prefer it like this, I have nothing against.
>>
>> Just asking, do you have a particular reason for naming it like this?
> 
> See the discussion in [1], and the resulting patch[2], which added the
> (so far) single user in arch/arm/boot/dts/renesas/r8a7779-marzen.dts
> 
> [1] https://lore.kernel.org/all/20231023144134.1881973-1-geert+renesas@glider.be

Ah, I remember part of this discussion. Good for me to rename it as you
proposed.

> [2] https://lore.kernel.org/all/eec1ccfb75c6215428609fdcaf3a37c75fe1fc87.1698228163.git.geert+renesas@glider.be
>>
>>>> +                       interrupt-parent = <&pinctrl>;
>>>
>>> ... and move these one level up, to avoid duplication?
>>
>> Moving it just near compatible will make the schema validation to fail with
>> this (driver is working, though):
>>
>> arch/arm64/boot/dts/renesas/r9a08g045s33-smarc.dtb: keys:
>> 'interrupt-parent' does not match any of the regexes:
>> '^(button|event|key|switch|(button|event|key|switch)-[a-z0-9-]+|[a-z0-9-]+-(button|event|key|switch))$',
>> 'pinctrl-[0-9]+'
>>         from schema $id: http://devicetree.org/schemas/input/gpio-keys.yaml#
> 
> Oops, I had completely forgotten r8a7779-marzen.dts triggers this, too...
> Let's keep it for now.
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
>
  

Patch

diff --git a/arch/arm64/boot/dts/renesas/rzg3s-smarc.dtsi b/arch/arm64/boot/dts/renesas/rzg3s-smarc.dtsi
index 214520137230..deb2ad37bb2e 100644
--- a/arch/arm64/boot/dts/renesas/rzg3s-smarc.dtsi
+++ b/arch/arm64/boot/dts/renesas/rzg3s-smarc.dtsi
@@ -6,6 +6,7 @@ 
  */
 
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
 #include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
 
 / {
@@ -14,6 +15,37 @@  aliases {
 		mmc1 = &sdhi1;
 	};
 
+	keys {
+		compatible = "gpio-keys";
+
+		key-1 {
+			interrupts = <RZG2L_GPIO(18, 0) IRQ_TYPE_EDGE_FALLING>;
+			interrupt-parent = <&pinctrl>;
+			linux,code = <KEY_1>;
+			label = "USER_SW1";
+			wakeup-source;
+			debounce-interval = <20>;
+		};
+
+		key-2 {
+			interrupts = <RZG2L_GPIO(0, 1) IRQ_TYPE_EDGE_FALLING>;
+			interrupt-parent = <&pinctrl>;
+			linux,code = <KEY_2>;
+			label = "USER_SW2";
+			wakeup-source;
+			debounce-interval = <20>;
+		};
+
+		key-3 {
+			interrupts = <RZG2L_GPIO(0, 3) IRQ_TYPE_EDGE_FALLING>;
+			interrupt-parent = <&pinctrl>;
+			linux,code = <KEY_3>;
+			label = "USER_SW3";
+			wakeup-source;
+			debounce-interval = <20>;
+		};
+	};
+
 	vcc_sdhi1: regulator-vcc-sdhi1 {
 		compatible = "regulator-fixed";
 		regulator-name = "SDHI1 Vcc";
@@ -35,6 +67,27 @@  vccq_sdhi1: regulator-vccq-sdhi1 {
 };
 
 &pinctrl {
+	key-1-gpio-hog {
+		gpio-hog;
+		gpios = <RZG2L_GPIO(18, 0) GPIO_ACTIVE_LOW>;
+		input;
+		line-name = "key-1-gpio-irq";
+	};
+
+	key-2-gpio-hog {
+		gpio-hog;
+		gpios = <RZG2L_GPIO(0, 1) GPIO_ACTIVE_LOW>;
+		input;
+		line-name = "key-2-gpio-irq";
+	};
+
+	key-3-gpio-hog {
+		gpio-hog;
+		gpios = <RZG2L_GPIO(0, 3) GPIO_ACTIVE_LOW>;
+		input;
+		line-name = "key-3-gpio-irq";
+	};
+
 	scif0_pins: scif0 {
 		pinmux = <RZG2L_PORT_PINMUX(6, 3, 1)>, /* RXD */
 			 <RZG2L_PORT_PINMUX(6, 4, 1)>; /* TXD */