xref: /utopia/UTPA2-700.0.x/modules/mfc/hal/maxim/mfc/mdrv_mfc_panel.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi //<MStar Software>
2*53ee8cc1Swenshuai.xi //******************************************************************************
3*53ee8cc1Swenshuai.xi // MStar Software
4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are
6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties.
8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all
9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written
10*53ee8cc1Swenshuai.xi // permission has been granted by MStar.
11*53ee8cc1Swenshuai.xi //
12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you
13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to
14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations:
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar
17*53ee8cc1Swenshuai.xi //    Software and any modification/derivatives thereof.
18*53ee8cc1Swenshuai.xi //    No right, ownership, or interest to MStar Software and any
19*53ee8cc1Swenshuai.xi //    modification/derivatives thereof is transferred to you under Terms.
20*53ee8cc1Swenshuai.xi //
21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be
22*53ee8cc1Swenshuai.xi //    supplied together with third party`s software and the use of MStar
23*53ee8cc1Swenshuai.xi //    Software may require additional licenses from third parties.
24*53ee8cc1Swenshuai.xi //    Therefore, you hereby agree it is your sole responsibility to separately
25*53ee8cc1Swenshuai.xi //    obtain any and all third party right and license necessary for your use of
26*53ee8cc1Swenshuai.xi //    such third party`s software.
27*53ee8cc1Swenshuai.xi //
28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29*53ee8cc1Swenshuai.xi //    MStar`s confidential information and you agree to keep MStar`s
30*53ee8cc1Swenshuai.xi //    confidential information in strictest confidence and not disclose to any
31*53ee8cc1Swenshuai.xi //    third party.
32*53ee8cc1Swenshuai.xi //
33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34*53ee8cc1Swenshuai.xi //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35*53ee8cc1Swenshuai.xi //    without limitation, any warranties of merchantability, non-infringement of
36*53ee8cc1Swenshuai.xi //    intellectual property rights, fitness for a particular purpose, error free
37*53ee8cc1Swenshuai.xi //    and in conformity with any international standard.  You agree to waive any
38*53ee8cc1Swenshuai.xi //    claim against MStar for any loss, damage, cost or expense that you may
39*53ee8cc1Swenshuai.xi //    incur related to your use of MStar Software.
40*53ee8cc1Swenshuai.xi //    In no event shall MStar be liable for any direct, indirect, incidental or
41*53ee8cc1Swenshuai.xi //    consequential damages, including without limitation, lost of profit or
42*53ee8cc1Swenshuai.xi //    revenues, lost or damage of data, and unauthorized system use.
43*53ee8cc1Swenshuai.xi //    You agree that this Section 4 shall still apply without being affected
44*53ee8cc1Swenshuai.xi //    even if MStar Software has been modified by MStar in accordance with your
45*53ee8cc1Swenshuai.xi //    request or instruction for your use, except otherwise agreed by both
46*53ee8cc1Swenshuai.xi //    parties in writing.
47*53ee8cc1Swenshuai.xi //
48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or
49*53ee8cc1Swenshuai.xi //    services in relation with MStar Software to you for your use of
50*53ee8cc1Swenshuai.xi //    MStar Software in conjunction with your or your customer`s product
51*53ee8cc1Swenshuai.xi //    ("Services").
52*53ee8cc1Swenshuai.xi //    You understand and agree that, except otherwise agreed by both parties in
53*53ee8cc1Swenshuai.xi //    writing, Services are provided on an "AS IS" basis and the warranty
54*53ee8cc1Swenshuai.xi //    disclaimer set forth in Section 4 above shall apply.
55*53ee8cc1Swenshuai.xi //
56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels
57*53ee8cc1Swenshuai.xi //    or otherwise:
58*53ee8cc1Swenshuai.xi //    (a) conferring any license or right to use MStar name, trademark, service
59*53ee8cc1Swenshuai.xi //        mark, symbol or any other identification;
60*53ee8cc1Swenshuai.xi //    (b) obligating MStar or any of its affiliates to furnish any person,
61*53ee8cc1Swenshuai.xi //        including without limitation, you and your customers, any assistance
62*53ee8cc1Swenshuai.xi //        of any kind whatsoever, or any information; or
63*53ee8cc1Swenshuai.xi //    (c) conferring any license or right under any intellectual property right.
64*53ee8cc1Swenshuai.xi //
65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws
66*53ee8cc1Swenshuai.xi //    of Taiwan, R.O.C., excluding its conflict of law rules.
67*53ee8cc1Swenshuai.xi //    Any and all dispute arising out hereof or related hereto shall be finally
68*53ee8cc1Swenshuai.xi //    settled by arbitration referred to the Chinese Arbitration Association,
69*53ee8cc1Swenshuai.xi //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70*53ee8cc1Swenshuai.xi //    Rules of the Association by three (3) arbitrators appointed in accordance
71*53ee8cc1Swenshuai.xi //    with the said Rules.
72*53ee8cc1Swenshuai.xi //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73*53ee8cc1Swenshuai.xi //    be English.
74*53ee8cc1Swenshuai.xi //    The arbitration award shall be final and binding to both parties.
75*53ee8cc1Swenshuai.xi //
76*53ee8cc1Swenshuai.xi //******************************************************************************
77*53ee8cc1Swenshuai.xi //<MStar Software>
78*53ee8cc1Swenshuai.xi #define _PANEL_C_
79*53ee8cc1Swenshuai.xi #include "mdrv_mfc_platform.h"
80*53ee8cc1Swenshuai.xi #include "mdrv_mfc.h"
81*53ee8cc1Swenshuai.xi #include "mdrv_mfc_fb.h"
82*53ee8cc1Swenshuai.xi 
83*53ee8cc1Swenshuai.xi #if(CODESIZE_SEL == CODESIZE_ALL)
84*53ee8cc1Swenshuai.xi 
85*53ee8cc1Swenshuai.xi extern code U8 tInitializeColorMatrix[];
86*53ee8cc1Swenshuai.xi extern U8 tInitializeColorMatrix_count;
87*53ee8cc1Swenshuai.xi 
88*53ee8cc1Swenshuai.xi extern code MST_MFC_RegUnitType_t tInitializeTcon23b[];
89*53ee8cc1Swenshuai.xi extern code  MST_MFC_RegUnitType_t tInitializeScTop2[];
90*53ee8cc1Swenshuai.xi extern code U8 tOverDrive[];
91*53ee8cc1Swenshuai.xi #if 0
92*53ee8cc1Swenshuai.xi //_RSDS
93*53ee8cc1Swenshuai.xi code MST_MFC_RegUnitType_t tInitializeTcon22a[]=
94*53ee8cc1Swenshuai.xi {
95*53ee8cc1Swenshuai.xi 	{0x22A0, 0xb2},
96*53ee8cc1Swenshuai.xi 	{0x22A2, 0xd4},
97*53ee8cc1Swenshuai.xi 	{0x22A6, 0x05},
98*53ee8cc1Swenshuai.xi 	{0x22A8, 0x05},
99*53ee8cc1Swenshuai.xi 	{0x22AA, 0x02},
100*53ee8cc1Swenshuai.xi 	{0x22AC, 0x11},
101*53ee8cc1Swenshuai.xi 	{0x22AE, 0x5a},
102*53ee8cc1Swenshuai.xi 
103*53ee8cc1Swenshuai.xi {_END_OF_TBL_, _END_OF_TBL_},
104*53ee8cc1Swenshuai.xi };
105*53ee8cc1Swenshuai.xi 
106*53ee8cc1Swenshuai.xi code MST_MFC_RegUnitType_t tInitializeTcon23a[]=
107*53ee8cc1Swenshuai.xi {
108*53ee8cc1Swenshuai.xi 	{0x2302, 0x7b},
109*53ee8cc1Swenshuai.xi 	{0x2304, 0x30},
110*53ee8cc1Swenshuai.xi 	{0x2306, 0x06},
111*53ee8cc1Swenshuai.xi 	{0x2308, 0x80},
112*53ee8cc1Swenshuai.xi 	{0x230A, 0x0c},
113*53ee8cc1Swenshuai.xi 	{0x230E, 0x50},
114*53ee8cc1Swenshuai.xi 
115*53ee8cc1Swenshuai.xi 	{0x2310, PANEL_WIDTH},
116*53ee8cc1Swenshuai.xi 	{0x2311, PANEL_WIDTH>>8},
117*53ee8cc1Swenshuai.xi 	{0x2314, PANEL_HEIGHT},
118*53ee8cc1Swenshuai.xi 	{0x2315, PANEL_HEIGHT>>8},
119*53ee8cc1Swenshuai.xi 	{0x2318, PANEL_HTOTAL},
120*53ee8cc1Swenshuai.xi 	{0x2319, PANEL_HTOTAL>>8},
121*53ee8cc1Swenshuai.xi 	{0x231C, PANEL_VTOTAL},
122*53ee8cc1Swenshuai.xi 	{0x231D, PANEL_VTOTAL>>8},
123*53ee8cc1Swenshuai.xi 	{0x231E, 0x80},
124*53ee8cc1Swenshuai.xi 
125*53ee8cc1Swenshuai.xi 	{0x2320, TP_START},
126*53ee8cc1Swenshuai.xi 	{0x2321, TP_START>>8},
127*53ee8cc1Swenshuai.xi 	{0x2322, TP_WIDTH},
128*53ee8cc1Swenshuai.xi 	{0x2323, TP_WIDTH>>8},
129*53ee8cc1Swenshuai.xi 	{0x2324, 0x30},
130*53ee8cc1Swenshuai.xi 	{0x2326, STV_START},
131*53ee8cc1Swenshuai.xi 	{0x2327, STV_START>>8},
132*53ee8cc1Swenshuai.xi 
133*53ee8cc1Swenshuai.xi 	{0x232A, CPV_START},
134*53ee8cc1Swenshuai.xi 	{0x232B, CPV_START>>8},
135*53ee8cc1Swenshuai.xi 	{0x232E, CPV_WIDTH},
136*53ee8cc1Swenshuai.xi 	{0x232F, CPV_WIDTH>>8},
137*53ee8cc1Swenshuai.xi 
138*53ee8cc1Swenshuai.xi 	{0x2332, OE_START},
139*53ee8cc1Swenshuai.xi 	{0x2333, OE_START>>8},
140*53ee8cc1Swenshuai.xi 	{0x2334, OE_WIDTH},
141*53ee8cc1Swenshuai.xi 	{0x2335, OE_WIDTH>>8},
142*53ee8cc1Swenshuai.xi 	{0x2336, 0x00},
143*53ee8cc1Swenshuai.xi 	{0x2338, POL_START},
144*53ee8cc1Swenshuai.xi 	{0x2339, POL_START>>8},
145*53ee8cc1Swenshuai.xi #if (PANEL_CHANNEL==_SINGLE)
146*53ee8cc1Swenshuai.xi 	{0x233C, PANEL_WIDTH},
147*53ee8cc1Swenshuai.xi 	{0x233D, PANEL_WIDTH>>8},
148*53ee8cc1Swenshuai.xi #elif (PANEL_CHANNEL==_DUAL)
149*53ee8cc1Swenshuai.xi 	{0x233C, PANEL_WIDTH>>1},
150*53ee8cc1Swenshuai.xi 	{0x233D, PANEL_WIDTH>>9},
151*53ee8cc1Swenshuai.xi #else
152*53ee8cc1Swenshuai.xi 	{0x233C, PANEL_WIDTH>>2},
153*53ee8cc1Swenshuai.xi 	{0x233D, PANEL_WIDTH>>10},
154*53ee8cc1Swenshuai.xi #endif
155*53ee8cc1Swenshuai.xi 	{0x233E, 0xf0},
156*53ee8cc1Swenshuai.xi 
157*53ee8cc1Swenshuai.xi 	{0x2340, 0x00}, //
158*53ee8cc1Swenshuai.xi 	{0x2341, 0x00}, //
159*53ee8cc1Swenshuai.xi 	{0x2342, 0xe2}, //
160*53ee8cc1Swenshuai.xi 	{0x2343, 0x02}, //
161*53ee8cc1Swenshuai.xi 	{0x2344, 0x82}, //
162*53ee8cc1Swenshuai.xi 	{0x2345, 0x01}, //
163*53ee8cc1Swenshuai.xi 	{0x2348, 0xd4}, //
164*53ee8cc1Swenshuai.xi 	{0x2349, 0x00}, //
165*53ee8cc1Swenshuai.xi 	{0x234A, 0x20}, //
166*53ee8cc1Swenshuai.xi 	{0x234B, 0x02}, //
167*53ee8cc1Swenshuai.xi 	{0x234C, 0x21}, //
168*53ee8cc1Swenshuai.xi 	{0x234E, 0x80}, //
169*53ee8cc1Swenshuai.xi 
170*53ee8cc1Swenshuai.xi 	{0x2360, 0x1a},
171*53ee8cc1Swenshuai.xi 	{0x2361, 0x02},
172*53ee8cc1Swenshuai.xi 	{0x2362, 0x1a},
173*53ee8cc1Swenshuai.xi 	{0x2363, 0x02},
174*53ee8cc1Swenshuai.xi 	{0x2364, 0xc7},
175*53ee8cc1Swenshuai.xi 	{0x2365, 0x00},
176*53ee8cc1Swenshuai.xi 	{0x2368, 0x00},
177*53ee8cc1Swenshuai.xi 	{0x2369, 0x00},
178*53ee8cc1Swenshuai.xi 	{0x236A, 0xff},
179*53ee8cc1Swenshuai.xi 	{0x236B, 0x02},
180*53ee8cc1Swenshuai.xi 	{0x236C, 0x31},
181*53ee8cc1Swenshuai.xi 	{0x236E, 0x05},
182*53ee8cc1Swenshuai.xi 
183*53ee8cc1Swenshuai.xi 	{0x2382, 0xe2}, //
184*53ee8cc1Swenshuai.xi 	{0x2383, 0x02}, //
185*53ee8cc1Swenshuai.xi 	{0x2384, 0x82}, //
186*53ee8cc1Swenshuai.xi 	{0x2385, 0x01}, //
187*53ee8cc1Swenshuai.xi 	{0x2388, 0xd4}, //
188*53ee8cc1Swenshuai.xi 	{0x2389, 0x00}, //
189*53ee8cc1Swenshuai.xi 	{0x238A, 0x22}, //
190*53ee8cc1Swenshuai.xi 	{0x238B, 0x02}, //
191*53ee8cc1Swenshuai.xi 	{0x238C, 0x00}, //
192*53ee8cc1Swenshuai.xi 	{0x238D, 0xff}, //
193*53ee8cc1Swenshuai.xi 	{0x238E, 0x05}, //
194*53ee8cc1Swenshuai.xi 	{0x238F, 0x80}, //
195*53ee8cc1Swenshuai.xi 
196*53ee8cc1Swenshuai.xi 	{0x2392, 0xd4}, //
197*53ee8cc1Swenshuai.xi 	{0x2393, 0x00}, //
198*53ee8cc1Swenshuai.xi 	{0x2394, 0xd4}, //
199*53ee8cc1Swenshuai.xi 	{0x2395, 0x00}, //
200*53ee8cc1Swenshuai.xi 	{0x2396, 0x08}, //
201*53ee8cc1Swenshuai.xi 	{0x2398, 0xd4}, //
202*53ee8cc1Swenshuai.xi 	{0x2399, 0x00}, //
203*53ee8cc1Swenshuai.xi 
204*53ee8cc1Swenshuai.xi 	{0x23A0, 0x80}, //
205*53ee8cc1Swenshuai.xi 	{0x23A2, 0x24}, //
206*53ee8cc1Swenshuai.xi 	{0x23A3, 0x02}, //
207*53ee8cc1Swenshuai.xi 	{0x23A4, 0x26}, //
208*53ee8cc1Swenshuai.xi 	{0x23A5, 0x02}, //
209*53ee8cc1Swenshuai.xi 	{0x23A6, 0x28}, //
210*53ee8cc1Swenshuai.xi 	{0x23A7, 0x02}, //
211*53ee8cc1Swenshuai.xi 
212*53ee8cc1Swenshuai.xi 	{0x23E2, 0x00},
213*53ee8cc1Swenshuai.xi 	{0x23E3, 0x00},
214*53ee8cc1Swenshuai.xi 
215*53ee8cc1Swenshuai.xi {_END_OF_TBL_, _END_OF_TBL_},
216*53ee8cc1Swenshuai.xi };
217*53ee8cc1Swenshuai.xi #endif
218*53ee8cc1Swenshuai.xi 
219*53ee8cc1Swenshuai.xi //_MINI_LVDS
220*53ee8cc1Swenshuai.xi code MST_MFC_RegUnitType_t tInitializeTcon22b_Comm[]=
221*53ee8cc1Swenshuai.xi {
222*53ee8cc1Swenshuai.xi 	{0x22A0, 0x01}, //DEOUT delay
223*53ee8cc1Swenshuai.xi 	{0x22A1, 0x00},
224*53ee8cc1Swenshuai.xi 	{0x22A2, 0x00}, //DEOUT_AHEAD delay
225*53ee8cc1Swenshuai.xi 	{0x22A3, 0x11},
226*53ee8cc1Swenshuai.xi {_END_OF_TBL_, _END_OF_TBL_},
227*53ee8cc1Swenshuai.xi };
228*53ee8cc1Swenshuai.xi 
229*53ee8cc1Swenshuai.xi code MST_MFC_RegUnitType_t tInitializeTcon23b_Comm[]=
230*53ee8cc1Swenshuai.xi  {
231*53ee8cc1Swenshuai.xi     //common
232*53ee8cc1Swenshuai.xi     //{0x2301, 0x00},
233*53ee8cc1Swenshuai.xi 	{0x2302, 0x7c},  // {8'h0, skew_reg, ivmd_on, bist_hw_set, swap_fs, fsmode, dskew} = { - 01111, 3'h4};
234*53ee8cc1Swenshuai.xi 	{0x2303, 0x00},
235*53ee8cc1Swenshuai.xi 	{0x2304, 0x50},  // {8'h0, f2line, fcol, f1a2line, age_8bit, 4'h0} = {- 0001 - }
236*53ee8cc1Swenshuai.xi 	{0x2305, 0x00},
237*53ee8cc1Swenshuai.xi 	{0x230A, 0x2d},
238*53ee8cc1Swenshuai.xi 	/*{0x2310, 0xc0},  // {5'h0, hres} = {- 11'h556 }
239*53ee8cc1Swenshuai.xi 	{0x2311, 0x03},
240*53ee8cc1Swenshuai.xi 	{0x2314, 0x38},  // {5'h0, vres } = {- 11'h300 }
241*53ee8cc1Swenshuai.xi 	{0x2315, 0x04},
242*53ee8cc1Swenshuai.xi 	{0x2318, 0x98},  // {4'h0, htot} = {- 12'h698 }
243*53ee8cc1Swenshuai.xi 	{0x2319, 0x08},*/
244*53ee8cc1Swenshuai.xi 	{0x231A, 0x20},  // {10'h0, cout_type, inmod_pad_sel, 4'h0} =  {- 00 -}
245*53ee8cc1Swenshuai.xi 	{0x231B, 0x00},
246*53ee8cc1Swenshuai.xi 	///{0x231C, 0x65},  // {5'h0, vtot } = {- 12'h326 }
247*53ee8cc1Swenshuai.xi 	///{0x231D, 0x04},
248*53ee8cc1Swenshuai.xi 	{0x231E, 0xc0},  // {8'h0, tp_drv, sth_drv, 1'b0, pol_newtype, 4'h0} = {- 11 - 0 -};
249*53ee8cc1Swenshuai.xi 	{0x231F, 0x00},
250*53ee8cc1Swenshuai.xi ///////Tcon setting by panel start/////////
251*53ee8cc1Swenshuai.xi     {0x23E0, 0xa6}, //2370
252*53ee8cc1Swenshuai.xi     {0x23E1, 0x03},
253*53ee8cc1Swenshuai.xi 	{0x23E4, 0x00}, //[15]en_minilvds [14:13]bit_flag [12:9]mini_channel_max
254*53ee8cc1Swenshuai.xi 	{0x23E5, 0xac},
255*53ee8cc1Swenshuai.xi     {0x23E8, 0x20},//2374
256*53ee8cc1Swenshuai.xi 	{0x23E9, 0x5b},
257*53ee8cc1Swenshuai.xi 	{0x23F4, 0x00},
258*53ee8cc1Swenshuai.xi 	{0x23F5, 0x40}, //GOE Mask
259*53ee8cc1Swenshuai.xi 	{0x23F6, 0x08},
260*53ee8cc1Swenshuai.xi 	{0x23F7, 0x00},
261*53ee8cc1Swenshuai.xi {_END_OF_TBL_, _END_OF_TBL_},
262*53ee8cc1Swenshuai.xi };
263*53ee8cc1Swenshuai.xi 
264*53ee8cc1Swenshuai.xi code MST_MFC_RegUnitType_t tInitializeTcon23b_42[]=
265*53ee8cc1Swenshuai.xi {
266*53ee8cc1Swenshuai.xi 	{0x233C, 0xe0}, // {5'h0, bank1_len[10:0]}
267*53ee8cc1Swenshuai.xi 	{0x233D, 0x01},
268*53ee8cc1Swenshuai.xi 	{0x2326, 0xd0}, //2313(GSP)
269*53ee8cc1Swenshuai.xi 	{0x2327, 0x01},
270*53ee8cc1Swenshuai.xi 	{0x2320, 0xdd},//2310(SOE)
271*53ee8cc1Swenshuai.xi 	{0x2321, 0x03},
272*53ee8cc1Swenshuai.xi 	{0x2322, 0x46},//2311
273*53ee8cc1Swenshuai.xi 	{0x2323, 0x00},
274*53ee8cc1Swenshuai.xi 	{0x2332, 0x14},//2319(GOE)
275*53ee8cc1Swenshuai.xi 	{0x2333, 0x03},
276*53ee8cc1Swenshuai.xi 	{0x2334, 0xD2},//231A
277*53ee8cc1Swenshuai.xi 	{0x2335, 0x00},
278*53ee8cc1Swenshuai.xi 	{0x232A, 0xa0},//2315(GSC)
279*53ee8cc1Swenshuai.xi 	{0x232B, 0x03},
280*53ee8cc1Swenshuai.xi 	{0x232E, 0x26},//2317
281*53ee8cc1Swenshuai.xi 	{0x232F, 0x02},
282*53ee8cc1Swenshuai.xi 	{0x2338, 0xC4},//231c(POL)
283*53ee8cc1Swenshuai.xi 	{0x2339, 0x03},
284*53ee8cc1Swenshuai.xi 	{0x23EC, 0x9F},//2376(FLK)
285*53ee8cc1Swenshuai.xi     {0x23ED, 0x02},
286*53ee8cc1Swenshuai.xi     {_END_OF_TBL_, _END_OF_TBL_},
287*53ee8cc1Swenshuai.xi };
288*53ee8cc1Swenshuai.xi 
289*53ee8cc1Swenshuai.xi code MST_MFC_RegUnitType_t tInitializeTcon23b_47[]=
290*53ee8cc1Swenshuai.xi {
291*53ee8cc1Swenshuai.xi 	{0x233C, 0xe0},  // {5'h0, bank1_len[10:0]}
292*53ee8cc1Swenshuai.xi 	{0x233D, 0x01},
293*53ee8cc1Swenshuai.xi 	{0x2326, 0xd0},//2313
294*53ee8cc1Swenshuai.xi 	{0x2327, 0x01},
295*53ee8cc1Swenshuai.xi     {0x2320, 0xd9},//2310
296*53ee8cc1Swenshuai.xi 	{0x2321, 0x03},
297*53ee8cc1Swenshuai.xi 	{0x2322, 0x4f},//2311
298*53ee8cc1Swenshuai.xi 	{0x2323, 0x00},
299*53ee8cc1Swenshuai.xi 	{0x2332, 0x21},//2319
300*53ee8cc1Swenshuai.xi 	{0x2333, 0x03},
301*53ee8cc1Swenshuai.xi 	{0x2334, 0x04},//231A
302*53ee8cc1Swenshuai.xi 	{0x2335, 0x01},
303*53ee8cc1Swenshuai.xi 	{0x232A, 0xa6},//2315
304*53ee8cc1Swenshuai.xi 	{0x232B, 0x03},
305*53ee8cc1Swenshuai.xi 	{0x232E, 0x26}, //2317  //0x73
306*53ee8cc1Swenshuai.xi 	{0x232F, 0x02},
307*53ee8cc1Swenshuai.xi 	{0x2338, 0xC4},//231c
308*53ee8cc1Swenshuai.xi 	{0x2339, 0x03},
309*53ee8cc1Swenshuai.xi 	{0x23EC, 0x85},//2376
310*53ee8cc1Swenshuai.xi     {0x23ED, 0x02},
311*53ee8cc1Swenshuai.xi     {_END_OF_TBL_, _END_OF_TBL_},
312*53ee8cc1Swenshuai.xi };
313*53ee8cc1Swenshuai.xi 
314*53ee8cc1Swenshuai.xi code MST_MFC_RegUnitType_t tInitializeTcon23b_55[]=
315*53ee8cc1Swenshuai.xi {
316*53ee8cc1Swenshuai.xi 	{0x233C, 0xe0},  // {5'h0, bank1_len[10:0]}
317*53ee8cc1Swenshuai.xi 	{0x233D, 0x01},
318*53ee8cc1Swenshuai.xi 	{0x2326, 0xd0},//2313
319*53ee8cc1Swenshuai.xi 	{0x2327, 0x01},
320*53ee8cc1Swenshuai.xi     {0x2320, 0xFF},//2310
321*53ee8cc1Swenshuai.xi 	{0x2321, 0x03},
322*53ee8cc1Swenshuai.xi 	{0x2322, 0x46},//2311
323*53ee8cc1Swenshuai.xi 	{0x2323, 0x00},
324*53ee8cc1Swenshuai.xi 	{0x2332, 0xA6},//2319
325*53ee8cc1Swenshuai.xi 	{0x2333, 0x03},
326*53ee8cc1Swenshuai.xi 	{0x2334, 0x52},//231A
327*53ee8cc1Swenshuai.xi 	{0x2335, 0x00},
328*53ee8cc1Swenshuai.xi 	{0x232A, 0xd9},//2315
329*53ee8cc1Swenshuai.xi 	{0x232B, 0x03},
330*53ee8cc1Swenshuai.xi 	{0x232E, 0x73}, //2317  //0x73
331*53ee8cc1Swenshuai.xi 	{0x232F, 0x02},
332*53ee8cc1Swenshuai.xi 	{0x2338, 0xC4},//231c
333*53ee8cc1Swenshuai.xi 	{0x2339, 0x03},
334*53ee8cc1Swenshuai.xi 	{0x23EC, 0xFF},//2376
335*53ee8cc1Swenshuai.xi     {0x23ED, 0x01},
336*53ee8cc1Swenshuai.xi     {_END_OF_TBL_, _END_OF_TBL_},
337*53ee8cc1Swenshuai.xi };
338*53ee8cc1Swenshuai.xi 
339*53ee8cc1Swenshuai.xi //_MINI_LVDS_GIP
340*53ee8cc1Swenshuai.xi code MST_MFC_RegUnitType_t tInitializeTcon22c[]=
341*53ee8cc1Swenshuai.xi {
342*53ee8cc1Swenshuai.xi 	{0x22A0, 0x01}, //DEOUT delay
343*53ee8cc1Swenshuai.xi 	{0x22A1, 0x00},
344*53ee8cc1Swenshuai.xi 	{0x22A2, 0x00}, //DEOUT_AHEAD delay
345*53ee8cc1Swenshuai.xi 	{0x22A3, 0x11},
346*53ee8cc1Swenshuai.xi {_END_OF_TBL_, _END_OF_TBL_},
347*53ee8cc1Swenshuai.xi };
348*53ee8cc1Swenshuai.xi 
349*53ee8cc1Swenshuai.xi code MST_MFC_RegUnitType_t tInitializeTcon23c[]=
350*53ee8cc1Swenshuai.xi {
351*53ee8cc1Swenshuai.xi     //common
352*53ee8cc1Swenshuai.xi     //{0x2301, 0x00},
353*53ee8cc1Swenshuai.xi 	{0x2302, 0x7c},  // {8'h0, skew_reg, ivmd_on, bist_hw_set, swap_fs, fsmode, dskew} = { - 01111, 3'h4};
354*53ee8cc1Swenshuai.xi 	{0x2303, 0x00},
355*53ee8cc1Swenshuai.xi 	{0x2304, 0x50},  // {8'h0, f2line, fcol, f1a2line, age_8bit, 4'h0} = {- 0001 - }
356*53ee8cc1Swenshuai.xi 	{0x2305, 0x00},
357*53ee8cc1Swenshuai.xi 	{0x230A, 0x2d},
358*53ee8cc1Swenshuai.xi 	{0x2310, 0xc0},  // {5'h0, hres} = {- 11'h556 }
359*53ee8cc1Swenshuai.xi 	{0x2311, 0x03},
360*53ee8cc1Swenshuai.xi 	{0x2314, 0x38},  // {5'h0, vres } = {- 11'h300 }
361*53ee8cc1Swenshuai.xi 	{0x2315, 0x04},
362*53ee8cc1Swenshuai.xi 	{0x2318, 0x98},  // {4'h0, htot} = {- 12'h698 }
363*53ee8cc1Swenshuai.xi 	{0x2319, 0x08},
364*53ee8cc1Swenshuai.xi 	{0x231A, 0x20},  // {10'h0, cout_type, inmod_pad_sel, 4'h0} =  {- 00 -}
365*53ee8cc1Swenshuai.xi 	{0x231B, 0x00},
366*53ee8cc1Swenshuai.xi 	{0x231C, 0x65},  // {5'h0, vtot } = {- 12'h326 }
367*53ee8cc1Swenshuai.xi 	{0x231D, 0x04},
368*53ee8cc1Swenshuai.xi 	{0x231E, 0xc0},  // {8'h0, tp_drv, sth_drv, 1'b0, pol_newtype, 4'h0} = {- 11 - 0 -};
369*53ee8cc1Swenshuai.xi 	{0x231F, 0x00},
370*53ee8cc1Swenshuai.xi 	{0x2320, 0xdd},//0xd9,  // {4'h0, tpst } = {- 12'h2b5 }
371*53ee8cc1Swenshuai.xi 	{0x2321, 0x03},
372*53ee8cc1Swenshuai.xi 	{0x2322, 0x46},//0x44,  // {8'h0, tppw} = {- 8'h63 }
373*53ee8cc1Swenshuai.xi 	{0x2323, 0x00},
374*53ee8cc1Swenshuai.xi 	{0x2326, 0xd0},  // {4'h0, stvst} = {- 12'h1c0 }
375*53ee8cc1Swenshuai.xi 	{0x2327, 0x01},
376*53ee8cc1Swenshuai.xi 	{0x232A, 0xa9},  // {4'h0, cpvst} = {- 12'h2e2 }
377*53ee8cc1Swenshuai.xi 	{0x232B, 0x03},
378*53ee8cc1Swenshuai.xi 	{0x232E, 0x73},  // {4'h0, cpvpw} = {- 12'h1a5 }
379*53ee8cc1Swenshuai.xi 	{0x232F, 0x02},
380*53ee8cc1Swenshuai.xi 	{0x2332, 0x52},  // {4'h0, oest} = {- 12'h28b }
381*53ee8cc1Swenshuai.xi 	{0x2333, 0x03},
382*53ee8cc1Swenshuai.xi 	{0x2334, 0xd2},  // {6'h0, oepw} = {- 10'h95 }
383*53ee8cc1Swenshuai.xi 	{0x2335, 0x00},
384*53ee8cc1Swenshuai.xi 	{0x2338, 0xC4},//0x00,  // {4'h0, poltg} = {- 12'h256} ;
385*53ee8cc1Swenshuai.xi 	{0x2339, 0x03},//0x04,
386*53ee8cc1Swenshuai.xi 	{0x233C, 0xe0},  // {5'h0, bank1_len[10:0]} = {- 11'h2ab}
387*53ee8cc1Swenshuai.xi 	{0x233D, 0x01},
388*53ee8cc1Swenshuai.xi     {0x23E0, 0xa6},
389*53ee8cc1Swenshuai.xi     {0x23E1, 0x03},
390*53ee8cc1Swenshuai.xi 	{0x23E4, 0x00}, //[15]en_minilvds [14:13]bit_flag [12:9]mini_channel_max
391*53ee8cc1Swenshuai.xi 	{0x23E5, 0xac},
392*53ee8cc1Swenshuai.xi 	{0x23E8, 0x20}, //HEMAN
393*53ee8cc1Swenshuai.xi 	{0x23E9, 0x5B},
394*53ee8cc1Swenshuai.xi     {0x23EC, 0xff},
395*53ee8cc1Swenshuai.xi     {0x23ED, 0x01},
396*53ee8cc1Swenshuai.xi 	{0x23F5, 0x40},
397*53ee8cc1Swenshuai.xi 	{0x23F6, 0x08},
398*53ee8cc1Swenshuai.xi 	{0x23F7, 0x00},
399*53ee8cc1Swenshuai.xi     //gip
400*53ee8cc1Swenshuai.xi 	//gpo0 //GCLK1
401*53ee8cc1Swenshuai.xi 	{0x234E, 0x20},//
402*53ee8cc1Swenshuai.xi 	{0x234F, 0x00},
403*53ee8cc1Swenshuai.xi 	{0x2348, 0x13},//[15]frame_tog_md,[14]line_tog_md,[13]first_2h_mode,[12]wave_polarity,[11:0]vst
404*53ee8cc1Swenshuai.xi     //{0x2349, 0x40},
405*53ee8cc1Swenshuai.xi 	{0x234A, 0x4b}, //[11:0]vend
406*53ee8cc1Swenshuai.xi 	{0x234B, 0x04},
407*53ee8cc1Swenshuai.xi 	{0x2340, 0x4b},//[15:12]n_frame_tog_l4[11:0]hst2
408*53ee8cc1Swenshuai.xi 	{0x2341, 0x04},
409*53ee8cc1Swenshuai.xi 	{0x2342, 0x4b},//[15:12]n_frame_tog_h4[11:0]hst1
410*53ee8cc1Swenshuai.xi 	{0x2343, 0x04},
411*53ee8cc1Swenshuai.xi 	{0x2344, 0x1f}, //[15:12]n_line_tog_l4[11:0]hpw1
412*53ee8cc1Swenshuai.xi 	{0x2345, 0x23},
413*53ee8cc1Swenshuai.xi 	{0x2346, 0x1f}, //[15:12]n_line_tog_h4[11:0]hpw2
414*53ee8cc1Swenshuai.xi 	{0x2347, 0x03},
415*53ee8cc1Swenshuai.xi 	{0x23A8, 0x4B},//hst3
416*53ee8cc1Swenshuai.xi 	{0x23A9, 0x04},
417*53ee8cc1Swenshuai.xi 	{0x23AA, 0x1f}, //hpw3
418*53ee8cc1Swenshuai.xi 	{0x23AB, 0x03},
419*53ee8cc1Swenshuai.xi 	//gpo1 //GCLK2
420*53ee8cc1Swenshuai.xi 	{0x235E, 0x20},//
421*53ee8cc1Swenshuai.xi 	{0x235F, 0x00},
422*53ee8cc1Swenshuai.xi 	{0x2358, 0x14},//[15]frame_tog_md,[14]line_tog_md,[13]first_2h_mode,[12]wave_polarity,[11:0]vst
423*53ee8cc1Swenshuai.xi 	{0x2359, 0x40},
424*53ee8cc1Swenshuai.xi 	{0x235A, 0x4c}, //[11:0]vend
425*53ee8cc1Swenshuai.xi 	{0x235B, 0x04},
426*53ee8cc1Swenshuai.xi 	{0x2350, 0x4B},//[15:12]n_frame_tog_l4[11:0]hst2
427*53ee8cc1Swenshuai.xi 	{0x2351, 0x04},
428*53ee8cc1Swenshuai.xi 	{0x2352, 0x4B},//[15:12]n_frame_tog_h4[11:0]hst1
429*53ee8cc1Swenshuai.xi 	{0x2353, 0x04},
430*53ee8cc1Swenshuai.xi 	{0x2354, 0x1f}, //[15:12]n_line_tog_l4[11:0]hpw1
431*53ee8cc1Swenshuai.xi 	{0x2355, 0x23},
432*53ee8cc1Swenshuai.xi 	{0x2356, 0x1f}, //[15:12]n_line_tog_h4[11:0]hpw2
433*53ee8cc1Swenshuai.xi 	{0x2357, 0x03},
434*53ee8cc1Swenshuai.xi 	{0x23AC, 0x4B},//hst3
435*53ee8cc1Swenshuai.xi 	{0x23AD, 0x04},
436*53ee8cc1Swenshuai.xi 	{0x23AE, 0x1f}, //hpw3
437*53ee8cc1Swenshuai.xi 	{0x23AF, 0x03},
438*53ee8cc1Swenshuai.xi 	//gpo2 //GCLK3
439*53ee8cc1Swenshuai.xi 	{0x236E, 0x20},//
440*53ee8cc1Swenshuai.xi 	{0x236F, 0x00},
441*53ee8cc1Swenshuai.xi 	{0x2368, 0x15},//[15]frame_tog_md,[14]line_tog_md,[13]first_2h_mode,[12]wave_polarity,[11:0]vst
442*53ee8cc1Swenshuai.xi 	{0x2369, 0x40},
443*53ee8cc1Swenshuai.xi 	{0x236A, 0x4d}, //[11:0]vend
444*53ee8cc1Swenshuai.xi 	{0x236B, 0x04},
445*53ee8cc1Swenshuai.xi 	{0x2360, 0x4b},//[15:12]n_frame_tog_l4[11:0]hst2
446*53ee8cc1Swenshuai.xi 	{0x2361, 0x04},
447*53ee8cc1Swenshuai.xi 	{0x2362, 0x4b},//[15:12]n_frame_tog_h4[11:0]hst1
448*53ee8cc1Swenshuai.xi 	{0x2363, 0x04},
449*53ee8cc1Swenshuai.xi 	{0x2364, 0x1f}, //[15:12]n_line_tog_l4[11:0]hpw1
450*53ee8cc1Swenshuai.xi 	{0x2365, 0x23},
451*53ee8cc1Swenshuai.xi 	{0x2366, 0x1f}, //[15:12]n_line_tog_h4[11:0]hpw2
452*53ee8cc1Swenshuai.xi 	{0x2367, 0x03},
453*53ee8cc1Swenshuai.xi 	{0x23B0, 0x4b},//hst3
454*53ee8cc1Swenshuai.xi 	{0x23B1, 0x04},
455*53ee8cc1Swenshuai.xi 	{0x23B2, 0x1f}, //hpw3
456*53ee8cc1Swenshuai.xi 	{0x23B3, 0x03},
457*53ee8cc1Swenshuai.xi 	//gpo3 //GCLK4
458*53ee8cc1Swenshuai.xi 	{0x237E, 0x20},//
459*53ee8cc1Swenshuai.xi 	{0x237F, 0x00},
460*53ee8cc1Swenshuai.xi     //{0x2378, 0x10},//[15]frame_tog_md,[14]line_tog_md,[13]first_2h_mode,[12]wave_polarity,[11:0]vst
461*53ee8cc1Swenshuai.xi 	{0x2379, 0x40},
462*53ee8cc1Swenshuai.xi 	{0x237A, 0x4e}, //[11:0]vend
463*53ee8cc1Swenshuai.xi 	{0x237B, 0x04},
464*53ee8cc1Swenshuai.xi 	{0x2370, 0x4b},//[15:12]n_frame_tog_l4[11:0]hst2
465*53ee8cc1Swenshuai.xi 	{0x2371, 0x04},
466*53ee8cc1Swenshuai.xi 	{0x2372, 0x4b},//[15:12]n_frame_tog_h4[11:0]hst1
467*53ee8cc1Swenshuai.xi 	{0x2373, 0x04},
468*53ee8cc1Swenshuai.xi 	{0x2374, 0x1f}, //[15:12]n_line_tog_l4[11:0]hpw1
469*53ee8cc1Swenshuai.xi 	{0x2375, 0x23},
470*53ee8cc1Swenshuai.xi 	{0x2376, 0x1f}, //[15:12]n_line_tog_h4[11:0]hpw2
471*53ee8cc1Swenshuai.xi 	{0x2377, 0x03},
472*53ee8cc1Swenshuai.xi 	{0x23B4, 0x4b},//hst3
473*53ee8cc1Swenshuai.xi 	{0x23B5, 0x04},
474*53ee8cc1Swenshuai.xi 	{0x23B6, 0x1f}, //hpw3
475*53ee8cc1Swenshuai.xi 	{0x23B7, 0x03},
476*53ee8cc1Swenshuai.xi 	//gpo4 //GCLK5
477*53ee8cc1Swenshuai.xi 	{0x238C, 0x55},// Output Tristate of 4 ,5 ,6 ,7
478*53ee8cc1Swenshuai.xi 	{0x238D, 0x00},
479*53ee8cc1Swenshuai.xi 	{0x238E, 0x00},//
480*53ee8cc1Swenshuai.xi 	{0x238F, 0x00},
481*53ee8cc1Swenshuai.xi     //{0x2388, 0x11},//[15]frame_tog_md,[14]line_tog_md,[13]first_2h_mode,[12]wave_polarity,[11:0]vst
482*53ee8cc1Swenshuai.xi 	{0x2389, 0x40},
483*53ee8cc1Swenshuai.xi 	{0x238A, 0x49}, //[11:0]vend
484*53ee8cc1Swenshuai.xi 	{0x238B, 0x04},
485*53ee8cc1Swenshuai.xi 	{0x2380, 0x4b},//[15:12]n_frame_tog_l4[11:0]hst2
486*53ee8cc1Swenshuai.xi 	{0x2381, 0x04},
487*53ee8cc1Swenshuai.xi 	{0x2382, 0x4b},//[15:12]n_frame_tog_h4[11:0]hst1
488*53ee8cc1Swenshuai.xi 	{0x2383, 0x04},
489*53ee8cc1Swenshuai.xi 	{0x2384, 0x1f}, //[15:12]n_line_tog_l4[11:0]hpw1
490*53ee8cc1Swenshuai.xi 	{0x2385, 0x23},
491*53ee8cc1Swenshuai.xi 	{0x2386, 0x1f}, //[15:12]n_line_tog_h4[11:0]hpw2
492*53ee8cc1Swenshuai.xi 	{0x2387, 0x03},
493*53ee8cc1Swenshuai.xi 	{0x23B8, 0x4b},//hst3
494*53ee8cc1Swenshuai.xi 	{0x23B9, 0x04},
495*53ee8cc1Swenshuai.xi 	{0x23BA, 0x1f}, //hpw3
496*53ee8cc1Swenshuai.xi 	{0x23BB, 0x03},
497*53ee8cc1Swenshuai.xi 	//gpo5 //GCLK6
498*53ee8cc1Swenshuai.xi     //{0x2392, 0x12},//[15]frame_tog_md,[14]line_tog_md,[13]first_2h_mode,[12]wave_polarity,[11:0]vst
499*53ee8cc1Swenshuai.xi 	{0x2393, 0x40},
500*53ee8cc1Swenshuai.xi 	{0x23A2, 0x4a}, //[11:0]vend
501*53ee8cc1Swenshuai.xi 	{0x23A3, 0x04},
502*53ee8cc1Swenshuai.xi 	{0x23BC, 0x4b},//[15:12]n_frame_tog_l4[11:0]hst1
503*53ee8cc1Swenshuai.xi 	{0x23BD, 0x04},
504*53ee8cc1Swenshuai.xi 	{0x23BE, 0x1f}, //[15:12]n_frame_tog_h4[11:0]hst2
505*53ee8cc1Swenshuai.xi 	{0x23BF, 0x03},
506*53ee8cc1Swenshuai.xi 	{0x23D4, 0x4b},//[15:12]n_line_tog_l4[11:0]hpw1
507*53ee8cc1Swenshuai.xi 	{0x23D5, 0x24},
508*53ee8cc1Swenshuai.xi 	{0x23D6, 0x1f}, //[15:12]n_line_tog_h4[11:0]hpw2
509*53ee8cc1Swenshuai.xi 	{0x23D7, 0x03},
510*53ee8cc1Swenshuai.xi 	{0x23D8, 0x4b},//hst3
511*53ee8cc1Swenshuai.xi 	{0x23D9, 0x04},
512*53ee8cc1Swenshuai.xi 	{0x23DA, 0x1f}, //hpw3
513*53ee8cc1Swenshuai.xi 	{0x23DB, 0x03},
514*53ee8cc1Swenshuai.xi 	//gpo6 //VST
515*53ee8cc1Swenshuai.xi     //{0x2394, 0x0F},//[14]line_tog_md,[12]wave_polarity,[11:0]vst
516*53ee8cc1Swenshuai.xi 	{0x2395, 0x40},
517*53ee8cc1Swenshuai.xi     //{0x23A4, 0x10},//[11:0]vend
518*53ee8cc1Swenshuai.xi     //{0x23A5, 0x40},
519*53ee8cc1Swenshuai.xi 	{0x23DC, 0x23},//[15:12]n_line_tog_l4[11:0]hpw1
520*53ee8cc1Swenshuai.xi 	{0x23DD, 0x10},
521*53ee8cc1Swenshuai.xi 	{0x23DE, 0x39},//[15:12]n_line_tog_h4[11:0]hst1
522*53ee8cc1Swenshuai.xi 	{0x23DF, 0x03},
523*53ee8cc1Swenshuai.xi 	//gpo5b //VDD_EVEN
524*53ee8cc1Swenshuai.xi 	{0x23C8, 0x10},
525*53ee8cc1Swenshuai.xi 	{0x23C9, 0x00},
526*53ee8cc1Swenshuai.xi 	{0x23C4, 0x00}, //[15]frame_tog_md,[12]wave_polarity,[11:0]vst
527*53ee8cc1Swenshuai.xi 	{0x23C5, 0x80},
528*53ee8cc1Swenshuai.xi 	{0x23C6, 0x00},
529*53ee8cc1Swenshuai.xi 	{0x23C7, 0x00},
530*53ee8cc1Swenshuai.xi 	//0x23a5 0x0000 ; //[11:0]vend
531*53ee8cc1Swenshuai.xi 	{0x23C0, 0x80},//[15:12]n_frame_tog_l4[11:0]hpw1
532*53ee8cc1Swenshuai.xi 	{0x23C1, 0x80},
533*53ee8cc1Swenshuai.xi 	{0x23C2, 0x20}, //[15:12]n_frame_tog_h4[11:0]hst1
534*53ee8cc1Swenshuai.xi 	{0x23C3, 0xD0},
535*53ee8cc1Swenshuai.xi 	//gpo6b //VDD_ODD
536*53ee8cc1Swenshuai.xi 	{0x23D2, 0x10},
537*53ee8cc1Swenshuai.xi 	{0x23D3, 0x00},
538*53ee8cc1Swenshuai.xi 	{0x23CE, 0x00}, //[15]frame_tog_md,[12]wave_polarity,[11:0]vst
539*53ee8cc1Swenshuai.xi 	{0x23CF, 0x90},
540*53ee8cc1Swenshuai.xi 	{0x23D0, 0x00},
541*53ee8cc1Swenshuai.xi 	{0x23D1, 0x00},
542*53ee8cc1Swenshuai.xi 	//0x23a5 0x0000 ; //[11:0]vend
543*53ee8cc1Swenshuai.xi 	{0x23CA, 0x20},//[15:12]n_frame_tog_l4[11:0]hpw1
544*53ee8cc1Swenshuai.xi 	{0x23CB, 0x80},
545*53ee8cc1Swenshuai.xi 	{0x23CC, 0x80},//[15:12]n_frame_tog_h4[11:0]hst1
546*53ee8cc1Swenshuai.xi 	{0x23CD, 0xD0},
547*53ee8cc1Swenshuai.xi 	{0x2312, 0xC0}, //En
548*53ee8cc1Swenshuai.xi 	{0x2300, 0xF8},
549*53ee8cc1Swenshuai.xi 	{0x2338, 0xC4}, //poltg
550*53ee8cc1Swenshuai.xi 	{0x2339, 0x03},
551*53ee8cc1Swenshuai.xi 	{0x2320, 0xdd}, //tpst
552*53ee8cc1Swenshuai.xi 	{0x2321, 0x03},
553*53ee8cc1Swenshuai.xi 	{0x2322, 0x78},//tppw
554*53ee8cc1Swenshuai.xi //Gip setting //don't change process////George recommnat //j081031
555*53ee8cc1Swenshuai.xi    	{0x23C8, 0x00},
556*53ee8cc1Swenshuai.xi 	{0x23D2, 0x00},
557*53ee8cc1Swenshuai.xi     {0x23F4, 0x00},
558*53ee8cc1Swenshuai.xi {_END_OF_TBL_, _END_OF_TBL_},
559*53ee8cc1Swenshuai.xi };
560*53ee8cc1Swenshuai.xi 
561*53ee8cc1Swenshuai.xi 
msInitializeColorMatrix(void)562*53ee8cc1Swenshuai.xi void msInitializeColorMatrix(void)
563*53ee8cc1Swenshuai.xi {
564*53ee8cc1Swenshuai.xi 	U8 i;
565*53ee8cc1Swenshuai.xi 
566*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteBit(0x20C0,  gmfcSysInfo.u8PanelCSC, _BIT0); // [0]:CSC [1]:dither [2]:round
567*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x3074, 0x00); // disable dither 6bit enable
568*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x3075, 0x2d);
569*53ee8cc1Swenshuai.xi 	for (i=0; i<tInitializeColorMatrix_count/*sizeof(tInitializeColorMatrix)*/; i++) // 0x3002 ~ 0x301d
570*53ee8cc1Swenshuai.xi 	{
571*53ee8cc1Swenshuai.xi 	    if((0x3002+i)==0x3017)
572*53ee8cc1Swenshuai.xi         	MDrv_MFC_WriteByteMask(0x3002+i, tInitializeColorMatrix[i], 0x7F);
573*53ee8cc1Swenshuai.xi 	    else
574*53ee8cc1Swenshuai.xi         	MDrv_MFC_WriteByte(0x3002+i, tInitializeColorMatrix[i]);
575*53ee8cc1Swenshuai.xi     }
576*53ee8cc1Swenshuai.xi 
577*53ee8cc1Swenshuai.xi     //printf("\r\nmsInitializeColorMatrix()");
578*53ee8cc1Swenshuai.xi }
579*53ee8cc1Swenshuai.xi 
msInitializeTcon(void)580*53ee8cc1Swenshuai.xi void msInitializeTcon(void)
581*53ee8cc1Swenshuai.xi {
582*53ee8cc1Swenshuai.xi     //if(gmfcSysInfo.u8PanelType == _MINI_LVDS_GIP)
583*53ee8cc1Swenshuai.xi     //    MDrv_MFC_WriteByte(0x1E0F, 0x10); //HEMAN
584*53ee8cc1Swenshuai.xi 
585*53ee8cc1Swenshuai.xi 	//MDrv_MFC_WriteBit(0x2330, 1, _BIT4);//GOE polarity swap-----I-Chang 0829
586*53ee8cc1Swenshuai.xi 	//MDrv_MFC_WriteByte(0x23F0, 0xC0);//reg_ctrl_low_sel and reg_de_delay-----I-Chang 0909
587*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteBit(0x23F0, 1, _BIT3);//reg_ctrl_low_sel-----I-Chang 0909
588*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteBit(0x23F0, 1, _BIT2);//reg_de_delay-----I-Chang 0909
589*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteBit(0x23F0, 0, _BIT1);//reg_de_delay-----I-Chang 0909
590*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteBit(0x23F0, 0, _BIT0);//reg_de_delay-----I-Chang 0909
591*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteBit(0x2313, 1, _BIT7);//reg_tp_md_sel-----I-Chang 0909
592*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteBit(0x230F, 1, _BIT3);//Request by Bryan, control load-----I-Chang 0901
593*53ee8cc1Swenshuai.xi 
594*53ee8cc1Swenshuai.xi     if(gmfcSysInfo.u8PanelType != _MINI_LVDS_GIP && gmfcSysInfo.u8PanelType != _MINI_LVDS_GIP_V5)
595*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteBit(0x238C, 0, _BIT0); //Output Enable FLK //j081031
596*53ee8cc1Swenshuai.xi 
597*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2398, 0x00);
598*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2399, 0x00);
599*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x23A6, 0xFF);
600*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x23A7, 0x00);
601*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x23E0, 0xFF);
602*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x23E1, 0x00);
603*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x23EC, 0xFF);
604*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x23ED, 0x00);
605*53ee8cc1Swenshuai.xi 	//msWriteBit(0x2330, 0, _BIT4);//GOE polarity swap-----I-Chang 0829
606*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteBit(0x2052, 0, _BIT0);//Only for visit; PC mode on-----I-Chang 0829
607*53ee8cc1Swenshuai.xi 	//printf("\r\nmsInitializeTcon()");
608*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteBit(0x2300, gmfcSysInfo.u8PanelBlankCPVC, _BIT6);
609*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteBit(0x2300, gmfcSysInfo.u8PanelBlankOEC, _BIT5);
610*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteBit(0x2300, gmfcSysInfo.u8PanelBlankTPC, _BIT4);
611*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteBit(0x2300, gmfcSysInfo.u8PanelBlankSTHC, _BIT3);
612*53ee8cc1Swenshuai.xi 
613*53ee8cc1Swenshuai.xi 	/* if(gmfcSysInfo.u8PanelType==_RSDS)
614*53ee8cc1Swenshuai.xi 	{
615*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteRegsTbl(0x2200, tInitializeTcon22a); // initialize all of bank
616*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteRegsTbl(0x2300, tInitializeTcon23a); // initialize all of bank
617*53ee8cc1Swenshuai.xi 	}
618*53ee8cc1Swenshuai.xi 	else */if(gmfcSysInfo.u8PanelType==_MINI_LVDS)
619*53ee8cc1Swenshuai.xi 	{
620*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteRegsTbl(0x2200, tInitializeTcon22b_Comm); // initialize all of bank
621*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteRegsTbl(0x2300, tInitializeTcon23b_Comm); // initialize all of bank
622*53ee8cc1Swenshuai.xi 
623*53ee8cc1Swenshuai.xi 		MDrv_MFC_Write2Bytes(0x2310, gmfcSysInfo.u16Width/2);
624*53ee8cc1Swenshuai.xi 		MDrv_MFC_Write2Bytes(0x2314, gmfcSysInfo.u16Height);
625*53ee8cc1Swenshuai.xi 		MDrv_MFC_Write2Bytes(0x2318, gmfcSysInfo.u16HTotal);
626*53ee8cc1Swenshuai.xi 		MDrv_MFC_Write2Bytes(0x231C, gmfcSysInfo.u16VTotal);
627*53ee8cc1Swenshuai.xi 
628*53ee8cc1Swenshuai.xi 
629*53ee8cc1Swenshuai.xi 		#if(CODEBASE_SEL == CODEBASE_51)
630*53ee8cc1Swenshuai.xi 	    	MDrv_MFC_WriteRegsTbl(0x2300, tInitializeTcon23b); //each panel
631*53ee8cc1Swenshuai.xi 	    #elif(PANEL_TYPE_SEL == PNL_LCEAll)
632*53ee8cc1Swenshuai.xi 			if(MDrv_MFC_ReadByte(0x1E48) == 1)
633*53ee8cc1Swenshuai.xi 			{
634*53ee8cc1Swenshuai.xi 				MDrv_MFC_WriteRegsTbl(0x2300, tInitializeTcon23b_42);
635*53ee8cc1Swenshuai.xi 			}
636*53ee8cc1Swenshuai.xi 			else if(MDrv_MFC_ReadByte(0x1E48) == 2)
637*53ee8cc1Swenshuai.xi 			{
638*53ee8cc1Swenshuai.xi 				MDrv_MFC_WriteRegsTbl(0x2300, tInitializeTcon23b_47);
639*53ee8cc1Swenshuai.xi 			}
640*53ee8cc1Swenshuai.xi         #else//55" need to refine the code
641*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteRegsTbl(0x2300, tInitializeTcon23b_55);
642*53ee8cc1Swenshuai.xi 		#endif
643*53ee8cc1Swenshuai.xi 	}
644*53ee8cc1Swenshuai.xi     else if(gmfcSysInfo.u8PanelType==_MINI_LVDS_GIP ||gmfcSysInfo.u8PanelType==_MINI_LVDS_GIP_V5)
645*53ee8cc1Swenshuai.xi 	{
646*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteRegsTbl(0x2200, tInitializeTcon22c); // initialize all of bank
647*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteRegsTbl(0x2300, tInitializeTcon23c); // initialize all of bank
648*53ee8cc1Swenshuai.xi 
649*53ee8cc1Swenshuai.xi         if(gmfcSysInfo.u8PanelType==_MINI_LVDS_GIP)//V4
650*53ee8cc1Swenshuai.xi         {
651*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2349, 0x60);
652*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2378, 0x16);
653*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2388, 0x17);
654*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2392, 0x18);
655*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2394, 0x14);
656*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x23A4, 0x15);
657*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x23A5, 0x00);
658*53ee8cc1Swenshuai.xi         }
659*53ee8cc1Swenshuai.xi         else//V5
660*53ee8cc1Swenshuai.xi         {
661*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2349, 0x40);
662*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2378, 0x10);
663*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2388, 0x11);
664*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2392, 0x12);
665*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2394, 0x0F);
666*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x23A4, 0x10);
667*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x23A5, 0x40);
668*53ee8cc1Swenshuai.xi 
669*53ee8cc1Swenshuai.xi             // Fitch T cont V5 setting
670*53ee8cc1Swenshuai.xi             // 20090810
671*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteBit(0x3240,  1, _BIT7);
672*53ee8cc1Swenshuai.xi             // 20090812
673*53ee8cc1Swenshuai.xi             //MDrv_MFC_WriteByte(0x3253, 0xC0);
674*53ee8cc1Swenshuai.xi             //MDrv_MFC_WriteByte(0x3252, 0xC0);
675*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x3276, 0xFC);
676*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x1E3F, 0x60);
677*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x1E40, 0xFC);
678*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2540, 0x05);
679*53ee8cc1Swenshuai.xi             // 20090813
680*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x23DC, 0x00);
681*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x23DD, 0x00);
682*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x23DE, 0x7E);
683*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x23DF, 0x03);
684*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x23C0, 0x01);
685*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x23C1, 0x80);
686*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x23C2, 0xE4);
687*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x23C3, 0xD0);
688*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x23CA, 0x64);
689*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x23CB, 0x80);
690*53ee8cc1Swenshuai.xi 
691*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x3250, (0x4C|MOD_POWER_ON_AFTER_INIT));
692*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x324E, 0x0F);
693*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x324F, 0x31);
694*53ee8cc1Swenshuai.xi 
695*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2505, 0x0D);
696*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2504, 0x3F);
697*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2507, 0x86);
698*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2506, 0x2F);
699*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2509, 0x04);
700*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2508, 0x00);
701*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x250B, 0x0D);
702*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x250A, 0x3F);
703*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x250D, 0x49);
704*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x250C, 0x7E);
705*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x250F, 0x04);
706*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x250E, 0x00);
707*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2541, 0x00);
708*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2540, 0x0F);
709*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2543, 0x00);
710*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2542, 0x0D);
711*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2555, 0x86);
712*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2554, 0x9F);
713*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2557, 0x00);
714*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x2556, 0x01);
715*53ee8cc1Swenshuai.xi         }
716*53ee8cc1Swenshuai.xi 
717*53ee8cc1Swenshuai.xi 		//*****HEMAN*******//
718*53ee8cc1Swenshuai.xi 		//Gip setting //don't change process////Bryan recommnat //j081031
719*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteByte(0x3270, 0x90);
720*53ee8cc1Swenshuai.xi         mfcSleepMs(20);
721*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteByte(0x238C, 0x51);
722*53ee8cc1Swenshuai.xi         mfcSleepMs(25);
723*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteByte(0x238C, 0x00);
724*53ee8cc1Swenshuai.xi 		//MDrv_MFC_WriteByte(0x3230, 0x00);
725*53ee8cc1Swenshuai.xi 		//MDrv_MFC_WriteByte(0x3231, 0x00);
726*53ee8cc1Swenshuai.xi 		//MDrv_MFC_WriteByte(0x3232, 0x00);
727*53ee8cc1Swenshuai.xi 		//MDrv_MFC_WriteByte(0x3233, 0x00);
728*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteByte(0x234E, 0x00);
729*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteByte(0x235E, 0x00);
730*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteByte(0x236E, 0x00);
731*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteByte(0x237E, 0x00);
732*53ee8cc1Swenshuai.xi 		//MDrv_MFC_WriteByte(0x238C, 0x15);
733*53ee8cc1Swenshuai.xi 		//MDrv_MFC_WriteByte(0x238C, 0x05);
734*53ee8cc1Swenshuai.xi 
735*53ee8cc1Swenshuai.xi         //MDrv_MFC_WriteByte(0x1E0E, 0x00);
736*53ee8cc1Swenshuai.xi 		//MDrv_MFC_WriteByte(0x1E0F, 0x00);
737*53ee8cc1Swenshuai.xi 	}
738*53ee8cc1Swenshuai.xi     if(S7M==0) MDrv_MFC_WriteByte(0x2301, 0x00); //not ttl
739*53ee8cc1Swenshuai.xi 
740*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x23F9, 0x20);
741*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteBit(0x1E0F, 0, _BIT4);
742*53ee8cc1Swenshuai.xi }
743*53ee8cc1Swenshuai.xi 
744*53ee8cc1Swenshuai.xi #if (OD_MODE_SEL != OD_MODE_OFF)
MDrv_MFC_InitializeOD(U8 * pODTbl)745*53ee8cc1Swenshuai.xi void MDrv_MFC_InitializeOD(U8* pODTbl)
746*53ee8cc1Swenshuai.xi {
747*53ee8cc1Swenshuai.xi 
748*53ee8cc1Swenshuai.xi 	U8 ucVal;
749*53ee8cc1Swenshuai.xi 	U32 wCount;
750*53ee8cc1Swenshuai.xi     U8 ucTARGET;
751*53ee8cc1Swenshuai.xi 
752*53ee8cc1Swenshuai.xi 	// od_top clock enable
753*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2802, 0x0e); // sram io enable
754*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2803, 0x00); // sram io enable
755*53ee8cc1Swenshuai.xi 
756*53ee8cc1Swenshuai.xi     // Uncompressed mode
757*53ee8cc1Swenshuai.xi     ucTARGET=*(pODTbl+9);// 10th
758*53ee8cc1Swenshuai.xi     for (wCount=0; wCount<272; wCount++)
759*53ee8cc1Swenshuai.xi 	{
760*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteByte(0x2806, (wCount == 9)?ucTARGET:(ucTARGET ^ *(pODTbl+wCount)));
761*53ee8cc1Swenshuai.xi 		MDrv_MFC_Write2Bytes(0x2804, wCount|0x8000);
762*53ee8cc1Swenshuai.xi 		while(_bit7_(MDrv_MFC_ReadByte(0x2805)));
763*53ee8cc1Swenshuai.xi 
764*53ee8cc1Swenshuai.xi 		//MDrv_MFC_Write2Bytes(0x2804, wCount|0x4000);
765*53ee8cc1Swenshuai.xi 		//printf(" ,-[%x]", MDrv_MFC_ReadByte(0x2808));
766*53ee8cc1Swenshuai.xi 		// while(_bit6_(MDrv_MFC_ReadByte(0x2805)));
767*53ee8cc1Swenshuai.xi     }
768*53ee8cc1Swenshuai.xi 
769*53ee8cc1Swenshuai.xi     ucTARGET=*(pODTbl+272+19);// 20th
770*53ee8cc1Swenshuai.xi     for (wCount=0; wCount<272; wCount++)
771*53ee8cc1Swenshuai.xi     {
772*53ee8cc1Swenshuai.xi         MDrv_MFC_WriteByte(0x280C, (wCount == 19)?ucTARGET:(ucTARGET ^ *(pODTbl+272+wCount)));
773*53ee8cc1Swenshuai.xi         MDrv_MFC_Write2Bytes(0x280A, wCount|0x8000);
774*53ee8cc1Swenshuai.xi     	while(_bit7_(MDrv_MFC_ReadByte(0x280B)));
775*53ee8cc1Swenshuai.xi     }
776*53ee8cc1Swenshuai.xi 
777*53ee8cc1Swenshuai.xi     ucTARGET=*(pODTbl+272*2+29);// 30th
778*53ee8cc1Swenshuai.xi     for (wCount=0; wCount<256; wCount++)
779*53ee8cc1Swenshuai.xi 	{
780*53ee8cc1Swenshuai.xi         MDrv_MFC_WriteByte(0x2812, (wCount == 29)?ucTARGET:(ucTARGET ^ *(pODTbl+272*2+wCount)));
781*53ee8cc1Swenshuai.xi         MDrv_MFC_Write2Bytes(0x2810, wCount|0x8000);
782*53ee8cc1Swenshuai.xi 	    	while(_bit7_(MDrv_MFC_ReadByte(0x2811)));
783*53ee8cc1Swenshuai.xi 	}
784*53ee8cc1Swenshuai.xi 
785*53ee8cc1Swenshuai.xi     ucTARGET=*(pODTbl+272*2+256+39);// 40th
786*53ee8cc1Swenshuai.xi     for (wCount=0; wCount<256; wCount++)
787*53ee8cc1Swenshuai.xi     {
788*53ee8cc1Swenshuai.xi         MDrv_MFC_WriteByte(0x2818, (wCount == 39)?ucTARGET:(ucTARGET ^ *(pODTbl+272*2+256+wCount)));
789*53ee8cc1Swenshuai.xi         MDrv_MFC_Write2Bytes(0x2816, wCount|0x8000);
790*53ee8cc1Swenshuai.xi         while(_bit7_(MDrv_MFC_ReadByte(0x2817)));
791*53ee8cc1Swenshuai.xi 	}
792*53ee8cc1Swenshuai.xi 
793*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2802, 0x00); // sram io disable
794*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2803, 0x00); // sram io disable
795*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2823, 0x5f); //[3:0] od_user_weight, [7:4] b_weight
796*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2824, 0x0c); // [7:0] od active threshold
797*53ee8cc1Swenshuai.xi 	// [7:0] Even request base address low byte
798*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x282A, (U8)(gmfcMiuBaseAddr.u32OdBaseEven>>4));
799*53ee8cc1Swenshuai.xi 	// [7:0] Even request base address med byte
800*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x282B, (U8)((gmfcMiuBaseAddr.u32OdBaseEven>>4)>>8));
801*53ee8cc1Swenshuai.xi 	// [7:0] Even request base address high byte
802*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x282C, (U8)((gmfcMiuBaseAddr.u32OdBaseEven>>4)>>16));
803*53ee8cc1Swenshuai.xi 
804*53ee8cc1Swenshuai.xi 	// [7:0] request limit address low byte
805*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x282E, (U8)(gmfcMiuBaseAddr.u32OdLimitEven>>4));
806*53ee8cc1Swenshuai.xi 	// [7:0] request limit address med byte
807*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x282F, (U8)((gmfcMiuBaseAddr.u32OdLimitEven>>4)>>8));
808*53ee8cc1Swenshuai.xi 	// [7:0] request limit address high byte
809*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2830, (U8)((gmfcMiuBaseAddr.u32OdLimitEven>>4)>>16));
810*53ee8cc1Swenshuai.xi 
811*53ee8cc1Swenshuai.xi 	// [7:0] reg_od_wadr_max_limit low byte
812*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2872, (U8)(gmfcMiuBaseAddr.u32OdSizehalf>>4));
813*53ee8cc1Swenshuai.xi 	// [7:0] reg_od_wadr_max_limit med byte
814*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2873, (U8)((gmfcMiuBaseAddr.u32OdSizehalf>>4)>>8));
815*53ee8cc1Swenshuai.xi 	// [7:0] reg_od_wadr_max_limit high byte
816*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2874, (U8)((gmfcMiuBaseAddr.u32OdSizehalf>>4)>>16));
817*53ee8cc1Swenshuai.xi 
818*53ee8cc1Swenshuai.xi 	// [7:0] reg_od_radr_max_limit low byte
819*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2876, (U8)(gmfcMiuBaseAddr.u32OdSizehalf>>4));
820*53ee8cc1Swenshuai.xi 	// [7:0] reg_od_radr_max_limit med byte
821*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2877, (U8)((gmfcMiuBaseAddr.u32OdSizehalf>>4)>>8));
822*53ee8cc1Swenshuai.xi 	// [7:0] reg_od_radr_max_limit high byte
823*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2878, (U8)((gmfcMiuBaseAddr.u32OdSizehalf>>4)>>16));
824*53ee8cc1Swenshuai.xi 
825*53ee8cc1Swenshuai.xi 	// [7:0] Odd request base address low byte
826*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x288E, (U8)(gmfcMiuBaseAddr.u32OdBaseOdd>>4));
827*53ee8cc1Swenshuai.xi 	// [7:0] Odd request base address med byte
828*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x288F, (U8)((gmfcMiuBaseAddr.u32OdBaseOdd>>4)>>8));
829*53ee8cc1Swenshuai.xi 	// [7:0] Odd request base address high byte
830*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2890, (U8)((gmfcMiuBaseAddr.u32OdBaseOdd>>4)>>16));
831*53ee8cc1Swenshuai.xi 
832*53ee8cc1Swenshuai.xi 	// [7:0] request limit address low byte
833*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2891, (U8)(gmfcMiuBaseAddr.u32OdLimitOdd>>4));
834*53ee8cc1Swenshuai.xi 	// [7:0] request limit address med byte
835*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2892, (U8)((gmfcMiuBaseAddr.u32OdLimitOdd>>4)>>8));
836*53ee8cc1Swenshuai.xi 	// [7:0] request limit address high byte
837*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2893, (U8)((gmfcMiuBaseAddr.u32OdLimitOdd>>4)>>16));
838*53ee8cc1Swenshuai.xi 
839*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2832, 0x30); // [7:0] reg_od_r_thrd
840*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2833, 0x7e); // [7:0] reg_od_wff_ack_thrd
841*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2834, 0x20); // [7:0] reg_od_r_thrd2
842*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2835, 0x50); // [7:0] reg_od_r_hpri
843*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2836, 0x30); // [7:0] reg_od_w_thrd
844*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2837, 0x04); // [7:0] reg_od_wlast_fire_thrd
845*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2838, 0x20); // [7:0] reg_od_w_thrd2
846*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2839, 0x50); // [7:0] reg_od_w_hpri
847*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2841, 0x00); // od request space stop cnt
848*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x285C, 0x80); // [7:0] reg_patchTh0
849*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x285D, 0x00); // [5:0] reg_patchTh1 : bias offset
850*53ee8cc1Swenshuai.xi     // [6] reg_patchTh1 : patch enable
851*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x285E, 0x88); // [3:0] reg_patchTh2
852*53ee8cc1Swenshuai.xi     // [7:4] reg_patchTh3
853*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2866, 0x10); // [7:0] reg_min3x3Length
854*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2867, 0x40); // [7:0] reg_max3x3Length
855*53ee8cc1Swenshuai.xi 
856*53ee8cc1Swenshuai.xi 	// [7:0] reg_od_mem_adr_limit low byte
857*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2859, (U8)(gmfcMiuBaseAddr.u32OdSize>>4));
858*53ee8cc1Swenshuai.xi 	// [7:0] reg_od_mem_adr_limit med byte
859*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x285A, (U8)((gmfcMiuBaseAddr.u32OdSize>>4)>>8));
860*53ee8cc1Swenshuai.xi 	// [7:0] reg_od_mem_adr_limit high byte
861*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x285B, (U8)((gmfcMiuBaseAddr.u32OdSize>>4)>>16));
862*53ee8cc1Swenshuai.xi 
863*53ee8cc1Swenshuai.xi 	// lsb request base address low byte
864*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x289E, (U8)(gmfcMiuBaseAddr.u32OdLsbBase>>4));
865*53ee8cc1Swenshuai.xi 	// lsb request base address med byte
866*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x289F, (U8)((gmfcMiuBaseAddr.u32OdLsbBase>>4)>>8));
867*53ee8cc1Swenshuai.xi 	// lsb request base address high byte
868*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x28A0, (U8)((gmfcMiuBaseAddr.u32OdLsbBase>>4)>>16));
869*53ee8cc1Swenshuai.xi 
870*53ee8cc1Swenshuai.xi 	// lsb request limit address low byte
871*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x28A1, (U8)(gmfcMiuBaseAddr.u32OdLsbLimit>>4));
872*53ee8cc1Swenshuai.xi 	// lsb request limit address med byte
873*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x28A2, (U8)((gmfcMiuBaseAddr.u32OdLsbLimit>>4)>>8));
874*53ee8cc1Swenshuai.xi 	// lsb request limit address high byte
875*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x28A3, (U8)((gmfcMiuBaseAddr.u32OdLsbLimit>>4)>>16));
876*53ee8cc1Swenshuai.xi 
877*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x28A4, 0x20); // [7:0] reg_od_r_thrd_lsb
878*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x28A5, 0x30); // [7:0] reg_od_r_thrd2_lsb
879*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x28A6, 0x50); // [7:0] reg_od_r_hpri_lsb
880*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x28A7, 0x50); // [7:0] reg_od_w_hpri_lsb
881*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x28A8, 0x20); // [7:0] reg_od_w_thrd_lsb
882*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x28A9, 0x30); // [7:0] reg_od_w_thrd2_lsb
883*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x28AB, 0x14); // [3:0] reg_vsync_start_delay
884*53ee8cc1Swenshuai.xi     // [5:4] reg_vsync_width_delay    // [7:6] reg_vfend_delay
885*53ee8cc1Swenshuai.xi 	if (gmfcMiuBaseAddr.u8OdMode==OD_MODE_666_COMPRESS)
886*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteByte(0x289B, 0x25);
887*53ee8cc1Swenshuai.xi 	else if (gmfcMiuBaseAddr.u8OdMode==OD_MODE_555_COMPRESS)
888*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteByte(0x289B, 0x15);
889*53ee8cc1Swenshuai.xi 	else
890*53ee8cc1Swenshuai.xi 		MDrv_MFC_WriteByte(0x289B, 0x05);
891*53ee8cc1Swenshuai.xi 
892*53ee8cc1Swenshuai.xi 	// [0]   reg_last_data_ctrl_en
893*53ee8cc1Swenshuai.xi     // [1]   reg_od1_last_dummy_pix_sel
894*53ee8cc1Swenshuai.xi     // [2]   reg_od1_last_rdy_sel
895*53ee8cc1Swenshuai.xi     // [6:4] reg_od_compress_mode
896*53ee8cc1Swenshuai.xi     // [7]   reg_od_lsb_wlast_force_req_disable
897*53ee8cc1Swenshuai.xi 
898*53ee8cc1Swenshuai.xi #if 0
899*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2824, 0x0c);  // od active threshold
900*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2825, 0x00);  // od active threshold
901*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2841, 0x00);  // od request space stop cnt
902*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x28AB, 0x14);  // od self generate vsync
903*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x286C, 0x07);  // [7:6] reg_od_status_sel
904*53ee8cc1Swenshuai.xi 	// [5]   reg_od_read_over_disable
905*53ee8cc1Swenshuai.xi 	// [4]   reg_od_read_over_sel
906*53ee8cc1Swenshuai.xi 	// [3]   reg_od_status_rst
907*53ee8cc1Swenshuai.xi 	// [2]   reg_od_rq_over_under_mask_en
908*53ee8cc1Swenshuai.xi 	// [1]   reg_od_next_frame_en
909*53ee8cc1Swenshuai.xi 	// [0]	 reg_od_active_sel
910*53ee8cc1Swenshuai.xi 
911*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x286D, 0x82);
912*53ee8cc1Swenshuai.xi 	// [7] reg_od1_write_data_over_sel, compress bypaa mode need to set 0
913*53ee8cc1Swenshuai.xi 	// [6:4] reg_od1_overflow_thrd,  compress mode check line buffer overflow threshold sel
914*53ee8cc1Swenshuai.xi 	// [3:0] reg_od1_underflow_thrd, compress mode check line buffer underflow threshold
915*53ee8cc1Swenshuai.xi 
916*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x284B, 0x80);
917*53ee8cc1Swenshuai.xi 	// [7] reg_od1_read_data_under_sel
918*53ee8cc1Swenshuai.xi 	// [6] reg_od1_linebuf_bypass_en
919*53ee8cc1Swenshuai.xi 
920*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2885, 0x80);  // [7:4] reg_od1_read_under_act_thrd
921*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x285F, 0xff);  // [7:0] reg_od1_rbuf_thrd
922*53ee8cc1Swenshuai.xi #endif
923*53ee8cc1Swenshuai.xi 	ucVal = OD_MODE_SEL;
924*53ee8cc1Swenshuai.xi 	ucVal &= 0x0F;
925*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByte(0x2820, 0x20|ucVal);
926*53ee8cc1Swenshuai.xi 	// [0]   od_en
927*53ee8cc1Swenshuai.xi 	// [3:1] od_mode , 000{444}, 001{565}, 010{y-8}, 011{333}, 100{666}, 101{compress}, 110{555}, 111{888}
928*53ee8cc1Swenshuai.xi 	// [4]   reserved
929*53ee8cc1Swenshuai.xi 	// [5]   reg_od_user_weight_sel
930*53ee8cc1Swenshuai.xi 	// [6]   od_h_range_en
931*53ee8cc1Swenshuai.xi 	// [7]   od_v_range_en
932*53ee8cc1Swenshuai.xi 
933*53ee8cc1Swenshuai.xi     //printf("MDrv_MFC_InitializeOD()\n");
934*53ee8cc1Swenshuai.xi }
935*53ee8cc1Swenshuai.xi #endif
936*53ee8cc1Swenshuai.xi 
MDrv_MFC_InitializePanel(void)937*53ee8cc1Swenshuai.xi void MDrv_MFC_InitializePanel(void)
938*53ee8cc1Swenshuai.xi {
939*53ee8cc1Swenshuai.xi 	msInitializeColorMatrix();
940*53ee8cc1Swenshuai.xi 
941*53ee8cc1Swenshuai.xi     if (gmfcSysInfo.u8PanelType == _MINI_LVDS || gmfcSysInfo.u8PanelType == _RSDS || gmfcSysInfo.u8PanelType == _MINI_LVDS_GIP || gmfcSysInfo.u8PanelType == _MINI_LVDS_GIP_V5)
942*53ee8cc1Swenshuai.xi 		msInitializeTcon();
943*53ee8cc1Swenshuai.xi 
944*53ee8cc1Swenshuai.xi 	#if (OD_MODE_SEL != OD_MODE_OFF)
945*53ee8cc1Swenshuai.xi 	if (gmfcMiuBaseAddr.u8OdMode != OD_MODE_OFF)
946*53ee8cc1Swenshuai.xi 	{
947*53ee8cc1Swenshuai.xi 		#if (PANEL_TYPE_SEL == PNL_LCEAll)
948*53ee8cc1Swenshuai.xi 			if( MDrv_MFC_ReadByte(0x1E48)>0 && MDrv_MFC_ReadByte(0x1E48)<=3 )
949*53ee8cc1Swenshuai.xi 			{
950*53ee8cc1Swenshuai.xi 				if(MDrv_MFC_ReadByte(0x1E48) == 1)//42"
951*53ee8cc1Swenshuai.xi 					MDrv_MFC_InitializeOD(tOD42);
952*53ee8cc1Swenshuai.xi 				else if(MDrv_MFC_ReadByte(0x1E48) == 2)//47"
953*53ee8cc1Swenshuai.xi 					MDrv_MFC_InitializeOD(tOD47);
954*53ee8cc1Swenshuai.xi 				else if(MDrv_MFC_ReadByte(0x1E48) == 3)//GIP 37"
955*53ee8cc1Swenshuai.xi 					MDrv_MFC_InitializeOD(tOD37);
956*53ee8cc1Swenshuai.xi 			}
957*53ee8cc1Swenshuai.xi         #else
958*53ee8cc1Swenshuai.xi                 //MDrv_MFC_InitializeOD(tOverDrive);  // calvin
959*53ee8cc1Swenshuai.xi                 MDrv_MFC_InitializeOD(tOD42);
960*53ee8cc1Swenshuai.xi 		#endif
961*53ee8cc1Swenshuai.xi 	}
962*53ee8cc1Swenshuai.xi 	#endif
963*53ee8cc1Swenshuai.xi 	//if(gmfcSysInfo.u8MirrorMode)
964*53ee8cc1Swenshuai.xi 		//MDrv_MFC_Write2Bytes(0x2F2C, (gmfcSysInfo.u16Height-50)&0x07FF); // for flip memc issue
965*53ee8cc1Swenshuai.xi }
966*53ee8cc1Swenshuai.xi 
MDrv_MFC_InitializeScTop2_Bypanel(void)967*53ee8cc1Swenshuai.xi void MDrv_MFC_InitializeScTop2_Bypanel(void)
968*53ee8cc1Swenshuai.xi {
969*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteRegsTbl(0x3200, tInitializeScTop2);
970*53ee8cc1Swenshuai.xi }
971*53ee8cc1Swenshuai.xi 
972*53ee8cc1Swenshuai.xi #if(CODEBASE_SEL == CODEBASE_LINUX)
MDrv_MFC_InitializeBypass(void)973*53ee8cc1Swenshuai.xi void MDrv_MFC_InitializeBypass(void)
974*53ee8cc1Swenshuai.xi {
975*53ee8cc1Swenshuai.xi 	U8 i;
976*53ee8cc1Swenshuai.xi 	//for bypass use
977*53ee8cc1Swenshuai.xi 	//IP CSC off: 20C0[0] = 0
978*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteBit(0x20C0,  0, _BIT0); // [0]:CSC [1]:dither [2]:round
979*53ee8cc1Swenshuai.xi 
980*53ee8cc1Swenshuai.xi 	//IP 121 horizontal and vertical disable: 2052[1:0] = 0
981*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByteMask(0x2052, 0, _BIT0|_BIT1);
982*53ee8cc1Swenshuai.xi 
983*53ee8cc1Swenshuai.xi 	//MFC off: 290E[3:0] = 0.
984*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteByteMask(0x290E, 0x00, 0x0F);
985*53ee8cc1Swenshuai.xi 
986*53ee8cc1Swenshuai.xi 	//Color matrixes disable: 3002[3] = 0, 3003~3015 set to 0.
987*53ee8cc1Swenshuai.xi         MDrv_MFC_WriteBit(0x3002, 0, _BIT3);
988*53ee8cc1Swenshuai.xi         for (i=0; i<0x13; i++) // 0x3003 ~ 0x3015
989*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x3003+i, 0);
990*53ee8cc1Swenshuai.xi 
991*53ee8cc1Swenshuai.xi 	//Brightness disable: 3016[1] = 0, 3018~301B set to 0.
992*53ee8cc1Swenshuai.xi 	MDrv_MFC_WriteBit(0x3016, 0, _BIT1);
993*53ee8cc1Swenshuai.xi         for (i=0; i<0x4; i++) // 0x3018 ~ 0x301B
994*53ee8cc1Swenshuai.xi             MDrv_MFC_WriteByte(0x3018+i, 0);
995*53ee8cc1Swenshuai.xi }
996*53ee8cc1Swenshuai.xi #endif
997*53ee8cc1Swenshuai.xi 
998*53ee8cc1Swenshuai.xi #endif
999