summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/dma/snps-dma.txt
blob: 5bb3dfb6f1d87dd1896eb601fc0819ca1e53c871 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
* Synopsys Designware DMA Controller

Required properties:
- compatible: "snps,dma-spear1340"
- reg: Address range of the DMAC registers
- interrupt-parent: Should be the phandle for the interrupt controller
  that services interrupts for this device
- interrupt: Should contain the DMAC interrupt number
- nr_channels: Number of channels supported by hardware
- is_private: The device channels should be marked as private and not for by the
  general purpose DMA channel allocator. False if not passed.
- chan_allocation_order: order of allocation of channel, 0 (default): ascending,
  1: descending
- chan_priority: priority of channels. 0 (default): increase from chan 0->n, 1:
  increase from chan n->0
- block_size: Maximum block size supported by the controller
- nr_masters: Number of AHB masters supported by the controller
- data_width: Maximum data width supported by hardware per AHB master
  (0 - 8bits, 1 - 16bits, ..., 5 - 256bits)
- slave_info:
	- bus_id: name of this device channel, not just a device name since
	  devices may have more than one channel e.g. "foo_tx". For using the
	  dw_generic_filter(), slave drivers must pass exactly this string as
	  param to filter function.
	- cfg_hi: Platform-specific initializer for the CFG_HI register
	- cfg_lo: Platform-specific initializer for the CFG_LO register
	- src_master: src master for transfers on allocated channel.
	- dst_master: dest master for transfers on allocated channel.

Example:

	dma@fc000000 {
		compatible = "snps,dma-spear1340";
		reg = <0xfc000000 0x1000>;
		interrupt-parent = <&vic1>;
		interrupts = <12>;

		nr_channels = <8>;
		chan_allocation_order = <1>;
		chan_priority = <1>;
		block_size = <0xfff>;
		nr_masters = <2>;
		data_width = <3 3 0 0>;

		slave_info {
			uart0-tx {
				bus_id = "uart0-tx";
				cfg_hi = <0x4000>;	/* 0x8 << 11 */
				cfg_lo = <0>;
				src_master = <0>;
				dst_master = <1>;
			};
			spi0-tx {
				bus_id = "spi0-tx";
				cfg_hi = <0x2000>;	/* 0x4 << 11 */
				cfg_lo = <0>;
				src_master = <0>;
				dst_master = <0>;
			};
		};
	};