Message ID | 20221217010724.632088-1-marex@denx.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | dt-bindings: dma: fsl-mxs-dma: Convert MXS DMA to DT schema | expand |
On 17/12/2022 02:07, Marek Vasut wrote: > Convert the MXS DMA binding to DT schema format using json-schema. > > Drop "interrupt-names" property, since it is broken. The drivers/dma/mxs-dma.c > in Linux kernel does not use it, the property contains duplicate array entries > in existing DTs, and even malformed entries (gmpi, should have been gpmi). Get > rid of that optional property altogether. > > Update example node names to be standard dma-controller@ , > add global interrupt-parent property into example. Thank you for your patch. There is something to discuss/improve. > + > +title: Freescale Direct Memory Access (DMA) Controller from i.MX23/i.MX28 > + > +maintainers: > + - Marek Vasut <marex@denx.de> > + > +properties: > + compatible: > + oneOf: > + - items: > + - enum: > + - fsl,imx6q-dma-apbh > + - fsl,imx6sx-dma-apbh > + - fsl,imx7d-dma-apbh > + - const: fsl,imx28-dma-apbh > + - items: No need for items here, make it just an enum. > + - enum: > + - fsl,imx23-dma-apbh > + - fsl,imx23-dma-apbx > + - fsl,imx28-dma-apbh > + - fsl,imx28-dma-apbx > + reg: > + maxItems: 1 > + > + clocks: > + maxItems: 1 > + > + interrupts: > + minItems: 4 > + maxItems: 16 > + > + "#dma-cells": > + const: 1 > + > + dma-channels: > + enum: [4, 8, 16] > + > +required: > + - compatible > + - reg > + - "#dma-cells" > + - dma-channels > + - interrupts > + > +allOf: > + - $ref: dma-controller.yaml# > + - if: > + properties: > + compatible: > + not: I think "not:" goes just after "if:". Please double check that it's correct. Anyway it is easier to have this without negation and you already enumerate all variants (here and below). > + contains: > + enum: > + - fsl,imx6q-dma-apbh > + - fsl,imx6sx-dma-apbh > + - fsl,imx7d-dma-apbh > + - fsl,imx23-dma-apbx > + - fsl,imx28-dma-apbh > + - fsl,imx28-dma-apbx > + then: > + properties: > + dma-channels: > + const: 8 > + interrupts: > + maxItems: 8 Blank line here, please. > + - if: > + properties: > + compatible: > + not: > + contains: > + enum: > + - fsl,imx6q-dma-apbh > + - fsl,imx6sx-dma-apbh > + - fsl,imx7d-dma-apbh > + - fsl,imx23-dma-apbh > + then: > + properties: > + dma-channels: > + const: 16 > + interrupts: > + maxItems: 16 > + > +additionalProperties: false > + Best regards, Krzysztof
On 12/17/22 12:05, Krzysztof Kozlowski wrote: [...] >> +allOf: >> + - $ref: dma-controller.yaml# >> + - if: >> + properties: >> + compatible: >> + not: > > I think "not:" goes just after "if:". Please double check that it's correct. > > Anyway it is easier to have this without negation and you already > enumerate all variants (here and below). About this part, I don't think that works. See this: $ git grep -A 15 'imx2[38]-dma-apb[hx]' arch/ | grep '\(imx2[38]-dma-apb[hx]\|dma-channels\)' arch/arm/boot/dts/imx23.dtsi: compatible = "fsl,imx23-dma-apbh"; arch/arm/boot/dts/imx23.dtsi- dma-channels = <8>; arch/arm/boot/dts/imx23.dtsi: compatible = "fsl,imx23-dma-apbx"; arch/arm/boot/dts/imx23.dtsi- dma-channels = <16>; arch/arm/boot/dts/imx28.dtsi: compatible = "fsl,imx28-dma-apbh"; arch/arm/boot/dts/imx28.dtsi- dma-channels = <16>; arch/arm/boot/dts/imx28.dtsi: compatible = "fsl,imx28-dma-apbx"; arch/arm/boot/dts/imx28.dtsi- dma-channels = <16>; arch/arm/boot/dts/imx6qdl.dtsi: compatible = "fsl,imx6q-dma-apbh", "fsl,imx28-dma-apbh"; arch/arm/boot/dts/imx6qdl.dtsi- dma-channels = <4>; arch/arm/boot/dts/imx6sx.dtsi: compatible = "fsl,imx6sx-dma-apbh", "fsl,imx28-dma-apbh"; arch/arm/boot/dts/imx6sx.dtsi- dma-channels = <4>; arch/arm/boot/dts/imx6ul.dtsi: compatible = "fsl,imx6q-dma-apbh", "fsl,imx28-dma-apbh"; arch/arm/boot/dts/imx6ul.dtsi- dma-channels = <4>; arch/arm/boot/dts/imx7s.dtsi: compatible = "fsl,imx7d-dma-apbh", "fsl,imx28-dma-apbh"; arch/arm/boot/dts/imx7s.dtsi- dma-channels = <4>; arch/arm64/boot/dts/freescale/imx8mm.dtsi: compatible = "fsl,imx7d-dma-apbh", "fsl,imx28-dma-apbh"; arch/arm64/boot/dts/freescale/imx8mm.dtsi- dma-channels = <4>; arch/arm64/boot/dts/freescale/imx8mn.dtsi: compatible = "fsl,imx7d-dma-apbh", "fsl,imx28-dma-apbh"; arch/arm64/boot/dts/freescale/imx8mn.dtsi- dma-channels = <4>; So I think what we have to do to validate that, is, say default: 4 if does not match on 6q/6sx/7d/23-apbx/28-abbh/28-apbx then 8 if does not match on 6q/6sx/7d/23-apbh then 16 But if there is a better way to validate the above, please do tell.
On 18/12/2022 00:12, Marek Vasut wrote: > On 12/17/22 12:05, Krzysztof Kozlowski wrote: > > [...] > >>> +allOf: >>> + - $ref: dma-controller.yaml# >>> + - if: >>> + properties: >>> + compatible: >>> + not: >> >> I think "not:" goes just after "if:". Please double check that it's correct. >> >> Anyway it is easier to have this without negation and you already >> enumerate all variants (here and below). > > About this part, I don't think that works. See this: > > $ git grep -A 15 'imx2[38]-dma-apb[hx]' arch/ | grep > '\(imx2[38]-dma-apb[hx]\|dma-channels\)' > arch/arm/boot/dts/imx23.dtsi: compatible = "fsl,imx23-dma-apbh"; > arch/arm/boot/dts/imx23.dtsi- dma-channels = <8>; > arch/arm/boot/dts/imx23.dtsi: compatible = "fsl,imx23-dma-apbx"; > arch/arm/boot/dts/imx23.dtsi- dma-channels = <16>; > arch/arm/boot/dts/imx28.dtsi: compatible = "fsl,imx28-dma-apbh"; > arch/arm/boot/dts/imx28.dtsi- dma-channels = <16>; > arch/arm/boot/dts/imx28.dtsi: compatible = "fsl,imx28-dma-apbx"; > arch/arm/boot/dts/imx28.dtsi- dma-channels = <16>; > arch/arm/boot/dts/imx6qdl.dtsi: compatible = "fsl,imx6q-dma-apbh", > "fsl,imx28-dma-apbh"; > arch/arm/boot/dts/imx6qdl.dtsi- dma-channels = <4>; > arch/arm/boot/dts/imx6sx.dtsi: compatible = "fsl,imx6sx-dma-apbh", > "fsl,imx28-dma-apbh"; > arch/arm/boot/dts/imx6sx.dtsi- dma-channels = <4>; > arch/arm/boot/dts/imx6ul.dtsi: compatible = "fsl,imx6q-dma-apbh", > "fsl,imx28-dma-apbh"; > arch/arm/boot/dts/imx6ul.dtsi- dma-channels = <4>; > arch/arm/boot/dts/imx7s.dtsi: compatible = "fsl,imx7d-dma-apbh", > "fsl,imx28-dma-apbh"; > arch/arm/boot/dts/imx7s.dtsi- dma-channels = <4>; > arch/arm64/boot/dts/freescale/imx8mm.dtsi: compatible = > "fsl,imx7d-dma-apbh", "fsl,imx28-dma-apbh"; > arch/arm64/boot/dts/freescale/imx8mm.dtsi- dma-channels = <4>; > arch/arm64/boot/dts/freescale/imx8mn.dtsi: compatible = > "fsl,imx7d-dma-apbh", "fsl,imx28-dma-apbh"; > arch/arm64/boot/dts/freescale/imx8mn.dtsi- dma-channels = <4>; > > So I think what we have to do to validate that, is, say > > default: 4 > > if does not match on 6q/6sx/7d/23-apbx/28-abbh/28-apbx then 8 > > if does not match on 6q/6sx/7d/23-apbh then 16 > > But if there is a better way to validate the above, please do tell. Then your existing if:then: is also not correct because you require for fsl,imx28-dma-apbh (as it is not in second if:then:) const:16. Just don't require it. Best regards, Krzysztof
On 12/18/22 19:46, Krzysztof Kozlowski wrote: > On 18/12/2022 00:12, Marek Vasut wrote: >> On 12/17/22 12:05, Krzysztof Kozlowski wrote: >> >> [...] >> >>>> +allOf: >>>> + - $ref: dma-controller.yaml# >>>> + - if: >>>> + properties: >>>> + compatible: >>>> + not: >>> >>> I think "not:" goes just after "if:". Please double check that it's correct. >>> >>> Anyway it is easier to have this without negation and you already >>> enumerate all variants (here and below). >> >> About this part, I don't think that works. See this: >> >> $ git grep -A 15 'imx2[38]-dma-apb[hx]' arch/ | grep >> '\(imx2[38]-dma-apb[hx]\|dma-channels\)' >> arch/arm/boot/dts/imx23.dtsi: compatible = "fsl,imx23-dma-apbh"; >> arch/arm/boot/dts/imx23.dtsi- dma-channels = <8>; >> arch/arm/boot/dts/imx23.dtsi: compatible = "fsl,imx23-dma-apbx"; >> arch/arm/boot/dts/imx23.dtsi- dma-channels = <16>; >> arch/arm/boot/dts/imx28.dtsi: compatible = "fsl,imx28-dma-apbh"; >> arch/arm/boot/dts/imx28.dtsi- dma-channels = <16>; >> arch/arm/boot/dts/imx28.dtsi: compatible = "fsl,imx28-dma-apbx"; >> arch/arm/boot/dts/imx28.dtsi- dma-channels = <16>; >> arch/arm/boot/dts/imx6qdl.dtsi: compatible = "fsl,imx6q-dma-apbh", >> "fsl,imx28-dma-apbh"; >> arch/arm/boot/dts/imx6qdl.dtsi- dma-channels = <4>; >> arch/arm/boot/dts/imx6sx.dtsi: compatible = "fsl,imx6sx-dma-apbh", >> "fsl,imx28-dma-apbh"; >> arch/arm/boot/dts/imx6sx.dtsi- dma-channels = <4>; >> arch/arm/boot/dts/imx6ul.dtsi: compatible = "fsl,imx6q-dma-apbh", >> "fsl,imx28-dma-apbh"; >> arch/arm/boot/dts/imx6ul.dtsi- dma-channels = <4>; >> arch/arm/boot/dts/imx7s.dtsi: compatible = "fsl,imx7d-dma-apbh", >> "fsl,imx28-dma-apbh"; >> arch/arm/boot/dts/imx7s.dtsi- dma-channels = <4>; >> arch/arm64/boot/dts/freescale/imx8mm.dtsi: compatible = >> "fsl,imx7d-dma-apbh", "fsl,imx28-dma-apbh"; >> arch/arm64/boot/dts/freescale/imx8mm.dtsi- dma-channels = <4>; >> arch/arm64/boot/dts/freescale/imx8mn.dtsi: compatible = >> "fsl,imx7d-dma-apbh", "fsl,imx28-dma-apbh"; >> arch/arm64/boot/dts/freescale/imx8mn.dtsi- dma-channels = <4>; >> >> So I think what we have to do to validate that, is, say >> >> default: 4 >> >> if does not match on 6q/6sx/7d/23-apbx/28-abbh/28-apbx then 8 >> >> if does not match on 6q/6sx/7d/23-apbh then 16 >> >> But if there is a better way to validate the above, please do tell. > > Then your existing if:then: is also not correct because you require for > fsl,imx28-dma-apbh (as it is not in second if:then:) const:16. Just > don't require it. So, shall I just drop the entire allOf: section ?
On 18/12/2022 20:06, Marek Vasut wrote: > On 12/18/22 19:46, Krzysztof Kozlowski wrote: >> On 18/12/2022 00:12, Marek Vasut wrote: >>> On 12/17/22 12:05, Krzysztof Kozlowski wrote: >>> >>> [...] >>> >>>>> +allOf: >>>>> + - $ref: dma-controller.yaml# >>>>> + - if: >>>>> + properties: >>>>> + compatible: >>>>> + not: >>>> >>>> I think "not:" goes just after "if:". Please double check that it's correct. >>>> >>>> Anyway it is easier to have this without negation and you already >>>> enumerate all variants (here and below). >>> >>> About this part, I don't think that works. See this: >>> >>> $ git grep -A 15 'imx2[38]-dma-apb[hx]' arch/ | grep >>> '\(imx2[38]-dma-apb[hx]\|dma-channels\)' >>> arch/arm/boot/dts/imx23.dtsi: compatible = "fsl,imx23-dma-apbh"; >>> arch/arm/boot/dts/imx23.dtsi- dma-channels = <8>; >>> arch/arm/boot/dts/imx23.dtsi: compatible = "fsl,imx23-dma-apbx"; >>> arch/arm/boot/dts/imx23.dtsi- dma-channels = <16>; >>> arch/arm/boot/dts/imx28.dtsi: compatible = "fsl,imx28-dma-apbh"; >>> arch/arm/boot/dts/imx28.dtsi- dma-channels = <16>; >>> arch/arm/boot/dts/imx28.dtsi: compatible = "fsl,imx28-dma-apbx"; >>> arch/arm/boot/dts/imx28.dtsi- dma-channels = <16>; >>> arch/arm/boot/dts/imx6qdl.dtsi: compatible = "fsl,imx6q-dma-apbh", >>> "fsl,imx28-dma-apbh"; >>> arch/arm/boot/dts/imx6qdl.dtsi- dma-channels = <4>; >>> arch/arm/boot/dts/imx6sx.dtsi: compatible = "fsl,imx6sx-dma-apbh", >>> "fsl,imx28-dma-apbh"; >>> arch/arm/boot/dts/imx6sx.dtsi- dma-channels = <4>; >>> arch/arm/boot/dts/imx6ul.dtsi: compatible = "fsl,imx6q-dma-apbh", >>> "fsl,imx28-dma-apbh"; >>> arch/arm/boot/dts/imx6ul.dtsi- dma-channels = <4>; >>> arch/arm/boot/dts/imx7s.dtsi: compatible = "fsl,imx7d-dma-apbh", >>> "fsl,imx28-dma-apbh"; >>> arch/arm/boot/dts/imx7s.dtsi- dma-channels = <4>; >>> arch/arm64/boot/dts/freescale/imx8mm.dtsi: compatible = >>> "fsl,imx7d-dma-apbh", "fsl,imx28-dma-apbh"; >>> arch/arm64/boot/dts/freescale/imx8mm.dtsi- dma-channels = <4>; >>> arch/arm64/boot/dts/freescale/imx8mn.dtsi: compatible = >>> "fsl,imx7d-dma-apbh", "fsl,imx28-dma-apbh"; >>> arch/arm64/boot/dts/freescale/imx8mn.dtsi- dma-channels = <4>; >>> >>> So I think what we have to do to validate that, is, say >>> >>> default: 4 >>> >>> if does not match on 6q/6sx/7d/23-apbx/28-abbh/28-apbx then 8 >>> >>> if does not match on 6q/6sx/7d/23-apbh then 16 >>> >>> But if there is a better way to validate the above, please do tell. >> >> Then your existing if:then: is also not correct because you require for >> fsl,imx28-dma-apbh (as it is not in second if:then:) const:16. Just >> don't require it. > > So, shall I just drop the entire allOf: section ? No, what about the interrupts? Best regards, Krzysztof
On 12/19/22 09:36, Krzysztof Kozlowski wrote: > On 18/12/2022 20:06, Marek Vasut wrote: >> On 12/18/22 19:46, Krzysztof Kozlowski wrote: >>> On 18/12/2022 00:12, Marek Vasut wrote: >>>> On 12/17/22 12:05, Krzysztof Kozlowski wrote: >>>> >>>> [...] >>>> >>>>>> +allOf: >>>>>> + - $ref: dma-controller.yaml# >>>>>> + - if: >>>>>> + properties: >>>>>> + compatible: >>>>>> + not: >>>>> >>>>> I think "not:" goes just after "if:". Please double check that it's correct. >>>>> >>>>> Anyway it is easier to have this without negation and you already >>>>> enumerate all variants (here and below). >>>> >>>> About this part, I don't think that works. See this: >>>> >>>> $ git grep -A 15 'imx2[38]-dma-apb[hx]' arch/ | grep >>>> '\(imx2[38]-dma-apb[hx]\|dma-channels\)' >>>> arch/arm/boot/dts/imx23.dtsi: compatible = "fsl,imx23-dma-apbh"; >>>> arch/arm/boot/dts/imx23.dtsi- dma-channels = <8>; >>>> arch/arm/boot/dts/imx23.dtsi: compatible = "fsl,imx23-dma-apbx"; >>>> arch/arm/boot/dts/imx23.dtsi- dma-channels = <16>; >>>> arch/arm/boot/dts/imx28.dtsi: compatible = "fsl,imx28-dma-apbh"; >>>> arch/arm/boot/dts/imx28.dtsi- dma-channels = <16>; >>>> arch/arm/boot/dts/imx28.dtsi: compatible = "fsl,imx28-dma-apbx"; >>>> arch/arm/boot/dts/imx28.dtsi- dma-channels = <16>; >>>> arch/arm/boot/dts/imx6qdl.dtsi: compatible = "fsl,imx6q-dma-apbh", >>>> "fsl,imx28-dma-apbh"; >>>> arch/arm/boot/dts/imx6qdl.dtsi- dma-channels = <4>; >>>> arch/arm/boot/dts/imx6sx.dtsi: compatible = "fsl,imx6sx-dma-apbh", >>>> "fsl,imx28-dma-apbh"; >>>> arch/arm/boot/dts/imx6sx.dtsi- dma-channels = <4>; >>>> arch/arm/boot/dts/imx6ul.dtsi: compatible = "fsl,imx6q-dma-apbh", >>>> "fsl,imx28-dma-apbh"; >>>> arch/arm/boot/dts/imx6ul.dtsi- dma-channels = <4>; >>>> arch/arm/boot/dts/imx7s.dtsi: compatible = "fsl,imx7d-dma-apbh", >>>> "fsl,imx28-dma-apbh"; >>>> arch/arm/boot/dts/imx7s.dtsi- dma-channels = <4>; >>>> arch/arm64/boot/dts/freescale/imx8mm.dtsi: compatible = >>>> "fsl,imx7d-dma-apbh", "fsl,imx28-dma-apbh"; >>>> arch/arm64/boot/dts/freescale/imx8mm.dtsi- dma-channels = <4>; >>>> arch/arm64/boot/dts/freescale/imx8mn.dtsi: compatible = >>>> "fsl,imx7d-dma-apbh", "fsl,imx28-dma-apbh"; >>>> arch/arm64/boot/dts/freescale/imx8mn.dtsi- dma-channels = <4>; >>>> >>>> So I think what we have to do to validate that, is, say >>>> >>>> default: 4 >>>> >>>> if does not match on 6q/6sx/7d/23-apbx/28-abbh/28-apbx then 8 >>>> >>>> if does not match on 6q/6sx/7d/23-apbh then 16 >>>> >>>> But if there is a better way to validate the above, please do tell. >>> >>> Then your existing if:then: is also not correct because you require for >>> fsl,imx28-dma-apbh (as it is not in second if:then:) const:16. Just >>> don't require it. >> >> So, shall I just drop the entire allOf: section ? > > No, what about the interrupts? The interrupts and dma-channels are matched 1:1 for this controller, 1 DMA channel, 1 interrupt. 16 dma channels means 16 interrupts .
On 19/12/2022 09:46, Marek Vasut wrote: >>>>> if does not match on 6q/6sx/7d/23-apbx/28-abbh/28-apbx then 8 >>>>> >>>>> if does not match on 6q/6sx/7d/23-apbh then 16 >>>>> >>>>> But if there is a better way to validate the above, please do tell. >>>> >>>> Then your existing if:then: is also not correct because you require for >>>> fsl,imx28-dma-apbh (as it is not in second if:then:) const:16. Just >>>> don't require it. >>> >>> So, shall I just drop the entire allOf: section ? >> >> No, what about the interrupts? > > The interrupts and dma-channels are matched 1:1 for this controller, 1 > DMA channel, 1 interrupt. 16 dma channels means 16 interrupts . Ah, then probably you need to drop entire allOf,. Best regards, Krzysztof
On 12/19/22 09:57, Krzysztof Kozlowski wrote: > On 19/12/2022 09:46, Marek Vasut wrote: > >>>>>> if does not match on 6q/6sx/7d/23-apbx/28-abbh/28-apbx then 8 >>>>>> >>>>>> if does not match on 6q/6sx/7d/23-apbh then 16 >>>>>> >>>>>> But if there is a better way to validate the above, please do tell. >>>>> >>>>> Then your existing if:then: is also not correct because you require for >>>>> fsl,imx28-dma-apbh (as it is not in second if:then:) const:16. Just >>>>> don't require it. >>>> >>>> So, shall I just drop the entire allOf: section ? >>> >>> No, what about the interrupts? >> >> The interrupts and dma-channels are matched 1:1 for this controller, 1 >> DMA channel, 1 interrupt. 16 dma channels means 16 interrupts . > > Ah, then probably you need to drop entire allOf,. Oh well ... too bad.
diff --git a/Documentation/devicetree/bindings/dma/fsl,mxs-dma.yaml b/Documentation/devicetree/bindings/dma/fsl,mxs-dma.yaml new file mode 100644 index 0000000000000..46a579423b0d1 --- /dev/null +++ b/Documentation/devicetree/bindings/dma/fsl,mxs-dma.yaml @@ -0,0 +1,115 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/dma/fsl,mxs-dma.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Freescale Direct Memory Access (DMA) Controller from i.MX23/i.MX28 + +maintainers: + - Marek Vasut <marex@denx.de> + +properties: + compatible: + oneOf: + - items: + - enum: + - fsl,imx6q-dma-apbh + - fsl,imx6sx-dma-apbh + - fsl,imx7d-dma-apbh + - const: fsl,imx28-dma-apbh + - items: + - enum: + - fsl,imx23-dma-apbh + - fsl,imx23-dma-apbx + - fsl,imx28-dma-apbh + - fsl,imx28-dma-apbx + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + interrupts: + minItems: 4 + maxItems: 16 + + "#dma-cells": + const: 1 + + dma-channels: + enum: [4, 8, 16] + +required: + - compatible + - reg + - "#dma-cells" + - dma-channels + - interrupts + +allOf: + - $ref: dma-controller.yaml# + - if: + properties: + compatible: + not: + contains: + enum: + - fsl,imx6q-dma-apbh + - fsl,imx6sx-dma-apbh + - fsl,imx7d-dma-apbh + - fsl,imx23-dma-apbx + - fsl,imx28-dma-apbh + - fsl,imx28-dma-apbx + then: + properties: + dma-channels: + const: 8 + interrupts: + maxItems: 8 + - if: + properties: + compatible: + not: + contains: + enum: + - fsl,imx6q-dma-apbh + - fsl,imx6sx-dma-apbh + - fsl,imx7d-dma-apbh + - fsl,imx23-dma-apbh + then: + properties: + dma-channels: + const: 16 + interrupts: + maxItems: 16 + +additionalProperties: false + +examples: + - | + interrupt-parent = <&irqc>; + + dma-controller@80004000 { + compatible = "fsl,imx28-dma-apbh"; + reg = <0x80004000 0x2000>; + interrupts = <82 83 84 85 + 88 88 88 88 + 88 88 88 88 + 87 86 0 0>; + #dma-cells = <1>; + dma-channels = <16>; + }; + + dma-controller@80024000 { + compatible = "fsl,imx28-dma-apbx"; + reg = <0x80024000 0x2000>; + interrupts = <78 79 66 0 + 80 81 68 69 + 70 71 72 73 + 74 75 76 77>; + #dma-cells = <1>; + dma-channels = <16>; + }; + +... diff --git a/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt b/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt deleted file mode 100644 index e30e184f50c72..0000000000000 --- a/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt +++ /dev/null @@ -1,60 +0,0 @@ -* Freescale MXS DMA - -Required properties: -- compatible : Should be "fsl,<chip>-dma-apbh" or "fsl,<chip>-dma-apbx" -- reg : Should contain registers location and length -- interrupts : Should contain the interrupt numbers of DMA channels. - If a channel is empty/reserved, 0 should be filled in place. -- #dma-cells : Must be <1>. The number cell specifies the channel ID. -- dma-channels : Number of channels supported by the DMA controller - -Optional properties: -- interrupt-names : Name of DMA channel interrupts - -Supported chips: -imx23, imx28. - -Examples: - -dma_apbh: dma-apbh@80004000 { - compatible = "fsl,imx28-dma-apbh"; - reg = <0x80004000 0x2000>; - interrupts = <82 83 84 85 - 88 88 88 88 - 88 88 88 88 - 87 86 0 0>; - interrupt-names = "ssp0", "ssp1", "ssp2", "ssp3", - "gpmi0", "gmpi1", "gpmi2", "gmpi3", - "gpmi4", "gmpi5", "gpmi6", "gmpi7", - "hsadc", "lcdif", "empty", "empty"; - #dma-cells = <1>; - dma-channels = <16>; -}; - -dma_apbx: dma-apbx@80024000 { - compatible = "fsl,imx28-dma-apbx"; - reg = <0x80024000 0x2000>; - interrupts = <78 79 66 0 - 80 81 68 69 - 70 71 72 73 - 74 75 76 77>; - interrupt-names = "auart4-rx", "auart4-tx", "spdif-tx", "empty", - "saif0", "saif1", "i2c0", "i2c1", - "auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx", - "auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx"; - #dma-cells = <1>; - dma-channels = <16>; -}; - -DMA clients connected to the MXS DMA controller must use the format -described in the dma.txt file. - -Examples: - -auart0: serial@8006a000 { - compatible = "fsl,imx28-auart", "fsl,imx23-auart"; - reg = <0x8006a000 0x2000>; - interrupts = <112>; - dmas = <&dma_apbx 8>, <&dma_apbx 9>; - dma-names = "rx", "tx"; -};
Convert the MXS DMA binding to DT schema format using json-schema. Drop "interrupt-names" property, since it is broken. The drivers/dma/mxs-dma.c in Linux kernel does not use it, the property contains duplicate array entries in existing DTs, and even malformed entries (gmpi, should have been gpmi). Get rid of that optional property altogether. Update example node names to be standard dma-controller@ , add global interrupt-parent property into example. Signed-off-by: Marek Vasut <marex@denx.de> --- Cc: Fabio Estevam <festevam@gmail.com> Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org> Cc: NXP Linux Team <linux-imx@nxp.com> Cc: Pengutronix Kernel Team <kernel@pengutronix.de> Cc: Rob Herring <robh+dt@kernel.org> Cc: Sascha Hauer <s.hauer@pengutronix.de> Cc: Shawn Guo <shawnguo@kernel.org> Cc: Vinod Koul <vkoul@kernel.org> Cc: dmaengine@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org To: devicetree@vger.kernel.org --- .../devicetree/bindings/dma/fsl,mxs-dma.yaml | 115 ++++++++++++++++++ .../devicetree/bindings/dma/fsl-mxs-dma.txt | 60 --------- 2 files changed, 115 insertions(+), 60 deletions(-) create mode 100644 Documentation/devicetree/bindings/dma/fsl,mxs-dma.yaml delete mode 100644 Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt