gouda.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650
  1. /* Copyright (C) 2018 RDA Technologies Limited and/or its affiliates("RDA").
  2. * All rights reserved.
  3. *
  4. * This software is supplied "AS IS" without any warranties.
  5. * RDA assumes no responsibility or liability for the use of the software,
  6. * conveys no license or title under any patent, copyright, or mask work
  7. * right to the product. RDA reserves the right to make changes in the
  8. * software without notification. RDA also make no representation or
  9. * warranty that such application will be suitable for the specified use
  10. * without further testing or modification.
  11. */
  12. #ifndef _GOUDA_H_
  13. #define _GOUDA_H_
  14. // Auto generated by dtools(see dtools.txt for its version).
  15. // Don't edit it manually!
  16. #define GD_MAX_OUT_WIDTH (640)
  17. #define GD_NB_BITS_LCDPOS (11)
  18. #define GD_FP_FRAC_SIZE (8)
  19. #define GD_FIXEDPOINT_SIZE (11)
  20. #define GD_NB_BITS_STRIDE (13)
  21. #define GD_MAX_SLCD_READ_LEN (4)
  22. #define GD_MAX_SLCD_CLK_DIVIDER (255)
  23. #define GD_NB_WORKBUF_WORDS (0x16e0)
  24. #define GD_NB_LCD_CMD_WORDS (64)
  25. #define GD_SRAM_SIZE (0x2e40)
  26. #define GD_SRAM_ADDR_WIDTH (13)
  27. #define REG_GOUDA_BASE (0x04804000)
  28. typedef volatile struct
  29. {
  30. uint32_t gd_command; // 0x00000000
  31. uint32_t gd_status; // 0x00000004
  32. uint32_t gd_eof_irq; // 0x00000008
  33. uint32_t gd_eof_irq_mask; // 0x0000000c
  34. uint32_t gd_roi_tl_ppos; // 0x00000010
  35. uint32_t gd_roi_br_ppos; // 0x00000014
  36. uint32_t gd_roi_bg_color; // 0x00000018
  37. uint32_t gd_vl_input_fmt; // 0x0000001c
  38. uint32_t gd_vl_tl_ppos; // 0x00000020
  39. uint32_t gd_vl_br_ppos; // 0x00000024
  40. uint32_t gd_vl_extents; // 0x00000028
  41. uint32_t gd_vl_blend_opt; // 0x0000002c
  42. uint32_t gd_vl_y_src; // 0x00000030
  43. uint32_t gd_vl_u_src; // 0x00000034
  44. uint32_t gd_vl_v_src; // 0x00000038
  45. uint32_t gd_vl_resc_ratio; // 0x0000003c
  46. struct // 0x00000040
  47. { //
  48. uint32_t gd_ol_input_fmt; // 0x00000000
  49. uint32_t gd_ol_tl_ppos; // 0x00000004
  50. uint32_t gd_ol_br_ppos; // 0x00000008
  51. uint32_t gd_ol_blend_opt; // 0x0000000c
  52. uint32_t gd_ol_rgb_src; // 0x00000010
  53. } overlay_layer[3]; //
  54. uint32_t gd_lcd_ctrl; // 0x0000007c
  55. uint32_t gd_lcd_timing; // 0x00000080
  56. uint32_t gd_lcd_mem_address; // 0x00000084
  57. uint32_t gd_lcd_stride_offset; // 0x00000088
  58. uint32_t gd_lcd_single_access; // 0x0000008c
  59. uint32_t gd_spilcd_config; // 0x00000090
  60. uint32_t gd_spilcd_rd; // 0x00000094
  61. uint32_t gd_vl_fix_ratio; // 0x00000098
  62. uint32_t __156[41]; // 0x0000009c
  63. uint32_t tecon; // 0x00000140
  64. uint32_t tecon2; // 0x00000144
  65. uint32_t __328[174]; // 0x00000148
  66. } HWP_GOUDA_T;
  67. #define hwp_gouda ((HWP_GOUDA_T *)REG_ACCESS_ADDRESS(REG_GOUDA_BASE))
  68. #define REG_GOUDA_SRAM_BASE (0x02080000)
  69. typedef volatile struct
  70. {
  71. uint8_t sram_array[11840]; // 0x00000000
  72. } HWP_GOUDA_SRAM_T;
  73. #define hwp_goudaSram ((HWP_GOUDA_SRAM_T *)REG_ACCESS_ADDRESS(REG_GOUDA_SRAM_BASE))
  74. // gd_command
  75. typedef union {
  76. uint32_t v;
  77. struct
  78. {
  79. uint32_t start : 1; // [0]
  80. uint32_t __31_1 : 31; // [31:1]
  81. } b;
  82. } REG_GOUDA_GD_COMMAND_T;
  83. // gd_status
  84. typedef union {
  85. uint32_t v;
  86. struct
  87. {
  88. uint32_t ia_busy : 1; // [0], read only
  89. uint32_t __3_1 : 3; // [3:1]
  90. uint32_t lcd_busy : 1; // [4], read only
  91. uint32_t __31_5 : 27; // [31:5]
  92. } b;
  93. } REG_GOUDA_GD_STATUS_T;
  94. // gd_eof_irq
  95. typedef union {
  96. uint32_t v;
  97. struct
  98. {
  99. uint32_t eof_cause : 1; // [0], write clear
  100. uint32_t __15_1 : 15; // [15:1]
  101. uint32_t eof_status : 1; // [16], write clear
  102. uint32_t __31_17 : 15; // [31:17]
  103. } b;
  104. } REG_GOUDA_GD_EOF_IRQ_T;
  105. // gd_eof_irq_mask
  106. typedef union {
  107. uint32_t v;
  108. struct
  109. {
  110. uint32_t eof_mask : 1; // [0]
  111. uint32_t __31_1 : 31; // [31:1]
  112. } b;
  113. } REG_GOUDA_GD_EOF_IRQ_MASK_T;
  114. // gd_roi_tl_ppos
  115. typedef union {
  116. uint32_t v;
  117. struct
  118. {
  119. uint32_t x0 : 11; // [10:0]
  120. uint32_t __15_11 : 5; // [15:11]
  121. uint32_t y0 : 11; // [26:16]
  122. uint32_t __31_27 : 5; // [31:27]
  123. } b;
  124. } REG_GOUDA_GD_ROI_TL_PPOS_T;
  125. // gd_roi_br_ppos
  126. typedef union {
  127. uint32_t v;
  128. struct
  129. {
  130. uint32_t x1 : 11; // [10:0]
  131. uint32_t __15_11 : 5; // [15:11]
  132. uint32_t y1 : 11; // [26:16]
  133. uint32_t __31_27 : 5; // [31:27]
  134. } b;
  135. } REG_GOUDA_GD_ROI_BR_PPOS_T;
  136. // gd_roi_bg_color
  137. typedef union {
  138. uint32_t v;
  139. struct
  140. {
  141. uint32_t b : 5; // [4:0]
  142. uint32_t g : 6; // [10:5]
  143. uint32_t r : 5; // [15:11]
  144. uint32_t __31_16 : 16; // [31:16]
  145. } b;
  146. } REG_GOUDA_GD_ROI_BG_COLOR_T;
  147. // gd_vl_input_fmt
  148. typedef union {
  149. uint32_t v;
  150. struct
  151. {
  152. uint32_t format : 2; // [1:0]
  153. uint32_t stride : 13; // [14:2]
  154. uint32_t __30_15 : 16; // [30:15]
  155. uint32_t active : 1; // [31]
  156. } b;
  157. } REG_GOUDA_GD_VL_INPUT_FMT_T;
  158. // gd_vl_tl_ppos
  159. typedef union {
  160. uint32_t v;
  161. struct
  162. {
  163. uint32_t x0 : 11; // [10:0]
  164. uint32_t __15_11 : 5; // [15:11]
  165. uint32_t y0 : 11; // [26:16]
  166. uint32_t __31_27 : 5; // [31:27]
  167. } b;
  168. } REG_GOUDA_GD_VL_TL_PPOS_T;
  169. // gd_vl_br_ppos
  170. typedef union {
  171. uint32_t v;
  172. struct
  173. {
  174. uint32_t x1 : 11; // [10:0]
  175. uint32_t __15_11 : 5; // [15:11]
  176. uint32_t y1 : 11; // [26:16]
  177. uint32_t __31_27 : 5; // [31:27]
  178. } b;
  179. } REG_GOUDA_GD_VL_BR_PPOS_T;
  180. // gd_vl_extents
  181. typedef union {
  182. uint32_t v;
  183. struct
  184. {
  185. uint32_t max_line : 11; // [10:0]
  186. uint32_t __15_11 : 5; // [15:11]
  187. uint32_t max_col : 11; // [26:16]
  188. uint32_t __31_27 : 5; // [31:27]
  189. } b;
  190. } REG_GOUDA_GD_VL_EXTENTS_T;
  191. // gd_vl_blend_opt
  192. typedef union {
  193. uint32_t v;
  194. struct
  195. {
  196. uint32_t chroma_key_b : 5; // [4:0]
  197. uint32_t chroma_key_g : 6; // [10:5]
  198. uint32_t chroma_key_r : 5; // [15:11]
  199. uint32_t chroma_key_enable : 1; // [16]
  200. uint32_t chroma_key_mask : 3; // [19:17]
  201. uint32_t alpha : 8; // [27:20]
  202. uint32_t rotation : 2; // [29:28]
  203. uint32_t depth : 2; // [31:30]
  204. } b;
  205. } REG_GOUDA_GD_VL_BLEND_OPT_T;
  206. // gd_vl_y_src
  207. typedef union {
  208. uint32_t v;
  209. struct
  210. {
  211. uint32_t __1_0 : 2; // [1:0]
  212. uint32_t addr : 30; // [31:2]
  213. } b;
  214. } REG_GOUDA_GD_VL_Y_SRC_T;
  215. // gd_vl_u_src
  216. typedef union {
  217. uint32_t v;
  218. struct
  219. {
  220. uint32_t __1_0 : 2; // [1:0]
  221. uint32_t addr : 30; // [31:2]
  222. } b;
  223. } REG_GOUDA_GD_VL_U_SRC_T;
  224. // gd_vl_v_src
  225. typedef union {
  226. uint32_t v;
  227. struct
  228. {
  229. uint32_t __1_0 : 2; // [1:0]
  230. uint32_t addr : 30; // [31:2]
  231. } b;
  232. } REG_GOUDA_GD_VL_V_SRC_T;
  233. // gd_vl_resc_ratio
  234. typedef union {
  235. uint32_t v;
  236. struct
  237. {
  238. uint32_t xpitch : 11; // [10:0]
  239. uint32_t __15_11 : 5; // [15:11]
  240. uint32_t ypitch : 11; // [26:16]
  241. uint32_t __28_27 : 2; // [28:27]
  242. uint32_t pre_fetch_en : 1; // [29]
  243. uint32_t iy_dctenable : 1; // [30]
  244. uint32_t ypitch_scale_enable : 1; // [31]
  245. } b;
  246. } REG_GOUDA_GD_VL_RESC_RATIO_T;
  247. // gd_ol_input_fmt
  248. typedef union {
  249. uint32_t v;
  250. struct
  251. {
  252. uint32_t format : 2; // [1:0]
  253. uint32_t stride : 13; // [14:2]
  254. uint32_t __17_15 : 3; // [17:15]
  255. uint32_t prefetch : 1; // [18]
  256. uint32_t __30_19 : 12; // [30:19]
  257. uint32_t active : 1; // [31]
  258. } b;
  259. } REG_GOUDA_GD_OL_INPUT_FMT_T;
  260. // gd_ol_tl_ppos
  261. typedef union {
  262. uint32_t v;
  263. struct
  264. {
  265. uint32_t x0 : 11; // [10:0]
  266. uint32_t __15_11 : 5; // [15:11]
  267. uint32_t y0 : 11; // [26:16]
  268. uint32_t __31_27 : 5; // [31:27]
  269. } b;
  270. } REG_GOUDA_GD_OL_TL_PPOS_T;
  271. // gd_ol_br_ppos
  272. typedef union {
  273. uint32_t v;
  274. struct
  275. {
  276. uint32_t x1 : 11; // [10:0]
  277. uint32_t __15_11 : 5; // [15:11]
  278. uint32_t y1 : 11; // [26:16]
  279. uint32_t __31_27 : 5; // [31:27]
  280. } b;
  281. } REG_GOUDA_GD_OL_BR_PPOS_T;
  282. // gd_ol_blend_opt
  283. typedef union {
  284. uint32_t v;
  285. struct
  286. {
  287. uint32_t chroma_key_b : 5; // [4:0]
  288. uint32_t chroma_key_g : 6; // [10:5]
  289. uint32_t chroma_key_r : 5; // [15:11]
  290. uint32_t chroma_key_enable : 1; // [16]
  291. uint32_t chroma_key_mask : 3; // [19:17]
  292. uint32_t alpha : 8; // [27:20]
  293. uint32_t __31_28 : 4; // [31:28]
  294. } b;
  295. } REG_GOUDA_GD_OL_BLEND_OPT_T;
  296. // gd_ol_rgb_src
  297. typedef union {
  298. uint32_t v;
  299. struct
  300. {
  301. uint32_t __1_0 : 2; // [1:0]
  302. uint32_t addr : 30; // [31:2]
  303. } b;
  304. } REG_GOUDA_GD_OL_RGB_SRC_T;
  305. // gd_lcd_ctrl
  306. typedef union {
  307. uint32_t v;
  308. struct
  309. {
  310. uint32_t destination : 2; // [1:0]
  311. uint32_t __3_2 : 2; // [3:2]
  312. uint32_t output_format : 3; // [6:4]
  313. uint32_t high_byte : 1; // [7]
  314. uint32_t cs0_polarity : 1; // [8]
  315. uint32_t cs1_polarity : 1; // [9]
  316. uint32_t rs_polarity : 1; // [10]
  317. uint32_t wr_polarity : 1; // [11]
  318. uint32_t rd_polarity : 1; // [12]
  319. uint32_t __15_13 : 3; // [15:13]
  320. uint32_t nb_command : 6; // [21:16]
  321. uint32_t __23_22 : 2; // [23:22]
  322. uint32_t start_command : 1; // [24]
  323. uint32_t lcd_resetb : 1; // [25]
  324. uint32_t __31_26 : 6; // [31:26]
  325. } b;
  326. } REG_GOUDA_GD_LCD_CTRL_T;
  327. // gd_lcd_timing
  328. typedef union {
  329. uint32_t v;
  330. struct
  331. {
  332. uint32_t tas : 3; // [2:0]
  333. uint32_t __3_3 : 1; // [3]
  334. uint32_t tah : 3; // [6:4]
  335. uint32_t __7_7 : 1; // [7]
  336. uint32_t pwl : 6; // [13:8]
  337. uint32_t __15_14 : 2; // [15:14]
  338. uint32_t pwh : 6; // [21:16]
  339. uint32_t __31_22 : 10; // [31:22]
  340. } b;
  341. } REG_GOUDA_GD_LCD_TIMING_T;
  342. // gd_lcd_mem_address
  343. typedef union {
  344. uint32_t v;
  345. struct
  346. {
  347. uint32_t __1_0 : 2; // [1:0]
  348. uint32_t addr_dst : 30; // [31:2]
  349. } b;
  350. } REG_GOUDA_GD_LCD_MEM_ADDRESS_T;
  351. // gd_lcd_stride_offset
  352. typedef union {
  353. uint32_t v;
  354. struct
  355. {
  356. uint32_t stride_offset : 10; // [9:0]
  357. uint32_t __31_10 : 22; // [31:10]
  358. } b;
  359. } REG_GOUDA_GD_LCD_STRIDE_OFFSET_T;
  360. // gd_lcd_single_access
  361. typedef union {
  362. uint32_t v;
  363. struct
  364. {
  365. uint32_t lcd_data : 16; // [15:0]
  366. uint32_t type : 1; // [16]
  367. uint32_t start_write : 1; // [17]
  368. uint32_t start_read : 1; // [18]
  369. uint32_t __31_19 : 13; // [31:19]
  370. } b;
  371. } REG_GOUDA_GD_LCD_SINGLE_ACCESS_T;
  372. // gd_spilcd_config
  373. typedef union {
  374. uint32_t v;
  375. struct
  376. {
  377. uint32_t spi_lcd_select : 1; // [0]
  378. uint32_t spi_device_id : 6; // [6:1]
  379. uint32_t spi_clk_divider : 8; // [14:7]
  380. uint32_t spi_dummy_cycle : 3; // [17:15]
  381. uint32_t spi_line : 2; // [19:18]
  382. uint32_t spi_rx_byte : 3; // [22:20]
  383. uint32_t spi_rw : 1; // [23]
  384. uint32_t __31_24 : 8; // [31:24]
  385. } b;
  386. } REG_GOUDA_GD_SPILCD_CONFIG_T;
  387. // gd_vl_fix_ratio
  388. typedef union {
  389. uint32_t v;
  390. struct
  391. {
  392. uint32_t l_xratio : 8; // [7:0]
  393. uint32_t l_yratio : 8; // [15:8]
  394. uint32_t l_xfixen : 1; // [16]
  395. uint32_t l_yfixen : 1; // [17]
  396. uint32_t mirror : 1; // [18]
  397. uint32_t reg_vl_only_sel : 1; // [19]
  398. uint32_t __31_20 : 12; // [31:20]
  399. } b;
  400. } REG_GOUDA_GD_VL_FIX_RATIO_T;
  401. // tecon
  402. typedef union {
  403. uint32_t v;
  404. struct
  405. {
  406. uint32_t te_en : 1; // [0]
  407. uint32_t te_edge_sel : 1; // [1]
  408. uint32_t te_mode : 1; // [2]
  409. uint32_t __15_3 : 13; // [15:3]
  410. uint32_t te_count2 : 12; // [27:16]
  411. uint32_t __31_28 : 4; // [31:28]
  412. } b;
  413. } REG_GOUDA_TECON_T;
  414. // tecon2
  415. typedef union {
  416. uint32_t v;
  417. struct
  418. {
  419. uint32_t te_count1 : 29; // [28:0]
  420. uint32_t __31_29 : 3; // [31:29]
  421. } b;
  422. } REG_GOUDA_TECON2_T;
  423. // gd_command
  424. #define GOUDA_START (1 << 0)
  425. // gd_status
  426. #define GOUDA_IA_BUSY (1 << 0)
  427. #define GOUDA_LCD_BUSY (1 << 4)
  428. // gd_eof_irq
  429. #define GOUDA_EOF_CAUSE (1 << 0)
  430. #define GOUDA_EOF_STATUS (1 << 16)
  431. // gd_eof_irq_mask
  432. #define GOUDA_EOF_MASK (1 << 0)
  433. // gd_roi_tl_ppos
  434. #define GOUDA_X0(n) (((n)&0x7ff) << 0)
  435. #define GOUDA_Y0(n) (((n)&0x7ff) << 16)
  436. // gd_roi_br_ppos
  437. #define GOUDA_X1(n) (((n)&0x7ff) << 0)
  438. #define GOUDA_Y1(n) (((n)&0x7ff) << 16)
  439. // gd_roi_bg_color
  440. #define GOUDA_B(n) (((n)&0x1f) << 0)
  441. #define GOUDA_G(n) (((n)&0x3f) << 5)
  442. #define GOUDA_R(n) (((n)&0x1f) << 11)
  443. // gd_vl_input_fmt
  444. #define GOUDA_FORMAT(n) (((n)&0x3) << 0)
  445. #define GOUDA_STRIDE(n) (((n)&0x1fff) << 2)
  446. #define GOUDA_ACTIVE (1 << 31)
  447. // gd_vl_tl_ppos
  448. #define GOUDA_X0(n) (((n)&0x7ff) << 0)
  449. #define GOUDA_Y0(n) (((n)&0x7ff) << 16)
  450. // gd_vl_br_ppos
  451. #define GOUDA_X1(n) (((n)&0x7ff) << 0)
  452. #define GOUDA_Y1(n) (((n)&0x7ff) << 16)
  453. // gd_vl_extents
  454. #define GOUDA_MAX_LINE(n) (((n)&0x7ff) << 0)
  455. #define GOUDA_MAX_COL(n) (((n)&0x7ff) << 16)
  456. // gd_vl_blend_opt
  457. #define GOUDA_CHROMA_KEY_COLOR(n) (((n)&0xffff) << 0)
  458. #define GOUDA_CHROMA_KEY_B(n) (((n)&0x1f) << 0)
  459. #define GOUDA_CHROMA_KEY_G(n) (((n)&0x3f) << 5)
  460. #define GOUDA_CHROMA_KEY_R(n) (((n)&0x1f) << 11)
  461. #define GOUDA_CHROMA_KEY_ENABLE (1 << 16)
  462. #define GOUDA_CHROMA_KEY_MASK(n) (((n)&0x7) << 17)
  463. #define GOUDA_ALPHA(n) (((n)&0xff) << 20)
  464. #define GOUDA_ROTATION(n) (((n)&0x3) << 28)
  465. #define GOUDA_DEPTH(n) (((n)&0x3) << 30)
  466. // gd_vl_y_src
  467. #define GOUDA_ADDR(n) (((n)&0x3fffffff) << 2)
  468. // gd_vl_u_src
  469. #define GOUDA_ADDR(n) (((n)&0x3fffffff) << 2)
  470. // gd_vl_v_src
  471. #define GOUDA_ADDR(n) (((n)&0x3fffffff) << 2)
  472. // gd_vl_resc_ratio
  473. #define GOUDA_XPITCH(n) (((n)&0x7ff) << 0)
  474. #define GOUDA_YPITCH(n) (((n)&0x7ff) << 16)
  475. #define GOUDA_PRE_FETCH_EN (1 << 29)
  476. #define GOUDA_IY_DCTENABLE (1 << 30)
  477. #define GOUDA_YPITCH_SCALE_ENABLE (1 << 31)
  478. // gd_ol_input_fmt
  479. #define GOUDA_FORMAT(n) (((n)&0x3) << 0)
  480. #define GOUDA_STRIDE(n) (((n)&0x1fff) << 2)
  481. #define GOUDA_PREFETCH (1 << 18)
  482. #define GOUDA_ACTIVE (1 << 31)
  483. // gd_ol_tl_ppos
  484. #define GOUDA_X0(n) (((n)&0x7ff) << 0)
  485. #define GOUDA_Y0(n) (((n)&0x7ff) << 16)
  486. // gd_ol_br_ppos
  487. #define GOUDA_X1(n) (((n)&0x7ff) << 0)
  488. #define GOUDA_Y1(n) (((n)&0x7ff) << 16)
  489. // gd_ol_blend_opt
  490. #define GOUDA_CHROMA_KEY_COLOR(n) (((n)&0xffff) << 0)
  491. #define GOUDA_CHROMA_KEY_B(n) (((n)&0x1f) << 0)
  492. #define GOUDA_CHROMA_KEY_G(n) (((n)&0x3f) << 5)
  493. #define GOUDA_CHROMA_KEY_R(n) (((n)&0x1f) << 11)
  494. #define GOUDA_CHROMA_KEY_ENABLE (1 << 16)
  495. #define GOUDA_CHROMA_KEY_MASK(n) (((n)&0x7) << 17)
  496. #define GOUDA_ALPHA(n) (((n)&0xff) << 20)
  497. // gd_ol_rgb_src
  498. #define GOUDA_ADDR(n) (((n)&0x3fffffff) << 2)
  499. // gd_lcd_ctrl
  500. #define GOUDA_DESTINATION(n) (((n)&0x3) << 0)
  501. #define GOUDA_DESTINATION_LCD_CS_0 (0 << 0)
  502. #define GOUDA_DESTINATION_LCD_CS_1 (1 << 0)
  503. #define GOUDA_DESTINATION_MEMORY_LCD_TYPE (2 << 0)
  504. #define GOUDA_DESTINATION_MEMORY_RAM (3 << 0)
  505. #define GOUDA_OUTPUT_FORMAT(n) (((n)&0x7) << 4)
  506. #define GOUDA_OUTPUT_FORMAT_8_BIT_RGB332 (0 << 4)
  507. #define GOUDA_OUTPUT_FORMAT_8_BIT_RGB444 (1 << 4)
  508. #define GOUDA_OUTPUT_FORMAT_8_BIT_RGB565 (2 << 4)
  509. #define GOUDA_OUTPUT_FORMAT_16_BIT_RGB332 (4 << 4)
  510. #define GOUDA_OUTPUT_FORMAT_16_BIT_RGB444 (5 << 4)
  511. #define GOUDA_OUTPUT_FORMAT_16_BIT_RGB565 (6 << 4)
  512. #define GOUDA_HIGH_BYTE (1 << 7)
  513. #define GOUDA_CS0_POLARITY (1 << 8)
  514. #define GOUDA_CS1_POLARITY (1 << 9)
  515. #define GOUDA_RS_POLARITY (1 << 10)
  516. #define GOUDA_WR_POLARITY (1 << 11)
  517. #define GOUDA_RD_POLARITY (1 << 12)
  518. #define GOUDA_NB_COMMAND(n) (((n)&0x3f) << 16)
  519. #define GOUDA_START_COMMAND (1 << 24)
  520. #define GOUDA_LCD_RESETB (1 << 25)
  521. #define GOUDA_DESTINATION_V_LCD_CS_0 (0)
  522. #define GOUDA_DESTINATION_V_LCD_CS_1 (1)
  523. #define GOUDA_DESTINATION_V_MEMORY_LCD_TYPE (2)
  524. #define GOUDA_DESTINATION_V_MEMORY_RAM (3)
  525. #define GOUDA_OUTPUT_FORMAT_V_8_BIT_RGB332 (0)
  526. #define GOUDA_OUTPUT_FORMAT_V_8_BIT_RGB444 (1)
  527. #define GOUDA_OUTPUT_FORMAT_V_8_BIT_RGB565 (2)
  528. #define GOUDA_OUTPUT_FORMAT_V_16_BIT_RGB332 (4)
  529. #define GOUDA_OUTPUT_FORMAT_V_16_BIT_RGB444 (5)
  530. #define GOUDA_OUTPUT_FORMAT_V_16_BIT_RGB565 (6)
  531. // gd_lcd_timing
  532. #define GOUDA_TAS(n) (((n)&0x7) << 0)
  533. #define GOUDA_TAH(n) (((n)&0x7) << 4)
  534. #define GOUDA_PWL(n) (((n)&0x3f) << 8)
  535. #define GOUDA_PWH(n) (((n)&0x3f) << 16)
  536. // gd_lcd_mem_address
  537. #define GOUDA_ADDR_DST(n) (((n)&0x3fffffff) << 2)
  538. // gd_lcd_stride_offset
  539. #define GOUDA_STRIDE_OFFSET(n) (((n)&0x3ff) << 0)
  540. // gd_lcd_single_access
  541. #define GOUDA_LCD_DATA(n) (((n)&0xffff) << 0)
  542. #define GOUDA_TYPE (1 << 16)
  543. #define GOUDA_START_WRITE (1 << 17)
  544. #define GOUDA_START_READ (1 << 18)
  545. // gd_spilcd_config
  546. #define GOUDA_SPI_LCD_SELECT (1 << 0)
  547. #define GOUDA_SPI_DEVICE_ID(n) (((n)&0x3f) << 1)
  548. #define GOUDA_SPI_CLK_DIVIDER(n) (((n)&0xff) << 7)
  549. #define GOUDA_SPI_DUMMY_CYCLE(n) (((n)&0x7) << 15)
  550. #define GOUDA_SPI_LINE(n) (((n)&0x3) << 18)
  551. #define GOUDA_SPI_LINE_4 (0 << 18)
  552. #define GOUDA_SPI_LINE_3 (1 << 18)
  553. #define GOUDA_SPI_LINE_4_START_BYTE (2 << 18)
  554. #define GOUDA_SPI_LINE_3_TWO_LANE (3 << 18)
  555. #define GOUDA_SPI_RX_BYTE(n) (((n)&0x7) << 20)
  556. #define GOUDA_SPI_RW_WRITE (0 << 23)
  557. #define GOUDA_SPI_RW_READ (1 << 23)
  558. #define GOUDA_SPI_LINE_V_4 (0)
  559. #define GOUDA_SPI_LINE_V_3 (1)
  560. #define GOUDA_SPI_LINE_V_4_START_BYTE (2)
  561. #define GOUDA_SPI_LINE_V_3_TWO_LANE (3)
  562. #define GOUDA_SPI_RW_V_WRITE (0)
  563. #define GOUDA_SPI_RW_V_READ (1)
  564. // gd_vl_fix_ratio
  565. #define GOUDA_L_XRATIO(n) (((n)&0xff) << 0)
  566. #define GOUDA_L_YRATIO(n) (((n)&0xff) << 8)
  567. #define GOUDA_L_XFIXEN (1 << 16)
  568. #define GOUDA_L_YFIXEN (1 << 17)
  569. #define GOUDA_MIRROR (1 << 18)
  570. #define GOUDA_REG_VL_ONLY_SEL (1 << 19)
  571. // tecon
  572. #define GOUDA_TE_EN (1 << 0)
  573. #define GOUDA_TE_EDGE_SEL (1 << 1)
  574. #define GOUDA_TE_MODE (1 << 2)
  575. #define GOUDA_TE_COUNT2(n) (((n)&0xfff) << 16)
  576. // tecon2
  577. #define GOUDA_TE_COUNT1(n) (((n)&0x1fffffff) << 0)
  578. #endif // _GOUDA_H_