From: "Théo Lebrun" <theo.lebrun@bootlin.com>
To: "Krzysztof Kozlowski" <krzysztof.kozlowski@linaro.org>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Michael Turquette" <mturquette@baylibre.com>,
"Stephen Boyd" <sboyd@kernel.org>,
"Philipp Zabel" <p.zabel@pengutronix.de>,
"Linus Walleij" <linus.walleij@linaro.org>
Cc: <linux-mips@vger.kernel.org>, <devicetree@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <linux-clk@vger.kernel.org>,
<linux-gpio@vger.kernel.org>,
"Vladimir Kondratiev" <vladimir.kondratiev@mobileye.com>,
"Gregory CLEMENT" <gregory.clement@bootlin.com>,
"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
"Tawfik Bayouk" <tawfik.bayouk@mobileye.com>
Subject: Re: [PATCH 02/11] dt-bindings: clock: mobileye,eyeq5-clk: add EyeQ6L and EyeQ6H
Date: Thu, 11 Apr 2024 15:49:34 +0200 [thread overview]
Message-ID: <D0HCAV6APTSD.WKGPESJ29D8A@bootlin.com> (raw)
In-Reply-To: <29ece6c8-ddf4-4dcd-b5b4-1cad8bc858d3@linaro.org>
Hello Krzysztof,
On Thu Apr 11, 2024 at 8:14 AM CEST, Krzysztof Kozlowski wrote:
> On 10/04/2024 19:12, Théo Lebrun wrote:
> > Add bindings describing EyeQ6L and EyeQ6H clock controllers.
> > Add constants to index clocks.
> >
> > Bindings are conditional for two reasons:
> > - Some compatibles expose a single clock; they do not take clock cells.
> > - All compatibles take a PLLs resource, not all take others (aimed at
> > divider clocks). Those that only take a resource for PLLs do not
> > require named resources.
> >
> > Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
> > ---
> > .../bindings/clock/mobileye,eyeq5-clk.yaml | 103 ++++++++++++++++++---
> > MAINTAINERS | 2 +
> > include/dt-bindings/clock/mobileye,eyeq5-clk.h | 21 +++++
> > 3 files changed, 113 insertions(+), 13 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/clock/mobileye,eyeq5-clk.yaml b/Documentation/devicetree/bindings/clock/mobileye,eyeq5-clk.yaml
[...]
> > properties:
> > compatible:
> > - const: mobileye,eyeq5-clk
> > + enum:
> > + - mobileye,eyeq5-clk
> > + - mobileye,eyeq6l-clk
> > + - mobileye,eyeq6h-central-clk
> > + - mobileye,eyeq6h-west-clk
> > + - mobileye,eyeq6h-east-clk
> > + - mobileye,eyeq6h-south-clk
> > + - mobileye,eyeq6h-ddr0-clk
> > + - mobileye,eyeq6h-ddr1-clk
> > + - mobileye,eyeq6h-acc-clk
> >
> > - reg:
> > - maxItems: 2
> > + reg: true
>
> No, you must leave widest constraints here.
Noted, will do.
> > - reg-names:
> > - items:
> > - - const: plls
> > - - const: ospi
> > + reg-names: true
>
> No, you must leave widest constraints here.
Noted, will do.
> > "#clock-cells":
> > - const: 1
> > + enum: [0, 1]
>
> Looks like you squash here quite different devices...
They are the same controllers but some only expose a single clock. It is
EyeQ6H that has 7 OLB instances, so some don't deal with many clocks.
I started with a more generic approach of #clock-cells = <1> and only
have index zero available for those that have a single clock.
I am not a fan of this however.
> > clocks:
> > maxItems: 1
> > @@ -43,9 +49,80 @@ properties:
> > required:
> > - compatible
> > - reg
> > - - reg-names
> > - "#clock-cells"
> > - clocks
> > - clock-names
> >
> > +allOf:
> > + # "mobileye,eyeq5-clk" provides:
> > + # - PLLs and,
> > + # - One divider clock related to ospi.
> > + - if:
> > + properties:
> > + compatible:
> > + const: mobileye,eyeq5-clk
> > + then:
> > + properties:
> > + reg:
> > + minItems: 2
> > + maxItems: 2
> > + reg-names:
> > + minItems: 2
> > + maxItems: 2
>
> So any name is now valid? Like "yellow-pony"?
I do not understand what implies this. Below "items: enum: [...]"
ensures only two allowed values. dtbs_check agrees:
⟩ git diff
diff --git a/arch/mips/boot/dts/mobileye/eyeq5.dtsi
b/arch/mips/boot/dts/mobileye/eyeq5.dtsi
index 8d4f65ec912d..5031eb8b4270 100644
--- a/arch/mips/boot/dts/mobileye/eyeq5.dtsi
+++ b/arch/mips/boot/dts/mobileye/eyeq5.dtsi
@@ -126,7 +126,7 @@ reset: reset-controller@e00000 {
clocks: clock-controller@e0002c {
compatible = "mobileye,eyeq5-clk";
reg = <0x02c 0x50>, <0x11c 0x04>;
- reg-names = "plls", "ospi";
+ reg-names = "plls", "yellow-pony";
#clock-cells = <1>;
clocks = <&xtal>;
clock-names = "ref";
⟩ make dtbs_check DT_SCHEMA_FILES=mobileye DT_CHECKER_FLAGS=-m
UPD include/config/kernel.release
DTC_CHK arch/mips/boot/dts/mobileye/eyeq5-epm5.dtb
arch/mips/boot/dts/mobileye/eyeq5-epm5.dtb: system-controller@e00000:
clock-controller@e0002c:reg-names:1:
'yellow-pony' is not one of ['plls', 'ospi']
from schema $id:
http://devicetree.org/schemas/soc/mobileye/mobileye,eyeq5-olb.yaml#
> > + items:
> > + enum: [ plls, ospi ]
> > + required:
> > + - reg-names
> > +
> > + # "mobileye,eyeq6h-south-clk" provides:
> > + # - PLLs and,
> > + # - Four divider clocks related to emmc, ospi and tsu.
> > + - if:
> > + properties:
> > + compatible:
> > + const: mobileye,eyeq6h-south-clk
> > + then:
> > + properties:
> > + reg:
> > + minItems: 4
> > + maxItems: 4
> > + reg-names:
> > + minItems: 4
> > + maxItems: 4
> > + items:
> > + enum: [ plls, emmc, ospi, tsu ]
> > + required:
> > + - reg-names
> > +
> > + # Other compatibles only provide PLLs. Do not ask for named resources.
> > + - if:
> > + not:
> > + required:
> > + - reg-names
> > + then:
> > + properties:
> > + reg:
> > + minItems: 1
> > + maxItems: 1
>
> No, just restrict properly reg per variant.
Noted, will do.
> > + reg-names: false
>
> That's redundant. Drop entire if.
Ah, yes. Will fix that.
> > +
> > + # Some compatibles provide a single clock; they do not take a clock cell.
> > + - if:
> > + properties:
> > + compatible:
> > + enum:
> > + - mobileye,eyeq6h-central-clk
> > + - mobileye,eyeq6h-west-clk
> > + - mobileye,eyeq6h-east-clk
> > + - mobileye,eyeq6h-ddr0-clk
> > + - mobileye,eyeq6h-ddr1-clk
> > + then:
> > + properties:
> > + "#clock-cells":
> > + const: 0
>
> Wait, so you define device-per-clock? That's a terrible idea. We also
> discussed it many times and it was rejected many times.
>
> You have one device, not 5.
Each region must be a syscon to make its various registers accessible to
drivers that'll need it. Following that, I have a hard time seeing what
would be the DT structure of 7 OLB system-controllers but a single
clock node?
Regards,
--
Théo Lebrun, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2024-04-11 13:49 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-10 17:12 [PATCH 00/11] Add Mobileye EyeQ system controller support (clk, reset, pinctrl) Théo Lebrun
2024-04-10 17:12 ` [PATCH 01/11] dt-bindings: soc: mobileye: add EyeQ5 OLB system controller Théo Lebrun
2024-04-10 18:52 ` Rob Herring
2024-04-11 9:19 ` Théo Lebrun
2024-04-11 3:29 ` Stephen Boyd
2024-04-10 17:12 ` [PATCH 02/11] dt-bindings: clock: mobileye,eyeq5-clk: add EyeQ6L and EyeQ6H Théo Lebrun
2024-04-11 6:14 ` Krzysztof Kozlowski
2024-04-11 13:49 ` Théo Lebrun [this message]
2024-04-11 15:02 ` Krzysztof Kozlowski
2024-04-10 17:12 ` [PATCH 03/11] dt-bindings: reset: mobileye,eyeq5-reset: " Théo Lebrun
2024-04-11 6:14 ` Krzysztof Kozlowski
2024-04-11 14:04 ` Théo Lebrun
2024-04-11 15:05 ` Krzysztof Kozlowski
2024-04-10 17:12 ` [PATCH 04/11] clk: divider: Introduce CLK_DIVIDER_EVEN_INTEGERS flag Théo Lebrun
2024-04-11 3:06 ` Stephen Boyd
2024-04-11 10:14 ` Théo Lebrun
2024-04-12 5:19 ` Stephen Boyd
2024-04-10 17:12 ` [PATCH 05/11] clk: eyeq: add driver Théo Lebrun
2024-04-11 3:22 ` Stephen Boyd
2024-04-11 10:46 ` Théo Lebrun
2024-04-12 5:46 ` Stephen Boyd
2024-04-17 10:18 ` Théo Lebrun
2024-04-10 17:12 ` [PATCH 06/11] reset: eyeq: add platform driver Théo Lebrun
2024-04-10 17:12 ` [PATCH 07/11] pinctrl: eyeq5: " Théo Lebrun
2024-04-10 17:12 ` [PATCH 08/11] MIPS: mobileye: eyeq5: add OLB syscon node Théo Lebrun
2024-04-11 6:15 ` Krzysztof Kozlowski
2024-04-11 14:34 ` Théo Lebrun
2024-04-11 15:07 ` Krzysztof Kozlowski
2024-04-17 7:53 ` Théo Lebrun
2024-04-10 17:12 ` [PATCH 09/11] MIPS: mobileye: eyeq5: use OLB clocks controller node Théo Lebrun
2024-04-10 17:12 ` [PATCH 10/11] MIPS: mobileye: eyeq5: add OLB reset " Théo Lebrun
2024-04-10 17:12 ` [PATCH 11/11] MIPS: mobileye: eyeq5: add pinctrl node & pinmux function nodes 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=D0HCAV6APTSD.WKGPESJ29D8A@bootlin.com \
--to=theo.lebrun@bootlin.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=gregory.clement@bootlin.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=krzysztof.kozlowski@linaro.org \
--cc=linus.walleij@linaro.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=p.zabel@pengutronix.de \
--cc=robh@kernel.org \
--cc=sboyd@kernel.org \
--cc=tawfik.bayouk@mobileye.com \
--cc=thomas.petazzoni@bootlin.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.