mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Théo Lebrun" <theo.lebrun@bootlin.com>
To: "Rob Herring" <robh@kernel.org>
Cc: "Linus Walleij" <linus.walleij@linaro.org>,
	"Andi Shyti" <andi.shyti@kernel.org>,
	"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Thomas Bogendoerfer" <tsbogend@alpha.franken.de>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-i2c@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-mips@vger.kernel.org>,
	"Gregory Clement" <gregory.clement@bootlin.com>,
	"Vladimir Kondratiev" <vladimir.kondratiev@mobileye.com>,
	"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
	"Tawfik Bayouk" <tawfik.bayouk@mobileye.com>
Subject: Re: [PATCH v2 01/11] dt-bindings: i2c: nomadik: add mobileye,eyeq5-i2c bindings and example
Date: Fri, 01 Mar 2024 16:47:34 +0100	[thread overview]
Message-ID: <CZIJ4VQULK8C.QA1KAO3BTVR0@bootlin.com> (raw)
In-Reply-To: <20240301151146.GA2114576-robh@kernel.org>

Hello,

On Fri Mar 1, 2024 at 4:11 PM CET, Rob Herring wrote:
> On Thu, Feb 29, 2024 at 07:10:49PM +0100, Théo Lebrun wrote:
> > Add EyeQ5 bindings to the existing Nomadik I2C dt-bindings. Add the
> > EyeQ5-specific property behind a conditional. Add an example for this
> > compatible.
> > 
> > Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
> > ---
> >  .../devicetree/bindings/i2c/st,nomadik-i2c.yaml    | 48 ++++++++++++++++++++--
> >  1 file changed, 44 insertions(+), 4 deletions(-)
> > 
> > diff --git a/Documentation/devicetree/bindings/i2c/st,nomadik-i2c.yaml b/Documentation/devicetree/bindings/i2c/st,nomadik-i2c.yaml
> > index 16024415a4a7..2d9d5b276762 100644
> > --- a/Documentation/devicetree/bindings/i2c/st,nomadik-i2c.yaml
> > +++ b/Documentation/devicetree/bindings/i2c/st,nomadik-i2c.yaml
> > @@ -14,9 +14,6 @@ description: The Nomadik I2C host controller began its life in the ST
> >  maintainers:
> >    - Linus Walleij <linus.walleij@linaro.org>
> >  
> > -allOf:
> > -  - $ref: /schemas/i2c/i2c-controller.yaml#
> > -
> >  # Need a custom select here or 'arm,primecell' will match on lots of nodes
> >  select:
> >    properties:
> > @@ -24,6 +21,7 @@ select:
> >        contains:
> >          enum:
> >            - st,nomadik-i2c
> > +          - mobileye,eyeq5-i2c
> >    required:
> >      - compatible
> >  
> > @@ -39,6 +37,10 @@ properties:
> >            - const: stericsson,db8500-i2c
> >            - const: st,nomadik-i2c
> >            - const: arm,primecell
> > +      # The variant found on Mobileye EyeQ5
>
> Kind of obvious from the compatible string, but maybe you are keeping 
> the existing style...

I indeed kept the existing style.
Ping me if you want this removed!

> > +      - items:
> > +          - const: mobileye,eyeq5-i2c
> > +          - const: arm,primecell
> >  
> >    reg:
> >      maxItems: 1
> > @@ -55,7 +57,7 @@ properties:
> >        - items:
> >            - const: mclk
> >            - const: apb_pclk
> > -      # Clock name in DB8500
> > +      # Clock name in DB8500 or EyeQ5
> >        - items:
> >            - const: i2cclk
> >            - const: apb_pclk
> > @@ -70,6 +72,16 @@ properties:
> >      minimum: 1
> >      maximum: 400000
> >  
> > +  mobileye,olb:
> > +    $ref: /schemas/types.yaml#/definitions/phandle-array
> > +    items:
> > +      - items:
> > +          - description: Phandle to OLB system controller node.
> > +          - description: Platform-wide controller ID (integer starting from zero).
>
> Rather than a made up ID, just store the shift value you ultimately 
> need.

Issue with storing the shift value is that you also need to know what
value to put in that field. It's an enum mapping the I2C speed which
isn't found in DT.

> These properties are fragile because they break if anything that's not 
> defined in DT changes whether that's register offset, bit offset, 
> bitfield size or values. Or also if there are additional fields to 
> access.

My take is that it is better to have it all either in DT or in driver.
Having a mix of both is a mess when debugging. If something breaks it
is a driver bug; such bugs get fixed in driver code. That way DT
doesn't know about it and doesn't have to be changed.

Putting shifts in DT is an abstraction that ends up being unhelpful. You
split hardware knowledge half in DT (register offset and/or mask), half
in driver (value to put in the field). We'd rather have it all in
driver code.

Next hardware revision will be more complex with potentially fields
split across registers. A shift value wouldn't cut it. A new
compatible + made up ID allows accomodating for that. That way we have
homogeneity across compatibles.

Have a nice day,

--
Théo Lebrun, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


  reply	other threads:[~2024-03-01 15:47 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-29 18:10 [PATCH v2 00/11] Add Mobileye EyeQ5 support to the Nomadik I2C controller & use hrtimers for timeouts Théo Lebrun
2024-02-29 18:10 ` [PATCH v2 01/11] dt-bindings: i2c: nomadik: add mobileye,eyeq5-i2c bindings and example Théo Lebrun
2024-02-29 19:26   ` Rob Herring
2024-03-01 15:11   ` Rob Herring
2024-03-01 15:47     ` Théo Lebrun [this message]
2024-02-29 18:10 ` [PATCH v2 02/11] dt-bindings: hwmon: lm75: use common hwmon schema Théo Lebrun
2024-02-29 19:26   ` Rob Herring
2024-03-01  6:37   ` Krzysztof Kozlowski
2024-03-01  6:53     ` Guenter Roeck
2024-03-01  9:41       ` Théo Lebrun
2024-03-01 10:13         ` Krzysztof Kozlowski
2024-03-01 10:44           ` Théo Lebrun
2024-03-01 11:35             ` Krzysztof Kozlowski
2024-03-01 14:09               ` Théo Lebrun
2024-03-01 14:13                 ` Krzysztof Kozlowski
2024-03-01 15:35             ` Rob Herring
2024-03-01 15:52               ` Théo Lebrun
2024-03-01 15:38       ` Rob Herring
2024-03-01 19:21   ` Guenter Roeck
2024-02-29 18:10 ` [PATCH v2 03/11] i2c: nomadik: rename private struct pointers from dev to priv Théo Lebrun
2024-03-02  0:16   ` [SPAM] " Andi Shyti
2024-03-04  9:13   ` Wolfram Sang
2024-02-29 18:10 ` [PATCH v2 04/11] i2c: nomadik: simplify IRQ masking logic Théo Lebrun
2024-03-02  0:39   ` [SPAM] " Andi Shyti
2024-03-04  9:46     ` Théo Lebrun
2024-02-29 18:10 ` [PATCH v2 05/11] i2c: nomadik: use bitops helpers Théo Lebrun
2024-03-02  1:31   ` Andi Shyti
2024-03-04 10:00     ` Théo Lebrun
2024-02-29 18:10 ` [PATCH v2 06/11] i2c: nomadik: support short xfer timeouts using waitqueue & hrtimer Théo Lebrun
2024-03-04  9:18   ` Wolfram Sang
2024-03-04 10:14     ` Théo Lebrun
2024-03-04 11:37       ` Wolfram Sang
2024-03-04 13:54   ` [SPAM] " Andi Shyti
2024-03-04 14:32     ` Théo Lebrun
2024-03-04 15:09       ` Andi Shyti
2024-02-29 18:10 ` [PATCH v2 07/11] i2c: nomadik: replace jiffies by ktime for FIFO flushing timeout Théo Lebrun
2024-03-04  9:23   ` Wolfram Sang
2024-03-04 13:55   ` Andi Shyti
2024-02-29 18:10 ` [PATCH v2 08/11] i2c: nomadik: fetch i2c-transfer-timeout-us property from devicetree Théo Lebrun
2024-02-29 21:04   ` Linus Walleij
2024-03-04  9:25   ` Wolfram Sang
2024-03-04 13:57   ` Andi Shyti
2024-02-29 18:10 ` [PATCH v2 09/11] i2c: nomadik: support Mobileye EyeQ5 I2C controller Théo Lebrun
2024-02-29 21:08   ` Linus Walleij
2024-03-04  9:27   ` Wolfram Sang
2024-03-04 10:25     ` Théo Lebrun
2024-03-04 14:08   ` Andi Shyti
2024-03-04 14:53     ` Théo Lebrun
2024-02-29 18:10 ` [PATCH v2 10/11] MIPS: mobileye: eyeq5: add 5 I2C controller nodes Théo Lebrun
2024-02-29 21:09   ` Linus Walleij
2024-02-29 18:10 ` [PATCH v2 11/11] MIPS: mobileye: eyeq5: add evaluation board I2C temp sensor Théo Lebrun
2024-02-29 21:09   ` Linus Walleij
2024-03-06  1:49 ` [PATCH v2 00/11] Add Mobileye EyeQ5 support to the Nomadik I2C controller & use hrtimers for timeouts Andi Shyti
2024-03-06  9:34   ` Théo Lebrun

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=CZIJ4VQULK8C.QA1KAO3BTVR0@bootlin.com \
    --to=theo.lebrun@bootlin.com \
    --cc=andi.shyti@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gregory.clement@bootlin.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=robh@kernel.org \
    --cc=tawfik.bayouk@mobileye.com \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=tsbogend@alpha.franken.de \
    --cc=vladimir.kondratiev@mobileye.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

all inboxes | Powered by JetHome®