linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Rob Herring <robh@kernel.org>
To: Jeff LaBundy <jeff@labundy.com>
Cc: dmitry.torokhov@gmail.com, linux-input@vger.kernel.org,
	devicetree@vger.kernel.org, krzysztof.kozlowski+dt@linaro.org,
	conor+dt@kernel.org
Subject: Re: [PATCH v2 1/2] dt-bindings: input: Add bindings for Azoteq IQS7210A/7211A/E
Date: Wed, 14 Jun 2023 12:51:10 -0600	[thread overview]
Message-ID: <20230614185110.GA2530944-robh@kernel.org> (raw)
In-Reply-To: <ZIe/Ti7u+2VHlahA@nixie71>

On Mon, Jun 12, 2023 at 07:58:54PM -0500, Jeff LaBundy wrote:
> Hi Rob,
> 
> On Mon, Jun 12, 2023 at 09:29:25AM -0600, Rob Herring wrote:
> > On Sun, Jun 11, 2023 at 08:06:24PM -0500, Jeff LaBundy wrote:
> > > Hi Rob,
> > > 
> > > On Fri, Jun 09, 2023 at 08:25:38AM -0600, Rob Herring wrote:
> > > > On Mon, May 29, 2023 at 07:33:47PM -0500, Jeff LaBundy wrote:
> > > > > Add bindings for the Azoteq IQS7210A/7211A/E family of trackpad/
> > > > > touchscreen controllers.
> > > > > 
> > > > > Signed-off-by: Jeff LaBundy <jeff@labundy.com>
> > > > > ---
> > > > > Changes in v2:
> > > > >  - Renamed 'azoteq,default-comms' to 'azoteq,forced-comms-default' and redefined
> > > > >    0, 1 and 2 as unspecified, 0 and 1, respectively
> > > > >  - Defined ATI upon its first occurrence
> > > > >  - Redefined 'azoteq,gesture-angle' in units of degrees
> > > > >  - Declared 'azoteq,rx-enable' to depend upon 'azoteq,tx-enable' within the
> > > > >    'trackpad' node
> > > > > 
> > > > > Hi Rob,
> > > > > 
> > > > > I attempted to reference existing properties from a common binding [1] as per
> > > > > your feedback in [2], however 'make DT_CHECKER_FLAGS=-m dt_binding_check' fails
> > > > > with the message 'Vendor specific properties must have a type and description
> > > > > unless they have a defined, common suffix.'
> > > > 
> > > > Is that because you have differing constraints in each case?
> > > 
> > > In the failing example [2], I have started with a simple boolean that carries
> > > nothing but a type and description. From the new azoteq,common.yaml:
> > > 
> > > properties:
> > >   [...]
> > > 
> > >   azoteq,use-prox:
> > >     type: boolean
> > >     description: foo
> > > 
> > > And from the first consumer:
> > > 
> > > patternProperties:
> > >   "^hall-switch-(north|south)$":
> > >     type: object
> > >     allOf:
> > >       - $ref: input.yaml#
> > >       - $ref: azoteq,common.yaml#
> > >     description: bar
> > > 
> > >     properties:
> > >       linux,code: true
> > >       azoteq,use-prox: true
> > > 
> > > However, the tooling presents the following:
> > > 
> > >   CHKDT   Documentation/devicetree/bindings/processed-schema.json
> > > /home/jlabundy/work/linux/Documentation/devicetree/bindings/input/iqs62x-keys.yaml: patternProperties:^hall-switch-(north|south)$:properties:azoteq,use-prox: True is not of type 'object'
> > > 	hint: Vendor specific properties must have a type and description unless they have a defined, common suffix.
> > > 	from schema $id: http://devicetree.org/meta-schemas/vendor-props.yaml#
> > > 
> > > [...]
> > > 
> > > I am committed to addressing your feedback; to help me do so, can you help me
> > > identify what I've done wrong, and/or point me to an example that successfully
> > > passes dt_binding_check?
> > 
> > You're not doing anything wrong. There's 2 options here. The first is we 
> > could just relax the check to allow boolean schema for vendor 
> > properties. The main issue with that is we then have to look for that 
> > improperly used and it doesn't help if you do have additional 
> > constraints to add on top of the common definition. The former can 
> > mostly be addressed by checking there is a type associated with the 
> > property. I'm going to look into adding that.
> 
> Thank you for your feedback. I started with a boolean property at first to
> simply test the idea before moving too far forward. In reality however, the
> common binding has many uint32's and uint32-arrays as well, often with
> different constraints among consumers. For this option to be effective, it
> would need to be extended to all types IMO.
> 
> > 
> > Alternatively, you could drop listing the properties and 
> > use 'unevaluatedProperties'. That's not quite equal to what you have. 
> > Presumably, you have 'additionalProperties' in this case, so listing 
> > them serves the purpose of defining what subset of properties each node 
> > uses from the referenced schema. We frequently don't worry if there are 
> > common properties not used by a specific schema. This also wouldn't work 
> > if you have additional constraints to add.
> 
> Because of varying constraints among each consumer, I do not believe this
> option is viable either.
> 
> I also think adopting 'unevaluatedProperties' here would be confusing from
> a customer perspective in this case. The new common binding has dozens of
> properties for which some are shared between devices A and B but not C, or
> devices B and C but not A.
> 
> Without each device's binding explicitly opting in for supported properties,
> it's difficult for customers to know what is supported for a given device.
> These particular devices are highly configurable yet void of nonvolatile
> memory, so there is simply no way around having so many properties. Most are
> touched in some way throughout various downstream applications.
> 
> Therefore I'd like to propose option (3), which is to move forward with patch
> [1/2] as-is and decouple the merging of this driver from future enhancements
> to the tooling. While patch [1/2] is admittedly a big binding with some repeat
> descriptions, none of the duplicate properties introduce a conflicting type.
> 
> If in the future option (1) can support all property types and handle varying
> constraints among consumers, I would be happy to be one of the first guinea
> pigs. Does this path seem like a reasonable compromise?

Yes, that's fine.

Rob

  reply	other threads:[~2023-06-14 18:51 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-30  0:31 [PATCH v2 0/2] Add support for Azoteq IQS7210A/7211A/E Jeff LaBundy
2023-05-30  0:33 ` [PATCH v2 1/2] dt-bindings: input: Add bindings " Jeff LaBundy
2023-06-09 14:25   ` Rob Herring
2023-06-12  1:06     ` Jeff LaBundy
2023-06-12 15:29       ` Rob Herring
2023-06-13  0:58         ` Jeff LaBundy
2023-06-14 18:51           ` Rob Herring [this message]
2023-06-14 18:52   ` Rob Herring
2023-05-30  0:34 ` [PATCH v2 2/2] Input: add support " Jeff LaBundy
2023-07-12 21:26 ` [PATCH v2 0/2] Add " Jeff LaBundy
2023-07-12 21:34   ` Dmitry Torokhov

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=20230614185110.GA2530944-robh@kernel.org \
    --to=robh@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=jeff@labundy.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-input@vger.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).