cmdq_driver.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #ifndef __CMDQ_DRIVER_H__
  2. #define __CMDQ_DRIVER_H__
  3. #include <linux/kernel.h>
  4. #include "cmdq_def.h"
  5. struct cmdqUsageInfoStruct {
  6. uint32_t count[CMDQ_MAX_ENGINE_COUNT]; /* [OUT] current engine ref count */
  7. };
  8. struct cmdqJobStruct {
  9. struct cmdqCommandStruct command; /* [IN] the job to perform */
  10. cmdqJobHandle_t hJob; /* [OUT] handle to resulting job */
  11. };
  12. struct cmdqJobResultStruct {
  13. cmdqJobHandle_t hJob; /* [IN] Job handle from CMDQ_IOCTL_ASYNC_JOB_EXEC */
  14. uint64_t engineFlag; /* [OUT] engine flag passed down originally */
  15. struct cmdqRegValueStruct regValue; /* [IN/OUT] read register values, if any. */
  16. /*as input, the "count" field must represent */
  17. /*buffer space pointed by "regValues". */
  18. /*Upon return, CMDQ driver fills "count" with */
  19. /*actual requested register count. */
  20. /*However, if the input "count" is too small, */
  21. /*-ENOMEM is returned, and "count" is filled*/
  22. /*with requested register count. */
  23. struct cmdqReadAddressStruct readAddress; /* [IN/OUT] physical address to read */
  24. };
  25. struct cmdqWriteAddressStruct {
  26. uint32_t count; /* [IN] count of the writable buffer (unit is # of uint32_t, NOT in byte) */
  27. /* [OUT] When Alloc, this is the resulting PA. It is guaranteed to be continuous. */
  28. /* [IN] When Free, please pass returned address down to ioctl. */
  29. /* */
  30. /* indeed param startPA should be UNSIGNED LONG type for 64 bit kernel. */
  31. /* Considering our plartform supports max 4GB RAM(upper-32bit don't care for SW) */
  32. /* and consistent common code interface, remain uint32_t type. */
  33. uint32_t startPA; /* [OUT] When Alloc, this is the resulting PA. It is guaranteed to be continuous. */
  34. /* [IN] When Free, please pass returned address down to ioctl. */
  35. };
  36. #define CMDQ_IOCTL_MAGIC_NUMBER 'x'
  37. #define CMDQ_IOCTL_LOCK_MUTEX _IOW(CMDQ_IOCTL_MAGIC_NUMBER, 1, int)
  38. #define CMDQ_IOCTL_UNLOCK_MUTEX _IOR(CMDQ_IOCTL_MAGIC_NUMBER, 2, int)
  39. #define CMDQ_IOCTL_EXEC_COMMAND _IOW(CMDQ_IOCTL_MAGIC_NUMBER, 3, struct cmdqCommandStruct)
  40. #define CMDQ_IOCTL_QUERY_USAGE _IOW(CMDQ_IOCTL_MAGIC_NUMBER, 4, struct cmdqUsageInfoStruct)
  41. /*
  42. Async operations
  43. */
  44. #define CMDQ_IOCTL_ASYNC_JOB_EXEC _IOW(CMDQ_IOCTL_MAGIC_NUMBER, 5, struct cmdqJobStruct)
  45. #define CMDQ_IOCTL_ASYNC_JOB_WAIT_AND_CLOSE _IOR(CMDQ_IOCTL_MAGIC_NUMBER, 6, struct cmdqJobResultStruct)
  46. #define CMDQ_IOCTL_ALLOC_WRITE_ADDRESS _IOW(CMDQ_IOCTL_MAGIC_NUMBER, 7, struct cmdqWriteAddressStruct)
  47. #define CMDQ_IOCTL_FREE_WRITE_ADDRESS _IOW(CMDQ_IOCTL_MAGIC_NUMBER, 8, struct cmdqWriteAddressStruct)
  48. #define CMDQ_IOCTL_READ_ADDRESS_VALUE _IOW(CMDQ_IOCTL_MAGIC_NUMBER, 9, struct cmdqReadAddressStruct)
  49. /*
  50. Chip capability query. output parameter is a bit field.
  51. Bit definition is enum CMDQ_CAP_BITS.
  52. */
  53. #define CMDQ_IOCTL_QUERY_CAP_BITS _IOW(CMDQ_IOCTL_MAGIC_NUMBER, 10, int)
  54. /*
  55. copy HDCP version from src handle to dst handle
  56. */
  57. #define CMDQ_IOCTL_SYNC_BUF_HDCP_VERSION _IOW(CMDQ_IOCTL_MAGIC_NUMBER, 11, struct cmdqSyncHandleHdcpStruct)
  58. enum IOCTL_RETURN_CODE {
  59. IOCTL_RET_SUCCESS = 0,
  60. /* for ioctl compat */
  61. IOCTL_RET_DEPRECATE_LOCK_MUTEX = 1,
  62. IOCTL_RET_DEPRECATE_UNLOCK_MUTEX = 2,
  63. IOCTL_RET_UNRECOGNIZED_COMPAT_IOCTL = 3,
  64. IOCTL_RET_CONFIG_COMPAT_NOT_OPEN = 4,
  65. /* for ioctl */
  66. IOCTL_RET_LOCK_MUTEX_FAIL = 5,
  67. IOCTL_RET_COPY_MUTEX_NUM_TO_USER_FAIL = 6,
  68. IOCLT_RET_COPY_MUTEX_NUM_FROM_USER_FAIL = 7,
  69. IOCTL_RET_RELEASE_MUTEX_FAIL = 8,
  70. IOCTL_RET_COPY_EXEC_CMD_FROM_USER_FAIL = 9,
  71. IOCTL_RET_IS_SUSPEND_WHEN_EXEC_CMD = 10,
  72. IOCTL_RET_PROCESS_CMD_REQUEST_FAIL = 11,
  73. IOCLT_RET_QUERY_USAGE_FAIL = 12,
  74. IOCTL_RET_COPY_USAGE_TO_USER_FAIL = 13,
  75. IOCTL_RET_COPY_ASYNC_JOB_EXEC_FROM_USER_FAIL = 14,
  76. IOCTL_RET_IS_SUSPEND_WHEN_ASYNC_JOB_EXEC = 15,
  77. IOCTL_RET_NOT_SUPPORT_SEC_PATH_FOR_ASYNC_JOB_EXEC = 16,
  78. IOCTL_RET_CREATE_REG_ADDR_BUF_FAIL = 17,
  79. IOCLT_RET_COPY_ASYNC_JOB_EXEC_TO_USER_FAIL = 18,
  80. IOCTL_RET_SUBMIT_TASK_ASYNC_FAILED = 19,
  81. IOCTL_RET_COPY_ASYNC_JOB_WAIT_AND_CLOSE_FROM_USER_FAIL = 20,
  82. IOCTL_RET_IS_SUSPEND_WHEN_ASYNC_JOB_WAIT_AND_CLOSE = 21,
  83. IOCTL_RET_INVALID_TASK_PTR = 22,
  84. IOCTL_RET_COPY_JOB_RESULT_TO_USER1_FAIL = 23,
  85. IOCTL_RET_NOT_ENOUGH_REGISTER_BUFFER = 24,
  86. IOCTL_RET_COPY_JOB_RESULT_TO_USER2_FAIL = 25,
  87. IOCTL_RET_NO_REG_VAL_BUFFER = 26,
  88. IOCTL_RET_WAIT_RESULT_AND_RELEASE_TASK_FAIL = 27,
  89. IOCLT_RET_COPY_REG_VALUE_TO_USER_FAIL = 28,
  90. IOCTL_RET_COPY_ALLOC_WRITE_ADDR_FROM_USER_FAIL = 29,
  91. IOCTL_RET_ALLOC_WRITE_ADDR_FAIL = 30,
  92. IOCTL_RET_COPY_ALLOC_WRITE_ADDR_TO_USER_FAIL = 31,
  93. IOCTL_RET_COPY_FREE_WRITE_ADDR_FROM_USER_FAIL = 32,
  94. IOCTL_RET_FREE_WRITE_ADDR_FAIL = 33,
  95. IOCTL_RET_COPY_READ_ADDR_VAL_FROM_USER_FAIL = 34,
  96. IOCTL_RET_COPY_CAP_BITS_TO_USER_FAIL = 35,
  97. IOCTL_RET_COPY_HDCP_VERSION_FROM_USER_FAIL = 36,
  98. IOCTL_RET_SVP_NOT_SUPPORT = 37,
  99. IOCTL_RET_UNRECOGNIZED_IOCTL = 38,
  100. };
  101. #endif /* __CMDQ_DRIVER_H__ */