drv_api.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef __MT6735_DRVBASE_H__
  2. #define __MT6735_DRVBASE_H__
  3. #include "val_types_private.h"
  4. /* ============================================================= */
  5. /* For driver */
  6. typedef struct {
  7. VAL_VOID_T *pvHandle; /* HW vcodec handle */
  8. VAL_TIME_T rLockedTime;
  9. VAL_DRIVER_TYPE_T eDriverType;
  10. } VAL_VCODEC_HW_LOCK_T;
  11. typedef struct {
  12. VAL_ULONG_T ulKVA; /* Kernel virtual address */
  13. VAL_ULONG_T ulKPA; /* Kernel physical address */
  14. VAL_HANDLE_T pvHandle; /* */
  15. VAL_UINT32_T u4VCodecThreadNum; /* Hybrid vcodec thread num */
  16. VAL_UINT32_T u4VCodecThreadID[VCODEC_THREAD_MAX_NUM]; /* hybrid vcodec thread ids */
  17. VAL_ULONG_T ulSize;
  18. } VAL_NON_CACHE_MEMORY_LIST_T;
  19. /* ============================================================== */
  20. /* For Hybrid HW */
  21. #define VCODEC_MULTIPLE_INSTANCE_NUM 16
  22. #define VCODEC_MULTIPLE_INSTANCE_NUM_x_10 (VCODEC_MULTIPLE_INSTANCE_NUM * 10)
  23. /* spinlock : OalHWContextLock */
  24. extern VAL_VCODEC_OAL_HW_CONTEXT_T oal_hw_context[VCODEC_MULTIPLE_INSTANCE_NUM];
  25. /* mutex : NonCacheMemoryListLock */
  26. extern VAL_NON_CACHE_MEMORY_LIST_T grNonCacheMemoryList[VCODEC_MULTIPLE_INSTANCE_NUM_x_10];
  27. /* For both hybrid and pure HW */
  28. extern VAL_VCODEC_HW_LOCK_T grVcodecDecHWLock; /* mutex : VdecHWLock */
  29. extern VAL_VCODEC_HW_LOCK_T grVcodecEncHWLock; /* mutex : VencHWLock */
  30. extern VAL_UINT32_T gu4LockDecHWCount; /* spinlock : LockDecHWCountLock */
  31. extern VAL_UINT32_T gu4LockEncHWCount; /* spinlock : LockEncHWCountLock */
  32. extern VAL_UINT32_T gu4DecISRCount; /* spinlock : DecISRCountLock */
  33. extern VAL_UINT32_T gu4EncISRCount; /* spinlock : EncISRCountLock */
  34. VAL_INT32_T search_HWLockSlot_ByTID(VAL_ULONG_T ulpa, VAL_UINT32_T curr_tid);
  35. VAL_INT32_T search_HWLockSlot_ByHandle(VAL_ULONG_T ulpa, VAL_HANDLE_T handle);
  36. VAL_VCODEC_OAL_HW_CONTEXT_T *setCurr_HWLockSlot(VAL_ULONG_T ulpa, VAL_UINT32_T tid);
  37. VAL_VCODEC_OAL_HW_CONTEXT_T *setCurr_HWLockSlot_Thread_ID(VAL_VCODEC_THREAD_ID_T a_prVcodecThreadID,
  38. VAL_UINT32_T *a_prIndex);
  39. VAL_VCODEC_OAL_HW_CONTEXT_T *freeCurr_HWLockSlot(VAL_ULONG_T ulpa);
  40. void Add_NonCacheMemoryList(VAL_ULONG_T a_ulKVA,
  41. VAL_ULONG_T a_ulKPA,
  42. VAL_ULONG_T a_ulSize,
  43. VAL_UINT32_T a_u4VCodecThreadNum, VAL_UINT32_T *a_pu4VCodecThreadID);
  44. void Free_NonCacheMemoryList(VAL_ULONG_T a_ulKVA, VAL_ULONG_T a_ulKPA);
  45. void Force_Free_NonCacheMemoryList(VAL_UINT32_T a_u4Tid);
  46. VAL_ULONG_T Search_NonCacheMemoryList_By_KPA(VAL_ULONG_T a_u4KPA);
  47. #endif