From: Joy Zou <joy.zou@nxp.com>
Introduce the compatible string 'fsl,imx8ulp-edma' to enable support for
the i.MX8ULP's eDMA, alongside adjusting the clock numbering. The i.MX8ULP
eDMA architecture features one clock for each DMA channel and an additional
clock for the core controller. Given a maximum of 32 DMA channels, the
maximum clock number consequently increases to 33.
Signed-off-by: Joy Zou <joy.zou@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
.../devicetree/bindings/dma/fsl,edma.yaml | 26 ++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/dma/fsl,edma.yaml b/Documentation/devicetree/bindings/dma/fsl,edma.yaml
index aa51d278cb67b..55cce79c759f8 100644
--- a/Documentation/devicetree/bindings/dma/fsl,edma.yaml
+++ b/Documentation/devicetree/bindings/dma/fsl,edma.yaml
@@ -23,6 +23,7 @@ properties:
- fsl,imx7ulp-edma
- fsl,imx8qm-adma
- fsl,imx8qm-edma
+ - fsl,imx8ulp-edma
- fsl,imx93-edma3
- fsl,imx93-edma4
- fsl,imx95-edma5
@@ -53,11 +54,11 @@ properties:
clocks:
minItems: 1
- maxItems: 2
+ maxItems: 33
clock-names:
minItems: 1
- maxItems: 2
+ maxItems: 33
big-endian:
description: |
@@ -108,6 +109,7 @@ allOf:
properties:
clocks:
minItems: 2
+ maxItems: 2
clock-names:
items:
- const: dmamux0
@@ -136,6 +138,7 @@ allOf:
properties:
clock:
minItems: 2
+ maxItems: 2
clock-names:
items:
- const: dma
@@ -151,6 +154,25 @@ allOf:
dma-channels:
const: 32
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: fsl,imx8ulp-edma
+ then:
+ properties:
+ clock:
+ maxItems: 33
+ clock-names:
+ items:
+ - const: dma
+ - pattern: "^CH[0-31]-clk$"
+ interrupt-names: false
+ interrupts:
+ maxItems: 32
+ "#dma-cells":
+ const: 3
+
unevaluatedProperties: false
examples:
--
2.34.1
On Thu, Feb 29, 2024 at 03:58:10PM -0500, Frank Li wrote:
> From: Joy Zou <joy.zou@nxp.com>
>
> Introduce the compatible string 'fsl,imx8ulp-edma' to enable support for
> the i.MX8ULP's eDMA, alongside adjusting the clock numbering. The i.MX8ULP
> eDMA architecture features one clock for each DMA channel and an additional
> clock for the core controller. Given a maximum of 32 DMA channels, the
> maximum clock number consequently increases to 33.
>
> Signed-off-by: Joy Zou <joy.zou@nxp.com>
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
> .../devicetree/bindings/dma/fsl,edma.yaml | 26 ++++++++++++++++++++--
> 1 file changed, 24 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/dma/fsl,edma.yaml b/Documentation/devicetree/bindings/dma/fsl,edma.yaml
> index aa51d278cb67b..55cce79c759f8 100644
> --- a/Documentation/devicetree/bindings/dma/fsl,edma.yaml
> +++ b/Documentation/devicetree/bindings/dma/fsl,edma.yaml
> @@ -23,6 +23,7 @@ properties:
> - fsl,imx7ulp-edma
> - fsl,imx8qm-adma
> - fsl,imx8qm-edma
> + - fsl,imx8ulp-edma
> - fsl,imx93-edma3
> - fsl,imx93-edma4
> - fsl,imx95-edma5
> @@ -53,11 +54,11 @@ properties:
>
> clocks:
> minItems: 1
> - maxItems: 2
> + maxItems: 33
>
> clock-names:
> minItems: 1
> - maxItems: 2
> + maxItems: 33
>
> big-endian:
> description: |
> @@ -108,6 +109,7 @@ allOf:
> properties:
> clocks:
> minItems: 2
> + maxItems: 2
> clock-names:
> items:
> - const: dmamux0
> @@ -136,6 +138,7 @@ allOf:
> properties:
> clock:
> minItems: 2
> + maxItems: 2
> clock-names:
> items:
> - const: dma
> @@ -151,6 +154,25 @@ allOf:
> dma-channels:
> const: 32
>
> + - if:
> + properties:
> + compatible:
> + contains:
> + const: fsl,imx8ulp-edma
> + then:
> + properties:
> + clock:
clocks
> + maxItems: 33
That is already the max. I think you want 'minItems: 33' here.
> + clock-names:
> + items:
> + - const: dma
> + - pattern: "^CH[0-31]-clk$"
'-clk' is redundant. [0-31] is not how you do a range of numbers with
regex.
This doesn't cover clocks 3-33. Not a great way to express in
json-schema, but this should do it:
allOf:
- items:
- const: dma
- items:
oneOf:
- const: dma
- pattern: "^ch([0-9]|[1-2][0-9]|[3[01])$"
That doesn't enforce the order of 'chN' entries though. Probably good
enough.
> + interrupt-names: false
> + interrupts:
> + maxItems: 32
minItems
> + "#dma-cells":
> + const: 3
Is what is in each cell defined somewhere? If not, you need a
description with those details.
Rob
On Mon, Mar 04, 2024 at 10:44:23AM -0600, Rob Herring wrote:
> On Thu, Feb 29, 2024 at 03:58:10PM -0500, Frank Li wrote:
> > From: Joy Zou <joy.zou@nxp.com>
> >
> > Introduce the compatible string 'fsl,imx8ulp-edma' to enable support for
> > the i.MX8ULP's eDMA, alongside adjusting the clock numbering. The i.MX8ULP
> > eDMA architecture features one clock for each DMA channel and an additional
> > clock for the core controller. Given a maximum of 32 DMA channels, the
> > maximum clock number consequently increases to 33.
> >
> > Signed-off-by: Joy Zou <joy.zou@nxp.com>
> > Signed-off-by: Frank Li <Frank.Li@nxp.com>
> > ---
> > .../devicetree/bindings/dma/fsl,edma.yaml | 26 ++++++++++++++++++++--
> > 1 file changed, 24 insertions(+), 2 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/dma/fsl,edma.yaml b/Documentation/devicetree/bindings/dma/fsl,edma.yaml
> > index aa51d278cb67b..55cce79c759f8 100644
> > --- a/Documentation/devicetree/bindings/dma/fsl,edma.yaml
> > +++ b/Documentation/devicetree/bindings/dma/fsl,edma.yaml
> > @@ -23,6 +23,7 @@ properties:
> > - fsl,imx7ulp-edma
> > - fsl,imx8qm-adma
> > - fsl,imx8qm-edma
> > + - fsl,imx8ulp-edma
> > - fsl,imx93-edma3
> > - fsl,imx93-edma4
> > - fsl,imx95-edma5
> > @@ -53,11 +54,11 @@ properties:
> >
> > clocks:
> > minItems: 1
> > - maxItems: 2
> > + maxItems: 33
> >
> > clock-names:
> > minItems: 1
> > - maxItems: 2
> > + maxItems: 33
> >
> > big-endian:
> > description: |
> > @@ -108,6 +109,7 @@ allOf:
> > properties:
> > clocks:
> > minItems: 2
> > + maxItems: 2
> > clock-names:
> > items:
> > - const: dmamux0
> > @@ -136,6 +138,7 @@ allOf:
> > properties:
> > clock:
> > minItems: 2
> > + maxItems: 2
> > clock-names:
> > items:
> > - const: dma
> > @@ -151,6 +154,25 @@ allOf:
> > dma-channels:
> > const: 32
> >
> > + - if:
> > + properties:
> > + compatible:
> > + contains:
> > + const: fsl,imx8ulp-edma
> > + then:
> > + properties:
> > + clock:
>
> clocks
>
> > + maxItems: 33
>
> That is already the max. I think you want 'minItems: 33' here.
>
> > + clock-names:
> > + items:
> > + - const: dma
> > + - pattern: "^CH[0-31]-clk$"
>
> '-clk' is redundant. [0-31] is not how you do a range of numbers with
> regex.
>
> This doesn't cover clocks 3-33. Not a great way to express in
> json-schema, but this should do it:
>
> allOf:
> - items:
> - const: dma
> - items:
> oneOf:
> - const: dma
> - pattern: "^ch([0-9]|[1-2][0-9]|[3[01])$"
I understand pattern is wrong. But I don't understand why need 'allOf'.
8ulp need clock 'dma" and "ch*". I think
items:
- const: dma
- pattern: "^CH[0-31]-clk$"
should be enough.
If you means put on top allOf, other platform use clock name such as
'dmamux0'.
Frank
>
> That doesn't enforce the order of 'chN' entries though. Probably good
> enough.
>
>
> > + interrupt-names: false
> > + interrupts:
> > + maxItems: 32
>
> minItems
>
> > + "#dma-cells":
> > + const: 3
>
> Is what is in each cell defined somewhere? If not, you need a
> description with those details.
>
> Rob
On Mon, Mar 4, 2024 at 5:31 PM Frank Li <Frank.li@nxp.com> wrote: > > On Mon, Mar 04, 2024 at 10:44:23AM -0600, Rob Herring wrote: > > On Thu, Feb 29, 2024 at 03:58:10PM -0500, Frank Li wrote: > > > From: Joy Zou <joy.zou@nxp.com> > > > > > > Introduce the compatible string 'fsl,imx8ulp-edma' to enable support for > > > the i.MX8ULP's eDMA, alongside adjusting the clock numbering. The i.MX8ULP > > > eDMA architecture features one clock for each DMA channel and an additional > > > clock for the core controller. Given a maximum of 32 DMA channels, the > > > maximum clock number consequently increases to 33. > > > > > > Signed-off-by: Joy Zou <joy.zou@nxp.com> > > > Signed-off-by: Frank Li <Frank.Li@nxp.com> > > > --- > > > .../devicetree/bindings/dma/fsl,edma.yaml | 26 ++++++++++++++++++++-- > > > 1 file changed, 24 insertions(+), 2 deletions(-) > > > > > > diff --git a/Documentation/devicetree/bindings/dma/fsl,edma.yaml b/Documentation/devicetree/bindings/dma/fsl,edma.yaml > > > index aa51d278cb67b..55cce79c759f8 100644 > > > --- a/Documentation/devicetree/bindings/dma/fsl,edma.yaml > > > +++ b/Documentation/devicetree/bindings/dma/fsl,edma.yaml > > > @@ -23,6 +23,7 @@ properties: > > > - fsl,imx7ulp-edma > > > - fsl,imx8qm-adma > > > - fsl,imx8qm-edma > > > + - fsl,imx8ulp-edma > > > - fsl,imx93-edma3 > > > - fsl,imx93-edma4 > > > - fsl,imx95-edma5 > > > @@ -53,11 +54,11 @@ properties: > > > > > > clocks: > > > minItems: 1 > > > - maxItems: 2 > > > + maxItems: 33 > > > > > > clock-names: > > > minItems: 1 > > > - maxItems: 2 > > > + maxItems: 33 > > > > > > big-endian: > > > description: | > > > @@ -108,6 +109,7 @@ allOf: > > > properties: > > > clocks: > > > minItems: 2 > > > + maxItems: 2 > > > clock-names: > > > items: > > > - const: dmamux0 > > > @@ -136,6 +138,7 @@ allOf: > > > properties: > > > clock: > > > minItems: 2 > > > + maxItems: 2 > > > clock-names: > > > items: > > > - const: dma > > > @@ -151,6 +154,25 @@ allOf: > > > dma-channels: > > > const: 32 > > > > > > + - if: > > > + properties: > > > + compatible: > > > + contains: > > > + const: fsl,imx8ulp-edma > > > + then: > > > + properties: > > > + clock: > > > > clocks > > > > > + maxItems: 33 > > > > That is already the max. I think you want 'minItems: 33' here. > > > > > + clock-names: > > > + items: > > > + - const: dma > > > + - pattern: "^CH[0-31]-clk$" > > > > '-clk' is redundant. [0-31] is not how you do a range of numbers with > > regex. > > > > This doesn't cover clocks 3-33. Not a great way to express in > > json-schema, but this should do it: > > > > allOf: > > - items: > > - const: dma > > - items: > > oneOf: > > - const: dma > > - pattern: "^ch([0-9]|[1-2][0-9]|[3[01])$" > > I understand pattern is wrong. But I don't understand why need 'allOf'. The first 'items' says the 1st entry must be 'dma'. (It might need a 'maxItems: 33' too now that I look at it.) The 2nd 'items' says all entries must be either 'dma' or the CHn pattern. > 8ulp need clock 'dma" and "ch*". I think > > items: > - const: dma > - pattern: "^CH[0-31]-clk$" > > should be enough. If it was, then I would not have said anything. If you don't believe me see if this passes validation: clock-names = "dma", "CH0", "foobar"; > If you means put on top allOf, other platform use clock name such as > 'dmamux0'. What? It's under an if/then schema. Rob
On Wed, Mar 06, 2024 at 02:40:23PM -0600, Rob Herring wrote:
> On Mon, Mar 4, 2024 at 5:31 PM Frank Li <Frank.li@nxp.com> wrote:
> >
> > On Mon, Mar 04, 2024 at 10:44:23AM -0600, Rob Herring wrote:
> > > On Thu, Feb 29, 2024 at 03:58:10PM -0500, Frank Li wrote:
> > > > From: Joy Zou <joy.zou@nxp.com>
> > > >
> > > > Introduce the compatible string 'fsl,imx8ulp-edma' to enable support for
> > > > the i.MX8ULP's eDMA, alongside adjusting the clock numbering. The i.MX8ULP
> > > > eDMA architecture features one clock for each DMA channel and an additional
> > > > clock for the core controller. Given a maximum of 32 DMA channels, the
> > > > maximum clock number consequently increases to 33.
> > > >
> > > > Signed-off-by: Joy Zou <joy.zou@nxp.com>
> > > > Signed-off-by: Frank Li <Frank.Li@nxp.com>
> > > > ---
> > > > .../devicetree/bindings/dma/fsl,edma.yaml | 26 ++++++++++++++++++++--
> > > > 1 file changed, 24 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/Documentation/devicetree/bindings/dma/fsl,edma.yaml b/Documentation/devicetree/bindings/dma/fsl,edma.yaml
> > > > index aa51d278cb67b..55cce79c759f8 100644
> > > > --- a/Documentation/devicetree/bindings/dma/fsl,edma.yaml
> > > > +++ b/Documentation/devicetree/bindings/dma/fsl,edma.yaml
> > > > @@ -23,6 +23,7 @@ properties:
> > > > - fsl,imx7ulp-edma
> > > > - fsl,imx8qm-adma
> > > > - fsl,imx8qm-edma
> > > > + - fsl,imx8ulp-edma
> > > > - fsl,imx93-edma3
> > > > - fsl,imx93-edma4
> > > > - fsl,imx95-edma5
> > > > @@ -53,11 +54,11 @@ properties:
> > > >
> > > > clocks:
> > > > minItems: 1
> > > > - maxItems: 2
> > > > + maxItems: 33
> > > >
> > > > clock-names:
> > > > minItems: 1
> > > > - maxItems: 2
> > > > + maxItems: 33
> > > >
> > > > big-endian:
> > > > description: |
> > > > @@ -108,6 +109,7 @@ allOf:
> > > > properties:
> > > > clocks:
> > > > minItems: 2
> > > > + maxItems: 2
> > > > clock-names:
> > > > items:
> > > > - const: dmamux0
> > > > @@ -136,6 +138,7 @@ allOf:
> > > > properties:
> > > > clock:
> > > > minItems: 2
> > > > + maxItems: 2
> > > > clock-names:
> > > > items:
> > > > - const: dma
> > > > @@ -151,6 +154,25 @@ allOf:
> > > > dma-channels:
> > > > const: 32
> > > >
> > > > + - if:
> > > > + properties:
> > > > + compatible:
> > > > + contains:
> > > > + const: fsl,imx8ulp-edma
> > > > + then:
> > > > + properties:
> > > > + clock:
> > >
> > > clocks
> > >
> > > > + maxItems: 33
> > >
> > > That is already the max. I think you want 'minItems: 33' here.
> > >
> > > > + clock-names:
> > > > + items:
> > > > + - const: dma
> > > > + - pattern: "^CH[0-31]-clk$"
> > >
> > > '-clk' is redundant. [0-31] is not how you do a range of numbers with
> > > regex.
> > >
> > > This doesn't cover clocks 3-33. Not a great way to express in
> > > json-schema, but this should do it:
> > >
> > > allOf:
> > > - items:
> > > - const: dma
> > > - items:
> > > oneOf:
> > > - const: dma
> > > - pattern: "^ch([0-9]|[1-2][0-9]|[3[01])$"
> >
> > I understand pattern is wrong. But I don't understand why need 'allOf'.
>
> The first 'items' says the 1st entry must be 'dma'. (It might need a
> 'maxItems: 33' too now that I look at it.) The 2nd 'items' says all
> entries must be either 'dma' or the CHn pattern.
After dig into dt_scheme and json scheme, I start understand what your
means.
"clock-names": {
"minItems": 33,
"allOf": [
{
"items": [
{
"const": "dma"
}
],
"maxItems": 33,
^^^^^^^^
Here need a maxItem 33 and make sure first item is "dma" and total
array is 33.
"type": "array",
"minItems": 1
},
{
"items": {
"oneOf": [
{
"const": "dma"
},
{
"pattern": "^ch(0[0-9]|[1-2][0-9]|3[01])$"
}
]
},
"type": "array"
}
]
}
The yaml source is
allOf:
- items:
- const: dma
maxItems: 33
- items:
oneOf:
- const: dma
- pattern: "^ch(0[0-9]|[1-2][0-9]|3[01])$"
But unfortunately,
dtschema/meta-schemas/items.yaml
type: object
properties:
items:
type: array
additionalItems: false
required:
- items
- maxItems
then:
description: '"maxItems" is not needed with an "items" list'
not:
required:
- maxItem
dt_binding check will complain
'"maxItems" is not needed with an "items" list'
I am not sure how to go futher. Maybe below 'stupid' method is less impact.
items
- const: dma
- const: ch00
...
- const: ch31
Frank
>
> > 8ulp need clock 'dma" and "ch*". I think
> >
> > items:
> > - const: dma
> > - pattern: "^CH[0-31]-clk$"
> >
> > should be enough.
>
> If it was, then I would not have said anything. If you don't believe
> me see if this passes validation:
>
> clock-names = "dma", "CH0", "foobar";
>
> > If you means put on top allOf, other platform use clock name such as
> > 'dmamux0'.
>
> What? It's under an if/then schema.
>
> Rob
On Sun, Mar 10, 2024 at 10:38:42PM -0400, Frank Li wrote:
> On Wed, Mar 06, 2024 at 02:40:23PM -0600, Rob Herring wrote:
> > On Mon, Mar 4, 2024 at 5:31 PM Frank Li <Frank.li@nxp.com> wrote:
> > >
> > > On Mon, Mar 04, 2024 at 10:44:23AM -0600, Rob Herring wrote:
> > > > On Thu, Feb 29, 2024 at 03:58:10PM -0500, Frank Li wrote:
> > > > > From: Joy Zou <joy.zou@nxp.com>
> > > > >
> > > > > Introduce the compatible string 'fsl,imx8ulp-edma' to enable support for
> > > > > the i.MX8ULP's eDMA, alongside adjusting the clock numbering. The i.MX8ULP
> > > > > eDMA architecture features one clock for each DMA channel and an additional
> > > > > clock for the core controller. Given a maximum of 32 DMA channels, the
> > > > > maximum clock number consequently increases to 33.
> > > > >
> > > > > Signed-off-by: Joy Zou <joy.zou@nxp.com>
> > > > > Signed-off-by: Frank Li <Frank.Li@nxp.com>
> > > > > ---
> > > > > .../devicetree/bindings/dma/fsl,edma.yaml | 26 ++++++++++++++++++++--
> > > > > 1 file changed, 24 insertions(+), 2 deletions(-)
> > > > >
> > > > > diff --git a/Documentation/devicetree/bindings/dma/fsl,edma.yaml b/Documentation/devicetree/bindings/dma/fsl,edma.yaml
> > > > > index aa51d278cb67b..55cce79c759f8 100644
> > > > > --- a/Documentation/devicetree/bindings/dma/fsl,edma.yaml
> > > > > +++ b/Documentation/devicetree/bindings/dma/fsl,edma.yaml
> > > > > @@ -23,6 +23,7 @@ properties:
> > > > > - fsl,imx7ulp-edma
> > > > > - fsl,imx8qm-adma
> > > > > - fsl,imx8qm-edma
> > > > > + - fsl,imx8ulp-edma
> > > > > - fsl,imx93-edma3
> > > > > - fsl,imx93-edma4
> > > > > - fsl,imx95-edma5
> > > > > @@ -53,11 +54,11 @@ properties:
> > > > >
> > > > > clocks:
> > > > > minItems: 1
> > > > > - maxItems: 2
> > > > > + maxItems: 33
> > > > >
> > > > > clock-names:
> > > > > minItems: 1
> > > > > - maxItems: 2
> > > > > + maxItems: 33
> > > > >
> > > > > big-endian:
> > > > > description: |
> > > > > @@ -108,6 +109,7 @@ allOf:
> > > > > properties:
> > > > > clocks:
> > > > > minItems: 2
> > > > > + maxItems: 2
> > > > > clock-names:
> > > > > items:
> > > > > - const: dmamux0
> > > > > @@ -136,6 +138,7 @@ allOf:
> > > > > properties:
> > > > > clock:
> > > > > minItems: 2
> > > > > + maxItems: 2
> > > > > clock-names:
> > > > > items:
> > > > > - const: dma
> > > > > @@ -151,6 +154,25 @@ allOf:
> > > > > dma-channels:
> > > > > const: 32
> > > > >
> > > > > + - if:
> > > > > + properties:
> > > > > + compatible:
> > > > > + contains:
> > > > > + const: fsl,imx8ulp-edma
> > > > > + then:
> > > > > + properties:
> > > > > + clock:
> > > >
> > > > clocks
> > > >
> > > > > + maxItems: 33
> > > >
> > > > That is already the max. I think you want 'minItems: 33' here.
> > > >
> > > > > + clock-names:
> > > > > + items:
> > > > > + - const: dma
> > > > > + - pattern: "^CH[0-31]-clk$"
> > > >
> > > > '-clk' is redundant. [0-31] is not how you do a range of numbers with
> > > > regex.
> > > >
> > > > This doesn't cover clocks 3-33. Not a great way to express in
> > > > json-schema, but this should do it:
> > > >
> > > > allOf:
> > > > - items:
> > > > - const: dma
> > > > - items:
> > > > oneOf:
> > > > - const: dma
> > > > - pattern: "^ch([0-9]|[1-2][0-9]|[3[01])$"
> > >
> > > I understand pattern is wrong. But I don't understand why need 'allOf'.
> >
> > The first 'items' says the 1st entry must be 'dma'. (It might need a
> > 'maxItems: 33' too now that I look at it.) The 2nd 'items' says all
> > entries must be either 'dma' or the CHn pattern.
>
> After dig into dt_scheme and json scheme, I start understand what your
> means.
>
> "clock-names": {
> "minItems": 33,
> "allOf": [
> {
> "items": [
> {
> "const": "dma"
> }
> ],
> "maxItems": 33,
> ^^^^^^^^
> Here need a maxItem 33 and make sure first item is "dma" and total
> array is 33.
>
> "type": "array",
> "minItems": 1
> },
> {
> "items": {
> "oneOf": [
> {
> "const": "dma"
> },
> {
> "pattern": "^ch(0[0-9]|[1-2][0-9]|3[01])$"
> }
> ]
> },
> "type": "array"
> }
> ]
> }
>
> The yaml source is
>
> allOf:
> - items:
> - const: dma
> maxItems: 33
> - items:
> oneOf:
> - const: dma
> - pattern: "^ch(0[0-9]|[1-2][0-9]|3[01])$"
>
>
> But unfortunately,
>
> dtschema/meta-schemas/items.yaml
>
> type: object
> properties:
> items:
> type: array
> additionalItems: false
> required:
> - items
> - maxItems
> then:
> description: '"maxItems" is not needed with an "items" list'
> not:
> required:
> - maxItem
>
>
> dt_binding check will complain
> '"maxItems" is not needed with an "items" list'
>
>
> I am not sure how to go futher. Maybe below 'stupid' method is less impact.
>
> items
> - const: dma
> - const: ch00
> ...
> - const: ch31
>
>
> Frank
@rob:
I can't found out a way to to handle this case.
dtschema/meta-schemas/items.yaml not allow 'maxItems' for 'items'.
Any suggestion?
Frank
>
> >
> > > 8ulp need clock 'dma" and "ch*". I think
> > >
> > > items:
> > > - const: dma
> > > - pattern: "^CH[0-31]-clk$"
> > >
> > > should be enough.
> >
> > If it was, then I would not have said anything. If you don't believe
> > me see if this passes validation:
> >
> > clock-names = "dma", "CH0", "foobar";
> >
> > > If you means put on top allOf, other platform use clock name such as
> > > 'dmamux0'.
> >
> > What? It's under an if/then schema.
> >
> > Rob
On Wed, Mar 06, 2024 at 02:40:23PM -0600, Rob Herring wrote:
> On Mon, Mar 4, 2024 at 5:31 PM Frank Li <Frank.li@nxp.com> wrote:
> >
> > On Mon, Mar 04, 2024 at 10:44:23AM -0600, Rob Herring wrote:
> > > On Thu, Feb 29, 2024 at 03:58:10PM -0500, Frank Li wrote:
> > > > From: Joy Zou <joy.zou@nxp.com>
> > > >
> > > > Introduce the compatible string 'fsl,imx8ulp-edma' to enable support for
> > > > the i.MX8ULP's eDMA, alongside adjusting the clock numbering. The i.MX8ULP
> > > > eDMA architecture features one clock for each DMA channel and an additional
> > > > clock for the core controller. Given a maximum of 32 DMA channels, the
> > > > maximum clock number consequently increases to 33.
> > > >
> > > > Signed-off-by: Joy Zou <joy.zou@nxp.com>
> > > > Signed-off-by: Frank Li <Frank.Li@nxp.com>
> > > > ---
> > > > .../devicetree/bindings/dma/fsl,edma.yaml | 26 ++++++++++++++++++++--
> > > > 1 file changed, 24 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/Documentation/devicetree/bindings/dma/fsl,edma.yaml b/Documentation/devicetree/bindings/dma/fsl,edma.yaml
> > > > index aa51d278cb67b..55cce79c759f8 100644
> > > > --- a/Documentation/devicetree/bindings/dma/fsl,edma.yaml
> > > > +++ b/Documentation/devicetree/bindings/dma/fsl,edma.yaml
> > > > @@ -23,6 +23,7 @@ properties:
> > > > - fsl,imx7ulp-edma
> > > > - fsl,imx8qm-adma
> > > > - fsl,imx8qm-edma
> > > > + - fsl,imx8ulp-edma
> > > > - fsl,imx93-edma3
> > > > - fsl,imx93-edma4
> > > > - fsl,imx95-edma5
> > > > @@ -53,11 +54,11 @@ properties:
> > > >
> > > > clocks:
> > > > minItems: 1
> > > > - maxItems: 2
> > > > + maxItems: 33
> > > >
> > > > clock-names:
> > > > minItems: 1
> > > > - maxItems: 2
> > > > + maxItems: 33
> > > >
> > > > big-endian:
> > > > description: |
> > > > @@ -108,6 +109,7 @@ allOf:
> > > > properties:
> > > > clocks:
> > > > minItems: 2
> > > > + maxItems: 2
> > > > clock-names:
> > > > items:
> > > > - const: dmamux0
> > > > @@ -136,6 +138,7 @@ allOf:
> > > > properties:
> > > > clock:
> > > > minItems: 2
> > > > + maxItems: 2
> > > > clock-names:
> > > > items:
> > > > - const: dma
> > > > @@ -151,6 +154,25 @@ allOf:
> > > > dma-channels:
> > > > const: 32
> > > >
> > > > + - if:
> > > > + properties:
> > > > + compatible:
> > > > + contains:
> > > > + const: fsl,imx8ulp-edma
> > > > + then:
> > > > + properties:
> > > > + clock:
> > >
> > > clocks
> > >
> > > > + maxItems: 33
> > >
> > > That is already the max. I think you want 'minItems: 33' here.
> > >
> > > > + clock-names:
> > > > + items:
> > > > + - const: dma
> > > > + - pattern: "^CH[0-31]-clk$"
> > >
> > > '-clk' is redundant. [0-31] is not how you do a range of numbers with
> > > regex.
> > >
> > > This doesn't cover clocks 3-33. Not a great way to express in
> > > json-schema, but this should do it:
> > >
> > > allOf:
> > > - items:
> > > - const: dma
> > > - items:
> > > oneOf:
> > > - const: dma
> > > - pattern: "^ch([0-9]|[1-2][0-9]|[3[01])$"
> >
> > I understand pattern is wrong. But I don't understand why need 'allOf'.
>
> The first 'items' says the 1st entry must be 'dma'. (It might need a
> 'maxItems: 33' too now that I look at it.) The 2nd 'items' says all
> entries must be either 'dma' or the CHn pattern.
>
> > 8ulp need clock 'dma" and "ch*". I think
> >
> > items:
> > - const: dma
> > - pattern: "^CH[0-31]-clk$"
> >
> > should be enough.
>
> If it was, then I would not have said anything. If you don't believe
> me see if this passes validation:
>
> clock-names = "dma", "CH0", "foobar";
clock-names:
minItems: 33
items:
oneOf:
- const: dma
- pattern: "^ch(0[0-9]|[1-2][0-9]|3[01])$"
Above code can pass check and detect error of "foobar", it should miss
restriction about first item must be 'dma'.
Your previous allOf block,
allOf:
- items:
- const: dma
- items:
oneOf:
- const: dma
- pattern: "^ch([0-9]|[1-2][0-9]|[3[01])$"
It reported clock-names too long.
Frank
>
> > If you means put on top allOf, other platform use clock name such as
> > 'dmamux0'.
>
> What? It's under an if/then schema.
>
> Rob
© 2016 - 2026 Red Hat, Inc.