From: Jeff LaBundy <jeff@labundy.com>
To: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
linux-input@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
Stefan Hansson <newbie13xd@gmail.com>,
Andreas Kemnade <andreas@kemnade.info>
Subject: Re: [RFC PATCH 1/2] dt-bindings: input: gpio-keys: enforce node names to match all properties
Date: Fri, 3 Jun 2022 22:04:55 -0500 [thread overview]
Message-ID: <20220604030455.GA12308@nixie71> (raw)
In-Reply-To: <20220603101601.542054-2-krzysztof.kozlowski@linaro.org>
Hi Krzysztof,
On Fri, Jun 03, 2022 at 12:16:00PM +0200, Krzysztof Kozlowski wrote:
> The gpio-keys DT schema matches all properties with a wide pattern and
> applies specific schema to children. This has drawback - all regular
> properties are also matched and are silently ignored, even if they are
> not described in schema. Basically this allows any non-object property
> to be present.
>
> Enforce specific naming pattern for children (keys) to narrow the
> pattern thus do not match other properties. This will require all
> children to be named with 'key-' prefix or '-key' suffix.
>
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> ---
> .../devicetree/bindings/input/gpio-keys.yaml | 169 +++++++++---------
> 1 file changed, 83 insertions(+), 86 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/input/gpio-keys.yaml b/Documentation/devicetree/bindings/input/gpio-keys.yaml
> index 93f601c58984..49d388dc8d78 100644
> --- a/Documentation/devicetree/bindings/input/gpio-keys.yaml
> +++ b/Documentation/devicetree/bindings/input/gpio-keys.yaml
> @@ -16,92 +16,89 @@ properties:
> - gpio-keys-polled
>
> patternProperties:
> - ".*":
> - if:
> - type: object
> - then:
> - $ref: input.yaml#
> -
> - properties:
> - gpios:
> - maxItems: 1
> -
> - interrupts:
> - maxItems: 1
> -
> - label:
> - description: Descriptive name of the key.
> -
> - linux,code:
> - description: Key / Axis code to emit.
> - $ref: /schemas/types.yaml#/definitions/uint32
> -
> - linux,input-type:
> - description:
> - Specify event type this button/key generates. If not specified defaults to
> - <1> == EV_KEY.
> - $ref: /schemas/types.yaml#/definitions/uint32
> -
> - default: 1
> -
> - linux,input-value:
> - description: |
> - If linux,input-type is EV_ABS or EV_REL then this
> - value is sent for events this button generates when pressed.
> - EV_ABS/EV_REL axis will generate an event with a value of 0
> - when all buttons with linux,input-type == type and
> - linux,code == axis are released. This value is interpreted
> - as a signed 32 bit value, e.g. to make a button generate a
> - value of -1 use:
> -
> - linux,input-value = <0xffffffff>; /* -1 */
> -
> - $ref: /schemas/types.yaml#/definitions/uint32
> -
> - debounce-interval:
> - description:
> - Debouncing interval time in milliseconds. If not specified defaults to 5.
> - $ref: /schemas/types.yaml#/definitions/uint32
> -
> - default: 5
> -
> - wakeup-source:
> - description: Button can wake-up the system.
> -
> - wakeup-event-action:
> - description: |
> - Specifies whether the key should wake the system when asserted, when
> - deasserted, or both. This property is only valid for keys that wake up the
> - system (e.g., when the "wakeup-source" property is also provided).
> -
> - Supported values are defined in linux-event-codes.h:
> -
> - EV_ACT_ANY - both asserted and deasserted
> - EV_ACT_ASSERTED - asserted
> - EV_ACT_DEASSERTED - deasserted
> - $ref: /schemas/types.yaml#/definitions/uint32
> - enum: [0, 1, 2]
> -
> - linux,can-disable:
> - description:
> - Indicates that button is connected to dedicated (not shared) interrupt
> - which can be disabled to suppress events from the button.
> - type: boolean
> -
> - required:
> - - linux,code
> -
> - anyOf:
> - - required:
> - - interrupts
> - - required:
> - - gpios
> -
> - dependencies:
> - wakeup-event-action: [ wakeup-source ]
> - linux,input-value: [ gpios ]
> -
> - unevaluatedProperties: false
> + "^(key|key-[a-z0-9-]+|[a-z0-9-]+-key)$":
Maybe this would be better as:
"^((key|switch|axis)|(key|switch|axis)-[a-z0-9-]+|[a-z0-9-]+-(key|switch|axis))$":
...or perhaps a more efficient version of my counter-proposal.
The reason is because it is confusing to see a lid or dock switch named
as "key-lid", etc.
> + $ref: input.yaml#
> +
> + properties:
> + gpios:
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + label:
> + description: Descriptive name of the key.
> +
> + linux,code:
> + description: Key / Axis code to emit.
> + $ref: /schemas/types.yaml#/definitions/uint32
> +
> + linux,input-type:
> + description:
> + Specify event type this button/key generates. If not specified defaults to
> + <1> == EV_KEY.
> + $ref: /schemas/types.yaml#/definitions/uint32
> +
> + default: 1
> +
> + linux,input-value:
> + description: |
> + If linux,input-type is EV_ABS or EV_REL then this
> + value is sent for events this button generates when pressed.
> + EV_ABS/EV_REL axis will generate an event with a value of 0
> + when all buttons with linux,input-type == type and
> + linux,code == axis are released. This value is interpreted
> + as a signed 32 bit value, e.g. to make a button generate a
> + value of -1 use:
> +
> + linux,input-value = <0xffffffff>; /* -1 */
> +
> + $ref: /schemas/types.yaml#/definitions/uint32
> +
> + debounce-interval:
> + description:
> + Debouncing interval time in milliseconds. If not specified defaults to 5.
> + $ref: /schemas/types.yaml#/definitions/uint32
> +
> + default: 5
> +
> + wakeup-source:
> + description: Button can wake-up the system.
> +
> + wakeup-event-action:
> + description: |
> + Specifies whether the key should wake the system when asserted, when
> + deasserted, or both. This property is only valid for keys that wake up the
> + system (e.g., when the "wakeup-source" property is also provided).
> +
> + Supported values are defined in linux-event-codes.h:
> +
> + EV_ACT_ANY - both asserted and deasserted
> + EV_ACT_ASSERTED - asserted
> + EV_ACT_DEASSERTED - deasserted
> + $ref: /schemas/types.yaml#/definitions/uint32
> + enum: [0, 1, 2]
> +
> + linux,can-disable:
> + description:
> + Indicates that button is connected to dedicated (not shared) interrupt
> + which can be disabled to suppress events from the button.
> + type: boolean
> +
> + required:
> + - linux,code
> +
> + anyOf:
> + - required:
> + - interrupts
> + - required:
> + - gpios
> +
> + dependencies:
> + wakeup-event-action: [ wakeup-source ]
> + linux,input-value: [ gpios ]
> +
> + unevaluatedProperties: false
>
> if:
> properties:
> --
> 2.34.1
>
Kind regards,
Jeff LaBundy
next prev parent reply other threads:[~2022-06-04 3:05 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-03 10:15 [RFC PATCH 0/2] dt-bindings: input: gpio-keys: rework matching children Krzysztof Kozlowski
2022-06-03 10:16 ` [RFC PATCH 1/2] dt-bindings: input: gpio-keys: enforce node names to match all properties Krzysztof Kozlowski
2022-06-03 18:30 ` Rob Herring
2022-06-04 3:04 ` Jeff LaBundy [this message]
2022-06-05 15:12 ` Krzysztof Kozlowski
2022-06-05 16:28 ` Jeff LaBundy
2022-06-03 10:16 ` [RFC PATCH 2/2] dt-bindings: input: gpio-keys: document label and autorepeat properties Krzysztof Kozlowski
2022-06-03 16:43 ` Dmitry Torokhov
2022-06-05 15:15 ` Krzysztof Kozlowski
2022-06-08 21:20 ` Rob Herring
2022-06-09 6:52 ` Krzysztof Kozlowski
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=20220604030455.GA12308@nixie71 \
--to=jeff@labundy.com \
--cc=andreas@kemnade.info \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.torokhov@gmail.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=krzysztof.kozlowski@linaro.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=newbie13xd@gmail.com \
--cc=robh+dt@kernel.org \
/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).