encswhwregisters.h 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. /*------------------------------------------------------------------------------
  2. -- --
  3. -- This software is confidential and proprietary and may be used --
  4. -- only as expressly authorized by a licensing agreement from --
  5. -- --
  6. -- Hantro Products Oy. --
  7. -- --
  8. -- (C) COPYRIGHT 2006 HANTRO PRODUCTS OY --
  9. -- ALL RIGHTS RESERVED --
  10. -- --
  11. -- The entire notice above must be reproduced --
  12. -- on all copies and should not be removed. --
  13. -- --
  14. --------------------------------------------------------------------------------
  15. --
  16. -- Description : Encoder SW/HW interface register definitions
  17. --
  18. ------------------------------------------------------------------------------*/
  19. /*------------------------------------------------------------------------------
  20. Table of contents
  21. 1. Include headers
  22. 2. External compiler flags
  23. 3. Module defines
  24. ------------------------------------------------------------------------------*/
  25. #ifndef ENC_SWHWREGISTERS_H
  26. #define ENC_SWHWREGISTERS_H
  27. /*------------------------------------------------------------------------------
  28. 1. Include headers
  29. ------------------------------------------------------------------------------*/
  30. #include "basetype.h"
  31. /*------------------------------------------------------------------------------
  32. 2. External compiler flags
  33. --------------------------------------------------------------------------------
  34. --------------------------------------------------------------------------------
  35. 3. Module defines
  36. ------------------------------------------------------------------------------*/
  37. #define ASIC_SWREG_AMOUNT 96
  38. #define ASIC_INPUT_YUV420PLANAR 0x00
  39. #define ASIC_INPUT_YUV420SEMIPLANAR 0x01
  40. #define ASIC_INPUT_YUYV422INTERLEAVED 0x02
  41. #define ASIC_INPUT_UYVY422INTERLEAVED 0x03
  42. #define ASIC_INPUT_RGB565 0x04
  43. #define ASIC_INPUT_RGB555 0x05
  44. #define ASIC_INPUT_RGB444 0x06
  45. #define ASIC_INPUT_RGB888 0x07
  46. #define ASIC_INPUT_RGB101010 0x08
  47. /* HW Register field names */
  48. typedef enum {
  49. HEncProductID,
  50. HEncProductMajor,
  51. HEncProductMinor,
  52. HEncProductBuild,
  53. HEncIRQSliceReady,
  54. HEncIRQTest1,
  55. HEncIRQTest2,
  56. HEncIRQBuffer,
  57. HEncIRQReset,
  58. HEncIRQBusError,
  59. HEncIRQFrameReady,
  60. HEncIRQDisable,
  61. HEncIRQ,
  62. HEncAXIWriteID,
  63. HEncAXIReadID,
  64. HEncOutputSwap16,
  65. HEncInputSwap16,
  66. HEncBurstLength,
  67. HEncBurstDisable,
  68. HEncBurstIncr,
  69. HEncDataDiscard,
  70. HEncClockGating,
  71. HEncOutputSwap32,
  72. HEncInputSwap32,
  73. HEncOutputSwap8,
  74. HEncInputSwap8,
  75. HEncTestCounter,
  76. HEncTestLength,
  77. HEncTestMem,
  78. HEncTestReg,
  79. HEncTestIrq,
  80. HEncBaseStream,
  81. HEncBaseControl,
  82. HEncBaseRefLum,
  83. HEncBaseRefChr,
  84. HEncBaseRecLum,
  85. HEncBaseRecChr,
  86. HEncBaseInLum,
  87. HEncBaseInCb,
  88. HEncBaseInCr,
  89. HEncIntTimeout,
  90. HEncMvWrite,
  91. HEncNalMode,
  92. HEncIntSliceReady,
  93. HEncWidth,
  94. HEncHeight,
  95. HEncRecWriteDisable,
  96. HEncPictureType,
  97. HEncEncodingMode,
  98. HEncEnable,
  99. HEncChrOffset,
  100. HEncLumOffset,
  101. HEncRowLength,
  102. HEncXFill,
  103. HEncYFill,
  104. HEncInputFormat,
  105. HEncInputRot,
  106. HEncPicInitQp,
  107. HEncSliceAlpha,
  108. HEncSliceBeta,
  109. HEncChromaQp,
  110. HEncDeblocking,
  111. HEncIdrPicId,
  112. HEncConstrIP,
  113. HEncPPSID,
  114. HEncIPPrevModeFavor,
  115. HEncIPIntra16Favor,
  116. HEncSliceSize,
  117. HEncDisableQPMV,
  118. HEncTransform8x8,
  119. HEncCabacInitIdc,
  120. HEncCabacEnable,
  121. HEncInter4Restrict,
  122. HEncStreamMode,
  123. HEncFrameNum,
  124. HEncDMVPenalty,
  125. HEncDMVPenalty4p,
  126. HEncJpegMode,
  127. HEncJpegSlice,
  128. HEncJpegRSTInt,
  129. HEncJpegRST,
  130. HEncSkipPenalty,
  131. HEncNumSlicesReady,
  132. HEncInterFavor,
  133. HEncStrmHdrRem1,
  134. HEncStrmHdrRem2,
  135. HEncStrmBufLimit,
  136. HEncMadQpDelta,
  137. HEncMadThreshold,
  138. HEncQpSum,
  139. HEncQp,
  140. HEncMaxQp,
  141. HEncMinQp,
  142. HEncCPDist,
  143. HEncCP1WordTarget,
  144. HEncCP2WordTarget,
  145. HEncCP3WordTarget,
  146. HEncCP4WordTarget,
  147. HEncCP5WordTarget,
  148. HEncCP6WordTarget,
  149. HEncCP7WordTarget,
  150. HEncCP8WordTarget,
  151. HEncCP9WordTarget,
  152. HEncCP10WordTarget,
  153. HEncCPWordError1,
  154. HEncCPWordError2,
  155. HEncCPWordError3,
  156. HEncCPWordError4,
  157. HEncCPWordError5,
  158. HEncCPWordError6,
  159. HEncCPDeltaQp1,
  160. HEncCPDeltaQp2,
  161. HEncCPDeltaQp3,
  162. HEncCPDeltaQp4,
  163. HEncCPDeltaQp5,
  164. HEncCPDeltaQp6,
  165. HEncCPDeltaQp7,
  166. HEncStartOffset,
  167. HEncRlcSum,
  168. HEncMadCount,
  169. HEncMbCount,
  170. HEncBaseNextLum,
  171. HEncStabMode,
  172. HEncStabMinimum,
  173. HEncStabMotionSum,
  174. HEncStabGmvX,
  175. HEncStabMatrix1,
  176. HEncStabGmvY,
  177. HEncStabMatrix2,
  178. HEncStabMatrix3,
  179. HEncStabMatrix4,
  180. HEncStabMatrix5,
  181. HEncStabMatrix6,
  182. HEncStabMatrix7,
  183. HEncStabMatrix8,
  184. HEncStabMatrix9,
  185. HEncBaseCabacCtx,
  186. HEncBaseMvWrite,
  187. HEncRGBCoeffA,
  188. HEncRGBCoeffB,
  189. HEncRGBCoeffC,
  190. HEncRGBCoeffE,
  191. HEncRGBCoeffF,
  192. HEncRMaskMSB,
  193. HEncGMaskMSB,
  194. HEncBMaskMSB,
  195. HEncIntraAreaLeft,
  196. HEncIntraAreaRight,
  197. HEncIntraAreaTop,
  198. HEncIntraAreaBottom,
  199. HEncCirStart,
  200. HEncCirInterval,
  201. HEncIntraSliceMap1,
  202. HEncIntraSliceMap2,
  203. HEncIntraSliceMap3,
  204. HEncRoi1Left,
  205. HEncRoi1Right,
  206. HEncRoi1Top,
  207. HEncRoi1Bottom,
  208. HEncRoi2Left,
  209. HEncRoi2Right,
  210. HEncRoi2Top,
  211. HEncRoi2Bottom,
  212. HEncRoi1DeltaQp,
  213. HEncRoi2DeltaQp,
  214. HEncMvcPriorityId,
  215. HEncMvcViewId,
  216. HEncMvcTemporalId,
  217. HEncMvcAnchorPicFlag,
  218. HEncMvcInterViewFlag,
  219. HEncHWTiledSupport,
  220. HEncHWSearchArea,
  221. HEncHWRgbSupport,
  222. HEncHWH264Support,
  223. HEncHWMpeg4Support,
  224. HEncHWJpegSupport,
  225. HEncHWStabSupport,
  226. HEncHWBus,
  227. HEncHWSynthesisLan,
  228. HEncHWBusWidth,
  229. HEncHWMaxVideoWidth,
  230. HEncJpegQuantLuma1,
  231. HEncJpegQuantLuma2,
  232. HEncJpegQuantLuma3,
  233. HEncJpegQuantLuma4,
  234. HEncJpegQuantLuma5,
  235. HEncJpegQuantLuma6,
  236. HEncJpegQuantLuma7,
  237. HEncJpegQuantLuma8,
  238. HEncJpegQuantLuma9,
  239. HEncJpegQuantLuma10,
  240. HEncJpegQuantLuma11,
  241. HEncJpegQuantLuma12,
  242. HEncJpegQuantLuma13,
  243. HEncJpegQuantLuma14,
  244. HEncJpegQuantLuma15,
  245. HEncJpegQuantLuma16,
  246. HEncJpegQuantChroma1,
  247. HEncJpegQuantChroma2,
  248. HEncJpegQuantChroma3,
  249. HEncJpegQuantChroma4,
  250. HEncJpegQuantChroma5,
  251. HEncJpegQuantChroma6,
  252. HEncJpegQuantChroma7,
  253. HEncJpegQuantChroma8,
  254. HEncJpegQuantChroma9,
  255. HEncJpegQuantChroma10,
  256. HEncJpegQuantChroma11,
  257. HEncJpegQuantChroma12,
  258. HEncJpegQuantChroma13,
  259. HEncJpegQuantChroma14,
  260. HEncJpegQuantChroma15,
  261. HEncJpegQuantChroma16,
  262. HEncRegisterAmount
  263. } regName;
  264. /* HW Register field descriptions */
  265. typedef struct {
  266. i32 name; /* Register name and index */
  267. i32 base; /* Register base address */
  268. u32 mask; /* Bitmask for this field */
  269. i32 lsb; /* LSB for this field [31..0] */
  270. i32 trace; /* Enable/disable writing in swreg_params.trc */
  271. char *description; /* Field description */
  272. } regField_s;
  273. /* NOTE: Don't use ',' in descriptions, because it is used as separator in csv
  274. * parsing. */
  275. static const regField_s asicRegisterDesc[] = {
  276. {HEncProductID , 0x000, 0xffff0000, 16, 0, "Product ID"},
  277. {HEncProductMajor , 0x000, 0x0000f000, 12, 0, "Major number"},
  278. {HEncProductMinor , 0x000, 0x00000ff0, 4, 0, "Minor number"},
  279. {HEncProductBuild , 0x000, 0x0000000f, 0, 0, "Build number defined in synthesis."},
  280. {HEncIRQSliceReady , 0x004, 0x00000100, 8, 0, "IRQ slice ready status bit."},
  281. {HEncIRQTest1 , 0x004, 0x00000080, 7, 0, "IRQ test 2 status bit. Memory coherency test."},
  282. {HEncIRQTest2 , 0x004, 0x00000040, 6, 0, "IRQ test 1 status bit. Interrupt test."},
  283. {HEncIRQBuffer , 0x004, 0x00000020, 5, 0, "IRQ buffer full status bit. HW waiting for new buffer."},
  284. {HEncIRQReset , 0x004, 0x00000010, 4, 0, "IRQ SW reset status bit."},
  285. {HEncIRQBusError , 0x004, 0x00000008, 3, 0, "IRQ bus error or timeout status bit."},
  286. {HEncIRQFrameReady , 0x004, 0x00000004, 2, 0, "IRQ frame ready status bit. Encoder has finished a frame."},
  287. {HEncIRQDisable , 0x004, 0x00000002, 1, 0, "IRQ disable. No interrupts from HW. SW must use polling."},
  288. {HEncIRQ , 0x004, 0x00000001, 0, 0, "HINTenc Interrupt from HW. SW resets at IRQ handler."},
  289. {HEncAXIWriteID , 0x008, 0xff000000, 24, 0, "AXI Write ID"},
  290. {HEncAXIReadID , 0x008, 0x00ff0000, 16, 0, "AXI Read ID"},
  291. {HEncOutputSwap16 , 0x008, 0x00008000, 15, 0, "Enable output swap 16-bits"},
  292. {HEncInputSwap16 , 0x008, 0x00004000, 14, 0, "Enable input swap 16-bits"},
  293. {HEncBurstLength , 0x008, 0x00003f00, 8, 0, "Burst length. 0=incremental. 4=max BURST4.8=max BURST8. 16=max BURST16"},
  294. {HEncBurstDisable , 0x008, 0x00000080, 7, 0, "Disable burst mode for AXI"},
  295. {HEncBurstIncr , 0x008, 0x00000040, 6, 0, "Burst incremental. 1=INCR burst allowed. 0=use SINGLE burst"},
  296. {HEncDataDiscard , 0x008, 0x00000020, 5, 0, "Enable burst data discard. 2 or 3 long reads are using BURST4"},
  297. {HEncClockGating , 0x008, 0x00000010, 4, 0, "Enable clock gating"},
  298. {HEncOutputSwap32 , 0x008, 0x00000008, 3, 0, "Enable output swap 32-bits"},
  299. {HEncInputSwap32 , 0x008, 0x00000004, 2, 0, "Enable input swap 32-bits"},
  300. {HEncOutputSwap8 , 0x008, 0x00000002, 1, 0, "Enable output swap 8-bits"},
  301. {HEncInputSwap8 , 0x008, 0x00000001, 0, 0, "Enable input swap 8-bits"},
  302. {HEncTestCounter , 0x00c, 0xf0000000, 28, 0, "Test counter"},
  303. {HEncTestLength , 0x00c, 0x001ffff8, 3, 0, "Test data length for memory test"},
  304. {HEncTestMem , 0x00c, 0x00000004, 2, 0, "Enable memory coherency test. Reads BaseStream. Writes BaseControl"},
  305. {HEncTestReg , 0x00c, 0x00000002, 1, 0, "Enable register coherency test. Increments test counter"},
  306. {HEncTestIrq , 0x00c, 0x00000001, 0, 0, "Enable IRQ test. HW gives interrupt"},
  307. {HEncBaseStream , 0x014, 0xffffffff, 0, 0, "Base address for output stream data"},
  308. {HEncBaseControl , 0x018, 0xffffffff, 0, 0, "Base address for output control data"},
  309. {HEncBaseRefLum , 0x01c, 0xffffffff, 0, 0, "Base address for reference luma"},
  310. {HEncBaseRefChr , 0x020, 0xffffffff, 0, 0, "Base address for reference chroma"},
  311. {HEncBaseRecLum , 0x024, 0xffffffff, 0, 0, "Base address for reconstructed luma"},
  312. {HEncBaseRecChr , 0x028, 0xffffffff, 0, 0, "Base address for reconstructed chroma"},
  313. {HEncBaseInLum , 0x02c, 0xffffffff, 0, 0, "Base address for input picture luma"},
  314. {HEncBaseInCb , 0x030, 0xffffffff, 0, 0, "Base address for input picture cb"},
  315. {HEncBaseInCr , 0x034, 0xffffffff, 0, 0, "Base address for input picture cr"},
  316. {HEncIntTimeout , 0x038, 0x80000000, 31, 0, "Enable interrupt for timeout"},
  317. {HEncMvWrite , 0x038, 0x40000000, 30, 1, "Enable writing MV and SAD of each MB to BaseMvWrite"},
  318. {HEncNalMode , 0x038, 0x20000000, 29, 1, "Enable writing size of each NAL unit to BaseControl, nalSizeWriteOut"},
  319. {HEncIntSliceReady , 0x038, 0x10000000, 28, 0, "Enable interrupt for slice ready"},
  320. {HEncWidth , 0x038, 0x0ff80000, 19, 1, "Encoded width. lumWidth (macroblocks) H264:[6..255] JPEG:[6..511]"},
  321. {HEncHeight , 0x038, 0x0007fc00, 10, 1, "Encoded height. lumHeight (macroblocks) H264:[6..255] JPEG:[2..511]"},
  322. {HEncRecWriteDisable , 0x038, 0x00000040, 6, 1, "Disable writing of reconstructed image. recWriteDisable"},
  323. {HEncPictureType , 0x038, 0x00000018, 3, 1, "Encoded picture type. frameType. 0=INTER. 1=INTRA(IDR). 2=MVC-INTER. 3=MVC-INTER(ref mod)."},
  324. {HEncEncodingMode , 0x038, 0x00000006, 1, 1, "Encoding mode. streamType. 2=JPEG. 3=H264"},
  325. {HEncEnable , 0x038, 0x00000001, 0, 0, "Encoder enable"},
  326. {HEncChrOffset , 0x03c, 0xe0000000, 29, 0, "Input chrominance offset (bytes) [0..7]"},
  327. {HEncLumOffset , 0x03c, 0x1c000000, 26, 0, "Input luminance offset (bytes) [0..7]"},
  328. {HEncRowLength , 0x03c, 0x03fff000, 12, 1, "Input luminance row length. lumWidthSrc (bytes) [96..8192]"},
  329. {HEncXFill , 0x03c, 0x00000c00, 10, 0, "Overfill pixels on right edge of image div4 [0..3]"},
  330. {HEncYFill , 0x03c, 0x000003c0, 6, 1, "Overfill pixels on bottom edge of image. YFill. [0..15]"},
  331. {HEncInputFormat , 0x03c, 0x0000003c, 2, 1, "Input image format. inputFormat. YUV420P/YUV420SP/YUYV422/UYVY422/RGB565/RGB555/RGB444/RGB888/RGB101010"},
  332. {HEncInputRot , 0x03c, 0x00000003, 0, 1, "Input image rotation. 0=disabled. 1=90degrees right. 2=90 degrees left"},
  333. {HEncPicInitQp , 0x040, 0xfc000000, 26, 0, "H.264 Pic init qp in PPS [0..51]"},
  334. {HEncSliceAlpha , 0x040, 0x03c00000, 22, 0, "H.264 Slice filter alpha c0 offset div2 [-6..6]"},
  335. {HEncSliceBeta , 0x040, 0x003c0000, 18, 0, "H.264 Slice filter beta offset div2 [-6..6]"},
  336. {HEncChromaQp , 0x040, 0x0003e000, 13, 0, "H.264 Chroma qp index offset [-12..12]"},
  337. {HEncDeblocking , 0x040, 0x00000060, 5, 0, "H.264 Deblocking filter mode. 0=enabled. 1=disabled. 2=disabled on slice borders"},
  338. {HEncIdrPicId , 0x040, 0x0000001e, 1, 0, "H.264 IDR picture ID"},
  339. {HEncConstrIP , 0x040, 0x00000001, 0, 1, "H.264 Constrained intra prediction enable. constIntraPred"},
  340. {HEncPPSID , 0x044, 0xff000000, 24, 0, "H.264 pic_parameter_set_id"},
  341. {HEncIPPrevModeFavor , 0x044, 0x00ff0000, 16, 0, "H.264 Intra prediction previous 4x4 mode favor"},
  342. {HEncIPIntra16Favor , 0x044, 0x0000ffff, 0, 0, "H.264 Intra prediction intra 16x16 mode favor"},
  343. {HEncSliceSize , 0x048, 0x3f800000, 23, 1, "H.264 Slice size. mbRowPerSlice (mb rows) [0..127] 0=one slice per picture"},
  344. {HEncDisableQPMV , 0x048, 0x00400000, 22, 1, "H.264 Disable quarter pixel MVs. disableQuarterPixelMv"},
  345. {HEncTransform8x8 , 0x048, 0x00200000, 21, 1, "H.264 Transform 8x8 enable. High Profile H.264. transform8x8Mode"},
  346. {HEncCabacInitIdc , 0x048, 0x00180000, 19, 0, "H.264 CABAC initial IDC. [0..2]"},
  347. {HEncCabacEnable , 0x048, 0x00040000, 18, 1, "H.264 CABAC enable. entropyCodingMode. 0=CAVLC (Baseline Profile H.264). 1=CABAC (Main Profile H.264)"},
  348. {HEncInter4Restrict , 0x048, 0x00020000, 17, 1, "H.264 Inter 4x4 mode restriction. restricted4x4Mode"},
  349. {HEncStreamMode , 0x048, 0x00010000, 16, 1, "H.264 Stream mode. byteStream. 0=NAL unit stream. 1=Byte stream"},
  350. {HEncFrameNum , 0x048, 0x0000ffff, 0, 0, "H.264 Frame num"},
  351. {HEncDMVPenalty , 0x04c, 0x000003ff, 0, 1, "H.264 Differential MV penalty for 1p/qp ME. DMVPenalty1p"},
  352. {HEncDMVPenalty4p , 0x04c, 0x000ffc00, 10, 1, "H.264 Differential MV penalty for 4p ME. DMVPenalty4p"},
  353. {HEncJpegMode , 0x050, 0x02000000, 25, 0, "JPEG mode. 0=4:2:0 (4lum+2chr blocks/MCU). 1=4:2:2 (2lum+2chr blocks/MCU)"},
  354. {HEncJpegSlice , 0x050, 0x01000000, 24, 0, "JPEG slice enable. 0=picture ends with EOI. 1=slice ends with RST"},
  355. {HEncJpegRSTInt , 0x050, 0x00ff0000, 16, 0, "JPEG restart marker interval when slices are disabled (mb rows) [0..255]"},
  356. {HEncJpegRST , 0x050, 0x0000ffff, 0, 0, "JPEG restart marker for first RST. incremented by HW for next RST"},
  357. {HEncSkipPenalty , 0x054, 0xff000000, 24, 0, "H.264 SKIP macroblock mode penalty"},
  358. {HEncNumSlicesReady , 0x054, 0x00ff0000, 16, 0, "H.264 amount of completed slices."},
  359. {HEncInterFavor , 0x054, 0x0000ffff, 0, 0, "H.264 Inter MB mode favor in intra/inter selection"},
  360. {HEncStrmHdrRem1 , 0x058, 0xffffffff, 0, 0, "Stream header remainder bits MSB (MSB aligned)"},
  361. {HEncStrmHdrRem2 , 0x05c, 0xffffffff, 0, 0, "Stream header remainder bits LSB (MSB aligned)"},
  362. {HEncStrmBufLimit , 0x060, 0xffffffff, 0, 1, "Stream buffer limit (64bit addresses) / output stream size (bits). HWStreamDataCount. If limit is reached buffer full IRQ is given."},
  363. {HEncMadQpDelta , 0x064, 0xf0000000, 28, 1, "MAD based QP adjustment. madQpChange [-8..7]"},
  364. {HEncMadThreshold , 0x064, 0x0fc00000, 22, 0, "MAD threshold div256"},
  365. {HEncQpSum , 0x064, 0x001fffff, 0, 0, "QP Sum div2 output"},
  366. {HEncQp , 0x06c, 0xfc000000, 26, 1, "Initial QP. qpLum [0..51]"},
  367. {HEncMaxQp , 0x06c, 0x03f00000, 20, 1, "Maximum QP. qpMax [0..51]"},
  368. {HEncMinQp , 0x06c, 0x000fc000, 14, 1, "Minimum QP. qpMin [0..51]"},
  369. {HEncCPDist , 0x06c, 0x00001fff, 0, 0, "Checkpoint distance (mb) 0=disabled [0..8191]"},
  370. {HEncCP1WordTarget , 0x070, 0xffff0000, 16, 0, "Checkpoint 1 word target/usage div32 [0..65535]"},
  371. {HEncCP2WordTarget , 0x070, 0x0000ffff, 0, 0, "Checkpoint 2 word target/usage div32 [0..65535]"},
  372. {HEncCP3WordTarget , 0x074, 0xffff0000, 16, 0, "Checkpoint 3 word target/usage div32 [0..65535]"},
  373. {HEncCP4WordTarget , 0x074, 0x0000ffff, 0, 0, "Checkpoint 4 word target/usage div32 [0..65535]"},
  374. {HEncCP5WordTarget , 0x078, 0xffff0000, 16, 0, "Checkpoint 5 word target/usage div32 [0..65535]"},
  375. {HEncCP6WordTarget , 0x078, 0x0000ffff, 0, 0, "Checkpoint 6 word target/usage div32 [0..65535]"},
  376. {HEncCP7WordTarget , 0x07c, 0xffff0000, 16, 0, "Checkpoint 7 word target/usage div32 [0..65535]"},
  377. {HEncCP8WordTarget , 0x07c, 0x0000ffff, 0, 0, "Checkpoint 8 word target/usage div32 [0..65535]"},
  378. {HEncCP9WordTarget , 0x080, 0xffff0000, 16, 0, "Checkpoint 9 word target/usage div32 [0..65535]"},
  379. {HEncCP10WordTarget , 0x080, 0x0000ffff, 0, 0, "Checkpoint 10 word target/usage div32 [0..65535]"},
  380. {HEncCPWordError1 , 0x084, 0xffff0000, 16, 0, "Checkpoint word error 1 div4 [-32768..32767]"},
  381. {HEncCPWordError2 , 0x084, 0x0000ffff, 0, 0, "Checkpoint word error 2 div4 [-32768..32767]"},
  382. {HEncCPWordError3 , 0x088, 0xffff0000, 16, 0, "Checkpoint word error 3 div4 [-32768..32767]"},
  383. {HEncCPWordError4 , 0x088, 0x0000ffff, 0, 0, "Checkpoint word error 4 div4 [-32768..32767]"},
  384. {HEncCPWordError5 , 0x08c, 0xffff0000, 16, 0, "Checkpoint word error 5 div4 [-32768..32767]"},
  385. {HEncCPWordError6 , 0x08c, 0x0000ffff, 0, 0, "Checkpoint word error 6 div4 [-32768..32767]"},
  386. {HEncCPDeltaQp1 , 0x090, 0x0f000000, 24, 0, "Checkpoint delta QP 1 [-8..7]"},
  387. {HEncCPDeltaQp2 , 0x090, 0x00f00000, 20, 0, "Checkpoint delta QP 2 [-8..7]"},
  388. {HEncCPDeltaQp3 , 0x090, 0x000f0000, 16, 0, "Checkpoint delta QP 3 [-8..7]"},
  389. {HEncCPDeltaQp4 , 0x090, 0x0000f000, 12, 0, "Checkpoint delta QP 4 [-8..7]"},
  390. {HEncCPDeltaQp5 , 0x090, 0x00000f00, 8, 0, "Checkpoint delta QP 5 [-8..7]"},
  391. {HEncCPDeltaQp6 , 0x090, 0x000000f0, 4, 0, "Checkpoint delta QP 6 [-8..7]"},
  392. {HEncCPDeltaQp7 , 0x090, 0x0000000f, 0, 0, "Checkpoint delta QP 7 [-8..7]"},
  393. {HEncStartOffset , 0x094, 0x1f800000, 23, 0, "Stream start offset = amount of StrmHdrRem (bits) [0..63]"},
  394. {HEncRlcSum , 0x094, 0x007fffff, 0, 0, "RLC codeword count div4 output. max 255*255*384/4"},
  395. {HEncMadCount , 0x098, 0xffff0000, 16, 0, "Macroblock count with MAD value under threshold output"},
  396. {HEncMbCount , 0x098, 0x0000ffff, 0, 0, "MB count output. max 255*255"},
  397. {HEncBaseNextLum , 0x09c, 0xffffffff, 0, 0, "Base address for next pic luminance"},
  398. {HEncStabMode , 0x0a0, 0xc0000000, 30, 1, "Stabilization mode. 0=disabled. 1=stab only. 2=stab+encode"},
  399. {HEncStabMinimum , 0x0a0, 0x00ffffff, 0, 0, "Stabilization minimum value output. max 253*253*255"},
  400. {HEncStabMotionSum , 0x0a4, 0xffffffff, 0, 0, "Stabilization motion sum div8 output. max 253*253*255*1089/8"},
  401. {HEncStabGmvX , 0x0a8, 0xfc000000, 26, 0, "Stabilization GMV horizontal output [-16..16]"},
  402. {HEncStabMatrix1 , 0x0a8, 0x00ffffff, 0, 0, "Stabilization matrix 1 (up-left position) output"},
  403. {HEncStabGmvY , 0x0ac, 0xfc000000, 26, 0, "Stabilization GMV vertical output [-16..16]"},
  404. {HEncStabMatrix2 , 0x0ac, 0x00ffffff, 0, 0, "Stabilization matrix 2 (up position) output"},
  405. {HEncStabMatrix3 , 0x0b0, 0x00ffffff, 0, 0, "Stabilization matrix 3 (up-right position) output"},
  406. {HEncStabMatrix4 , 0x0b4, 0x00ffffff, 0, 0, "Stabilization matrix 4 (left position) output"},
  407. {HEncStabMatrix5 , 0x0b8, 0x00ffffff, 0, 0, "Stabilization matrix 5 (GMV position) output"},
  408. {HEncStabMatrix6 , 0x0bc, 0x00ffffff, 0, 0, "Stabilization matrix 6 (right position) output"},
  409. {HEncStabMatrix7 , 0x0c0, 0x00ffffff, 0, 0, "Stabilization matrix 7 (down-left position) output"},
  410. {HEncStabMatrix8 , 0x0c4, 0x00ffffff, 0, 0, "Stabilization matrix 8 (down position) output"},
  411. {HEncStabMatrix9 , 0x0c8, 0x00ffffff, 0, 0, "Stabilization matrix 9 (down-right position) output"},
  412. {HEncBaseCabacCtx , 0x0cc, 0xffffffff, 0, 0, "Base address for cabac context tables"},
  413. {HEncBaseMvWrite , 0x0d0, 0xffffffff, 0, 0, "Base address for MV output writing"},
  414. {HEncRGBCoeffA , 0x0d4, 0x0000ffff, 0, 0, "RGB to YUV conversion coefficient A"},
  415. {HEncRGBCoeffB , 0x0d4, 0xffff0000, 16, 0, "RGB to YUV conversion coefficient B"},
  416. {HEncRGBCoeffC , 0x0d8, 0x0000ffff, 0, 0, "RGB to YUV conversion coefficient C"},
  417. {HEncRGBCoeffE , 0x0d8, 0xffff0000, 16, 0, "RGB to YUV conversion coefficient E"},
  418. {HEncRGBCoeffF , 0x0dc, 0x0000ffff, 0, 0, "RGB to YUV conversion coefficient F"},
  419. {HEncRMaskMSB , 0x0dc, 0x001f0000, 16, 0, "RGB R-component mask MSB bit position [0..31]"},
  420. {HEncGMaskMSB , 0x0dc, 0x03e00000, 21, 0, "RGB G-component mask MSB bit position [0..31]"},
  421. {HEncBMaskMSB , 0x0dc, 0x7c000000, 26, 0, "RGB B-component mask MSB bit position [0..31]"},
  422. {HEncIntraAreaLeft , 0x0e0, 0xff000000, 24, 0, "Intra area left mb column (inside area) [0..255]"},
  423. {HEncIntraAreaRight , 0x0e0, 0x00ff0000, 16, 0, "Intra area right mb column (outside area) [0..255]"},
  424. {HEncIntraAreaTop , 0x0e0, 0x0000ff00, 8, 0, "Intra area top mb row (inside area) [0..255]"},
  425. {HEncIntraAreaBottom , 0x0e0, 0x000000ff, 0, 0, "Intra area bottom mb row (outside area) [0..255]"},
  426. {HEncCirStart , 0x0e4, 0xffff0000, 16, 0, "CIR first intra mb. 0=disabled [0..65535]"},
  427. {HEncCirInterval , 0x0e4, 0x0000ffff, 0, 0, "CIR intra mb interval. 0=disabled [0..65535]"},
  428. {HEncIntraSliceMap1 , 0x0e8, 0xffffffff, 0, 0, "Intra slice bitmap for slices 0..31. LSB=slice0. MSB=slice31. 1=intra."},
  429. {HEncIntraSliceMap2 , 0x0ec, 0xffffffff, 0, 0, "Intra slice bitmap for slices 32..63. LSB=slice32. MSB=slice63. 1=intra."},
  430. {HEncIntraSliceMap3 , 0x068, 0xffffffff, 0, 0, "Intra slice bitmap for slices 64..95. LSB=slice64. MSB=slice95. 1=intra."},
  431. {HEncRoi1Left , 0x0f0, 0xff000000, 24, 0, "1st ROI area left mb column (inside area)"},
  432. {HEncRoi1Right , 0x0f0, 0x00ff0000, 16, 0, "1st ROI area right mb column (inside area)"},
  433. {HEncRoi1Top , 0x0f0, 0x0000ff00, 8, 0, "1st ROI area top mb row (inside area)"},
  434. {HEncRoi1Bottom , 0x0f0, 0x000000ff, 0, 0, "1st ROI area bottom mb row (inside area)"},
  435. {HEncRoi2Left , 0x0f4, 0xff000000, 24, 0, "2nd ROI area left mb column (inside area)"},
  436. {HEncRoi2Right , 0x0f4, 0x00ff0000, 16, 0, "2nd ROI area right mb column (inside area)"},
  437. {HEncRoi2Top , 0x0f4, 0x0000ff00, 8, 0, "2nd ROI area top mb row (inside area)"},
  438. {HEncRoi2Bottom , 0x0f4, 0x000000ff, 0, 0, "2nd ROI area bottom mb row (inside area)"},
  439. {HEncRoi1DeltaQp , 0x0f8, 0x000000f0, 4, 0, "1st ROI area delta QP. qp = Qp - Roi1DeltaQp [0..15]"},
  440. {HEncRoi2DeltaQp , 0x0f8, 0x0000000f, 0, 0, "2nd ROI area delta QP. qp = Qp - Roi2DeltaQp [0..15]"},
  441. {HEncMvcPriorityId , 0x0f8, 0x00070000, 16, 0, "MVC priority_id [0..7]"},
  442. {HEncMvcViewId , 0x0f8, 0x0000e000, 13, 0, "MVC view_id [0..7]"},
  443. {HEncMvcTemporalId , 0x0f8, 0x00001c00, 10, 0, "MVC temporal_id [0..7]"},
  444. {HEncMvcAnchorPicFlag , 0x0f8, 0x00000200, 9, 0, "MVC anchor_pic_flag. Specifies that the picture is part of an anchor access unit."},
  445. {HEncMvcInterViewFlag , 0x0f8, 0x00000100, 8, 0, "MVC inter_view_flag. Specifies that the picture is used for inter-view prediction."},
  446. {HEncHWTiledSupport , 0x0fc, 0x40000000, 30, 0, "Tiled 4x4 input mode supported by HW. 0=not supported. 1=supported"},
  447. {HEncHWSearchArea , 0x0fc, 0x20000000, 29, 0, "HW search area height. 0=5 MB rows. 1=3 MB rows"},
  448. {HEncHWRgbSupport , 0x0fc, 0x10000000, 28, 0, "RGB to YUV conversion supported by HW. 0=not supported. 1=supported"},
  449. {HEncHWH264Support , 0x0fc, 0x08000000, 27, 0, "H.264 encoding supported by HW. 0=not supported. 1=supported"},
  450. {HEncHWMpeg4Support , 0x0fc, 0x04000000, 26, 0, "MPEG-4 encoding supported by HW. 0=not supported. 1=supported"},
  451. {HEncHWJpegSupport , 0x0fc, 0x02000000, 25, 0, "JPEG encoding supported by HW. 0=not supported. 1=supported"},
  452. {HEncHWStabSupport , 0x0fc, 0x01000000, 24, 0, "Stabilization supported by HW. 0=not supported. 1=supported"},
  453. {HEncHWBus , 0x0fc, 0x00f00000, 20, 0, "Bus connection of HW. 1=AHB. 2=OCP. 3=AXI. 4=PCI. 5=AXIAHB. 6=AXIAPB."},
  454. {HEncHWSynthesisLan , 0x0fc, 0x000f0000, 16, 0, "Synthesis language. 1=vhdl. 2=verilog"},
  455. {HEncHWBusWidth , 0x0fc, 0x0000f000, 12, 0, "Bus width of HW. 0=32b. 1=64b. 2=128b"},
  456. {HEncHWMaxVideoWidth , 0x0fc, 0x00000fff, 0, 0, "Maximum video width supported by HW (pixels)"},
  457. {HEncJpegQuantLuma1 , 0x100, 0xffffffff, 0, 0, "JPEG luma quantization 1"},
  458. {HEncJpegQuantLuma2 , 0x104, 0xffffffff, 0, 0, "JPEG luma quantization 2"},
  459. {HEncJpegQuantLuma3 , 0x108, 0xffffffff, 0, 0, "JPEG luma quantization 3"},
  460. {HEncJpegQuantLuma4 , 0x10c, 0xffffffff, 0, 0, "JPEG luma quantization 4"},
  461. {HEncJpegQuantLuma5 , 0x110, 0xffffffff, 0, 0, "JPEG luma quantization 5"},
  462. {HEncJpegQuantLuma6 , 0x114, 0xffffffff, 0, 0, "JPEG luma quantization 6"},
  463. {HEncJpegQuantLuma7 , 0x118, 0xffffffff, 0, 0, "JPEG luma quantization 7"},
  464. {HEncJpegQuantLuma8 , 0x11c, 0xffffffff, 0, 0, "JPEG luma quantization 8"},
  465. {HEncJpegQuantLuma9 , 0x120, 0xffffffff, 0, 0, "JPEG luma quantization 9"},
  466. {HEncJpegQuantLuma10 , 0x124, 0xffffffff, 0, 0, "JPEG luma quantization 10"},
  467. {HEncJpegQuantLuma11 , 0x128, 0xffffffff, 0, 0, "JPEG luma quantization 11"},
  468. {HEncJpegQuantLuma12 , 0x12c, 0xffffffff, 0, 0, "JPEG luma quantization 12"},
  469. {HEncJpegQuantLuma13 , 0x130, 0xffffffff, 0, 0, "JPEG luma quantization 13"},
  470. {HEncJpegQuantLuma14 , 0x134, 0xffffffff, 0, 0, "JPEG luma quantization 14"},
  471. {HEncJpegQuantLuma15 , 0x138, 0xffffffff, 0, 0, "JPEG luma quantization 15"},
  472. {HEncJpegQuantLuma16 , 0x13c, 0xffffffff, 0, 0, "JPEG luma quantization 16"},
  473. {HEncJpegQuantChroma1 , 0x140, 0xffffffff, 0, 0, "JPEG chroma quantization 1"},
  474. {HEncJpegQuantChroma2 , 0x144, 0xffffffff, 0, 0, "JPEG chroma quantization 2"},
  475. {HEncJpegQuantChroma3 , 0x148, 0xffffffff, 0, 0, "JPEG chroma quantization 3"},
  476. {HEncJpegQuantChroma4 , 0x14c, 0xffffffff, 0, 0, "JPEG chroma quantization 4"},
  477. {HEncJpegQuantChroma5 , 0x150, 0xffffffff, 0, 0, "JPEG chroma quantization 5"},
  478. {HEncJpegQuantChroma6 , 0x154, 0xffffffff, 0, 0, "JPEG chroma quantization 6"},
  479. {HEncJpegQuantChroma7 , 0x158, 0xffffffff, 0, 0, "JPEG chroma quantization 7"},
  480. {HEncJpegQuantChroma8 , 0x15c, 0xffffffff, 0, 0, "JPEG chroma quantization 8"},
  481. {HEncJpegQuantChroma9 , 0x160, 0xffffffff, 0, 0, "JPEG chroma quantization 9"},
  482. {HEncJpegQuantChroma10, 0x164, 0xffffffff, 0, 0, "JPEG chroma quantization 10"},
  483. {HEncJpegQuantChroma11, 0x168, 0xffffffff, 0, 0, "JPEG chroma quantization 11"},
  484. {HEncJpegQuantChroma12, 0x16c, 0xffffffff, 0, 0, "JPEG chroma quantization 12"},
  485. {HEncJpegQuantChroma13, 0x170, 0xffffffff, 0, 0, "JPEG chroma quantization 13"},
  486. {HEncJpegQuantChroma14, 0x174, 0xffffffff, 0, 0, "JPEG chroma quantization 14"},
  487. {HEncJpegQuantChroma15, 0x178, 0xffffffff, 0, 0, "JPEG chroma quantization 15"},
  488. {HEncJpegQuantChroma16, 0x17C, 0xffffffff, 0, 0, "JPEG chroma quantization 16"}
  489. };
  490. #endif