diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-18 21:11:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-18 21:11:04 -0400 |
commit | 52d589a01d4545ce1dc5c3892bb8c7b55edfe714 (patch) | |
tree | 864858dae5d01aae411497e926679cf92392b4f6 /Documentation | |
parent | 0a582821d4f8edf41d9b56ae057ee2002fc275f0 (diff) | |
parent | 6b997bab20448cfe85456e4789d5d9222ab6b830 (diff) |
Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma
Pull slave-dmaengine updates from Vinod Koul:
"For dmaengine contributions we have:
- designware cleanup by Andy
- my series moving device_control users to dmanegine_xxx APIs for
later removal of device_control API
- minor fixes spread over drivers mainly mv_xor, pl330, mmp, imx-sdma
etc"
* 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma: (60 commits)
serial: atmel: add missing dmaengine header
dmaengine: remove FSLDMA_EXTERNAL_START
dmaengine: freescale: remove FSLDMA_EXTERNAL_START control method
carma-fpga: move to fsl_dma_external_start()
carma-fpga: use dmaengine_xxx() API
dmaengine: freescale: add and export fsl_dma_external_start()
dmaengine: add dmaengine_prep_dma_sg() helper
video: mx3fb: use dmaengine_terminate_all() API
serial: sh-sci: use dmaengine_terminate_all() API
net: ks8842: use dmaengine_terminate_all() API
mtd: sh_flctl: use dmaengine_terminate_all() API
mtd: fsmc_nand: use dmaengine_terminate_all() API
V4L2: mx3_camer: use dmaengine_pause() API
dmaengine: coh901318: use dmaengine_terminate_all() API
pata_arasan_cf: use dmaengine_terminate_all() API
dmaengine: edma: check for echan->edesc => NULL in edma_dma_pause()
dmaengine: dw: export probe()/remove() and Co to users
dmaengine: dw: enable and disable controller when needed
dmaengine: dw: always export dw_dma_{en,dis}able
dmaengine: dw: introduce dw_dma_on() helper
...
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/devicetree/bindings/dma/qcom_adm.txt | 62 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/dma/xilinx/xilinx_dma.txt | 65 | ||||
-rw-r--r-- | Documentation/dmaengine.txt | 4 |
3 files changed, 129 insertions, 2 deletions
diff --git a/Documentation/devicetree/bindings/dma/qcom_adm.txt b/Documentation/devicetree/bindings/dma/qcom_adm.txt new file mode 100644 index 000000000000..9bcab9115982 --- /dev/null +++ b/Documentation/devicetree/bindings/dma/qcom_adm.txt | |||
@@ -0,0 +1,62 @@ | |||
1 | QCOM ADM DMA Controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: must contain "qcom,adm" for IPQ/APQ8064 and MSM8960 | ||
5 | - reg: Address range for DMA registers | ||
6 | - interrupts: Should contain one interrupt shared by all channels | ||
7 | - #dma-cells: must be <2>. First cell denotes the channel number. Second cell | ||
8 | denotes CRCI (client rate control interface) flow control assignment. | ||
9 | - clocks: Should contain the core clock and interface clock. | ||
10 | - clock-names: Must contain "core" for the core clock and "iface" for the | ||
11 | interface clock. | ||
12 | - resets: Must contain an entry for each entry in reset names. | ||
13 | - reset-names: Must include the following entries: | ||
14 | - clk | ||
15 | - c0 | ||
16 | - c1 | ||
17 | - c2 | ||
18 | - qcom,ee: indicates the security domain identifier used in the secure world. | ||
19 | |||
20 | Example: | ||
21 | adm_dma: dma@18300000 { | ||
22 | compatible = "qcom,adm"; | ||
23 | reg = <0x18300000 0x100000>; | ||
24 | interrupts = <0 170 0>; | ||
25 | #dma-cells = <2>; | ||
26 | |||
27 | clocks = <&gcc ADM0_CLK>, <&gcc ADM0_PBUS_CLK>; | ||
28 | clock-names = "core", "iface"; | ||
29 | |||
30 | resets = <&gcc ADM0_RESET>, | ||
31 | <&gcc ADM0_C0_RESET>, | ||
32 | <&gcc ADM0_C1_RESET>, | ||
33 | <&gcc ADM0_C2_RESET>; | ||
34 | reset-names = "clk", "c0", "c1", "c2"; | ||
35 | qcom,ee = <0>; | ||
36 | }; | ||
37 | |||
38 | DMA clients must use the format descripted in the dma.txt file, using a three | ||
39 | cell specifier for each channel. | ||
40 | |||
41 | Each dmas request consists of 3 cells: | ||
42 | 1. phandle pointing to the DMA controller | ||
43 | 2. channel number | ||
44 | 3. CRCI assignment, if applicable. If no CRCI flow control is required, use 0. | ||
45 | The CRCI is used for flow control. It identifies the peripheral device that | ||
46 | is the source/destination for the transferred data. | ||
47 | |||
48 | Example: | ||
49 | |||
50 | spi4: spi@1a280000 { | ||
51 | status = "ok"; | ||
52 | spi-max-frequency = <50000000>; | ||
53 | |||
54 | pinctrl-0 = <&spi_pins>; | ||
55 | pinctrl-names = "default"; | ||
56 | |||
57 | cs-gpios = <&qcom_pinmux 20 0>; | ||
58 | |||
59 | dmas = <&adm_dma 6 9>, | ||
60 | <&adm_dma 5 10>; | ||
61 | dma-names = "rx", "tx"; | ||
62 | }; | ||
diff --git a/Documentation/devicetree/bindings/dma/xilinx/xilinx_dma.txt b/Documentation/devicetree/bindings/dma/xilinx/xilinx_dma.txt new file mode 100644 index 000000000000..2291c4098730 --- /dev/null +++ b/Documentation/devicetree/bindings/dma/xilinx/xilinx_dma.txt | |||
@@ -0,0 +1,65 @@ | |||
1 | Xilinx AXI DMA engine, it does transfers between memory and AXI4 stream | ||
2 | target devices. It can be configured to have one channel or two channels. | ||
3 | If configured as two channels, one is to transmit to the device and another | ||
4 | is to receive from the device. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible: Should be "xlnx,axi-dma-1.00.a" | ||
8 | - #dma-cells: Should be <1>, see "dmas" property below | ||
9 | - reg: Should contain DMA registers location and length. | ||
10 | - dma-channel child node: Should have atleast one channel and can have upto | ||
11 | two channels per device. This node specifies the properties of each | ||
12 | DMA channel (see child node properties below). | ||
13 | |||
14 | Optional properties: | ||
15 | - xlnx,include-sg: Tells whether configured for Scatter-mode in | ||
16 | the hardware. | ||
17 | |||
18 | Required child node properties: | ||
19 | - compatible: It should be either "xlnx,axi-dma-mm2s-channel" or | ||
20 | "xlnx,axi-dma-s2mm-channel". | ||
21 | - interrupts: Should contain per channel DMA interrupts. | ||
22 | - xlnx,datawidth: Should contain the stream data width, take values | ||
23 | {32,64...1024}. | ||
24 | |||
25 | Option child node properties: | ||
26 | - xlnx,include-dre: Tells whether hardware is configured for Data | ||
27 | Realignment Engine. | ||
28 | |||
29 | Example: | ||
30 | ++++++++ | ||
31 | |||
32 | axi_dma_0: axidma@40400000 { | ||
33 | compatible = "xlnx,axi-dma-1.00.a"; | ||
34 | #dma_cells = <1>; | ||
35 | reg = < 0x40400000 0x10000 >; | ||
36 | dma-channel@40400000 { | ||
37 | compatible = "xlnx,axi-dma-mm2s-channel"; | ||
38 | interrupts = < 0 59 4 >; | ||
39 | xlnx,datawidth = <0x40>; | ||
40 | } ; | ||
41 | dma-channel@40400030 { | ||
42 | compatible = "xlnx,axi-dma-s2mm-channel"; | ||
43 | interrupts = < 0 58 4 >; | ||
44 | xlnx,datawidth = <0x40>; | ||
45 | } ; | ||
46 | } ; | ||
47 | |||
48 | |||
49 | * DMA client | ||
50 | |||
51 | Required properties: | ||
52 | - dmas: a list of <[DMA device phandle] [Channel ID]> pairs, | ||
53 | where Channel ID is '0' for write/tx and '1' for read/rx | ||
54 | channel. | ||
55 | - dma-names: a list of DMA channel names, one per "dmas" entry | ||
56 | |||
57 | Example: | ||
58 | ++++++++ | ||
59 | |||
60 | dmatest_0: dmatest@0 { | ||
61 | compatible ="xlnx,axi-dma-test-1.00.a"; | ||
62 | dmas = <&axi_dma_0 0 | ||
63 | &axi_dma_0 1>; | ||
64 | dma-names = "dma0", "dma1"; | ||
65 | } ; | ||
diff --git a/Documentation/dmaengine.txt b/Documentation/dmaengine.txt index 573e28ce9751..11fb87ff6cd0 100644 --- a/Documentation/dmaengine.txt +++ b/Documentation/dmaengine.txt | |||
@@ -98,7 +98,7 @@ The slave DMA usage consists of following steps: | |||
98 | unsigned long flags); | 98 | unsigned long flags); |
99 | 99 | ||
100 | The peripheral driver is expected to have mapped the scatterlist for | 100 | The peripheral driver is expected to have mapped the scatterlist for |
101 | the DMA operation prior to calling device_prep_slave_sg, and must | 101 | the DMA operation prior to calling dmaengine_prep_slave_sg(), and must |
102 | keep the scatterlist mapped until the DMA operation has completed. | 102 | keep the scatterlist mapped until the DMA operation has completed. |
103 | The scatterlist must be mapped using the DMA struct device. | 103 | The scatterlist must be mapped using the DMA struct device. |
104 | If a mapping needs to be synchronized later, dma_sync_*_for_*() must be | 104 | If a mapping needs to be synchronized later, dma_sync_*_for_*() must be |
@@ -195,5 +195,5 @@ Further APIs: | |||
195 | Note: | 195 | Note: |
196 | Not all DMA engine drivers can return reliable information for | 196 | Not all DMA engine drivers can return reliable information for |
197 | a running DMA channel. It is recommended that DMA engine users | 197 | a running DMA channel. It is recommended that DMA engine users |
198 | pause or stop (via dmaengine_terminate_all) the channel before | 198 | pause or stop (via dmaengine_terminate_all()) the channel before |
199 | using this API. | 199 | using this API. |