dt-bindings: mfd: adp5585: add properties for input events

Add properties related to input events. These devices can act as
keyboards and can support events either via a keymap Matrix or through
GPIs. Note that the device needs to be an interrupt controller for GPIs
based events.

We specifically need a property specifying the pins used by the keymap
matrix since these devices have no requirement for rows and columns to be
contiguous without holes which is enforced by the standard input
properties.

Reviewed-by: "Rob Herring (Arm)" <robh@kernel.org>
Signed-off-by: Nuno Sá <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20250701-dev-adp5589-fw-v7-11-b1fcfe9e9826@analog.com
Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
Nuno Sá
2025-07-01 15:32:06 +01:00
committed by Lee Jones
parent 75024f97e8
commit adf4932bc9

View File

@@ -49,6 +49,84 @@ properties:
"#pwm-cells":
const: 3
interrupt-controller: true
'#interrupt-cells':
const: 2
poll-interval:
enum: [10, 20, 30, 40]
default: 10
adi,keypad-pins:
description: Specifies the pins used for the keypad matrix.
$ref: /schemas/types.yaml#/definitions/uint32-array
adi,unlock-events:
description:
Specifies a maximum of 2 events that can be used to unlock the keypad.
If this property is set, the keyboard will be locked and only unlocked
after these keys/gpis are pressed. The value 127 serves as a wildcard which
means any key can be used for unlocking.
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 1
maxItems: 2
items:
anyOf:
- minimum: 1
maximum: 88
- minimum: 97
maximum: 115
- const: 127
adi,unlock-trigger-sec:
description:
Defines the time in which the second unlock event must occur after the
first unlock event has occurred.
maximum: 7
default: 0
adi,reset1-events:
description:
Defines the trigger events (key/gpi presses) that can generate reset
conditions one the reset1 block.
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 1
maxItems: 3
adi,reset2-events:
description:
Defines the trigger events (key/gpi presses) that can generate reset
conditions one the reset2 block.
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 1
maxItems: 2
adi,reset1-active-high:
description: Sets the reset1 signal as active high.
type: boolean
adi,reset2-active-high:
description: Sets the reset2 signal as active high.
type: boolean
adi,rst-passthrough-enable:
description: Allows the RST pin to override (OR with) the reset1 signal.
type: boolean
adi,reset-trigger-ms:
description:
Defines the length of time that the reset events must be active before a
reset signal is generated. All events must be active at the same time for
the same duration.
enum: [0, 1000, 1500, 2000, 2500, 3000, 3500, 4000]
default: 0
adi,reset-pulse-width-us:
description: Defines the pulse width of the reset signals.
enum: [500, 1000, 2000, 10000]
default: 500
patternProperties:
"-hog(-[0-9]+)?$":
type: object
@@ -56,11 +134,28 @@ patternProperties:
required:
- gpio-hog
dependencies:
linux,keymap:
- adi,keypad-pins
- interrupts
interrupt-controller:
- interrupts
adi,unlock-trigger-sec:
- adi,unlock-events
adi,reset1-active-high:
- adi,reset1-events
adi,rst-passtrough-enable:
- adi,reset1-events
adi,reset2-active-high:
- adi,reset2-events
required:
- compatible
- reg
allOf:
- $ref: /schemas/input/matrix-keymap.yaml#
- $ref: /schemas/input/input.yaml#
- if:
properties:
compatible:
@@ -68,8 +163,29 @@ allOf:
const: adi,adp5585-01
then:
properties:
adi,unlock-events: false
adi,unlock-trigger-sec: false
gpio-reserved-ranges: false
adi,keypad-pins:
minItems: 2
maxItems: 11
items:
minimum: 0
maximum: 10
adi,reset1-events:
items:
anyOf:
- minimum: 1
maximum: 30
- minimum: 37
maximum: 47
adi,reset2-events:
items:
anyOf:
- minimum: 1
maximum: 30
- minimum: 37
maximum: 47
- if:
properties:
compatible:
@@ -81,6 +197,25 @@ allOf:
- adi,adp5585-04
then:
properties:
adi,unlock-events: false
adi,unlock-trigger-sec: false
adi,keypad-pins:
minItems: 2
maxItems: 10
items:
enum: [0, 1, 2, 3, 4, 6, 7, 8, 9, 10]
adi,reset1-events:
items:
anyOf:
- minimum: 1
maximum: 25
- enum: [37, 38, 39, 40, 41, 43, 44, 45, 46, 47]
adi,reset2-events:
items:
anyOf:
- minimum: 1
maximum: 25
- enum: [37, 38, 39, 40, 41, 43, 44, 45, 46, 47]
gpio-reserved-ranges:
maxItems: 1
items:
@@ -99,11 +234,33 @@ allOf:
then:
properties:
gpio-reserved-ranges: false
adi,keypad-pins:
minItems: 2
maxItems: 19
items:
minimum: 0
maximum: 18
adi,reset1-events:
items:
anyOf:
- minimum: 1
maximum: 88
- minimum: 97
maximum: 115
adi,reset2-events:
items:
anyOf:
- minimum: 1
maximum: 88
- minimum: 97
maximum: 115
additionalProperties: false
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
@@ -119,6 +276,33 @@ examples:
gpio-reserved-ranges = <5 1>;
#pwm-cells = <3>;
interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
interrupt-parent = <&gpio>;
adi,reset1-events = <1 43>;
adi,reset2-events = <2 3>;
adi,reset-trigger-ms = <2000>;
/*
* col0, col1, col2
* row0, row1, row2
*/
adi,keypad-pins = <0 1 2 6 7 8>;
linux,keymap = <
MATRIX_KEY(0x00, 0x00, KEY_1)
MATRIX_KEY(0x00, 0x01, KEY_2)
MATRIX_KEY(0x00, 0x02, KEY_3)
MATRIX_KEY(0x01, 0x00, KEY_A)
MATRIX_KEY(0x01, 0x01, KEY_B)
MATRIX_KEY(0x01, 0x02, KEY_C)
MATRIX_KEY(0x02, 0x00, BTN_1)
MATRIX_KEY(0x02, 0x01, BTN_2)
MATRIX_KEY(0x02, 0x02, BTN_3)
>;
};
};