axivdma
Vitis Drivers API Documentation
xaxivdma_hw.h File Reference

Macros

#define XAXIVDMA_MISMATCH_ERROR   0x80000010
 Frame/Line Mismatch Error This is a typical DMA Internal Error, which on detection doesnt require a reset (as opposed to other errors). More...
 
#define XAxiVdma_ReadReg(BaseAddress, RegOffset)   XAxiVdma_In32((BaseAddress) + (RegOffset))
 Read the given register. More...
 
#define XAxiVdma_WriteReg(BaseAddress, RegOffset, Data)   XAxiVdma_Out32((BaseAddress) + (RegOffset), (Data))
 Write the given register. More...
 
Buffer Descriptor Alignment
#define XAXIVDMA_BD_MINIMUM_ALIGNMENT   0x20
 Minimum byte alignment requirement for descriptors. More...
 
#define XAXIVDMA_BD_MINIMUM_ALIGNMENT_WD   0x8
 Minimum word alignment requirement for descriptors. More...
 
#define XAXIVDMA_MAX_FRAMESTORE   32
 Maximum number of the frame store. More...
 
#define XAXIVDMA_MAX_FRAMESTORE_64   16
 Maximum # of the frame store for 64 bit. More...
 
Maximum transfer length

This is determined by hardware

#define XAXIVDMA_MAX_VSIZE   0x1FFF /* Max vertical size, 8K */
 
#define XAXIVDMA_MAX_HSIZE   0xFFFF /* Max horizontal size, 64K */
 
#define XAXIVDMA_MAX_STRIDE   0xFFFF /* Max stride size, 64K */
 
#define XAXIVDMA_FRMDLY_MAX   0xF
 Maximum frame delay. More...
 
Device registers

Register sets on TX (Read) and RX (Write) channels are identical

The version register is shared by both channels

#define XAXIVDMA_TX_OFFSET   0x00000000
 TX channel registers base. More...
 
#define XAXIVDMA_RX_OFFSET   0x00000030
 RX channel registers base. More...
 
#define XAXIVDMA_PARKPTR_OFFSET   0x00000028
 Park Pointer Register. More...
 
#define XAXIVDMA_VERSION_OFFSET   0x0000002C
 Version register. More...
 
#define XAXIVDMA_CR_OFFSET   0x00000000
 Channel control. More...
 
#define XAXIVDMA_SR_OFFSET   0x00000004
 Status. More...
 
#define XAXIVDMA_CDESC_OFFSET   0x00000008
 Current descriptor pointer. More...
 
#define XAXIVDMA_TDESC_OFFSET   0x00000010
 Tail descriptor pointer. More...
 
#define XAXIVDMA_HI_FRMBUF_OFFSET   0x00000014
 32 FrameBuf Sel More...
 
#define XAXIVDMA_FRMSTORE_OFFSET   0x00000018
 Frame Store. More...
 
#define XAXIVDMA_BUFTHRES_OFFSET   0x0000001C
 Line Buffer Thres. More...
 
#define XAXIVDMA_MM2S_ADDR_OFFSET   0x00000050
 MM2S channel Addr. More...
 
#define XAXIVDMA_S2MM_ADDR_OFFSET   0x000000A0
 S2MM channel Addr. More...
 
#define XAXIVDMA_VFLIP_OFFSET   0x000000EC
 Enable Vertical Flip Register. More...
 
#define XAXIVDMA_S2MM_DMA_IRQ_MASK_OFFSET   0x0000003C
 S2MM Err IRQ Mask. More...
 
Start Addresses Register Array for a Channel

Base offset is set in each channel This set of registers are write only, they can be read when C_ENABLE_VIDPRMTR_READS is 1.

#define XAXIVDMA_VSIZE_OFFSET   0x00000000
 Vertical size. More...
 
#define XAXIVDMA_HSIZE_OFFSET   0x00000004
 Horizontal size. More...
 
#define XAXIVDMA_STRD_FRMDLY_OFFSET   0x00000008
 Horizontal size. More...
 
#define XAXIVDMA_START_ADDR_OFFSET   0x0000000C
 Start of address. More...
 
#define XAXIVDMA_START_ADDR_LEN   0x00000004
 Each entry is 4 bytes. More...
 
#define XAXIVDMA_START_ADDR_MSB_OFFSET   0x00000010
 Start of address. More...
 
Bitmasks of the XAXIVDMA_CR_OFFSET register
#define XAXIVDMA_CR_RUNSTOP_MASK   0x00000001
 Start/stop DMA channel. More...
 
#define XAXIVDMA_CR_TAIL_EN_MASK   0x00000002
 Tail ptr enable or Park. More...
 
#define XAXIVDMA_CR_RESET_MASK   0x00000004
 Reset channel. More...
 
#define XAXIVDMA_CR_SYNC_EN_MASK   0x00000008
 Gen-lock enable. More...
 
#define XAXIVDMA_CR_FRMCNT_EN_MASK   0x00000010
 Frame count enable. More...
 
#define XAXIVDMA_CR_FSYNC_SRC_MASK   0x00000060
 Fsync Source Select. More...
 
#define XAXIVDMA_CR_GENLCK_SRC_MASK   0x00000080
 Genlock Source Select. More...
 
#define XAXIVDMA_CR_RD_PTR_MASK   0x00000F00
 Read pointer number. More...
 
#define XAXIVDMA_CR_GENLCK_RPT_MASK   0x00008000
 GenLock Repeat. More...
 
#define XAXIVDMA_VFLIP_EN_MASK   0x00000001
 Vertical flip enable. More...
 
#define XAXIVDMA_CR_RD_PTR_SHIFT   8
 Shift for read pointer number. More...
 
Bitmasks of the XAXIVDMA_SR_OFFSET register

This register reports status of a DMA channel, including run/stop/idle state, errors, and interrupts

#define XAXIVDMA_SR_HALTED_MASK   0x00000001
 DMA channel halted. More...
 
#define XAXIVDMA_SR_IDLE_MASK   0x00000002
 DMA channel idle. More...
 
#define XAXIVDMA_SR_ERR_INTERNAL_MASK   0x00000010
 Datamover internal err. More...
 
#define XAXIVDMA_SR_ERR_SLAVE_MASK   0x00000020
 Datamover slave err. More...
 
#define XAXIVDMA_SR_ERR_DECODE_MASK   0x00000040
 Datamover decode err. More...
 
#define XAXIVDMA_SR_ERR_FSZ_LESS_MASK   0x00000080
 FSize Less Mismatch err. More...
 
#define XAXIVDMA_SR_ERR_LSZ_LESS_MASK   0x00000100
 LSize Less Mismatch err. More...
 
#define XAXIVDMA_SR_ERR_SG_SLV_MASK   0x00000200
 SG slave err. More...
 
#define XAXIVDMA_SR_ERR_SG_DEC_MASK   0x00000400
 SG decode err. More...
 
#define XAXIVDMA_SR_ERR_FSZ_MORE_MASK   0x00000800
 FSize More Mismatch err. More...
 
#define XAXIVDMA_SR_ERR_ALL_MASK   0x00000FF0
 All errors. More...
 
Bitmask for interrupts

These masks are shared by the XAXIVDMA_CR_OFFSET register and the XAXIVDMA_SR_OFFSET register

#define XAXIVDMA_IXR_FRMCNT_MASK   0x00001000
 Frame count intr. More...
 
#define XAXIVDMA_IXR_DELAYCNT_MASK   0x00002000
 Delay interrupt. More...
 
#define XAXIVDMA_IXR_ERROR_MASK   0x00004000
 Error interrupt. More...
 
#define XAXIVDMA_IXR_COMPLETION_MASK   0x00003000
 Completion interrupts. More...
 
#define XAXIVDMA_IXR_ALL_MASK   0x00007000
 All interrupts. More...
 
Bitmask and shift for delay and coalesce

These masks are shared by the XAXIVDMA_CR_OFFSET register and the XAXIVDMA_SR_OFFSET register

#define XAXIVDMA_DELAY_MASK   0xFF000000
 Delay timeout counter. More...
 
#define XAXIVDMA_FRMCNT_MASK   0x00FF0000
 Frame counter. More...
 
#define XAXIVDMA_REGINDEX_MASK   0x00000001
 Register Index. More...
 
#define XAXIVDMA_DELAY_SHIFT   24
 
#define XAXIVDMA_FRMCNT_SHIFT   16
 
Bitmask for the XAXIVDMA_CDESC_OFFSET register
#define XAXIVDMA_CDESC_CURBD_MASK   0xFFFFFFE0
 BD now working on. More...
 
Bitmask for XAXIVDMA_TDESC_OFFSET register
#define XAXIVDMA_TDESC_CURBD_MASK   0xFFFFFFE0
 BD to stop on. More...
 
Bitmask for XAXIVDMA_FRMSTORE_OFFSET register
#define XAXIVDMA_FRMSTORE_MASK   0x0000003F
 
Bitmask for XAXIVDMA_PARKPTR_OFFSET register
#define XAXIVDMA_PARKPTR_READREF_MASK   0x0000001F
 Read frame to park on. More...
 
#define XAXIVDMA_PARKPTR_WRTREF_MASK   0x00001F00
 Write frame to park on. More...
 
#define XAXIVDMA_PARKPTR_READSTR_MASK   0x001F0000
 Current read frame. More...
 
#define XAXIVDMA_PARKPTR_WRTSTR_MASK   0x1F000000
 Current write frame. More...
 
#define XAXIVDMA_READREF_SHIFT   0
 
#define XAXIVDMA_WRTREF_SHIFT   8
 
#define XAXIVDMA_READSTR_SHIFT   16
 
#define XAXIVDMA_WRTSTR_SHIFT   24
 
#define XAXIVDMA_FRM_MAX   0xF
 At most 16 frames. More...
 
Bitmask for XAXIVDMA_VERSION_OFFSET register
#define XAXIVDMA_VERSION_MAJOR_MASK   0xF0000000
 Major version. More...
 
#define XAXIVDMA_VERSION_MINOR_MASK   0x0FF00000
 Minor version. More...
 
#define XAXIVDMA_VERSION_REV_MASK   0x000F0000
 Revision letter. More...
 
#define XAXIVDMA_VERSION_MAJOR_SHIFT   28
 
#define XAXIVDMA_VERSION_MINOR_SHIFT   20
 
Bitmask for XAXIVDMA_S2MM_IRQ_MASK_OFFSET register
#define XAXIVDMA_S2MM_IRQ_FSZLESS_SOF_ERLY_MASK   0x00000001
 Masks S2MM IRQ FSize Less/SOF Early Error. More...
 
#define XAXIVDMA_S2MM_IRQ_LSZLESS_EOL_ERLY_MASK   0x00000002
 Masks S2MM IRQ LSize Less/EOL Early Error. More...
 
#define XAXIVDMA_S2MM_IRQ_FSZMORE_SOF_LATE_MASK   0x00000004
 Masks S2MM IRQ FSize More/SOF Late Error. More...
 
#define XAXIVDMA_S2MM_IRQ_LSZMORE_EOL_LATE_MASK   0x00000008
 Masks S2MM IRQ LSize More/EOL Late Error. More...
 
#define XAXIVDMA_S2MM_IRQ_ERR_ALL_MASK   0x0000000F
 Masks all S2MM IRQ Errors. More...
 
Frame Delay shared by start address registers and BDs
#define XAXIVDMA_VSIZE_MASK   0x00001FFF
 Vertical size. More...
 
#define XAXIVDMA_HSIZE_MASK   0x0000FFFF
 Horizontal size. More...
 
#define XAXIVDMA_STRIDE_MASK   0x0000FFFF
 Stride size. More...
 
#define XAXIVDMA_FRMDLY_MASK   0x0F000000
 Frame delay. More...
 
#define XAXIVDMA_FRMDLY_SHIFT   24
 Shift for frame delay. More...
 
Buffer Descriptor offsets
#define XAXIVDMA_BD_NDESC_OFFSET   0x00
 Next descriptor pointer. More...
 
#define XAXIVDMA_BD_START_ADDR_OFFSET   0x08
 Start address. More...
 
#define XAXIVDMA_BD_VSIZE_OFFSET   0x10
 Vertical size. More...
 
#define XAXIVDMA_BD_HSIZE_OFFSET   0x14
 Horizontal size. More...
 
#define XAXIVDMA_BD_STRIDE_OFFSET   0x18
 Stride size. More...
 
#define XAXIVDMA_BD_NUM_WORDS   7
 Total number of words for one BD. More...
 
#define XAXIVDMA_BD_HW_NUM_BYTES   28
 Number of bytes hw used. More...
 
#define XAXIVDMA_BD_BYTES_TO_CLEAR   20
 Skip next ptr when clearing. More...