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