ddp_dpi_reg.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494
  1. #ifndef __DDP_DPI_REG_H__
  2. #define __DDP_DPI_REG_H__
  3. #include <stddef.h>
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. struct DPI_REG_EN {
  8. unsigned EN:1;
  9. unsigned rsv_1:31;
  10. };
  11. struct DPI_REG_RST {
  12. unsigned RST:1;
  13. unsigned rsv_1:31;
  14. };
  15. struct DPI_REG_INTERRUPT {
  16. unsigned VSYNC:1;
  17. unsigned VDE:1;
  18. unsigned UNDERFLOW:1;
  19. unsigned rsv_3:29;
  20. };
  21. struct DPI_REG_CNTL {
  22. unsigned BG_EN:1;
  23. unsigned RGB_SWAP:1;
  24. unsigned INTL_EN:1;
  25. unsigned TDFP_EN:1;
  26. unsigned CLPF_EN:1;
  27. unsigned YUV422_EN:1;
  28. unsigned RGB2YUV_EN:1;
  29. unsigned rsv_7:1;
  30. unsigned EMBSYNC_EN:1;
  31. unsigned rsv_9:3;
  32. unsigned PIXREP:4;
  33. unsigned VS_LODD_EN:1;
  34. unsigned VS_LEVEN_EN:1;
  35. unsigned VS_RODD_EN:1;
  36. unsigned VS_REVEN_EN:1;
  37. unsigned FAKE_DE_LODD:1;
  38. unsigned FAKE_DE_LEVEN:1;
  39. unsigned FAKE_DE_RODD:1;
  40. unsigned FAKE_DE_REVEN:1;
  41. unsigned rsv_24:8;
  42. };
  43. struct DPI_REG_OUTPUT_SETTING {
  44. unsigned CH_SWAP:3;
  45. unsigned BIT_SWAP:1;
  46. unsigned B_MASK:1;
  47. unsigned G_MASK:1;
  48. unsigned R_MASK:1;
  49. unsigned rsv_7:1;
  50. unsigned DE_MASK:1;
  51. unsigned HS_MASK:1;
  52. unsigned VS_MASK:1;
  53. unsigned rsv_11:1;
  54. unsigned DE_POL:1;
  55. unsigned HSYNC_POL:1;
  56. unsigned VSYNC_POL:1;
  57. unsigned CLK_POL:1;
  58. unsigned DPI_O_EN:1;
  59. unsigned DUAL_EDGE_SEL:1;
  60. unsigned OUT_BIT:2;
  61. unsigned YC_MAP:3;
  62. unsigned rsv_23:9;
  63. };
  64. struct DPI_REG_SIZE {
  65. unsigned WIDTH:13;
  66. unsigned rsv_13:3;
  67. unsigned HEIGHT:13;
  68. unsigned rsv_28:3;
  69. };
  70. struct DPI_REG_DDR_SETTING {
  71. unsigned DDR_EN:1;
  72. unsigned DDR_SEL:1;
  73. unsigned DDR_4PHASE:1;
  74. unsigned DATA_THROT:1;
  75. unsigned DDR_WIDTH:2;
  76. unsigned rsv_6:2;
  77. unsigned DDR_PAD_MODE:1;
  78. unsigned rsv_9:23;
  79. };
  80. struct DPI_REG_TGEN_HPORCH {
  81. unsigned HBP:12;
  82. unsigned rsv_12:4;
  83. unsigned HFP:12;
  84. unsigned rsv_28:4;
  85. };
  86. struct DPI_REG_TGEN_VWIDTH_LODD {
  87. unsigned VPW_LODD:12;
  88. unsigned rsv_12:4;
  89. unsigned VPW_HALF_LODD:1;
  90. unsigned rsv_17:15;
  91. };
  92. struct DPI_REG_TGEN_VPORCH_LODD {
  93. unsigned VBP_LODD:12;
  94. unsigned rsv_12:4;
  95. unsigned VFP_LODD:12;
  96. unsigned rsv_28:4;
  97. };
  98. struct DPI_REG_BG_HCNTL {
  99. unsigned BG_RIGHT:13;
  100. unsigned rsv_13:3;
  101. unsigned BG_LEFT:13;
  102. unsigned rsv_29:3;
  103. };
  104. struct DPI_REG_BG_VCNTL {
  105. unsigned BG_BOT:13;
  106. unsigned rsv_13:3;
  107. unsigned BG_TOP:13;
  108. unsigned rsv_29:3;
  109. };
  110. struct DPI_REG_BG_COLOR {
  111. unsigned BG_B:8;
  112. unsigned BG_G:8;
  113. unsigned BG_R:8;
  114. unsigned rsv_24:8;
  115. };
  116. struct DPI_REG_FIFO_CTL {
  117. unsigned FIFO_VALID_SET:5;
  118. unsigned rsv_5:3;
  119. unsigned FIFO_RST_SEL:1;
  120. unsigned rsv_9:23;
  121. };
  122. struct DPI_REG_STATUS {
  123. unsigned V_CNT:13;
  124. unsigned rsv_13:3;
  125. unsigned DPI_BUSY:1;
  126. unsigned OUT_EN:1;
  127. unsigned rsv_18:2;
  128. unsigned FIELD:1;
  129. unsigned TDLR:1;
  130. unsigned rsv_22:10;
  131. };
  132. struct DPI_REG_TMODE {
  133. unsigned OEN_EN:1;
  134. unsigned rsv_1:31;
  135. };
  136. struct DPI_REG_CHKSUM {
  137. unsigned CHKSUM:24;
  138. unsigned rsv_24:6;
  139. unsigned CHKSUM_RDY:1;
  140. unsigned CHKSUM_EN:1;
  141. };
  142. struct DPI_REG_TGEN_VWIDTH_LEVEN {
  143. unsigned VPW_LEVEN:12;
  144. unsigned rsv_12:4;
  145. unsigned VPW_HALF_LEVEN:1;
  146. unsigned rsv_17:15;
  147. };
  148. struct DPI_REG_TGEN_VPORCH_LEVEN {
  149. unsigned VBP_LEVEN:12;
  150. unsigned rsv_12:4;
  151. unsigned VFP_LEVEN:12;
  152. unsigned rsv_28:4;
  153. };
  154. struct DPI_REG_TGEN_VWIDTH_RODD {
  155. unsigned VPW_RODD:12;
  156. unsigned rsv_12:4;
  157. unsigned VPW_HALF_RODD:1;
  158. unsigned rsv_17:15;
  159. };
  160. struct DPI_REG_TGEN_VPORCH_RODD {
  161. unsigned VBP_RODD:12;
  162. unsigned rsv_12:4;
  163. unsigned VFP_RODD:12;
  164. unsigned rsv_28:4;
  165. };
  166. struct DPI_REG_TGEN_VWIDTH_REVEN {
  167. unsigned VPW_REVEN:12;
  168. unsigned rsv_12:4;
  169. unsigned VPW_HALF_REVEN:1;
  170. unsigned rsv_17:15;
  171. };
  172. struct DPI_REG_TGEN_VPORCH_REVEN {
  173. unsigned VBP_REVEN:12;
  174. unsigned rsv_12:4;
  175. unsigned VFP_REVEN:12;
  176. unsigned rsv_28:4;
  177. };
  178. struct DPI_REG_ESAV_VTIM_LOAD {
  179. unsigned ESAV_VOFST_LODD:12;
  180. unsigned rsv_12:4;
  181. unsigned ESAV_VWID_LODD:12;
  182. unsigned rsv_28:4;
  183. };
  184. struct DPI_REG_ESAV_VTIM_LEVEN {
  185. unsigned ESAV_VVOFST_LEVEN:12;
  186. unsigned rsv_12:4;
  187. unsigned ESAV_VWID_LEVEN:12;
  188. unsigned rsv_28:4;
  189. };
  190. struct DPI_REG_ESAV_VTIM_ROAD {
  191. unsigned ESAV_VOFST_RODD:12;
  192. unsigned rsv_12:4;
  193. unsigned ESAV_VWID_RODD:12;
  194. unsigned rsv_28:4;
  195. };
  196. struct DPI_REG_ESAV_VTIM_REVEN {
  197. unsigned ESAV_VOFST_REVEN:12;
  198. unsigned rsv_12:4;
  199. unsigned ESAV_VWID_REVEN:12;
  200. unsigned rsv_28:4;
  201. };
  202. struct DPI_REG_ESAV_FTIM {
  203. unsigned ESAV_FOFST_ODD:12;
  204. unsigned rsv_12:4;
  205. unsigned ESAV_FOFST_EVEN:12;
  206. unsigned rsv_28:4;
  207. };
  208. struct DPI_REG_CLPF_SETTING {
  209. unsigned CLPF_TYPE:2;
  210. unsigned rsv2:2;
  211. unsigned ROUND_EN:1;
  212. unsigned rsv5:27;
  213. };
  214. struct DPI_REG_Y_LIMIT {
  215. unsigned Y_LIMIT_BOT:12;
  216. unsigned rsv12:4;
  217. unsigned Y_LIMIT_TOP:12;
  218. unsigned rsv28:4;
  219. };
  220. struct DPI_REG_C_LIMIT {
  221. unsigned C_LIMIT_BOT:12;
  222. unsigned rsv12:4;
  223. unsigned C_LIMIT_TOP:12;
  224. unsigned rsv28:4;
  225. };
  226. struct DPI_REG_YUV422_SETTING {
  227. unsigned UV_SWAP:1;
  228. unsigned rsv1:3;
  229. unsigned CR_DELSEL:1;
  230. unsigned CB_DELSEL:1;
  231. unsigned Y_DELSEL:1;
  232. unsigned DE_DELSEL:1;
  233. unsigned rsv8:24;
  234. };
  235. struct DPI_REG_EMBSYNC_SETTING {
  236. unsigned EMBVSYNC_R_CR:1;
  237. unsigned EMBVSYNC_G_Y:1;
  238. unsigned EMBVSYNC_B_CB:1;
  239. unsigned rsv_3:1;
  240. unsigned ESAV_F_INV:1;
  241. unsigned ESAV_V_INV:1;
  242. unsigned ESAV_H_INV:1;
  243. unsigned rsv_7:1;
  244. unsigned ESAV_CODE_MAN:1;
  245. unsigned rsv_9:3;
  246. unsigned VS_OUT_SEL:3;
  247. unsigned rsv_15:1;
  248. unsigned EMBSYNC_OPT:1;
  249. unsigned rsv_17:15;
  250. };
  251. struct DPI_REG_ESAV_CODE_SET0 {
  252. unsigned ESAV_CODE0:12;
  253. unsigned rsv_12:4;
  254. unsigned ESAV_CODE1:12;
  255. unsigned rsv_28:4;
  256. };
  257. struct DPI_REG_ESAV_CODE_SET1 {
  258. unsigned ESAV_CODE2:12;
  259. unsigned rsv_12:4;
  260. unsigned ESAV_CODE3_MSB:1;
  261. unsigned rsv_17:15;
  262. };
  263. typedef struct {
  264. unsigned INT_MATRIX_SEL :5;
  265. unsigned rsv_3 :3;
  266. unsigned MATRIX_BIT :2;
  267. unsigned rsv_2 :2;
  268. unsigned EXT_MATRIX_EN :1;
  269. unsigned rsv_19 :19;
  270. } DPI_REG_MATRIX_SET;
  271. typedef struct {
  272. unsigned MATRIX_COFEF_00 :13;
  273. unsigned rsv_13 :3;
  274. unsigned MATRIX_COFEF_01 :13;
  275. unsigned rsv_29 :3;
  276. } DPI_REG_MATRIX_COEF;
  277. typedef struct {
  278. unsigned MATRIX_COFEF_00 :13;
  279. unsigned rsv_19 :19;
  280. } DPI_REG_MATRIX_COEF_ONE;
  281. typedef struct {
  282. unsigned MATRIX_OFFSET_0 :13;
  283. unsigned rsv_3 :3;
  284. unsigned MATRIX_OFFSET_1 :13;
  285. unsigned rsv :3;
  286. } DPI_REG_MATRIX_OFFSET;
  287. typedef struct {
  288. unsigned MATRIX_OFFSET_0 :13;
  289. unsigned rsv_19 :19;
  290. } DPI_REG_MATRIX_OFFSET_ONE;
  291. struct DPI_REG_PATTERN {
  292. unsigned PAT_EN:1;
  293. unsigned rsv_1:3;
  294. unsigned PAT_SEL:3;
  295. unsigned rsv_6:1;
  296. unsigned PAT_B_MAN:8;
  297. unsigned PAT_G_MAN:8;
  298. unsigned PAT_R_MAN:8;
  299. };
  300. /*not be used*/
  301. struct DPI_REG_TGEN_HCNTL {
  302. unsigned HPW:8;
  303. unsigned HBP:8;
  304. unsigned HFP:8;
  305. unsigned HSYNC_POL:1;
  306. unsigned DE_POL:1;
  307. unsigned rsv_26:6;
  308. };
  309. struct DPI_REG_TGEN_VCNTL {
  310. unsigned VPW:8;
  311. unsigned VBP:8;
  312. unsigned VFP:8;
  313. unsigned VSYNC_POL:1;
  314. unsigned rsv_25:7;
  315. };
  316. /*not be used end*/
  317. struct DPI_REG_MATRIX_COEFF_SET0 {
  318. unsigned MATRIX_C00:13;
  319. unsigned rsv_13:3;
  320. unsigned MATRIX_C01:13;
  321. unsigned rsv_29:3;
  322. };
  323. struct DPI_REG_MATRIX_COEFF_SET1 {
  324. unsigned MATRIX_C02:13;
  325. unsigned rsv_13:3;
  326. unsigned MATRIX_C10:13;
  327. unsigned rsv_29:3;
  328. };
  329. struct DPI_REG_MATRIX_COEFF_SET2 {
  330. unsigned MATRIX_C11:13;
  331. unsigned rsv_13:3;
  332. unsigned MATRIX_C12:13;
  333. unsigned rsv_29:3;
  334. };
  335. struct DPI_REG_MATRIX_COEFF_SET3 {
  336. unsigned MATRIX_C20:13;
  337. unsigned rsv_13:3;
  338. unsigned MATRIX_C21:13;
  339. unsigned rsv_29:3;
  340. };
  341. struct DPI_REG_MATRIX_COEFF_SET4 {
  342. unsigned MATRIX_C22:13;
  343. unsigned rsv_13:19;
  344. };
  345. struct DPI_REG_MATRIX_PREADD_SET0 {
  346. unsigned MATRIX_PRE_ADD_0:9;
  347. unsigned rsv_9:7;
  348. unsigned MATRIX_PRE_ADD_1:9;
  349. unsigned rsv_24:7;
  350. };
  351. struct DPI_REG_MATRIX_PREADD_SET1 {
  352. unsigned MATRIX_PRE_ADD_2:9;
  353. unsigned rsv_9:23;
  354. };
  355. struct DPI_REG_MATRIX_POSTADD_SET0 {
  356. unsigned MATRIX_POST_ADD_0:13;
  357. unsigned rsv_13:3;
  358. unsigned MATRIX_POST_ADD_1:13;
  359. unsigned rsv_24:3;
  360. };
  361. struct DPI_REG_MATRIX_POSTADD_SET1 {
  362. unsigned MATRIX_POST_ADD_2:13;
  363. unsigned rsv_13:19;
  364. };
  365. struct DPI_REGS {
  366. struct DPI_REG_EN DPI_EN; /*0000*/
  367. struct DPI_REG_RST DPI_RST; /*0004*/
  368. struct DPI_REG_INTERRUPT INT_ENABLE; /* 0008*/
  369. struct DPI_REG_INTERRUPT INT_STATUS; /*000C*/
  370. struct DPI_REG_CNTL CNTL; /*0010*/
  371. struct DPI_REG_OUTPUT_SETTING OUTPUT_SETTING; /*0014*/
  372. struct DPI_REG_SIZE SIZE; /*0018*/
  373. struct DPI_REG_DDR_SETTING DDR_SETTING; /*001c*/
  374. unsigned TGEN_HWIDTH; /*0020*/
  375. struct DPI_REG_TGEN_HPORCH TGEN_HPORCH; /*0024*/
  376. struct DPI_REG_TGEN_VWIDTH_LODD TGEN_VWIDTH_LODD; /* 0028*/
  377. struct DPI_REG_TGEN_VPORCH_LODD TGEN_VPORCH_LODD; /*002C*/
  378. struct DPI_REG_BG_HCNTL BG_HCNTL; /*0030*/
  379. struct DPI_REG_BG_VCNTL BG_VCNTL; /* 0034*/
  380. struct DPI_REG_BG_COLOR BG_COLOR; /*0038*/
  381. struct DPI_REG_FIFO_CTL FIFO_CTL; /*003C*/
  382. struct DPI_REG_STATUS STATUS; /*0040*/
  383. struct DPI_REG_TMODE TMODE; /*0044*/
  384. struct DPI_REG_CHKSUM CHKSUM; /*0048*/
  385. unsigned rsv_4C;
  386. unsigned DUMMY; /*0050*/
  387. unsigned rsv_54[5];
  388. struct DPI_REG_TGEN_VWIDTH_LEVEN TGEN_VWIDTH_LEVEN; /*0068*/
  389. struct DPI_REG_TGEN_VPORCH_LEVEN TGEN_VPORCH_LEVEN; /* 006C*/
  390. struct DPI_REG_TGEN_VWIDTH_RODD TGEN_VWIDTH_RODD; /*0070*/
  391. struct DPI_REG_TGEN_VPORCH_RODD TGEN_VPORCH_RODD; /*0074*/
  392. struct DPI_REG_TGEN_VWIDTH_REVEN TGEN_VWIDTH_REVEN; /*0078*/
  393. struct DPI_REG_TGEN_VPORCH_REVEN TGEN_VPORCH_REVEN; /*007C*/
  394. struct DPI_REG_ESAV_VTIM_LOAD ESAV_VTIM_LOAD; /*0080*/
  395. struct DPI_REG_ESAV_VTIM_LEVEN ESAV_VTIM_LEVEN; /*0084*/
  396. struct DPI_REG_ESAV_VTIM_ROAD ESAV_VTIM_ROAD; /*0088*/
  397. struct DPI_REG_ESAV_VTIM_REVEN ESAV_VTIM_REVEN; /*008C*/
  398. struct DPI_REG_ESAV_FTIM ESAV_FTIM; /*0090*/
  399. struct DPI_REG_CLPF_SETTING CLPF_SETTING; /*0094*/
  400. struct DPI_REG_Y_LIMIT Y_LIMIT; /*0098*/
  401. struct DPI_REG_C_LIMIT C_LIMIT; /*009C*/
  402. struct DPI_REG_YUV422_SETTING YUV422_SETTING; /*00A0*/
  403. struct DPI_REG_EMBSYNC_SETTING EMBSYNC_SETTING; /*00A4*/
  404. struct DPI_REG_ESAV_CODE_SET0 ESAV_CODE_SET0; /*00A8*/
  405. struct DPI_REG_ESAV_CODE_SET1 ESAV_CODE_SET1; /*00AC*/
  406. unsigned int rsv_4; /* 00B0*/
  407. DPI_REG_MATRIX_SET MATRIX_SET; /*00B4*/
  408. DPI_REG_MATRIX_COEF MATRIX_COEF_00; /*00B8*/
  409. DPI_REG_MATRIX_COEF MATRIX_COEF_02; /*00BC*/
  410. DPI_REG_MATRIX_COEF MATRIX_COEF_11; /*00C0*/
  411. DPI_REG_MATRIX_COEF MATRIX_COEF_20; /*00C4*/
  412. DPI_REG_MATRIX_COEF_ONE MATRIX_COEF_22; /*00C8*/
  413. DPI_REG_MATRIX_OFFSET MATRIX_IN_OFFSET_0; /*00CC*/
  414. DPI_REG_MATRIX_OFFSET_ONE MATRIX_IN_OFFSET_2; /*00D0*/
  415. DPI_REG_MATRIX_OFFSET MATRIX_OUT_OFFSET_0; /*00D4*/
  416. DPI_REG_MATRIX_OFFSET_ONE MATRIX_OUT_OFFSET_2; /*00D8*/
  417. };
  418. /*
  419. STATIC_ASSERT((offsetof(struct DPI_REGS, SIZE) == 0x0018));
  420. STATIC_ASSERT((offsetof(struct DPI_REGS, BG_COLOR) == 0x0038));
  421. STATIC_ASSERT((offsetof(struct DPI_REGS, TGEN_VWIDTH_RODD) == 0x0070));
  422. STATIC_ASSERT((offsetof(struct DPI_REGS, ESAV_CODE_SET1) == 0x00AC));
  423. */
  424. #ifdef __cplusplus
  425. }
  426. #endif
  427. #endif /*__DPI_REG_H__*/