1 /* Copyright (c) 2008-2009, Code Aurora Forum. All rights reserved.
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
12 * You should have received a copy of the GNU General Public License
13 * along with this program; if not, write to the Free Software
14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
20 #include "mddihosti.h"
21 #include "mddi_toshiba.h"
23 #define TM_GET_DID(id) ((id) & 0xff)
24 #define TM_GET_PID(id) (((id) & 0xff00)>>8)
26 #define MDDI_CLIENT_CORE_BASE 0x108000
27 #define LCD_CONTROL_BLOCK_BASE 0x110000
28 #define SPI_BLOCK_BASE 0x120000
29 #define PWM_BLOCK_BASE 0x140000
30 #define SYSTEM_BLOCK1_BASE 0x160000
32 #define TTBUSSEL (MDDI_CLIENT_CORE_BASE|0x18)
33 #define DPSET0 (MDDI_CLIENT_CORE_BASE|0x1C)
34 #define DPSET1 (MDDI_CLIENT_CORE_BASE|0x20)
35 #define DPSUS (MDDI_CLIENT_CORE_BASE|0x24)
36 #define DPRUN (MDDI_CLIENT_CORE_BASE|0x28)
37 #define SYSCKENA (MDDI_CLIENT_CORE_BASE|0x2C)
39 #define BITMAP0 (MDDI_CLIENT_CORE_BASE|0x44)
40 #define BITMAP1 (MDDI_CLIENT_CORE_BASE|0x48)
41 #define BITMAP2 (MDDI_CLIENT_CORE_BASE|0x4C)
42 #define BITMAP3 (MDDI_CLIENT_CORE_BASE|0x50)
43 #define BITMAP4 (MDDI_CLIENT_CORE_BASE|0x54)
45 #define SRST (LCD_CONTROL_BLOCK_BASE|0x00)
46 #define PORT_ENB (LCD_CONTROL_BLOCK_BASE|0x04)
47 #define START (LCD_CONTROL_BLOCK_BASE|0x08)
48 #define PORT (LCD_CONTROL_BLOCK_BASE|0x0C)
50 #define INTFLG (LCD_CONTROL_BLOCK_BASE|0x18)
51 #define INTMSK (LCD_CONTROL_BLOCK_BASE|0x1C)
52 #define MPLFBUF (LCD_CONTROL_BLOCK_BASE|0x20)
54 #define PXL (LCD_CONTROL_BLOCK_BASE|0x30)
55 #define HCYCLE (LCD_CONTROL_BLOCK_BASE|0x34)
56 #define HSW (LCD_CONTROL_BLOCK_BASE|0x38)
57 #define HDE_START (LCD_CONTROL_BLOCK_BASE|0x3C)
58 #define HDE_SIZE (LCD_CONTROL_BLOCK_BASE|0x40)
59 #define VCYCLE (LCD_CONTROL_BLOCK_BASE|0x44)
60 #define VSW (LCD_CONTROL_BLOCK_BASE|0x48)
61 #define VDE_START (LCD_CONTROL_BLOCK_BASE|0x4C)
62 #define VDE_SIZE (LCD_CONTROL_BLOCK_BASE|0x50)
63 #define WAKEUP (LCD_CONTROL_BLOCK_BASE|0x54)
64 #define REGENB (LCD_CONTROL_BLOCK_BASE|0x5C)
65 #define VSYNIF (LCD_CONTROL_BLOCK_BASE|0x60)
66 #define WRSTB (LCD_CONTROL_BLOCK_BASE|0x64)
67 #define RDSTB (LCD_CONTROL_BLOCK_BASE|0x68)
68 #define ASY_DATA (LCD_CONTROL_BLOCK_BASE|0x6C)
69 #define ASY_DATB (LCD_CONTROL_BLOCK_BASE|0x70)
70 #define ASY_DATC (LCD_CONTROL_BLOCK_BASE|0x74)
71 #define ASY_DATD (LCD_CONTROL_BLOCK_BASE|0x78)
72 #define ASY_DATE (LCD_CONTROL_BLOCK_BASE|0x7C)
73 #define ASY_DATF (LCD_CONTROL_BLOCK_BASE|0x80)
74 #define ASY_DATG (LCD_CONTROL_BLOCK_BASE|0x84)
75 #define ASY_DATH (LCD_CONTROL_BLOCK_BASE|0x88)
76 #define ASY_CMDSET (LCD_CONTROL_BLOCK_BASE|0x8C)
77 #define MONI (LCD_CONTROL_BLOCK_BASE|0xB0)
78 #define VPOS (LCD_CONTROL_BLOCK_BASE|0xC0)
80 #define SSICTL (SPI_BLOCK_BASE|0x00)
81 #define SSITIME (SPI_BLOCK_BASE|0x04)
82 #define SSITX (SPI_BLOCK_BASE|0x08)
83 #define SSIINTS (SPI_BLOCK_BASE|0x14)
85 #define TIMER0LOAD (PWM_BLOCK_BASE|0x00)
86 #define TIMER0CTRL (PWM_BLOCK_BASE|0x08)
87 #define PWM0OFF (PWM_BLOCK_BASE|0x1C)
88 #define TIMER1LOAD (PWM_BLOCK_BASE|0x20)
89 #define TIMER1CTRL (PWM_BLOCK_BASE|0x28)
90 #define PWM1OFF (PWM_BLOCK_BASE|0x3C)
91 #define TIMER2LOAD (PWM_BLOCK_BASE|0x40)
92 #define TIMER2CTRL (PWM_BLOCK_BASE|0x48)
93 #define PWM2OFF (PWM_BLOCK_BASE|0x5C)
94 #define PWMCR (PWM_BLOCK_BASE|0x68)
96 #define GPIOIS (GPIO_BLOCK_BASE|0x08)
97 #define GPIOIEV (GPIO_BLOCK_BASE|0x10)
98 #define GPIOIC (GPIO_BLOCK_BASE|0x20)
100 #define WKREQ (SYSTEM_BLOCK1_BASE|0x00)
101 #define CLKENB (SYSTEM_BLOCK1_BASE|0x04)
102 #define DRAMPWR (SYSTEM_BLOCK1_BASE|0x08)
103 #define INTMASK (SYSTEM_BLOCK1_BASE|0x0C)
104 #define CNT_DIS (SYSTEM_BLOCK1_BASE|0x10)
108 TOSHIBA_STATE_PRIM_SEC_STANDBY
,
109 TOSHIBA_STATE_PRIM_SEC_READY
,
110 TOSHIBA_STATE_PRIM_NORMAL_MODE
,
111 TOSHIBA_STATE_SEC_NORMAL_MODE
112 } mddi_toshiba_state_t
;
114 static uint32 mddi_toshiba_curr_vpos
;
115 static boolean mddi_toshiba_monitor_refresh_value
= FALSE
;
116 static boolean mddi_toshiba_report_refresh_measurements
= FALSE
;
118 boolean mddi_toshiba_61Hz_refresh
= TRUE
;
120 /* Modifications to timing to increase refresh rate to > 60Hz.
124 * refresh rate = 61.19Hz
126 static uint32 mddi_toshiba_rows_per_second
= 39526;
127 static uint32 mddi_toshiba_usecs_per_refresh
= 16344;
128 static uint32 mddi_toshiba_rows_per_refresh
= 646;
129 extern boolean mddi_vsync_detect_enabled
;
131 static msm_fb_vsync_handler_type mddi_toshiba_vsync_handler
;
132 static void *mddi_toshiba_vsync_handler_arg
;
133 static uint16 mddi_toshiba_vsync_attempts
;
135 static mddi_toshiba_state_t toshiba_state
= TOSHIBA_STATE_OFF
;
137 static struct msm_panel_common_pdata
*mddi_toshiba_pdata
;
139 static int mddi_toshiba_lcd_on(struct platform_device
*pdev
);
140 static int mddi_toshiba_lcd_off(struct platform_device
*pdev
);
142 static void mddi_toshiba_state_transition(mddi_toshiba_state_t a
,
143 mddi_toshiba_state_t b
)
145 if (toshiba_state
!= a
) {
146 MDDI_MSG_ERR("toshiba state trans. (%d->%d) found %d\n", a
, b
,
152 #define GORDON_REG_IMGCTL1 0x10 /* Image interface control 1 */
153 #define GORDON_REG_IMGCTL2 0x11 /* Image interface control 2 */
154 #define GORDON_REG_IMGSET1 0x12 /* Image interface settings 1 */
155 #define GORDON_REG_IMGSET2 0x13 /* Image interface settings 2 */
156 #define GORDON_REG_IVBP1 0x14 /* DM0: Vert back porch */
157 #define GORDON_REG_IHBP1 0x15 /* DM0: Horiz back porch */
158 #define GORDON_REG_IVNUM1 0x16 /* DM0: Num of vert lines */
159 #define GORDON_REG_IHNUM1 0x17 /* DM0: Num of pixels per line */
160 #define GORDON_REG_IVBP2 0x18 /* DM1: Vert back porch */
161 #define GORDON_REG_IHBP2 0x19 /* DM1: Horiz back porch */
162 #define GORDON_REG_IVNUM2 0x1A /* DM1: Num of vert lines */
163 #define GORDON_REG_IHNUM2 0x1B /* DM1: Num of pixels per line */
164 #define GORDON_REG_LCDIFCTL1 0x30 /* LCD interface control 1 */
165 #define GORDON_REG_VALTRAN 0x31 /* LCD IF ctl: VALTRAN sync flag */
166 #define GORDON_REG_AVCTL 0x33
167 #define GORDON_REG_LCDIFCTL2 0x34 /* LCD interface control 2 */
168 #define GORDON_REG_LCDIFCTL3 0x35 /* LCD interface control 3 */
169 #define GORDON_REG_LCDIFSET1 0x36 /* LCD interface settings 1 */
170 #define GORDON_REG_PCCTL 0x3C
171 #define GORDON_REG_TPARAM1 0x40
172 #define GORDON_REG_TLCDIF1 0x41
173 #define GORDON_REG_TSSPB_ST1 0x42
174 #define GORDON_REG_TSSPB_ED1 0x43
175 #define GORDON_REG_TSCK_ST1 0x44
176 #define GORDON_REG_TSCK_WD1 0x45
177 #define GORDON_REG_TGSPB_VST1 0x46
178 #define GORDON_REG_TGSPB_VED1 0x47
179 #define GORDON_REG_TGSPB_CH1 0x48
180 #define GORDON_REG_TGCK_ST1 0x49
181 #define GORDON_REG_TGCK_ED1 0x4A
182 #define GORDON_REG_TPCTL_ST1 0x4B
183 #define GORDON_REG_TPCTL_ED1 0x4C
184 #define GORDON_REG_TPCHG_ED1 0x4D
185 #define GORDON_REG_TCOM_CH1 0x4E
186 #define GORDON_REG_THBP1 0x4F
187 #define GORDON_REG_TPHCTL1 0x50
188 #define GORDON_REG_EVPH1 0x51
189 #define GORDON_REG_EVPL1 0x52
190 #define GORDON_REG_EVNH1 0x53
191 #define GORDON_REG_EVNL1 0x54
192 #define GORDON_REG_TBIAS1 0x55
193 #define GORDON_REG_TPARAM2 0x56
194 #define GORDON_REG_TLCDIF2 0x57
195 #define GORDON_REG_TSSPB_ST2 0x58
196 #define GORDON_REG_TSSPB_ED2 0x59
197 #define GORDON_REG_TSCK_ST2 0x5A
198 #define GORDON_REG_TSCK_WD2 0x5B
199 #define GORDON_REG_TGSPB_VST2 0x5C
200 #define GORDON_REG_TGSPB_VED2 0x5D
201 #define GORDON_REG_TGSPB_CH2 0x5E
202 #define GORDON_REG_TGCK_ST2 0x5F
203 #define GORDON_REG_TGCK_ED2 0x60
204 #define GORDON_REG_TPCTL_ST2 0x61
205 #define GORDON_REG_TPCTL_ED2 0x62
206 #define GORDON_REG_TPCHG_ED2 0x63
207 #define GORDON_REG_TCOM_CH2 0x64
208 #define GORDON_REG_THBP2 0x65
209 #define GORDON_REG_TPHCTL2 0x66
210 #define GORDON_REG_EVPH2 0x67
211 #define GORDON_REG_EVPL2 0x68
212 #define GORDON_REG_EVNH2 0x69
213 #define GORDON_REG_EVNL2 0x6A
214 #define GORDON_REG_TBIAS2 0x6B
215 #define GORDON_REG_POWCTL 0x80
216 #define GORDON_REG_POWOSC1 0x81
217 #define GORDON_REG_POWOSC2 0x82
218 #define GORDON_REG_POWSET 0x83
219 #define GORDON_REG_POWTRM1 0x85
220 #define GORDON_REG_POWTRM2 0x86
221 #define GORDON_REG_POWTRM3 0x87
222 #define GORDON_REG_POWTRMSEL 0x88
223 #define GORDON_REG_POWHIZ 0x89
225 void serigo(uint16 reg
, uint8 data
)
228 mddi_queue_register_read(SSIINTS
, &mddi_val
, TRUE
, 0);
229 if (mddi_val
& (1 << 8))
231 /* No De-assert of CS and send 2 bytes */
232 mddi_val
= 0x90000 | ((0x00FF & reg
) << 8) | data
;
233 mddi_queue_register_write(SSITX
, mddi_val
, TRUE
, 0);
236 void gordon_init(void)
238 /* Image interface settings ***/
239 serigo(GORDON_REG_IMGCTL2
, 0x00);
240 serigo(GORDON_REG_IMGSET1
, 0x01);
242 /* Exchange the RGB signal for J510(Softbank mobile) */
243 serigo(GORDON_REG_IMGSET2
, 0x12);
244 serigo(GORDON_REG_LCDIFSET1
, 0x00);
247 /* Pre-charge settings */
248 serigo(GORDON_REG_PCCTL
, 0x09);
249 serigo(GORDON_REG_LCDIFCTL2
, 0x1B);
253 void gordon_disp_on(void)
255 /*gordon_dispmode setting */
257 serigo(GORDON_REG_TPARAM1
, 0x30);
258 serigo(GORDON_REG_TLCDIF1
, 0x00);
259 serigo(GORDON_REG_TSSPB_ST1
, 0x8B);
260 serigo(GORDON_REG_TSSPB_ED1
, 0x93);
262 serigo(GORDON_REG_TSCK_ST1
, 0x88);
263 serigo(GORDON_REG_TSCK_WD1
, 0x00);
264 serigo(GORDON_REG_TGSPB_VST1
, 0x01);
265 serigo(GORDON_REG_TGSPB_VED1
, 0x02);
267 serigo(GORDON_REG_TGSPB_CH1
, 0x5E);
268 serigo(GORDON_REG_TGCK_ST1
, 0x80);
269 serigo(GORDON_REG_TGCK_ED1
, 0x3C);
270 serigo(GORDON_REG_TPCTL_ST1
, 0x50);
272 serigo(GORDON_REG_TPCTL_ED1
, 0x74);
273 serigo(GORDON_REG_TPCHG_ED1
, 0x78);
274 serigo(GORDON_REG_TCOM_CH1
, 0x50);
275 serigo(GORDON_REG_THBP1
, 0x84);
277 serigo(GORDON_REG_TPHCTL1
, 0x00);
278 serigo(GORDON_REG_EVPH1
, 0x70);
279 serigo(GORDON_REG_EVPL1
, 0x64);
280 serigo(GORDON_REG_EVNH1
, 0x56);
282 serigo(GORDON_REG_EVNL1
, 0x48);
283 serigo(GORDON_REG_TBIAS1
, 0x88);
285 serigo(GORDON_REG_TPARAM2
, 0x28);
286 serigo(GORDON_REG_TLCDIF2
, 0x14);
287 serigo(GORDON_REG_TSSPB_ST2
, 0x49);
288 serigo(GORDON_REG_TSSPB_ED2
, 0x4B);
290 serigo(GORDON_REG_TSCK_ST2
, 0x4A);
291 serigo(GORDON_REG_TSCK_WD2
, 0x02);
292 serigo(GORDON_REG_TGSPB_VST2
, 0x02);
293 serigo(GORDON_REG_TGSPB_VED2
, 0x03);
295 serigo(GORDON_REG_TGSPB_CH2
, 0x2F);
296 serigo(GORDON_REG_TGCK_ST2
, 0x40);
297 serigo(GORDON_REG_TGCK_ED2
, 0x1E);
298 serigo(GORDON_REG_TPCTL_ST2
, 0x2C);
300 serigo(GORDON_REG_TPCTL_ED2
, 0x3A);
301 serigo(GORDON_REG_TPCHG_ED2
, 0x3C);
302 serigo(GORDON_REG_TCOM_CH2
, 0x28);
303 serigo(GORDON_REG_THBP2
, 0x4D);
305 serigo(GORDON_REG_TPHCTL2
, 0x1A);
307 serigo(GORDON_REG_IVBP1
, 0x02);
308 serigo(GORDON_REG_IHBP1
, 0x90);
309 serigo(GORDON_REG_IVNUM1
, 0xA0);
310 serigo(GORDON_REG_IHNUM1
, 0x78);
312 serigo(GORDON_REG_IVBP2
, 0x02);
313 serigo(GORDON_REG_IHBP2
, 0x48);
314 serigo(GORDON_REG_IVNUM2
, 0x50);
315 serigo(GORDON_REG_IHNUM2
, 0x3C);
317 serigo(GORDON_REG_POWCTL
, 0x03);
319 serigo(GORDON_REG_POWCTL
, 0x07);
321 serigo(GORDON_REG_POWCTL
, 0x0F);
323 serigo(GORDON_REG_AVCTL
, 0x03);
325 serigo(GORDON_REG_POWCTL
, 0x1F);
327 serigo(GORDON_REG_POWCTL
, 0x5F);
329 serigo(GORDON_REG_POWCTL
, 0x7F);
331 serigo(GORDON_REG_LCDIFCTL1
, 0x02);
333 serigo(GORDON_REG_IMGCTL1
, 0x00);
335 serigo(GORDON_REG_LCDIFCTL3
, 0x00);
337 serigo(GORDON_REG_VALTRAN
, 0x01);
339 serigo(GORDON_REG_LCDIFCTL1
, 0x03);
340 serigo(GORDON_REG_LCDIFCTL1
, 0x03);
344 void gordon_disp_off(void)
346 serigo(GORDON_REG_LCDIFCTL2
, 0x7B);
347 serigo(GORDON_REG_VALTRAN
, 0x01);
348 serigo(GORDON_REG_LCDIFCTL1
, 0x02);
349 serigo(GORDON_REG_LCDIFCTL3
, 0x01);
351 serigo(GORDON_REG_VALTRAN
, 0x01);
352 serigo(GORDON_REG_IMGCTL1
, 0x01);
353 serigo(GORDON_REG_LCDIFCTL1
, 0x00);
355 serigo(GORDON_REG_POWCTL
, 0x1F);
357 serigo(GORDON_REG_POWCTL
, 0x07);
359 serigo(GORDON_REG_POWCTL
, 0x03);
361 serigo(GORDON_REG_POWCTL
, 0x00);
365 void gordon_disp_init(void)
372 static void toshiba_common_initial_setup(struct msm_fb_data_type
*mfd
)
374 if (TM_GET_PID(mfd
->panel
.id
) == LCD_TOSHIBA_2P4_WVGA_PT
) {
375 write_client_reg(DPSET0
, 0x4bec0066, TRUE
);
376 write_client_reg(DPSET1
, 0x00000113, TRUE
);
377 write_client_reg(DPSUS
, 0x00000000, TRUE
);
378 write_client_reg(DPRUN
, 0x00000001, TRUE
);
380 write_client_reg(SYSCKENA
, 0x00000001, TRUE
);
381 write_client_reg(CLKENB
, 0x0000a0e9, TRUE
);
383 write_client_reg(GPIODATA
, 0x03FF0000, TRUE
);
384 write_client_reg(GPIODIR
, 0x0000024D, TRUE
);
385 write_client_reg(GPIOSEL
, 0x00000173, TRUE
);
386 write_client_reg(GPIOPC
, 0x03C300C0, TRUE
);
387 write_client_reg(WKREQ
, 0x00000000, TRUE
);
388 write_client_reg(GPIOIS
, 0x00000000, TRUE
);
389 write_client_reg(GPIOIEV
, 0x00000001, TRUE
);
390 write_client_reg(GPIOIC
, 0x000003FF, TRUE
);
391 write_client_reg(GPIODATA
, 0x00040004, TRUE
);
393 write_client_reg(GPIODATA
, 0x00080008, TRUE
);
394 write_client_reg(DRAMPWR
, 0x00000001, TRUE
);
395 write_client_reg(CLKENB
, 0x0000a0eb, TRUE
);
396 write_client_reg(PWMCR
, 0x00000000, TRUE
);
399 write_client_reg(SSICTL
, 0x00060399, TRUE
);
400 write_client_reg(SSITIME
, 0x00000100, TRUE
);
401 write_client_reg(CNT_DIS
, 0x00000002, TRUE
);
402 write_client_reg(SSICTL
, 0x0006039b, TRUE
);
404 write_client_reg(SSITX
, 0x00000000, TRUE
);
406 write_client_reg(SSITX
, 0x00000000, TRUE
);
408 write_client_reg(SSITX
, 0x00000000, TRUE
);
411 write_client_reg(SSITX
, 0x000800BA, TRUE
);
412 write_client_reg(SSITX
, 0x00000111, TRUE
);
413 write_client_reg(SSITX
, 0x00080036, TRUE
);
414 write_client_reg(SSITX
, 0x00000100, TRUE
);
416 write_client_reg(SSITX
, 0x0008003A, TRUE
);
417 write_client_reg(SSITX
, 0x00000160, TRUE
);
418 write_client_reg(SSITX
, 0x000800B1, TRUE
);
419 write_client_reg(SSITX
, 0x0000015D, TRUE
);
421 write_client_reg(SSITX
, 0x000800B2, TRUE
);
422 write_client_reg(SSITX
, 0x00000133, TRUE
);
423 write_client_reg(SSITX
, 0x000800B3, TRUE
);
424 write_client_reg(SSITX
, 0x00000122, TRUE
);
426 write_client_reg(SSITX
, 0x000800B4, TRUE
);
427 write_client_reg(SSITX
, 0x00000102, TRUE
);
428 write_client_reg(SSITX
, 0x000800B5, TRUE
);
429 write_client_reg(SSITX
, 0x0000011E, TRUE
);
431 write_client_reg(SSITX
, 0x000800B6, TRUE
);
432 write_client_reg(SSITX
, 0x00000127, TRUE
);
433 write_client_reg(SSITX
, 0x000800B7, TRUE
);
434 write_client_reg(SSITX
, 0x00000103, TRUE
);
436 write_client_reg(SSITX
, 0x000800B9, TRUE
);
437 write_client_reg(SSITX
, 0x00000124, TRUE
);
438 write_client_reg(SSITX
, 0x000800BD, TRUE
);
439 write_client_reg(SSITX
, 0x000001A1, TRUE
);
441 write_client_reg(SSITX
, 0x000800BB, TRUE
);
442 write_client_reg(SSITX
, 0x00000100, TRUE
);
443 write_client_reg(SSITX
, 0x000800BF, TRUE
);
444 write_client_reg(SSITX
, 0x00000101, TRUE
);
446 write_client_reg(SSITX
, 0x000800BE, TRUE
);
447 write_client_reg(SSITX
, 0x00000100, TRUE
);
448 write_client_reg(SSITX
, 0x000800C0, TRUE
);
449 write_client_reg(SSITX
, 0x00000111, TRUE
);
451 write_client_reg(SSITX
, 0x000800C1, TRUE
);
452 write_client_reg(SSITX
, 0x00000111, TRUE
);
453 write_client_reg(SSITX
, 0x000800C2, TRUE
);
454 write_client_reg(SSITX
, 0x00000111, TRUE
);
456 write_client_reg(SSITX
, 0x000800C3, TRUE
);
457 write_client_reg(SSITX
, 0x00080132, TRUE
);
458 write_client_reg(SSITX
, 0x00000132, TRUE
);
460 write_client_reg(SSITX
, 0x000800C4, TRUE
);
461 write_client_reg(SSITX
, 0x00080132, TRUE
);
462 write_client_reg(SSITX
, 0x00000132, TRUE
);
464 write_client_reg(SSITX
, 0x000800C5, TRUE
);
465 write_client_reg(SSITX
, 0x00080132, TRUE
);
466 write_client_reg(SSITX
, 0x00000132, TRUE
);
468 write_client_reg(SSITX
, 0x000800C6, TRUE
);
469 write_client_reg(SSITX
, 0x00080132, TRUE
);
470 write_client_reg(SSITX
, 0x00000132, TRUE
);
472 write_client_reg(SSITX
, 0x000800C7, TRUE
);
473 write_client_reg(SSITX
, 0x00080164, TRUE
);
474 write_client_reg(SSITX
, 0x00000145, TRUE
);
476 write_client_reg(SSITX
, 0x000800C8, TRUE
);
477 write_client_reg(SSITX
, 0x00000144, TRUE
);
478 write_client_reg(SSITX
, 0x000800C9, TRUE
);
479 write_client_reg(SSITX
, 0x00000152, TRUE
);
481 write_client_reg(SSITX
, 0x000800CA, TRUE
);
482 write_client_reg(SSITX
, 0x00000100, TRUE
);
484 write_client_reg(SSITX
, 0x000800EC, TRUE
);
485 write_client_reg(SSITX
, 0x00080101, TRUE
);
486 write_client_reg(SSITX
, 0x000001FC, TRUE
);
488 write_client_reg(SSITX
, 0x000800CF, TRUE
);
489 write_client_reg(SSITX
, 0x00000101, TRUE
);
491 write_client_reg(SSITX
, 0x000800D0, TRUE
);
492 write_client_reg(SSITX
, 0x00080110, TRUE
);
493 write_client_reg(SSITX
, 0x00000104, TRUE
);
495 write_client_reg(SSITX
, 0x000800D1, TRUE
);
496 write_client_reg(SSITX
, 0x00000101, TRUE
);
498 write_client_reg(SSITX
, 0x000800D2, TRUE
);
499 write_client_reg(SSITX
, 0x00080100, TRUE
);
500 write_client_reg(SSITX
, 0x00000128, TRUE
);
502 write_client_reg(SSITX
, 0x000800D3, TRUE
);
503 write_client_reg(SSITX
, 0x00080100, TRUE
);
504 write_client_reg(SSITX
, 0x00000128, TRUE
);
506 write_client_reg(SSITX
, 0x000800D4, TRUE
);
507 write_client_reg(SSITX
, 0x00080126, TRUE
);
508 write_client_reg(SSITX
, 0x000001A4, TRUE
);
510 write_client_reg(SSITX
, 0x000800D5, TRUE
);
511 write_client_reg(SSITX
, 0x00000120, TRUE
);
513 write_client_reg(SSITX
, 0x000800EF, TRUE
);
514 write_client_reg(SSITX
, 0x00080132, TRUE
);
515 write_client_reg(SSITX
, 0x00000100, TRUE
);
518 write_client_reg(BITMAP0
, 0x032001E0, TRUE
);
519 write_client_reg(BITMAP1
, 0x032001E0, TRUE
);
520 write_client_reg(BITMAP2
, 0x014000F0, TRUE
);
521 write_client_reg(BITMAP3
, 0x014000F0, TRUE
);
522 write_client_reg(BITMAP4
, 0x014000F0, TRUE
);
523 write_client_reg(CLKENB
, 0x0000A1EB, TRUE
);
524 write_client_reg(PORT_ENB
, 0x00000001, TRUE
);
525 write_client_reg(PORT
, 0x00000004, TRUE
);
526 write_client_reg(PXL
, 0x00000002, TRUE
);
527 write_client_reg(MPLFBUF
, 0x00000000, TRUE
);
528 write_client_reg(HCYCLE
, 0x000000FD, TRUE
);
529 write_client_reg(HSW
, 0x00000003, TRUE
);
530 write_client_reg(HDE_START
, 0x00000007, TRUE
);
531 write_client_reg(HDE_SIZE
, 0x000000EF, TRUE
);
532 write_client_reg(VCYCLE
, 0x00000325, TRUE
);
533 write_client_reg(VSW
, 0x00000001, TRUE
);
534 write_client_reg(VDE_START
, 0x00000003, TRUE
);
535 write_client_reg(VDE_SIZE
, 0x0000031F, TRUE
);
536 write_client_reg(START
, 0x00000001, TRUE
);
538 write_client_reg(SSITX
, 0x000800BC, TRUE
);
539 write_client_reg(SSITX
, 0x00000180, TRUE
);
540 write_client_reg(SSITX
, 0x0008003B, TRUE
);
541 write_client_reg(SSITX
, 0x00000100, TRUE
);
543 write_client_reg(SSITX
, 0x000800B0, TRUE
);
544 write_client_reg(SSITX
, 0x00000116, TRUE
);
546 write_client_reg(SSITX
, 0x000800B8, TRUE
);
547 write_client_reg(SSITX
, 0x000801FF, TRUE
);
548 write_client_reg(SSITX
, 0x000001F5, TRUE
);
550 write_client_reg(SSITX
, 0x00000011, TRUE
);
552 write_client_reg(SSITX
, 0x00000029, TRUE
);
556 if (TM_GET_PID(mfd
->panel
.id
) == LCD_SHARP_2P4_VGA
) {
557 write_client_reg(DPSET0
, 0x4BEC0066, TRUE
);
558 write_client_reg(DPSET1
, 0x00000113, TRUE
);
559 write_client_reg(DPSUS
, 0x00000000, TRUE
);
560 write_client_reg(DPRUN
, 0x00000001, TRUE
);
562 write_client_reg(SYSCKENA
, 0x00000001, TRUE
);
563 write_client_reg(CLKENB
, 0x000000EF, TRUE
);
564 write_client_reg(GPIO_BLOCK_BASE
, 0x03FF0000, TRUE
);
565 write_client_reg(GPIODIR
, 0x0000024D, TRUE
);
566 write_client_reg(SYSTEM_BLOCK2_BASE
, 0x00000173, TRUE
);
567 write_client_reg(GPIOPC
, 0x03C300C0, TRUE
);
568 write_client_reg(SYSTEM_BLOCK1_BASE
, 0x00000000, TRUE
);
569 write_client_reg(GPIOIS
, 0x00000000, TRUE
);
570 write_client_reg(GPIOIEV
, 0x00000001, TRUE
);
571 write_client_reg(GPIOIC
, 0x000003FF, TRUE
);
572 write_client_reg(GPIO_BLOCK_BASE
, 0x00060006, TRUE
);
573 write_client_reg(GPIO_BLOCK_BASE
, 0x00080008, TRUE
);
574 write_client_reg(GPIO_BLOCK_BASE
, 0x02000200, TRUE
);
575 write_client_reg(DRAMPWR
, 0x00000001, TRUE
);
576 write_client_reg(TIMER0CTRL
, 0x00000060, TRUE
);
577 write_client_reg(PWM_BLOCK_BASE
, 0x00001388, TRUE
);
578 write_client_reg(PWM0OFF
, 0x00001387, TRUE
);
579 write_client_reg(TIMER1CTRL
, 0x00000060, TRUE
);
580 write_client_reg(TIMER1LOAD
, 0x00001388, TRUE
);
581 write_client_reg(PWM1OFF
, 0x00001387, TRUE
);
582 write_client_reg(TIMER0CTRL
, 0x000000E0, TRUE
);
583 write_client_reg(TIMER1CTRL
, 0x000000E0, TRUE
);
584 write_client_reg(PWMCR
, 0x00000003, TRUE
);
586 write_client_reg(SPI_BLOCK_BASE
, 0x00063111, TRUE
);
587 write_client_reg(SSITIME
, 0x00000100, TRUE
);
588 write_client_reg(SPI_BLOCK_BASE
, 0x00063113, TRUE
);
590 write_client_reg(SSITX
, 0x00000000, TRUE
);
592 write_client_reg(SSITX
, 0x00000000, TRUE
);
594 write_client_reg(SSITX
, 0x00000000, TRUE
);
596 write_client_reg(CLKENB
, 0x0000A1EF, TRUE
);
597 write_client_reg(START
, 0x00000000, TRUE
);
598 write_client_reg(WRSTB
, 0x0000003F, TRUE
);
599 write_client_reg(RDSTB
, 0x00000432, TRUE
);
600 write_client_reg(PORT_ENB
, 0x00000002, TRUE
);
601 write_client_reg(VSYNIF
, 0x00000000, TRUE
);
602 write_client_reg(ASY_DATA
, 0x80000000, TRUE
);
603 write_client_reg(ASY_DATB
, 0x00000001, TRUE
);
604 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
605 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
607 write_client_reg(ASY_DATA
, 0x80000000, TRUE
);
608 write_client_reg(ASY_DATB
, 0x80000000, TRUE
);
609 write_client_reg(ASY_DATC
, 0x80000000, TRUE
);
610 write_client_reg(ASY_DATD
, 0x80000000, TRUE
);
611 write_client_reg(ASY_CMDSET
, 0x00000009, TRUE
);
612 write_client_reg(ASY_CMDSET
, 0x00000008, TRUE
);
613 write_client_reg(ASY_DATA
, 0x80000007, TRUE
);
614 write_client_reg(ASY_DATB
, 0x00004005, TRUE
);
615 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
616 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
618 write_client_reg(ASY_DATA
, 0x80000059, TRUE
);
619 write_client_reg(ASY_DATB
, 0x00000000, TRUE
);
620 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
621 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
623 write_client_reg(VSYNIF
, 0x00000001, TRUE
);
624 write_client_reg(PORT_ENB
, 0x00000001, TRUE
);
626 write_client_reg(DPSET0
, 0x4BEC0066, TRUE
);
627 write_client_reg(DPSET1
, 0x00000113, TRUE
);
628 write_client_reg(DPSUS
, 0x00000000, TRUE
);
629 write_client_reg(DPRUN
, 0x00000001, TRUE
);
631 write_client_reg(SYSCKENA
, 0x00000001, TRUE
);
632 write_client_reg(CLKENB
, 0x000000EF, TRUE
);
633 write_client_reg(GPIODATA
, 0x03FF0000, TRUE
);
634 write_client_reg(GPIODIR
, 0x0000024D, TRUE
);
635 write_client_reg(GPIOSEL
, 0x00000173, TRUE
);
636 write_client_reg(GPIOPC
, 0x03C300C0, TRUE
);
637 write_client_reg(WKREQ
, 0x00000000, TRUE
);
638 write_client_reg(GPIOIS
, 0x00000000, TRUE
);
639 write_client_reg(GPIOIEV
, 0x00000001, TRUE
);
640 write_client_reg(GPIOIC
, 0x000003FF, TRUE
);
641 write_client_reg(GPIODATA
, 0x00060006, TRUE
);
642 write_client_reg(GPIODATA
, 0x00080008, TRUE
);
643 write_client_reg(GPIODATA
, 0x02000200, TRUE
);
645 if (TM_GET_PID(mfd
->panel
.id
) == LCD_TOSHIBA_2P4_WVGA
) {
647 write_client_reg(DRAMPWR
, 0x00000001, TRUE
);
649 write_client_reg(CNT_DIS
, 0x00000002, TRUE
);
650 write_client_reg(BITMAP0
, 0x01E00320, TRUE
);
651 write_client_reg(PORT_ENB
, 0x00000001, TRUE
);
652 write_client_reg(PORT
, 0x00000004, TRUE
);
653 write_client_reg(PXL
, 0x0000003A, TRUE
);
654 write_client_reg(MPLFBUF
, 0x00000000, TRUE
);
655 write_client_reg(HCYCLE
, 0x00000253, TRUE
);
656 write_client_reg(HSW
, 0x00000003, TRUE
);
657 write_client_reg(HDE_START
, 0x00000017, TRUE
);
658 write_client_reg(HDE_SIZE
, 0x0000018F, TRUE
);
659 write_client_reg(VCYCLE
, 0x000001FF, TRUE
);
660 write_client_reg(VSW
, 0x00000001, TRUE
);
661 write_client_reg(VDE_START
, 0x00000003, TRUE
);
662 write_client_reg(VDE_SIZE
, 0x000001DF, TRUE
);
663 write_client_reg(START
, 0x00000001, TRUE
);
665 write_client_reg(TIMER0CTRL
, 0x00000060, TRUE
);
666 write_client_reg(TIMER0LOAD
, 0x00001388, TRUE
);
667 write_client_reg(TIMER1CTRL
, 0x00000060, TRUE
);
668 write_client_reg(TIMER1LOAD
, 0x00001388, TRUE
);
669 write_client_reg(PWM1OFF
, 0x00000087, TRUE
);
671 write_client_reg(DRAMPWR
, 0x00000001, TRUE
);
672 write_client_reg(TIMER0CTRL
, 0x00000060, TRUE
);
673 write_client_reg(TIMER0LOAD
, 0x00001388, TRUE
);
674 write_client_reg(TIMER1CTRL
, 0x00000060, TRUE
);
675 write_client_reg(TIMER1LOAD
, 0x00001388, TRUE
);
676 write_client_reg(PWM1OFF
, 0x00001387, TRUE
);
679 write_client_reg(TIMER0CTRL
, 0x000000E0, TRUE
);
680 write_client_reg(TIMER1CTRL
, 0x000000E0, TRUE
);
681 write_client_reg(PWMCR
, 0x00000003, TRUE
);
683 write_client_reg(SSICTL
, 0x00000799, TRUE
);
684 write_client_reg(SSITIME
, 0x00000100, TRUE
);
685 write_client_reg(SSICTL
, 0x0000079b, TRUE
);
686 write_client_reg(SSITX
, 0x00000000, TRUE
);
688 write_client_reg(SSITX
, 0x00000000, TRUE
);
690 write_client_reg(SSITX
, 0x00000000, TRUE
);
692 write_client_reg(SSITX
, 0x000800BA, TRUE
);
693 write_client_reg(SSITX
, 0x00000111, TRUE
);
694 write_client_reg(SSITX
, 0x00080036, TRUE
);
695 write_client_reg(SSITX
, 0x00000100, TRUE
);
697 write_client_reg(SSITX
, 0x000800BB, TRUE
);
698 write_client_reg(SSITX
, 0x00000100, TRUE
);
699 write_client_reg(SSITX
, 0x0008003A, TRUE
);
700 write_client_reg(SSITX
, 0x00000160, TRUE
);
702 write_client_reg(SSITX
, 0x000800BF, TRUE
);
703 write_client_reg(SSITX
, 0x00000100, TRUE
);
704 write_client_reg(SSITX
, 0x000800B1, TRUE
);
705 write_client_reg(SSITX
, 0x0000015D, TRUE
);
707 write_client_reg(SSITX
, 0x000800B2, TRUE
);
708 write_client_reg(SSITX
, 0x00000133, TRUE
);
709 write_client_reg(SSITX
, 0x000800B3, TRUE
);
710 write_client_reg(SSITX
, 0x00000122, TRUE
);
712 write_client_reg(SSITX
, 0x000800B4, TRUE
);
713 write_client_reg(SSITX
, 0x00000102, TRUE
);
714 write_client_reg(SSITX
, 0x000800B5, TRUE
);
715 write_client_reg(SSITX
, 0x0000011F, TRUE
);
717 write_client_reg(SSITX
, 0x000800B6, TRUE
);
718 write_client_reg(SSITX
, 0x00000128, TRUE
);
719 write_client_reg(SSITX
, 0x000800B7, TRUE
);
720 write_client_reg(SSITX
, 0x00000103, TRUE
);
722 write_client_reg(SSITX
, 0x000800B9, TRUE
);
723 write_client_reg(SSITX
, 0x00000120, TRUE
);
724 write_client_reg(SSITX
, 0x000800BD, TRUE
);
725 write_client_reg(SSITX
, 0x00000102, TRUE
);
727 write_client_reg(SSITX
, 0x000800BE, TRUE
);
728 write_client_reg(SSITX
, 0x00000100, TRUE
);
729 write_client_reg(SSITX
, 0x000800C0, TRUE
);
730 write_client_reg(SSITX
, 0x00000111, TRUE
);
732 write_client_reg(SSITX
, 0x000800C1, TRUE
);
733 write_client_reg(SSITX
, 0x00000111, TRUE
);
734 write_client_reg(SSITX
, 0x000800C2, TRUE
);
735 write_client_reg(SSITX
, 0x00000111, TRUE
);
737 write_client_reg(SSITX
, 0x000800C3, TRUE
);
738 write_client_reg(SSITX
, 0x0008010A, TRUE
);
739 write_client_reg(SSITX
, 0x0000010A, TRUE
);
741 write_client_reg(SSITX
, 0x000800C4, TRUE
);
742 write_client_reg(SSITX
, 0x00080160, TRUE
);
743 write_client_reg(SSITX
, 0x00000160, TRUE
);
745 write_client_reg(SSITX
, 0x000800C5, TRUE
);
746 write_client_reg(SSITX
, 0x00080160, TRUE
);
747 write_client_reg(SSITX
, 0x00000160, TRUE
);
749 write_client_reg(SSITX
, 0x000800C6, TRUE
);
750 write_client_reg(SSITX
, 0x00080160, TRUE
);
751 write_client_reg(SSITX
, 0x00000160, TRUE
);
753 write_client_reg(SSITX
, 0x000800C7, TRUE
);
754 write_client_reg(SSITX
, 0x00080133, TRUE
);
755 write_client_reg(SSITX
, 0x00000143, TRUE
);
757 write_client_reg(SSITX
, 0x000800C8, TRUE
);
758 write_client_reg(SSITX
, 0x00000144, TRUE
);
759 write_client_reg(SSITX
, 0x000800C9, TRUE
);
760 write_client_reg(SSITX
, 0x00000133, TRUE
);
762 write_client_reg(SSITX
, 0x000800CA, TRUE
);
763 write_client_reg(SSITX
, 0x00000100, TRUE
);
765 write_client_reg(SSITX
, 0x000800EC, TRUE
);
766 write_client_reg(SSITX
, 0x00080102, TRUE
);
767 write_client_reg(SSITX
, 0x00000118, TRUE
);
769 write_client_reg(SSITX
, 0x000800CF, TRUE
);
770 write_client_reg(SSITX
, 0x00000101, TRUE
);
772 write_client_reg(SSITX
, 0x000800D0, TRUE
);
773 write_client_reg(SSITX
, 0x00080110, TRUE
);
774 write_client_reg(SSITX
, 0x00000104, TRUE
);
776 write_client_reg(SSITX
, 0x000800D1, TRUE
);
777 write_client_reg(SSITX
, 0x00000101, TRUE
);
779 write_client_reg(SSITX
, 0x000800D2, TRUE
);
780 write_client_reg(SSITX
, 0x00080100, TRUE
);
781 write_client_reg(SSITX
, 0x0000013A, TRUE
);
783 write_client_reg(SSITX
, 0x000800D3, TRUE
);
784 write_client_reg(SSITX
, 0x00080100, TRUE
);
785 write_client_reg(SSITX
, 0x0000013A, TRUE
);
787 write_client_reg(SSITX
, 0x000800D4, TRUE
);
788 write_client_reg(SSITX
, 0x00080124, TRUE
);
789 write_client_reg(SSITX
, 0x0000016E, TRUE
);
791 write_client_reg(SSITX
, 0x000800D5, TRUE
);
792 write_client_reg(SSITX
, 0x00000124, TRUE
);
794 write_client_reg(SSITX
, 0x000800ED, TRUE
);
795 write_client_reg(SSITX
, 0x00080101, TRUE
);
796 write_client_reg(SSITX
, 0x0000010A, TRUE
);
798 write_client_reg(SSITX
, 0x000800D6, TRUE
);
799 write_client_reg(SSITX
, 0x00000101, TRUE
);
801 write_client_reg(SSITX
, 0x000800D7, TRUE
);
802 write_client_reg(SSITX
, 0x00080110, TRUE
);
803 write_client_reg(SSITX
, 0x0000010A, TRUE
);
805 write_client_reg(SSITX
, 0x000800D8, TRUE
);
806 write_client_reg(SSITX
, 0x00000101, TRUE
);
808 write_client_reg(SSITX
, 0x000800D9, TRUE
);
809 write_client_reg(SSITX
, 0x00080100, TRUE
);
810 write_client_reg(SSITX
, 0x00000114, TRUE
);
812 write_client_reg(SSITX
, 0x000800DE, TRUE
);
813 write_client_reg(SSITX
, 0x00080100, TRUE
);
814 write_client_reg(SSITX
, 0x00000114, TRUE
);
816 write_client_reg(SSITX
, 0x000800DF, TRUE
);
817 write_client_reg(SSITX
, 0x00080112, TRUE
);
818 write_client_reg(SSITX
, 0x0000013F, TRUE
);
820 write_client_reg(SSITX
, 0x000800E0, TRUE
);
821 write_client_reg(SSITX
, 0x0000010B, TRUE
);
822 write_client_reg(SSITX
, 0x000800E2, TRUE
);
823 write_client_reg(SSITX
, 0x00000101, TRUE
);
825 write_client_reg(SSITX
, 0x000800E3, TRUE
);
826 write_client_reg(SSITX
, 0x00000136, TRUE
);
828 write_client_reg(SSITX
, 0x000800E4, TRUE
);
829 write_client_reg(SSITX
, 0x00080100, TRUE
);
830 write_client_reg(SSITX
, 0x00000103, TRUE
);
832 write_client_reg(SSITX
, 0x000800E5, TRUE
);
833 write_client_reg(SSITX
, 0x00080102, TRUE
);
834 write_client_reg(SSITX
, 0x00000104, TRUE
);
836 write_client_reg(SSITX
, 0x000800E6, TRUE
);
837 write_client_reg(SSITX
, 0x00000103, TRUE
);
839 write_client_reg(SSITX
, 0x000800E7, TRUE
);
840 write_client_reg(SSITX
, 0x00080104, TRUE
);
841 write_client_reg(SSITX
, 0x0000010A, TRUE
);
843 write_client_reg(SSITX
, 0x000800E8, TRUE
);
844 write_client_reg(SSITX
, 0x00000104, TRUE
);
845 write_client_reg(CLKENB
, 0x000001EF, TRUE
);
846 write_client_reg(START
, 0x00000000, TRUE
);
847 write_client_reg(WRSTB
, 0x0000003F, TRUE
);
848 write_client_reg(RDSTB
, 0x00000432, TRUE
);
849 write_client_reg(PORT_ENB
, 0x00000002, TRUE
);
850 write_client_reg(VSYNIF
, 0x00000000, TRUE
);
851 write_client_reg(ASY_DATA
, 0x80000000, TRUE
);
852 write_client_reg(ASY_DATB
, 0x00000001, TRUE
);
853 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
854 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
856 write_client_reg(ASY_DATA
, 0x80000000, TRUE
);
857 write_client_reg(ASY_DATB
, 0x80000000, TRUE
);
858 write_client_reg(ASY_DATC
, 0x80000000, TRUE
);
859 write_client_reg(ASY_DATD
, 0x80000000, TRUE
);
860 write_client_reg(ASY_CMDSET
, 0x00000009, TRUE
);
861 write_client_reg(ASY_CMDSET
, 0x00000008, TRUE
);
862 write_client_reg(ASY_DATA
, 0x80000007, TRUE
);
863 write_client_reg(ASY_DATB
, 0x00004005, TRUE
);
864 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
865 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
867 write_client_reg(ASY_DATA
, 0x80000059, TRUE
);
868 write_client_reg(ASY_DATB
, 0x00000000, TRUE
);
869 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
870 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
871 write_client_reg(VSYNIF
, 0x00000001, TRUE
);
872 write_client_reg(PORT_ENB
, 0x00000001, TRUE
);
875 mddi_toshiba_state_transition(TOSHIBA_STATE_PRIM_SEC_STANDBY
,
876 TOSHIBA_STATE_PRIM_SEC_READY
);
879 static void toshiba_prim_start(struct msm_fb_data_type
*mfd
)
881 if (TM_GET_PID(mfd
->panel
.id
) == LCD_TOSHIBA_2P4_WVGA_PT
)
884 if (TM_GET_PID(mfd
->panel
.id
) == LCD_SHARP_2P4_VGA
) {
885 write_client_reg(BITMAP1
, 0x01E000F0, TRUE
);
886 write_client_reg(BITMAP2
, 0x01E000F0, TRUE
);
887 write_client_reg(BITMAP3
, 0x01E000F0, TRUE
);
888 write_client_reg(BITMAP4
, 0x00DC00B0, TRUE
);
889 write_client_reg(CLKENB
, 0x000001EF, TRUE
);
890 write_client_reg(PORT_ENB
, 0x00000001, TRUE
);
891 write_client_reg(PORT
, 0x00000016, TRUE
);
892 write_client_reg(PXL
, 0x00000002, TRUE
);
893 write_client_reg(MPLFBUF
, 0x00000000, TRUE
);
894 write_client_reg(HCYCLE
, 0x00000185, TRUE
);
895 write_client_reg(HSW
, 0x00000018, TRUE
);
896 write_client_reg(HDE_START
, 0x0000004A, TRUE
);
897 write_client_reg(HDE_SIZE
, 0x000000EF, TRUE
);
898 write_client_reg(VCYCLE
, 0x0000028E, TRUE
);
899 write_client_reg(VSW
, 0x00000004, TRUE
);
900 write_client_reg(VDE_START
, 0x00000009, TRUE
);
901 write_client_reg(VDE_SIZE
, 0x0000027F, TRUE
);
902 write_client_reg(START
, 0x00000001, TRUE
);
903 write_client_reg(SYSTEM_BLOCK1_BASE
, 0x00000002, TRUE
);
906 write_client_reg(VSYNIF
, 0x00000001, TRUE
);
907 write_client_reg(PORT_ENB
, 0x00000001, TRUE
);
908 write_client_reg(BITMAP1
, 0x01E000F0, TRUE
);
909 write_client_reg(BITMAP2
, 0x01E000F0, TRUE
);
910 write_client_reg(BITMAP3
, 0x01E000F0, TRUE
);
911 write_client_reg(BITMAP4
, 0x00DC00B0, TRUE
);
912 write_client_reg(CLKENB
, 0x000001EF, TRUE
);
913 write_client_reg(PORT_ENB
, 0x00000001, TRUE
);
914 write_client_reg(PORT
, 0x00000004, TRUE
);
915 write_client_reg(PXL
, 0x00000002, TRUE
);
916 write_client_reg(MPLFBUF
, 0x00000000, TRUE
);
918 if (mddi_toshiba_61Hz_refresh
) {
919 write_client_reg(HCYCLE
, 0x000000FC, TRUE
);
920 mddi_toshiba_rows_per_second
= 39526;
921 mddi_toshiba_rows_per_refresh
= 646;
922 mddi_toshiba_usecs_per_refresh
= 16344;
924 write_client_reg(HCYCLE
, 0x0000010b, TRUE
);
925 mddi_toshiba_rows_per_second
= 37313;
926 mddi_toshiba_rows_per_refresh
= 646;
927 mddi_toshiba_usecs_per_refresh
= 17313;
930 write_client_reg(HSW
, 0x00000003, TRUE
);
931 write_client_reg(HDE_START
, 0x00000007, TRUE
);
932 write_client_reg(HDE_SIZE
, 0x000000EF, TRUE
);
933 write_client_reg(VCYCLE
, 0x00000285, TRUE
);
934 write_client_reg(VSW
, 0x00000001, TRUE
);
935 write_client_reg(VDE_START
, 0x00000003, TRUE
);
936 write_client_reg(VDE_SIZE
, 0x0000027F, TRUE
);
937 write_client_reg(START
, 0x00000001, TRUE
);
939 write_client_reg(SSITX
, 0x000800BC, TRUE
);
940 write_client_reg(SSITX
, 0x00000180, TRUE
);
941 write_client_reg(SSITX
, 0x0008003B, TRUE
);
942 write_client_reg(SSITX
, 0x00000100, TRUE
);
944 write_client_reg(SSITX
, 0x000800B0, TRUE
);
945 write_client_reg(SSITX
, 0x00000116, TRUE
);
947 write_client_reg(SSITX
, 0x000800B8, TRUE
);
948 write_client_reg(SSITX
, 0x000801FF, TRUE
);
949 write_client_reg(SSITX
, 0x000001F5, TRUE
);
951 write_client_reg(SSITX
, 0x00000011, TRUE
);
952 write_client_reg(SSITX
, 0x00000029, TRUE
);
953 write_client_reg(WKREQ
, 0x00000000, TRUE
);
954 write_client_reg(WAKEUP
, 0x00000000, TRUE
);
955 write_client_reg(INTMSK
, 0x00000001, TRUE
);
958 mddi_toshiba_state_transition(TOSHIBA_STATE_PRIM_SEC_READY
,
959 TOSHIBA_STATE_PRIM_NORMAL_MODE
);
962 static void toshiba_sec_start(struct msm_fb_data_type
*mfd
)
964 if (TM_GET_PID(mfd
->panel
.id
) == LCD_TOSHIBA_2P4_WVGA_PT
)
967 write_client_reg(VSYNIF
, 0x00000000, TRUE
);
968 write_client_reg(PORT_ENB
, 0x00000002, TRUE
);
969 write_client_reg(CLKENB
, 0x000011EF, TRUE
);
970 write_client_reg(BITMAP0
, 0x028001E0, TRUE
);
971 write_client_reg(BITMAP1
, 0x00000000, TRUE
);
972 write_client_reg(BITMAP2
, 0x00000000, TRUE
);
973 write_client_reg(BITMAP3
, 0x00000000, TRUE
);
974 write_client_reg(BITMAP4
, 0x00DC00B0, TRUE
);
975 write_client_reg(PORT
, 0x00000000, TRUE
);
976 write_client_reg(PXL
, 0x00000000, TRUE
);
977 write_client_reg(MPLFBUF
, 0x00000004, TRUE
);
978 write_client_reg(HCYCLE
, 0x0000006B, TRUE
);
979 write_client_reg(HSW
, 0x00000003, TRUE
);
980 write_client_reg(HDE_START
, 0x00000007, TRUE
);
981 write_client_reg(HDE_SIZE
, 0x00000057, TRUE
);
982 write_client_reg(VCYCLE
, 0x000000E6, TRUE
);
983 write_client_reg(VSW
, 0x00000001, TRUE
);
984 write_client_reg(VDE_START
, 0x00000003, TRUE
);
985 write_client_reg(VDE_SIZE
, 0x000000DB, TRUE
);
986 write_client_reg(ASY_DATA
, 0x80000001, TRUE
);
987 write_client_reg(ASY_DATB
, 0x0000011B, TRUE
);
988 write_client_reg(ASY_DATC
, 0x80000002, TRUE
);
989 write_client_reg(ASY_DATD
, 0x00000700, TRUE
);
990 write_client_reg(ASY_DATE
, 0x80000003, TRUE
);
991 write_client_reg(ASY_DATF
, 0x00000230, TRUE
);
992 write_client_reg(ASY_DATG
, 0x80000008, TRUE
);
993 write_client_reg(ASY_DATH
, 0x00000402, TRUE
);
994 write_client_reg(ASY_CMDSET
, 0x00000001, TRUE
);
995 write_client_reg(ASY_CMDSET
, 0x00000000, TRUE
);
996 write_client_reg(ASY_DATA
, 0x80000009, TRUE
);
997 write_client_reg(ASY_DATB
, 0x00000000, TRUE
);
998 write_client_reg(ASY_DATC
, 0x8000000B, TRUE
);
999 write_client_reg(ASY_DATD
, 0x00000000, TRUE
);
1000 write_client_reg(ASY_DATE
, 0x8000000C, TRUE
);
1001 write_client_reg(ASY_DATF
, 0x00000000, TRUE
);
1002 write_client_reg(ASY_DATG
, 0x8000000D, TRUE
);
1003 write_client_reg(ASY_DATH
, 0x00000409, TRUE
);
1004 write_client_reg(ASY_CMDSET
, 0x00000001, TRUE
);
1005 write_client_reg(ASY_CMDSET
, 0x00000000, TRUE
);
1006 write_client_reg(ASY_DATA
, 0x8000000E, TRUE
);
1007 write_client_reg(ASY_DATB
, 0x00000409, TRUE
);
1008 write_client_reg(ASY_DATC
, 0x80000030, TRUE
);
1009 write_client_reg(ASY_DATD
, 0x00000000, TRUE
);
1010 write_client_reg(ASY_DATE
, 0x80000031, TRUE
);
1011 write_client_reg(ASY_DATF
, 0x00000100, TRUE
);
1012 write_client_reg(ASY_DATG
, 0x80000032, TRUE
);
1013 write_client_reg(ASY_DATH
, 0x00000104, TRUE
);
1014 write_client_reg(ASY_CMDSET
, 0x00000001, TRUE
);
1015 write_client_reg(ASY_CMDSET
, 0x00000000, TRUE
);
1016 write_client_reg(ASY_DATA
, 0x80000033, TRUE
);
1017 write_client_reg(ASY_DATB
, 0x00000400, TRUE
);
1018 write_client_reg(ASY_DATC
, 0x80000034, TRUE
);
1019 write_client_reg(ASY_DATD
, 0x00000306, TRUE
);
1020 write_client_reg(ASY_DATE
, 0x80000035, TRUE
);
1021 write_client_reg(ASY_DATF
, 0x00000706, TRUE
);
1022 write_client_reg(ASY_DATG
, 0x80000036, TRUE
);
1023 write_client_reg(ASY_DATH
, 0x00000707, TRUE
);
1024 write_client_reg(ASY_CMDSET
, 0x00000001, TRUE
);
1025 write_client_reg(ASY_CMDSET
, 0x00000000, TRUE
);
1026 write_client_reg(ASY_DATA
, 0x80000037, TRUE
);
1027 write_client_reg(ASY_DATB
, 0x00000004, TRUE
);
1028 write_client_reg(ASY_DATC
, 0x80000038, TRUE
);
1029 write_client_reg(ASY_DATD
, 0x00000000, TRUE
);
1030 write_client_reg(ASY_DATE
, 0x80000039, TRUE
);
1031 write_client_reg(ASY_DATF
, 0x00000000, TRUE
);
1032 write_client_reg(ASY_DATG
, 0x8000003A, TRUE
);
1033 write_client_reg(ASY_DATH
, 0x00000001, TRUE
);
1034 write_client_reg(ASY_CMDSET
, 0x00000001, TRUE
);
1035 write_client_reg(ASY_CMDSET
, 0x00000000, TRUE
);
1036 write_client_reg(ASY_DATA
, 0x80000044, TRUE
);
1037 write_client_reg(ASY_DATB
, 0x0000AF00, TRUE
);
1038 write_client_reg(ASY_DATC
, 0x80000045, TRUE
);
1039 write_client_reg(ASY_DATD
, 0x0000DB00, TRUE
);
1040 write_client_reg(ASY_DATE
, 0x08000042, TRUE
);
1041 write_client_reg(ASY_DATF
, 0x0000DB00, TRUE
);
1042 write_client_reg(ASY_DATG
, 0x80000021, TRUE
);
1043 write_client_reg(ASY_DATH
, 0x00000000, TRUE
);
1044 write_client_reg(ASY_CMDSET
, 0x00000001, TRUE
);
1045 write_client_reg(ASY_CMDSET
, 0x00000000, TRUE
);
1046 write_client_reg(PXL
, 0x0000000C, TRUE
);
1047 write_client_reg(VSYNIF
, 0x00000001, TRUE
);
1048 write_client_reg(ASY_DATA
, 0x80000022, TRUE
);
1049 write_client_reg(ASY_CMDSET
, 0x00000003, TRUE
);
1050 write_client_reg(START
, 0x00000001, TRUE
);
1052 write_client_reg(PXL
, 0x00000000, TRUE
);
1053 write_client_reg(VSYNIF
, 0x00000000, TRUE
);
1054 write_client_reg(START
, 0x00000000, TRUE
);
1055 write_client_reg(ASY_CMDSET
, 0x00000000, TRUE
);
1056 write_client_reg(ASY_DATA
, 0x80000050, TRUE
);
1057 write_client_reg(ASY_DATB
, 0x00000000, TRUE
);
1058 write_client_reg(ASY_DATC
, 0x80000051, TRUE
);
1059 write_client_reg(ASY_DATD
, 0x00000E00, TRUE
);
1060 write_client_reg(ASY_DATE
, 0x80000052, TRUE
);
1061 write_client_reg(ASY_DATF
, 0x00000D01, TRUE
);
1062 write_client_reg(ASY_DATG
, 0x80000053, TRUE
);
1063 write_client_reg(ASY_DATH
, 0x00000000, TRUE
);
1064 write_client_reg(ASY_CMDSET
, 0x00000001, TRUE
);
1065 write_client_reg(ASY_CMDSET
, 0x00000000, TRUE
);
1066 write_client_reg(ASY_DATA
, 0x80000058, TRUE
);
1067 write_client_reg(ASY_DATB
, 0x00000000, TRUE
);
1068 write_client_reg(ASY_DATC
, 0x8000005A, TRUE
);
1069 write_client_reg(ASY_DATD
, 0x00000E01, TRUE
);
1070 write_client_reg(ASY_CMDSET
, 0x00000009, TRUE
);
1071 write_client_reg(ASY_CMDSET
, 0x00000008, TRUE
);
1072 write_client_reg(ASY_DATA
, 0x80000011, TRUE
);
1073 write_client_reg(ASY_DATB
, 0x00000812, TRUE
);
1074 write_client_reg(ASY_DATC
, 0x80000012, TRUE
);
1075 write_client_reg(ASY_DATD
, 0x00000003, TRUE
);
1076 write_client_reg(ASY_DATE
, 0x80000013, TRUE
);
1077 write_client_reg(ASY_DATF
, 0x00000909, TRUE
);
1078 write_client_reg(ASY_DATG
, 0x80000010, TRUE
);
1079 write_client_reg(ASY_DATH
, 0x00000040, TRUE
);
1080 write_client_reg(ASY_CMDSET
, 0x00000001, TRUE
);
1081 write_client_reg(ASY_CMDSET
, 0x00000000, TRUE
);
1083 write_client_reg(ASY_DATA
, 0x80000010, TRUE
);
1084 write_client_reg(ASY_DATB
, 0x00000340, TRUE
);
1085 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1086 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1088 write_client_reg(ASY_DATA
, 0x80000010, TRUE
);
1089 write_client_reg(ASY_DATB
, 0x00003340, TRUE
);
1090 write_client_reg(ASY_DATC
, 0x80000007, TRUE
);
1091 write_client_reg(ASY_DATD
, 0x00004007, TRUE
);
1092 write_client_reg(ASY_CMDSET
, 0x00000009, TRUE
);
1093 write_client_reg(ASY_CMDSET
, 0x00000008, TRUE
);
1095 write_client_reg(ASY_DATA
, 0x80000007, TRUE
);
1096 write_client_reg(ASY_DATB
, 0x00004017, TRUE
);
1097 write_client_reg(ASY_DATC
, 0x8000005B, TRUE
);
1098 write_client_reg(ASY_DATD
, 0x00000000, TRUE
);
1099 write_client_reg(ASY_DATE
, 0x80000059, TRUE
);
1100 write_client_reg(ASY_DATF
, 0x00000011, TRUE
);
1101 write_client_reg(ASY_CMDSET
, 0x0000000D, TRUE
);
1102 write_client_reg(ASY_CMDSET
, 0x0000000C, TRUE
);
1104 write_client_reg(ASY_DATA
, 0x80000059, TRUE
);
1105 /* LTPS I/F control */
1106 write_client_reg(ASY_DATB
, 0x00000019, TRUE
);
1107 /* Direct cmd transfer enable */
1108 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1109 /* Direct cmd transfer disable */
1110 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1112 /* Index setting of SUB LCDD */
1113 write_client_reg(ASY_DATA
, 0x80000059, TRUE
);
1114 /* LTPS I/F control */
1115 write_client_reg(ASY_DATB
, 0x00000079, TRUE
);
1116 /* Direct cmd transfer enable */
1117 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1118 /* Direct cmd transfer disable */
1119 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1121 /* Index setting of SUB LCDD */
1122 write_client_reg(ASY_DATA
, 0x80000059, TRUE
);
1123 /* LTPS I/F control */
1124 write_client_reg(ASY_DATB
, 0x000003FD, TRUE
);
1125 /* Direct cmd transfer enable */
1126 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1127 /* Direct cmd transfer disable */
1128 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1130 mddi_toshiba_state_transition(TOSHIBA_STATE_PRIM_SEC_READY
,
1131 TOSHIBA_STATE_SEC_NORMAL_MODE
);
1134 static void toshiba_prim_lcd_off(struct msm_fb_data_type
*mfd
)
1136 if (TM_GET_PID(mfd
->panel
.id
) == LCD_SHARP_2P4_VGA
) {
1140 /* Main panel power off (Deep standby in) */
1141 write_client_reg(SSITX
, 0x000800BC, TRUE
);
1142 write_client_reg(SSITX
, 0x00000100, TRUE
);
1143 write_client_reg(SSITX
, 0x00000028, TRUE
);
1145 write_client_reg(SSITX
, 0x000800B8, TRUE
);
1146 write_client_reg(SSITX
, 0x00000180, TRUE
);
1147 write_client_reg(SSITX
, 0x00000102, TRUE
);
1148 write_client_reg(SSITX
, 0x00000010, TRUE
);
1150 write_client_reg(PORT
, 0x00000003, TRUE
);
1151 write_client_reg(REGENB
, 0x00000001, TRUE
);
1153 write_client_reg(PXL
, 0x00000000, TRUE
);
1154 write_client_reg(START
, 0x00000000, TRUE
);
1155 write_client_reg(REGENB
, 0x00000001, TRUE
);
1157 if (TM_GET_PID(mfd
->panel
.id
) != LCD_SHARP_2P4_VGA
) {
1158 write_client_reg(SSITX
, 0x000800B0, TRUE
);
1159 write_client_reg(SSITX
, 0x00000100, TRUE
);
1161 mddi_toshiba_state_transition(TOSHIBA_STATE_PRIM_NORMAL_MODE
,
1162 TOSHIBA_STATE_PRIM_SEC_STANDBY
);
1165 static void toshiba_sec_lcd_off(struct msm_fb_data_type
*mfd
)
1167 if (TM_GET_PID(mfd
->panel
.id
) == LCD_TOSHIBA_2P4_WVGA_PT
)
1170 write_client_reg(VSYNIF
, 0x00000000, TRUE
);
1171 write_client_reg(PORT_ENB
, 0x00000002, TRUE
);
1172 write_client_reg(ASY_DATA
, 0x80000007, TRUE
);
1173 write_client_reg(ASY_DATB
, 0x00004016, TRUE
);
1174 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1175 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1177 write_client_reg(ASY_DATA
, 0x80000059, TRUE
);
1178 write_client_reg(ASY_DATB
, 0x00000019, TRUE
);
1179 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1180 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1182 write_client_reg(ASY_DATA
, 0x80000059, TRUE
);
1183 write_client_reg(ASY_DATB
, 0x0000000B, TRUE
);
1184 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1185 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1187 write_client_reg(ASY_DATA
, 0x80000059, TRUE
);
1188 write_client_reg(ASY_DATB
, 0x00000002, TRUE
);
1189 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1190 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1192 write_client_reg(ASY_DATA
, 0x80000010, TRUE
);
1193 write_client_reg(ASY_DATB
, 0x00000300, TRUE
);
1194 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1195 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1197 write_client_reg(ASY_DATA
, 0x80000059, TRUE
);
1198 write_client_reg(ASY_DATB
, 0x00000000, TRUE
);
1199 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1200 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1202 write_client_reg(ASY_DATA
, 0x80000007, TRUE
);
1203 write_client_reg(ASY_DATB
, 0x00004004, TRUE
);
1204 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1205 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1207 write_client_reg(PORT
, 0x00000000, TRUE
);
1208 write_client_reg(PXL
, 0x00000000, TRUE
);
1209 write_client_reg(START
, 0x00000000, TRUE
);
1210 write_client_reg(VSYNIF
, 0x00000001, TRUE
);
1211 write_client_reg(PORT_ENB
, 0x00000001, TRUE
);
1212 write_client_reg(REGENB
, 0x00000001, TRUE
);
1213 mddi_toshiba_state_transition(TOSHIBA_STATE_SEC_NORMAL_MODE
,
1214 TOSHIBA_STATE_PRIM_SEC_STANDBY
);
1217 static void toshiba_sec_cont_update_start(struct msm_fb_data_type
*mfd
)
1220 if (TM_GET_PID(mfd
->panel
.id
) == LCD_TOSHIBA_2P4_WVGA_PT
)
1223 write_client_reg(VSYNIF
, 0x00000000, TRUE
);
1224 write_client_reg(PORT_ENB
, 0x00000002, TRUE
);
1225 write_client_reg(INTMASK
, 0x00000001, TRUE
);
1226 write_client_reg(TTBUSSEL
, 0x0000000B, TRUE
);
1227 write_client_reg(MONI
, 0x00000008, TRUE
);
1228 write_client_reg(CLKENB
, 0x000000EF, TRUE
);
1229 write_client_reg(CLKENB
, 0x000010EF, TRUE
);
1230 write_client_reg(CLKENB
, 0x000011EF, TRUE
);
1231 write_client_reg(BITMAP4
, 0x00DC00B0, TRUE
);
1232 write_client_reg(HCYCLE
, 0x0000006B, TRUE
);
1233 write_client_reg(HSW
, 0x00000003, TRUE
);
1234 write_client_reg(HDE_START
, 0x00000002, TRUE
);
1235 write_client_reg(HDE_SIZE
, 0x00000057, TRUE
);
1236 write_client_reg(VCYCLE
, 0x000000E6, TRUE
);
1237 write_client_reg(VSW
, 0x00000001, TRUE
);
1238 write_client_reg(VDE_START
, 0x00000003, TRUE
);
1239 write_client_reg(VDE_SIZE
, 0x000000DB, TRUE
);
1240 write_client_reg(WRSTB
, 0x00000015, TRUE
);
1241 write_client_reg(MPLFBUF
, 0x00000004, TRUE
);
1242 write_client_reg(ASY_DATA
, 0x80000021, TRUE
);
1243 write_client_reg(ASY_DATB
, 0x00000000, TRUE
);
1244 write_client_reg(ASY_DATC
, 0x80000022, TRUE
);
1245 write_client_reg(ASY_CMDSET
, 0x00000007, TRUE
);
1246 write_client_reg(PXL
, 0x00000089, TRUE
);
1247 write_client_reg(VSYNIF
, 0x00000001, TRUE
);
1251 static void toshiba_sec_cont_update_stop(struct msm_fb_data_type
*mfd
)
1253 if (TM_GET_PID(mfd
->panel
.id
) == LCD_TOSHIBA_2P4_WVGA_PT
)
1256 write_client_reg(PXL
, 0x00000000, TRUE
);
1257 write_client_reg(VSYNIF
, 0x00000000, TRUE
);
1258 write_client_reg(START
, 0x00000000, TRUE
);
1259 write_client_reg(ASY_CMDSET
, 0x00000000, TRUE
);
1261 write_client_reg(SRST
, 0x00000002, TRUE
);
1263 write_client_reg(SRST
, 0x00000003, TRUE
);
1266 static void toshiba_sec_backlight_on(struct msm_fb_data_type
*mfd
)
1268 if (TM_GET_PID(mfd
->panel
.id
) == LCD_TOSHIBA_2P4_WVGA_PT
)
1271 write_client_reg(TIMER0CTRL
, 0x00000060, TRUE
);
1272 write_client_reg(TIMER0LOAD
, 0x00001388, TRUE
);
1273 write_client_reg(PWM0OFF
, 0x00000001, TRUE
);
1274 write_client_reg(TIMER1CTRL
, 0x00000060, TRUE
);
1275 write_client_reg(TIMER1LOAD
, 0x00001388, TRUE
);
1276 write_client_reg(PWM1OFF
, 0x00001387, TRUE
);
1277 write_client_reg(TIMER0CTRL
, 0x000000E0, TRUE
);
1278 write_client_reg(TIMER1CTRL
, 0x000000E0, TRUE
);
1279 write_client_reg(PWMCR
, 0x00000003, TRUE
);
1282 static void toshiba_sec_sleep_in(struct msm_fb_data_type
*mfd
)
1284 if (TM_GET_PID(mfd
->panel
.id
) == LCD_TOSHIBA_2P4_WVGA_PT
)
1287 write_client_reg(VSYNIF
, 0x00000000, TRUE
);
1288 write_client_reg(PORT_ENB
, 0x00000002, TRUE
);
1289 write_client_reg(ASY_DATA
, 0x80000007, TRUE
);
1290 write_client_reg(ASY_DATB
, 0x00004016, TRUE
);
1291 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1292 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1294 write_client_reg(ASY_DATA
, 0x80000059, TRUE
);
1295 write_client_reg(ASY_DATB
, 0x00000019, TRUE
);
1296 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1297 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1299 write_client_reg(ASY_DATA
, 0x80000059, TRUE
);
1300 write_client_reg(ASY_DATB
, 0x0000000B, TRUE
);
1301 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1302 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1304 write_client_reg(ASY_DATA
, 0x80000059, TRUE
);
1305 write_client_reg(ASY_DATB
, 0x00000002, TRUE
);
1306 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1307 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1309 write_client_reg(ASY_DATA
, 0x80000010, TRUE
);
1310 write_client_reg(ASY_DATB
, 0x00000300, TRUE
);
1311 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1312 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1314 write_client_reg(ASY_DATA
, 0x80000059, TRUE
);
1315 write_client_reg(ASY_DATB
, 0x00000000, TRUE
);
1316 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1317 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1319 write_client_reg(ASY_DATA
, 0x80000007, TRUE
);
1320 write_client_reg(ASY_DATB
, 0x00004004, TRUE
);
1321 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1322 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1324 write_client_reg(PORT
, 0x00000000, TRUE
);
1325 write_client_reg(PXL
, 0x00000000, TRUE
);
1326 write_client_reg(START
, 0x00000000, TRUE
);
1327 write_client_reg(REGENB
, 0x00000001, TRUE
);
1328 /* Sleep in sequence */
1329 write_client_reg(ASY_DATA
, 0x80000010, TRUE
);
1330 write_client_reg(ASY_DATB
, 0x00000302, TRUE
);
1331 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1332 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1335 static void toshiba_sec_sleep_out(struct msm_fb_data_type
*mfd
)
1337 if (TM_GET_PID(mfd
->panel
.id
) == LCD_TOSHIBA_2P4_WVGA_PT
)
1340 write_client_reg(VSYNIF
, 0x00000000, TRUE
);
1341 write_client_reg(PORT_ENB
, 0x00000002, TRUE
);
1342 write_client_reg(ASY_DATA
, 0x80000010, TRUE
);
1343 write_client_reg(ASY_DATB
, 0x00000300, TRUE
);
1344 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1345 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1346 /* Display ON sequence */
1347 write_client_reg(ASY_DATA
, 0x80000011, TRUE
);
1348 write_client_reg(ASY_DATB
, 0x00000812, TRUE
);
1349 write_client_reg(ASY_DATC
, 0x80000012, TRUE
);
1350 write_client_reg(ASY_DATD
, 0x00000003, TRUE
);
1351 write_client_reg(ASY_DATE
, 0x80000013, TRUE
);
1352 write_client_reg(ASY_DATF
, 0x00000909, TRUE
);
1353 write_client_reg(ASY_DATG
, 0x80000010, TRUE
);
1354 write_client_reg(ASY_DATH
, 0x00000040, TRUE
);
1355 write_client_reg(ASY_CMDSET
, 0x00000001, TRUE
);
1356 write_client_reg(ASY_CMDSET
, 0x00000000, TRUE
);
1358 write_client_reg(ASY_DATA
, 0x80000010, TRUE
);
1359 write_client_reg(ASY_DATB
, 0x00000340, TRUE
);
1360 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1361 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1363 write_client_reg(ASY_DATA
, 0x80000010, TRUE
);
1364 write_client_reg(ASY_DATB
, 0x00003340, TRUE
);
1365 write_client_reg(ASY_DATC
, 0x80000007, TRUE
);
1366 write_client_reg(ASY_DATD
, 0x00004007, TRUE
);
1367 write_client_reg(ASY_CMDSET
, 0x00000009, TRUE
);
1368 write_client_reg(ASY_CMDSET
, 0x00000008, TRUE
);
1370 write_client_reg(ASY_DATA
, 0x80000007, TRUE
);
1371 write_client_reg(ASY_DATB
, 0x00004017, TRUE
);
1372 write_client_reg(ASY_DATC
, 0x8000005B, TRUE
);
1373 write_client_reg(ASY_DATD
, 0x00000000, TRUE
);
1374 write_client_reg(ASY_DATE
, 0x80000059, TRUE
);
1375 write_client_reg(ASY_DATF
, 0x00000011, TRUE
);
1376 write_client_reg(ASY_CMDSET
, 0x0000000D, TRUE
);
1377 write_client_reg(ASY_CMDSET
, 0x0000000C, TRUE
);
1379 write_client_reg(ASY_DATA
, 0x80000059, TRUE
);
1380 write_client_reg(ASY_DATB
, 0x00000019, TRUE
);
1381 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1382 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1384 write_client_reg(ASY_DATA
, 0x80000059, TRUE
);
1385 write_client_reg(ASY_DATB
, 0x00000079, TRUE
);
1386 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1387 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1389 write_client_reg(ASY_DATA
, 0x80000059, TRUE
);
1390 write_client_reg(ASY_DATB
, 0x000003FD, TRUE
);
1391 write_client_reg(ASY_CMDSET
, 0x00000005, TRUE
);
1392 write_client_reg(ASY_CMDSET
, 0x00000004, TRUE
);
1396 static void mddi_toshiba_lcd_set_backlight(struct msm_fb_data_type
*mfd
)
1400 int max
= mfd
->panel_info
.bl_max
;
1401 int min
= mfd
->panel_info
.bl_min
;
1403 if (mddi_toshiba_pdata
&& mddi_toshiba_pdata
->pmic_backlight
) {
1404 ret
= mddi_toshiba_pdata
->pmic_backlight(mfd
->bl_level
);
1409 if (ret
&& mddi_toshiba_pdata
&& mddi_toshiba_pdata
->backlight_level
) {
1410 level
= mddi_toshiba_pdata
->backlight_level(mfd
->bl_level
,
1416 if (TM_GET_PID(mfd
->panel
.id
) == LCD_SHARP_2P4_VGA
)
1417 write_client_reg(TIMER0LOAD
, 0x00001388, TRUE
);
1422 level
= (mfd
->bl_level
* 4999) / max
;
1425 write_client_reg(PWM0OFF
, level
, TRUE
);
1428 static void mddi_toshiba_vsync_set_handler(msm_fb_vsync_handler_type handler
, /* ISR to be executed */
1431 boolean error
= FALSE
;
1432 unsigned long flags
;
1434 /* Disable interrupts */
1435 spin_lock_irqsave(&mddi_host_spin_lock
, flags
);
1438 if (mddi_toshiba_vsync_handler
!= NULL
) {
1441 /* Register the handler for this particular GROUP interrupt source */
1442 mddi_toshiba_vsync_handler
= handler
;
1443 mddi_toshiba_vsync_handler_arg
= arg
;
1446 /* Restore interrupts */
1447 spin_unlock_irqrestore(&mddi_host_spin_lock
, flags
);
1448 /* MDDI_INTFREE(); */
1450 MDDI_MSG_ERR("MDDI: Previous Vsync handler never called\n");
1452 /* Enable the vsync wakeup */
1453 mddi_queue_register_write(INTMSK
, 0x0000, FALSE
, 0);
1455 mddi_toshiba_vsync_attempts
= 1;
1456 mddi_vsync_detect_enabled
= TRUE
;
1458 } /* mddi_toshiba_vsync_set_handler */
1460 static void mddi_toshiba_lcd_vsync_detected(boolean detected
)
1462 /* static timetick_type start_time = 0; */
1463 static struct timeval start_time
;
1464 static boolean first_time
= TRUE
;
1465 /* uint32 mdp_cnt_val = 0; */
1466 /* timetick_type elapsed_us; */
1471 if ((detected
) || (mddi_toshiba_vsync_attempts
> 5)) {
1472 if ((detected
) && (mddi_toshiba_monitor_refresh_value
)) {
1473 /* if (start_time != 0) */
1475 jiffies_to_timeval(jiffies
, &now
);
1477 (now
.tv_sec
- start_time
.tv_sec
) * 1000000 +
1478 now
.tv_usec
- start_time
.tv_usec
;
1480 * LCD is configured for a refresh every usecs,
1481 * so to determine the number of vsyncs that
1482 * have occurred since the last measurement
1483 * add half that to the time difference and
1484 * divide by the refresh rate.
1486 num_vsyncs
= (elapsed_us
+
1487 (mddi_toshiba_usecs_per_refresh
>>
1489 mddi_toshiba_usecs_per_refresh
;
1491 * LCD is configured for * hsyncs (rows) per
1492 * refresh cycle. Calculate new rows_per_second
1493 * value based upon these new measurements.
1494 * MDP can update with this new value.
1496 mddi_toshiba_rows_per_second
=
1497 (mddi_toshiba_rows_per_refresh
* 1000 *
1498 num_vsyncs
) / (elapsed_us
/ 1000);
1500 /* start_time = timetick_get(); */
1502 jiffies_to_timeval(jiffies
, &start_time
);
1503 if (mddi_toshiba_report_refresh_measurements
) {
1504 (void)mddi_queue_register_read_int(VPOS
,
1505 &mddi_toshiba_curr_vpos
);
1506 /* mdp_cnt_val = MDP_LINE_COUNT; */
1509 /* if detected = TRUE, client initiated wakeup was detected */
1510 if (mddi_toshiba_vsync_handler
!= NULL
) {
1511 (*mddi_toshiba_vsync_handler
)
1512 (mddi_toshiba_vsync_handler_arg
);
1513 mddi_toshiba_vsync_handler
= NULL
;
1515 mddi_vsync_detect_enabled
= FALSE
;
1516 mddi_toshiba_vsync_attempts
= 0;
1517 /* need to disable the interrupt wakeup */
1518 if (!mddi_queue_register_write_int(INTMSK
, 0x0001))
1519 MDDI_MSG_ERR("Vsync interrupt disable failed!\n");
1521 /* give up after 5 failed attempts but show error */
1522 MDDI_MSG_NOTICE("Vsync detection failed!\n");
1523 } else if ((mddi_toshiba_monitor_refresh_value
) &&
1524 (mddi_toshiba_report_refresh_measurements
)) {
1525 MDDI_MSG_NOTICE(" Last Line Counter=%d!\n",
1526 mddi_toshiba_curr_vpos
);
1527 /* MDDI_MSG_NOTICE(" MDP Line Counter=%d!\n",mdp_cnt_val); */
1528 MDDI_MSG_NOTICE(" Lines Per Second=%d!\n",
1529 mddi_toshiba_rows_per_second
);
1531 /* clear the interrupt */
1532 if (!mddi_queue_register_write_int(INTFLG
, 0x0001))
1533 MDDI_MSG_ERR("Vsync interrupt clear failed!\n");
1535 /* if detected = FALSE, we woke up from hibernation, but did not
1536 * detect client initiated wakeup.
1538 mddi_toshiba_vsync_attempts
++;
1542 static void mddi_toshiba_prim_init(struct msm_fb_data_type
*mfd
)
1545 switch (toshiba_state
) {
1546 case TOSHIBA_STATE_PRIM_SEC_READY
:
1548 case TOSHIBA_STATE_OFF
:
1549 toshiba_state
= TOSHIBA_STATE_PRIM_SEC_STANDBY
;
1550 toshiba_common_initial_setup(mfd
);
1552 case TOSHIBA_STATE_PRIM_SEC_STANDBY
:
1553 toshiba_common_initial_setup(mfd
);
1555 case TOSHIBA_STATE_SEC_NORMAL_MODE
:
1556 toshiba_sec_cont_update_stop(mfd
);
1557 toshiba_sec_sleep_in(mfd
);
1558 toshiba_sec_sleep_out(mfd
);
1559 toshiba_sec_lcd_off(mfd
);
1560 toshiba_common_initial_setup(mfd
);
1563 MDDI_MSG_ERR("mddi_toshiba_prim_init from state %d\n",
1567 toshiba_prim_start(mfd
);
1568 if (TM_GET_PID(mfd
->panel
.id
) == LCD_SHARP_2P4_VGA
)
1570 mddi_host_write_pix_attr_reg(0x00C3);
1573 static void mddi_toshiba_sec_init(struct msm_fb_data_type
*mfd
)
1576 switch (toshiba_state
) {
1577 case TOSHIBA_STATE_PRIM_SEC_READY
:
1579 case TOSHIBA_STATE_PRIM_SEC_STANDBY
:
1580 toshiba_common_initial_setup(mfd
);
1582 case TOSHIBA_STATE_PRIM_NORMAL_MODE
:
1583 toshiba_prim_lcd_off(mfd
);
1584 toshiba_common_initial_setup(mfd
);
1587 MDDI_MSG_ERR("mddi_toshiba_sec_init from state %d\n",
1591 toshiba_sec_start(mfd
);
1592 toshiba_sec_backlight_on(mfd
);
1593 toshiba_sec_cont_update_start(mfd
);
1594 mddi_host_write_pix_attr_reg(0x0400);
1597 static void mddi_toshiba_lcd_powerdown(struct msm_fb_data_type
*mfd
)
1599 switch (toshiba_state
) {
1600 case TOSHIBA_STATE_PRIM_SEC_READY
:
1601 mddi_toshiba_prim_init(mfd
);
1602 mddi_toshiba_lcd_powerdown(mfd
);
1604 case TOSHIBA_STATE_PRIM_SEC_STANDBY
:
1606 case TOSHIBA_STATE_PRIM_NORMAL_MODE
:
1607 toshiba_prim_lcd_off(mfd
);
1609 case TOSHIBA_STATE_SEC_NORMAL_MODE
:
1610 toshiba_sec_cont_update_stop(mfd
);
1611 toshiba_sec_sleep_in(mfd
);
1612 toshiba_sec_sleep_out(mfd
);
1613 toshiba_sec_lcd_off(mfd
);
1616 MDDI_MSG_ERR("mddi_toshiba_lcd_powerdown from state %d\n",
1621 static int mddi_sharpgordon_firsttime
= 1;
1623 static int mddi_toshiba_lcd_on(struct platform_device
*pdev
)
1625 struct msm_fb_data_type
*mfd
;
1626 mfd
= platform_get_drvdata(pdev
);
1629 if (mfd
->key
!= MFD_KEY
)
1632 if (TM_GET_DID(mfd
->panel
.id
) == TOSHIBA_VGA_PRIM
)
1633 mddi_toshiba_prim_init(mfd
);
1635 mddi_toshiba_sec_init(mfd
);
1636 if (TM_GET_PID(mfd
->panel
.id
) == LCD_SHARP_2P4_VGA
) {
1637 if (mddi_sharpgordon_firsttime
) {
1638 mddi_sharpgordon_firsttime
= 0;
1639 write_client_reg(REGENB
, 0x00000001, TRUE
);
1645 static int mddi_toshiba_lcd_off(struct platform_device
*pdev
)
1647 mddi_toshiba_lcd_powerdown(platform_get_drvdata(pdev
));
1651 static int __init
mddi_toshiba_lcd_probe(struct platform_device
*pdev
)
1653 if (pdev
->id
== 0) {
1654 mddi_toshiba_pdata
= pdev
->dev
.platform_data
;
1658 msm_fb_add_device(pdev
);
1663 static struct platform_driver this_driver
= {
1664 .probe
= mddi_toshiba_lcd_probe
,
1666 .name
= "mddi_toshiba",
1670 static struct msm_fb_panel_data toshiba_panel_data
= {
1671 .on
= mddi_toshiba_lcd_on
,
1672 .off
= mddi_toshiba_lcd_off
,
1675 static int ch_used
[3];
1677 int mddi_toshiba_device_register(struct msm_panel_info
*pinfo
,
1678 u32 channel
, u32 panel
)
1680 struct platform_device
*pdev
= NULL
;
1683 if ((channel
>= 3) || ch_used
[channel
])
1686 if ((channel
!= TOSHIBA_VGA_PRIM
) &&
1687 mddi_toshiba_pdata
&& mddi_toshiba_pdata
->panel_num
)
1688 if (mddi_toshiba_pdata
->panel_num() < 2)
1691 ch_used
[channel
] = TRUE
;
1693 pdev
= platform_device_alloc("mddi_toshiba", (panel
<< 8)|channel
);
1697 if (channel
== TOSHIBA_VGA_PRIM
) {
1698 toshiba_panel_data
.set_backlight
=
1699 mddi_toshiba_lcd_set_backlight
;
1701 if (pinfo
->lcd
.vsync_enable
) {
1702 toshiba_panel_data
.set_vsync_notifier
=
1703 mddi_toshiba_vsync_set_handler
;
1704 mddi_lcd
.vsync_detected
=
1705 mddi_toshiba_lcd_vsync_detected
;
1708 toshiba_panel_data
.set_backlight
= NULL
;
1709 toshiba_panel_data
.set_vsync_notifier
= NULL
;
1712 toshiba_panel_data
.panel_info
= *pinfo
;
1714 ret
= platform_device_add_data(pdev
, &toshiba_panel_data
,
1715 sizeof(toshiba_panel_data
));
1718 "%s: platform_device_add_data failed!\n", __func__
);
1719 goto err_device_put
;
1722 ret
= platform_device_add(pdev
);
1725 "%s: platform_device_register failed!\n", __func__
);
1726 goto err_device_put
;
1732 platform_device_put(pdev
);
1736 static int __init
mddi_toshiba_lcd_init(void)
1738 return platform_driver_register(&this_driver
);
1741 module_init(mddi_toshiba_lcd_init
);