xref: /linux/Documentation/devicetree/bindings/input/mediatek,mt6779-keypad.yaml (revision 0526b56cbc3c489642bd6a5fe4b718dea7ef0ee8)
1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/input/mediatek,mt6779-keypad.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Mediatek's Keypad Controller
8
9maintainers:
10  - Mattijs Korpershoek <mkorpershoek@baylibre.com>
11
12allOf:
13  - $ref: /schemas/input/matrix-keymap.yaml#
14
15description: |
16  Mediatek's Keypad controller is used to interface a SoC with a matrix-type
17  keypad device. The keypad controller supports multiple row and column lines.
18  A key can be placed at each intersection of a unique row and a unique column.
19  The keypad controller can sense a key-press and key-release and report the
20  event using a interrupt to the cpu.
21
22properties:
23  compatible:
24    oneOf:
25      - const: mediatek,mt6779-keypad
26      - items:
27          - enum:
28              - mediatek,mt6873-keypad
29          - const: mediatek,mt6779-keypad
30
31  reg:
32    maxItems: 1
33
34  interrupts:
35    maxItems: 1
36
37  clocks:
38    maxItems: 1
39
40  clock-names:
41    items:
42      - const: kpd
43
44  wakeup-source:
45    description: use any event on keypad as wakeup event
46    type: boolean
47
48  debounce-delay-ms:
49    maximum: 256
50    default: 16
51
52  mediatek,keys-per-group:
53    description: each (row, column) group has multiple keys
54    $ref: /schemas/types.yaml#/definitions/uint32
55    default: 1
56    maximum: 2
57
58required:
59  - compatible
60  - reg
61  - interrupts
62  - clocks
63  - clock-names
64
65unevaluatedProperties: false
66
67examples:
68  - |
69    #include <dt-bindings/input/input.h>
70    #include <dt-bindings/interrupt-controller/arm-gic.h>
71
72    soc {
73        #address-cells = <2>;
74        #size-cells = <2>;
75
76        keyboard@10010000 {
77          compatible = "mediatek,mt6779-keypad";
78          reg = <0 0x10010000 0 0x1000>;
79          interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_FALLING>;
80          clocks = <&clk26m>;
81          clock-names = "kpd";
82        };
83    };
84