# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/input/ti,twl4030-keypad.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Texas Instruments TWL4030-family Keypad Controller

maintainers:
  - Peter Ujfalusi <peter.ujfalusi@gmail.com>

description:
  TWL4030's Keypad controller is used to interface a SoC with a matrix-type
  keypad device. The keypad controller supports multiple row and column lines.
  A key can be placed at each intersection of a unique row and a unique column.
  The keypad controller can sense a key-press and key-release and report the
  event using a interrupt to the cpu.

allOf:
  - $ref: matrix-keymap.yaml#

properties:
  compatible:
    const: ti,twl4030-keypad

  interrupts:
    maxItems: 1

required:
  - compatible
  - interrupts
  - keypad,num-rows
  - keypad,num-columns
  - linux,keymap

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/input/input.h>

    keypad {
        compatible = "ti,twl4030-keypad";
        interrupts = <1>;
        keypad,num-rows = <8>;
        keypad,num-columns = <8>;
        linux,keymap = <
            /* row 0 */
            MATRIX_KEY(0, 0, KEY_1)
            MATRIX_KEY(0, 1, KEY_2)
            MATRIX_KEY(0, 2, KEY_3)

            /* ...and so on for a full 8x8 matrix... */

            /* row 7 */
            MATRIX_KEY(7, 6, KEY_Y)
            MATRIX_KEY(7, 7, KEY_Z)
        >;
    };
