Documentation / devicetree / bindings / input / gpio-matrix-keypad.yaml


Based on kernel version 6.15. Page generated on 2025-05-29 09:08 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
# 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

maintainers:
  - Marek Vasut <marek.vasut@gmail.com>

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.

allOf:
  - $ref: /schemas/input/matrix-keymap.yaml#

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: true

  linux,no-autorepeat:
    type: boolean
    description: Do not enable autorepeat feature.

  gpio-activelow:
    type: boolean
    description:
      Force GPIO polarity to active low.
      In the absence of this property GPIOs are treated as active high.

  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

  all-cols-on-delay-us:
    description:
      Delay, measured in microseconds, that is needed
      after activating all column gpios.
    default: 0

  drive-inactive-cols:
    type: boolean
    description:
      Drive inactive columns during scan,
      default is to turn inactive columns into inputs.

  wakeup-source: true

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>;
 
        wakeup-source;
    };