dec400_ioctl.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. /*
  2. * Copyright (C) 2021 Alibaba Group Holding Limited
  3. *
  4. * This program is free software; you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License version 2 as
  6. * published by the Free Software Foundation.
  7. */
  8. #ifndef _DEC400_IOC_H_
  9. #define _DEC400_IOC_H_
  10. #include <linux/ioctl.h>
  11. enum {
  12. DEC400IOC_RESET = 0,
  13. DEC400IOC_WRITE_REG,
  14. DEC400IOC_READ_REG,
  15. DEC400IOC_COMPRESS_INIT,
  16. DEC400IOC_DECOMPRESS_INIT,
  17. DEC400IOC_COMPRESS_SET_BUFFER,
  18. DEC400IOC_DECOMPRESS_SET_BUFFER,
  19. DEC400IOC_MMU_CONFIG
  20. };
  21. struct dec400_compress_init {
  22. unsigned char enable_global_bypass;
  23. unsigned char enable_hw_flush;
  24. };
  25. struct dec400_decompress_init {
  26. unsigned char enable_global_bypass;
  27. unsigned char enable_hw_flush;
  28. };
  29. struct dec400_mmu_para {
  30. unsigned long long page_bable_addr;
  31. };
  32. enum dec400_compress_channel {
  33. DEC400_COMPRESS_CHANNEL_0 = 0,
  34. DEC400_COMPRESS_CHANNEL_1,
  35. DEC400_COMPRESS_CHANNEL_2,
  36. DEC400_COMPRESS_CHANNEL_3,
  37. DEC400_COMPRESS_CHANNEL_4,
  38. DEC400_COMPRESS_CHANNEL_5,
  39. DEC400_COMPRESS_CHANNEL_6,
  40. DEC400_COMPRESS_CHANNEL_7,
  41. DEC400_COMPRESS_CHANNEL_8,
  42. DEC400_COMPRESS_CHANNEL_9,
  43. DEC400_COMPRESS_CHANNEL_10,
  44. DEC400_COMPRESS_CHANNEL_11,
  45. DEC400_COMPRESS_CHANNEL_12,
  46. DEC400_COMPRESS_CHANNEL_13,
  47. DEC400_COMPRESS_CHANNEL_14,
  48. DEC400_COMPRESS_CHANNEL_15
  49. };
  50. enum dec400_decompress_channel {
  51. DEC400_DECOMPRESS_CHANNEL_0 = 0,
  52. DEC400_DECOMPRESS_CHANNEL_1,
  53. DEC400_DECOMPRESS_CHANNEL_2,
  54. DEC400_DECOMPRESS_CHANNEL_3,
  55. DEC400_DECOMPRESS_CHANNEL_4,
  56. DEC400_DECOMPRESS_CHANNEL_5,
  57. DEC400_DECOMPRESS_CHANNEL_6,
  58. DEC400_DECOMPRESS_CHANNEL_7,
  59. DEC400_DECOMPRESS_CHANNEL_8,
  60. DEC400_DECOMPRESS_CHANNEL_9,
  61. DEC400_DECOMPRESS_CHANNEL_10,
  62. DEC400_DECOMPRESS_CHANNEL_11,
  63. DEC400_DECOMPRESS_CHANNEL_12,
  64. DEC400_DECOMPRESS_CHANNEL_13,
  65. DEC400_DECOMPRESS_CHANNEL_14,
  66. DEC400_DECOMPRESS_CHANNEL_15
  67. };
  68. enum dec400_format {
  69. DEC_FMT_ARGB8 = 0,
  70. DEC_FMT_XRGB8 = 1,
  71. DEC_FMT_AYUV = 2,
  72. DEC_FMT_UYVY = 3,
  73. DEC_FMT_YUY2 = 4,
  74. DEC_FMT_YUV_ONLY = 5,
  75. DEC_FMT_UV_MIX = 6,
  76. DEC_FMT_ARGB4 = 7,
  77. DEC_FMT_XRGB4 = 8,
  78. DEC_FMT_A1RGB5 = 9,
  79. DEC_FMT_X1RGB5 = 10,
  80. DEC_FMT_R5G6B5 = 11,
  81. DEC_FMT_A2R10G10B10 = 15,
  82. DEC_FMT_BAYER = 16,
  83. DEC_FMT_COEFFICIENT = 18,
  84. DEC_FMT_ARGB16 = 19,
  85. DEC_FMT_X2RGB10 = 21
  86. };
  87. enum dec400_tile_mode {
  88. DEC_TILE8X8_XMAJOR = 0,
  89. DEC_TILE8X8_YMAJOR = 1,
  90. DEC_TILE16X4 = 2,
  91. DEC_TILE8X4 = 3,
  92. DEC_TILE4X8 = 4,
  93. DEC_RASTER16X4 = 6,
  94. DEC_TILE64X4 = 7,
  95. DEC_TILE32X4 = 8,
  96. DEC_RASTER256X1 = 9,
  97. DEC_RASTER128X1 = 10,
  98. DEC_RASTER64X4 = 11,
  99. DEC_RASTER256X2 = 12,
  100. DEC_RASTER128X2 = 13,
  101. DEC_RASTER128X4 = 14,
  102. DEC_RASTER64X1 = 15,
  103. DEC_TILE16X8 = 16,
  104. DEC_TILE8X16 = 17,
  105. DEC_RASTER512X1 = 18,
  106. DEC_RASTER32X4 = 19,
  107. DEC_RASTER64X2 = 20,
  108. DEC_RASTER32X2 = 21,
  109. DEC_RASTER32X1 = 22,
  110. DEC_RASTER16X1 = 23,
  111. DEC_TILE128X4 = 24,
  112. DEC_TILE256X4 = 25,
  113. DEC_TILE512X4 = 26,
  114. DEC_TILE16X16 = 27,
  115. DEC_TILE32X16 = 28,
  116. DEC_TILE64X16 = 29,
  117. DEC_TILE128X8 = 30,
  118. DEC_TILE8X4_S = 31,
  119. DEC_TILE16X4_S = 32,
  120. DEC_TILE32X4_S = 33,
  121. DEC_TILE16X4_LSB = 34,
  122. DEC_TILE32X4_LSB = 35,
  123. DEC_TILE32X8 = 36
  124. };
  125. enum dec400_aligh_mode {
  126. DEC_ALIGN_1_BYTE = 0,
  127. DEC_ALIGN_16_BYTE = 1,
  128. DEC_ALIGN_32_BYTE = 2,
  129. DEC_ALIGN_64_BYTE = 3,
  130. };
  131. struct dec400_compress_para {
  132. unsigned char enable;
  133. enum dec400_compress_channel channel;
  134. enum dec400_format format;
  135. enum dec400_tile_mode tile_mode;
  136. enum dec400_aligh_mode align_mode;
  137. unsigned long long physical_stream_start;
  138. unsigned long long physical_stream_end;
  139. unsigned long long physical_tile_start;
  140. };
  141. struct dec400_decompress_para {
  142. unsigned char enable;
  143. enum dec400_decompress_channel channel;
  144. enum dec400_format format;
  145. enum dec400_tile_mode tile_mode;
  146. enum dec400_aligh_mode align_mode;
  147. unsigned long long physical_stream_start;
  148. unsigned long long physical_stream_end;
  149. unsigned long long physical_tile_start;
  150. };
  151. #endif /* _DEC400_IOC_H_ */