[PATCH v3 01/10] dt-bindings: input: samsung,s3c6410-keypad: introduce compact binding

From: Dmitry Torokhov

Date: Sat Jul 11 2026 - 22:13:40 EST


The binding with a sub-node per each key is very verbose and is hard to
use with static device properties. Allow standard matrix keymap binding
in addition to the verbose one.

Acked-by: Conor Dooley <conor.dooley@xxxxxxxxxxxxx>
Acked-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxxxxxxxx>
Reviewed-by: Linus Walleij <linusw@xxxxxxxxxx>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>
---
.../bindings/input/samsung,s3c6410-keypad.yaml | 53 ++++++++++++++++++++--
1 file changed, 50 insertions(+), 3 deletions(-)

diff --git a/Documentation/devicetree/bindings/input/samsung,s3c6410-keypad.yaml b/Documentation/devicetree/bindings/input/samsung,s3c6410-keypad.yaml
index a53569aa0ee7..2498c62444a1 100644
--- a/Documentation/devicetree/bindings/input/samsung,s3c6410-keypad.yaml
+++ b/Documentation/devicetree/bindings/input/samsung,s3c6410-keypad.yaml
@@ -37,6 +37,10 @@ properties:

wakeup-source: true

+ keypad,num-columns: true
+ keypad,num-rows: true
+ linux,keymap: true
+
linux,input-no-autorepeat:
type: boolean
description:
@@ -81,12 +85,33 @@ patternProperties:
- keypad,row
- linux,code

+dependencies:
+ linux,keymap: [ "keypad,num-columns", "keypad,num-rows" ]
+
required:
- compatible
- reg
- interrupts
- - samsung,keypad-num-columns
- - samsung,keypad-num-rows
+
+allOf:
+ - $ref: input.yaml#
+ - $ref: matrix-keymap.yaml#
+ - if:
+ required:
+ - linux,keymap
+ then:
+ properties:
+ samsung,keypad-num-columns: false
+ samsung,keypad-num-rows: false
+ patternProperties:
+ '^key-[0-9a-z]+$': false
+ else:
+ properties:
+ keypad,num-columns: false
+ keypad,num-rows: false
+ required:
+ - samsung,keypad-num-columns
+ - samsung,keypad-num-rows

additionalProperties: false

@@ -94,8 +119,9 @@ examples:
- |
#include <dt-bindings/clock/exynos4.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/input/input.h>

- keypad@100a0000 {
+ keypad1@100a0000 {
compatible = "samsung,s5pv210-keypad";
reg = <0x100a0000 0x100>;
interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
@@ -119,3 +145,24 @@ examples:
linux,code = <3>;
};
};
+ - |
+ #include <dt-bindings/clock/exynos4.h>
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/input/input.h>
+
+ keypad2@100a0000 {
+ compatible = "samsung,s5pv210-keypad";
+ reg = <0x100a0000 0x100>;
+ interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clock CLK_KEYIF>;
+ clock-names = "keypad";
+
+ keypad,num-rows = <2>;
+ keypad,num-columns = <8>;
+ linux,keymap = <
+ MATRIX_KEY(0, 3, 2)
+ MATRIX_KEY(0, 4, 3)
+ >;
+ linux,input-no-autorepeat;
+ wakeup-source;
+ };

--
2.55.0.795.g602f6c329a-goog