Add an interrupt-controlled keyboard to test operation of the Interrupt Controller for External Devices (INTC-EX) on the Spider development board. Test procedure: - Run "evtest" (select device event number "0"), - Pull one of the following signals on the Spider Breakout Board low to trigger the corresponding interrupt and keypress (key release is automatic): - Test point CP18 -> IRQ0 (KEY_0), - Test point CP17 -> IRQ1 (KEY_1), - CN37 pin 4 -> IRQ4 (KEY_4), - CN37 pin 2 -> IRQ5 (KEY_5). GND is available on e.g. pin 8 of CN37 (MSIOF0 PIN HEADER). Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> --- Not intended for upstream merge. I do not have physical access to a Spider development board. Thanks for testing! Note that this IRQ conflicts with operation of LED7, so do not apply the LED patch while testing. --- .../boot/dts/renesas/r8a779f0-spider.dts | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r8a779f0-spider.dts b/arch/arm64/boot/dts/renesas/r8a779f0-spider.dts index 7aac3f4d319c330c..a73251da1f215141 100644 --- a/arch/arm64/boot/dts/renesas/r8a779f0-spider.dts +++ b/arch/arm64/boot/dts/renesas/r8a779f0-spider.dts @@ -6,12 +6,56 @@ */ /dts-v1/; + +#include <dt-bindings/input/input.h> + #include "r8a779f0-spider-cpu.dtsi" #include "r8a779f0-spider-ethernet.dtsi" / { model = "Renesas Spider CPU and Breakout boards based on r8a779f0"; compatible = "renesas,spider-breakout", "renesas,spider-cpu", "renesas,r8a779f0"; + + keyboard-irq { + compatible = "gpio-keys"; + + pinctrl-0 = <&keyboard_irq_pins>; + pinctrl-names = "default"; + + interrupt-parent = <&intc_ex>; + + key-0 { + interrupts = <0 IRQ_TYPE_EDGE_FALLING>; + linux,code = <KEY_0>; + label = "Breakabout Board CP18"; + wakeup-source; + debounce-interval = <20>; + }; + + key-1 { + interrupts = <1 IRQ_TYPE_EDGE_FALLING>; + linux,code = <KEY_1>; + label = "Breakabout Board CP17"; + wakeup-source; + debounce-interval = <20>; + }; + + key-4 { + interrupts = <4 IRQ_TYPE_EDGE_FALLING>; + linux,code = <KEY_4>; + label = "Breakout Board CN37-4"; + wakeup-source; + debounce-interval = <20>; + }; + + key-5 { + interrupts = <5 IRQ_TYPE_EDGE_FALLING>; + linux,code = <KEY_5>; + label = "Breakout Board CN37-2"; + wakeup-source; + debounce-interval = <20>; + }; + }; }; &i2c4 { @@ -22,3 +66,11 @@ eeprom@51 { pagesize = <8>; }; }; + +&pfc { + keyboard_irq_pins: keyboard-irq { + groups = "intc_ex_irq0", "intc_ex_irq1", "intc_ex_irq4", + "intc_ex_irq5"; + function = "intc_ex"; + }; +}; -- 2.34.1