From Htc-linux
The following code applies to the RAPH100 _only_
Hitachi (5), Sharp(0xa) or Toppoly(2,0x11).
display init ->
vreg(4,1,bb8)
vreg(b,1,708)
gpio_0x62=1
vreg(a,1,a28)
i2c_wr(cc,20,2,0)
msleep 5
check PCB XC
if (PCB XC ) gpio_0x63=1
else gpio_0x52=1
msleep 20
---mddi_host_init()---
clk_8c=0xa19
mddi_brigde_init()
clk_5c=0xa06
msleep 10
hitachi_powerup:
| GPIODIR | 150004 | =3cc |
|
| GPIODATA | 150000 | =40004 |
|
msleep 2
msleep 50
| SSICTL | 120000 | =170 |
|
| SSITIME | 120004 | =100 |
|
| SSICTL | 120000 | =172 |
|
| DPSET1 | 108020 | =108 |
|
| DPSUS | 108024 | =0 |
|
| DPRUN | 108028 | =1 |
|
while DPSUS(108024)=0x10 msleep 0x64 (DPSUS)
| SYSCLKENA | 10802c | =1 |
|
| CLKENB | 160004 | =a0ef |
|
| GPIOSEL | 170000 | =0 |
|
| WKREQ | 160000 | =0 |
|
| GPIODATA | 150000 | =3fc0000 |
|
| GPIOPC | 150028 | =0 |
|
| DRAMPWR | 160008 | =1 |
|
| PWM0DUTYx08 | 140008 | =60 |
|
| PWM0PERIODx00 | 140000 | =1388 |
|
| PWM0OFF | 14001c | =1 |
|
| PWM1DUTYx28 | 140028 | =60 |
|
| PWM1PERIODx20 | 140020 | =1388 |
|
| PWM1OFFx3c | 14003c | =1 |
|
| PWM0DUTYx08 | 140008 | =e0 |
|
| PWM1DUTYx28 | 140028 | =e0 |
|
| PWMXXXx68 | 140068 | =3 |
|
msleep 1
---get_panel_type---
msleep 10
read GPIODATA(150000)
id=0
if bit 0x10 is set -> id+=1
if bit 0x04 is set -> id+=2
=0 -> panel id 5 (hitachi)
=1 -> panel id 0xa (sharp)
=2 -> panel id 0x11 (toppoly2)
=3 -> panel id 2 (toppoly)
---mddi_toshiba---
| PXL | 110030 | =0 |
|
| VSYNIF | 110060 | =0 |
|
| START | 110008 | =0 |
|
| ASY_CMDSET | 11008c | =0 |
|
msleep 3
msleep 3
| VSYNIF | 110060 | =0 |
|
| PORT_ENB | 110004 | =2 |
|
| ASY_DATA | 11006c | =80000007 |
|
| ASY_DATB | 110070 | =4016 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 2
| ASY_DATA | 11006c | =80000059 |
|
| ASY_DATB | 110070 | =19 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 2
| ASY_DATA | 11006c | =80000059 |
|
| ASY_DATB | 110070 | =b |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 2
| ASY_DATA | 11006c | =80000059 |
|
| ASY_DATB | 110070 | =2 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 4
| ASY_DATA | 11006c | =80000010 |
|
| ASY_DATB | 110070 | =300 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 4
| ASY_DATA | 11006c | =80000059 |
|
| ASY_DATB | 110070 | =0 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 4
| ASY_DATA | 11006c | =80000007 |
|
| ASY_DATB | 110070 | =4004 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 2
| PORT | 11000c | =0 |
|
| PXL | 110030 | =0 |
|
| START | 110008 | =0 |
|
| REGENB | 11005c | =1 |
|
| ASY_DATA | 11006c | =80000010 |
|
| ASY_DATB | 110070 | =302 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
| VSYNIF | 110060 | =0 |
|
| PORT_ENB | 110004 | =2 |
|
| ASY_DATA | 11006c | =80000010 |
|
| ASY_DATB | 110070 | =300 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
| ASY_DATA | 11006c | =80000011 |
|
| ASY_DATB | 110070 | =812 |
|
| ASY_DATC | 110074 | =80000012 |
|
| ASY_DATD | 110078 | =3 |
|
| ASY_DATE | 11007c | =80000013 |
|
| ASY_DATF | 110080 | =909 |
|
| ASY_DATG | 110084 | =80000010 |
|
| ASY_DATH | 110088 | =40 |
|
| ASY_CMDSET | 11008c | =1 |
|
| ASY_CMDSET | 11008c | =0 |
|
msleep 4
| ASY_DATA | 11006c | =80000010 |
|
| ASY_DATB | 110070 | =340 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 6
| ASY_DATA | 11006c | =80000010 |
|
| ASY_DATB | 110070 | =3340 |
|
| ASY_DATC | 110074 | =80000007 |
|
| ASY_DATD | 110078 | =4007 |
|
| ASY_CMDSET | 11008c | =9 |
|
| ASY_CMDSET | 11008c | =8 |
|
msleep 1
| ASY_DATA | 11006c | =80000007 |
|
| ASY_DATB | 110070 | =4017 |
|
| ASY_DATC | 110074 | =8000005b |
|
| ASY_DATD | 110078 | =0 |
|
| ASY_DATE | 11007c | =80000059 |
|
| ASY_DATF | 110080 | =11 |
|
| ASY_CMDSET | 11008c | =d |
|
| ASY_CMDSET | 11008c | =c |
|
msleep 2
| ASY_DATA | 11006c | =80000059 |
|
| ASY_DATB | 110070 | =19 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 2
| ASY_DATA | 11006c | =80000059 |
|
| ASY_DATB | 110070 | =79 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 2
| ASY_DATA | 11006c | =80000059 |
|
| ASY_DATB | 110070 | =3fc====1 | ====
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 2
| VSYNIF | 110060 | =0 |
|
| PORT_ENB | 110004 | =2 |
|
| ASY_DATA | 11006c | =80000007 |
|
| ASY_DATB | 110070 | =4016 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 2
| ASY_DATA | 11006c | =80000059 |
|
| ASY_DATB | 110070 | =19 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 2
| ASY_DATA | 11006c | =80000059 |
|
| ASY_DATB | 110070 | =b |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 2
| ASY_DATA | 11006c | =80000059 |
|
| ASY_DATB | 110070 | =2 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 4
| ASY_DATA | 11006c | =80000010 |
|
| ASY_DATB | 110070 | =300 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 4
| ASY_DATA | 11006c | =80000059 |
|
| ASY_DATB | 110070 | =0 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 4
| ASY_DATA | 11006c | =80000007 |
|
| ASY_DATB | 110070 | =4004 |
|
| ASY_CMDSET | 11008c | =5 |
|
| ASY_CMDSET | 11008c | =4 |
|
msleep 4
| PORT | 11000c | =0 |
|
| PXL | 110030 | =0 |
|
| START | 110008 | =0 |
|
| VSYNIF | 110060 | =1 |
|
| PORT_ENB | 110004 | =1 |
|
| REGENB | 11005c | =1 |
|
---(common)---
---prim_start---
get_panel_id()
hitachi here
| BITMAP0 | 108044 | =28001e0 |
|
| BITMAP1 | 108048 | =1e000f0 |
|
| BITMAP2 | 10804c | =1e000f0 |
|
| BITMAP3 | 108050 | =1e000f0 |
|
| BITMAP4 | 108054 | =dc00b0 |
|
| CLKENB | 160004 | =a1eb |
|
| PORT_ENB | 110004 | =1 |
|
| PORT | 11000c | =8 |
|
| PXL | 110030 | =1 |
|
| MPLFBUF | 110020 | =0 |
|
| HCYCLE | 110034 | =f9 |
|
| HSW | 110038 | =2 |
|
| HDE_START | 11003c | =7 |
|
| HDE_SIZE | 110040 | =ef |
|
| VCYCLE | 110044 | =2fc====3 | ====
|
| VSW | 110048 | =5 |
|
| VDE_START | 11004c | =9 |
|
| VDE_SIZE | 110050 | =27c====3 | ====
|
RAPH800 Panels:
| 1 | Hitachi
|
| 2 | toppoly
|
| 3 | seid_rgb
|
| 4 | seid_mddi
|
| 5 | samsung_mddi
|
Init:
config gpio (0x62,2,0,0) -> output, alt<code>0, val</code>0
config gpio (0x63,2,0,0) -> output, alt<code>0, val</code>0
vreg enable 9,0xa5a
msleep 1
vreg enable 3,0x708
msleep 1
vreg enable 6,0xb22
msleep 1
i2c wr: cc,20,29,0
//msleep?(500) maybe usleep?
//gpio_set_value?(0x62, 1)
//TODO: read some r4=*unk_9a2a16d0 ???
if = 1: msleep?(500) again
vreg enable 8,0xb22
vreg enable a,0xa28
// read r4 again ^
if = 0: config gpio (0x1b,2,4,0) -> output, alt<code>1;pull</code>drvstr<code>0, out</code>0
//gpio_set_value?(0x63, 1)
// read r4 again
if = 1: msleep(1 * 1000)
else : msleep(10 * 1000)
mddi_host_init( ) //sub_9a025e1c()
// read r4 again
if = 0: sub_9a03d938( *unk_9a2b4660 ) // mddi_bridge_init()
Raph800 log:
22:44:30 [[D:DISP]] g_CurrentPanelType=5...
mddi_client_lcd_get_vsync_params: rows_per_refresh=660
mddi_client_lcd_get_vsync_params: mdp_last_mddi_rows_per_second=35640
22:44:30 [[D:DISP]] g_dwLayer9VirAddr<code>0x53563c00 g_dwLayer9PhyAddr</code>0x17163c00