硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1872|回复: 0
收起左侧

[emWin] AM3359的emWin底层驱动文件

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117619
QQ
发表于 2019-9-23 14:32:09 | 显示全部楼层 |阅读模式


路径:\Keil\MDK-Middleware\7.9.0\emWin\Sample\LCDConf\GUIDRV_Lin\AM3359

LCDConf.c (108.22 KB, 下载次数: 0)


  1. /*********************************************************************
  2. *                    SEGGER Microcontroller GmbH                     *
  3. *        Solutions for real time microcontroller applications        *
  4. **********************************************************************
  5. *                                                                    *
  6. *        (c) 1996 - 2019  SEGGER Microcontroller GmbH                *
  7. *                                                                    *
  8. *        Internet: www.segger.com    Support:  support@segger.com    *
  9. *                                                                    *
  10. **********************************************************************

  11. ** emWin V5.50 - Graphical user interface for embedded applications **
  12. All  Intellectual Property rights  in the Software belongs to  SEGGER.
  13. emWin is protected by  international copyright laws.  Knowledge of the
  14. source code may not be used to write a similar product.  This file may
  15. only be used in accordance with the following terms:

  16. The software has been licensed to  ARM LIMITED whose registered office
  17. is situated at  110 Fulbourn Road,  Cambridge CB1 9NJ,  England solely
  18. for  the  purposes  of  creating  libraries  for  ARM7, ARM9, Cortex-M
  19. series,  and   Cortex-R4   processor-based  devices,  sublicensed  and
  20. distributed as part of the  MDK-ARM  Professional  under the terms and
  21. conditions  of  the   End  User  License  supplied  with  the  MDK-ARM
  22. Professional.
  23. Full source code is available at: www.segger.com

  24. We appreciate your understanding and fairness.
  25. ----------------------------------------------------------------------
  26. Licensing information
  27. Licensor:                 SEGGER Software GmbH
  28. Licensed to:              ARM Ltd, 110 Fulbourn Road, CB1 9NJ Cambridge, UK
  29. Licensed SEGGER software: emWin
  30. License number:           GUI-00181
  31. License model:            LES-SLA-20007, Agreement, effective since October 1st 2011
  32. Licensed product:         MDK-ARM Professional
  33. Licensed platform:        ARM7/9, Cortex-M/R4
  34. Licensed number of seats: -
  35. ----------------------------------------------------------------------
  36. File        : LCDConf.c
  37. Purpose     : Sample display controller configuration for
  38.               ARM Cortex-A8 AM3359 with embedded display controller
  39. ---------------------------END-OF-HEADER------------------------------
  40. */

  41. #include "GUI.h"
  42. #include "GUIDRV_Lin.h"
  43. #include "RTOS.h"

  44. /*********************************************************************
  45. *
  46. *       Defines
  47. *
  48. **********************************************************************
  49. */
  50. /*********************************************************************
  51. *
  52. *       Layer configuration (to be modified)
  53. */
  54. //
  55. // Physical display size
  56. //
  57. #define XSIZE_PHYS 800
  58. #define YSIZE_PHYS 480

  59. //
  60. // Color conversion
  61. //
  62. #define COLOR_CONVERSION GUICC_M8888

  63. //
  64. // Display driver
  65. //
  66. #define DISPLAY_DRIVER GUIDRV_LIN_32

  67. //
  68. // Buffers / VScreens
  69. //
  70. #define NUM_BUFFERS  3 // Number of multiple buffers to be used
  71. #define NUM_VSCREENS 1 // Number of virtual screens to be used

  72. /*********************************************************************
  73. *
  74. *       Configuration checking
  75. */
  76. #ifndef   VRAM_ADDR
  77.   #define VRAM_ADDR 0 // TBD by customer: This has to be the frame buffer start address
  78. #endif
  79. #ifndef   XSIZE_PHYS
  80.   #error Physical X size of display is not defined!
  81. #endif
  82. #ifndef   YSIZE_PHYS
  83.   #error Physical Y size of display is not defined!
  84. #endif
  85. #ifndef   COLOR_CONVERSION
  86.   #error Color conversion not defined!
  87. #endif
  88. #ifndef   DISPLAY_DRIVER
  89.   #error No display driver defined!
  90. #endif
  91. #ifndef   NUM_VSCREENS
  92.   #define NUM_VSCREENS 1
  93. #else
  94.   #if (NUM_VSCREENS <= 0)
  95.     #error At least one screeen needs to be defined!
  96.   #endif
  97. #endif
  98. #if (NUM_VSCREENS > 1) && (NUM_BUFFERS > 1)
  99.   #error Virtual screens and multiple buffers are not allowed!
  100. #endif

  101. /*********************************************************************
  102. *
  103. *       Display parameters
  104. */
  105. #define HBP 80 // Horizontal back porch
  106. #define HFP 48 // Horizontal front porch
  107. #define HSW 32 // HSync signal width
  108. #define VBP 15 // Vertical back porch
  109. #define VFP 2  // Vertical front porch
  110. #define VSW 6  // VSync signal width

  111. /*********************************************************************
  112. *
  113. *       SFRs
  114. */
  115. #define HWREG(x) (*((volatile unsigned long *)(x)))

  116. /* CLKSEL_LCDC_PIXEL_CLK */
  117. #define CM_DPLL_CLKSEL_LCDC_PIXEL_CLK                                   (0x34)
  118. #define CM_DPLL_CLKSEL_LCDC_PIXEL_CLK_CLKSEL                            (0x00000003u)
  119. #define CM_DPLL_CLKSEL_LCDC_PIXEL_CLK_CLKSEL_SHIFT                      (0x00000000u)
  120. #define CM_DPLL_CLKSEL_LCDC_PIXEL_CLK_CLKSEL_SEL1                       (0x0u)
  121. #define CM_DPLL_CLKSEL_LCDC_PIXEL_CLK_CLKSEL_SEL2                       (0x1u)
  122. #define CM_DPLL_CLKSEL_LCDC_PIXEL_CLK_CLKSEL_SEL3                       (0x2u)
  123. #define CM_DPLL_CLKSEL_LCDC_PIXEL_CLK_CLKSEL_SEL4                       (0x3u)

  124. /* L3S_CLKSTCTRL */
  125. #define CM_PER_L3S_CLKSTCTRL                                            (0x4)
  126. #define CM_PER_L3S_CLKSTCTRL_CLKACTIVITY_L3S_GCLK                       (0x00000008u)
  127. #define CM_PER_L3S_CLKSTCTRL_CLKACTIVITY_L3S_GCLK_SHIFT                 (0x00000003u)
  128. #define CM_PER_L3S_CLKSTCTRL_CLKACTIVITY_L3S_GCLK_ACT                   (0x1u)
  129. #define CM_PER_L3S_CLKSTCTRL_CLKACTIVITY_L3S_GCLK_INACT                 (0x0u)
  130. #define CM_PER_L3S_CLKSTCTRL_CLKTRCTRL                                  (0x00000003u)
  131. #define CM_PER_L3S_CLKSTCTRL_CLKTRCTRL_SHIFT                            (0x00000000u)
  132. #define CM_PER_L3S_CLKSTCTRL_CLKTRCTRL_HW_AUTO                          (0x3u)
  133. #define CM_PER_L3S_CLKSTCTRL_CLKTRCTRL_NO_SLEEP                         (0x0u)
  134. #define CM_PER_L3S_CLKSTCTRL_CLKTRCTRL_SW_SLEEP                         (0x1u)
  135. #define CM_PER_L3S_CLKSTCTRL_CLKTRCTRL_SW_WKUP                          (0x2u)

  136. /* L3_CLKSTCTRL */
  137. #define CM_PER_L3_CLKSTCTRL                                             (0xc)
  138. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_CPTS_RFT_GCLK                   (0x00000040u)
  139. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_CPTS_RFT_GCLK_SHIFT             (0x00000006u)
  140. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_CPTS_RFT_GCLK_ACT               (0x1u)
  141. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_CPTS_RFT_GCLK_INACT             (0x0u)
  142. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_EMIF_GCLK                       (0x00000004u)
  143. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_EMIF_GCLK_SHIFT                 (0x00000002u)
  144. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_EMIF_GCLK_ACT                   (0x1u)
  145. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_EMIF_GCLK_INACT                 (0x0u)
  146. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_L3_GCLK                         (0x00000010u)
  147. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_L3_GCLK_SHIFT                   (0x00000004u)
  148. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_L3_GCLK_ACT                     (0x1u)
  149. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_L3_GCLK_INACT                   (0x0u)
  150. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_MCASP_GCLK                      (0x00000080u)
  151. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_MCASP_GCLK_SHIFT                (0x00000007u)
  152. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_MCASP_GCLK_ACT                  (0x1u)
  153. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_MCASP_GCLK_INACT                (0x0u)
  154. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_MMC_FCLK                        (0x00000008u)
  155. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_MMC_FCLK_SHIFT                  (0x00000003u)
  156. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_MMC_FCLK_ACT                    (0x1u)
  157. #define CM_PER_L3_CLKSTCTRL_CLKACTIVITY_MMC_FCLK_INACT                  (0x0u)
  158. #define CM_PER_L3_CLKSTCTRL_CLKTRCTRL                                   (0x00000003u)
  159. #define CM_PER_L3_CLKSTCTRL_CLKTRCTRL_SHIFT                             (0x00000000u)
  160. #define CM_PER_L3_CLKSTCTRL_CLKTRCTRL_HW_AUTO                           (0x3u)
  161. #define CM_PER_L3_CLKSTCTRL_CLKTRCTRL_NO_SLEEP                          (0x0u)
  162. #define CM_PER_L3_CLKSTCTRL_CLKTRCTRL_SW_SLEEP                          (0x1u)
  163. #define CM_PER_L3_CLKSTCTRL_CLKTRCTRL_SW_WKUP                           (0x2u)

  164. /* L3_INSTR_CLKCTRL */
  165. #define CM_PER_L3_INSTR_CLKCTRL                                         (0xdc)
  166. #define CM_PER_L3_INSTR_CLKCTRL_IDLEST                                  (0x00030000u)
  167. #define CM_PER_L3_INSTR_CLKCTRL_IDLEST_SHIFT                            (0x00000010u)
  168. #define CM_PER_L3_INSTR_CLKCTRL_IDLEST_DISABLE                          (0x3u)
  169. #define CM_PER_L3_INSTR_CLKCTRL_IDLEST_FUNC                             (0x0u)
  170. #define CM_PER_L3_INSTR_CLKCTRL_IDLEST_IDLE                             (0x2u)
  171. #define CM_PER_L3_INSTR_CLKCTRL_IDLEST_TRANS                            (0x1u)
  172. #define CM_PER_L3_INSTR_CLKCTRL_MODULEMODE                              (0x00000003u)
  173. #define CM_PER_L3_INSTR_CLKCTRL_MODULEMODE_SHIFT                        (0x00000000u)
  174. #define CM_PER_L3_INSTR_CLKCTRL_MODULEMODE_DISABLED                     (0x0u)
  175. #define CM_PER_L3_INSTR_CLKCTRL_MODULEMODE_ENABLE                       (0x2u)
  176. #define CM_PER_L3_INSTR_CLKCTRL_MODULEMODE_RESERVED                     (0x3u)
  177. #define CM_PER_L3_INSTR_CLKCTRL_MODULEMODE_RESERVED_1                   (0x1u)

  178. /* L3_CLKCTRL */
  179. #define CM_PER_L3_CLKCTRL                                               (0xe0)
  180. #define CM_PER_L3_CLKCTRL_IDLEST                                        (0x00030000u)
  181. #define CM_PER_L3_CLKCTRL_IDLEST_SHIFT                                  (0x00000010u)
  182. #define CM_PER_L3_CLKCTRL_IDLEST_DISABLE                                (0x3u)
  183. #define CM_PER_L3_CLKCTRL_IDLEST_FUNC                                   (0x0u)
  184. #define CM_PER_L3_CLKCTRL_IDLEST_IDLE                                   (0x2u)
  185. #define CM_PER_L3_CLKCTRL_IDLEST_TRANS                                  (0x1u)
  186. #define CM_PER_L3_CLKCTRL_MODULEMODE                                    (0x00000003u)
  187. #define CM_PER_L3_CLKCTRL_MODULEMODE_SHIFT                              (0x00000000u)
  188. #define CM_PER_L3_CLKCTRL_MODULEMODE_DISABLED                           (0x0u)
  189. #define CM_PER_L3_CLKCTRL_MODULEMODE_ENABLE                             (0x2u)
  190. #define CM_PER_L3_CLKCTRL_MODULEMODE_RESERVED                           (0x3u)
  191. #define CM_PER_L3_CLKCTRL_MODULEMODE_RESERVED_1                         (0x1u)

  192. /* OCPWP_L3_CLKSTCTRL */
  193. #define CM_PER_OCPWP_L3_CLKSTCTRL                                       (0x12c)
  194. #define CM_PER_OCPWP_L3_CLKSTCTRL_CLKACTIVITY_OCPWP_L3_GCLK             (0x00000010u)
  195. #define CM_PER_OCPWP_L3_CLKSTCTRL_CLKACTIVITY_OCPWP_L3_GCLK_SHIFT       (0x00000004u)
  196. #define CM_PER_OCPWP_L3_CLKSTCTRL_CLKACTIVITY_OCPWP_L3_GCLK_ACT         (0x1u)
  197. #define CM_PER_OCPWP_L3_CLKSTCTRL_CLKACTIVITY_OCPWP_L3_GCLK_INACT       (0x0u)
  198. #define CM_PER_OCPWP_L3_CLKSTCTRL_CLKACTIVITY_OCPWP_L4_GCLK             (0x00000020u)
  199. #define CM_PER_OCPWP_L3_CLKSTCTRL_CLKACTIVITY_OCPWP_L4_GCLK_SHIFT       (0x00000005u)
  200. #define CM_PER_OCPWP_L3_CLKSTCTRL_CLKACTIVITY_OCPWP_L4_GCLK_ACT         (0x1u)
  201. #define CM_PER_OCPWP_L3_CLKSTCTRL_CLKACTIVITY_OCPWP_L4_GCLK_INACT       (0x0u)
  202. #define CM_PER_OCPWP_L3_CLKSTCTRL_CLKTRCTRL                             (0x00000003u)
  203. #define CM_PER_OCPWP_L3_CLKSTCTRL_CLKTRCTRL_SHIFT                       (0x00000000u)
  204. #define CM_PER_OCPWP_L3_CLKSTCTRL_CLKTRCTRL_HW_AUTO                     (0x3u)
  205. #define CM_PER_OCPWP_L3_CLKSTCTRL_CLKTRCTRL_NO_SLEEP                    (0x0u)
  206. #define CM_PER_OCPWP_L3_CLKSTCTRL_CLKTRCTRL_SW_SLEEP                    (0x1u)
  207. #define CM_PER_OCPWP_L3_CLKSTCTRL_CLKTRCTRL_SW_WKUP                     (0x2u)

  208. /* L4LS_CLKSTCTRL */
  209. #define CM_PER_L4LS_CLKSTCTRL                                           (0x0)
  210. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_CAN_CLK                       (0x00000800u)
  211. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_CAN_CLK_SHIFT                 (0x0000000Bu)
  212. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_CAN_CLK_ACT                   (0x1u)
  213. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_CAN_CLK_INACT                 (0x0u)
  214. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_GPIO_1_GDBCLK                 (0x00080000u)
  215. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_GPIO_1_GDBCLK_SHIFT           (0x00000013u)
  216. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_GPIO_1_GDBCLK_ACT             (0x1u)
  217. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_GPIO_1_GDBCLK_INACT           (0x0u)
  218. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_GPIO_2_GDBCLK                 (0x00100000u)
  219. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_GPIO_2_GDBCLK_SHIFT           (0x00000014u)
  220. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_GPIO_2_GDBCLK_ACT             (0x1u)
  221. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_GPIO_2_GDBCLK_INACT           (0x0u)
  222. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_GPIO_3_GDBCLK                 (0x00200000u)
  223. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_GPIO_3_GDBCLK_SHIFT           (0x00000015u)
  224. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_GPIO_3_GDBCLK_ACT             (0x1u)
  225. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_GPIO_3_GDBCLK_INACT           (0x0u)
  226. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_I2C_FCLK                      (0x01000000u)
  227. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_I2C_FCLK_SHIFT                (0x00000018u)
  228. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_I2C_FCLK_ACT                  (0x1u)
  229. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_I2C_FCLK_INACT                (0x0u)
  230. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_L4LS_GCLK                     (0x00000100u)
  231. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_L4LS_GCLK_SHIFT               (0x00000008u)
  232. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_L4LS_GCLK_ACT                 (0x1u)
  233. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_L4LS_GCLK_INACT               (0x0u)
  234. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_LCDC_GCLK                     (0x00020000u)
  235. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_LCDC_GCLK_SHIFT               (0x00000011u)
  236. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_LCDC_GCLK_ACT                 (0x1u)
  237. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_LCDC_GCLK_INACT               (0x0u)
  238. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_SPI_GCLK                      (0x02000000u)
  239. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_SPI_GCLK_SHIFT                (0x00000019u)
  240. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_SPI_GCLK_ACT                  (0x1u)
  241. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_SPI_GCLK_INACT                (0x0u)
  242. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER2_GCLK                   (0x00004000u)
  243. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER2_GCLK_SHIFT             (0x0000000Eu)
  244. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER2_GCLK_ACT               (0x1u)
  245. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER2_GCLK_INACT             (0x0u)
  246. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER3_GCLK                   (0x00008000u)
  247. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER3_GCLK_SHIFT             (0x0000000Fu)
  248. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER3_GCLK_ACT               (0x1u)
  249. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER3_GCLK_INACT             (0x0u)
  250. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER4_GCLK                   (0x00010000u)
  251. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER4_GCLK_SHIFT             (0x00000010u)
  252. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER4_GCLK_ACT               (0x1u)
  253. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER4_GCLK_INACT             (0x0u)
  254. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER5_GCLK                   (0x08000000u)
  255. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER5_GCLK_SHIFT             (0x0000001Bu)
  256. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER5_GCLK_ACT               (0x1u)
  257. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER5_GCLK_INACT             (0x0u)
  258. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER6_GCLK                   (0x10000000u)
  259. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER6_GCLK_SHIFT             (0x0000001Cu)
  260. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER6_GCLK_ACT               (0x1u)
  261. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER6_GCLK_INACT             (0x0u)
  262. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER7_GCLK                   (0x00002000u)
  263. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER7_GCLK_SHIFT             (0x0000000Du)
  264. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER7_GCLK_ACT               (0x1u)
  265. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_TIMER7_GCLK_INACT             (0x0u)
  266. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_UART_GFCLK                    (0x00000400u)
  267. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_UART_GFCLK_SHIFT              (0x0000000Au)
  268. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_UART_GFCLK_ACT                (0x1u)
  269. #define CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_UART_GFCLK_INACT              (0x0u)
  270. #define CM_PER_L4LS_CLKSTCTRL_CLKTRCTRL                                 (0x00000003u)
  271. #define CM_PER_L4LS_CLKSTCTRL_CLKTRCTRL_SHIFT                           (0x00000000u)
  272. #define CM_PER_L4LS_CLKSTCTRL_CLKTRCTRL_HW_AUTO                         (0x3u)
  273. #define CM_PER_L4LS_CLKSTCTRL_CLKTRCTRL_NO_SLEEP                        (0x0u)
  274. #define CM_PER_L4LS_CLKSTCTRL_CLKTRCTRL_SW_SLEEP                        (0x1u)
  275. #define CM_PER_L4LS_CLKSTCTRL_CLKTRCTRL_SW_WKUP                         (0x2u)

  276. /* L4LS_CLKCTRL */
  277. #define CM_PER_L4LS_CLKCTRL                                             (0x60)
  278. #define CM_PER_L4LS_CLKCTRL_IDLEST                                      (0x00030000u)
  279. #define CM_PER_L4LS_CLKCTRL_IDLEST_SHIFT                                (0x00000010u)
  280. #define CM_PER_L4LS_CLKCTRL_IDLEST_DISABLE                              (0x3u)
  281. #define CM_PER_L4LS_CLKCTRL_IDLEST_FUNC                                 (0x0u)
  282. #define CM_PER_L4LS_CLKCTRL_IDLEST_IDLE                                 (0x2u)
  283. #define CM_PER_L4LS_CLKCTRL_IDLEST_TRANS                                (0x1u)
  284. #define CM_PER_L4LS_CLKCTRL_MODULEMODE                                  (0x00000003u)
  285. #define CM_PER_L4LS_CLKCTRL_MODULEMODE_SHIFT                            (0x00000000u)
  286. #define CM_PER_L4LS_CLKCTRL_MODULEMODE_DISABLED                         (0x0u)
  287. #define CM_PER_L4LS_CLKCTRL_MODULEMODE_ENABLE                           (0x2u)
  288. #define CM_PER_L4LS_CLKCTRL_MODULEMODE_RESERVED                         (0x3u)
  289. #define CM_PER_L4LS_CLKCTRL_MODULEMODE_RESERVED_1                       (0x1u)

  290. /* LCDC_CLKCTRL */
  291. #define CM_PER_LCDC_CLKCTRL                                             (0x18)
  292. #define CM_PER_LCDC_CLKCTRL_IDLEST                                      (0x00030000u)
  293. #define CM_PER_LCDC_CLKCTRL_IDLEST_SHIFT                                (0x00000010u)
  294. #define CM_PER_LCDC_CLKCTRL_IDLEST_DISABLE                              (0x3u)
  295. #define CM_PER_LCDC_CLKCTRL_IDLEST_FUNC                                 (0x0u)
  296. #define CM_PER_LCDC_CLKCTRL_IDLEST_IDLE                                 (0x2u)
  297. #define CM_PER_LCDC_CLKCTRL_IDLEST_TRANS                                (0x1u)
  298. #define CM_PER_LCDC_CLKCTRL_MODULEMODE                                  (0x00000003u)
  299. #define CM_PER_LCDC_CLKCTRL_MODULEMODE_SHIFT                            (0x00000000u)
  300. #define CM_PER_LCDC_CLKCTRL_MODULEMODE_DISABLED                         (0x0u)
  301. #define CM_PER_LCDC_CLKCTRL_MODULEMODE_ENABLE                           (0x2u)
  302. #define CM_PER_LCDC_CLKCTRL_MODULEMODE_RESERVED                         (0x3u)
  303. #define CM_PER_LCDC_CLKCTRL_MODULEMODE_RESERVED_1                       (0x1u)
  304. #define CM_PER_LCDC_CLKCTRL_STBYST                                      (0x00040000u)
  305. #define CM_PER_LCDC_CLKCTRL_STBYST_SHIFT                                (0x00000012u)
  306. #define CM_PER_LCDC_CLKCTRL_STBYST_FUNC                                 (0x0u)
  307. #define CM_PER_LCDC_CLKCTRL_STBYST_STANDBY                              (0x1u)

  308. /* CONF_GPMC_AD */
  309. #define CONTROL_CONF_GPMC_AD(n)                                         (0x800 + (n * 4))

  310. /* CONF_LCD_DATA0 */
  311. #define CONTROL_CONF_LCD_DATA(n)                                        (0x8a0 + (n * 4))
  312. #define CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_MMODE                     (0x00000007u)
  313. #define CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_MMODE_SHIFT               (0x00000000u)
  314. #define CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_PUDEN                     (0x00000008u)
  315. #define CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_PUDEN_SHIFT               (0x00000003u)
  316. #define CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_PUTYPESEL                 (0x00000010u)
  317. #define CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_PUTYPESEL_SHIFT           (0x00000004u)
  318. #define CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_RSVD                      (0x000FFF80u)
  319. #define CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_RSVD_SHIFT                (0x00000007u)
  320. #define CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_RXACTIVE                  (0x00000020u)
  321. #define CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_RXACTIVE_SHIFT            (0x00000005u)
  322. #define CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_SLEWCTRL                  (0x00000040u)
  323. #define CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_SLEWCTRL_SHIFT            (0x00000006u)

  324. /* CONF_LCD_DATA1 */
  325. #define CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_MMODE                     (0x00000007u)
  326. #define CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_MMODE_SHIFT               (0x00000000u)
  327. #define CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_PUDEN                     (0x00000008u)
  328. #define CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_PUDEN_SHIFT               (0x00000003u)
  329. #define CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_PUTYPESEL                 (0x00000010u)
  330. #define CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_PUTYPESEL_SHIFT           (0x00000004u)
  331. #define CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_RSVD                      (0x000FFF80u)
  332. #define CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_RSVD_SHIFT                (0x00000007u)
  333. #define CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_RXACTIVE                  (0x00000020u)
  334. #define CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_RXACTIVE_SHIFT            (0x00000005u)
  335. #define CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_SLEWCTRL                  (0x00000040u)
  336. #define CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_SLEWCTRL_SHIFT            (0x00000006u)

  337. /* CONF_LCD_DATA2 */
  338. #define CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_MMODE                     (0x00000007u)
  339. #define CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_MMODE_SHIFT               (0x00000000u)
  340. #define CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_PUDEN                     (0x00000008u)
  341. #define CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_PUDEN_SHIFT               (0x00000003u)
  342. #define CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_PUTYPESEL                 (0x00000010u)
  343. #define CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_PUTYPESEL_SHIFT           (0x00000004u)
  344. #define CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_RSVD                      (0x000FFF80u)
  345. #define CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_RSVD_SHIFT                (0x00000007u)
  346. #define CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_RXACTIVE                  (0x00000020u)
  347. #define CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_RXACTIVE_SHIFT            (0x00000005u)
  348. #define CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_SLEWCTRL                  (0x00000040u)
  349. #define CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_SLEWCTRL_SHIFT            (0x00000006u)

  350. /* CONF_LCD_DATA3 */
  351. #define CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_MMODE                     (0x00000007u)
  352. #define CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_MMODE_SHIFT               (0x00000000u)
  353. #define CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_PUDEN                     (0x00000008u)
  354. #define CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_PUDEN_SHIFT               (0x00000003u)
  355. #define CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_PUTYPESEL                 (0x00000010u)
  356. #define CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_PUTYPESEL_SHIFT           (0x00000004u)
  357. #define CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_RSVD                      (0x000FFF80u)
  358. #define CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_RSVD_SHIFT                (0x00000007u)
  359. #define CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_RXACTIVE                  (0x00000020u)
  360. #define CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_RXACTIVE_SHIFT            (0x00000005u)
  361. #define CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_SLEWCTRL                  (0x00000040u)
  362. #define CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_SLEWCTRL_SHIFT            (0x00000006u)

  363. /* CONF_LCD_DATA4 */
  364. #define CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_MMODE                     (0x00000007u)
  365. #define CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_MMODE_SHIFT               (0x00000000u)
  366. #define CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_PUDEN                     (0x00000008u)
  367. #define CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_PUDEN_SHIFT               (0x00000003u)
  368. #define CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_PUTYPESEL                 (0x00000010u)
  369. #define CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_PUTYPESEL_SHIFT           (0x00000004u)
  370. #define CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_RSVD                      (0x000FFF80u)
  371. #define CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_RSVD_SHIFT                (0x00000007u)
  372. #define CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_RXACTIVE                  (0x00000020u)
  373. #define CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_RXACTIVE_SHIFT            (0x00000005u)
  374. #define CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_SLEWCTRL                  (0x00000040u)
  375. #define CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_SLEWCTRL_SHIFT            (0x00000006u)

  376. /* CONF_LCD_DATA5 */
  377. #define CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_MMODE                     (0x00000007u)
  378. #define CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_MMODE_SHIFT               (0x00000000u)
  379. #define CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_PUDEN                     (0x00000008u)
  380. #define CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_PUDEN_SHIFT               (0x00000003u)
  381. #define CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_PUTYPESEL                 (0x00000010u)
  382. #define CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_PUTYPESEL_SHIFT           (0x00000004u)
  383. #define CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_RSVD                      (0x000FFF80u)
  384. #define CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_RSVD_SHIFT                (0x00000007u)
  385. #define CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_RXACTIVE                  (0x00000020u)
  386. #define CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_RXACTIVE_SHIFT            (0x00000005u)
  387. #define CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_SLEWCTRL                  (0x00000040u)
  388. #define CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_SLEWCTRL_SHIFT            (0x00000006u)

  389. /* CONF_LCD_DATA6 */
  390. #define CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_MMODE                     (0x00000007u)
  391. #define CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_MMODE_SHIFT               (0x00000000u)
  392. #define CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_PUDEN                     (0x00000008u)
  393. #define CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_PUDEN_SHIFT               (0x00000003u)
  394. #define CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_PUTYPESEL                 (0x00000010u)
  395. #define CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_PUTYPESEL_SHIFT           (0x00000004u)
  396. #define CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_RSVD                      (0x000FFF80u)
  397. #define CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_RSVD_SHIFT                (0x00000007u)
  398. #define CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_RXACTIVE                  (0x00000020u)
  399. #define CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_RXACTIVE_SHIFT            (0x00000005u)
  400. #define CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_SLEWCTRL                  (0x00000040u)
  401. #define CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_SLEWCTRL_SHIFT            (0x00000006u)

  402. /* CONF_LCD_DATA7 */
  403. #define CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_MMODE                     (0x00000007u)
  404. #define CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_MMODE_SHIFT               (0x00000000u)
  405. #define CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_PUDEN                     (0x00000008u)
  406. #define CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_PUDEN_SHIFT               (0x00000003u)
  407. #define CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_PUTYPESEL                 (0x00000010u)
  408. #define CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_PUTYPESEL_SHIFT           (0x00000004u)
  409. #define CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_RSVD                      (0x000FFF80u)
  410. #define CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_RSVD_SHIFT                (0x00000007u)
  411. #define CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_RXACTIVE                  (0x00000020u)
  412. #define CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_RXACTIVE_SHIFT            (0x00000005u)
  413. #define CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_SLEWCTRL                  (0x00000040u)
  414. #define CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_SLEWCTRL_SHIFT            (0x00000006u)

  415. /* CONF_LCD_DATA8 */
  416. #define CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_MMODE                     (0x00000007u)
  417. #define CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_MMODE_SHIFT               (0x00000000u)
  418. #define CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_PUDEN                     (0x00000008u)
  419. #define CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_PUDEN_SHIFT               (0x00000003u)
  420. #define CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_PUTYPESEL                 (0x00000010u)
  421. #define CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_PUTYPESEL_SHIFT           (0x00000004u)
  422. #define CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_RSVD                      (0x000FFF80u)
  423. #define CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_RSVD_SHIFT                (0x00000007u)
  424. #define CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_RXACTIVE                  (0x00000020u)
  425. #define CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_RXACTIVE_SHIFT            (0x00000005u)
  426. #define CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_SLEWCTRL                  (0x00000040u)
  427. #define CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_SLEWCTRL_SHIFT            (0x00000006u)

  428. /* CONF_LCD_DATA9 */
  429. #define CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_MMODE                     (0x00000007u)
  430. #define CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_MMODE_SHIFT               (0x00000000u)
  431. #define CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_PUDEN                     (0x00000008u)
  432. #define CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_PUDEN_SHIFT               (0x00000003u)
  433. #define CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_PUTYPESEL                 (0x00000010u)
  434. #define CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_PUTYPESEL_SHIFT           (0x00000004u)
  435. #define CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_RSVD                      (0x000FFF80u)
  436. #define CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_RSVD_SHIFT                (0x00000007u)
  437. #define CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_RXACTIVE                  (0x00000020u)
  438. #define CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_RXACTIVE_SHIFT            (0x00000005u)
  439. #define CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_SLEWCTRL                  (0x00000040u)
  440. #define CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_SLEWCTRL_SHIFT            (0x00000006u)

  441. /* CONF_LCD_DATA10 */
  442. #define CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_MMODE                   (0x00000007u)
  443. #define CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_MMODE_SHIFT             (0x00000000u)
  444. #define CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_PUDEN                   (0x00000008u)
  445. #define CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_PUDEN_SHIFT             (0x00000003u)
  446. #define CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_PUTYPESEL               (0x00000010u)
  447. #define CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_PUTYPESEL_SHIFT         (0x00000004u)
  448. #define CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_RSVD                    (0x000FFF80u)
  449. #define CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_RSVD_SHIFT              (0x00000007u)
  450. #define CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_RXACTIVE                (0x00000020u)
  451. #define CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_RXACTIVE_SHIFT          (0x00000005u)
  452. #define CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_SLEWCTRL                (0x00000040u)
  453. #define CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_SLEWCTRL_SHIFT          (0x00000006u)

  454. /* CONF_LCD_DATA11 */
  455. #define CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_MMODE                   (0x00000007u)
  456. #define CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_MMODE_SHIFT             (0x00000000u)
  457. #define CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_PUDEN                   (0x00000008u)
  458. #define CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_PUDEN_SHIFT             (0x00000003u)
  459. #define CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_PUTYPESEL               (0x00000010u)
  460. #define CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_PUTYPESEL_SHIFT         (0x00000004u)
  461. #define CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_RSVD                    (0x000FFF80u)
  462. #define CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_RSVD_SHIFT              (0x00000007u)
  463. #define CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_RXACTIVE                (0x00000020u)
  464. #define CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_RXACTIVE_SHIFT          (0x00000005u)
  465. #define CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_SLEWCTRL                (0x00000040u)
  466. #define CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_SLEWCTRL_SHIFT          (0x00000006u)

  467. /* CONF_LCD_DATA12 */
  468. #define CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_MMODE                   (0x00000007u)
  469. #define CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_MMODE_SHIFT             (0x00000000u)
  470. #define CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_PUDEN                   (0x00000008u)
  471. #define CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_PUDEN_SHIFT             (0x00000003u)
  472. #define CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_PUTYPESEL               (0x00000010u)
  473. #define CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_PUTYPESEL_SHIFT         (0x00000004u)
  474. #define CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_RSVD                    (0x000FFF80u)
  475. #define CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_RSVD_SHIFT              (0x00000007u)
  476. #define CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_RXACTIVE                (0x00000020u)
  477. #define CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_RXACTIVE_SHIFT          (0x00000005u)
  478. #define CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_SLEWCTRL                (0x00000040u)
  479. #define CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_SLEWCTRL_SHIFT          (0x00000006u)

  480. /* CONF_LCD_DATA13 */
  481. #define CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_MMODE                   (0x00000007u)
  482. #define CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_MMODE_SHIFT             (0x00000000u)
  483. #define CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_PUDEN                   (0x00000008u)
  484. #define CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_PUDEN_SHIFT             (0x00000003u)
  485. #define CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_PUTYPESEL               (0x00000010u)
  486. #define CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_PUTYPESEL_SHIFT         (0x00000004u)
  487. #define CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_RSVD                    (0x000FFF80u)
  488. #define CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_RSVD_SHIFT              (0x00000007u)
  489. #define CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_RXACTIVE                (0x00000020u)
  490. #define CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_RXACTIVE_SHIFT          (0x00000005u)
  491. #define CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_SLEWCTRL                (0x00000040u)
  492. #define CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_SLEWCTRL_SHIFT          (0x00000006u)

  493. /* CONF_LCD_DATA14 */
  494. #define CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_MMODE                   (0x00000007u)
  495. #define CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_MMODE_SHIFT             (0x00000000u)
  496. #define CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_PUDEN                   (0x00000008u)
  497. #define CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_PUDEN_SHIFT             (0x00000003u)
  498. #define CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_PUTYPESEL               (0x00000010u)
  499. #define CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_PUTYPESEL_SHIFT         (0x00000004u)
  500. #define CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_RSVD                    (0x000FFF80u)
  501. #define CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_RSVD_SHIFT              (0x00000007u)
  502. #define CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_RXACTIVE                (0x00000020u)
  503. #define CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_RXACTIVE_SHIFT          (0x00000005u)
  504. #define CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_SLEWCTRL                (0x00000040u)
  505. #define CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_SLEWCTRL_SHIFT          (0x00000006u)

  506. /* CONF_LCD_DATA15 */
  507. #define CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_MMODE                   (0x00000007u)
  508. #define CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_MMODE_SHIFT             (0x00000000u)
  509. #define CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_PUDEN                   (0x00000008u)
  510. #define CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_PUDEN_SHIFT             (0x00000003u)
  511. #define CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_PUTYPESEL               (0x00000010u)
  512. #define CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_PUTYPESEL_SHIFT         (0x00000004u)
  513. #define CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_RSVD                    (0x000FFF80u)
  514. #define CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_RSVD_SHIFT              (0x00000007u)
  515. #define CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_RXACTIVE                (0x00000020u)
  516. #define CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_RXACTIVE_SHIFT          (0x00000005u)
  517. #define CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_SLEWCTRL                (0x00000040u)
  518. #define CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_SLEWCTRL_SHIFT          (0x00000006u)

  519. /* CONF_LCD_DATA16 */
  520. #define CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_MMODE                   (0x00000007u)
  521. #define CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_MMODE_SHIFT             (0x00000000u)
  522. #define CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_PUDEN                   (0x00000008u)
  523. #define CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_PUDEN_SHIFT             (0x00000003u)
  524. #define CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_PUTYPESEL               (0x00000010u)
  525. #define CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_PUTYPESEL_SHIFT         (0x00000004u)
  526. #define CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_RSVD                    (0x000FFF80u)
  527. #define CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_RSVD_SHIFT              (0x00000007u)
  528. #define CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_RXACTIVE                (0x00000020u)
  529. #define CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_RXACTIVE_SHIFT          (0x00000005u)
  530. #define CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_SLEWCTRL                (0x00000040u)
  531. #define CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_SLEWCTRL_SHIFT          (0x00000006u)

  532. /* CONF_LCD_DATA17 */
  533. #define CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_MMODE                   (0x00000007u)
  534. #define CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_MMODE_SHIFT             (0x00000000u)
  535. #define CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_PUDEN                   (0x00000008u)
  536. #define CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_PUDEN_SHIFT             (0x00000003u)
  537. #define CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_PUTYPESEL               (0x00000010u)
  538. #define CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_PUTYPESEL_SHIFT         (0x00000004u)
  539. #define CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_RSVD                    (0x000FFF80u)
  540. #define CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_RSVD_SHIFT              (0x00000007u)
  541. #define CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_RXACTIVE                (0x00000020u)
  542. #define CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_RXACTIVE_SHIFT          (0x00000005u)
  543. #define CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_SLEWCTRL                (0x00000040u)
  544. #define CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_SLEWCTRL_SHIFT          (0x00000006u)

  545. /* CONF_LCD_DATA18 */
  546. #define CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_MMODE                   (0x00000007u)
  547. #define CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_MMODE_SHIFT             (0x00000000u)
  548. #define CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_PUDEN                   (0x00000008u)
  549. #define CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_PUDEN_SHIFT             (0x00000003u)
  550. #define CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_PUTYPESEL               (0x00000010u)
  551. #define CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_PUTYPESEL_SHIFT         (0x00000004u)
  552. #define CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_RSVD                    (0x000FFF80u)
  553. #define CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_RSVD_SHIFT              (0x00000007u)
  554. #define CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_RXACTIVE                (0x00000020u)
  555. #define CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_RXACTIVE_SHIFT          (0x00000005u)
  556. #define CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_SLEWCTRL                (0x00000040u)
  557. #define CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_SLEWCTRL_SHIFT          (0x00000006u)

  558. /* CONF_LCD_DATA19 */
  559. #define CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_MMODE                   (0x00000007u)
  560. #define CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_MMODE_SHIFT             (0x00000000u)
  561. #define CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_PUDEN                   (0x00000008u)
  562. #define CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_PUDEN_SHIFT             (0x00000003u)
  563. #define CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_PUTYPESEL               (0x00000010u)
  564. #define CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_PUTYPESEL_SHIFT         (0x00000004u)
  565. #define CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_RSVD                    (0x000FFF80u)
  566. #define CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_RSVD_SHIFT              (0x00000007u)
  567. #define CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_RXACTIVE                (0x00000020u)
  568. #define CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_RXACTIVE_SHIFT          (0x00000005u)
  569. #define CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_SLEWCTRL                (0x00000040u)
  570. #define CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_SLEWCTRL_SHIFT          (0x00000006u)

  571. /* CONF_LCD_DATA20 */
  572. #define CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_MMODE                   (0x00000007u)
  573. #define CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_MMODE_SHIFT             (0x00000000u)
  574. #define CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_PUDEN                   (0x00000008u)
  575. #define CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_PUDEN_SHIFT             (0x00000003u)
  576. #define CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_PUTYPESEL               (0x00000010u)
  577. #define CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_PUTYPESEL_SHIFT         (0x00000004u)
  578. #define CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_RSVD                    (0x000FFF80u)
  579. #define CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_RSVD_SHIFT              (0x00000007u)
  580. #define CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_RXACTIVE                (0x00000020u)
  581. #define CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_RXACTIVE_SHIFT          (0x00000005u)
  582. #define CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_SLEWCTRL                (0x00000040u)
  583. #define CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_SLEWCTRL_SHIFT          (0x00000006u)

  584. /* CONF_LCD_DATA21 */
  585. #define CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_MMODE                   (0x00000007u)
  586. #define CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_MMODE_SHIFT             (0x00000000u)
  587. #define CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_PUDEN                   (0x00000008u)
  588. #define CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_PUDEN_SHIFT             (0x00000003u)
  589. #define CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_PUTYPESEL               (0x00000010u)
  590. #define CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_PUTYPESEL_SHIFT         (0x00000004u)
  591. #define CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_RSVD                    (0x000FFF80u)
  592. #define CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_RSVD_SHIFT              (0x00000007u)
  593. #define CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_RXACTIVE                (0x00000020u)
  594. #define CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_RXACTIVE_SHIFT          (0x00000005u)
  595. #define CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_SLEWCTRL                (0x00000040u)
  596. #define CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_SLEWCTRL_SHIFT          (0x00000006u)

  597. /* CONF_LCD_DATA22 */
  598. #define CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_MMODE                   (0x00000007u)
  599. #define CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_MMODE_SHIFT             (0x00000000u)
  600. #define CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_PUDEN                   (0x00000008u)
  601. #define CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_PUDEN_SHIFT             (0x00000003u)
  602. #define CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_PUTYPESEL               (0x00000010u)
  603. #define CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_PUTYPESEL_SHIFT         (0x00000004u)
  604. #define CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_RSVD                    (0x000FFF80u)
  605. #define CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_RSVD_SHIFT              (0x00000007u)
  606. #define CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_RXACTIVE                (0x00000020u)
  607. #define CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_RXACTIVE_SHIFT          (0x00000005u)
  608. #define CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_SLEWCTRL                (0x00000040u)
  609. #define CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_SLEWCTRL_SHIFT          (0x00000006u)

  610. /* CONF_LCD_DATA23 */
  611. #define CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_MMODE                   (0x00000007u)
  612. #define CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_MMODE_SHIFT             (0x00000000u)
  613. #define CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_PUDEN                   (0x00000008u)
  614. #define CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_PUDEN_SHIFT             (0x00000003u)
  615. #define CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_PUTYPESEL               (0x00000010u)
  616. #define CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_PUTYPESEL_SHIFT         (0x00000004u)
  617. #define CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_RSVD                    (0x000FFF80u)
  618. #define CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_RSVD_SHIFT              (0x00000007u)
  619. #define CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_RXACTIVE                (0x00000020u)
  620. #define CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_RXACTIVE_SHIFT          (0x00000005u)
  621. #define CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_SLEWCTRL                (0x00000040u)
  622. #define CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_SLEWCTRL_SHIFT          (0x00000006u)

  623. /* CONF_LCD_VSYNC */
  624. #define CONTROL_CONF_LCD_VSYNC                                          (0x8e0)
  625. #define CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_MMODE                     (0x00000007u)
  626. #define CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_MMODE_SHIFT               (0x00000000u)
  627. #define CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_PUDEN                     (0x00000008u)
  628. #define CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_PUDEN_SHIFT               (0x00000003u)
  629. #define CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_PUTYPESEL                 (0x00000010u)
  630. #define CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_PUTYPESEL_SHIFT           (0x00000004u)
  631. #define CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_RSVD                      (0x000FFF80u)
  632. #define CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_RSVD_SHIFT                (0x00000007u)
  633. #define CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_RXACTIVE                  (0x00000020u)
  634. #define CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_RXACTIVE_SHIFT            (0x00000005u)
  635. #define CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_SLEWCTRL                  (0x00000040u)
  636. #define CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_SLEWCTRL_SHIFT            (0x00000006u)

  637. /* CONF_LCD_HSYNC */
  638. #define CONTROL_CONF_LCD_HSYNC                                          (0x8e4)
  639. #define CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_MMODE                     (0x00000007u)
  640. #define CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_MMODE_SHIFT               (0x00000000u)
  641. #define CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_PUDEN                     (0x00000008u)
  642. #define CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_PUDEN_SHIFT               (0x00000003u)
  643. #define CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_PUTYPESEL                 (0x00000010u)
  644. #define CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_PUTYPESEL_SHIFT           (0x00000004u)
  645. #define CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_RSVD                      (0x000FFF80u)
  646. #define CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_RSVD_SHIFT                (0x00000007u)
  647. #define CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_RXACTIVE                  (0x00000020u)
  648. #define CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_RXACTIVE_SHIFT            (0x00000005u)
  649. #define CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_SLEWCTRL                  (0x00000040u)
  650. #define CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_SLEWCTRL_SHIFT            (0x00000006u)

  651. /* CONF_LCD_PCLK */
  652. #define CONTROL_CONF_LCD_PCLK                                           (0x8e8)
  653. #define CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_MMODE                       (0x00000007u)
  654. #define CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_MMODE_SHIFT                 (0x00000000u)
  655. #define CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_PUDEN                       (0x00000008u)
  656. #define CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_PUDEN_SHIFT                 (0x00000003u)
  657. #define CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_PUTYPESEL                   (0x00000010u)
  658. #define CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_PUTYPESEL_SHIFT             (0x00000004u)
  659. #define CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_RSVD                        (0x000FFF80u)
  660. #define CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_RSVD_SHIFT                  (0x00000007u)
  661. #define CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_RXACTIVE                    (0x00000020u)
  662. #define CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_RXACTIVE_SHIFT              (0x00000005u)
  663. #define CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_SLEWCTRL                    (0x00000040u)
  664. #define CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_SLEWCTRL_SHIFT              (0x00000006u)

  665. /* CONF_LCD_AC_BIAS_EN */
  666. #define CONTROL_CONF_LCD_AC_BIAS_EN                                     (0x8ec)
  667. #define CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_MMODE           (0x00000007u)
  668. #define CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_MMODE_SHIFT     (0x00000000u)
  669. #define CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_PUDEN           (0x00000008u)
  670. #define CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_PUDEN_SHIFT     (0x00000003u)
  671. #define CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_PUTYPESEL       (0x00000010u)
  672. #define CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_PUTYPESEL_SHIFT (0x00000004u)
  673. #define CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_RSVD            (0x000FFF80u)
  674. #define CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_RSVD_SHIFT      (0x00000007u)
  675. #define CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_RXACTIVE        (0x00000020u)
  676. #define CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_RXACTIVE_SHIFT  (0x00000005u)
  677. #define CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_SLEWCTRL        (0x00000040u)
  678. #define CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_SLEWCTRL_SHIFT  (0x00000006u)

  679. /* CLKC_ENABLE */
  680. #define LCDC_CLKC_ENABLE                                                (0x6C)
  681. #define LCDC_CLKC_ENABLE_CORE                                           (0x00000001u)
  682. #define LCDC_CLKC_ENABLE_CORE_SHIFT                                     (0x00000000u)
  683. #define LCDC_CLKC_ENABLE_CORE_DISABLE                                   (0x0u)
  684. #define LCDC_CLKC_ENABLE_CORE_ENABLE                                    (0x1u)
  685. #define LCDC_CLKC_ENABLE_DMA                                            (0x00000004u)
  686. #define LCDC_CLKC_ENABLE_DMA_SHIFT                                      (0x00000002u)
  687. #define LCDC_CLKC_ENABLE_DMA_DISABLE                                    (0x0u)
  688. #define LCDC_CLKC_ENABLE_DMA_ENABLE                                     (0x1u)
  689. #define LCDC_CLKC_ENABLE_LIDD                                           (0x00000002u)
  690. #define LCDC_CLKC_ENABLE_LIDD_SHIFT                                     (0x00000001u)
  691. #define LCDC_CLKC_ENABLE_LIDD_DISABLE                                   (0x0u)
  692. #define LCDC_CLKC_ENABLE_LIDD_ENABLE                                    (0x1u)

  693. /* LCD_CTRL */
  694. #define LCDC_LCD_CTRL                                                   (0x4)
  695. #define LCDC_LCD_CTRL_AUTO_UFLOW_RESTART                                (0x00000002u)
  696. #define LCDC_LCD_CTRL_AUTO_UFLOW_RESTART_SHIFT                          (0x00000001u)
  697. #define LCDC_LCD_CTRL_AUTO_UFLOW_RESTART_AUTO                           (0x1u)
  698. #define LCDC_LCD_CTRL_AUTO_UFLOW_RESTART_MANUAL                         (0x0u)
  699. #define LCDC_LCD_CTRL_CLKDIV                                            (0x0000FF00u)
  700. #define LCDC_LCD_CTRL_CLKDIV_SHIFT                                      (0x00000008u)
  701. #define LCDC_LCD_CTRL_MODESEL                                           (0x00000001u)
  702. #define LCDC_LCD_CTRL_MODESEL_SHIFT                                     (0x00000000u)
  703. #define LCDC_LCD_CTRL_MODESEL_LIDD                                      (0x0u)
  704. #define LCDC_LCD_CTRL_MODESEL_RASTER                                    (0x1u)

  705. /* RASTER_CTRL */
  706. #define LCDC_RASTER_CTRL                                                (0x28)
  707. #define LCDC_RASTER_CTRL_ACTVID_EN_VBLANK                               (0x08000000u)
  708. #define LCDC_RASTER_CTRL_ACTVID_EN_VBLANK_SHIFT                         (0x0000001Bu)
  709. #define LCDC_RASTER_CTRL_ACTVID_EN_VBLANK_NOACTVID                      (0x0u)
  710. #define LCDC_RASTER_CTRL_ACTVID_EN_VBLANK_TOGGLEACTVID                  (0x1u)
  711. #define LCDC_RASTER_CTRL_FIFO_DMA_DELAY                                 (0x000FF000u)
  712. #define LCDC_RASTER_CTRL_FIFO_DMA_DELAY_SHIFT                           (0x0000000Cu)
  713. #define LCDC_RASTER_CTRL_FIFO_DMA_DELAY_DISABLED                        (0x0u)
  714. #define LCDC_RASTER_CTRL_MONO8B                                         (0x00000200u)
  715. #define LCDC_RASTER_CTRL_MONO8B_SHIFT                                   (0x00000009u)
  716. #define LCDC_RASTER_CTRL_MONO8B_4PIXEL                                  (0x0u)
  717. #define LCDC_RASTER_CTRL_MONO8B_8PIXEL                                  (0x1u)
  718. #define LCDC_RASTER_CTRL_MONO_COLOR                                     (0x00000002u)
  719. #define LCDC_RASTER_CTRL_MONO_COLOR_SHIFT                               (0x00000001u)
  720. #define LCDC_RASTER_CTRL_MONO_COLOR_COLOR                               (0x0u)
  721. #define LCDC_RASTER_CTRL_MONO_COLOR_MONO                                (0x1u)
  722. #define LCDC_RASTER_CTRL_NIB_MODE                                       (0x00400000u)
  723. #define LCDC_RASTER_CTRL_NIB_MODE_SHIFT                                 (0x00000016u)
  724. #define LCDC_RASTER_CTRL_NIB_MODE_DISABLED                              (0x0u)
  725. #define LCDC_RASTER_CTRL_NIB_MODE_ENABLED                               (0x1u)
  726. #define LCDC_RASTER_CTRL_PLM                                            (0x00300000u)
  727. #define LCDC_RASTER_CTRL_PLM_SHIFT                                      (0x00000014u)
  728. #define LCDC_RASTER_CTRL_PLM_DATA                                       (0x00000002u)
  729. #define LCDC_RASTER_CTRL_PLM_PALETTE                                    (0x00000001u)
  730. #define LCDC_RASTER_CTRL_PLM_PALETTE_DATA                               (0x00000000u)
  731. #define LCDC_RASTER_CTRL_RASTER_EN                                      (0x00000001u)
  732. #define LCDC_RASTER_CTRL_RASTER_EN_SHIFT                                (0x00000000u)
  733. #define LCDC_RASTER_CTRL_RASTER_EN_DISABLED                             (0x0u)
  734. #define LCDC_RASTER_CTRL_RASTER_EN_ENABLED                              (0x1u)
  735. #define LCDC_RASTER_CTRL_RD_ORDER                                       (0x00000100u)
  736. #define LCDC_RASTER_CTRL_RD_ORDER_SHIFT                                 (0x00000008u)
  737. #define LCDC_RASTER_CTRL_RD_ORDER_H2L                                   (0x1u)
  738. #define LCDC_RASTER_CTRL_RD_ORDER_L2H                                   (0x0u)
  739. #define LCDC_RASTER_CTRL_STN_565                                        (0x01000000u)
  740. #define LCDC_RASTER_CTRL_STN_565_SHIFT                                  (0x00000018u)
  741. #define LCDC_RASTER_CTRL_STN_565_12BPP                                  (0x0u)
  742. #define LCDC_RASTER_CTRL_STN_565_16BPP                                  (0x1u)
  743. #define LCDC_RASTER_CTRL_TFT24                                          (0x02000000u)
  744. #define LCDC_RASTER_CTRL_TFT24_SHIFT                                    (0x00000019u)
  745. #define LCDC_RASTER_CTRL_TFT24_OFF                                      (0x0u)
  746. #define LCDC_RASTER_CTRL_TFT24_ON                                       (0x1u)
  747. #define LCDC_RASTER_CTRL_TFT24UNPACKED                                  (0x04000000u)
  748. #define LCDC_RASTER_CTRL_TFT24UNPACKED_SHIFT                            (0x0000001Au)
  749. #define LCDC_RASTER_CTRL_TFT24UNPACKED_PACKED                           (0x0u)
  750. #define LCDC_RASTER_CTRL_TFT24UNPACKED_UNPACKED                         (0x1u)
  751. #define LCDC_RASTER_CTRL_TFT_ALT_MAP                                    (0x00800000u)
  752. #define LCDC_RASTER_CTRL_TFT_ALT_MAP_SHIFT                              (0x00000017u)
  753. #define LCDC_RASTER_CTRL_TFT_ALT_MAP_565                                (0x1u)
  754. #define LCDC_RASTER_CTRL_TFT_ALT_MAP_ALIGN                              (0x0u)
  755. #define LCDC_RASTER_CTRL_TFT_STN                                        (0x00000080u)
  756. #define LCDC_RASTER_CTRL_TFT_STN_SHIFT                                  (0x00000007u)
  757. #define LCDC_RASTER_CTRL_TFT_STN_STN                                    (0x0u)
  758. #define LCDC_RASTER_CTRL_TFT_STN_TFT                                    (0x1u)
  759. #define LCDC_RASTER_CTRL_FUF_EN                                         (0x00000040u)
  760. #define LCDC_RASTER_CTRL_FUF_EN_SHIFT                                   (0x00000006u)
  761. #define LCDC_RASTER_CTRL_SL_EN                                          (0x00000020u)
  762. #define LCDC_RASTER_CTRL_SL_EN_SHIFT                                    (0x00000005u)
  763. #define LCDC_RASTER_CTRL_PL_EN                                          (0x00000010u)
  764. #define LCDC_RASTER_CTRL_PL_EN_SHIFT                                    (0x00000004u)
  765. #define LCDC_RASTER_CTRL_DONE_EN                                        (0x00000008u)
  766. #define LCDC_RASTER_CTRL_DONE_EN_SHIFT                                  (0x00000003u)
  767. #define LCDC_RASTER_CTRL_AC_EN                                          (0x00000004u)
  768. #define LCDC_RASTER_CTRL_AC_EN_SHIFT                                    (0x00000002u)

  769. /* LCDDMA_CTRL */
  770. #define LCDC_LCDDMA_CTRL                                                (0x40)
  771. #define LCDC_LCDDMA_CTRL_BIGENDIAN                                      (0x00000002u)
  772. #define LCDC_LCDDMA_CTRL_BIGENDIAN_SHIFT                                (0x00000001u)
  773. #define LCDC_LCDDMA_CTRL_EOF_INTEN                                      (0x00000004)
  774. #define LCDC_LCDDMA_CTRL_EOF_INTEN_SHIFT                                (0x00000002u)
  775. #define LCDC_LCDDMA_CTRL_BURST_SIZE                                     (0x00000070u)
  776. #define LCDC_LCDDMA_CTRL_BURST_SIZE_SHIFT                               (0x00000004u)
  777. #define LCDC_LCDDMA_CTRL_BURST_SIZE_EIGHT                               (0x00000003u)
  778. #define LCDC_LCDDMA_CTRL_BURST_SIZE_FOUR                                (0x00000002u)
  779. #define LCDC_LCDDMA_CTRL_BURST_SIZE_ONE                                 (0x00000000u)
  780. #define LCDC_LCDDMA_CTRL_BURST_SIZE_SIXTEEN                             (0x00000004u)
  781. #define LCDC_LCDDMA_CTRL_BURST_SIZE_TWO                                 (0x00000001u)
  782. #define LCDC_LCDDMA_CTRL_BYTE_SWAP                                      (0x00000008u)
  783. #define LCDC_LCDDMA_CTRL_BYTE_SWAP_SHIFT                                (0x00000003u)
  784. #define LCDC_LCDDMA_CTRL_DMA_MASTER_PRIO                                (0x00070000u)
  785. #define LCDC_LCDDMA_CTRL_DMA_MASTER_PRIO_SHIFT                          (0x00000010u)
  786. #define LCDC_LCDDMA_CTRL_FRAME_MODE                                     (0x00000001u)
  787. #define LCDC_LCDDMA_CTRL_FRAME_MODE_SHIFT                               (0x00000000u)
  788. #define LCDC_LCDDMA_CTRL_FRAME_MODE_ONE                                 (0x0u)
  789. #define LCDC_LCDDMA_CTRL_FRAME_MODE_TWO                                 (0x1u)
  790. #define LCDC_LCDDMA_CTRL_TH_FIFO_READY                                  (0x00000700u)
  791. #define LCDC_LCDDMA_CTRL_TH_FIFO_READY_SHIFT                            (0x00000008u)
  792. #define LCDC_LCDDMA_CTRL_TH_FIFO_READY_EIGHT                            (0x00000000u)
  793. #define LCDC_LCDDMA_CTRL_TH_FIFO_READY_FIVE_TWELVE                      (0x00000006u)
  794. #define LCDC_LCDDMA_CTRL_TH_FIFO_READY_ONE_TWENTY_EIGHT                 (0x00000004u)
  795. #define LCDC_LCDDMA_CTRL_TH_FIFO_READY_SIXTEEN                          (0x00000001u)
  796. #define LCDC_LCDDMA_CTRL_TH_FIFO_READY_SIXTY_FOUR                       (0x00000003u)
  797. #define LCDC_LCDDMA_CTRL_TH_FIFO_READY_THIRTY_TWO                       (0x00000002u)
  798. #define LCDC_LCDDMA_CTRL_TH_FIFO_READY_TWO_FIFTY_SIX                    (0x00000005u)

  799. /* RASTER_TIMING_0 */
  800. #define LCDC_RASTER_TIMING_0                                            (0x2C)
  801. #define LCDC_RASTER_TIMING_0_HBP                                        (0xFF000000u)
  802. #define LCDC_RASTER_TIMING_0_HBP_SHIFT                                  (0x00000018u)
  803. #define LCDC_RASTER_TIMING_0_HFP                                        (0x00FF0000u)
  804. #define LCDC_RASTER_TIMING_0_HFP_SHIFT                                  (0x00000010u)
  805. #define LCDC_RASTER_TIMING_0_HSW                                        (0x0000FC00u)
  806. #define LCDC_RASTER_TIMING_0_HSW_SHIFT                                  (0x0000000Au)
  807. #define LCDC_RASTER_TIMING_0_PPL                                        (0x000003F0u)
  808. #define LCDC_RASTER_TIMING_0_PPL_SHIFT                                  (0x00000004u)
  809. #define LCDC_RASTER_TIMING_0_PPLMSB                                     (0x00000008u)
  810. #define LCDC_RASTER_TIMING_0_PPLMSB_SHIFT                               (0x00000003u)

  811. /* RASTER_TIMING_1 */
  812. #define LCDC_RASTER_TIMING_1                                            (0x30)
  813. #define LCDC_RASTER_TIMING_1_LPP                                        (0x000003FFu)
  814. #define LCDC_RASTER_TIMING_1_LPP_SHIFT                                  (0x00000000u)
  815. #define LCDC_RASTER_TIMING_1_VBP                                        (0xFF000000u)
  816. #define LCDC_RASTER_TIMING_1_VBP_SHIFT                                  (0x00000018u)
  817. #define LCDC_RASTER_TIMING_1_VFP                                        (0x00FF0000u)
  818. #define LCDC_RASTER_TIMING_1_VFP_SHIFT                                  (0x00000010u)
  819. #define LCDC_RASTER_TIMING_1_VSW                                        (0x0000FC00u)
  820. #define LCDC_RASTER_TIMING_1_VSW_SHIFT                                  (0x0000000Au)

  821. /* RASTER_TIMING_2 */
  822. #define LCDC_RASTER_TIMING_2                                            (0x34)
  823. #define LCDC_RASTER_TIMING_2_ACB                                        (0x0000FF00u)
  824. #define LCDC_RASTER_TIMING_2_ACB_SHIFT                                  (0x00000008u)
  825. #define LCDC_RASTER_TIMING_2_ACB_I                                      (0x000F0000u)
  826. #define LCDC_RASTER_TIMING_2_ACB_I_SHIFT                                (0x00000010u)
  827. #define LCDC_RASTER_TIMING_2_BIAS                                       (0x00800000u)
  828. #define LCDC_RASTER_TIMING_2_BIAS_SHIFT                                 (0x00000017u)
  829. #define LCDC_RASTER_TIMING_2_BIAS_ACTIVE_HIGH                           (0x0u)
  830. #define LCDC_RASTER_TIMING_2_BIAS_ACTIVE_LOW                            (0x1u)
  831. #define LCDC_RASTER_TIMING_2_HBP_HIGHBITS                               (0x00000030u)
  832. #define LCDC_RASTER_TIMING_2_HBP_HIGHBITS_SHIFT                         (0x00000006u)
  833. #define LCDC_RASTER_TIMING_2_HFP_HIGHBITS                               (0x00000003u)
  834. #define LCDC_RASTER_TIMING_2_HFP_HIGHBITS_SHIFT                         (0x00000000u)
  835. #define LCDC_RASTER_TIMING_2_IEO                                        (0x00800000u)
  836. #define LCDC_RASTER_TIMING_2_IEO_SHIFT                                  (0x00000017u)
  837. #define LCDC_RASTER_TIMING_2_IEO_ACTIVE_HIGH                            (0x0u)
  838. #define LCDC_RASTER_TIMING_2_IEO_ACTIVE_LOW                             (0x1u)
  839. #define LCDC_RASTER_TIMING_2_IHS                                        (0x00200000u)
  840. #define LCDC_RASTER_TIMING_2_IHS_SHIFT                                  (0x00000015u)
  841. #define LCDC_RASTER_TIMING_2_IHS_ACTIVE_HIGH                            (0x0u)
  842. #define LCDC_RASTER_TIMING_2_IHS_ACTIVE_LOW                             (0x1u)
  843. #define LCDC_RASTER_TIMING_2_IPC                                        (0x00400000u)
  844. #define LCDC_RASTER_TIMING_2_IPC_SHIFT                                  (0x00000016u)
  845. #define LCDC_RASTER_TIMING_2_IPC_FALLING                                (0x1u)
  846. #define LCDC_RASTER_TIMING_2_IPC_RISING                                 (0x0u)
  847. #define LCDC_RASTER_TIMING_2_IVS                                        (0x00100000u)
  848. #define LCDC_RASTER_TIMING_2_IVS_SHIFT                                  (0x00000014u)
  849. #define LCDC_RASTER_TIMING_2_IVS_ACTIVE_HIGH                            (0x0u)
  850. #define LCDC_RASTER_TIMING_2_IVS_ACTIVE_LOW                             (0x1u)
  851. #define LCDC_RASTER_TIMING_2_LPP_B10                                    (0x04000000u)
  852. #define LCDC_RASTER_TIMING_2_LPP_B10_SHIFT                              (0x0000001Au)
  853. #define LCDC_RASTER_TIMING_2_PHSVS_ON_OFF                               (0x02000000u)
  854. #define LCDC_RASTER_TIMING_2_PHSVS_ON_OFF_SHIFT                         (0x00000019u)
  855. #define LCDC_RASTER_TIMING_2_PHSVS_ON_OFF_BIT24                         (0x1u)
  856. #define LCDC_RASTER_TIMING_2_PHSVS_ON_OFF_OPPOSITE_EDGE                 (0x0u)
  857. #define LCDC_RASTER_TIMING_2_PHSVS_RF                                   (0x01000000u)
  858. #define LCDC_RASTER_TIMING_2_PHSVS_RF_SHIFT                             (0x00000018u)
  859. #define LCDC_RASTER_TIMING_2_PHSVS_RF_FALLING                           (0x0u)
  860. #define LCDC_RASTER_TIMING_2_PHSVS_RF_RISING                            (0x1u)
  861. #define LCDC_RASTER_TIMING_2_SYNC_CTRL                                  (0x02000000u)
  862. #define LCDC_RASTER_TIMING_2_SYNC_CTRL_SHIFT                            (0x00000019u)
  863. #define LCDC_RASTER_TIMING_2_SYNC_CTRL_BIT24                            (0x1u)
  864. #define LCDC_RASTER_TIMING_2_SYNC_CTRL_OPPOSITE_EDGE                    (0x0u)
  865. #define LCDC_RASTER_TIMING_2_SYNC_EDGE                                  (0x01000000u)
  866. #define LCDC_RASTER_TIMING_2_SYNC_EDGE_SHIFT                            (0x00000018u)
  867. #define LCDC_RASTER_TIMING_2_SYNC_EDGE_FALLING                          (0x0u)
  868. #define LCDC_RASTER_TIMING_2_SYNC_EDGE_RISING                           (0x1u)

  869. /* LCDDMA_FB0_BASE */
  870. #define LCDC_LCDDMA_FB0_BASE                                            (0x44)
  871. #define LCDC_LCDDMA_FB0_BASE_FB0_BASE                                   (0xFFFFFFFCu)
  872. #define LCDC_LCDDMA_FB0_BASE_FB0_BASE_SHIFT                             (0x00000002u)

  873. /* LCDDMA_FB0_CEILING */
  874. #define LCDC_LCDDMA_FB0_CEILING                                         (0x48)
  875. #define LCDC_LCDDMA_FB0_CEILING_FB0_CEIL                                (0xFFFFFFFCu)
  876. #define LCDC_LCDDMA_FB0_CEILING_FB0_CEIL_SHIFT                          (0x00000002u)

  877. /* LCDDMA_FB1_BASE */
  878. #define LCDC_LCDDMA_FB1_BASE                                            (0x4C)
  879. #define LCDC_LCDDMA_FB1_BASE_FB1_BASE                                   (0xFFFFFFFCu)
  880. #define LCDC_LCDDMA_FB1_BASE_FB1_BASE_SHIFT                             (0x00000002u)

  881. /* LCDDMA_FB1_CEILING */
  882. #define LCDC_LCDDMA_FB1_CEILING                                         (0x50)
  883. #define LCDC_LCDDMA_FB1_CEILING_FB1_CEIL                                (0xFFFFFFFCu)
  884. #define LCDC_LCDDMA_FB1_CEILING_FB1_CEIL_SHIFT                          (0x00000002u)

  885. #define LCDC_IRQENABLE_SET                                              (0x60)
  886. #define LCDC_IRQENABLE_SET_EOF0                                         (0x00000100u)
  887. #define LCDC_IRQENABLE_SET_EOF1                                         (0x00000200u)

  888. #define LCDC_IRQSTATUS                                                  (0x5C)
  889. #define LCDC_IRQSTATUS_EOF0                                             (0x00000100u)
  890. #define LCDC_IRQSTATUS_EOF1                                             (0x00000200u)

  891. #define SOC_PRCM_REGS                                                   (0x44E00000)
  892. #define SOC_CM_DPLL_REGS                                                (SOC_PRCM_REGS + 0x500)
  893. #define SOC_CONTROL_REGS                                                (0x44E10000)
  894. #define SOC_LCDC_0_REGS                                                 (0x4830E000)

  895. // RasterModeConfig, displayType
  896. #define RASTER_DISPLAY_MODE_TFT                                         (1 << LCDC_RASTER_CTRL_TFT_STN_SHIFT)
  897. #define RASTER_DISPLAY_MODE_STN                                         0
  898. #define RASTER_DISPLAY_MODE_TFT_PACKED                                  (1 << LCDC_RASTER_CTRL_TFT_STN_SHIFT)|\
  899.                                                                         (1 << LCDC_RASTER_CTRL_TFT24_SHIFT)
  900. #define RASTER_DISPLAY_MODE_TFT_UNPACKED                                (1 << LCDC_RASTER_CTRL_TFT_STN_SHIFT)|\
  901.                                                                         (1 << LCDC_RASTER_CTRL_TFT24_SHIFT) |\
  902.                                                                         (1 << LCDC_RASTER_CTRL_TFT24UNPACKED_SHIFT)

  903. // RasterModeConfig, paletteMode
  904. #define RASTER_PALETTE_DATA                                               0
  905. #define RASTER_PALETTE                                                  (1 << LCDC_RASTER_CTRL_PLM_SHIFT)
  906. #define RASTER_DATA                                                     (2 << LCDC_RASTER_CTRL_PLM_SHIFT)

  907. // RasterModeConfig, displayMode
  908. #define RASTER_COLOR                                                    0
  909. #define RASTER_MONOCHROME                                               (1 << LCDC_RASTER_CTRL_MONO_COLOR_SHIFT)

  910. // RasterModeConfig, signal mappping
  911. #define RASTER_RIGHT_ALIGNED                                            0
  912. #define RASTER_EXTRAPOLATE                                              (1 << LCDC_RASTER_CTRL_TFT_ALT_MAP_SHIFT)

  913. // RasterModeConfig, number of bits for each pixel clock
  914. #define RASTER_MONO8B                                                   (1 << LCDC_RASTER_CTRL_MONO8B_SHIFT)
  915. #define RASTER_MONO4B                                                   0

  916. // RasterDMAConfig, single frame buffer or double frame buffer
  917. #define RASTER_SINGLE_FRAME_BUFFER                                      0
  918. #define RASTER_DOUBLE_FRAME_BUFFER                                      LCDC_LCDDMA_CTRL_FRAME_MODE

  919. // RasterDMAConfig, endianess
  920. #define RASTER_BIG_ENDIAN_ENABLE                                        (1 << LCDC_LCDDMA_CTRL_BIGENDIAN_SHIFT)
  921. #define RASTER_BIG_ENDIAN_DISABLE                                       0

  922. // RasterDMAConfig, burst size
  923. #define RASTER_BURST_SIZE_1                                             0
  924. #define RASTER_BURST_SIZE_2                                             (1 <<  LCDC_LCDDMA_CTRL_BURST_SIZE_SHIFT)
  925. #define RASTER_BURST_SIZE_4                                             (2 <<  LCDC_LCDDMA_CTRL_BURST_SIZE_SHIFT)
  926. #define RASTER_BURST_SIZE_8                                             (3 <<  LCDC_LCDDMA_CTRL_BURST_SIZE_SHIFT)
  927. #define RASTER_BURST_SIZE_16                                            (4 <<  LCDC_LCDDMA_CTRL_BURST_SIZE_SHIFT)

  928. // RasterDMAConfig, DMA fifo threshold
  929. #define RASTER_FIFO_THRESHOLD_8                                         (0 << LCDC_LCDDMA_CTRL_TH_FIFO_READY_SHIFT)
  930. #define RASTER_FIFO_THRESHOLD_16                                        (1 << LCDC_LCDDMA_CTRL_TH_FIFO_READY_SHIFT)
  931. #define RASTER_FIFO_THRESHOLD_32                                        (2 << LCDC_LCDDMA_CTRL_TH_FIFO_READY_SHIFT)
  932. #define RASTER_FIFO_THRESHOLD_64                                        (3 << LCDC_LCDDMA_CTRL_TH_FIFO_READY_SHIFT)
  933. #define RASTER_FIFO_THRESHOLD_128                                       (4 << LCDC_LCDDMA_CTRL_TH_FIFO_READY_SHIFT)
  934. #define RASTER_FIFO_THRESHOLD_256                                       (5 << LCDC_LCDDMA_CTRL_TH_FIFO_READY_SHIFT)
  935. #define RASTER_FIFO_THRESHOLD_512                                       (6 << LCDC_LCDDMA_CTRL_TH_FIFO_READY_SHIFT)

  936. // RasterTiming2Configure
  937. #define RASTER_FRAME_CLOCK_HIGH                                         0
  938. #define RASTER_FRAME_CLOCK_LOW                                          LCDC_RASTER_TIMING_2_IVS
  939. #define RASTER_LINE_CLOCK_HIGH                                          0
  940. #define RASTER_LINE_CLOCK_LOW                                           LCDC_RASTER_TIMING_2_IHS
  941. #define RASTER_PIXEL_CLOCK_HIGH                                         0
  942. #define RASTER_PIXEL_CLOCK_LOW                                          LCDC_RASTER_TIMING_2_IPC
  943. #define RASTER_AC_BIAS_HIGH                                             0
  944. #define RASTER_AC_BIAS_LOW                                              LCDC_RASTER_TIMING_2_BIAS
  945. #define RASTER_SYNC_EDGE_RISING                                         0
  946. #define RASTER_SYNC_EDGE_FALLING                                        LCDC_RASTER_TIMING_2_SYNC_EDGE
  947. #define RASTER_SYNC_CTRL_ACTIVE                                         LCDC_RASTER_TIMING_2_SYNC_CTRL
  948. #define RASTER_SYNC_CTRL_INACTIVE                                       0

  949. // RasterIntEnable
  950. #define RASTER_ACBIAS_COUNT_INT                                         LCDC_IRQENABLE_SET_ACB
  951. #define RASTER_FRAME_DONE_INT                                           LCDC_IRQENABLE_SET_DONE
  952. #define RASTER_PALETTE_LOADED_INT                                       LCDC_IRQENABLE_SET_PL
  953. #define RASTER_SYNC_LOST_INT                                            LCDC_IRQENABLE_SET_SYNC
  954. #define RASTER_FIFO_UNDRFLOW_INT                                        LCDC_IRQENABLE_SET_FUF
  955. #define RASTER_DONE_INT                                                 LCDC_IRQENABLE_SET_RECURRENT_RASTER
  956. #define RASTER_END_OF_FRAME0_INT                                        LCDC_IRQENABLE_SET_EOF0
  957. #define RASTER_END_OF_FRAME1_INT                                        LCDC_IRQENABLE_SET_EOF1

  958. // RasterIntSatus
  959. #define RASTER_FRAME_DONE_INT_STAT                                      LCDC_IRQSTATUS_DONE
  960. #define RASTER_SYNC_LOST_INT_STAT                                       LCDC_IRQSTATUS_SYNC
  961. #define RASTER_ACBIAS_COUNT_INT_STAT                                    LCDC_IRQSTATUS_ACB
  962. #define RASTER_FIFO_UNDERFLOW_INT_STAT                                  LCDC_IRQSTATUS_FUF
  963. #define RASTER_PALETTE_LOADED_INT_STAT                                  LCDC_IRQSTATUS_PL
  964. #define RASTER_END_OF_FRAME0_INT_STAT                                   LCDC_IRQSTATUS_EOF0
  965. #define RASTER_END_OF_FRAME1_INT_STAT                                   LCDC_IRQSTATUS_EOF1

  966. /*********************************************************************
  967. *
  968. *       Static data
  969. *
  970. **********************************************************************
  971. */
  972. static int _PendingBuffer;

  973. _Pragma("location="VRAM"")

  974. static unsigned long _aVRAM[XSIZE_PHYS * YSIZE_PHYS * NUM_VSCREENS * NUM_BUFFERS];

  975. /*********************************************************************
  976. *
  977. *       Static code
  978. *
  979. **********************************************************************
  980. */
  981. /*********************************************************************
  982. *
  983. *       _LCDModuleClkConfig
  984. */
  985. static void _LCDModuleClkConfig(void) {
  986.   HWREG(SOC_PRCM_REGS + CM_PER_L3S_CLKSTCTRL)      |= CM_PER_L3S_CLKSTCTRL_CLKTRCTRL_SW_WKUP;
  987.   while((HWREG(SOC_PRCM_REGS + CM_PER_L3S_CLKSTCTRL) & CM_PER_L3S_CLKSTCTRL_CLKTRCTRL)
  988.                                                    != CM_PER_L3S_CLKSTCTRL_CLKTRCTRL_SW_WKUP);
  989.   HWREG(SOC_PRCM_REGS + CM_PER_L3_CLKSTCTRL)       |= CM_PER_L3_CLKSTCTRL_CLKTRCTRL_SW_WKUP;
  990.   while((HWREG(SOC_PRCM_REGS + CM_PER_L3_CLKSTCTRL) & CM_PER_L3_CLKSTCTRL_CLKTRCTRL)
  991.                                                    != CM_PER_L3_CLKSTCTRL_CLKTRCTRL_SW_WKUP);
  992.   HWREG(SOC_PRCM_REGS + CM_PER_L3_INSTR_CLKCTRL)   |= CM_PER_L3_INSTR_CLKCTRL_MODULEMODE_ENABLE;
  993.   while((HWREG(SOC_PRCM_REGS + CM_PER_L3_INSTR_CLKCTRL) & CM_PER_L3_INSTR_CLKCTRL_MODULEMODE)
  994.                                                    != CM_PER_L3_INSTR_CLKCTRL_MODULEMODE_ENABLE);
  995.   HWREG(SOC_PRCM_REGS + CM_PER_L3_CLKCTRL)         |= CM_PER_L3_CLKCTRL_MODULEMODE_ENABLE;
  996.   while((HWREG(SOC_PRCM_REGS + CM_PER_L3_CLKCTRL) & CM_PER_L3_CLKCTRL_MODULEMODE)
  997.                                                    != CM_PER_L3_CLKCTRL_MODULEMODE_ENABLE);
  998.   HWREG(SOC_PRCM_REGS + CM_PER_OCPWP_L3_CLKSTCTRL) |= CM_PER_OCPWP_L3_CLKSTCTRL_CLKTRCTRL_SW_WKUP;
  999.   while((HWREG(SOC_PRCM_REGS + CM_PER_OCPWP_L3_CLKSTCTRL) & CM_PER_OCPWP_L3_CLKSTCTRL_CLKTRCTRL)
  1000.                                                    != CM_PER_OCPWP_L3_CLKSTCTRL_CLKTRCTRL_SW_WKUP);
  1001.   HWREG(SOC_PRCM_REGS + CM_PER_L4LS_CLKSTCTRL)     |= CM_PER_L4LS_CLKSTCTRL_CLKTRCTRL_SW_WKUP;
  1002.   while((HWREG(SOC_PRCM_REGS + CM_PER_L4LS_CLKSTCTRL) & CM_PER_L4LS_CLKSTCTRL_CLKTRCTRL)
  1003.                                                    != CM_PER_L4LS_CLKSTCTRL_CLKTRCTRL_SW_WKUP);
  1004.   HWREG(SOC_PRCM_REGS + CM_PER_L4LS_CLKCTRL)       |= CM_PER_L4LS_CLKCTRL_MODULEMODE_ENABLE;
  1005.   while((HWREG(SOC_PRCM_REGS + CM_PER_L4LS_CLKCTRL) & CM_PER_L4LS_CLKCTRL_MODULEMODE)
  1006.                                                    != CM_PER_L4LS_CLKCTRL_MODULEMODE_ENABLE);
  1007.   //
  1008.   // lcd pixel clock is derived from peripheral pll
  1009.   //
  1010.   HWREG(SOC_CM_DPLL_REGS + CM_DPLL_CLKSEL_LCDC_PIXEL_CLK) = CM_DPLL_CLKSEL_LCDC_PIXEL_CLK_CLKSEL_SEL3;
  1011.   HWREG(SOC_PRCM_REGS + CM_PER_LCDC_CLKCTRL) |= CM_PER_LCDC_CLKCTRL_MODULEMODE_ENABLE;
  1012.   while( (HWREG(SOC_PRCM_REGS + CM_PER_LCDC_CLKCTRL) & CM_PER_LCDC_CLKCTRL_MODULEMODE) != CM_PER_LCDC_CLKCTRL_MODULEMODE_ENABLE);
  1013.   while(!(HWREG(SOC_PRCM_REGS + CM_PER_L3S_CLKSTCTRL) & CM_PER_L3S_CLKSTCTRL_CLKACTIVITY_L3S_GCLK));
  1014.   while(!(HWREG(SOC_PRCM_REGS + CM_PER_L3_CLKSTCTRL) & CM_PER_L3_CLKSTCTRL_CLKACTIVITY_L3_GCLK));
  1015.   while(!(HWREG(SOC_PRCM_REGS + CM_PER_OCPWP_L3_CLKSTCTRL) & (CM_PER_OCPWP_L3_CLKSTCTRL_CLKACTIVITY_OCPWP_L3_GCLK | CM_PER_OCPWP_L3_CLKSTCTRL_CLKACTIVITY_OCPWP_L4_GCLK)));
  1016.   while(!(HWREG(SOC_PRCM_REGS + CM_PER_L4LS_CLKSTCTRL) & (CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_L4LS_GCLK | CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_LCDC_GCLK)));
  1017. }


  1018. /*********************************************************************
  1019. *
  1020. *       _LCDPinMuxSetup
  1021. */
  1022. static void _LCDPinMuxSetup(void) {
  1023.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_DATA(0)) =    (0 << CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_MMODE_SHIFT)    |
  1024.                                                           (1 << CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_PUDEN_SHIFT)    |
  1025.                                                           (0 << CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_PUTYPESEL_SHIFT)|
  1026.                                                           (1 << CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_RXACTIVE_SHIFT) |
  1027.                                                           (0 << CONTROL_CONF_LCD_DATA0_CONF_LCD_DATA0_SLEWCTRL_SHIFT);

  1028.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_DATA(1)) =    (0 << CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_MMODE_SHIFT)    |
  1029.                                                           (1 << CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_PUDEN_SHIFT)    |
  1030.                                                           (0 << CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_PUTYPESEL_SHIFT)|
  1031.                                                           (1 << CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_RXACTIVE_SHIFT) |
  1032.                                                           (0 << CONTROL_CONF_LCD_DATA1_CONF_LCD_DATA1_SLEWCTRL_SHIFT);

  1033.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_DATA(2)) =    (0 << CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_MMODE_SHIFT)    |
  1034.                                                           (1 << CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_PUDEN_SHIFT)    |
  1035.                                                           (0 << CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_PUTYPESEL_SHIFT)|
  1036.                                                           (1 << CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_RXACTIVE_SHIFT) |
  1037.                                                           (0 << CONTROL_CONF_LCD_DATA2_CONF_LCD_DATA2_SLEWCTRL_SHIFT);

  1038.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_DATA(3)) =    (0 << CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_MMODE_SHIFT)    |
  1039.                                                           (1 << CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_PUDEN_SHIFT)    |
  1040.                                                           (0 << CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_PUTYPESEL_SHIFT)|
  1041.                                                           (1 << CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_RXACTIVE_SHIFT) |
  1042.                                                           (0 << CONTROL_CONF_LCD_DATA3_CONF_LCD_DATA3_SLEWCTRL_SHIFT);

  1043.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_DATA(4)) =    (0 << CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_MMODE_SHIFT)    |
  1044.                                                           (1 << CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_PUDEN_SHIFT)    |
  1045.                                                           (0 << CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_PUTYPESEL_SHIFT)|
  1046.                                                           (1 << CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_RXACTIVE_SHIFT) |
  1047.                                                           (0 << CONTROL_CONF_LCD_DATA4_CONF_LCD_DATA4_SLEWCTRL_SHIFT);

  1048.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_DATA(5)) =    (0 << CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_MMODE_SHIFT)    |
  1049.                                                           (1 << CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_PUDEN_SHIFT)    |
  1050.                                                           (0 << CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_PUTYPESEL_SHIFT)|
  1051.                                                           (1 << CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_RXACTIVE_SHIFT) |
  1052.                                                           (0 << CONTROL_CONF_LCD_DATA5_CONF_LCD_DATA5_SLEWCTRL_SHIFT);

  1053.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_DATA(6)) =    (0 << CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_MMODE_SHIFT)    |
  1054.                                                           (1 << CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_PUDEN_SHIFT)    |
  1055.                                                           (0 << CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_PUTYPESEL_SHIFT)|
  1056.                                                           (1 << CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_RXACTIVE_SHIFT) |
  1057.                                                           (0 << CONTROL_CONF_LCD_DATA6_CONF_LCD_DATA6_SLEWCTRL_SHIFT);

  1058.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_DATA(7)) =    (0 << CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_MMODE_SHIFT)    |
  1059.                                                           (1 << CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_PUDEN_SHIFT)    |
  1060.                                                           (0 << CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_PUTYPESEL_SHIFT)|
  1061.                                                           (1 << CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_RXACTIVE_SHIFT) |
  1062.                                                           (0 << CONTROL_CONF_LCD_DATA7_CONF_LCD_DATA7_SLEWCTRL_SHIFT);

  1063.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_DATA(8)) =    (0 << CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_MMODE_SHIFT)    |
  1064.                                                           (1 << CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_PUDEN_SHIFT)    |
  1065.                                                           (0 << CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_PUTYPESEL_SHIFT)|
  1066.                                                           (1 << CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_RXACTIVE_SHIFT) |
  1067.                                                           (0 << CONTROL_CONF_LCD_DATA8_CONF_LCD_DATA8_SLEWCTRL_SHIFT);

  1068.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_DATA(9)) =    (0 << CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_MMODE_SHIFT)    |
  1069.                                                           (1 << CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_PUDEN_SHIFT)    |
  1070.                                                           (0 << CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_PUTYPESEL_SHIFT)|
  1071.                                                           (1 << CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_RXACTIVE_SHIFT) |
  1072.                                                           (0 << CONTROL_CONF_LCD_DATA9_CONF_LCD_DATA9_SLEWCTRL_SHIFT);

  1073.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_DATA(10)) =   (0 << CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_MMODE_SHIFT)    |
  1074.                                                           (1 << CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_PUDEN_SHIFT)    |
  1075.                                                           (0 << CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_PUTYPESEL_SHIFT)|
  1076.                                                           (1 << CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_RXACTIVE_SHIFT) |
  1077.                                                           (0 << CONTROL_CONF_LCD_DATA10_CONF_LCD_DATA10_SLEWCTRL_SHIFT);

  1078.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_DATA(11)) =   (0 << CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_MMODE_SHIFT)     |
  1079.                                                           (1 << CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_PUDEN_SHIFT)     |
  1080.                                                           (0 << CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_PUTYPESEL_SHIFT) |
  1081.                                                           (1 << CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_RXACTIVE_SHIFT)  |
  1082.                                                           (0 << CONTROL_CONF_LCD_DATA11_CONF_LCD_DATA11_SLEWCTRL_SHIFT);

  1083.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_DATA(12)) =   (0 << CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_MMODE_SHIFT)     |
  1084.                                                           (1 << CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_PUDEN_SHIFT)     |
  1085.                                                           (0 << CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_PUTYPESEL_SHIFT) |
  1086.                                                           (1 << CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_RXACTIVE_SHIFT)  |
  1087.                                                           (0 << CONTROL_CONF_LCD_DATA12_CONF_LCD_DATA12_SLEWCTRL_SHIFT);

  1088.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_DATA(13)) =   (0 << CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_MMODE_SHIFT)     |
  1089.                                                           (1 << CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_PUDEN_SHIFT)     |
  1090.                                                           (0 << CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_PUTYPESEL_SHIFT) |
  1091.                                                           (1 << CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_RXACTIVE_SHIFT)  |
  1092.                                                           (0 << CONTROL_CONF_LCD_DATA13_CONF_LCD_DATA13_SLEWCTRL_SHIFT);

  1093.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_DATA(14)) =   (0 << CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_MMODE_SHIFT)     |
  1094.                                                           (1 << CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_PUDEN_SHIFT)     |
  1095.                                                           (0 << CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_PUTYPESEL_SHIFT) |
  1096.                                                           (1 << CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_RXACTIVE_SHIFT)  |
  1097.                                                           (0 << CONTROL_CONF_LCD_DATA14_CONF_LCD_DATA14_SLEWCTRL_SHIFT);

  1098.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_DATA(15)) =   (0 << CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_MMODE_SHIFT)     |
  1099.                                                           (1 << CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_PUDEN_SHIFT)     |
  1100.                                                           (0 << CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_PUTYPESEL_SHIFT) |
  1101.                                                           (1 << CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_RXACTIVE_SHIFT)  |
  1102.                                                           (0 << CONTROL_CONF_LCD_DATA15_CONF_LCD_DATA15_SLEWCTRL_SHIFT);

  1103.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(15) ) =   (1 << CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_MMODE_SHIFT)     |
  1104.                                                           (0 << CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_PUDEN_SHIFT)     |
  1105.                                                           (0 << CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_PUTYPESEL_SHIFT) |
  1106.                                                           (1 << CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_RXACTIVE_SHIFT)  |
  1107.                                                           (0 << CONTROL_CONF_LCD_DATA16_CONF_LCD_DATA16_SLEWCTRL_SHIFT);

  1108.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(14) ) =   (1 << CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_MMODE_SHIFT)     |
  1109.                                                           (0 << CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_PUDEN_SHIFT)     |
  1110.                                                           (0 << CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_PUTYPESEL_SHIFT) |
  1111.                                                           (1<< CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_RXACTIVE_SHIFT)   |
  1112.                                                           (0 << CONTROL_CONF_LCD_DATA17_CONF_LCD_DATA17_SLEWCTRL_SHIFT);

  1113.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(13) ) =   (1 << CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_MMODE_SHIFT)     |
  1114.                                                           (0 << CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_PUDEN_SHIFT)     |
  1115.                                                           (0 << CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_PUTYPESEL_SHIFT) |
  1116.                                                           (1 << CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_RXACTIVE_SHIFT)  |
  1117.                                                           (0 << CONTROL_CONF_LCD_DATA18_CONF_LCD_DATA18_SLEWCTRL_SHIFT);

  1118.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(12) ) =   (1 << CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_MMODE_SHIFT)     |
  1119.                                                           (0 << CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_PUDEN_SHIFT)     |
  1120.                                                           (0 << CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_PUTYPESEL_SHIFT) |
  1121.                                                           (1<< CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_RXACTIVE_SHIFT)   |
  1122.                                                           (0 << CONTROL_CONF_LCD_DATA19_CONF_LCD_DATA19_SLEWCTRL_SHIFT);

  1123.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(11) ) =   (1 << CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_MMODE_SHIFT)     |
  1124.                                                           (0 << CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_PUDEN_SHIFT)     |
  1125.                                                           (0 << CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_PUTYPESEL_SHIFT) |
  1126.                                                           (1<< CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_RXACTIVE_SHIFT)   |
  1127.                                                           (0 << CONTROL_CONF_LCD_DATA20_CONF_LCD_DATA20_SLEWCTRL_SHIFT);

  1128.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(10) ) =   (1 << CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_MMODE_SHIFT)     |
  1129.                                                           (0 << CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_PUDEN_SHIFT)     |
  1130.                                                           (0 << CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_PUTYPESEL_SHIFT) |
  1131.                                                           (1 << CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_RXACTIVE_SHIFT)  |
  1132.                                                           (0 << CONTROL_CONF_LCD_DATA21_CONF_LCD_DATA21_SLEWCTRL_SHIFT);

  1133.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(9) ) =    (1 << CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_MMODE_SHIFT)     |
  1134.                                                           (0 << CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_PUDEN_SHIFT)     |
  1135.                                                           (0 << CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_PUTYPESEL_SHIFT) |
  1136.                                                           (1 << CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_RXACTIVE_SHIFT)  |
  1137.                                                           (0 << CONTROL_CONF_LCD_DATA22_CONF_LCD_DATA22_SLEWCTRL_SHIFT);

  1138.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(8) ) =    (1 << CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_MMODE_SHIFT)     |
  1139.                                                           (0 << CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_PUDEN_SHIFT)     |
  1140.                                                           (0 << CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_PUTYPESEL_SHIFT) |
  1141.                                                           (1 << CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_RXACTIVE_SHIFT)  |
  1142.                                                           (0 << CONTROL_CONF_LCD_DATA23_CONF_LCD_DATA23_SLEWCTRL_SHIFT);

  1143.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_VSYNC) =      (0 << CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_MMODE_SHIFT)     |
  1144.                                                           (0 << CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_PUDEN_SHIFT)     |
  1145.                                                           (0 << CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_PUTYPESEL_SHIFT) |
  1146.                                                           (1 << CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_RXACTIVE_SHIFT)  |
  1147.                                                           (0 << CONTROL_CONF_LCD_VSYNC_CONF_LCD_VSYNC_SLEWCTRL_SHIFT);

  1148.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_HSYNC) =      (0 << CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_MMODE_SHIFT)     |
  1149.                                                           (0 << CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_PUDEN_SHIFT)     |
  1150.                                                           (0 << CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_PUTYPESEL_SHIFT) |
  1151.                                                           (1 << CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_RXACTIVE_SHIFT)  |
  1152.                                                           (0 << CONTROL_CONF_LCD_HSYNC_CONF_LCD_HSYNC_SLEWCTRL_SHIFT);

  1153.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_PCLK) =       (0 << CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_MMODE_SHIFT)     |
  1154.                                                           (0 << CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_PUDEN_SHIFT)     |
  1155.                                                           (0 << CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_PUTYPESEL_SHIFT) |
  1156.                                                           (1 << CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_RXACTIVE_SHIFT)  |
  1157.                                                           (0 << CONTROL_CONF_LCD_PCLK_CONF_LCD_PCLK_SLEWCTRL_SHIFT);

  1158.   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_LCD_AC_BIAS_EN) = (0 << CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_MMODE_SHIFT)     |
  1159.                                                           (0 << CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_PUDEN_SHIFT)     |
  1160.                                                           (0 << CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_PUTYPESEL_SHIFT) |
  1161.                                                           (1 << CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_RXACTIVE_SHIFT)  |
  1162.                                                           (0 << CONTROL_CONF_LCD_AC_BIAS_EN_CONF_LCD_AC_BIAS_EN_SLEWCTRL_SHIFT);
  1163. }

  1164. /*********************************************************************
  1165. *
  1166. *       _RasterClocksEnable
  1167. */
  1168. static void _RasterClocksEnable(unsigned int baseAddr) {
  1169.   HWREG(baseAddr + LCDC_CLKC_ENABLE) = ( LCDC_CLKC_ENABLE_CORE | LCDC_CLKC_ENABLE_DMA  | LCDC_CLKC_ENABLE_LIDD );
  1170. }

  1171. /*********************************************************************
  1172. *
  1173. *       _RasterClkConfig
  1174. *
  1175. * Purpose:
  1176. *   This function configures clkdiv to generate required frequency of
  1177. *   of pixel clock and selects the raster control.
  1178. *
  1179. * Parameters:
  1180. *   baseAddr -  Memory address of LCD
  1181. *   pClk     -  Required Pixel Clock frequency
  1182. *   modulck  -  Input clk to LCD module from PLL
  1183. *
  1184. */
  1185. static void _RasterClkConfig(unsigned int baseAddr, unsigned int pClk, unsigned int moduleClk) {
  1186.     unsigned int clkDiv;

  1187.     clkDiv = moduleClk / pClk ;
  1188.     HWREG(baseAddr + LCDC_LCD_CTRL) = LCDC_LCD_CTRL_MODESEL;
  1189.     HWREG(baseAddr + LCDC_LCD_CTRL) |= (clkDiv <<  LCDC_LCD_CTRL_CLKDIV_SHIFT);
  1190. }

  1191. /*********************************************************************
  1192. *
  1193. *       _RasterDMAConfig
  1194. *
  1195. * Purpose:
  1196. *   Configures DMA present inside LCD controller.
  1197. *
  1198. * Parameters:
  1199. *   baseAddr - Memory address of LCD module.
  1200. *
  1201. *   frmMode  - Value which detemines either to use single frame
  1202. *              or double frame buffer
  1203. *
  1204. *              RASTER_SINGLE_FRAME_BUFFER - single frame buffer
  1205. *              RASTER_DOUBLE_FRAME_BUFFER - double frame buffer
  1206. *
  1207. *   bustSz   - Value which detemines burst size of DMA
  1208. *
  1209. *              RASTER_BURST_SIZE_1   -  burst size of DMA is one
  1210. *              RASTER_BURST_SIZE_2   -  burst size of DMA is two
  1211. *              RASTER_BURST_SIZE_4   -  burst size of DMA is four
  1212. *              RASTER_BURST_SIZE_16  -  burst size of DMA is sixteen
  1213. *
  1214. *   fifoTh   - Value which detemines when the input FIFO can be
  1215. *              read by raster controller
  1216. *
  1217. *              RASTER_FIFO_THRESHOLD_8    -   DMA FIFO Threshold is eight
  1218. *              RASTER_FIFO_THRESHOLD_16   -   DMA FIFO Threshold is sixteen
  1219. *              RASTER_FIFO_THRESHOLD_32   -   DMA FIFO Threshold is thirtytwo
  1220. *              RASTER_FIFO_THRESHOLD_64   -   DMA FIFO Threshold is sixtyfour
  1221. *              RASTER_FIFO_THRESHOLD_128  -   DMA FIFO Threshold is one twenty eight
  1222. *              RASTER_FIFO_THRESHOLD_256  -   DMA FIFO Threshold is two fifty six
  1223. *              RASTER_FIFO_THRESHOLD_512  -   DMA FIFO Threshold is five twelve
  1224. *
  1225. *   endian   - Value determines whether to use big endian for data
  1226. *              reordering or not
  1227. *
  1228. *              RASTER_BIG_ENDIAN_ENABLE - big endian enabled
  1229. *              RASTER_BIG_ENDIAN_ENABLE - big endian disabled
  1230. */
  1231. static void _RasterDMAConfig(unsigned int baseAddr, unsigned int frmMode,  unsigned int bustSz, unsigned int fifoTh, unsigned int endian) {
  1232.     HWREG(baseAddr + LCDC_LCDDMA_CTRL) = frmMode | bustSz | fifoTh | endian;
  1233. }

  1234. /*********************************************************************
  1235. *
  1236. *       _RasterModeConfig
  1237. * Purpose:
  1238. *   This function will configures LCD to MonoChrome or color mode,
  1239. *   TFT or STN mode and palette loading mode.
  1240. *
  1241. * Parameters:
  1242. *   baseAddr    - Memory address of the LCD
  1243. *   displayMode - Value to select either TFT or STN mode
  1244. *
  1245. *                 RASTER_DISPLAY_MODE_TFT  -  TFT mode is selected
  1246. *                 RASTER_DISPLAY_MODE_STN  -  STN mode is selected
  1247. *                 RASTER_DISPLAY_MODE_TFT_PACKED   - TFT mode is selected with
  1248. *                                                     24 bit packed data support.
  1249. *                 RASTER_DISPLAY_MODE_TFT_UNPACKED - TFT mode is selected with
  1250. *                                                    24 bit unpacked data support
  1251. *
  1252. *   displayType - Value to select either color or monochrome mode
  1253. *
  1254. *                 RASTER_MONOCHROME  - monochrome mode is selected
  1255. *                 RASTER_COLOR       - color mode is selected
  1256. *
  1257. *   paletteMode - Value to select type of palette loading
  1258. *
  1259. *                 RASTER_PALETTE_DATA   - palette and data is loaded
  1260. *                 RASTER_PALETTE        - only palette is loaded
  1261. *                 RASTER_DATA           - only data is loaded
  1262. *
  1263. *   flag        - Optional argument depending on the display mode and type
  1264. *
  1265. *                 RASTER_RIGHT_ALIGNED - Right aligned output pixel data
  1266. *                 RASTER_EXTRAPOLATE   - Extrapolated (to RGB565) output pixel data
  1267. *                 RASTER_MONO8B        - Output 8 bit mono pixel data
  1268. *                 RASTER_MONO4B        - Output 4 bit mono pixel data
  1269. */
  1270. static void _RasterModeConfig(unsigned int baseAddr, unsigned int displayMode, unsigned int paletteMode, unsigned int displayType, unsigned flag) {
  1271.   //
  1272.   // Configures raster to TFT or STN Mode
  1273.   //
  1274.   HWREG(baseAddr + LCDC_RASTER_CTRL) = displayMode | paletteMode | displayType;
  1275.   if(displayMode ==  RASTER_DISPLAY_MODE_TFT) {
  1276.     if(flag == RASTER_RIGHT_ALIGNED) {
  1277.       //
  1278.       // Output pixel data for 1, 2, 4 and 8 bpp is converted to 565 format
  1279.       //
  1280.       HWREG(baseAddr + LCDC_RASTER_CTRL) &= ~(LCDC_RASTER_CTRL_TFT_ALT_MAP);
  1281.     } else {
  1282.       //
  1283.       // Output pixel data for 1, 2, 4 and 8 bpp will be right aligned
  1284.       //
  1285.       HWREG(baseAddr + LCDC_RASTER_CTRL) |= LCDC_RASTER_CTRL_TFT_ALT_MAP;
  1286.     }
  1287.   } else {
  1288.     if(flag ==  RASTER_MONO8B) {
  1289.       HWREG(baseAddr + LCDC_RASTER_CTRL) |= LCDC_RASTER_CTRL_MONO8B;
  1290.     } else {
  1291.       HWREG(baseAddr + LCDC_RASTER_CTRL) &= ~LCDC_RASTER_CTRL_MONO8B;
  1292.     }
  1293.   }
  1294. }

  1295. /*********************************************************************
  1296. *
  1297. *       _RasterTiming2Configure
  1298. *
  1299. * Purpose:
  1300. *   Configures the polartiy of various timing parameters of LCD Controller
  1301. *
  1302. * Parameters:
  1303. *   baseAddr - Memory Address of the LCD Module.
  1304. *
  1305. *   flag     - Value which detemines polarity of various timing
  1306. *              parameter of LCD controller
  1307. *
  1308. *              RASTER_FRAME_CLOCK_HIGH - active high frame clock
  1309. *              RASTER_FRAME_CLOCK_LOW  - active low frame clock
  1310. *              RASTER_LINE_CLOCK_HIGH  - active high line clock
  1311. *              RASTER_LINE_CLOCK_LOW   - active low line clock
  1312. *              RASTER_PIXEL_CLOCK_HIGH - active high pixel clock
  1313. *              RASTER_PIXEL_CLOCK_LOW  - active low pixel clock
  1314. *              RASTER_AC_BIAS_HIGH     - active high ac bias
  1315. *              RASTER_AC_BIAS_LOW      - active low ac bias
  1316. *              RASTER_SYNC_EDGE_RISING - rising sync edge
  1317. *              RASTER_SYNC_EDGE_FALLING- falling sync edge
  1318. *              RASTER_SYNC_CTRL_ACTIVE - active sync control
  1319. *              RASTER_SYNC_CTRL_INACTIVE-inactive sync control
  1320. *
  1321. *   acb_i    - Value which specify the number of AC Bias
  1322. *              (LCD_AC_ENB_CS) output transition counts before
  1323. *              setting the AC bias interrupt bit in register LCD_STAT
  1324. *
  1325. *   acb      - Value which defines the number of Line Clock
  1326. *              (LCD_HSYNC) cycles to count before transitioning
  1327. *              signal LCD_AC_ENB_CS
  1328. */
  1329. static void _RasterTiming2Configure(unsigned int baseAddr, unsigned int flag, unsigned int acb_i, unsigned int acb) {
  1330.     HWREG(baseAddr + LCDC_RASTER_TIMING_2) |= flag;
  1331.     HWREG(baseAddr + LCDC_RASTER_TIMING_2) |= (acb_i << LCDC_RASTER_TIMING_2_ACB_I_SHIFT);
  1332.     HWREG(baseAddr + LCDC_RASTER_TIMING_2) |= (acb   << LCDC_RASTER_TIMING_2_ACB_SHIFT);
  1333. }

  1334. /*********************************************************************
  1335. *
  1336. *       _RasterHparamConfig
  1337. *
  1338. * Purpose:
  1339. *   Configuers horizontal timing parametes and number of pixel per line
  1340. *
  1341. * Parameters:
  1342. *   baseAddr - Memory address of the LCD module
  1343. *   numOfppl - Value which determine no of pixel required per line
  1344. *   hsw      - Value which detemines the width of HSYNC
  1345. *   hfp      - Horizontal front porch
  1346. *   hbp      - Horizontal back porch
  1347. */
  1348. static void _RasterHparamConfig(unsigned int baseAddr, unsigned int numOfppl, unsigned int hsw, unsigned int hfp, unsigned hbp) {
  1349.   unsigned int ppl;

  1350.   ppl = numOfppl - 1;
  1351.   ppl = (ppl & 0x000003f0) | ((ppl & 0x00000400) >> 7);
  1352.   HWREG(baseAddr + LCDC_RASTER_TIMING_0) = ppl;
  1353.   HWREG(baseAddr + LCDC_RASTER_TIMING_0) |= (hsw - 1) << LCDC_RASTER_TIMING_0_HSW_SHIFT;
  1354.   HWREG(baseAddr + LCDC_RASTER_TIMING_0) |= (hfp - 1) << LCDC_RASTER_TIMING_0_HFP_SHIFT;
  1355.   HWREG(baseAddr + LCDC_RASTER_TIMING_0) |= (hbp - 1) << LCDC_RASTER_TIMING_0_HBP_SHIFT;
  1356. }

  1357. /*********************************************************************
  1358. *
  1359. *       _RasterVparamConfig
  1360. *
  1361. * Purpose:
  1362. *   Configuers vertical timing parameters and number of lines per panel
  1363. *
  1364. * Parameters:
  1365. *   baseAddr - Memory address of the LCD module
  1366. *   lpp      - Value which determine the lines per panel
  1367. *   vsw      - Value which detemines the width of VSYNC
  1368. *   vfp      - Vertical front porch
  1369. *   vbp      - Vertical back porch
  1370. */
  1371. static void _RasterVparamConfig(unsigned int baseAddr, unsigned int lpp, unsigned int vsw, unsigned int vfp, unsigned vbp) {
  1372.   HWREG(baseAddr + LCDC_RASTER_TIMING_1) = (lpp - 1) & 0x3ff;
  1373.   HWREG(baseAddr + LCDC_RASTER_TIMING_2) &= 0xfbffffff;
  1374.   HWREG(baseAddr + LCDC_RASTER_TIMING_2) |= (((lpp - 1) & 0x400) >> 10) << LCDC_RASTER_TIMING_2_LPP_B10_SHIFT;
  1375.   HWREG(baseAddr + LCDC_RASTER_TIMING_1) |= (vsw - 1)                   << LCDC_RASTER_TIMING_1_VSW_SHIFT;
  1376.   HWREG(baseAddr + LCDC_RASTER_TIMING_1) |= vfp                         << LCDC_RASTER_TIMING_1_VFP_SHIFT;
  1377.   HWREG(baseAddr + LCDC_RASTER_TIMING_1) |= vbp                         << LCDC_RASTER_TIMING_1_VBP_SHIFT;
  1378. }

  1379. /*********************************************************************
  1380. *
  1381. *       _RasterFIFODMADelayConfig
  1382. */
  1383. static void _RasterFIFODMADelayConfig(unsigned int baseAddr, unsigned int delay) {
  1384.   HWREG(baseAddr + LCDC_RASTER_CTRL) &= ~LCDC_RASTER_CTRL_FIFO_DMA_DELAY;
  1385.   HWREG(baseAddr + LCDC_RASTER_CTRL) |= delay << LCDC_RASTER_CTRL_FIFO_DMA_DELAY_SHIFT;
  1386. }

  1387. /*********************************************************************
  1388. *
  1389. *       _RasterDMAFBConfig
  1390. */
  1391. static void _RasterDMAFBConfig(unsigned int baseAddr, unsigned int base, unsigned int ceiling, unsigned int flag) {
  1392.   if(flag == 0) {
  1393.     HWREG(baseAddr + LCDC_LCDDMA_FB0_BASE)    = base - 0x20;
  1394.     HWREG(baseAddr + LCDC_LCDDMA_FB0_CEILING) = ceiling;
  1395.   } else {
  1396.     HWREG(baseAddr + LCDC_LCDDMA_FB1_BASE)    = base - 0x20;
  1397.     HWREG(baseAddr + LCDC_LCDDMA_FB1_CEILING) = ceiling;
  1398.   }
  1399. }

  1400. /*********************************************************************
  1401. *
  1402. *       _RasterIntEnable
  1403. */
  1404. static void _RasterIntEnable(unsigned int baseAddr) {
  1405.   HWREG(baseAddr + LCDC_IRQENABLE_SET) |= RASTER_END_OF_FRAME0_INT;
  1406. }

  1407. /*********************************************************************
  1408. *
  1409. *       _RasterEnable
  1410. */
  1411. static void _RasterEnable(unsigned int baseAddr) {
  1412.   HWREG(baseAddr + LCDC_RASTER_CTRL) |= LCDC_RASTER_CTRL_RASTER_EN;
  1413. }

  1414. /*********************************************************************
  1415. *
  1416. *       _LCD_ISR_EndOfFrame
  1417. */
  1418. static void _LCD_ISR_EndOfFrame(void) {
  1419.   U32 Addr;
  1420.   unsigned Status;

  1421.   Status = HWREG(SOC_LCDC_0_REGS + LCDC_IRQSTATUS) & (RASTER_END_OF_FRAME0_INT_STAT | RASTER_END_OF_FRAME1_INT_STAT);
  1422.   Status = HWREG(SOC_LCDC_0_REGS + LCDC_IRQSTATUS) & Status;
  1423.   HWREG(SOC_LCDC_0_REGS + LCDC_IRQSTATUS) = Status;
  1424.   if (_PendingBuffer >= 0) {
  1425.     Addr = ((U32)&_aVRAM[0] + XSIZE_PHYS * YSIZE_PHYS * _PendingBuffer * (/*LCD_BITSPERPIXEL*/32 >> 3));
  1426.     _RasterDMAFBConfig(SOC_LCDC_0_REGS, Addr, Addr + XSIZE_PHYS * YSIZE_PHYS * sizeof(U32), 0);
  1427.     GUI_MULTIBUF_Confirm(_PendingBuffer);
  1428.     _PendingBuffer = -1;
  1429.   }
  1430. }

  1431. /*********************************************************************
  1432. *
  1433. *       _InitController
  1434. */
  1435. static void _InitController(void) {
  1436.   _PendingBuffer = -1;
  1437.   //
  1438.   // Clock configuration
  1439.   //
  1440.   _LCDModuleClkConfig();
  1441.   //
  1442.   // Pin multiplexing
  1443.   //
  1444.   _LCDPinMuxSetup();
  1445.   //
  1446.   // Raster controller configuration
  1447.   //
  1448.   _RasterClocksEnable(SOC_LCDC_0_REGS);
  1449.   _RasterClkConfig(SOC_LCDC_0_REGS, XSIZE_PHYS * YSIZE_PHYS * 60, 192000000);
  1450.   _RasterDMAConfig(SOC_LCDC_0_REGS, RASTER_SINGLE_FRAME_BUFFER, RASTER_BURST_SIZE_16, RASTER_FIFO_THRESHOLD_8, RASTER_BIG_ENDIAN_DISABLE);
  1451.   _RasterModeConfig(SOC_LCDC_0_REGS, RASTER_DISPLAY_MODE_TFT_UNPACKED, RASTER_PALETTE_DATA, RASTER_COLOR, RASTER_RIGHT_ALIGNED);
  1452.   _RasterTiming2Configure(SOC_LCDC_0_REGS, RASTER_FRAME_CLOCK_LOW  |
  1453.                                            RASTER_LINE_CLOCK_LOW   |
  1454.                                            RASTER_PIXEL_CLOCK_HIGH |
  1455.                                            RASTER_SYNC_EDGE_RISING |
  1456.                                            RASTER_SYNC_CTRL_ACTIVE |
  1457.                                            RASTER_AC_BIAS_HIGH,
  1458.                                            0, 255);
  1459.   _RasterHparamConfig(SOC_LCDC_0_REGS, XSIZE_PHYS, HSW, HFP, HBP);
  1460.   _RasterVparamConfig(SOC_LCDC_0_REGS, YSIZE_PHYS, VSW, VFP, VBP);
  1461.   _RasterFIFODMADelayConfig(SOC_LCDC_0_REGS, 128);
  1462.   _RasterDMAFBConfig(SOC_LCDC_0_REGS, (U32)_aVRAM, (U32)_aVRAM + XSIZE_PHYS * YSIZE_PHYS * sizeof(U32), 0);
  1463.   //
  1464.   // Install interrupt handler for EndOfFrame-interrupt
  1465.   //
  1466.   OS_ARM_InstallISRHandler(36, _LCD_ISR_EndOfFrame);
  1467.   OS_ARM_EnableISR(36);
  1468.   //
  1469.   // Enable raster controller
  1470.   //
  1471.   _RasterIntEnable(SOC_LCDC_0_REGS);
  1472.   _RasterEnable(SOC_LCDC_0_REGS);
  1473. }

  1474. /*********************************************************************
  1475. *
  1476. *       Public code
  1477. *
  1478. **********************************************************************
  1479. */
  1480. /*********************************************************************
  1481. *
  1482. *       LCD_X_Config
  1483. *
  1484. * Purpose:
  1485. *   Called during the initialization process in order to set up the
  1486. *   display driver configuration.
  1487. *
  1488. */
  1489. void LCD_X_Config(void) {
  1490.   //
  1491.   // At first initialize use of multiple buffers on demand
  1492.   //
  1493.   #if (NUM_BUFFERS > 1)
  1494.     GUI_MULTIBUF_Config(NUM_BUFFERS);
  1495.   #endif
  1496.   //
  1497.   // Set display driver and color conversion for 1st layer
  1498.   //
  1499.   GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0);
  1500.   //
  1501.   // Display driver configuration
  1502.   //
  1503.   if (LCD_GetSwapXY()) {
  1504.     LCD_SetSizeEx (0, YSIZE_PHYS, XSIZE_PHYS);
  1505.     LCD_SetVSizeEx(0, YSIZE_PHYS * NUM_VSCREENS, XSIZE_PHYS);
  1506.   } else {
  1507.     LCD_SetSizeEx (0, XSIZE_PHYS, YSIZE_PHYS);
  1508.     LCD_SetVSizeEx(0, XSIZE_PHYS, YSIZE_PHYS * NUM_VSCREENS);
  1509.   }
  1510.   LCD_SetVRAMAddrEx(0, (void *)_aVRAM);
  1511. }

  1512. /*********************************************************************
  1513. *
  1514. *       LCD_X_DisplayDriver
  1515. *
  1516. * Purpose:
  1517. *   This function is called by the display driver for several purposes.
  1518. *   To support the according task the routine needs to be adapted to
  1519. *   the display controller. Please note that the commands marked with
  1520. *   'optional' are not cogently required and should only be adapted if
  1521. *   the display controller supports these features.
  1522. *
  1523. * Parameter:
  1524. *   LayerIndex - Index of layer to be configured
  1525. *   Cmd        - Please refer to the details in the switch statement below
  1526. *   pData      - Pointer to a LCD_X_DATA structure
  1527. *
  1528. * Return Value:
  1529. *   < -1 - Error
  1530. *     -1 - Command not handled
  1531. *      0 - Ok
  1532. */
  1533. int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * p) {
  1534.   int r;

  1535.   (void)LayerIndex;
  1536.   switch (Cmd) {
  1537.   case LCD_X_SHOWBUFFER: {
  1538.       LCD_X_SHOWBUFFER_INFO * pData;

  1539.       pData = (LCD_X_SHOWBUFFER_INFO *)p;
  1540.       _PendingBuffer = pData->Index;
  1541.     }
  1542.     break;
  1543.   case LCD_X_INITCONTROLLER: {
  1544.     _InitController();
  1545.     r = 0;
  1546.     break;
  1547.   }
  1548.   default:
  1549.     r = -1;
  1550.   }
  1551.   return r;
  1552. }

  1553. /*************************** End of file ****************************/
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-19 01:49 , Processed in 0.051815 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表