lcd_reg.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. /* Copyright Statement:
  2. *
  3. * This software/firmware and related documentation ("MediaTek Software") are
  4. * protected under relevant copyright laws. The information contained herein
  5. * is confidential and proprietary to MediaTek Inc. and/or its licensors.
  6. * Without the prior written permission of MediaTek inc. and/or its licensors,
  7. * any reproduction, modification, use or disclosure of MediaTek Software,
  8. * and information contained herein, in whole or in part, shall be strictly prohibited.
  9. */
  10. /* MediaTek Inc. (C) 2010. All rights reserved.
  11. *
  12. * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  13. * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  14. * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON
  15. * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  16. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  17. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  18. * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  19. * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  20. * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH
  21. * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
  22. * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
  23. * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
  24. * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
  25. * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
  26. * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  27. * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  28. * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO
  29. * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  30. *
  31. * The following software/firmware and/or related documentation ("MediaTek Software")
  32. * have been modified by MediaTek Inc. All revisions are subject to any receiver's
  33. * applicable license agreements with MediaTek Inc.
  34. */
  35. /*****************************************************************************
  36. * Copyright Statement:
  37. * --------------------
  38. * This software is protected by Copyright and the information contained
  39. * herein is confidential. The software may not be copied and the information
  40. * contained herein may not be used or disclosed except with the written
  41. * permission of MediaTek Inc. (C) 2008
  42. *
  43. * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  44. * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  45. * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  46. * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  47. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  48. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  49. * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  50. * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  51. * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  52. * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  53. * NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  54. * SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  55. *
  56. * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  57. * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  58. * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  59. * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  60. * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  61. *
  62. * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  63. * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  64. * LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  65. * RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  66. * THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  67. *
  68. *****************************************************************************/
  69. #ifndef __LCD_REG_H__
  70. #define __LCD_REG_H__
  71. #include <stddef.h>
  72. #include "disp_drv_platform.h"
  73. #ifdef __cplusplus
  74. extern "C" {
  75. #endif
  76. typedef struct
  77. {
  78. unsigned RUN : 1;
  79. unsigned WAIT_CMDQ : 1;
  80. unsigned WAIT_HTT : 1;
  81. unsigned WAIT_SYNC : 1;
  82. unsigned BUSY : 1;
  83. unsigned RDMA : 1;
  84. unsigned SMI : 1;
  85. unsigned rsv_7 : 25;
  86. } LCD_REG_STATUS, *PLCD_REG_STATUS;
  87. typedef struct
  88. {
  89. unsigned COMPLETED : 1;
  90. unsigned CMDQ_COMPLETED : 1;
  91. unsigned HTT : 1;
  92. unsigned SYNC : 1;
  93. unsigned rsv_4 : 28;
  94. } LCD_REG_INTERRUPT, *PLCD_REG_INTERRUPT;
  95. typedef struct
  96. {
  97. unsigned RESET : 1;
  98. unsigned RDMA_STOP : 1;
  99. unsigned rsv_2 : 13;
  100. unsigned START : 1;
  101. unsigned rsv_16 : 16;
  102. } LCD_REG_START, *PLCD_REG_START;
  103. typedef struct
  104. {
  105. unsigned WR_2ND : 4;
  106. unsigned WR_1ST : 4;
  107. unsigned RD_2ND : 4;
  108. unsigned RD_1ST : 4;
  109. unsigned CSH : 4;
  110. unsigned CSS : 4;
  111. unsigned rsv_24 : 8;
  112. } LCD_REG_SIF_TIMING, *PLCD_REG_SIF_TIMING;
  113. typedef struct
  114. {
  115. unsigned SIZE_0 : 3;
  116. unsigned THREE_WIRE_0 : 1;
  117. unsigned SDI_0 : 1;
  118. unsigned FIRST_POL_0 : 1;
  119. unsigned SCK_DEF_0 : 1;
  120. unsigned DIV2_0 : 1;
  121. unsigned SIZE_1 : 3;
  122. unsigned THREE_WIRE_1 : 1;
  123. unsigned SDI_1 : 1;
  124. unsigned FIRST_POL_1 : 1;
  125. unsigned SCK_DEF_1 : 1;
  126. unsigned DIV2_1 : 1;
  127. unsigned rsv_16 : 8;
  128. unsigned HW_CS : 1;
  129. unsigned rsv_25 : 7;
  130. } LCD_REG_SCNF, *PLCD_REG_SCNF;
  131. typedef struct
  132. {
  133. unsigned WST : 6;
  134. unsigned rsv_6 : 2;
  135. unsigned C2WS : 4;
  136. unsigned C2WH : 4;
  137. unsigned RLT : 6;
  138. unsigned rsv_22 : 2;
  139. unsigned C2RS : 4;
  140. unsigned C2RH : 4;
  141. } LCD_REG_PCNF, *PLCD_REG_PCNF;
  142. typedef struct
  143. {
  144. unsigned PCNF0_DW : 3;
  145. unsigned rsv_3 : 1;
  146. unsigned PCNF1_DW : 3;
  147. unsigned rsv_7 : 1;
  148. unsigned PCNF2_DW : 3;
  149. unsigned rsv_11 : 5;
  150. unsigned PCNF0_CHW : 4;
  151. unsigned PCNF1_CHW : 4;
  152. unsigned PCNF2_CHW : 4;
  153. unsigned rsv_28 : 4;
  154. } LCD_REG_PCNFDW, *PLCD_REG_PCNFDW;
  155. typedef struct
  156. {
  157. unsigned ENABLE : 1;
  158. unsigned EDGE_SEL : 1;
  159. unsigned MODE : 1;
  160. unsigned rsv_3 : 12;
  161. unsigned SW_TE : 1;
  162. unsigned rsv_16 : 16;
  163. } LCD_REG_TECON, *PLCD_REG_TECON;
  164. typedef struct
  165. {
  166. UINT16 WIDTH;
  167. UINT16 HEIGHT;
  168. } LCD_REG_SIZE, *PLCD_REG_SIZE;
  169. typedef struct
  170. {
  171. unsigned rsv_0 :4;
  172. unsigned addr :4;
  173. unsigned rsv_8 :24;
  174. } LCD_REG_CMD_ADDR, *PLCD_REG_CMD_ADDR;
  175. typedef struct
  176. {
  177. unsigned rsv_0 :4;
  178. unsigned addr :4;
  179. unsigned rsv_8 :24;
  180. } LCD_REG_DAT_ADDR, *PLCD_REG_DAT_ADDR;
  181. typedef struct
  182. {
  183. unsigned RGB_ORDER : 1;
  184. unsigned BYTE_ORDER : 1;
  185. unsigned PADDING : 1;
  186. unsigned DATA_FMT : 3;
  187. unsigned IF_FMT : 2;
  188. unsigned COMMAND : 5;
  189. unsigned rsv_13 : 2;
  190. unsigned ENC : 1;
  191. unsigned rsv_16 : 8;
  192. unsigned SEND_RES_MODE : 1;
  193. unsigned IF_24 : 1;
  194. unsigned rsv_6 : 6;
  195. }LCD_REG_WROI_CON, *PLCD_REG_WROI_CON;
  196. typedef struct {
  197. unsigned MAX_BURST : 3;
  198. unsigned rsv_3 : 1;
  199. unsigned THROTTLE_EN : 1;
  200. unsigned rsv_5 : 11;
  201. unsigned THROTTLE_PERIOD : 16;
  202. } LCD_REG_SMICON;
  203. /*
  204. typedef struct
  205. {
  206. unsigned DB_B : 2;
  207. unsigned rsv_2 : 2;
  208. unsigned DB_G : 2;
  209. unsigned rsv_6 : 2;
  210. unsigned DB_R : 2;
  211. unsigned rsv_10 : 2;
  212. unsigned LFSR_B_SEED : 4;
  213. unsigned LFSR_G_SEED : 4;
  214. unsigned LFSR_R_SEED : 4;
  215. unsigned rsv_48 : 8;
  216. } LCD_REG_DITHER_CON, *PLCD_REG_DITHER_CON;
  217. */
  218. typedef struct
  219. {
  220. unsigned CS0 : 1;
  221. unsigned CS1 : 1;
  222. unsigned rsv30 :30;
  223. } LCD_REG_SIF_CS, *PLCD_REG_SIF_CS;
  224. typedef struct
  225. {
  226. unsigned TIME_OUT : 12;
  227. unsigned rsv_12 : 4;
  228. unsigned COUNT : 12;
  229. unsigned rsv_28 : 4;
  230. } LCD_REG_CALC_HTT, *PLCD_REG_CALC_HTT;
  231. typedef struct
  232. {
  233. unsigned HTT : 10;
  234. unsigned rsv_10 : 6;
  235. unsigned VTT : 12;
  236. unsigned rsv_28 : 4;
  237. } LCD_REG_SYNC_LCM_SIZE, *PLCD_REG_SYNC_LCM_SIZE;
  238. typedef struct
  239. {
  240. unsigned WAITLINE : 12;
  241. unsigned rsv_12 : 4;
  242. unsigned SCANLINE : 12;
  243. unsigned rsv_28 : 4;
  244. } LCD_REG_SYNC_CNT, *PLCD_REG_SYNC_CNT;
  245. typedef struct
  246. {
  247. unsigned rsv_0 : 16;
  248. unsigned SWAP : 1;
  249. unsigned ERR : 1;
  250. unsigned DITHER : 1;
  251. unsigned RDMA_EN : 1;
  252. unsigned CFMT : 3;
  253. unsigned rsv_23 : 3;
  254. unsigned CSWAP : 1;
  255. unsigned rsv_27 : 5;
  256. } LCD_SRC_CON, *PLCD_SRC_CON;
  257. typedef struct
  258. {
  259. unsigned DBI_ULTRA : 1;
  260. unsigned GMC_ULTRA : 1;
  261. unsigned rsv_2 : 30;
  262. }LCD_REG_ULTRA_CON;
  263. typedef struct
  264. {
  265. unsigned DBI_TH_LOW : 16;
  266. unsigned DBI_TH_HIGH : 16;
  267. }LCD_REG_DBI_ULTRA_TH;
  268. typedef struct
  269. {
  270. unsigned GMC_TH_LOW : 16;
  271. unsigned GMC_TH_HIGH : 16;
  272. }LCD_REG_GMC_ULTRA_TH;
  273. typedef struct
  274. {
  275. LCD_REG_STATUS STATUS; // C000
  276. LCD_REG_INTERRUPT INT_ENABLE; // C004
  277. LCD_REG_INTERRUPT INT_STATUS; // C008
  278. LCD_REG_START START; // C00C
  279. UINT32 RESET; // C010
  280. UINT32 rsv_0014[2]; // C014..C018
  281. LCD_REG_SIF_TIMING SIF_TIMING[2]; // C01C..C020
  282. UINT32 rsv_0024; // C024
  283. LCD_REG_SCNF SERIAL_CFG; // C028
  284. LCD_REG_SIF_CS SIF_CS; // C02C
  285. LCD_REG_PCNF PARALLEL_CFG[3]; // C030..C038
  286. LCD_REG_PCNFDW PARALLEL_DW; // C03C
  287. LCD_REG_TECON TEARING_CFG; // C040
  288. LCD_REG_CALC_HTT CALC_HTT; // C044
  289. LCD_REG_SYNC_LCM_SIZE SYNC_LCM_SIZE; // C048
  290. LCD_REG_SYNC_CNT SYNC_CNT; // C04C
  291. LCD_REG_SMICON SMI_CON; // C050
  292. UINT32 rsv_0054[3]; // C054..C05C
  293. LCD_REG_WROI_CON WROI_CONTROL; // C060
  294. LCD_REG_CMD_ADDR WROI_CMD_ADDR; // C064
  295. LCD_REG_DAT_ADDR WROI_DATA_ADDR; // C068
  296. LCD_REG_SIZE WROI_SIZE; // C06C
  297. LCD_SRC_CON SRC_CON; // C070
  298. UINT32 SRC_ADD; // C074
  299. UINT32 SRC_PITCH; // C078
  300. UINT32 rsv_007C[5]; // C07C..C08C
  301. // LCD_REG_DITHER_CON DITHER_CON; // C080
  302. // UINT32 rsv_0084[3]; // C084..C08C
  303. LCD_REG_ULTRA_CON ULTRA_CON; // C090
  304. UINT32 CONSUME_RATE; // C094
  305. LCD_REG_DBI_ULTRA_TH DBI_ULTRA_TH; // C098
  306. LCD_REG_GMC_ULTRA_TH GMC_ULTRA_TH; // 109C
  307. UINT32 rsv_00A0[728]; // C0A0..CBFC
  308. UINT32 CMDQ[32]; // CC00..CC7F
  309. UINT32 rsv_1D00[160]; // CC80..CEFC
  310. UINT32 PCMD0; // CF00
  311. UINT32 rsv_1F04[7]; // CF04..CF1C
  312. UINT32 PCMD1; // CF20
  313. UINT32 rsv_1F24[7]; // CF24..1C3C
  314. UINT32 PCMD2; // CF40
  315. UINT32 rsv_1F44[15]; // CF44..CF7C
  316. UINT32 SCMD0; // CF80
  317. UINT32 rsv_1F84[7]; // CF84..CF9C
  318. UINT32 SCMD1; // CFA0
  319. UINT32 rsv_1FA4[7]; // CFA4..CFBC
  320. } volatile LCD_REGS, *PLCD_REGS;
  321. #ifndef BUILD_LK
  322. STATIC_ASSERT(0x0000 == offsetof(LCD_REGS, STATUS));
  323. STATIC_ASSERT(0x0004 == offsetof(LCD_REGS, INT_ENABLE));
  324. STATIC_ASSERT(0x0028 == offsetof(LCD_REGS, SERIAL_CFG));
  325. STATIC_ASSERT(0x0030 == offsetof(LCD_REGS, PARALLEL_CFG));
  326. STATIC_ASSERT(0x0040 == offsetof(LCD_REGS, TEARING_CFG));
  327. STATIC_ASSERT(0x0C00 == offsetof(LCD_REGS, CMDQ));
  328. STATIC_ASSERT((0xF00) == offsetof(LCD_REGS, PCMD0));
  329. STATIC_ASSERT((0xF80) == offsetof(LCD_REGS, SCMD0));
  330. STATIC_ASSERT(0xFC0 == sizeof(LCD_REGS));
  331. #endif
  332. #define LCD_A0_LOW_OFFSET (0x0)
  333. #define LCD_A0_HIGH_OFFSET (0x10)
  334. #ifdef __cplusplus
  335. }
  336. #endif
  337. #endif // __LCD_REG_H__