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 <[email protected]>
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              - mediatek,mt8183-keypad
30              - mediatek,mt8365-keypad
31              - mediatek,mt8516-keypad
32          - const: mediatek,mt6779-keypad
33
34  reg:
35    maxItems: 1
36
37  interrupts:
38    maxItems: 1
39
40  clocks:
41    maxItems: 1
42
43  clock-names:
44    items:
45      - const: kpd
46
47  wakeup-source:
48    description: use any event on keypad as wakeup event
49    type: boolean
50
51  debounce-delay-ms:
52    maximum: 256
53    default: 16
54
55  mediatek,keys-per-group:
56    description: each (row, column) group has multiple keys
57    $ref: /schemas/types.yaml#/definitions/uint32
58    default: 1
59    maximum: 2
60
61required:
62  - compatible
63  - reg
64  - interrupts
65  - clocks
66  - clock-names
67
68unevaluatedProperties: false
69
70examples:
71  - |
72    #include <dt-bindings/input/input.h>
73    #include <dt-bindings/interrupt-controller/arm-gic.h>
74
75    soc {
76        #address-cells = <2>;
77        #size-cells = <2>;
78
79        keyboard@10010000 {
80          compatible = "mediatek,mt6779-keypad";
81          reg = <0 0x10010000 0 0x1000>;
82          interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_FALLING>;
83          clocks = <&clk26m>;
84          clock-names = "kpd";
85        };
86    };
87