Convert the gpio-matrix-keypad bindings from text to DT schema.
Signed-off-by: Markus Burri <markus.burri@mt.com>
---
.../bindings/input/gpio-matrix-keypad.txt | 49 ---------
.../bindings/input/gpio-matrix-keypad.yaml | 99 +++++++++++++++++++
2 files changed, 99 insertions(+), 49 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt
create mode 100644 Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml
diff --git a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt
deleted file mode 100644
index 570dc10..0000000
--- a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-* GPIO driven matrix keypad device tree bindings
-
-GPIO driven matrix keypad is used to interface a SoC with a matrix keypad.
-The matrix keypad supports multiple row and column lines, a key can be
-placed at each intersection of a unique row and a unique column. The matrix
-keypad can sense a key-press and key-release by means of GPIO lines and
-report the event using GPIO interrupts to the cpu.
-
-Required Properties:
-- compatible: Should be "gpio-matrix-keypad"
-- row-gpios: List of gpios used as row lines. The gpio specifier
- for this property depends on the gpio controller to
- which these row lines are connected.
-- col-gpios: List of gpios used as column lines. The gpio specifier
- for this property depends on the gpio controller to
- which these column lines are connected.
-- linux,keymap: The definition can be found at
- bindings/input/matrix-keymap.txt
-
-Optional Properties:
-- linux,no-autorepeat: do no enable autorepeat feature.
-- wakeup-source: use any event on keypad as wakeup event.
- (Legacy property supported: "linux,wakeup")
-- debounce-delay-ms: debounce interval in milliseconds
-- col-scan-delay-us: delay, measured in microseconds, that is needed
- before we can scan keypad after activating column gpio
-- drive-inactive-cols: drive inactive columns during scan,
- default is to turn inactive columns into inputs.
-
-Example:
- matrix-keypad {
- compatible = "gpio-matrix-keypad";
- debounce-delay-ms = <5>;
- col-scan-delay-us = <2>;
-
- row-gpios = <&gpio2 25 0
- &gpio2 26 0
- &gpio2 27 0>;
-
- col-gpios = <&gpio2 21 0
- &gpio2 22 0>;
-
- linux,keymap = <0x0000008B
- 0x0100009E
- 0x02000069
- 0x0001006A
- 0x0101001C
- 0x0201006C>;
- };
diff --git a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml
new file mode 100644
index 0000000..745652b
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml
@@ -0,0 +1,99 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+
+$id: http://devicetree.org/schemas/input/gpio-matrix-keypad.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: GPIO matrix keypad
+
+description: |
+ GPIO driven matrix keypad is used to interface a SoC with a matrix keypad.
+ The matrix keypad supports multiple row and column lines, a key can be
+ placed at each intersection of a unique row and a unique column. The matrix
+ keypad can sense a key-press and key-release by means of GPIO lines and
+ report the event using GPIO interrupts to the cpu.
+
+maintainers:
+ - Marek Vasut <marek.vasut@gmail.com>
+
+properties:
+ compatible:
+ const: gpio-matrix-keypad
+
+ row-gpios:
+ description: |
+ List of GPIOs used as row lines. The gpio specifier
+ for this property depends on the gpio controller to
+ which these row lines are connected.
+
+ col-gpios:
+ description: |
+ List of GPIOs used as column lines. The gpio specifier
+ for this property depends on the gpio controller to
+ which these column lines are connected.
+
+ linux,keymap:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ description: |
+ An array of packed 1-cell entries containing the equivalent of row,
+ column and linux key-code. The 32-bit big endian cell is packed as:
+ row << 24 | column << 16 | key-code
+
+ linux,no-autorepeat:
+ type: boolean
+ description: Do not enable autorepeat feature.
+ default: false
+
+ wakeup-source:
+ description: |
+ Use any event on keypad as wakeup event.
+ (Legacy property supported: "linux,wakeup")
+ default: false
+
+ debounce-delay-ms:
+ description: Debounce interval in milliseconds.
+ default: 0
+
+ col-scan-delay-us:
+ description: |
+ Delay, measured in microseconds, that is needed
+ before we can scan keypad after activating column gpio.
+ default: 0
+
+ drive-inactive-cols:
+ type: boolean
+ description: |
+ Drive inactive columns during scan,
+ default is to turn inactive columns into inputs.
+ default: false
+
+required:
+ - compatible
+ - row-gpios
+ - col-gpios
+ - linux,keymap
+
+additionalProperties: false
+
+examples:
+ - |
+ matrix-keypad {
+ compatible = "gpio-matrix-keypad";
+ debounce-delay-ms = <5>;
+ col-scan-delay-us = <2>;
+
+ row-gpios = <&gpio2 25 0
+ &gpio2 26 0
+ &gpio2 27 0>;
+
+ col-gpios = <&gpio2 21 0
+ &gpio2 22 0>;
+
+ linux,keymap = <0x0000008B
+ 0x0100009E
+ 0x02000069
+ 0x0001006A
+ 0x0101001C
+ 0x0201006C>;
+ };
--
2.39.5
On Tue, Nov 05, 2024 at 02:03:18PM +0100, Markus Burri wrote:
> Convert the gpio-matrix-keypad bindings from text to DT schema.
Please don't thread new versions to previous thread.
>
> Signed-off-by: Markus Burri <markus.burri@mt.com>
> ---
> .../bindings/input/gpio-matrix-keypad.txt | 49 ---------
> .../bindings/input/gpio-matrix-keypad.yaml | 99 +++++++++++++++++++
> 2 files changed, 99 insertions(+), 49 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt
> create mode 100644 Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml
>
> diff --git a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt
> deleted file mode 100644
> index 570dc10..0000000
> --- a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -* GPIO driven matrix keypad device tree bindings
> -
> -GPIO driven matrix keypad is used to interface a SoC with a matrix keypad.
> -The matrix keypad supports multiple row and column lines, a key can be
> -placed at each intersection of a unique row and a unique column. The matrix
> -keypad can sense a key-press and key-release by means of GPIO lines and
> -report the event using GPIO interrupts to the cpu.
> -
> -Required Properties:
> -- compatible: Should be "gpio-matrix-keypad"
> -- row-gpios: List of gpios used as row lines. The gpio specifier
> - for this property depends on the gpio controller to
> - which these row lines are connected.
> -- col-gpios: List of gpios used as column lines. The gpio specifier
> - for this property depends on the gpio controller to
> - which these column lines are connected.
> -- linux,keymap: The definition can be found at
> - bindings/input/matrix-keymap.txt
> -
> -Optional Properties:
> -- linux,no-autorepeat: do no enable autorepeat feature.
> -- wakeup-source: use any event on keypad as wakeup event.
> - (Legacy property supported: "linux,wakeup")
> -- debounce-delay-ms: debounce interval in milliseconds
> -- col-scan-delay-us: delay, measured in microseconds, that is needed
> - before we can scan keypad after activating column gpio
> -- drive-inactive-cols: drive inactive columns during scan,
> - default is to turn inactive columns into inputs.
> -
> -Example:
> - matrix-keypad {
> - compatible = "gpio-matrix-keypad";
> - debounce-delay-ms = <5>;
> - col-scan-delay-us = <2>;
> -
> - row-gpios = <&gpio2 25 0
> - &gpio2 26 0
> - &gpio2 27 0>;
> -
> - col-gpios = <&gpio2 21 0
> - &gpio2 22 0>;
> -
> - linux,keymap = <0x0000008B
> - 0x0100009E
> - 0x02000069
> - 0x0001006A
> - 0x0101001C
> - 0x0201006C>;
> - };
> diff --git a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml
> new file mode 100644
> index 0000000..745652b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml
> @@ -0,0 +1,99 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +
> +$id: http://devicetree.org/schemas/input/gpio-matrix-keypad.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: GPIO matrix keypad
> +
> +description: |
Don't need '|' if no formatting.
> + GPIO driven matrix keypad is used to interface a SoC with a matrix keypad.
> + The matrix keypad supports multiple row and column lines, a key can be
> + placed at each intersection of a unique row and a unique column. The matrix
> + keypad can sense a key-press and key-release by means of GPIO lines and
> + report the event using GPIO interrupts to the cpu.
> +
> +maintainers:
> + - Marek Vasut <marek.vasut@gmail.com>
> +
> +properties:
> + compatible:
> + const: gpio-matrix-keypad
> +
> + row-gpios:
> + description: |
Ditto.
> + List of GPIOs used as row lines. The gpio specifier
> + for this property depends on the gpio controller to
> + which these row lines are connected.
Why the odd line length? Wrap at 80 char unless there's some exceptional
reason to go to 100.
> +
> + col-gpios:
> + description: |
> + List of GPIOs used as column lines. The gpio specifier
> + for this property depends on the gpio controller to
> + which these column lines are connected.
Is there some reasonable range of GPIOs? 1xN is in theory possible, but
surely no one would use N+1 GPIOs for what could be done with N GPIOs?
So 'minItems: 2'. A max is not so clear. Eventually, I guess you
couldn't scan them fast enough. 64 or 128 seems like way more than
anyone would do.
> +
> + linux,keymap:
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + description: |
> + An array of packed 1-cell entries containing the equivalent of row,
> + column and linux key-code. The 32-bit big endian cell is packed as:
> + row << 24 | column << 16 | key-code
If you are copying another schema, you are doing it wrong...
You need a $ref to matrix-keymap.yaml.
> +
> + linux,no-autorepeat:
> + type: boolean
> + description: Do not enable autorepeat feature.
> + default: false
Drop 'default'. Doesn't apply to booleans.
> +
> + wakeup-source:
> + description: |
> + Use any event on keypad as wakeup event.
> + (Legacy property supported: "linux,wakeup")
Not supported if it is not in the schema. I imagine that's been
deprecated long enough, you can just drop mentioning it.
> + default: false
Drop.
> +
> + debounce-delay-ms:
> + description: Debounce interval in milliseconds.
> + default: 0
> +
> + col-scan-delay-us:
> + description: |
> + Delay, measured in microseconds, that is needed
> + before we can scan keypad after activating column gpio.
> + default: 0
> +
> + drive-inactive-cols:
> + type: boolean
> + description: |
> + Drive inactive columns during scan,
> + default is to turn inactive columns into inputs.
> + default: false
Drop
> +
> +required:
> + - compatible
> + - row-gpios
> + - col-gpios
> + - linux,keymap
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + matrix-keypad {
> + compatible = "gpio-matrix-keypad";
> + debounce-delay-ms = <5>;
> + col-scan-delay-us = <2>;
> +
> + row-gpios = <&gpio2 25 0
> + &gpio2 26 0
> + &gpio2 27 0>;
> +
> + col-gpios = <&gpio2 21 0
> + &gpio2 22 0>;
> +
> + linux,keymap = <0x0000008B
> + 0x0100009E
> + 0x02000069
> + 0x0001006A
> + 0x0101001C
> + 0x0201006C>;
> + };
> --
> 2.39.5
>
Hi Markus, kernel test robot noticed the following build warnings: [auto build test WARNING on dtor-input/for-linus] [also build test WARNING on robh/for-next linus/master v6.12-rc6 next-20241105] [cannot apply to dtor-input/next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Markus-Burri/Input-matrix_keypad-use-fsleep-for-variable-delay-duration/20241105-211348 base: https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git for-linus patch link: https://lore.kernel.org/r/20241105130322.213623-4-markus.burri%40mt.com patch subject: [PATCH v2 3/7] dt-bindings: input: matrix_keypad - convert to YAML reproduce: (https://download.01.org/0day-ci/archive/20241106/202411060143.8tNHeidk-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202411060143.8tNHeidk-lkp@intel.com/ All warnings (new ones prefixed by >>): >> Warning: Documentation/devicetree/bindings/power/wakeup-source.txt references a file that doesn't exist: Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt Warning: Documentation/devicetree/bindings/power/wakeup-source.txt references a file that doesn't exist: Documentation/devicetree/bindings/input/qcom,pm8xxx-keypad.txt Warning: Documentation/devicetree/bindings/regulator/siliconmitus,sm5703-regulator.yaml references a file that doesn't exist: Documentation/devicetree/bindings/mfd/siliconmitus,sm5703.yaml Warning: Documentation/hwmon/g762.rst references a file that doesn't exist: Documentation/devicetree/bindings/hwmon/g762.txt Warning: MAINTAINERS references a file that doesn't exist: Documentation/devicetree/bindings/reserved-memory/qcom Warning: MAINTAINERS references a file that doesn't exist: Documentation/devicetree/bindings/display/exynos/ -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
© 2016 - 2026 Red Hat, Inc.