hfi_command.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
  4. */
  5. #ifndef __H_HFI_COMMAND_H__
  6. #define __H_HFI_COMMAND_H__
  7. #include <linux/types.h>
  8. #include <linux/bits.h>
  9. #define HFI_VIDEO_ARCH_OX 0x1
  10. struct hfi_header {
  11. u32 size;
  12. u32 session_id;
  13. u32 header_id;
  14. u32 reserved[4];
  15. u32 num_packets;
  16. };
  17. struct hfi_packet {
  18. u32 size;
  19. u32 type;
  20. u32 flags;
  21. u32 payload_info;
  22. u32 port;
  23. u32 packet_id;
  24. u32 reserved[2];
  25. };
  26. struct hfi_buffer {
  27. u32 type;
  28. u32 index;
  29. u64 base_address;
  30. u32 addr_offset;
  31. u32 buffer_size;
  32. u32 data_offset;
  33. u32 data_size;
  34. u64 timestamp;
  35. u32 flags;
  36. u32 reserved[5];
  37. };
  38. enum hfi_packet_host_flags {
  39. HFI_HOST_FLAGS_NONE = 0,
  40. HFI_HOST_FLAGS_INTR_REQUIRED = BIT(0),
  41. HFI_HOST_FLAGS_RESPONSE_REQUIRED = BIT(1),
  42. HFI_HOST_FLAGS_NON_DISCARDABLE = BIT(2),
  43. HFI_HOST_FLAGS_GET_PROPERTY = BIT(3),
  44. };
  45. enum hfi_packet_firmware_flags {
  46. HFI_FW_FLAGS_NONE = 0,
  47. HFI_FW_FLAGS_SUCCESS = BIT(0),
  48. HFI_FW_FLAGS_INFORMATION = BIT(1),
  49. HFI_FW_FLAGS_SESSION_ERROR = BIT(2),
  50. HFI_FW_FLAGS_SYSTEM_ERROR = BIT(3),
  51. };
  52. enum hfi_packet_payload_info {
  53. HFI_PAYLOAD_NONE = 0x00000000,
  54. HFI_PAYLOAD_U32 = 0x00000001,
  55. HFI_PAYLOAD_S32 = 0x00000002,
  56. HFI_PAYLOAD_U64 = 0x00000003,
  57. HFI_PAYLOAD_S64 = 0x00000004,
  58. HFI_PAYLOAD_STRUCTURE = 0x00000005,
  59. HFI_PAYLOAD_BLOB = 0x00000006,
  60. HFI_PAYLOAD_STRING = 0x00000007,
  61. HFI_PAYLOAD_Q16 = 0x00000008,
  62. HFI_PAYLOAD_U32_ENUM = 0x00000009,
  63. HFI_PAYLOAD_32_PACKED = 0x0000000a,
  64. HFI_PAYLOAD_U32_ARRAY = 0x0000000b,
  65. HFI_PAYLOAD_S32_ARRAY = 0x0000000c,
  66. };
  67. enum hfi_packet_port_type {
  68. HFI_PORT_NONE = 0,
  69. HFI_PORT_BITSTREAM = BIT(0),
  70. HFI_PORT_RAW = BIT(1),
  71. };
  72. enum hfi_buffer_type {
  73. HFI_BUFFER_BITSTREAM = 0x00000001,
  74. HFI_BUFFER_RAW = 0x00000002,
  75. HFI_BUFFER_METADATA = 0x00000003,
  76. HFI_BUFFER_DPB = 0x00000004,
  77. HFI_BUFFER_BIN = 0x00000005,
  78. HFI_BUFFER_LINE = 0x00000006,
  79. HFI_BUFFER_ARP = 0x00000007,
  80. HFI_BUFFER_COMV = 0x00000008,
  81. HFI_BUFFER_NON_COMV = 0x00000009,
  82. HFI_BUFFER_PERSIST = 0x0000000A,
  83. HFI_BUFFER_SUBCACHE = 0x0000000B,
  84. HFI_BUFFER_SFR = 0x0000000C,
  85. };
  86. enum hfi_buffer_host_flags {
  87. HFI_BUF_HOST_FLAG_NONE = 0,
  88. HFI_BUF_HOST_FLAG_RELEASE = BIT(0),
  89. HFI_BUF_HOST_FLAG_READONLY = BIT(1),
  90. HFI_BUF_HOST_FLAG_CODEC_CONFIG = BIT(2),
  91. };
  92. enum hfi_buffer_firmware_flags {
  93. HFI_BUF_FW_FLAG_NONE = 0,
  94. HFI_BUF_FW_FLAG_LAST = BIT(0),
  95. HFI_BUF_FW_FLAG_READONLY = BIT(1),
  96. HFI_BUF_FW_FLAG_CODEC_CONFIG = BIT(2),
  97. // TODO
  98. HFI_BUF_FW_FLAG_SUBFRAME = BIT(3),
  99. HFI_BUF_FW_FLAG_KEYFRAME = BIT(4),
  100. HFI_BUF_FW_FLAG_CORRUPT = BIT(28),
  101. HFI_BUF_FW_FLAG_UNSUPPORTED = BIT(29),
  102. };
  103. enum hfi_metapayload_header_flags {
  104. HFI_METADATA_FLAGS_NONE = 0,
  105. HFI_METADATA_FLAGS_TOP_FIELD = BIT(0),
  106. HFI_METADATA_FLAGS_BOTTOM_FIELDS = BIT(1),
  107. };
  108. struct metabuf_header {
  109. u32 count;
  110. u32 size;
  111. u32 version;
  112. u32 reserved[5];
  113. };
  114. struct metapayload_header {
  115. u32 type;
  116. u32 size;
  117. u32 version;
  118. u32 offset;
  119. u32 flags;
  120. u32 reserved[3];
  121. };
  122. enum hfi_property_mode_type {
  123. HFI_MODE_NONE = 0,
  124. HFI_MODE_PORT_SETTINGS_CHANGE = BIT(0),
  125. HFI_MODE_PROPERTY = BIT(1),
  126. HFI_MODE_METADATA = BIT(2),
  127. };
  128. #define HFI_CMD_BEGIN 0x0
  129. #define HFI_CMD_INIT 0x1
  130. #define HFI_CMD_POWER_COLLAPSE 0x2
  131. #define HFI_CMD_OPEN 0x3
  132. #define HFI_CMD_CLOSE 0x4
  133. #define HFI_CMD_START 0x5
  134. #define HFI_CMD_STOP 0x6
  135. #define HFI_CMD_DRAIN 0x7
  136. #define HFI_CMD_RESUME 0x8
  137. #define HFI_CMD_BUFFER 0x9
  138. #define HFI_CMD_DELIVERY_MODE 0xA
  139. #define HFI_CMD_SUBSCRIBE_MODE 0xB
  140. #define HFI_CMD_SETTINGS_CHANGE 0xC
  141. #define HFI_CMD_END 0xD
  142. #endif //__H_HFI_COMMAND_H__