From: Rob Herring <robh@kernel.org>
To: "Nuno Sá" <nuno.sa@analog.com>
Cc: linux-gpio@vger.kernel.org, linux-pwm@vger.kernel.org,
devicetree@vger.kernel.org, linux-input@vger.kernel.org,
"Lee Jones" <lee@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Uwe Kleine-König" <ukleinek@kernel.org>,
"Linus Walleij" <linus.walleij@linaro.org>,
"Bartosz Golaszewski" <brgl@bgdev.pl>,
"Dmitry Torokhov" <dmitry.torokhov@gmail.com>,
"Laurent Pinchart" <laurent.pinchart@ideasonboard.com>,
"Liu Ying" <victor.liu@nxp.com>
Subject: Re: [PATCH 09/18] dt-bindings: mfd: adp5585: add properties for input events
Date: Mon, 17 Mar 2025 10:53:00 -0500 [thread overview]
Message-ID: <20250317155300.GA4188705-robh@kernel.org> (raw)
In-Reply-To: <20250313-dev-adp5589-fw-v1-9-20e80d4bd4ea@analog.com>
On Thu, Mar 13, 2025 at 02:19:26PM +0000, Nuno Sá wrote:
> 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.
>
> Signed-off-by: Nuno Sá <nuno.sa@analog.com>
> ---
> .../devicetree/bindings/mfd/adi,adp5585.yaml | 188 ++++++++++++++++++++-
> 1 file changed, 187 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/mfd/adi,adp5585.yaml b/Documentation/devicetree/bindings/mfd/adi,adp5585.yaml
> index 87256a37b5f4b6a019f581b164c276d8805d2e52..e976c9240df79afae1d0949e6ac91d477bfaceef 100644
> --- a/Documentation/devicetree/bindings/mfd/adi,adp5585.yaml
> +++ b/Documentation/devicetree/bindings/mfd/adi,adp5585.yaml
> @@ -49,6 +49,85 @@ properties:
> "#pwm-cells":
> const: 3
>
> + interrupt-controller: true
> +
> + '#interrupt-cells':
> + const: 2
> +
> + adi,keypad-pins:
> + description: Specifies the pins used for the keypad matrix.
> + $ref: /schemas/types.yaml#/definitions/uint32-array
I would would assume there's a minimum of 3 pins (unless someone wants
to implement 1 key with 2 pins) and a maximum number of pins the chip
supports. And what about constraints on the values of each entry?
> +
> + adi,key-poll-ms:
> + description: Configure time between consecutive scan cycles.
> + enum: [10, 20, 30, 40]
> + default: 10
Use the common property "poll-interval".
> +
> + adi,unlock-keys:
> + description:
> + Specifies a maximum of 2 keys that can be used to unlock the keypad.
> + If this property is set, the keyboard will be locked and only unlocked
> + after these keys 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-keys:
> + description:
> + Defines the trigger events (key presses) that can generate reset
> + conditions one the reset1 block.
Are these in raw key values or keymap values?
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + minItems: 1
> + maxItems: 3
> +
> + adi,reset2-keys:
> + description:
> + Defines the trigger events (key 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-passtrough-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 +135,28 @@ patternProperties:
> required:
> - gpio-hog
>
> +dependencies:
> + linux,keymap:
> + - adi,keypad-pins
> + - interrupts
> + interrupt-controller:
> + - interrupts
> + adi,unlock-trigger-sec:
> + - adi,unlock-keys
> + adi,reset1-active-high:
> + - adi,reset1-keys
> + adi,rst-passtrough-enable:
> + - adi,reset1-keys
> + adi,reset2-active-high:
> + - adi,reset2-keys
> +
> required:
> - compatible
> - reg
>
> allOf:
> + - $ref: /schemas/input/matrix-keymap.yaml#
> + - $ref: /schemas/input/input.yaml#
> - if:
> properties:
> compatible:
> @@ -68,7 +164,29 @@ allOf:
> const: adi,adp5585-01
> then:
> properties:
> + adi,unlock-keys: false
> + adi,unlock-trigger-sec: false
> gpio-reserved-ranges: false
> + adi,keypad-pins:
> + minItems: 2
> + maxItems: 11
> + items:
> + minimum: 0
> + maximum: 10
> + adi,reset1-keys:
> + items:
> + anyOf:
> + - minimum: 1
> + maximum: 30
> + - minimum: 37
> + maximum: 47
> + adi,reset2-keys:
> + items:
> + anyOf:
> + - minimum: 1
> + maximum: 30
> + - minimum: 37
> + maximum: 47
> else:
> if:
> properties:
> @@ -81,6 +199,25 @@ allOf:
> - adi,adp5585-04
> then:
> properties:
> + adi,unlock-keys: 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-keys:
> + items:
> + anyOf:
> + - minimum: 1
> + maximum: 25
> + - enum: [37, 38, 39, 40, 41, 43, 44, 45, 46, 47]
> + adi,reset2-keys:
> + items:
> + anyOf:
> + - minimum: 1
> + maximum: 25
> + - enum: [37, 38, 39, 40, 41, 43, 44, 45, 46, 47]
> gpio-reserved-ranges:
> maxItems: 1
> items:
> @@ -90,11 +227,33 @@ allOf:
> else:
> properties:
> gpio-reserved-ranges: false
> + adi,keypad-pins:
> + minItems: 2
> + maxItems: 19
> + items:
> + minimum: 0
> + maximum: 18
> + adi,reset1-keys:
> + items:
> + anyOf:
> + - minimum: 1
> + maximum: 88
> + - minimum: 97
> + maximum: 115
> + adi,reset2-keys:
> + 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>;
> @@ -110,6 +269,33 @@ examples:
> gpio-reserved-ranges = <5 1>;
>
> #pwm-cells = <3>;
> +
> + interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
> + interrupt-parent = <&gpio>;
> +
> + adi,reset1-keys = <1 43>;
> + adi,reset2-keys = <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)
> + >;
> };
> };
>
>
> --
> 2.48.1
>
next prev parent reply other threads:[~2025-03-17 15:53 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-13 14:19 [PATCH 00/18] mfd: adp5585: support keymap events and drop legacy Input driver Nuno Sá via B4 Relay
2025-03-13 14:19 ` [PATCH 01/18] dt-bindings: mfd: adp5585: ease on the required properties Nuno Sá via B4 Relay
2025-03-13 14:19 ` [PATCH 02/18] mfd: adp5585: enable oscilator during probe Nuno Sá via B4 Relay
2025-03-13 14:19 ` [PATCH 03/18] pwm: adp5585: don't control OSC_EN in the pwm driver Nuno Sá via B4 Relay
2025-03-13 14:19 ` [PATCH 04/18] mfd: adp5585: make use of MFD_CELL_NAME() Nuno Sá via B4 Relay
2025-03-13 14:19 ` [PATCH 05/18] dt-bindings: mfd: adp5585: document adp5589 I/O expander Nuno Sá via B4 Relay
2025-03-14 8:49 ` Krzysztof Kozlowski
2025-03-14 9:38 ` Nuno Sá
2025-03-17 7:41 ` Krzysztof Kozlowski
2025-03-17 9:30 ` Nuno Sá
2025-03-17 10:41 ` Krzysztof Kozlowski
2025-03-13 14:19 ` [PATCH 06/18] mfd: adp5585: add support for adp5589 Nuno Sá via B4 Relay
2025-03-14 9:12 ` kernel test robot
2025-03-14 9:23 ` kernel test robot
2025-03-14 9:32 ` Nuno Sá
2025-03-13 14:19 ` [PATCH 07/18] gpio: adp5585: add support for the ad5589 expander Nuno Sá via B4 Relay
2025-03-14 10:53 ` Linus Walleij
2025-03-13 14:19 ` [PATCH 08/18] pwm: adp5585: add support for adp5589 Nuno Sá via B4 Relay
2025-03-13 14:19 ` [PATCH 09/18] dt-bindings: mfd: adp5585: add properties for input events Nuno Sá via B4 Relay
2025-03-17 15:53 ` Rob Herring [this message]
2025-03-17 16:08 ` Nuno Sá
2025-03-13 14:19 ` [PATCH 10/18] mfd: adp5585: add support for key events Nuno Sá via B4 Relay
2025-03-14 9:43 ` kernel test robot
2025-03-13 14:19 ` [PATCH 11/18] gpio: adp5585: support gpi events Nuno Sá via B4 Relay
2025-03-14 10:54 ` Linus Walleij
2025-03-13 14:19 ` [PATCH 12/18] Input: adp5585: Add Analog Devices ADP5585/89 support Nuno Sá via B4 Relay
2025-03-13 14:19 ` [PATCH 13/18] Input: adp5589: remove the driver Nuno Sá via B4 Relay
2025-03-13 14:19 ` [PATCH 14/18] mfd: adp5585: support getting vdd regulator Nuno Sá via B4 Relay
2025-03-13 14:19 ` [PATCH 15/18] dt-bindings: mfd: adp5585: document reset gpio Nuno Sá via B4 Relay
2025-03-14 8:52 ` Krzysztof Kozlowski
2025-03-13 14:19 ` [PATCH 16/18] mfd: adp5585: add support for a reset pin Nuno Sá via B4 Relay
2025-03-13 14:19 ` [PATCH 17/18] pwm: adp5585: make sure to include mod_devicetable.h Nuno Sá via B4 Relay
2025-03-13 14:19 ` [PATCH 18/18] gpio: " Nuno Sá via B4 Relay
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250317155300.GA4188705-robh@kernel.org \
--to=robh@kernel.org \
--cc=brgl@bgdev.pl \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.torokhov@gmail.com \
--cc=krzk+dt@kernel.org \
--cc=laurent.pinchart@ideasonboard.com \
--cc=lee@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=nuno.sa@analog.com \
--cc=ukleinek@kernel.org \
--cc=victor.liu@nxp.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).