linux/Documentation/devicetree/bindings/mfd/adi,adp5585.yaml
Nuno Sá ce262d6d62 dt-bindings: mfd: adp5585: document reset gpio
Add a reset gpio property. Note that for the adp5585-01 models, the
reset pin is used as the additional ROW5 which means there's no reset.

Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Nuno Sá <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20250701-dev-adp5589-fw-v7-19-b1fcfe9e9826@analog.com
Signed-off-by: Lee Jones <lee@kernel.org>
2025-07-01 21:50:51 +01:00

314 lines
7.7 KiB
YAML

# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/adi,adp5585.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Analog Devices ADP5585 Keypad Decoder and I/O Expansion
maintainers:
- Laurent Pinchart <laurent.pinchart@ideasonboard.com>
description:
The ADP5585 is a 10/11 input/output port expander with a built in keypad
matrix decoder, programmable logic, reset generator, and PWM generator.
properties:
compatible:
oneOf:
- items:
- enum:
- adi,adp5585-00 # Default
- adi,adp5585-01 # 11 GPIOs
- adi,adp5585-02 # No pull-up resistors by default on special pins
- adi,adp5585-03 # Alternate I2C address
- adi,adp5585-04 # Pull-down resistors on all pins by default
- const: adi,adp5585
- items:
- enum:
- adi,adp5589-00 # Default
- adi,adp5589-01 # R4 defaulted to RESET1 output
- adi,adp5589-02 # Pull-down resistors by default on special pins
- const: adi,adp5589
reg:
maxItems: 1
interrupts:
maxItems: 1
vdd-supply: true
reset-gpios:
maxItems: 1
gpio-controller: true
'#gpio-cells':
const: 2
gpio-reserved-ranges: true
"#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
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:
contains:
const: adi,adp5585-01
then:
properties:
adi,unlock-events: false
adi,unlock-trigger-sec: false
gpio-reserved-ranges: false
reset-gpios: 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:
contains:
enum:
- adi,adp5585-00
- adi,adp5585-02
- adi,adp5585-03
- 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:
items:
- const: 5
- const: 1
- if:
properties:
compatible:
contains:
enum:
- adi,adp5589-00
- adi,adp5589-01
- adi,adp5589-02
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
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
io-expander@34 {
compatible = "adi,adp5585-00", "adi,adp5585";
reg = <0x34>;
vdd-supply = <&reg_3v3>;
gpio-controller;
#gpio-cells = <2>;
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)
>;
};
};
...