mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-08-23 21:57:35 +00:00

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>
314 lines
7.7 KiB
YAML
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 = <®_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)
|
|
>;
|
|
};
|
|
};
|
|
|
|
...
|