On Thu, Apr 29, 2021 at 2:25 PM Corentin Labbe <clabbe@xxxxxxxxxxxx> wrote: > > Converts dma/arm-pl08x.txt to yaml. > In the process, I add an example for the faraday variant. > > Signed-off-by: Corentin Labbe <clabbe@xxxxxxxxxxxx> > --- > Changes since v1: > - fixes yamllint warning about indent > - added select > - fixed example (needed includes) > > .../devicetree/bindings/dma/arm-pl08x.txt | 59 -------- > .../devicetree/bindings/dma/arm-pl08x.yaml | 141 ++++++++++++++++++ > 2 files changed, 141 insertions(+), 59 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/dma/arm-pl08x.txt > create mode 100644 Documentation/devicetree/bindings/dma/arm-pl08x.yaml > diff --git a/Documentation/devicetree/bindings/dma/arm-pl08x.yaml b/Documentation/devicetree/bindings/dma/arm-pl08x.yaml > new file mode 100644 > index 000000000000..06dec6f3e9a8 > --- /dev/null > +++ b/Documentation/devicetree/bindings/dma/arm-pl08x.yaml > @@ -0,0 +1,141 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/dma/arm-pl08x.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: ARM PrimeCells PL080 and PL081 and derivatives DMA controller > + > +maintainers: > + - Vinod Koul <vkoul@xxxxxxxxxx> > + > +allOf: > + - $ref: "dma-controller.yaml#" > + > +# We need a select here so we don't match all nodes with 'arm,primecell' > +select: > + properties: > + compatible: > + contains: > + enum: > + - arm,pl080 > + - arm,pl081 > + required: > + - compatible > + > +properties: > + compatible: > + oneOf: > + - items: > + - const: "arm,pl080" > + - const: "arm,primecell" > + - items: > + - const: "arm,pl081" > + - const: "arm,primecell" The first 2 oneOf entries can be combined into one. And you don't need quotes. > + - items: > + - const: faraday,ftdma020 > + - const: arm,pl080 > + - const: arm,primecell blank line between each DT property > + arm,primecell-periphid: > + $ref: /schemas/types.yaml#/definitions/uint32 This already has a type in the common definition, so drop. > + description: on the FTDMAC020 the primecell ID is not hard-coded > + in the hardware and must be specified here as <0x0003b080>. This number > + follows the PrimeCell standard numbering using the JEP106 vendor code 0x38 > + for Faraday Technology. > + reg: > + minItems: 1 Convention is 'maxItems: 1'. > + description: Address range of the PL08x registers > + interrupts: > + minItems: 1 > + description: The PL08x interrupt number > + clocks: > + minItems: 1 > + description: The clock running the IP core clock > + clock-names: > + const: "apb_pclk" primecell.yaml already covers this IIRC. Just 'maxItems: 1' is fine here. > + lli-bus-interface-ahb1: > + type: boolean > + description: if AHB master 1 is eligible for fetching LLIs > + lli-bus-interface-ahb2: > + type: boolean > + description: if AHB master 2 is eligible for fetching LLIs > + mem-bus-interface-ahb1: > + type: boolean > + description: if AHB master 1 is eligible for fetching memory contents > + mem-bus-interface-ahb2: > + type: boolean > + description: if AHB master 2 is eligible for fetching memory contents > + "#dma-cells": > + const: 2 > + description: must be <2>. First cell should contain the DMA request, 'must be <2>' is already stated by the schema. > + second cell should contain either 1 or 2 depending on > + which AHB master that is used. > + > + memcpy-burst-size: > + $ref: /schemas/types.yaml#/definitions/uint32 > + enum: > + - 1 > + - 4 > + - 8 > + - 16 > + - 32 > + - 64 > + - 128 > + - 256 > + description: the size of the bursts for memcpy > + memcpy-bus-width: > + $ref: /schemas/types.yaml#/definitions/uint32 > + enum: > + - 8 > + - 16 > + - 32 > + - 64 > + description: | Don't need '|' unless you need to preserve formatting. > + the bus width used for memcpy in bits: 8, 16 or 32 are legal > + values, the Faraday FTDMAC020 can also accept 64 bits > + > +required: > + - reg > + - interrupts > + - clocks > + - clock-names > + - "#dma-cells" > + > +unevaluatedProperties: false > + > +examples: > + - | > + dmac0: dma-controller@10130000 { > + compatible = "arm,pl080", "arm,primecell"; > + reg = <0x10130000 0x1000>; > + interrupt-parent = <&vica>; > + interrupts = <15>; > + clocks = <&hclkdma0>; > + clock-names = "apb_pclk"; > + lli-bus-interface-ahb1; > + lli-bus-interface-ahb2; > + mem-bus-interface-ahb2; > + memcpy-burst-size = <256>; > + memcpy-bus-width = <32>; > + #dma-cells = <2>; > + }; > + - | > + #include <dt-bindings/interrupt-controller/irq.h> > + #include <dt-bindings/reset/cortina,gemini-reset.h> > + #include <dt-bindings/clock/cortina,gemini-clock.h> > + dma-controller@67000000 { > + compatible = "faraday,ftdma020", "arm,pl080", "arm,primecell"; > + /* Faraday Technology FTDMAC020 variant */ > + arm,primecell-periphid = <0x0003b080>; > + reg = <0x67000000 0x1000>; > + interrupts = <9 IRQ_TYPE_EDGE_RISING>; > + resets = <&syscon GEMINI_RESET_DMAC>; > + clocks = <&syscon GEMINI_CLK_AHB>; > + clock-names = "apb_pclk"; > + /* Bus interface AHB1 (AHB0) is totally tilted */ > + lli-bus-interface-ahb2; > + mem-bus-interface-ahb2; > + memcpy-burst-size = <256>; > + memcpy-bus-width = <32>; > + #dma-cells = <2>; > + }; > -- > 2.26.3 >