jpeg_drv.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636
  1. #include <linux/ioctl.h>
  2. #ifndef __JPEG_DRV_H__
  3. #define __JPEG_DRV_H__
  4. #define TO_CEIL(x, a) (((x) + ((a)-1)) & ~((a)-1))
  5. #define TO_FLOOR(x, a) ((x) & ~((a)-1))
  6. #define TO_MASK(x, a) ((x) & (a))
  7. #define DUNUM_MAPPING(value) (((value)-1)&0x3)
  8. typedef struct {
  9. long timeout;
  10. unsigned int *result;
  11. } JPEG_DEC_DRV_OUT;
  12. /* ================================================================================= */
  13. #define MAX_JPEG_COMPONENT 4
  14. #define MAX_NUM_SCAN 32
  15. #define D_MAX_JPEG_HW_COMP 3
  16. /* #define D_MAX_JPEG_HUFF_TBL 4 */
  17. #define D_MAX_JPEG_QTBL 4
  18. #define D_MAX_JPEG_HW_QTBL 2
  19. #define D_MAX_JPEG_BLOCK_NUM 10
  20. #define D_HUFF_LOOKAHEAD_BITS 6 /* # of bits of lookahead */
  21. #define D_DCTSIZE 8
  22. #define D_JPEG_DRAM_ALIGN_MASK 0xf
  23. #define D_JPEG_DRAM_ALIGN_SIZE (D_JPEG_DRAM_ALIGN_MASK + 1)
  24. #define D_JPEG_BASELINE 0
  25. #define D_JPEG_DC_REFINE 1
  26. #define D_JPEG_AC_FIRST 2
  27. #define D_JPEG_AC_REFINE 3
  28. #define D_JPEG_DC_FIRST 4
  29. /* global data check flags */
  30. #define D_FLAG_NONE (0)
  31. #define D_GLOB_PROGRESSIVE (1 << 0)
  32. #define D_GLOB_NCOMP (1 << 1)
  33. #define D_GLOB_BLK_W (1 << 2)
  34. #define D_GLOB_BLK_H (1 << 3)
  35. #define D_GLOB_PIC_W (1 << 4)
  36. #define D_GLOB_PIC_H (1 << 5)
  37. #define D_GLOB_DCHUFF (1 << 6) /* no need */
  38. #define D_GLOB_ACHUFF (1 << 7) /* no need */
  39. #define D_GLOB_NZBUFF (1 << 8) /* no need */
  40. #define D_GLOB_QTBL (1 << 9) /* no need */
  41. #define D_GLOB_RESTART (1 << 10)
  42. /* scan data check flags */
  43. #define D_SCAN_DATASTART (1 << 0)
  44. #define D_SCAN_NCOMP (1 << 1)
  45. #define D_SCAN_COMPIN (1 << 2)
  46. #define D_SCAN_COMPQ (1 << 3)
  47. #define D_SCAN_BLKDC (1 << 4)
  48. #define D_SCAN_BLKAC (1 << 5)
  49. #define D_SCAN_ALAH (1 << 6)
  50. #define D_SCAN_SESS (1 << 7)
  51. #define D_SCAN_LAST (1 << 8)
  52. #define D_SCAN_ROWSTART (1 << 9)
  53. #define D_SCAN_ROWEND (1 << 10)
  54. #define D_SCAN_DCHUFF (1 << 11)
  55. #define D_SCAN_ACHUFF (1 << 12)
  56. #define D_SCAN_QTBL (1 << 13)
  57. #define D_SCAN_NZBUFF (1 << 14)
  58. /* mcu row check flags */
  59. #define D_ROW_CURR (1 << 0)
  60. #define D_ROW_OUTBUF (1 << 1)
  61. #define D_ROW_OUTBUFSIZE (1 << 2)
  62. /* mcu check flags */
  63. #define D_MCU_OUTADDR (1 << 0)
  64. #define D_MCU_COEFADDR (1 << 1)
  65. /* misc check flags */
  66. #define D_MISC_ADDR_X (1 << 0)
  67. #define D_MISC_ADDR_Y (1 << 1)
  68. #define HORI 0
  69. #define VERT 1
  70. #define JPEG_ENC_DST_ADDR_OFFSET_MASK (0x0f)
  71. typedef enum _ENUM_JPEG_RET_CODE_T {
  72. E_JPG_OK,
  73. E_JPG_ERR_NONFATAL,
  74. E_JPG_ERR_FATAL,
  75. E_JPG_ERR_PARAM,
  76. E_JPG_ERR_NOT_INITED,
  77. E_JPG_ERR_ALREADY, /* 5 */
  78. /* markers */
  79. E_JPG_ERR_NOT_JPEG_IMAGE,
  80. E_JPG_ERR_NOT_A_MARKER,
  81. E_JPG_ERR_PASS_END,
  82. E_JPG_ERR_MULTI_SOI,
  83. E_JPG_ERR_UNSUPPORT_SOF, /* 10 */
  84. E_JPG_ERR_MULTI_SOF,
  85. E_JPG_ERR_INVALID_SOF,
  86. E_JPG_ERR_SOS_BEFORE_SOF,
  87. E_JPG_ERR_INVALID_SOS,
  88. E_JPG_ERR_INVALID_DHT, /* 15 */
  89. E_JPG_ERR_INVALID_DRI,
  90. E_JPG_ERR_MULTI_APP1,
  91. E_JPG_ERR_INVALID_APP0,
  92. E_JPG_ERR_INVALID_APP1,
  93. E_JPG_ERR_PARSE_FAILED, /* 20 */
  94. E_JPG_ERR_NOT_PARSED,
  95. E_JPG_ERR_MULTI_EOI,
  96. /* instances */
  97. E_JPG_ERR_ALLOC_PARSER,
  98. E_JPG_ERR_ALLOC_DECODER,
  99. E_JPG_ERR_ALLOC_MEM, /* 25 */
  100. E_JPG_ERR_ALLOC_FLOW,
  101. /* general */
  102. E_JPG_ERR_UNSUPPORT,
  103. E_JPG_ERR_GENERAL,
  104. E_JPG_ERR_LAST,
  105. E_JPG_ERR_DISPLAY_ADDR, /* 30 */
  106. E_JPG_ERR_INVALID_COMPONENT /* code sync */
  107. } JpegDecRetCode;
  108. typedef enum {
  109. E_HWJPG_OK = 0,
  110. E_HWJPG_BUSY,
  111. E_HWJPG_ERR_FETCH_TIMEOIT = E_JPG_ERR_LAST + 1,
  112. E_HWJPG_ERR_SET_BS,
  113. E_HWJPG_ERR_LOAD_Q,
  114. E_HWJPG_ERR_QTBL_INDEX,
  115. E_HWJPG_ERR_QTBL_NUM,
  116. E_HWJPG_ERR_PARAM,
  117. E_HWJPG_ERR_TIMEOUT,
  118. E_HWJPG_ERR_COMP_RANGE,
  119. E_HWJPG_ERR_TBL_RANGE,
  120. E_HWJPG_ERR_BLOCK,
  121. E_HWJPG_ERR_SIZE,
  122. E_HWJPG_ERR_OUTBUF,
  123. E_HWJPG_ERR_NULL_SCAN,
  124. E_HWJPG_ERR_GLOB_NOT_READY,
  125. E_HWJPG_ERR_SCAN_NOT_READY,
  126. E_HWJPG_ERR_ROW_NOT_READY,
  127. E_HWJPG_ERR_MCU_NOT_READY,
  128. E_HWJPG_ERR_MISC_NOT_READY,
  129. E_HWJPG_ERR_HUFF_ADDR,
  130. /* last */
  131. E_HWJPG_ERR_GENERAL
  132. } JpegDrvDecRetCode;
  133. typedef enum {
  134. JDEC_HAL_DEC_MODE_NONE,
  135. JDEC_HAL_DEC_MODE_BASELINE_PIC, /* /< Jpeg baseline picture, decode whole picture */
  136. JDEC_HAL_DEC_MODE_BASELINE_MCU, /* /< Jpeg baseline picture, decode MCU row */
  137. JDEC_HAL_DEC_MODE_BASELINE_MCU_ROW, /* /< Jpeg baseline picture, decode MCU */
  138. JDEC_HAL_DEC_MODE_BASELINE_VIDEO_OUTPUT,
  139. JDEC_HAL_DEC_MODE_PROGRESSIVE_MCU_MULTI_COLLECT,/* /< Jpeg progressive picture, decode MCU milti-collect */
  140. JDEC_HAL_DEC_MODE_PROGRESSIVE_MCU_ENHANCE, /* /< Jpeg progressive picture, decode MCU enhance decoding */
  141. JDEC_HAL_DEC_MODE_PROGRESSIVE_MCU_ROW_MULTI_COLLECT,/* /Jpeg progressive MCU-Row Mode */
  142. JDEC_HAL_DEC_MODE_PROGRESSIVE_MCU_ROW_ENHANCE,
  143. JDEC_HAL_DEC_MODE_PROGRESSIVE_SCAN_MULTI_COLLECT,
  144. JDEC_HAL_DEC_MODE_PROGRESSIVE_SCAN_ENHANCE
  145. } JpegDrvDecMode;
  146. /* jpeg format */
  147. typedef enum _JpegDecFormat {
  148. E_JPG_UNKNOWN_FORMAT,
  149. E_JPG_BASELINE,
  150. E_JPG_EX_SEQ_HUFFMAN,
  151. E_JPG_PROGRESSIVE_HUFFMAN,
  152. E_JPG_EX_SEQ_ARITHMETIC,
  153. E_JPG_PROGRESSIVE_ARITHMETIC,
  154. E_JPG_LOSSLESS_HUFFMAN,
  155. E_JPG_DIFFERENTIAL_SEQ_HUFFMAN,
  156. E_JPG_DIFF_PROG_HUFFMAN,
  157. E_JPG_DIFF_LLESS_HUFFMAN,
  158. E_JPG_RESERVED_FOR_EXTENSIONS,
  159. E_JPG_LOSSLESS_ARITHMETIC,
  160. E_JPG_DIFF_SEQ_ARITHMETIC,
  161. E_JPG_DIFF_PROG_ARITHMETIC,
  162. E_JPG_UNSUPPORT_FORMAT
  163. } JpegDecFormat;
  164. /* component info in SOF marker */
  165. typedef struct _JpegDecSOFComp {
  166. unsigned char u1CompId;
  167. unsigned char u1HSampFactor;
  168. unsigned char u1VSampFactor;
  169. unsigned char u1QuantTblNo;
  170. } JpegDecSOFComp;
  171. typedef struct _JpegDecSOS {
  172. unsigned int u4ScanPass; /* scan pass */
  173. unsigned char u1CompInScan;
  174. unsigned char au1CompNoList[MAX_JPEG_COMPONENT];
  175. unsigned char au1DcId[MAX_JPEG_COMPONENT];
  176. unsigned char au1AcId[MAX_JPEG_COMPONENT];
  177. unsigned char u1Ss, u1Se, u1Ah, u1Al, u1AhAl; /* OT: NO USE */
  178. unsigned char *pu1ScanTableStart;
  179. unsigned char *pu1ScanDataStart;
  180. } JpegDecSOS;
  181. /* raw de-huffman table */
  182. typedef struct {
  183. unsigned char au1Bits[17];
  184. unsigned char au1HuffVal[256];
  185. } JpegDecDhtHuffTbl;
  186. /* SOF data */
  187. typedef struct _JpegDecSOF {
  188. int fgSOF; /* indicate that already have an SOF marker */
  189. JpegDecFormat eJpegFormat;
  190. unsigned char u1DataPrecision;
  191. unsigned short u2ImageHeight;
  192. unsigned short u2ImageWidth;
  193. unsigned char u1NumComponents;
  194. unsigned char au1MapId2Index[256];
  195. JpegDecSOFComp arSofComp[MAX_JPEG_COMPONENT];
  196. } JpegDecSOF;
  197. /* DHT data */
  198. typedef struct {
  199. unsigned int u4NumDcTbl;
  200. unsigned int u4NumAcTbl;
  201. unsigned int fgDcTblLoaded; /* bit mask for loaded dc table */
  202. unsigned int fgAcTblLoaded; /* bit mask for loaded ac table */
  203. JpegDecDhtHuffTbl arDcTbl[4];
  204. JpegDecDhtHuffTbl arAcTbl[4];
  205. } JpegDecDHT;
  206. /* DQT data */
  207. typedef struct {
  208. /*
  209. although we leave 2bytes * 64 space here,
  210. if q table precision is 8bits, we use only
  211. first half (1x64) of this table
  212. */
  213. unsigned char aau1Qtbl[4][128];
  214. unsigned int afgPrec[4];
  215. unsigned char u1NumQ;
  216. unsigned int fgDQT;
  217. } JpegDecDQT;
  218. /* new types for flw2 (wired) */
  219. typedef struct {
  220. void *pvFreePoint; /* OT: NO USE */
  221. unsigned int u4Width; /* OT: NO USE */
  222. unsigned int u4Height; /* OT: NO USE */
  223. unsigned int u4McuNumInRow; /* OT: NO USE */
  224. unsigned int u4McuRows; /* OT: NO USE */
  225. unsigned int u4TotalMcuNum; /* OT: NO USE */
  226. unsigned int aau4SampleFactor[3][2]; /* OT: NO USE */
  227. unsigned int au4CompBlock[3]; /* OT: NO USE */
  228. unsigned int au4MaxFactor[2]; /* OT: NO USE */
  229. unsigned int outputBuffer0[3];
  230. unsigned int outputBuffer1[3]; /* nouse in full frame mode, only use in PauseResume/DirectCouple mode */
  231. unsigned int au1CoffBuffer[3]; /* OT: NO USE */
  232. int fgProgScan; /* OT: NO USE */
  233. /* temp buffers */
  234. unsigned int apvNzBuffer[3]; /* OT: NO USE */
  235. } JpegDrvDecFlow;
  236. /* // jpeg decode mode */
  237. typedef enum _JpegDecMode {
  238. JPEG_DEC_MODE_NONE,
  239. JPEG_DEC_MODE_FRAME, /* /< Jpeg baseline picture, decode whole picture */
  240. JPEG_DEC_MODE_DC_LINK, /* /< Jpeg baseline picture, decode whole picture */
  241. JPEG_DEC_MODE_MCU_ROW /* /< Jpeg baseline picture, decode MCU row */
  242. } JpegDecMode;
  243. /* // JPEG Decoder Structure */
  244. typedef struct {
  245. /* common */
  246. unsigned int decodeMode; /* OK */
  247. unsigned int reg_OpMode; /* OK */
  248. unsigned int regDecDumpEn;
  249. unsigned int totalMCU; /* OK */
  250. unsigned int comp0_DU;
  251. unsigned int membershipList; /* OK { GRAY, gmcEn, DU9, DU8,..., DU1, DU0} */
  252. /* for BRZ (0): 1, (1): 1/2, (2): 1/4, (3): 1/8 */
  253. unsigned char lumaHorDecimate; /* OK */
  254. unsigned char lumaVerDecimate; /* OK */
  255. unsigned char cbcrHorDecimate; /* OK */
  256. unsigned char cbcrVerDecimate; /* OK */
  257. unsigned int srcStreamAddrBase; /* OK */
  258. unsigned int srcStreamSize; /* OK */
  259. unsigned int srcStreamAddrWritePtr; /* OK */
  260. unsigned int outputBuffer0[3]; /* OK */
  261. unsigned int outputBuffer1[3]; /* nouse in full frame mode, only use in PauseResume/DirectCouple mode */
  262. /* JPEG component information */
  263. unsigned int componentNum; /* OK */
  264. unsigned int componentID[3]; /* OK ///< Ci */
  265. unsigned int hSamplingFactor[3]; /* OK ///< Hi */
  266. unsigned int vSamplingFactor[3]; /* OK ///< Vi */
  267. unsigned int qTableSelector[3]; /* OK ///< Tqi (OT: need this field?) */
  268. unsigned int dma_McuInGroup; /* OK */
  269. unsigned int dma_GroupNum; /* OK */
  270. unsigned int dma_LastMcuNum; /* OK */
  271. unsigned int gmcEn; /* OK */
  272. /* unsigned int totalMcuRows; //OK ///< number of MCU column in the JPEG file */
  273. unsigned int compImgStride[D_MAX_JPEG_HW_COMP]; /* hSamplingFactor[n] * 8 * mcuPerRow */
  274. unsigned int compMemStride[D_MAX_JPEG_HW_COMP]; /* OK */
  275. unsigned int compTileBufStride[D_MAX_JPEG_HW_COMP]; /* hSamplingFactor[n] * 8 * mcuPerRow */
  276. unsigned int mcuPerRow; /* OK //move to HAL ///< number of MCU row in the JPEG file */
  277. unsigned int pauseRow_en; /* OK */
  278. unsigned int pauseRowCnt; /* move to HAL */
  279. unsigned int pauseMCU; /* OK */
  280. unsigned int tileBufRowNum; /* move to HAL */
  281. unsigned int buffer_Y_PA; /* move to HAL */
  282. unsigned int buffer_Cb_PA; /* move to HAL */
  283. unsigned int buffer_Cr_PA; /* move to HAL */
  284. unsigned int buffer_Y_row_size; /* move to HAL */
  285. unsigned int buffer_C_row_size; /* move to HAL */
  286. /* unsigned int compDU[3]; (required by HW decoder) number of DU for each component */
  287. /* unsigned int duPerMCURow[3]; (required by HW decoder) DU per MCU row for each component */
  288. /* unsigned int dummyDU[3]; (required by HW decoder) number of dummy DU for each component */
  289. /* unsigned int samplingFormat; how many format? */
  290. } JPEG_DEC_DRV_IN;
  291. typedef struct {
  292. unsigned int decRowBuf[3]; /* OK */
  293. unsigned int pauseMCU; /* OK */
  294. } JPEG_DEC_CONFIG_ROW;
  295. typedef struct {
  296. /* from mt6575 */
  297. unsigned int srcStreamAddrBase;
  298. unsigned int srcStreamSize;
  299. unsigned int srcStreamAddrWritePtr;
  300. unsigned int outputBuffer0[3];
  301. unsigned int outputBuffer1[3]; /* nouse in full frame mode, only use in PauseResume/DirectCouple mode */
  302. unsigned int mcuPerRow; /* /< number of MCU row in the JPEG file */
  303. unsigned int totalMcuRows; /* /< number of MCU column in the JPEG file */
  304. unsigned int compDU[3]; /* /< (required by HW decoder) number of DU for each component */
  305. unsigned int duPerMCURow[3];/* /< (required by HW decoder) DU per MCU row for each component */
  306. unsigned int dummyDU[3]; /* /< (required by HW decoder) number of dummy DU for each component */
  307. unsigned int samplingFormat; /* / how many format? */
  308. /* JPEG component information */
  309. unsigned int componentNum;
  310. unsigned int componentID[3]; /* /< Ci */
  311. unsigned int hSamplingFactor[3]; /* /< Hi */
  312. unsigned int vSamplingFactor[3]; /* /< Vi */
  313. unsigned int qTableSelector[3]; /* /< Tqi (OT: need this field?) */
  314. /*********************************************************************************/
  315. /* common */
  316. unsigned int totalMCU;
  317. unsigned char blkNumInMCU; /* total drv no use */
  318. unsigned char u1MaxHorSample, u1MaxVerSample; /* widest, highest */
  319. unsigned int u4PicWidth, u4PicHeight; /* picture width and height */
  320. unsigned int compImgStride[D_MAX_JPEG_HW_COMP]; /* hSamplingFactor[n] * 8 * mcuPerRow*/
  321. unsigned int compTileBufStride[D_MAX_JPEG_HW_COMP]; /* hSamplingFactor[n] * 8 * mcuPerRow */
  322. unsigned int au4PicWidthInBuf[D_MAX_JPEG_HW_COMP];
  323. /* use only in look ahead table */
  324. unsigned char au1MemberShip[D_MAX_JPEG_BLOCK_NUM]; /* DU mapping to components */
  325. unsigned char aau1Qtbl[D_MAX_JPEG_QTBL][128]; /* q tables in stream */
  326. unsigned int u4RestartInterval;
  327. /* current scan */
  328. unsigned char u1NumCompsInCurrScan; /* number of components in current scan */
  329. int afgCompInScan[D_MAX_JPEG_HW_COMP + 1];
  330. /* unsigned char qTableSelector[D_MAX_JPEG_HW_COMP]; */
  331. unsigned char au1BlkDc[D_MAX_JPEG_BLOCK_NUM];
  332. unsigned char au1BlkAc[D_MAX_JPEG_BLOCK_NUM];
  333. unsigned char u1Se; /* OT: NO USE */
  334. unsigned char u1Ss; /* OT: NO USE */
  335. /* current mcu row */
  336. unsigned int u4CurrMcuRow;
  337. unsigned int u4ModTotalRows;
  338. /* for single component in p scan */
  339. unsigned char u1FirstCompInScan;
  340. /* for BRZ */
  341. unsigned char lumaHorDecimate; /* (0): 1, (1): 1/2, (2): 1/4, (3): 1/8 */
  342. unsigned char lumaVerDecimate;
  343. unsigned char cbcrHorDecimate;
  344. unsigned char cbcrVerDecimate;
  345. unsigned int srcColorFormat;
  346. unsigned int dstColorFormat;
  347. unsigned int u4isColorConv;
  348. unsigned int u4ds_width[3];
  349. unsigned int u4ds_height[3];
  350. unsigned int decodeMode;
  351. unsigned int gdmaBypassEn;
  352. unsigned int regDecDumpEn;
  353. unsigned int pauseRow_en;
  354. unsigned int pauseRowCnt;
  355. unsigned int tileBufRowNum;
  356. unsigned int buffer_Y_PA;
  357. unsigned int buffer_Cb_PA;
  358. unsigned int buffer_Cr_PA;
  359. unsigned int buffer_Y_row_size;
  360. unsigned int buffer_C_row_size;
  361. } JpegDrvDecConfig;
  362. typedef struct {
  363. unsigned int *pChksum;
  364. } JpegDrvDecResult;
  365. /* ================================================================================ */
  366. /* JPEG Encoder Structure */
  367. typedef struct {
  368. unsigned int dstBufferAddr;
  369. unsigned int dstBufferSize;
  370. unsigned int encWidth; /* HW directly fill to header */
  371. unsigned int encHeight; /* HW directly fill to header */
  372. unsigned char enableEXIF;
  373. unsigned char allocBuffer;
  374. /* unsigned char enableSyncReset; //not use in mt6589 */
  375. unsigned int encQuality;
  376. unsigned int encFormat;
  377. /* extend in mt6589 */
  378. unsigned int disableGMC; /* TBD: not support */
  379. unsigned int restartInterval;
  380. unsigned int srcBufferAddr; /* YUV420: Luma */
  381. unsigned int srcChromaAddr;
  382. unsigned int imgStride;
  383. unsigned int memStride;
  384. unsigned int totalEncDU;
  385. unsigned int dstBufAddrOffset;
  386. unsigned int dstBufAddrOffsetMask;
  387. } JPEG_ENC_DRV_IN;
  388. typedef struct {
  389. long timeout;
  390. unsigned int *fileSize;
  391. unsigned int *result;
  392. unsigned int *cycleCount;
  393. } JPEG_ENC_DRV_OUT;
  394. typedef struct {
  395. unsigned long startAddr; /* In : */
  396. unsigned long size;
  397. unsigned long result;
  398. } JPEG_PMEM_RANGE;
  399. /* =========================================================================== */
  400. typedef struct {
  401. long timeout;
  402. unsigned int *pFileSize;
  403. unsigned int *pResult;
  404. unsigned int *pCycleCount;
  405. } JpegDrvEncResult;
  406. /* typedef struct */
  407. /* { */
  408. /* unsigned int srcBufferAddr; // YUV420: Luma */
  409. /* unsigned int srcChromaAddr; */
  410. /* unsigned int dstBufferAddr; */
  411. /* unsigned int dstBufferSize; */
  412. /* */
  413. /* unsigned int srcWidth; */
  414. /* unsigned int srcHeight; */
  415. /* */
  416. /* unsigned char enableEXIF; */
  417. /* unsigned char disableGMC; //not support */
  418. /* */
  419. /* unsigned int restartInterval; */
  420. /* unsigned int quality; */
  421. /* unsigned int yuvFormat; */
  422. /* */
  423. /* } JpegDrvEncParam; */
  424. /* ================================================================================== */
  425. #define JPEG_IOCTL_MAGIC 'x'
  426. #if 0
  427. #define JPEG_DEC_IOCTL_INIT _IO(JPEG_IOCTL_MAGIC, 1)
  428. /* #define JPEG_DEC_IOCTL_CONFIG _IOW (JPEG_IOCTL_MAGIC, 2, JPEG_DEC_DRV_IN) */
  429. #define JPEG_DEC_IOCTL_START _IO(JPEG_IOCTL_MAGIC, 3)
  430. #define JPEG_DEC_IOCTL_WAIT _IOWR(JPEG_IOCTL_MAGIC, 6, JPEG_DEC_DRV_OUT)
  431. #define JPEG_DEC_IOCTL_DEINIT _IO(JPEG_IOCTL_MAGIC, 8)
  432. /* #define JPEG_DEC_IOCTL_RESUME _IOW(JPEG_IOCTL_MAGIC, 4, JPEG_DEC_RESUME_IN) */
  433. /* #define JPEG_DEC_IOCTL_RANGE _IOWR(JPEG_IOCTL_MAGIC, 5, JPEG_DEC_RANGE_IN) */
  434. /* #define JPEG_DEC_IOCTL_COPY _IOWR(JPEG_IOCTL_MAGIC, 7, int) */
  435. #endif
  436. /* /////////////////// JPEG DEC IOCTL ///////////////////////////////////// */
  437. #define JPEG_DEC_IOCTL_INIT _IO(JPEG_IOCTL_MAGIC, 1)
  438. #define JPEG_DEC_IOCTL_CONFIG _IOW(JPEG_IOCTL_MAGIC, 2, JPEG_DEC_DRV_IN)
  439. #define JPEG_DEC_IOCTL_FLOW _IOW(JPEG_IOCTL_MAGIC, 3, JpegDrvDecFlow)
  440. #define JPEG_DEC_IOCTL_START _IO(JPEG_IOCTL_MAGIC, 4)
  441. #define JPEG_DEC_IOCTL_WAIT _IOWR(JPEG_IOCTL_MAGIC, 5, JPEG_DEC_DRV_OUT)
  442. #define JPEG_DEC_IOCTL_DEINIT _IO(JPEG_IOCTL_MAGIC, 6)
  443. #define JPEG_DEC_IOCTL_RESET _IO(JPEG_IOCTL_MAGIC, 7)
  444. #define JPEG_DEC_IOCTL_CHKSUM _IOWR(JPEG_IOCTL_MAGIC, 8, JpegDrvDecResult)
  445. #define JPEG_DEC_IOCTL_BREAK _IO(JPEG_IOCTL_MAGIC, 9)
  446. #define JPEG_DEC_IOCTL_RW_REG _IO(JPEG_IOCTL_MAGIC, 10)
  447. #define JPEG_DEC_IOCTL_RESUME _IOW(JPEG_IOCTL_MAGIC, 11, JPEG_DEC_CONFIG_ROW)
  448. #define JPEG_DEC_IOCTL_DUMP_REG _IO(JPEG_IOCTL_MAGIC, 30)
  449. /* #define JPEG_DEC_IOCTL_MAN_GDMA _IOW (JPEG_IOCTL_MAGIC, 31, unsigned char) */
  450. /* /////////////////// JPEG ENC IOCTL ///////////////////////////////////// */
  451. #define JPEG_ENC_IOCTL_INIT _IO(JPEG_IOCTL_MAGIC, 11)
  452. #define JPEG_ENC_IOCTL_CONFIG _IOW(JPEG_IOCTL_MAGIC, 12, JPEG_ENC_DRV_IN)
  453. #define JPEG_ENC_IOCTL_WAIT _IOWR(JPEG_IOCTL_MAGIC, 13, JPEG_ENC_DRV_OUT)
  454. #define JPEG_ENC_IOCTL_DEINIT _IO(JPEG_IOCTL_MAGIC, 14)
  455. #define JPEG_ENC_IOCTL_START _IO(JPEG_IOCTL_MAGIC, 15)
  456. #define JPEG_ENC_IOCTL_WARM_RESET _IO(JPEG_IOCTL_MAGIC, 20)
  457. #define JPEG_ENC_IOCTL_DUMP_REG _IO(JPEG_IOCTL_MAGIC, 21)
  458. #define JPEG_ENC_IOCTL_RW_REG _IO(JPEG_IOCTL_MAGIC, 22)
  459. #endif