![]() |
axivdma
Vitis Drivers API Documentation
|
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... | |