Back to home page

OSCL-LXR

 
 

    


0001 Xilinx AXI VDMA engine, it does transfers between memory and video devices.
0002 It can be configured to have one channel or two channels. If configured
0003 as two channels, one is to transmit to the video device and another is
0004 to receive from the video device.
0005 
0006 Xilinx AXI DMA engine, it does transfers between memory and AXI4 stream
0007 target devices. It can be configured to have one channel or two channels.
0008 If configured as two channels, one is to transmit to the device and another
0009 is to receive from the device.
0010 
0011 Xilinx AXI CDMA engine, it does transfers between memory-mapped source
0012 address and a memory-mapped destination address.
0013 
0014 Xilinx AXI MCDMA engine, it does transfer between memory and AXI4 stream
0015 target devices. It can be configured to have up to 16 independent transmit
0016 and receive channels.
0017 
0018 Required properties:
0019 - compatible: Should be one of-
0020                 "xlnx,axi-vdma-1.00.a"
0021                 "xlnx,axi-dma-1.00.a"
0022                 "xlnx,axi-cdma-1.00.a"
0023                 "xlnx,axi-mcdma-1.00.a"
0024 - #dma-cells: Should be <1>, see "dmas" property below
0025 - reg: Should contain VDMA registers location and length.
0026 - xlnx,addrwidth: Should be the vdma addressing size in bits(ex: 32 bits).
0027 - dma-ranges: Should be as the following <dma_addr cpu_addr max_len>.
0028 - dma-channel child node: Should have at least one channel and can have up to
0029         two channels per device. This node specifies the properties of each
0030         DMA channel (see child node properties below).
0031 - clocks: Input clock specifier. Refer to common clock bindings.
0032 - clock-names: List of input clocks
0033         For VDMA:
0034         Required elements: "s_axi_lite_aclk"
0035         Optional elements: "m_axi_mm2s_aclk" "m_axi_s2mm_aclk",
0036                            "m_axis_mm2s_aclk", "s_axis_s2mm_aclk"
0037         For CDMA:
0038         Required elements: "s_axi_lite_aclk", "m_axi_aclk"
0039         For AXIDMA and MCDMA:
0040         Required elements: "s_axi_lite_aclk"
0041         Optional elements: "m_axi_mm2s_aclk", "m_axi_s2mm_aclk",
0042                            "m_axi_sg_aclk"
0043 
0044 Required properties for VDMA:
0045 - xlnx,num-fstores: Should be the number of framebuffers as configured in h/w.
0046 
0047 Optional properties for AXI DMA and MCDMA:
0048 - xlnx,sg-length-width: Should be set to the width in bits of the length
0049         register as configured in h/w. Takes values {8...26}. If the property
0050         is missing or invalid then the default value 23 is used. This is the
0051         maximum value that is supported by all IP versions.
0052 Optional properties for VDMA:
0053 - xlnx,flush-fsync: Tells which channel to Flush on Frame sync.
0054         It takes following values:
0055         {1}, flush both channels
0056         {2}, flush mm2s channel
0057         {3}, flush s2mm channel
0058 
0059 Required child node properties:
0060 - compatible:
0061         For VDMA: It should be either "xlnx,axi-vdma-mm2s-channel" or
0062         "xlnx,axi-vdma-s2mm-channel".
0063         For CDMA: It should be "xlnx,axi-cdma-channel".
0064         For AXIDMA and MCDMA: It should be either "xlnx,axi-dma-mm2s-channel"
0065         or "xlnx,axi-dma-s2mm-channel".
0066 - interrupts: Should contain per channel VDMA interrupts.
0067 - xlnx,datawidth: Should contain the stream data width, take values
0068         {32,64...1024}.
0069 
0070 Optional child node properties:
0071 - xlnx,include-dre: Tells hardware is configured for Data
0072         Realignment Engine.
0073 Optional child node properties for VDMA:
0074 - xlnx,genlock-mode: Tells Genlock synchronization is
0075         enabled/disabled in hardware.
0076 - xlnx,enable-vert-flip: Tells vertical flip is
0077         enabled/disabled in hardware(S2MM path).
0078 Optional child node properties for MCDMA:
0079 - dma-channels: Number of dma channels in child node.
0080 
0081 Example:
0082 ++++++++
0083 
0084 axi_vdma_0: axivdma@40030000 {
0085         compatible = "xlnx,axi-vdma-1.00.a";
0086         #dma_cells = <1>;
0087         reg = < 0x40030000 0x10000 >;
0088         dma-ranges = <0x00000000 0x00000000 0x40000000>;
0089         xlnx,num-fstores = <0x8>;
0090         xlnx,flush-fsync = <0x1>;
0091         xlnx,addrwidth = <0x20>;
0092         clocks = <&clk 0>, <&clk 1>, <&clk 2>, <&clk 3>, <&clk 4>;
0093         clock-names = "s_axi_lite_aclk", "m_axi_mm2s_aclk", "m_axi_s2mm_aclk",
0094                       "m_axis_mm2s_aclk", "s_axis_s2mm_aclk";
0095         dma-channel@40030000 {
0096                 compatible = "xlnx,axi-vdma-mm2s-channel";
0097                 interrupts = < 0 54 4 >;
0098                 xlnx,datawidth = <0x40>;
0099         } ;
0100         dma-channel@40030030 {
0101                 compatible = "xlnx,axi-vdma-s2mm-channel";
0102                 interrupts = < 0 53 4 >;
0103                 xlnx,datawidth = <0x40>;
0104         } ;
0105 } ;
0106 
0107 
0108 * DMA client
0109 
0110 Required properties:
0111 - dmas: a list of <[Video DMA device phandle] [Channel ID]> pairs,
0112         where Channel ID is '0' for write/tx and '1' for read/rx
0113         channel. For MCMDA, MM2S channel(write/tx) ID start from
0114         '0' and is in [0-15] range. S2MM channel(read/rx) ID start
0115         from '16' and is in [16-31] range. These channels ID are
0116         fixed irrespective of IP configuration.
0117 
0118 - dma-names: a list of DMA channel names, one per "dmas" entry
0119 
0120 Example:
0121 ++++++++
0122 
0123 vdmatest_0: vdmatest@0 {
0124         compatible ="xlnx,axi-vdma-test-1.00.a";
0125         dmas = <&axi_vdma_0 0
0126                 &axi_vdma_0 1>;
0127         dma-names = "vdma0", "vdma1";
0128 } ;