diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-10 11:55:08 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-10 11:55:08 -0400 |
| commit | 6c61403a446b5ee54c21cecabdc821acf06f96bf (patch) | |
| tree | 26423d750d6e0d793ac1751b92025250461e9a4e /Documentation/devicetree/bindings/dma | |
| parent | edf2377c4776ce20ae990f27f0248e88a37e25c4 (diff) | |
| parent | 8673bcef8c1b07b83e9ee02d5e7f4b66507b03cd (diff) | |
Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma
Pull slave-dmaengine updates from Vinod Koul:
- New driver for Qcom bam dma
- New driver for RCAR peri-peri
- New driver for FSL eDMA
- Various odd fixes and updates thru the subsystem
* 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma: (29 commits)
dmaengine: add Qualcomm BAM dma driver
shdma: add R-Car Audio DMAC peri peri driver
dmaengine: sirf: enable generic dt binding for dma channels
dma: omap-dma: Implement device_slave_caps callback
dmaengine: qcom_bam_dma: Add device tree binding
dma: dw: Add suspend and resume handling for PCI mode DW_DMAC.
dma: dw: allocate memory in two stages in probe
Add new line to test result strings produced in verbose mode
dmaengine: pch_dma: use tasklet_kill in teardown
dmaengine: at_hdmac: use tasklet_kill in teardown
dma: cppi41: start tear down only if channel is busy
usb: musb: musb_cppi41: Dont reprogram DMA if tear down is initiated
dmaengine: s3c24xx-dma: make phy->irq signed for error handling
dma: imx-dma: Add missing module owner field
dma: imx-dma: Replace printk with dev_*
dma: fsl-edma: fix static checker warning of NULL dereference
dma: Remove comment about embedding dma_slave_config into custom structs
dma: mmp_tdma: move to generic device tree binding
dma: mmp_pdma: add IRQF_SHARED when request irq
dma: edma: Fix memory leak in edma_prep_dma_cyclic()
...
Diffstat (limited to 'Documentation/devicetree/bindings/dma')
| -rw-r--r-- | Documentation/devicetree/bindings/dma/fsl-edma.txt | 76 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/dma/qcom_bam_dma.txt | 41 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/dma/sirfsoc-dma.txt | 43 |
3 files changed, 160 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/dma/fsl-edma.txt b/Documentation/devicetree/bindings/dma/fsl-edma.txt new file mode 100644 index 000000000000..191d7bd8a6fe --- /dev/null +++ b/Documentation/devicetree/bindings/dma/fsl-edma.txt | |||
| @@ -0,0 +1,76 @@ | |||
| 1 | * Freescale enhanced Direct Memory Access(eDMA) Controller | ||
| 2 | |||
| 3 | The eDMA channels have multiplex capability by programmble memory-mapped | ||
| 4 | registers. channels are split into two groups, called DMAMUX0 and DMAMUX1, | ||
| 5 | specific DMA request source can only be multiplexed by any channel of certain | ||
| 6 | group, DMAMUX0 or DMAMUX1, but not both. | ||
| 7 | |||
| 8 | * eDMA Controller | ||
| 9 | Required properties: | ||
| 10 | - compatible : | ||
| 11 | - "fsl,vf610-edma" for eDMA used similar to that on Vybrid vf610 SoC | ||
| 12 | - reg : Specifies base physical address(s) and size of the eDMA registers. | ||
| 13 | The 1st region is eDMA control register's address and size. | ||
| 14 | The 2nd and the 3rd regions are programmable channel multiplexing | ||
| 15 | control register's address and size. | ||
| 16 | - interrupts : A list of interrupt-specifiers, one for each entry in | ||
| 17 | interrupt-names. | ||
| 18 | - interrupt-names : Should contain: | ||
| 19 | "edma-tx" - the transmission interrupt | ||
| 20 | "edma-err" - the error interrupt | ||
| 21 | - #dma-cells : Must be <2>. | ||
| 22 | The 1st cell specifies the DMAMUX(0 for DMAMUX0 and 1 for DMAMUX1). | ||
| 23 | Specific request source can only be multiplexed by specific channels | ||
| 24 | group called DMAMUX. | ||
| 25 | The 2nd cell specifies the request source(slot) ID. | ||
| 26 | See the SoC's reference manual for all the supported request sources. | ||
| 27 | - dma-channels : Number of channels supported by the controller | ||
| 28 | - clock-names : A list of channel group clock names. Should contain: | ||
| 29 | "dmamux0" - clock name of mux0 group | ||
| 30 | "dmamux1" - clock name of mux1 group | ||
| 31 | - clocks : A list of phandle and clock-specifier pairs, one for each entry in | ||
| 32 | clock-names. | ||
| 33 | |||
| 34 | Optional properties: | ||
| 35 | - big-endian: If present registers and hardware scatter/gather descriptors | ||
| 36 | of the eDMA are implemented in big endian mode, otherwise in little | ||
| 37 | mode. | ||
| 38 | |||
| 39 | |||
| 40 | Examples: | ||
| 41 | |||
| 42 | edma0: dma-controller@40018000 { | ||
| 43 | #dma-cells = <2>; | ||
| 44 | compatible = "fsl,vf610-edma"; | ||
| 45 | reg = <0x40018000 0x2000>, | ||
| 46 | <0x40024000 0x1000>, | ||
| 47 | <0x40025000 0x1000>; | ||
| 48 | interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>, | ||
| 49 | <0 9 IRQ_TYPE_LEVEL_HIGH>; | ||
| 50 | interrupt-names = "edma-tx", "edma-err"; | ||
| 51 | dma-channels = <32>; | ||
| 52 | clock-names = "dmamux0", "dmamux1"; | ||
| 53 | clocks = <&clks VF610_CLK_DMAMUX0>, | ||
| 54 | <&clks VF610_CLK_DMAMUX1>; | ||
| 55 | }; | ||
| 56 | |||
| 57 | |||
| 58 | * DMA clients | ||
| 59 | DMA client drivers that uses the DMA function must use the format described | ||
| 60 | in the dma.txt file, using a two-cell specifier for each channel: the 1st | ||
| 61 | specifies the channel group(DMAMUX) in which this request can be multiplexed, | ||
| 62 | and the 2nd specifies the request source. | ||
| 63 | |||
| 64 | Examples: | ||
| 65 | |||
| 66 | sai2: sai@40031000 { | ||
| 67 | compatible = "fsl,vf610-sai"; | ||
| 68 | reg = <0x40031000 0x1000>; | ||
| 69 | interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>; | ||
| 70 | clock-names = "sai"; | ||
| 71 | clocks = <&clks VF610_CLK_SAI2>; | ||
| 72 | dma-names = "tx", "rx"; | ||
| 73 | dmas = <&edma0 0 21>, | ||
| 74 | <&edma0 0 20>; | ||
| 75 | status = "disabled"; | ||
| 76 | }; | ||
diff --git a/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt b/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt new file mode 100644 index 000000000000..d75a9d767022 --- /dev/null +++ b/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | QCOM BAM DMA controller | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: must contain "qcom,bam-v1.4.0" for MSM8974 | ||
| 5 | - reg: Address range for DMA registers | ||
| 6 | - interrupts: Should contain the one interrupt shared by all channels | ||
| 7 | - #dma-cells: must be <1>, the cell in the dmas property of the client device | ||
| 8 | represents the channel number | ||
| 9 | - clocks: required clock | ||
| 10 | - clock-names: must contain "bam_clk" entry | ||
| 11 | - qcom,ee : indicates the active Execution Environment identifier (0-7) used in | ||
| 12 | the secure world. | ||
| 13 | |||
| 14 | Example: | ||
| 15 | |||
| 16 | uart-bam: dma@f9984000 = { | ||
| 17 | compatible = "qcom,bam-v1.4.0"; | ||
| 18 | reg = <0xf9984000 0x15000>; | ||
| 19 | interrupts = <0 94 0>; | ||
| 20 | clocks = <&gcc GCC_BAM_DMA_AHB_CLK>; | ||
| 21 | clock-names = "bam_clk"; | ||
| 22 | #dma-cells = <1>; | ||
| 23 | qcom,ee = <0>; | ||
| 24 | }; | ||
| 25 | |||
| 26 | DMA clients must use the format described in the dma.txt file, using a two cell | ||
| 27 | specifier for each channel. | ||
| 28 | |||
| 29 | Example: | ||
| 30 | serial@f991e000 { | ||
| 31 | compatible = "qcom,msm-uart"; | ||
| 32 | reg = <0xf991e000 0x1000> | ||
| 33 | <0xf9944000 0x19000>; | ||
| 34 | interrupts = <0 108 0>; | ||
| 35 | clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, | ||
| 36 | <&gcc GCC_BLSP1_AHB_CLK>; | ||
| 37 | clock-names = "core", "iface"; | ||
| 38 | |||
| 39 | dmas = <&uart-bam 0>, <&uart-bam 1>; | ||
| 40 | dma-names = "rx", "tx"; | ||
| 41 | }; | ||
diff --git a/Documentation/devicetree/bindings/dma/sirfsoc-dma.txt b/Documentation/devicetree/bindings/dma/sirfsoc-dma.txt new file mode 100644 index 000000000000..ecbc96ad36f8 --- /dev/null +++ b/Documentation/devicetree/bindings/dma/sirfsoc-dma.txt | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | * CSR SiRFSoC DMA controller | ||
| 2 | |||
| 3 | See dma.txt first | ||
| 4 | |||
| 5 | Required properties: | ||
| 6 | - compatible: Should be "sirf,prima2-dmac" or "sirf,marco-dmac" | ||
| 7 | - reg: Should contain DMA registers location and length. | ||
| 8 | - interrupts: Should contain one interrupt shared by all channel | ||
| 9 | - #dma-cells: must be <1>. used to represent the number of integer | ||
| 10 | cells in the dmas property of client device. | ||
| 11 | - clocks: clock required | ||
| 12 | |||
| 13 | Example: | ||
| 14 | |||
| 15 | Controller: | ||
| 16 | dmac0: dma-controller@b00b0000 { | ||
| 17 | compatible = "sirf,prima2-dmac"; | ||
| 18 | reg = <0xb00b0000 0x10000>; | ||
| 19 | interrupts = <12>; | ||
| 20 | clocks = <&clks 24>; | ||
| 21 | #dma-cells = <1>; | ||
| 22 | }; | ||
| 23 | |||
| 24 | |||
| 25 | Client: | ||
| 26 | Fill the specific dma request line in dmas. In the below example, spi0 read | ||
| 27 | channel request line is 9 of the 2nd dma controller, while write channel uses | ||
| 28 | 4 of the 2nd dma controller; spi1 read channel request line is 12 of the 1st | ||
| 29 | dma controller, while write channel uses 13 of the 1st dma controller: | ||
| 30 | |||
| 31 | spi0: spi@b00d0000 { | ||
| 32 | compatible = "sirf,prima2-spi"; | ||
| 33 | dmas = <&dmac1 9>, | ||
| 34 | <&dmac1 4>; | ||
| 35 | dma-names = "rx", "tx"; | ||
| 36 | }; | ||
| 37 | |||
| 38 | spi1: spi@b0170000 { | ||
| 39 | compatible = "sirf,prima2-spi"; | ||
| 40 | dmas = <&dmac0 12>, | ||
| 41 | <&dmac0 13>; | ||
| 42 | dma-names = "rx", "tx"; | ||
| 43 | }; | ||
