The MediaTek keypad has 2 modes of detecting key events: * single key: each (row, column) can detect one key * double key: each (row, column) is a group of 2 keys With double key, two keys are physically wired to one (row, column) pin. These keys are in the same "group". Multiple keys in the same group reduces the number of pins which minimizes cost. Add a keys-per-group property to describe this. Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Link: https://lore.kernel.org/r/20220720-mt8183-keypad-v2-3-6d42c357cb76@baylibre.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
84 lines
1.9 KiB
YAML
84 lines
1.9 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/input/mediatek,mt6779-keypad.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Mediatek's Keypad Controller device tree bindings
|
|
|
|
maintainers:
|
|
- Mattijs Korpershoek <mkorpershoek@baylibre.com>
|
|
|
|
allOf:
|
|
- $ref: "/schemas/input/matrix-keymap.yaml#"
|
|
|
|
description: |
|
|
Mediatek'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.
|
|
|
|
properties:
|
|
compatible:
|
|
oneOf:
|
|
- const: mediatek,mt6779-keypad
|
|
- items:
|
|
- enum:
|
|
- mediatek,mt6873-keypad
|
|
- const: mediatek,mt6779-keypad
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
interrupts:
|
|
maxItems: 1
|
|
|
|
clocks:
|
|
maxItems: 1
|
|
|
|
clock-names:
|
|
items:
|
|
- const: kpd
|
|
|
|
wakeup-source:
|
|
description: use any event on keypad as wakeup event
|
|
type: boolean
|
|
|
|
debounce-delay-ms:
|
|
maximum: 256
|
|
default: 16
|
|
|
|
mediatek,keys-per-group:
|
|
description: each (row, column) group has multiple keys
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
default: 1
|
|
maximum: 2
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- interrupts
|
|
- clocks
|
|
- clock-names
|
|
|
|
unevaluatedProperties: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/input/input.h>
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
|
|
soc {
|
|
#address-cells = <2>;
|
|
#size-cells = <2>;
|
|
|
|
keyboard@10010000 {
|
|
compatible = "mediatek,mt6779-keypad";
|
|
reg = <0 0x10010000 0 0x1000>;
|
|
interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_FALLING>;
|
|
clocks = <&clk26m>;
|
|
clock-names = "kpd";
|
|
};
|
|
};
|