123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- /**
- * @file hv_drv_OsdDMA.h
- * @brief Osd driver layer Inner DMA interface.
- * @verbatim
- * ==============================================================================
- * ##### How to use this driver #####
- * ==============================================================================
- * (+) Use Hv_Drv_OsdDMA_Init(...) to init DMA entries.
- * (+) Use Hv_Drv_OsdDMA_TransferPrepare(...) to prepare a new DMA transfer.
- * (+) Use Hv_Drv_OsdDMA_Pend(...) to pend DMA transfer request.
- * (+) Use Hv_Drv_OsdDMA_Transfer(...) to start DMA transfer.
- * @endverbatim
- *
- * @author HiView SoC Software Team
- * @version 0.0.1
- * @date 2022-08-22
- */
- #ifndef _HV_DRV_OSDDMA_H
- #define _HV_DRV_OSDDMA_H
- #include "hv_comm_DataType.h"
- #include "hv_drv_OsdTypes.h"
- /* 等待DMA搬运完成的最大超时时间 */
- #define OSD_DMA_WAITDONE_MS 30
- typedef Status (*pfOsdDMACallback)(OsdDMAEntry *);
- /**
- * @brief print Inner DMA status
- * @param[in] None
- * @return VOID without return
- */
- VOID Hv_Drv_OsdDMA_DebugPrintState(VOID);
- /**
- * @brief Get DMA transfer finish flag
- * @param[in] None
- * @return HV_TURE if DMA transfer finished, otherwise HV_FALSE
- */
- BOOL Hv_Drv_OsdDMA_GetTransferDone(VOID);
- /**
- * @brief Prepare to start a new DMA transfer
- * @param[in] None
- * @return HV_FAILURE if last DMA not finished, otherwise HV_SUCCESS
- */
- Status Hv_Drv_OsdDMA_TransferPrepare(VOID);
- /**
- * @brief pend DMA request to current transfer
- * @param[in] uiSrc source address in DDR, aligned to 16 Bytes
- * @param[in] uiDst destination address in OSD RAM, aligned to 16 Bytes
- * @param[in] uiLength data length in bytes, aligned to 16
- * @return VOID without return
- */
- VOID Hv_Drv_OsdDMA_Pend(UINT32 uiSrc, UINT32 uiDst, UINT32 uiLength);
- /**
- * @brief clear used DMA channel count
- * @param[in] None
- * @return VOID without return
- */
- VOID Hv_Drv_OsdDMA_ClearDMAChannel(VOID);
- /**
- * @brief set DMA start register, actually start at next VSYNC
- * @param[in] None
- * @return VOID without return
- */
- VOID Hv_Drv_OsdDMA_Transfer(VOID);
- /**
- * @brief set DMA transfer finish flag, called within ISR
- * @param[in] None
- * @return VOID without return
- */
- VOID Hv_Drv_OsdDMA_TransferFinish(VOID);
- /**
- * @brief Execute callback function for all DMA entries
- * @param[in] pfCallback callback function to execute for each DMA entry
- * @param[in] ucCount DMA entries count to execute pfCallback
- * @return HV_SUCCESS for success, HV_FAILURE for failure
- */
- Status Hv_Drv_OsdDMA_Walk(pfOsdDMACallback pfCallback, UCHAR8 ucCount);
- /**
- * @brief Init global DMA management data
- * @param[in] None
- * @return VOID without return
- */
- VOID Hv_Drv_OsdDMA_Init(VOID);
- #endif
|