1*4882a593SmuzhiyunXilinx AXI VDMA engine, it does transfers between memory and video devices. 2*4882a593SmuzhiyunIt can be configured to have one channel or two channels. If configured 3*4882a593Smuzhiyunas two channels, one is to transmit to the video device and another is 4*4882a593Smuzhiyunto receive from the video device. 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunXilinx AXI DMA engine, it does transfers between memory and AXI4 stream 7*4882a593Smuzhiyuntarget devices. It can be configured to have one channel or two channels. 8*4882a593SmuzhiyunIf configured as two channels, one is to transmit to the device and another 9*4882a593Smuzhiyunis to receive from the device. 10*4882a593Smuzhiyun 11*4882a593SmuzhiyunXilinx AXI CDMA engine, it does transfers between memory-mapped source 12*4882a593Smuzhiyunaddress and a memory-mapped destination address. 13*4882a593Smuzhiyun 14*4882a593SmuzhiyunXilinx AXI MCDMA engine, it does transfer between memory and AXI4 stream 15*4882a593Smuzhiyuntarget devices. It can be configured to have up to 16 independent transmit 16*4882a593Smuzhiyunand receive channels. 17*4882a593Smuzhiyun 18*4882a593SmuzhiyunRequired properties: 19*4882a593Smuzhiyun- compatible: Should be one of- 20*4882a593Smuzhiyun "xlnx,axi-vdma-1.00.a" 21*4882a593Smuzhiyun "xlnx,axi-dma-1.00.a" 22*4882a593Smuzhiyun "xlnx,axi-cdma-1.00.a" 23*4882a593Smuzhiyun "xlnx,axi-mcdma-1.00.a" 24*4882a593Smuzhiyun- #dma-cells: Should be <1>, see "dmas" property below 25*4882a593Smuzhiyun- reg: Should contain VDMA registers location and length. 26*4882a593Smuzhiyun- xlnx,addrwidth: Should be the vdma addressing size in bits(ex: 32 bits). 27*4882a593Smuzhiyun- dma-ranges: Should be as the following <dma_addr cpu_addr max_len>. 28*4882a593Smuzhiyun- dma-channel child node: Should have at least one channel and can have up to 29*4882a593Smuzhiyun two channels per device. This node specifies the properties of each 30*4882a593Smuzhiyun DMA channel (see child node properties below). 31*4882a593Smuzhiyun- clocks: Input clock specifier. Refer to common clock bindings. 32*4882a593Smuzhiyun- clock-names: List of input clocks 33*4882a593Smuzhiyun For VDMA: 34*4882a593Smuzhiyun Required elements: "s_axi_lite_aclk" 35*4882a593Smuzhiyun Optional elements: "m_axi_mm2s_aclk" "m_axi_s2mm_aclk", 36*4882a593Smuzhiyun "m_axis_mm2s_aclk", "s_axis_s2mm_aclk" 37*4882a593Smuzhiyun For CDMA: 38*4882a593Smuzhiyun Required elements: "s_axi_lite_aclk", "m_axi_aclk" 39*4882a593Smuzhiyun For AXIDMA and MCDMA: 40*4882a593Smuzhiyun Required elements: "s_axi_lite_aclk" 41*4882a593Smuzhiyun Optional elements: "m_axi_mm2s_aclk", "m_axi_s2mm_aclk", 42*4882a593Smuzhiyun "m_axi_sg_aclk" 43*4882a593Smuzhiyun 44*4882a593SmuzhiyunRequired properties for VDMA: 45*4882a593Smuzhiyun- xlnx,num-fstores: Should be the number of framebuffers as configured in h/w. 46*4882a593Smuzhiyun 47*4882a593SmuzhiyunOptional properties for AXI DMA and MCDMA: 48*4882a593Smuzhiyun- xlnx,sg-length-width: Should be set to the width in bits of the length 49*4882a593Smuzhiyun register as configured in h/w. Takes values {8...26}. If the property 50*4882a593Smuzhiyun is missing or invalid then the default value 23 is used. This is the 51*4882a593Smuzhiyun maximum value that is supported by all IP versions. 52*4882a593SmuzhiyunOptional properties for VDMA: 53*4882a593Smuzhiyun- xlnx,flush-fsync: Tells which channel to Flush on Frame sync. 54*4882a593Smuzhiyun It takes following values: 55*4882a593Smuzhiyun {1}, flush both channels 56*4882a593Smuzhiyun {2}, flush mm2s channel 57*4882a593Smuzhiyun {3}, flush s2mm channel 58*4882a593Smuzhiyun 59*4882a593SmuzhiyunRequired child node properties: 60*4882a593Smuzhiyun- compatible: 61*4882a593Smuzhiyun For VDMA: It should be either "xlnx,axi-vdma-mm2s-channel" or 62*4882a593Smuzhiyun "xlnx,axi-vdma-s2mm-channel". 63*4882a593Smuzhiyun For CDMA: It should be "xlnx,axi-cdma-channel". 64*4882a593Smuzhiyun For AXIDMA and MCDMA: It should be either "xlnx,axi-dma-mm2s-channel" 65*4882a593Smuzhiyun or "xlnx,axi-dma-s2mm-channel". 66*4882a593Smuzhiyun- interrupts: Should contain per channel VDMA interrupts. 67*4882a593Smuzhiyun- xlnx,datawidth: Should contain the stream data width, take values 68*4882a593Smuzhiyun {32,64...1024}. 69*4882a593Smuzhiyun 70*4882a593SmuzhiyunOptional child node properties: 71*4882a593Smuzhiyun- xlnx,include-dre: Tells hardware is configured for Data 72*4882a593Smuzhiyun Realignment Engine. 73*4882a593SmuzhiyunOptional child node properties for VDMA: 74*4882a593Smuzhiyun- xlnx,genlock-mode: Tells Genlock synchronization is 75*4882a593Smuzhiyun enabled/disabled in hardware. 76*4882a593Smuzhiyun- xlnx,enable-vert-flip: Tells vertical flip is 77*4882a593Smuzhiyun enabled/disabled in hardware(S2MM path). 78*4882a593SmuzhiyunOptional child node properties for MCDMA: 79*4882a593Smuzhiyun- dma-channels: Number of dma channels in child node. 80*4882a593Smuzhiyun 81*4882a593SmuzhiyunExample: 82*4882a593Smuzhiyun++++++++ 83*4882a593Smuzhiyun 84*4882a593Smuzhiyunaxi_vdma_0: axivdma@40030000 { 85*4882a593Smuzhiyun compatible = "xlnx,axi-vdma-1.00.a"; 86*4882a593Smuzhiyun #dma_cells = <1>; 87*4882a593Smuzhiyun reg = < 0x40030000 0x10000 >; 88*4882a593Smuzhiyun dma-ranges = <0x00000000 0x00000000 0x40000000>; 89*4882a593Smuzhiyun xlnx,num-fstores = <0x8>; 90*4882a593Smuzhiyun xlnx,flush-fsync = <0x1>; 91*4882a593Smuzhiyun xlnx,addrwidth = <0x20>; 92*4882a593Smuzhiyun clocks = <&clk 0>, <&clk 1>, <&clk 2>, <&clk 3>, <&clk 4>; 93*4882a593Smuzhiyun clock-names = "s_axi_lite_aclk", "m_axi_mm2s_aclk", "m_axi_s2mm_aclk", 94*4882a593Smuzhiyun "m_axis_mm2s_aclk", "s_axis_s2mm_aclk"; 95*4882a593Smuzhiyun dma-channel@40030000 { 96*4882a593Smuzhiyun compatible = "xlnx,axi-vdma-mm2s-channel"; 97*4882a593Smuzhiyun interrupts = < 0 54 4 >; 98*4882a593Smuzhiyun xlnx,datawidth = <0x40>; 99*4882a593Smuzhiyun } ; 100*4882a593Smuzhiyun dma-channel@40030030 { 101*4882a593Smuzhiyun compatible = "xlnx,axi-vdma-s2mm-channel"; 102*4882a593Smuzhiyun interrupts = < 0 53 4 >; 103*4882a593Smuzhiyun xlnx,datawidth = <0x40>; 104*4882a593Smuzhiyun } ; 105*4882a593Smuzhiyun} ; 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun* DMA client 109*4882a593Smuzhiyun 110*4882a593SmuzhiyunRequired properties: 111*4882a593Smuzhiyun- dmas: a list of <[Video DMA device phandle] [Channel ID]> pairs, 112*4882a593Smuzhiyun where Channel ID is '0' for write/tx and '1' for read/rx 113*4882a593Smuzhiyun channel. 114*4882a593Smuzhiyun- dma-names: a list of DMA channel names, one per "dmas" entry 115*4882a593Smuzhiyun 116*4882a593SmuzhiyunExample: 117*4882a593Smuzhiyun++++++++ 118*4882a593Smuzhiyun 119*4882a593Smuzhiyunvdmatest_0: vdmatest@0 { 120*4882a593Smuzhiyun compatible ="xlnx,axi-vdma-test-1.00.a"; 121*4882a593Smuzhiyun dmas = <&axi_vdma_0 0 122*4882a593Smuzhiyun &axi_vdma_0 1>; 123*4882a593Smuzhiyun dma-names = "vdma0", "vdma1"; 124*4882a593Smuzhiyun} ; 125