import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / misc / mediatek / lcm / nt35596_fhd_dsi_vdo_truly / nt35596_fhd_dsi_vdo_truly.c
1 #ifndef BUILD_LK
2 #include <linux/string.h>
3 #include <linux/kernel.h>
4 #endif
5 #include "lcm_drv.h"
6
7 #ifdef BUILD_LK
8 #include <platform/mt_gpio.h>
9 #include <string.h>
10 #elif defined(BUILD_UBOOT)
11 #include <asm/arch/mt_gpio.h>
12 #else
13 #include <mach/mt_gpio.h>
14 #endif
15 // ---------------------------------------------------------------------------
16 // Local Constants
17 // ---------------------------------------------------------------------------
18
19 #define FRAME_WIDTH (1080)
20 #define FRAME_HEIGHT (1920)
21
22 #define LCM_ID_NT35590 (0x90)
23
24 // ---------------------------------------------------------------------------
25 // Local Variables
26 // ---------------------------------------------------------------------------
27
28 static LCM_UTIL_FUNCS lcm_util = {0};
29
30 #define SET_RESET_PIN(v) (lcm_util.set_reset_pin((v)))
31
32 #define UDELAY(n) (lcm_util.udelay(n))
33 #define MDELAY(n) (lcm_util.mdelay(n))
34
35
36 // ---------------------------------------------------------------------------
37 // Local Functions
38 // ---------------------------------------------------------------------------
39
40 #define dsi_set_cmdq_V2(cmd, count, ppara, force_update) lcm_util.dsi_set_cmdq_V2(cmd, count, ppara, force_update)
41 #define dsi_set_cmdq(pdata, queue_size, force_update) lcm_util.dsi_set_cmdq(pdata, queue_size, force_update)
42 #define wrtie_cmd(cmd) lcm_util.dsi_write_cmd(cmd)
43 #define write_regs(addr, pdata, byte_nums) lcm_util.dsi_write_regs(addr, pdata, byte_nums)
44 #define read_reg(cmd) lcm_util.dsi_dcs_read_lcm_reg(cmd)
45 #define read_reg_v2(cmd, buffer, buffer_size) lcm_util.dsi_dcs_read_lcm_reg_v2(cmd, buffer, buffer_size)
46
47 #define dsi_lcm_set_gpio_out(pin, out) lcm_util.set_gpio_out(pin, out)
48 #define dsi_lcm_set_gpio_mode(pin, mode) lcm_util.set_gpio_mode(pin, mode)
49 #define dsi_lcm_set_gpio_dir(pin, dir) lcm_util.set_gpio_dir(pin, dir)
50 #define dsi_lcm_set_gpio_pull_enable(pin, en) lcm_util.set_gpio_pull_enable)(pin, en)
51
52 #define LCM_DSI_CMD_MODE 0
53
54 static bool lcm_is_init = false;
55
56 void TC358768_DCS_write_1A_1P(unsigned char cmd, unsigned char para)
57 {
58 unsigned int data_array[16];
59 //unsigned char buffer;
60
61 #if 0//ndef BUILD_LK
62
63 do {
64 data_array[0] =(0x00001500 | (para<<24) | (cmd<<16));
65 dsi_set_cmdq(data_array, 1, 1);
66
67 if (cmd == 0xFF)
68 break;
69
70 read_reg_v2(cmd, &buffer, 1);
71
72 if(buffer != para)
73 printk("%s, data_array = 0x%08x, (cmd, para, back) = (0x%02x, 0x%02x, 0x%02x)\n", __func__, data_array[0], cmd, para, buffer);
74
75 MDELAY(1);
76
77 } while (buffer != para);
78
79 #else
80
81 data_array[0] =(0x00001500 | (para<<24) | (cmd<<16));
82 dsi_set_cmdq(data_array, 1, 1);
83
84 //MDELAY(1);
85
86 #endif
87
88 }
89
90 #define TC358768_DCS_write_1A_0P(cmd) data_array[0]=(0x00000500 | (cmd<<16)); \
91 dsi_set_cmdq(data_array, 1, 1);
92
93 static void init_lcm_registers(void)
94 {
95 unsigned int data_array[16];
96 //unsigned char buffer[8];
97
98 #if 0//ndef BUILD_LK
99 data_array[0] = 0x00013700;// read id return two byte,version and id
100 dsi_set_cmdq(data_array, 1, 1);
101 #endif
102
103 #if 1
104 TC358768_DCS_write_1A_1P(0xFF,0xEE);
105 TC358768_DCS_write_1A_1P(0xFB,0x01);
106 TC358768_DCS_write_1A_1P(0x1F,0x45);
107 TC358768_DCS_write_1A_1P(0x24,0x4F);
108 TC358768_DCS_write_1A_1P(0x38,0xC8);
109 TC358768_DCS_write_1A_1P(0x39,0x2C);
110 TC358768_DCS_write_1A_1P(0x1E,0xBB);
111 TC358768_DCS_write_1A_1P(0x1D,0x0F);
112 TC358768_DCS_write_1A_1P(0x7E,0xB1);
113 //
114 TC358768_DCS_write_1A_1P(0xFF,0x00);
115 TC358768_DCS_write_1A_1P(0xFB,0x01);
116 TC358768_DCS_write_1A_1P(0x35,0x01);
117 //
118 TC358768_DCS_write_1A_1P(0xFF,0x01);
119 TC358768_DCS_write_1A_1P(0xFB,0x01);
120 TC358768_DCS_write_1A_1P(0x00,0x01);
121 TC358768_DCS_write_1A_1P(0x01,0x55);
122 TC358768_DCS_write_1A_1P(0x02,0x40);
123 TC358768_DCS_write_1A_1P(0x05,0x00);
124 TC358768_DCS_write_1A_1P(0x06,0x1B);
125 TC358768_DCS_write_1A_1P(0x07,0x24);
126 TC358768_DCS_write_1A_1P(0x08,0x0C);
127 TC358768_DCS_write_1A_1P(0x0B,0x87);
128 TC358768_DCS_write_1A_1P(0x0C,0x87);
129 TC358768_DCS_write_1A_1P(0x0E,0xB0);
130 TC358768_DCS_write_1A_1P(0x0F,0xB3);
131 TC358768_DCS_write_1A_1P(0x11,0x10);
132 TC358768_DCS_write_1A_1P(0x12,0x10);
133 TC358768_DCS_write_1A_1P(0x13,0x05);
134 TC358768_DCS_write_1A_1P(0x14,0x4A);
135 TC358768_DCS_write_1A_1P(0x15,0x18);
136 TC358768_DCS_write_1A_1P(0x16,0x18);
137 TC358768_DCS_write_1A_1P(0x18,0x00);
138 TC358768_DCS_write_1A_1P(0x19,0x77);
139 TC358768_DCS_write_1A_1P(0x1A,0x55);
140 TC358768_DCS_write_1A_1P(0x1B,0x13);
141 TC358768_DCS_write_1A_1P(0x1C,0x00);
142 TC358768_DCS_write_1A_1P(0x1D,0x00);
143 TC358768_DCS_write_1A_1P(0x1E,0x13);
144 TC358768_DCS_write_1A_1P(0x1F,0x00);
145 TC358768_DCS_write_1A_1P(0x23,0x00);
146 TC358768_DCS_write_1A_1P(0x24,0x00);
147 TC358768_DCS_write_1A_1P(0x25,0x00);
148 TC358768_DCS_write_1A_1P(0x26,0x00);
149 TC358768_DCS_write_1A_1P(0x27,0x00);
150 TC358768_DCS_write_1A_1P(0x28,0x00);
151 TC358768_DCS_write_1A_1P(0x35,0x00);
152 TC358768_DCS_write_1A_1P(0x66,0x00);
153 TC358768_DCS_write_1A_1P(0x58,0x82);
154 TC358768_DCS_write_1A_1P(0x59,0x02);
155 TC358768_DCS_write_1A_1P(0x5A,0x02);
156 TC358768_DCS_write_1A_1P(0x5B,0x02);
157 TC358768_DCS_write_1A_1P(0x5C,0x82);
158 TC358768_DCS_write_1A_1P(0x5D,0x82);
159 TC358768_DCS_write_1A_1P(0x5E,0x02);
160 TC358768_DCS_write_1A_1P(0x5F,0x02);
161 TC358768_DCS_write_1A_1P(0x72,0x31);
162 //
163 TC358768_DCS_write_1A_1P(0xFF,0x05);
164 TC358768_DCS_write_1A_1P(0xFB,0x01);
165 TC358768_DCS_write_1A_1P(0x00,0x01);
166 TC358768_DCS_write_1A_1P(0x01,0x0B);
167 TC358768_DCS_write_1A_1P(0x02,0x0C);
168 TC358768_DCS_write_1A_1P(0x03,0x09);
169 TC358768_DCS_write_1A_1P(0x04,0x0A);
170 TC358768_DCS_write_1A_1P(0x05,0x00);
171 TC358768_DCS_write_1A_1P(0x06,0x0F);
172 TC358768_DCS_write_1A_1P(0x07,0x10);
173 TC358768_DCS_write_1A_1P(0x08,0x00);
174 TC358768_DCS_write_1A_1P(0x09,0x00);
175 TC358768_DCS_write_1A_1P(0x0A,0x00);
176 TC358768_DCS_write_1A_1P(0x0B,0x00);
177 TC358768_DCS_write_1A_1P(0x0C,0x00);
178 TC358768_DCS_write_1A_1P(0x0D,0x13);
179 TC358768_DCS_write_1A_1P(0x0E,0x15);
180 TC358768_DCS_write_1A_1P(0x0F,0x17);
181 TC358768_DCS_write_1A_1P(0x10,0x01);
182 TC358768_DCS_write_1A_1P(0x11,0x0B);
183 TC358768_DCS_write_1A_1P(0x12,0x0C);
184 TC358768_DCS_write_1A_1P(0x13,0x09);
185 TC358768_DCS_write_1A_1P(0x14,0x0A);
186 TC358768_DCS_write_1A_1P(0x15,0x00);
187 TC358768_DCS_write_1A_1P(0x16,0x0F);
188 TC358768_DCS_write_1A_1P(0x17,0x10);
189 TC358768_DCS_write_1A_1P(0x18,0x00);
190 TC358768_DCS_write_1A_1P(0x19,0x00);
191 TC358768_DCS_write_1A_1P(0x1A,0x00);
192 TC358768_DCS_write_1A_1P(0x1B,0x00);
193 TC358768_DCS_write_1A_1P(0x1C,0x00);
194 TC358768_DCS_write_1A_1P(0x1D,0x13);
195 TC358768_DCS_write_1A_1P(0x1E,0x15);
196 TC358768_DCS_write_1A_1P(0x1F,0x17);
197 TC358768_DCS_write_1A_1P(0x20,0x00);
198 TC358768_DCS_write_1A_1P(0x21,0x03);
199 TC358768_DCS_write_1A_1P(0x22,0x01);
200 TC358768_DCS_write_1A_1P(0x23,0x40);
201 TC358768_DCS_write_1A_1P(0x24,0x40);
202 TC358768_DCS_write_1A_1P(0x25,0xED);
203 TC358768_DCS_write_1A_1P(0x29,0x58);
204 TC358768_DCS_write_1A_1P(0x2A,0x12);
205 TC358768_DCS_write_1A_1P(0x2B,0x01);
206 TC358768_DCS_write_1A_1P(0x4B,0x06);
207 TC358768_DCS_write_1A_1P(0x4C,0x11);
208 TC358768_DCS_write_1A_1P(0x4D,0x20);
209 TC358768_DCS_write_1A_1P(0x4E,0x02);
210 TC358768_DCS_write_1A_1P(0x4F,0x02);
211 TC358768_DCS_write_1A_1P(0x50,0x20);
212 TC358768_DCS_write_1A_1P(0x51,0x61);
213 TC358768_DCS_write_1A_1P(0x52,0x01);
214 TC358768_DCS_write_1A_1P(0x53,0x63);
215 TC358768_DCS_write_1A_1P(0x54,0x77);
216 TC358768_DCS_write_1A_1P(0x55,0xED);
217 TC358768_DCS_write_1A_1P(0x5B,0x00);
218 TC358768_DCS_write_1A_1P(0x5C,0x00);
219 TC358768_DCS_write_1A_1P(0x5D,0x00);
220 TC358768_DCS_write_1A_1P(0x5E,0x00);
221 TC358768_DCS_write_1A_1P(0x5F,0x15);
222 TC358768_DCS_write_1A_1P(0x60,0x75);
223 TC358768_DCS_write_1A_1P(0x61,0x00);
224 TC358768_DCS_write_1A_1P(0x62,0x00);
225 TC358768_DCS_write_1A_1P(0x63,0x00);
226 TC358768_DCS_write_1A_1P(0x64,0x00);
227 TC358768_DCS_write_1A_1P(0x65,0x00);
228 TC358768_DCS_write_1A_1P(0x66,0x00);
229 TC358768_DCS_write_1A_1P(0x67,0x00);
230 TC358768_DCS_write_1A_1P(0x68,0x04);
231 TC358768_DCS_write_1A_1P(0x69,0x00);
232 TC358768_DCS_write_1A_1P(0x6A,0x00);
233 TC358768_DCS_write_1A_1P(0x6C,0x40);
234 TC358768_DCS_write_1A_1P(0x75,0x01);
235 TC358768_DCS_write_1A_1P(0x76,0x01);
236 TC358768_DCS_write_1A_1P(0x7A,0x80);
237 TC358768_DCS_write_1A_1P(0x7B,0xC5);
238 TC358768_DCS_write_1A_1P(0x7C,0xD8);
239 TC358768_DCS_write_1A_1P(0x7D,0x60);
240 TC358768_DCS_write_1A_1P(0x7F,0x10);
241 TC358768_DCS_write_1A_1P(0x80,0x81);
242 TC358768_DCS_write_1A_1P(0x83,0x05);
243 TC358768_DCS_write_1A_1P(0x93,0x08);
244 TC358768_DCS_write_1A_1P(0x94,0x10);
245 TC358768_DCS_write_1A_1P(0x8A,0x00);
246 TC358768_DCS_write_1A_1P(0x9B,0x0F);
247 TC358768_DCS_write_1A_1P(0xEA,0xFF);
248 TC358768_DCS_write_1A_1P(0xEC,0x00);
249 //
250 //
251
252 //page selection cmd start
253 TC358768_DCS_write_1A_1P(0xFF,0x01);
254 TC358768_DCS_write_1A_1P(0xFB,0x01);
255 //page selection cmd end
256 //R(+) MCR cmd
257 TC358768_DCS_write_1A_1P(0x75,0x00);
258 TC358768_DCS_write_1A_1P(0x76,0x8E);
259 TC358768_DCS_write_1A_1P(0x77,0x00);
260 TC358768_DCS_write_1A_1P(0x78,0x90);
261 TC358768_DCS_write_1A_1P(0x79,0x00);
262 TC358768_DCS_write_1A_1P(0x7A,0xB2);
263 TC358768_DCS_write_1A_1P(0x7B,0x00);
264 TC358768_DCS_write_1A_1P(0x7C,0xC7);
265 TC358768_DCS_write_1A_1P(0x7D,0x00);
266 TC358768_DCS_write_1A_1P(0x7E,0xD7);
267 TC358768_DCS_write_1A_1P(0x7F,0x00);
268 TC358768_DCS_write_1A_1P(0x80,0xE9);
269 TC358768_DCS_write_1A_1P(0x81,0x00);
270 TC358768_DCS_write_1A_1P(0x82,0xF9);
271 TC358768_DCS_write_1A_1P(0x83,0x01);
272 TC358768_DCS_write_1A_1P(0x84,0x01);
273 TC358768_DCS_write_1A_1P(0x85,0x01);
274 TC358768_DCS_write_1A_1P(0x86,0x0B);
275 TC358768_DCS_write_1A_1P(0x87,0x01);
276 TC358768_DCS_write_1A_1P(0x88,0x3A);
277 TC358768_DCS_write_1A_1P(0x89,0x01);
278 TC358768_DCS_write_1A_1P(0x8A,0x5D);
279 TC358768_DCS_write_1A_1P(0x8B,0x01);
280 TC358768_DCS_write_1A_1P(0x8C,0x94);
281 TC358768_DCS_write_1A_1P(0x8D,0x01);
282 TC358768_DCS_write_1A_1P(0x8E,0xBC);
283 TC358768_DCS_write_1A_1P(0x8F,0x02);
284 TC358768_DCS_write_1A_1P(0x90,0x00);
285 TC358768_DCS_write_1A_1P(0x91,0x02);
286 TC358768_DCS_write_1A_1P(0x92,0x39);
287 TC358768_DCS_write_1A_1P(0x93,0x02);
288 TC358768_DCS_write_1A_1P(0x94,0x3A);
289 TC358768_DCS_write_1A_1P(0x95,0x02);
290 TC358768_DCS_write_1A_1P(0x96,0x6B);
291 TC358768_DCS_write_1A_1P(0x97,0x02);
292 TC358768_DCS_write_1A_1P(0x98,0xA2);
293 TC358768_DCS_write_1A_1P(0x99,0x02);
294 TC358768_DCS_write_1A_1P(0x9A,0xC7);
295 TC358768_DCS_write_1A_1P(0x9B,0x02);
296 TC358768_DCS_write_1A_1P(0x9C,0xFB);
297 TC358768_DCS_write_1A_1P(0x9D,0x03);
298 TC358768_DCS_write_1A_1P(0x9E,0x20);
299 TC358768_DCS_write_1A_1P(0x9F,0x03);
300 TC358768_DCS_write_1A_1P(0xA0,0x54);
301 TC358768_DCS_write_1A_1P(0xA2,0x03);
302 TC358768_DCS_write_1A_1P(0xA3,0x6D);
303 TC358768_DCS_write_1A_1P(0xA4,0x03);
304 TC358768_DCS_write_1A_1P(0xA5,0x80);
305 TC358768_DCS_write_1A_1P(0xA6,0x03);
306 TC358768_DCS_write_1A_1P(0xA7,0x81);
307 TC358768_DCS_write_1A_1P(0xA9,0x03);
308 TC358768_DCS_write_1A_1P(0xAA,0xC7);
309 TC358768_DCS_write_1A_1P(0xAB,0x03);
310 TC358768_DCS_write_1A_1P(0xAC,0xF0);
311 TC358768_DCS_write_1A_1P(0xAD,0x03);
312 TC358768_DCS_write_1A_1P(0xAE,0xF8);
313 TC358768_DCS_write_1A_1P(0xAF,0x03);
314 TC358768_DCS_write_1A_1P(0xB0,0xFD);
315 TC358768_DCS_write_1A_1P(0xB1,0x03);
316 TC358768_DCS_write_1A_1P(0xB2,0xFE);
317 //R(-) MCR cmd
318 TC358768_DCS_write_1A_1P(0xB3,0x00);
319 TC358768_DCS_write_1A_1P(0xB4,0x8E);
320 TC358768_DCS_write_1A_1P(0xB5,0x00);
321 TC358768_DCS_write_1A_1P(0xB6,0x90);
322 TC358768_DCS_write_1A_1P(0xB7,0x00);
323 TC358768_DCS_write_1A_1P(0xB8,0xB2);
324 TC358768_DCS_write_1A_1P(0xB9,0x00);
325 TC358768_DCS_write_1A_1P(0xBA,0xC7);
326 TC358768_DCS_write_1A_1P(0xBB,0x00);
327 TC358768_DCS_write_1A_1P(0xBC,0xD7);
328 TC358768_DCS_write_1A_1P(0xBD,0x00);
329 TC358768_DCS_write_1A_1P(0xBE,0xE9);
330 TC358768_DCS_write_1A_1P(0xBF,0x00);
331 TC358768_DCS_write_1A_1P(0xC0,0xF9);
332 TC358768_DCS_write_1A_1P(0xC1,0x01);
333 TC358768_DCS_write_1A_1P(0xC2,0x01);
334 TC358768_DCS_write_1A_1P(0xC3,0x01);
335 TC358768_DCS_write_1A_1P(0xC4,0x0B);
336 TC358768_DCS_write_1A_1P(0xC5,0x01);
337 TC358768_DCS_write_1A_1P(0xC6,0x3A);
338 TC358768_DCS_write_1A_1P(0xC7,0x01);
339 TC358768_DCS_write_1A_1P(0xC8,0x5D);
340 TC358768_DCS_write_1A_1P(0xC9,0x01);
341 TC358768_DCS_write_1A_1P(0xCA,0x94);
342 TC358768_DCS_write_1A_1P(0xCB,0x01);
343 TC358768_DCS_write_1A_1P(0xCC,0xBC);
344 TC358768_DCS_write_1A_1P(0xCD,0x02);
345 TC358768_DCS_write_1A_1P(0xCE,0x00);
346 TC358768_DCS_write_1A_1P(0xCF,0x02);
347 TC358768_DCS_write_1A_1P(0xD0,0x39);
348 TC358768_DCS_write_1A_1P(0xD1,0x02);
349 TC358768_DCS_write_1A_1P(0xD2,0x3A);
350 TC358768_DCS_write_1A_1P(0xD3,0x02);
351 TC358768_DCS_write_1A_1P(0xD4,0x6B);
352 TC358768_DCS_write_1A_1P(0xD5,0x02);
353 TC358768_DCS_write_1A_1P(0xD6,0xA2);
354 TC358768_DCS_write_1A_1P(0xD7,0x02);
355 TC358768_DCS_write_1A_1P(0xD8,0xC7);
356 TC358768_DCS_write_1A_1P(0xD9,0x02);
357 TC358768_DCS_write_1A_1P(0xDA,0xFB);
358 TC358768_DCS_write_1A_1P(0xDB,0x03);
359 TC358768_DCS_write_1A_1P(0xDC,0x20);
360 TC358768_DCS_write_1A_1P(0xDD,0x03);
361 TC358768_DCS_write_1A_1P(0xDE,0x54);
362 TC358768_DCS_write_1A_1P(0xDF,0x03);
363 TC358768_DCS_write_1A_1P(0xE0,0x6D);
364 TC358768_DCS_write_1A_1P(0xE1,0x03);
365 TC358768_DCS_write_1A_1P(0xE2,0x80);
366 TC358768_DCS_write_1A_1P(0xE3,0x03);
367 TC358768_DCS_write_1A_1P(0xE4,0x81);
368 TC358768_DCS_write_1A_1P(0xE5,0x03);
369 TC358768_DCS_write_1A_1P(0xE6,0xC7);
370 TC358768_DCS_write_1A_1P(0xE7,0x03);
371 TC358768_DCS_write_1A_1P(0xE8,0xF0);
372 TC358768_DCS_write_1A_1P(0xE9,0x03);
373 TC358768_DCS_write_1A_1P(0xEA,0xF8);
374 TC358768_DCS_write_1A_1P(0xEB,0x03);
375 TC358768_DCS_write_1A_1P(0xEC,0xFD);
376 TC358768_DCS_write_1A_1P(0xED,0x03);
377 TC358768_DCS_write_1A_1P(0xEE,0xFE);
378 //G(+) MCR cmd
379 TC358768_DCS_write_1A_1P(0xEF,0x00);
380 TC358768_DCS_write_1A_1P(0xF0,0x03);
381 TC358768_DCS_write_1A_1P(0xF1,0x00);
382 TC358768_DCS_write_1A_1P(0xF2,0x0B);
383 TC358768_DCS_write_1A_1P(0xF3,0x00);
384 TC358768_DCS_write_1A_1P(0xF4,0x0D);
385 TC358768_DCS_write_1A_1P(0xF5,0x00);
386 TC358768_DCS_write_1A_1P(0xF6,0x4A);
387 TC358768_DCS_write_1A_1P(0xF7,0x00);
388 TC358768_DCS_write_1A_1P(0xF8,0x71);
389 TC358768_DCS_write_1A_1P(0xF9,0x00);
390 TC358768_DCS_write_1A_1P(0xFA,0x8C);
391 //page selection cmd start
392 TC358768_DCS_write_1A_1P(0xFF,0x02);
393 TC358768_DCS_write_1A_1P(0xFB,0x01);
394 //page selection cmd end
395 TC358768_DCS_write_1A_1P(0x00,0x00);
396 TC358768_DCS_write_1A_1P(0x01,0xA1);
397 TC358768_DCS_write_1A_1P(0x02,0x00);
398 TC358768_DCS_write_1A_1P(0x03,0xB6);
399 TC358768_DCS_write_1A_1P(0x04,0x00);
400 TC358768_DCS_write_1A_1P(0x05,0xC9);
401 TC358768_DCS_write_1A_1P(0x06,0x00);
402 TC358768_DCS_write_1A_1P(0x07,0xFD);
403 TC358768_DCS_write_1A_1P(0x08,0x01);
404 TC358768_DCS_write_1A_1P(0x09,0x29);
405 TC358768_DCS_write_1A_1P(0x0A,0x01);
406 TC358768_DCS_write_1A_1P(0x0B,0x6B);
407 TC358768_DCS_write_1A_1P(0x0C,0x01);
408 TC358768_DCS_write_1A_1P(0x0D,0x9E);
409 TC358768_DCS_write_1A_1P(0x0E,0x01);
410 TC358768_DCS_write_1A_1P(0x0F,0xEB);
411 TC358768_DCS_write_1A_1P(0x10,0x02);
412 TC358768_DCS_write_1A_1P(0x11,0x25);
413 TC358768_DCS_write_1A_1P(0x12,0x02);
414 TC358768_DCS_write_1A_1P(0x13,0x27);
415 TC358768_DCS_write_1A_1P(0x14,0x02);
416 TC358768_DCS_write_1A_1P(0x15,0x5C);
417 TC358768_DCS_write_1A_1P(0x16,0x02);
418 TC358768_DCS_write_1A_1P(0x17,0x95);
419 TC358768_DCS_write_1A_1P(0x18,0x02);
420 TC358768_DCS_write_1A_1P(0x19,0xBA);
421 TC358768_DCS_write_1A_1P(0x1A,0x02);
422 TC358768_DCS_write_1A_1P(0x1B,0xEC);
423 TC358768_DCS_write_1A_1P(0x1C,0x03);
424 TC358768_DCS_write_1A_1P(0x1D,0x0C);
425 TC358768_DCS_write_1A_1P(0x1E,0x03);
426 TC358768_DCS_write_1A_1P(0x1F,0x34);
427 TC358768_DCS_write_1A_1P(0x20,0x03);
428 TC358768_DCS_write_1A_1P(0x21,0x3F);
429 TC358768_DCS_write_1A_1P(0x22,0x03);
430 TC358768_DCS_write_1A_1P(0x23,0x48);
431 TC358768_DCS_write_1A_1P(0x24,0x03);
432 TC358768_DCS_write_1A_1P(0x25,0x49);
433 TC358768_DCS_write_1A_1P(0x26,0x03);
434 TC358768_DCS_write_1A_1P(0x27,0x6B);
435 TC358768_DCS_write_1A_1P(0x28,0x03);
436 TC358768_DCS_write_1A_1P(0x29,0x7E);
437 TC358768_DCS_write_1A_1P(0x2A,0x03);
438 TC358768_DCS_write_1A_1P(0x2B,0x8F);
439 TC358768_DCS_write_1A_1P(0x2D,0x03);
440 TC358768_DCS_write_1A_1P(0x2F,0x9E);
441 TC358768_DCS_write_1A_1P(0x30,0x03);
442 TC358768_DCS_write_1A_1P(0x31,0xA0);
443 //G(-) MCR cmd
444 TC358768_DCS_write_1A_1P(0x32,0x00);
445 TC358768_DCS_write_1A_1P(0x33,0x03);
446 TC358768_DCS_write_1A_1P(0x34,0x00);
447 TC358768_DCS_write_1A_1P(0x35,0x0B);
448 TC358768_DCS_write_1A_1P(0x36,0x00);
449 TC358768_DCS_write_1A_1P(0x37,0x0D);
450 TC358768_DCS_write_1A_1P(0x38,0x00);
451 TC358768_DCS_write_1A_1P(0x39,0x4A);
452 TC358768_DCS_write_1A_1P(0x3A,0x00);
453 TC358768_DCS_write_1A_1P(0x3B,0x71);
454 TC358768_DCS_write_1A_1P(0x3D,0x00);
455 TC358768_DCS_write_1A_1P(0x3F,0x8C);
456 TC358768_DCS_write_1A_1P(0x40,0x00);
457 TC358768_DCS_write_1A_1P(0x41,0xA1);
458 TC358768_DCS_write_1A_1P(0x42,0x00);
459 TC358768_DCS_write_1A_1P(0x43,0xB6);
460 TC358768_DCS_write_1A_1P(0x44,0x00);
461 TC358768_DCS_write_1A_1P(0x45,0xC9);
462 TC358768_DCS_write_1A_1P(0x46,0x00);
463 TC358768_DCS_write_1A_1P(0x47,0xFD);
464 TC358768_DCS_write_1A_1P(0x48,0x01);
465 TC358768_DCS_write_1A_1P(0x49,0x29);
466 TC358768_DCS_write_1A_1P(0x4A,0x01);
467 TC358768_DCS_write_1A_1P(0x4B,0x6B);
468 TC358768_DCS_write_1A_1P(0x4C,0x01);
469 TC358768_DCS_write_1A_1P(0x4D,0x9E);
470 TC358768_DCS_write_1A_1P(0x4E,0x01);
471 TC358768_DCS_write_1A_1P(0x4F,0xEB);
472 TC358768_DCS_write_1A_1P(0x50,0x02);
473 TC358768_DCS_write_1A_1P(0x51,0x25);
474 TC358768_DCS_write_1A_1P(0x52,0x02);
475 TC358768_DCS_write_1A_1P(0x53,0x27);
476 TC358768_DCS_write_1A_1P(0x54,0x02);
477 TC358768_DCS_write_1A_1P(0x55,0x5C);
478 TC358768_DCS_write_1A_1P(0x56,0x02);
479 TC358768_DCS_write_1A_1P(0x58,0x95);
480 TC358768_DCS_write_1A_1P(0x59,0x02);
481 TC358768_DCS_write_1A_1P(0x5A,0xBA);
482 TC358768_DCS_write_1A_1P(0x5B,0x02);
483 TC358768_DCS_write_1A_1P(0x5C,0xEC);
484 TC358768_DCS_write_1A_1P(0x5D,0x03);
485 TC358768_DCS_write_1A_1P(0x5E,0x0C);
486 TC358768_DCS_write_1A_1P(0x5F,0x03);
487 TC358768_DCS_write_1A_1P(0x60,0x34);
488 TC358768_DCS_write_1A_1P(0x61,0x03);
489 TC358768_DCS_write_1A_1P(0x62,0x3F);
490 TC358768_DCS_write_1A_1P(0x63,0x03);
491 TC358768_DCS_write_1A_1P(0x64,0x48);
492 TC358768_DCS_write_1A_1P(0x65,0x03);
493 TC358768_DCS_write_1A_1P(0x66,0x49);
494 TC358768_DCS_write_1A_1P(0x67,0x03);
495 TC358768_DCS_write_1A_1P(0x68,0x6B);
496 TC358768_DCS_write_1A_1P(0x69,0x03);
497 TC358768_DCS_write_1A_1P(0x6A,0x7E);
498 TC358768_DCS_write_1A_1P(0x6B,0x03);
499 TC358768_DCS_write_1A_1P(0x6C,0x8F);
500 TC358768_DCS_write_1A_1P(0x6D,0x03);
501 TC358768_DCS_write_1A_1P(0x6E,0x9E);
502 TC358768_DCS_write_1A_1P(0x6F,0x03);
503 TC358768_DCS_write_1A_1P(0x70,0xA0);
504 //B(+) MCR cmd
505 TC358768_DCS_write_1A_1P(0x71,0x00);
506 TC358768_DCS_write_1A_1P(0x72,0xFB);
507 TC358768_DCS_write_1A_1P(0x73,0x00);
508 TC358768_DCS_write_1A_1P(0x74,0xFD);
509 TC358768_DCS_write_1A_1P(0x75,0x01);
510 TC358768_DCS_write_1A_1P(0x76,0x05);
511 TC358768_DCS_write_1A_1P(0x77,0x01);
512 TC358768_DCS_write_1A_1P(0x78,0x0D);
513 TC358768_DCS_write_1A_1P(0x79,0x01);
514 TC358768_DCS_write_1A_1P(0x7A,0x17);
515 TC358768_DCS_write_1A_1P(0x7B,0x01);
516 TC358768_DCS_write_1A_1P(0x7C,0x1F);
517 TC358768_DCS_write_1A_1P(0x7D,0x01);
518 TC358768_DCS_write_1A_1P(0x7E,0x28);
519 TC358768_DCS_write_1A_1P(0x7F,0x01);
520 TC358768_DCS_write_1A_1P(0x80,0x32);
521 TC358768_DCS_write_1A_1P(0x81,0x01);
522 TC358768_DCS_write_1A_1P(0x82,0x38);
523 TC358768_DCS_write_1A_1P(0x83,0x01);
524 TC358768_DCS_write_1A_1P(0x84,0x53);
525 TC358768_DCS_write_1A_1P(0x85,0x01);
526 TC358768_DCS_write_1A_1P(0x86,0x72);
527 TC358768_DCS_write_1A_1P(0x87,0x01);
528 TC358768_DCS_write_1A_1P(0x88,0x9B);
529 TC358768_DCS_write_1A_1P(0x89,0x01);
530 TC358768_DCS_write_1A_1P(0x8A,0xC3);
531 TC358768_DCS_write_1A_1P(0x8B,0x02);
532 TC358768_DCS_write_1A_1P(0x8C,0x01);
533 TC358768_DCS_write_1A_1P(0x8D,0x02);
534 TC358768_DCS_write_1A_1P(0x8E,0x36);
535 TC358768_DCS_write_1A_1P(0x8F,0x02);
536 TC358768_DCS_write_1A_1P(0x90,0x37);
537 TC358768_DCS_write_1A_1P(0x91,0x02);
538 TC358768_DCS_write_1A_1P(0x92,0x69);
539 TC358768_DCS_write_1A_1P(0x93,0x02);
540 TC358768_DCS_write_1A_1P(0x94,0xA1);
541 TC358768_DCS_write_1A_1P(0x95,0x02);
542 TC358768_DCS_write_1A_1P(0x96,0xC8);
543 TC358768_DCS_write_1A_1P(0x97,0x02);
544 TC358768_DCS_write_1A_1P(0x98,0xFF);
545 TC358768_DCS_write_1A_1P(0x99,0x03);
546 TC358768_DCS_write_1A_1P(0x9A,0x26);
547 TC358768_DCS_write_1A_1P(0x9B,0x03);
548 TC358768_DCS_write_1A_1P(0x9C,0x69);
549 TC358768_DCS_write_1A_1P(0x9D,0x03);
550 TC358768_DCS_write_1A_1P(0x9E,0x88);
551 TC358768_DCS_write_1A_1P(0x9F,0x03);
552 TC358768_DCS_write_1A_1P(0xA0,0xF8);
553 TC358768_DCS_write_1A_1P(0xA2,0x03);
554 TC358768_DCS_write_1A_1P(0xA3,0xF9);
555 TC358768_DCS_write_1A_1P(0xA4,0x03);
556 TC358768_DCS_write_1A_1P(0xA5,0xFE);
557 TC358768_DCS_write_1A_1P(0xA6,0x03);
558 TC358768_DCS_write_1A_1P(0xA7,0xFE);
559 TC358768_DCS_write_1A_1P(0xA9,0x03);
560 TC358768_DCS_write_1A_1P(0xAA,0xFE);
561 TC358768_DCS_write_1A_1P(0xAB,0x03);
562 TC358768_DCS_write_1A_1P(0xAC,0xFE);
563 TC358768_DCS_write_1A_1P(0xAD,0x03);
564 TC358768_DCS_write_1A_1P(0xAE,0xFE);
565 //B(-) MCR cmd
566 TC358768_DCS_write_1A_1P(0xAF,0x00);
567 TC358768_DCS_write_1A_1P(0xB0,0xFB);
568 TC358768_DCS_write_1A_1P(0xB1,0x00);
569 TC358768_DCS_write_1A_1P(0xB2,0xFD);
570 TC358768_DCS_write_1A_1P(0xB3,0x01);
571 TC358768_DCS_write_1A_1P(0xB4,0x05);
572 TC358768_DCS_write_1A_1P(0xB5,0x01);
573 TC358768_DCS_write_1A_1P(0xB6,0x0D);
574 TC358768_DCS_write_1A_1P(0xB7,0x01);
575 TC358768_DCS_write_1A_1P(0xB8,0x17);
576 TC358768_DCS_write_1A_1P(0xB9,0x01);
577 TC358768_DCS_write_1A_1P(0xBA,0x1F);
578 TC358768_DCS_write_1A_1P(0xBB,0x01);
579 TC358768_DCS_write_1A_1P(0xBC,0x28);
580 TC358768_DCS_write_1A_1P(0xBD,0x01);
581 TC358768_DCS_write_1A_1P(0xBE,0x32);
582 TC358768_DCS_write_1A_1P(0xBF,0x01);
583 TC358768_DCS_write_1A_1P(0xC0,0x38);
584 TC358768_DCS_write_1A_1P(0xC1,0x01);
585 TC358768_DCS_write_1A_1P(0xC2,0x53);
586 TC358768_DCS_write_1A_1P(0xC3,0x01);
587 TC358768_DCS_write_1A_1P(0xC4,0x72);
588 TC358768_DCS_write_1A_1P(0xC5,0x01);
589 TC358768_DCS_write_1A_1P(0xC6,0x9B);
590 TC358768_DCS_write_1A_1P(0xC7,0x01);
591 TC358768_DCS_write_1A_1P(0xC8,0xC3);
592 TC358768_DCS_write_1A_1P(0xC9,0x02);
593 TC358768_DCS_write_1A_1P(0xCA,0x01);
594 TC358768_DCS_write_1A_1P(0xCB,0x02);
595 TC358768_DCS_write_1A_1P(0xCC,0x36);
596 TC358768_DCS_write_1A_1P(0xCD,0x02);
597 TC358768_DCS_write_1A_1P(0xCE,0x37);
598 TC358768_DCS_write_1A_1P(0xCF,0x02);
599 TC358768_DCS_write_1A_1P(0xD0,0x69);
600 TC358768_DCS_write_1A_1P(0xD1,0x02);
601 TC358768_DCS_write_1A_1P(0xD2,0xA1);
602 TC358768_DCS_write_1A_1P(0xD3,0x02);
603 TC358768_DCS_write_1A_1P(0xD4,0xC8);
604 TC358768_DCS_write_1A_1P(0xD5,0x02);
605 TC358768_DCS_write_1A_1P(0xD6,0xFF);
606 TC358768_DCS_write_1A_1P(0xD7,0x03);
607 TC358768_DCS_write_1A_1P(0xD8,0x26);
608 TC358768_DCS_write_1A_1P(0xD9,0x03);
609 TC358768_DCS_write_1A_1P(0xDA,0x69);
610 TC358768_DCS_write_1A_1P(0xDB,0x03);
611 TC358768_DCS_write_1A_1P(0xDC,0x88);
612 TC358768_DCS_write_1A_1P(0xDD,0x03);
613 TC358768_DCS_write_1A_1P(0xDE,0xF8);
614 TC358768_DCS_write_1A_1P(0xDF,0x03);
615 TC358768_DCS_write_1A_1P(0xE0,0xF9);
616 TC358768_DCS_write_1A_1P(0xE1,0x03);
617 TC358768_DCS_write_1A_1P(0xE2,0xFE);
618 TC358768_DCS_write_1A_1P(0xE3,0x03);
619 TC358768_DCS_write_1A_1P(0xE4,0xFE);
620 TC358768_DCS_write_1A_1P(0xE5,0x03);
621 TC358768_DCS_write_1A_1P(0xE6,0xFE);
622 TC358768_DCS_write_1A_1P(0xE7,0x03);
623 TC358768_DCS_write_1A_1P(0xE8,0xFE);
624 TC358768_DCS_write_1A_1P(0xE9,0x03);
625 TC358768_DCS_write_1A_1P(0xEA,0xFE);
626
627 //
628 //
629 TC358768_DCS_write_1A_1P(0xFF,0x01);
630 TC358768_DCS_write_1A_1P(0xFB,0x01);
631 TC358768_DCS_write_1A_1P(0xFF,0x02);
632 TC358768_DCS_write_1A_1P(0xFB,0x01);
633 TC358768_DCS_write_1A_1P(0xFF,0x04);
634 TC358768_DCS_write_1A_1P(0xFB,0x01);
635 TC358768_DCS_write_1A_1P(0xFF,0x00);
636
637 TC358768_DCS_write_1A_1P(0xD3,0x14);
638 TC358768_DCS_write_1A_1P(0xD4,0x14);
639
640 TC358768_DCS_write_1A_0P(0x11);
641 //Delayus(150000);
642 MDELAY(150);
643 //
644 TC358768_DCS_write_1A_1P(0xFF,0x00);
645 //TC358768_DCS_write_1A_1P(0x34,0x00);
646 TC358768_DCS_write_1A_1P(0x35,0x00);
647 TC358768_DCS_write_1A_0P(0x29);
648 #else
649
650 TC358768_DCS_write_1A_1P(0xFF,0x01);
651
652 TC358768_DCS_write_1A_1P(0x00,0x01);
653 TC358768_DCS_write_1A_1P(0x01,0x55);
654 TC358768_DCS_write_1A_1P(0x02,0x40);
655 TC358768_DCS_write_1A_1P(0x05,0x40);
656 TC358768_DCS_write_1A_1P(0x06,0x19);
657 TC358768_DCS_write_1A_1P(0x07,0x1E);
658 TC358768_DCS_write_1A_1P(0x08,0x0C);
659 TC358768_DCS_write_1A_1P(0x0B,0x87);
660 TC358768_DCS_write_1A_1P(0x0C,0x87);
661 TC358768_DCS_write_1A_1P(0x0E,0xAE);
662 TC358768_DCS_write_1A_1P(0x0F,0xAC);
663 TC358768_DCS_write_1A_1P(0x10,0x32);
664 TC358768_DCS_write_1A_1P(0x11,0xEA);
665 TC358768_DCS_write_1A_1P(0x12,0xEA);
666 TC358768_DCS_write_1A_1P(0x13,0x00);
667 TC358768_DCS_write_1A_1P(0x14,0x4A);
668 TC358768_DCS_write_1A_1P(0x15,0x18);
669 TC358768_DCS_write_1A_1P(0x16,0x18);
670 TC358768_DCS_write_1A_1P(0x18,0x00);
671 TC358768_DCS_write_1A_1P(0x19,0x77);
672 TC358768_DCS_write_1A_1P(0x1A,0x55);
673 TC358768_DCS_write_1A_1P(0x1B,0x13);
674 TC358768_DCS_write_1A_1P(0x1D,0x00);
675 TC358768_DCS_write_1A_1P(0x1E,0x13);
676 TC358768_DCS_write_1A_1P(0x1F,0x00);
677 TC358768_DCS_write_1A_1P(0x23,0x00);
678 TC358768_DCS_write_1A_1P(0x24,0x00);
679 TC358768_DCS_write_1A_1P(0x25,0x00);
680 TC358768_DCS_write_1A_1P(0x26,0x00);
681 TC358768_DCS_write_1A_1P(0x27,0x00);
682 TC358768_DCS_write_1A_1P(0x28,0x00);
683 TC358768_DCS_write_1A_1P(0x35,0x00);
684 TC358768_DCS_write_1A_1P(0x66,0x00);
685 TC358768_DCS_write_1A_1P(0x58,0x82);
686 TC358768_DCS_write_1A_1P(0x59,0x02);
687 TC358768_DCS_write_1A_1P(0x5A,0x02);
688 TC358768_DCS_write_1A_1P(0x5B,0x02);
689 TC358768_DCS_write_1A_1P(0x5C,0x82);
690 TC358768_DCS_write_1A_1P(0x5D,0x82);
691 TC358768_DCS_write_1A_1P(0x5E,0x02);
692 TC358768_DCS_write_1A_1P(0x5F,0x02);
693 TC358768_DCS_write_1A_1P(0x72,0x31);
694 TC358768_DCS_write_1A_1P(0xFB,0x01);
695
696 TC358768_DCS_write_1A_1P(0xFF,0x05);
697 TC358768_DCS_write_1A_1P(0x00,0x01);
698 TC358768_DCS_write_1A_1P(0x01,0x0B);
699 TC358768_DCS_write_1A_1P(0x02,0x0C);
700 TC358768_DCS_write_1A_1P(0x03,0x09);
701 TC358768_DCS_write_1A_1P(0x04,0x0A);
702 TC358768_DCS_write_1A_1P(0x05,0x00);
703 TC358768_DCS_write_1A_1P(0x06,0x0F);
704 TC358768_DCS_write_1A_1P(0x07,0x10);
705 TC358768_DCS_write_1A_1P(0x08,0x00);
706 TC358768_DCS_write_1A_1P(0x09,0x00);
707 TC358768_DCS_write_1A_1P(0x0A,0x00);
708 TC358768_DCS_write_1A_1P(0x0B,0x00);
709 TC358768_DCS_write_1A_1P(0x0C,0x00);
710 TC358768_DCS_write_1A_1P(0x0D,0x13);
711 TC358768_DCS_write_1A_1P(0x0E,0x15);
712 TC358768_DCS_write_1A_1P(0x0F,0x17);
713 TC358768_DCS_write_1A_1P(0x10,0x01);
714 TC358768_DCS_write_1A_1P(0x11,0x0B);
715 TC358768_DCS_write_1A_1P(0x12,0x0C);
716 TC358768_DCS_write_1A_1P(0x13,0x09);
717 TC358768_DCS_write_1A_1P(0x14,0x0A);
718 TC358768_DCS_write_1A_1P(0x15,0x00);
719 TC358768_DCS_write_1A_1P(0x16,0x0F);
720 TC358768_DCS_write_1A_1P(0x17,0x10);
721 TC358768_DCS_write_1A_1P(0x18,0x00);
722 TC358768_DCS_write_1A_1P(0x19,0x00);
723 TC358768_DCS_write_1A_1P(0x1A,0x00);
724 TC358768_DCS_write_1A_1P(0x1B,0x00);
725 TC358768_DCS_write_1A_1P(0x1C,0x00);
726 TC358768_DCS_write_1A_1P(0x1D,0x13);
727 TC358768_DCS_write_1A_1P(0x1E,0x15);
728 TC358768_DCS_write_1A_1P(0x1F,0x17);
729 TC358768_DCS_write_1A_1P(0x20,0x00);
730 TC358768_DCS_write_1A_1P(0x21,0x03);
731 TC358768_DCS_write_1A_1P(0x22,0x01);
732 TC358768_DCS_write_1A_1P(0x23,0x40);
733 TC358768_DCS_write_1A_1P(0x24,0x40);
734 TC358768_DCS_write_1A_1P(0x25,0xED);
735 TC358768_DCS_write_1A_1P(0x29,0x58);
736 TC358768_DCS_write_1A_1P(0x2A,0x12);
737 TC358768_DCS_write_1A_1P(0x2B,0x01);
738 TC358768_DCS_write_1A_1P(0x4B,0x06);
739 TC358768_DCS_write_1A_1P(0x4C,0x11);
740 TC358768_DCS_write_1A_1P(0x4D,0x20);
741 TC358768_DCS_write_1A_1P(0x4E,0x02);
742 TC358768_DCS_write_1A_1P(0x4F,0x02);
743 TC358768_DCS_write_1A_1P(0x50,0x20);
744 TC358768_DCS_write_1A_1P(0x51,0x61);
745 TC358768_DCS_write_1A_1P(0x52,0x01);
746 TC358768_DCS_write_1A_1P(0x53,0x63);
747 TC358768_DCS_write_1A_1P(0x54,0x77);
748 TC358768_DCS_write_1A_1P(0x55,0xED);
749 TC358768_DCS_write_1A_1P(0x5B,0x00);
750 TC358768_DCS_write_1A_1P(0x5C,0x00);
751 TC358768_DCS_write_1A_1P(0x5D,0x00);
752 TC358768_DCS_write_1A_1P(0x5E,0x00);
753 TC358768_DCS_write_1A_1P(0x5F,0x15);
754 TC358768_DCS_write_1A_1P(0x60,0x75);
755 TC358768_DCS_write_1A_1P(0x61,0x00);
756 TC358768_DCS_write_1A_1P(0x62,0x00);
757 TC358768_DCS_write_1A_1P(0x63,0x00);
758 TC358768_DCS_write_1A_1P(0x64,0x00);
759 TC358768_DCS_write_1A_1P(0x65,0x00);
760 TC358768_DCS_write_1A_1P(0x66,0x00);
761 TC358768_DCS_write_1A_1P(0x67,0x00);
762 TC358768_DCS_write_1A_1P(0x68,0x04);
763 TC358768_DCS_write_1A_1P(0x69,0x00);
764 TC358768_DCS_write_1A_1P(0x6A,0x00);
765 TC358768_DCS_write_1A_1P(0x6C,0x40);
766 TC358768_DCS_write_1A_1P(0x75,0x01);
767 TC358768_DCS_write_1A_1P(0x76,0x01);
768 TC358768_DCS_write_1A_1P(0x7A,0x80);
769 TC358768_DCS_write_1A_1P(0x7B,0xC5);
770 TC358768_DCS_write_1A_1P(0x7C,0xD8);
771 TC358768_DCS_write_1A_1P(0x7D,0x60);
772 TC358768_DCS_write_1A_1P(0x7F,0x10);
773 TC358768_DCS_write_1A_1P(0x80,0x81);
774 TC358768_DCS_write_1A_1P(0x83,0x05);
775 TC358768_DCS_write_1A_1P(0x8A,0x00);
776 TC358768_DCS_write_1A_1P(0x9B,0x0F);
777 TC358768_DCS_write_1A_1P(0xFB,0x01);
778 TC358768_DCS_write_1A_1P(0xEA,0xFF);
779 TC358768_DCS_write_1A_1P(0xEC,0x00);
780
781 TC358768_DCS_write_1A_1P(0xFF,0xEE);
782 TC358768_DCS_write_1A_1P(0x46,0x63);
783 TC358768_DCS_write_1A_1P(0xFB,0x01);
784
785 TC358768_DCS_write_1A_1P(0xFF,0x00);
786 TC358768_DCS_write_1A_1P(0x35,0x00);
787 TC358768_DCS_write_1A_1P(0xD3,0x14);
788 TC358768_DCS_write_1A_1P(0xD4,0x14);
789
790 TC358768_DCS_write_1A_0P(0x11);
791 MDELAY(150);
792 TC358768_DCS_write_1A_0P(0x29);
793
794 #endif
795
796 #if 0//ndef BUILD_LK
797 read_reg_v2(0xDA, &buffer[0], 1);
798 read_reg_v2(0xDB, &buffer[1], 1);
799 read_reg_v2(0xDC, &buffer[2], 1);
800
801 read_reg_v2(0xF4, &buffer[3], 1);
802
803 printk("%s, ID = (0x%02x, 0x%02x, 0x%02x, 0x%02x)\n", __func__, buffer[0], buffer[1], buffer[2], buffer[3]);
804 #endif
805
806 }
807
808 // ---------------------------------------------------------------------------
809 // LCM Driver Implementations
810 // ---------------------------------------------------------------------------
811
812 static void lcm_set_util_funcs(const LCM_UTIL_FUNCS *util)
813 {
814 memcpy(&lcm_util, util, sizeof(LCM_UTIL_FUNCS));
815 }
816
817
818 static void lcm_get_params(LCM_PARAMS *params)
819 {
820
821 memset(params, 0, sizeof(LCM_PARAMS));
822
823 params->type = LCM_TYPE_DSI;
824
825 params->width = FRAME_WIDTH;
826 params->height = FRAME_HEIGHT;
827
828 // enable tearing-free
829 params->dbi.te_mode = LCM_DBI_TE_MODE_VSYNC_ONLY;
830 params->dbi.te_edge_polarity = LCM_POLARITY_RISING;
831
832 #if (LCM_DSI_CMD_MODE)
833 params->dsi.mode = CMD_MODE;
834 #else
835 params->dsi.mode = BURST_VDO_MODE;
836 #endif
837
838 // DSI
839 /* Command mode setting */
840 //1 Three lane or Four lane
841 params->dsi.LANE_NUM = LCM_FOUR_LANE;
842 //The following defined the fomat for data coming from LCD engine.
843 params->dsi.data_format.color_order = LCM_COLOR_ORDER_RGB;
844 params->dsi.data_format.trans_seq = LCM_DSI_TRANS_SEQ_MSB_FIRST;
845 params->dsi.data_format.padding = LCM_DSI_PADDING_ON_LSB;
846 params->dsi.data_format.format = LCM_DSI_FORMAT_RGB888;
847
848 // Highly depends on LCD driver capability.
849 // Not support in MT6573
850 params->dsi.packet_size=256;
851
852 // Video mode setting
853 params->dsi.intermediat_buffer_num = 0;//because DSI/DPI HW design change, this parameters should be 0 when video mode in MT658X; or memory leakage
854
855 params->dsi.PS=LCM_PACKED_PS_24BIT_RGB888;
856 params->dsi.word_count=720*3;
857
858
859 params->dsi.vertical_sync_active = 2;
860 params->dsi.vertical_backporch = 18;
861 params->dsi.vertical_frontporch = 20;
862 params->dsi.vertical_active_line = FRAME_HEIGHT;
863
864 params->dsi.horizontal_sync_active = 4;
865 params->dsi.horizontal_backporch = 118;
866 params->dsi.horizontal_frontporch = 118;
867 params->dsi.horizontal_active_pixel = FRAME_WIDTH;
868
869 // Bit rate calculation
870 //1 Every lane speed
871 params->dsi.pll_div1=0; // div1=0,1,2,3;div1_real=1,2,4,4 ----0: 546Mbps 1:273Mbps
872 params->dsi.pll_div2=0; // div2=0,1,2,3;div1_real=1,2,4,4
873 params->dsi.fbk_div =0x12; // fref=26MHz, fvco=fref*(fbk_div+1)*2/(div1_real*div2_real)
874
875 }
876
877 static void lcm_init(void)
878 {
879 lcm_is_init = true;
880 // Enable EN_PWR for NT50198 PMIC
881 dsi_lcm_set_gpio_mode(GPIO139, GPIO_MODE_GPIO);
882 dsi_lcm_set_gpio_dir(GPIO139, GPIO_DIR_OUT);
883 dsi_lcm_set_gpio_out(GPIO139, GPIO_OUT_ONE);
884
885 SET_RESET_PIN(1);
886 SET_RESET_PIN(0);
887 MDELAY(10);
888
889 SET_RESET_PIN(1);
890 MDELAY(20);
891
892 init_lcm_registers();
893 }
894
895 static void lcm_suspend(void)
896 {
897 unsigned int data_array[16];
898 //unsigned char buffer[2];
899
900 #if 0//ndef BUILD_LK
901 data_array[0] = 0x00013700;// read id return two byte,version and id
902 dsi_set_cmdq(data_array, 1, 1);
903
904 read_reg_v2(0xFE, buffer, 1);
905 printk("%s, kernel nt35596 horse debug: nt35596 id = 0x%08x\n", __func__, buffer[0]);
906 #endif
907
908 data_array[0]=0x00280500; // Display Off
909 dsi_set_cmdq(data_array, 1, 1);
910
911 data_array[0] = 0x00100500; // Sleep In
912 dsi_set_cmdq(data_array, 1, 1);
913
914 MDELAY(120);
915 SET_RESET_PIN(0);
916
917 dsi_lcm_set_gpio_out(GPIO139, GPIO_OUT_ZERO);
918
919 lcm_is_init = false;
920 }
921
922
923 static void lcm_resume(void)
924 {
925 //unsigned int data_array[16];
926 //unsigned char buffer[2];
927 if(!lcm_is_init)
928 lcm_init();
929
930 #if 0//ndef BUILD_LK
931 data_array[0] = 0x00013700;// read id return two byte,version and id
932 dsi_set_cmdq(data_array, 1, 1);
933
934 read_reg_v2(0xFE, buffer, 1);
935 printk("%s, kernel nt35596 horse debug: nt35596 id = 0x%08x\n", __func__, buffer[0]);
936 #endif
937
938 //TC358768_DCS_write_1A_0P(0x11); // Sleep Out
939 //MDELAY(150);
940
941 //TC358768_DCS_write_1A_0P(0x29); // Display On
942
943 }
944
945 #if (LCM_DSI_CMD_MODE)
946 static void lcm_update(unsigned int x, unsigned int y,
947 unsigned int width, unsigned int height)
948 {
949 unsigned int x0 = x;
950 unsigned int y0 = y;
951 unsigned int x1 = x0 + width - 1;
952 unsigned int y1 = y0 + height - 1;
953
954 unsigned char x0_MSB = ((x0>>8)&0xFF);
955 unsigned char x0_LSB = (x0&0xFF);
956 unsigned char x1_MSB = ((x1>>8)&0xFF);
957 unsigned char x1_LSB = (x1&0xFF);
958 unsigned char y0_MSB = ((y0>>8)&0xFF);
959 unsigned char y0_LSB = (y0&0xFF);
960 unsigned char y1_MSB = ((y1>>8)&0xFF);
961 unsigned char y1_LSB = (y1&0xFF);
962
963 unsigned int data_array[16];
964
965 data_array[0]= 0x00053902;
966 data_array[1]= (x1_MSB<<24)|(x0_LSB<<16)|(x0_MSB<<8)|0x2a;
967 data_array[2]= (x1_LSB);
968 dsi_set_cmdq(data_array, 3, 1);
969
970 data_array[0]= 0x00053902;
971 data_array[1]= (y1_MSB<<24)|(y0_LSB<<16)|(y0_MSB<<8)|0x2b;
972 data_array[2]= (y1_LSB);
973 dsi_set_cmdq(data_array, 3, 1);
974
975 data_array[0]= 0x00290508; //HW bug, so need send one HS packet
976 dsi_set_cmdq(data_array, 1, 1);
977
978 data_array[0]= 0x002c3909;
979 dsi_set_cmdq(data_array, 1, 0);
980
981 }
982 #endif
983 #if 0
984 static unsigned int lcm_compare_id(void)
985 {
986 unsigned int id=0;
987 unsigned char buffer[2];
988 unsigned int array[16];
989
990 SET_RESET_PIN(1);
991 SET_RESET_PIN(0);
992 MDELAY(1);
993
994 SET_RESET_PIN(1);
995 MDELAY(20);
996
997 array[0] = 0x00023700;// read id return two byte,version and id
998 dsi_set_cmdq(array, 1, 1);
999
1000 read_reg_v2(0xF4, buffer, 2);
1001 id = buffer[0]; //we only need ID
1002 #ifdef BUILD_LK
1003 printf("%s, LK nt35590 debug: nt35590 id = 0x%08x\n", __func__, id);
1004 #else
1005 printk("%s, kernel nt35590 horse debug: nt35590 id = 0x%08x\n", __func__, id);
1006 #endif
1007
1008 if(id == LCM_ID_NT35590)
1009 return 1;
1010 else
1011 return 0;
1012
1013
1014 }
1015 #endif
1016
1017 LCM_DRIVER nt35596_fhd_dsi_vdo_truly_lcm_drv =
1018 {
1019 .name = "nt35596_fhd_dsi_vdo_truly",
1020 .set_util_funcs = lcm_set_util_funcs,
1021 .get_params = lcm_get_params,
1022 .init = lcm_init,
1023 .suspend = lcm_suspend,
1024 .resume = lcm_resume,
1025 //.compare_id = lcm_compare_id,
1026 #if (LCM_DSI_CMD_MODE)
1027 .update = lcm_update,
1028 #endif
1029 };