xref: /linux/Documentation/devicetree/bindings/dma/xilinx/xilinx_dma.txt (revision fde57a7c4474b2d00b7b82b94aa2dd0160b1bbee)
1*fde57a7cSKedareswara rao AppanaXilinx AXI VDMA engine, it does transfers between memory and video devices.
2*fde57a7cSKedareswara rao AppanaIt can be configured to have one channel or two channels. If configured
3*fde57a7cSKedareswara rao Appanaas two channels, one is to transmit to the video device and another is
4*fde57a7cSKedareswara rao Appanato receive from the video device.
5*fde57a7cSKedareswara rao Appana
6*fde57a7cSKedareswara rao AppanaXilinx AXI DMA engine, it does transfers between memory and AXI4 stream
7*fde57a7cSKedareswara rao Appanatarget devices. It can be configured to have one channel or two channels.
8*fde57a7cSKedareswara rao AppanaIf configured as two channels, one is to transmit to the device and another
9*fde57a7cSKedareswara rao Appanais to receive from the device.
10*fde57a7cSKedareswara rao Appana
11*fde57a7cSKedareswara rao AppanaXilinx AXI CDMA engine, it does transfers between memory-mapped source
12*fde57a7cSKedareswara rao Appanaaddress and a memory-mapped destination address.
13*fde57a7cSKedareswara rao Appana
14*fde57a7cSKedareswara rao AppanaRequired properties:
15*fde57a7cSKedareswara rao Appana- compatible: Should be "xlnx,axi-vdma-1.00.a" or "xlnx,axi-dma-1.00.a" or
16*fde57a7cSKedareswara rao Appana	      "xlnx,axi-cdma-1.00.a""
17*fde57a7cSKedareswara rao Appana- #dma-cells: Should be <1>, see "dmas" property below
18*fde57a7cSKedareswara rao Appana- reg: Should contain VDMA registers location and length.
19*fde57a7cSKedareswara rao Appana- xlnx,addrwidth: Should be the vdma addressing size in bits(ex: 32 bits).
20*fde57a7cSKedareswara rao Appana- dma-ranges: Should be as the following <dma_addr cpu_addr max_len>.
21*fde57a7cSKedareswara rao Appana- dma-channel child node: Should have at least one channel and can have up to
22*fde57a7cSKedareswara rao Appana	two channels per device. This node specifies the properties of each
23*fde57a7cSKedareswara rao Appana	DMA channel (see child node properties below).
24*fde57a7cSKedareswara rao Appana- clocks: Input clock specifier. Refer to common clock bindings.
25*fde57a7cSKedareswara rao Appana- clock-names: List of input clocks
26*fde57a7cSKedareswara rao Appana	For VDMA:
27*fde57a7cSKedareswara rao Appana	Required elements: "s_axi_lite_aclk"
28*fde57a7cSKedareswara rao Appana	Optional elements: "m_axi_mm2s_aclk" "m_axi_s2mm_aclk",
29*fde57a7cSKedareswara rao Appana			   "m_axis_mm2s_aclk", "s_axis_s2mm_aclk"
30*fde57a7cSKedareswara rao Appana	For CDMA:
31*fde57a7cSKedareswara rao Appana	Required elements: "s_axi_lite_aclk", "m_axi_aclk"
32*fde57a7cSKedareswara rao Appana	FOR AXIDMA:
33*fde57a7cSKedareswara rao Appana	Required elements: "s_axi_lite_aclk"
34*fde57a7cSKedareswara rao Appana	Optional elements: "m_axi_mm2s_aclk", "m_axi_s2mm_aclk",
35*fde57a7cSKedareswara rao Appana			   "m_axi_sg_aclk"
36*fde57a7cSKedareswara rao Appana
37*fde57a7cSKedareswara rao AppanaRequired properties for VDMA:
38*fde57a7cSKedareswara rao Appana- xlnx,num-fstores: Should be the number of framebuffers as configured in h/w.
39*fde57a7cSKedareswara rao Appana
40*fde57a7cSKedareswara rao AppanaOptional properties:
41*fde57a7cSKedareswara rao Appana- xlnx,include-sg: Tells configured for Scatter-mode in
42*fde57a7cSKedareswara rao Appana	the hardware.
43*fde57a7cSKedareswara rao AppanaOptional properties for AXI DMA:
44*fde57a7cSKedareswara rao Appana- xlnx,mcdma: Tells whether configured for multi-channel mode in the hardware.
45*fde57a7cSKedareswara rao AppanaOptional properties for VDMA:
46*fde57a7cSKedareswara rao Appana- xlnx,flush-fsync: Tells which channel to Flush on Frame sync.
47*fde57a7cSKedareswara rao Appana	It takes following values:
48*fde57a7cSKedareswara rao Appana	{1}, flush both channels
49*fde57a7cSKedareswara rao Appana	{2}, flush mm2s channel
50*fde57a7cSKedareswara rao Appana	{3}, flush s2mm channel
51*fde57a7cSKedareswara rao Appana
52*fde57a7cSKedareswara rao AppanaRequired child node properties:
53*fde57a7cSKedareswara rao Appana- compatible: It should be either "xlnx,axi-vdma-mm2s-channel" or
54*fde57a7cSKedareswara rao Appana	"xlnx,axi-vdma-s2mm-channel".
55*fde57a7cSKedareswara rao Appana- interrupts: Should contain per channel VDMA interrupts.
56*fde57a7cSKedareswara rao Appana- xlnx,datawidth: Should contain the stream data width, take values
57*fde57a7cSKedareswara rao Appana	{32,64...1024}.
58*fde57a7cSKedareswara rao Appana
59*fde57a7cSKedareswara rao AppanaOptional child node properties:
60*fde57a7cSKedareswara rao Appana- xlnx,include-dre: Tells hardware is configured for Data
61*fde57a7cSKedareswara rao Appana	Realignment Engine.
62*fde57a7cSKedareswara rao AppanaOptional child node properties for VDMA:
63*fde57a7cSKedareswara rao Appana- xlnx,genlock-mode: Tells Genlock synchronization is
64*fde57a7cSKedareswara rao Appana	enabled/disabled in hardware.
65*fde57a7cSKedareswara rao AppanaOptional child node properties for AXI DMA:
66*fde57a7cSKedareswara rao Appana-dma-channels: Number of dma channels in child node.
67*fde57a7cSKedareswara rao Appana
68*fde57a7cSKedareswara rao AppanaExample:
69*fde57a7cSKedareswara rao Appana++++++++
70*fde57a7cSKedareswara rao Appana
71*fde57a7cSKedareswara rao Appanaaxi_vdma_0: axivdma@40030000 {
72*fde57a7cSKedareswara rao Appana	compatible = "xlnx,axi-vdma-1.00.a";
73*fde57a7cSKedareswara rao Appana	#dma_cells = <1>;
74*fde57a7cSKedareswara rao Appana	reg = < 0x40030000 0x10000 >;
75*fde57a7cSKedareswara rao Appana	dma-ranges = <0x00000000 0x00000000 0x40000000>;
76*fde57a7cSKedareswara rao Appana	xlnx,num-fstores = <0x8>;
77*fde57a7cSKedareswara rao Appana	xlnx,flush-fsync = <0x1>;
78*fde57a7cSKedareswara rao Appana	xlnx,addrwidth = <0x20>;
79*fde57a7cSKedareswara rao Appana	clocks = <&clk 0>, <&clk 1>, <&clk 2>, <&clk 3>, <&clk 4>;
80*fde57a7cSKedareswara rao Appana	clock-names = "s_axi_lite_aclk", "m_axi_mm2s_aclk", "m_axi_s2mm_aclk",
81*fde57a7cSKedareswara rao Appana		      "m_axis_mm2s_aclk", "s_axis_s2mm_aclk";
82*fde57a7cSKedareswara rao Appana	dma-channel@40030000 {
83*fde57a7cSKedareswara rao Appana		compatible = "xlnx,axi-vdma-mm2s-channel";
84*fde57a7cSKedareswara rao Appana		interrupts = < 0 54 4 >;
85*fde57a7cSKedareswara rao Appana		xlnx,datawidth = <0x40>;
86*fde57a7cSKedareswara rao Appana	} ;
87*fde57a7cSKedareswara rao Appana	dma-channel@40030030 {
88*fde57a7cSKedareswara rao Appana		compatible = "xlnx,axi-vdma-s2mm-channel";
89*fde57a7cSKedareswara rao Appana		interrupts = < 0 53 4 >;
90*fde57a7cSKedareswara rao Appana		xlnx,datawidth = <0x40>;
91*fde57a7cSKedareswara rao Appana	} ;
92*fde57a7cSKedareswara rao Appana} ;
93*fde57a7cSKedareswara rao Appana
94*fde57a7cSKedareswara rao Appana
95*fde57a7cSKedareswara rao Appana* DMA client
96*fde57a7cSKedareswara rao Appana
97*fde57a7cSKedareswara rao AppanaRequired properties:
98*fde57a7cSKedareswara rao Appana- dmas: a list of <[Video DMA device phandle] [Channel ID]> pairs,
99*fde57a7cSKedareswara rao Appana	where Channel ID is '0' for write/tx and '1' for read/rx
100*fde57a7cSKedareswara rao Appana	channel.
101*fde57a7cSKedareswara rao Appana- dma-names: a list of DMA channel names, one per "dmas" entry
102*fde57a7cSKedareswara rao Appana
103*fde57a7cSKedareswara rao AppanaExample:
104*fde57a7cSKedareswara rao Appana++++++++
105*fde57a7cSKedareswara rao Appana
106*fde57a7cSKedareswara rao Appanavdmatest_0: vdmatest@0 {
107*fde57a7cSKedareswara rao Appana	compatible ="xlnx,axi-vdma-test-1.00.a";
108*fde57a7cSKedareswara rao Appana	dmas = <&axi_vdma_0 0
109*fde57a7cSKedareswara rao Appana		&axi_vdma_0 1>;
110*fde57a7cSKedareswara rao Appana	dma-names = "vdma0", "vdma1";
111*fde57a7cSKedareswara rao Appana} ;
112