Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/dma/fsl,edma.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006 
0007 title: Freescale enhanced Direct Memory Access(eDMA) Controller
0008 
0009 description: |
0010   The eDMA channels have multiplex capability by programmable
0011   memory-mapped registers. channels are split into two groups, called
0012   DMAMUX0 and DMAMUX1, specific DMA request source can only be multiplexed
0013   by any channel of certain group, DMAMUX0 or DMAMUX1, but not both.
0014 
0015 maintainers:
0016   - Peng Fan <peng.fan@nxp.com>
0017 
0018 properties:
0019   compatible:
0020     oneOf:
0021       - enum:
0022           - fsl,vf610-edma
0023           - fsl,imx7ulp-edma
0024       - items:
0025           - const: fsl,ls1028a-edma
0026           - const: fsl,vf610-edma
0027 
0028   reg:
0029     minItems: 2
0030     maxItems: 3
0031 
0032   interrupts:
0033     minItems: 2
0034     maxItems: 17
0035 
0036   interrupt-names:
0037     minItems: 2
0038     maxItems: 17
0039 
0040   "#dma-cells":
0041     const: 2
0042 
0043   dma-channels:
0044     const: 32
0045 
0046   clocks:
0047     maxItems: 2
0048 
0049   clock-names:
0050     maxItems: 2
0051 
0052   big-endian:
0053     description: |
0054       If present registers and hardware scatter/gather descriptors of the
0055       eDMA are implemented in big endian mode, otherwise in little mode.
0056     type: boolean
0057 
0058 required:
0059   - "#dma-cells"
0060   - compatible
0061   - reg
0062   - interrupts
0063   - clocks
0064   - dma-channels
0065 
0066 allOf:
0067   - $ref: "dma-controller.yaml#"
0068   - if:
0069       properties:
0070         compatible:
0071           contains:
0072             const: fsl,vf610-edma
0073     then:
0074       properties:
0075         clock-names:
0076           items:
0077             - const: dmamux0
0078             - const: dmamux1
0079         interrupts:
0080           maxItems: 2
0081         interrupt-names:
0082           items:
0083             - const: edma-tx
0084             - const: edma-err
0085         reg:
0086           maxItems: 3
0087 
0088   - if:
0089       properties:
0090         compatible:
0091           contains:
0092             const: fsl,imx7ulp-edma
0093     then:
0094       properties:
0095         clock-names:
0096           items:
0097             - const: dma
0098             - const: dmamux0
0099         interrupts:
0100           maxItems: 17
0101         reg:
0102           maxItems: 2
0103 
0104 unevaluatedProperties: false
0105 
0106 examples:
0107   - |
0108     #include <dt-bindings/interrupt-controller/arm-gic.h>
0109     #include <dt-bindings/clock/vf610-clock.h>
0110 
0111     edma0: dma-controller@40018000 {
0112       #dma-cells = <2>;
0113       compatible = "fsl,vf610-edma";
0114       reg = <0x40018000 0x2000>,
0115             <0x40024000 0x1000>,
0116             <0x40025000 0x1000>;
0117       interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>,
0118                    <0 9 IRQ_TYPE_LEVEL_HIGH>;
0119       interrupt-names = "edma-tx", "edma-err";
0120       dma-channels = <32>;
0121       clock-names = "dmamux0", "dmamux1";
0122       clocks = <&clks VF610_CLK_DMAMUX0>, <&clks VF610_CLK_DMAMUX1>;
0123     };
0124 
0125   - |
0126     #include <dt-bindings/interrupt-controller/arm-gic.h>
0127     #include <dt-bindings/clock/imx7ulp-clock.h>
0128 
0129     edma1: dma-controller@40080000 {
0130       #dma-cells = <2>;
0131       compatible = "fsl,imx7ulp-edma";
0132       reg = <0x40080000 0x2000>,
0133             <0x40210000 0x1000>;
0134       dma-channels = <32>;
0135       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
0136                    <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
0137                    <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
0138                    <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
0139                    <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
0140                    <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
0141                    <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
0142                    <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
0143                    <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
0144                    <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
0145                    <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
0146                    <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
0147                    <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
0148                    <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
0149                    <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
0150                    <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
0151                    /* last is eDMA2-ERR interrupt */
0152                    <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
0153        clock-names = "dma", "dmamux0";
0154        clocks = <&pcc2 IMX7ULP_CLK_DMA1>, <&pcc2 IMX7ULP_CLK_DMA_MUX1>;
0155     };