[1/1] arm64: dts: meson-sm1-sei610: gpio-keys: switch to IRQs
diff mbox series

Message ID 20191121183711.19785-1-khilman@kernel.org
State Not Applicable
Headers show
Series
  • [1/1] arm64: dts: meson-sm1-sei610: gpio-keys: switch to IRQs
Related show

Commit Message

Kevin Hilman Nov. 21, 2019, 6:37 p.m. UTC
From: Kevin Hilman <khilman@baylibre.com>

Switch the GPIO buttons/switches to use interrupts instead of polling.
While at it, add the mic mute switch and the power button.

Signed-off-by: Kevin Hilman <khilman@baylibre.com>
---
 .../boot/dts/amlogic/meson-sm1-sei610.dts     | 26 +++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

Comments

Martin Blumenstingl Nov. 21, 2019, 7:37 p.m. UTC | #1
On Thu, Nov 21, 2019 at 7:37 PM Kevin Hilman <khilman@kernel.org> wrote:
>
> From: Kevin Hilman <khilman@baylibre.com>
>
> Switch the GPIO buttons/switches to use interrupts instead of polling.
> While at it, add the mic mute switch and the power button.
>
> Signed-off-by: Kevin Hilman <khilman@baylibre.com>
(I don't have the schematics of the board so I have to assume that the
GPIOs are the right ones - based on that)
Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Kevin Hilman Nov. 21, 2019, 11:28 p.m. UTC | #2
Hi Martin,

Martin Blumenstingl <martin.blumenstingl@googlemail.com> writes:

> On Thu, Nov 21, 2019 at 7:37 PM Kevin Hilman <khilman@kernel.org> wrote:
>>
>> From: Kevin Hilman <khilman@baylibre.com>
>>
>> Switch the GPIO buttons/switches to use interrupts instead of polling.
>> While at it, add the mic mute switch and the power button.
>>
>> Signed-off-by: Kevin Hilman <khilman@baylibre.com>
>
> (I don't have the schematics of the board so I have to assume that the
> GPIOs are the right ones - based on that)

I have the schematics, and I also forgot to mention that I tested this
on the SEI610 board, and can watch the interrupt counts in
/proc/interrupts increase for each of the buttons/switches.

> Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>

Thanks for the review,

Kevin

Patch
diff mbox series

diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts b/arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts
index 5bd07469766b..2c90f4713d0e 100644
--- a/arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts
@@ -46,25 +46,47 @@ 
 	};
 
 	gpio-keys {
-		compatible = "gpio-keys-polled";
-		poll-interval = <100>;
+		compatible = "gpio-keys";
 
 		key1 {
 			label = "A";
 			linux,code = <BTN_0>;
 			gpios = <&gpio GPIOH_6 GPIO_ACTIVE_LOW>;
+			interrupt-parent = <&gpio_intc>;
+			interrupts = <34 IRQ_TYPE_EDGE_BOTH>;
 		};
 
 		key2 {
 			label = "B";
 			linux,code = <BTN_1>;
 			gpios = <&gpio GPIOH_7 GPIO_ACTIVE_LOW>;
+			interrupt-parent = <&gpio_intc>;
+			interrupts = <35 IRQ_TYPE_EDGE_BOTH>;
 		};
 
 		key3 {
 			label = "C";
 			linux,code = <BTN_2>;
 			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
+			interrupt-parent = <&gpio_intc>;
+			interrupts = <2 IRQ_TYPE_EDGE_BOTH>;
+		};
+
+		mic_mute {
+			label = "MicMute";
+			linux,code = <SW_MUTE_DEVICE>;
+			linux,input-type = <EV_SW>;
+			gpios = <&gpio_ao GPIOE_2 GPIO_ACTIVE_LOW>;
+			interrupt-parent = <&gpio_intc>;
+			interrupts = <99 IRQ_TYPE_EDGE_BOTH>;
+		};
+
+		power_key {
+			label = "PowerKey";
+			linux,code = <KEY_POWER>;
+			gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_LOW>;
+			interrupt-parent = <&gpio_intc>;
+			interrupts = <3 IRQ_TYPE_EDGE_BOTH>;
 		};
 	};