Add bindings for EyeQ6L and EyeQ6H reset controllers.
Some controllers host a single domain, meaning a single cell is enough.
We do not enforce reg-names for such nodes.
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
---
.../bindings/reset/mobileye,eyeq5-reset.yaml | 88 ++++++++++++++++++----
MAINTAINERS | 1 +
2 files changed, 74 insertions(+), 15 deletions(-)
diff --git a/Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml b/Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml
index 062b4518347b..799bcf15bed9 100644
--- a/Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml
+++ b/Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml
@@ -4,11 +4,13 @@
$id: http://devicetree.org/schemas/reset/mobileye,eyeq5-reset.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
-title: Mobileye EyeQ5 reset controller
+title: Mobileye EyeQ reset controller
description:
- The EyeQ5 reset driver handles three reset domains. Its registers live in a
- shared region called OLB.
+ EyeQ reset controller handles one or more reset domains. They live in shared
+ regions called OLB. EyeQ5 and EyeQ6L host one OLB each, each with one reset
+ instance. EyeQ6H hosts 7 OLB regions; three of those (west, east,
+ accelerator) host reset controllers. West and east are duplicates.
maintainers:
- Grégory Clement <gregory.clement@bootlin.com>
@@ -17,27 +19,83 @@ maintainers:
properties:
compatible:
- const: mobileye,eyeq5-reset
+ enum:
+ - mobileye,eyeq5-reset
+ - mobileye,eyeq6l-reset
+ - mobileye,eyeq6h-we-reset
+ - mobileye,eyeq6h-acc-reset
- reg:
- maxItems: 3
+ reg: true
- reg-names:
- items:
- - const: d0
- - const: d1
- - const: d2
+ reg-names: true
"#reset-cells":
- const: 2
description:
- The first cell is the domain (0 to 2 inclusive) and the second one is the
- reset index inside that domain.
+ First cell is domain, second is reset index inside that domain. If
+ controller has a single domain, first cell is implicitly zero.
+ enum: [ 1, 2 ]
required:
- compatible
- reg
- - reg-names
- "#reset-cells"
+allOf:
+ # EyeQ5 and EyeQ6L have multiple domains, other compatibles have one.
+ # Multiple domains means named resources and two reset cells.
+ # Single domain means a single unnamed resource and one reset cell.
+ - if:
+ properties:
+ compatible:
+ enum:
+ - mobileye,eyeq5-reset
+ - mobileye,eyeq6l-reset
+ then:
+ properties:
+ "#reset-cells":
+ const: 2
+ required:
+ - reg-names
+ else:
+ properties:
+ reg:
+ maxItems: 1
+ reg-names: false
+ "#reset-cells":
+ const: 1
+
+ # EyeQ5 has three domains.
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: mobileye,eyeq5-reset
+ then:
+ properties:
+ reg:
+ minItems: 3
+ maxItems: 3
+ reg-names:
+ minItems: 3
+ maxItems: 3
+ items:
+ enum: [ d0, d1, d2 ]
+
+ # EyeQ6L has two domains.
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: mobileye,eyeq6l-reset
+ then:
+ properties:
+ reg:
+ minItems: 2
+ maxItems: 2
+ reg-names:
+ minItems: 2
+ maxItems: 2
+ items:
+ enum: [ d0, d1 ]
+
additionalProperties: false
diff --git a/MAINTAINERS b/MAINTAINERS
index f5a488331b38..42553da10be9 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -14927,6 +14927,7 @@ L: linux-mips@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/clock/mobileye,eyeq5-clk.yaml
F: Documentation/devicetree/bindings/mips/mobileye.yaml
+F: Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml
F: Documentation/devicetree/bindings/soc/mobileye/
F: arch/mips/boot/dts/mobileye/
F: arch/mips/configs/eyeq5_defconfig
--
2.44.0
On 10/04/2024 19:12, Théo Lebrun wrote: > Add bindings for EyeQ6L and EyeQ6H reset controllers. > > Some controllers host a single domain, meaning a single cell is enough. > We do not enforce reg-names for such nodes. > > Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com> > --- > .../bindings/reset/mobileye,eyeq5-reset.yaml | 88 ++++++++++++++++++---- > MAINTAINERS | 1 + > 2 files changed, 74 insertions(+), 15 deletions(-) > > diff --git a/Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml b/Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml > index 062b4518347b..799bcf15bed9 100644 > --- a/Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml > +++ b/Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml > @@ -4,11 +4,13 @@ > $id: http://devicetree.org/schemas/reset/mobileye,eyeq5-reset.yaml# > $schema: http://devicetree.org/meta-schemas/core.yaml# > > -title: Mobileye EyeQ5 reset controller > +title: Mobileye EyeQ reset controller > > description: > - The EyeQ5 reset driver handles three reset domains. Its registers live in a > - shared region called OLB. > + EyeQ reset controller handles one or more reset domains. They live in shared > + regions called OLB. EyeQ5 and EyeQ6L host one OLB each, each with one reset > + instance. EyeQ6H hosts 7 OLB regions; three of those (west, east, > + accelerator) host reset controllers. West and east are duplicates. > > maintainers: > - Grégory Clement <gregory.clement@bootlin.com> > @@ -17,27 +19,83 @@ maintainers: > > properties: > compatible: > - const: mobileye,eyeq5-reset > + enum: > + - mobileye,eyeq5-reset > + - mobileye,eyeq6l-reset > + - mobileye,eyeq6h-we-reset > + - mobileye,eyeq6h-acc-reset > > - reg: > - maxItems: 3 > + reg: true Same mistakes. Please open existing bindings with multiple variants, e.g. some Qualcomm, and take a look how it is done there. Best regards, Krzysztof
Hello,
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 for EyeQ6L and EyeQ6H reset controllers.
> >
> > Some controllers host a single domain, meaning a single cell is enough.
> > We do not enforce reg-names for such nodes.
> >
> > Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
> > ---
> > .../bindings/reset/mobileye,eyeq5-reset.yaml | 88 ++++++++++++++++++----
> > MAINTAINERS | 1 +
> > 2 files changed, 74 insertions(+), 15 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml b/Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml
> > index 062b4518347b..799bcf15bed9 100644
> > --- a/Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml
> > +++ b/Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml
> > @@ -4,11 +4,13 @@
> > $id: http://devicetree.org/schemas/reset/mobileye,eyeq5-reset.yaml#
> > $schema: http://devicetree.org/meta-schemas/core.yaml#
> >
> > -title: Mobileye EyeQ5 reset controller
> > +title: Mobileye EyeQ reset controller
> >
> > description:
> > - The EyeQ5 reset driver handles three reset domains. Its registers live in a
> > - shared region called OLB.
> > + EyeQ reset controller handles one or more reset domains. They live in shared
> > + regions called OLB. EyeQ5 and EyeQ6L host one OLB each, each with one reset
> > + instance. EyeQ6H hosts 7 OLB regions; three of those (west, east,
> > + accelerator) host reset controllers. West and east are duplicates.
> >
> > maintainers:
> > - Grégory Clement <gregory.clement@bootlin.com>
> > @@ -17,27 +19,83 @@ maintainers:
> >
> > properties:
> > compatible:
> > - const: mobileye,eyeq5-reset
> > + enum:
> > + - mobileye,eyeq5-reset
> > + - mobileye,eyeq6l-reset
> > + - mobileye,eyeq6h-we-reset
> > + - mobileye,eyeq6h-acc-reset
> >
> > - reg:
> > - maxItems: 3
> > + reg: true
>
> Same mistakes. Please open existing bindings with multiple variants,
> e.g. some Qualcomm, and take a look how it is done there.
Thanks for the pointer to good example, that is useful! So if we take
one random binding matching
Documentation/devicetree/bindings/clock/qcom,*.yaml and that contains
the "reg-names" string, we see:
reg:
items:
- description: LPASS qdsp6ss register
- description: LPASS top-cc register
reg-names:
items:
- const: qdsp6ss
- const: top_cc
I don't understand one thing; this doesn't tell you:
You can provide 2 MMIO blocks, which must be qdsp6ss and top_cc.
But it tells you:
Block zero must be qdsp6ss.
Block one must be top_cc.
If we do that I do not get the point of reg-names; we put more
information in our devicetree that is in any case imposed.
This is why I went with a different approach looking like:
reg:
minItems: 2
maxItems: 2
reg-names:
minItems: 2
maxItems: 2
items:
enum: [ d0, d1 ]
I know this is not perfect, but at least you don't enforce an order for
no reason. If "items: const..." approach should be taken, then I'll
remove reg-names which bring no benefit.
Thanks Krzysztof,
--
Théo Lebrun, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
On 11/04/2024 16:04, Théo Lebrun wrote: > Hello, > > 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 for EyeQ6L and EyeQ6H reset controllers. >>> >>> Some controllers host a single domain, meaning a single cell is enough. >>> We do not enforce reg-names for such nodes. >>> >>> Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com> >>> --- >>> .../bindings/reset/mobileye,eyeq5-reset.yaml | 88 ++++++++++++++++++---- >>> MAINTAINERS | 1 + >>> 2 files changed, 74 insertions(+), 15 deletions(-) >>> >>> diff --git a/Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml b/Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml >>> index 062b4518347b..799bcf15bed9 100644 >>> --- a/Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml >>> +++ b/Documentation/devicetree/bindings/reset/mobileye,eyeq5-reset.yaml >>> @@ -4,11 +4,13 @@ >>> $id: http://devicetree.org/schemas/reset/mobileye,eyeq5-reset.yaml# >>> $schema: http://devicetree.org/meta-schemas/core.yaml# >>> >>> -title: Mobileye EyeQ5 reset controller >>> +title: Mobileye EyeQ reset controller >>> >>> description: >>> - The EyeQ5 reset driver handles three reset domains. Its registers live in a >>> - shared region called OLB. >>> + EyeQ reset controller handles one or more reset domains. They live in shared >>> + regions called OLB. EyeQ5 and EyeQ6L host one OLB each, each with one reset >>> + instance. EyeQ6H hosts 7 OLB regions; three of those (west, east, >>> + accelerator) host reset controllers. West and east are duplicates. >>> >>> maintainers: >>> - Grégory Clement <gregory.clement@bootlin.com> >>> @@ -17,27 +19,83 @@ maintainers: >>> >>> properties: >>> compatible: >>> - const: mobileye,eyeq5-reset >>> + enum: >>> + - mobileye,eyeq5-reset >>> + - mobileye,eyeq6l-reset >>> + - mobileye,eyeq6h-we-reset >>> + - mobileye,eyeq6h-acc-reset >>> >>> - reg: >>> - maxItems: 3 >>> + reg: true >> >> Same mistakes. Please open existing bindings with multiple variants, >> e.g. some Qualcomm, and take a look how it is done there. > > Thanks for the pointer to good example, that is useful! So if we take > one random binding matching > Documentation/devicetree/bindings/clock/qcom,*.yaml and that contains > the "reg-names" string, we see: > > reg: > items: > - description: LPASS qdsp6ss register > - description: LPASS top-cc register > > reg-names: > items: > - const: qdsp6ss > - const: top_cc > > I don't understand one thing; this doesn't tell you: > > You can provide 2 MMIO blocks, which must be qdsp6ss and top_cc. No, it tells you exactly this, with difference: s/can/must/ > > But it tells you: > > Block zero must be qdsp6ss. > Block one must be top_cc. > > If we do that I do not get the point of reg-names; we put more > information in our devicetree that is in any case imposed. Same old argument. Order is not flexible. Order is fixed. Why do you need names? I don't need, it's purely your optional choice. Maybe you find it more readable, up to you. > > This is why I went with a different approach looking like: > > reg: > minItems: 2 > maxItems: 2 > reg-names: > minItems: 2 > maxItems: 2 > items: > enum: [ d0, d1 ] No, order is fixed. > > I know this is not perfect, but at least you don't enforce an order for > no reason. If "items: const..." approach should be taken, then I'll > remove reg-names which bring no benefit. You can remove it, you can keep it, whatever makes code more readable, but order is fixed. Best regards, Krzysztof
© 2016 - 2026 Red Hat, Inc.