📄 xllp_lcd.cod
字号:
; 315 : else if (CCCR_L < 17) // L = [8 - 16]
001d4 e3520011 cmp r2, #0x11
; 316 : LCLK = ((13 * CCCR_L) * 100) >> 1;
001d8 33a03e51 movcc r3, #0x51, 28
001dc 33833004 orrcc r3, r3, #4
001e0 30030392 mulcc r3, r2, r3
001e4 31a070a3 movcc r7, r3, lsr #1
001e8 3a000004 bcc |$L35242|
; 317 : else if (CCCR_L < 32) // L = [17 - 31]
001ec e3520020 cmp r2, #0x20
; 318 : LCLK = ((13 * CCCR_L) * 100) >> 2;
001f0 33a03e51 movcc r3, #0x51, 28
001f4 33833004 orrcc r3, r3, #4
001f8 30030392 mulcc r3, r2, r3
001fc 31a07123 movcc r7, r3, lsr #2
00200 |$L35242|
; 319 :
; 320 : //WHEN entering 13M mode, we must know and set the LCLK!
; 321 : //...
; 322 :
; 323 : // Convert the bpp setting into a value that the LCD controller understands.
; 324 : switch(pXllpLCD->BPP)
00200 e5943028 ldr r3, [r4, #0x28]
00204 e3530020 cmp r3, #0x20
00208 8a000014 bhi |$L35525|
0020c 0a000011 beq |$L35252|
00210 e3530001 cmp r3, #1
00214 0a00001b beq |$L35258|
00218 e3530002 cmp r3, #2
0021c 0a00000b beq |$L35248|
00220 e3530004 cmp r3, #4
00224 0a000007 beq |$L35249|
00228 e3530008 cmp r3, #8
0022c 0a000003 beq |$L35250|
00230 e3530010 cmp r3, #0x10
00234 1a000013 bne |$L35258|
; 338 : case BPP_16:
; 339 : BPP = 4;
00238 e3a06004 mov r6, #4
; 340 : break;
0023c ea00001c b |$L35244|
00240 |$L35250|
; 335 : case BPP_8:
; 336 : BPP = 3;
00240 e3a06003 mov r6, #3
; 337 : break;
00244 ea00001a b |$L35244|
00248 |$L35249|
; 332 : case BPP_4:
; 333 : BPP = 2;
00248 e3a06002 mov r6, #2
; 334 : break;
0024c ea000018 b |$L35244|
00250 |$L35248|
; 325 : {
; 326 : case BPP_1:
; 327 : BPP = 0;
; 328 : break;
; 329 : case BPP_2:
; 330 : BPP = 1;
00250 e3a06001 mov r6, #1
; 331 : break;
00254 ea000016 b |$L35244|
00258 |$L35252|
; 341 : case BPP_18:
; 342 : BPP = 5;
00258 e3a06005 mov r6, #5
; 343 : break;
0025c ea000014 b |$L35244|
00260 |$L35525|
; 319 :
; 320 : //WHEN entering 13M mode, we must know and set the LCLK!
; 321 : //...
; 322 :
; 323 : // Convert the bpp setting into a value that the LCD controller understands.
; 324 : switch(pXllpLCD->BPP)
00260 e3530040 cmp r3, #0x40
00264 0a000011 beq |$L35253|
00268 e3530080 cmp r3, #0x80
0026c 0a00000d beq |$L35254|
00270 e3530c01 cmp r3, #1, 24
00274 0a000009 beq |$L35255|
00278 e3530c02 cmp r3, #2, 24
0027c 0a000005 beq |$L35256|
00280 e3530b01 cmp r3, #1, 22
00284 0a000001 beq |$L35257|
00288 |$L35258|
; 359 : default:
; 360 : {
; 361 : BPP = 0;
00288 e3a06000 mov r6, #0
; 362 : break;
0028c ea000008 b |$L35244|
00290 |$L35257|
; 356 : case BPP_25:
; 357 : BPP = 10;
00290 e3a0600a mov r6, #0xA
; 358 : break;
00294 ea000006 b |$L35244|
00298 |$L35256|
; 353 : case BPP_24:
; 354 : BPP = 9;
00298 e3a06009 mov r6, #9
; 355 : break;
0029c ea000004 b |$L35244|
002a0 |$L35255|
; 350 : case BPP_19_PACKED:
; 351 : BPP = 8;
002a0 e3a06008 mov r6, #8
; 352 : break;
002a4 ea000002 b |$L35244|
002a8 |$L35254|
; 346 : break;
; 347 : case BPP_19:
; 348 : BPP = 7;
002a8 e3a06007 mov r6, #7
; 349 : break;
002ac ea000000 b |$L35244|
002b0 |$L35253|
; 344 : case BPP_18_PACKED:
; 345 : BPP = 6;
002b0 e3a06006 mov r6, #6
002b4 |$L35244|
; 363 : }
; 364 : }
; 365 :
; 366 : switch(pXllpLCD->DisplayType)
002b4 e5943014 ldr r3, [r4, #0x14]
002b8 e3530007 cmp r3, #7
002bc 0a000014 beq |$L35266|
002c0 e3530008 cmp r3, #8
002c4 1a000031 bne |$L35268|
; 367 : {
; 368 : case ACX333AK: // 240x320 16bpp active matrix
; 369 : {
; 370 :
; 371 : PCD = (LCLK / (2 * ACX333AK_PIXEL_CLOCK_FREQUENCY)) - 1; //why not reduce 1, in the intel code?
; 372 :
; 373 : // Configure the LCD Controller Control Registers
; 374 : p_LCDRegs->LCCR0 = (LCD_LDM | LCD_SFM | LCD_IUM | LCD_EFM |
; 375 : LCD_PAS | LCD_QDM | LCD_BM | LCD_OUM |
; 376 : LCD_RDSTM | LCD_CMDIM | LCD_OUC | LCD_LDDALT);
002c8 e59f30e8 ldr r3, [pc, #0xE8]
002cc e59f20e0 ldr r2, [pc, #0xE0]
; 377 :
; 378 : p_LCDRegs->LCCR1 = (LCD_PPL(0xEF) | LCD_HSW(0x03) |
; 379 : LCD_ELW(0x07) | LCD_BLW(0x0B) );
002d0 e59f10d8 ldr r1, [pc, #0xD8]
; 380 :
; 381 : p_LCDRegs->LCCR2 = (LCD_LPP(0x13f) | LCD_VSW(0x01) |
; 382 : LCD_EFW(0x04) | LCD_BFW(0x02) );
002d4 e59f00d0 ldr r0, [pc, #0xD0]
002d8 e5853000 str r3, [r5]
002dc e0c3e297 smull lr, r3, r7, r2
002e0 e5881000 str r1, [r8]
002e4 e5850008 str r0, [r5, #8]
; 383 :
; 384 : p_LCDRegs->LCCR3 = (LCD_PCD(PCD) | LCD_BPP(BPP) | LCD_PCP | LCD_HSP | LCD_VSP |
; 385 : LCD_PDFOR(pXllpLCD->PixelDataFormat));
002e8 e594202c ldr r2, [r4, #0x2C]
002ec e1a01343 mov r1, r3, asr #6
002f0 e2063008 and r3, r6, #8
002f4 e1832202 orr r2, r3, r2, lsl #4
002f8 e2063007 and r3, r6, #7
002fc e0811fa1 add r1, r1, r1, lsr #31
00300 e1832102 orr r2, r3, r2, lsl #2
00304 e2413001 sub r3, r1, #1
00308 e1833c02 orr r3, r3, r2, lsl #24
0030c e3833607 orr r3, r3, #7, 12
; 386 :
; 387 : p_LCDRegs->LCCR4 = LCD_PAL_FOR(0);
; 388 : if ( (p_LCDRegs->OVL1C1 & LCD_O1EN) || (p_LCDRegs->OVL2C1 & LCD_O2EN))
; 389 : {
; 390 : p_LCDRegs->LCCR4 = LCD_PAL_FOR(1) | LCD_K1(7) | LCD_K2(7) | LCD_K3(7);
; 391 : }
; 392 : }
; 393 : break;
00310 ea000013 b |$L35536|
00314 |$L35266|
; 394 :
; 395 : case TCO28STEA1: // 240x320 16bpp active matrix
; 396 : {
; 397 :
; 398 : RETAILMSG(ZGB_MSG, (TEXT("ZGB: TCO28STEA1\r\n")));
00314 e59f008c ldr r0, [pc, #0x8C]
00318 eb000000 bl NKDbgPrintfW
; 399 :
; 400 : PCD = (LCLK / (2 * TCO28STEA1_PIXEL_CLOCK_FREQUENCY)) - 1; //why not reduce 1 in intel code? wnen 13m, how?
; 401 :
; 402 : // Configure the LCD Controller Control Registers
; 403 : p_LCDRegs->LCCR0 = (LCD_LDM | LCD_IUM | LCD_SFM | //LCD_EFM |
; 404 : LCD_PAS | LCD_QDM | LCD_BM | LCD_OUM |
; 405 : LCD_RDSTM | LCD_CMDIM | LCD_OUC | LCD_LDDALT);
0031c e59f3080 ldr r3, [pc, #0x80]
00320 e59f2078 ldr r2, [pc, #0x78]
; 406 :
; 407 : p_LCDRegs->LCCR1 = (LCD_PPL(0xEF) | LCD_HSW(0x0F) |
; 408 : LCD_ELW(0x1F) | LCD_BLW(0x1F) );
00324 e59f1070 ldr r1, [pc, #0x70]
; 409 :
; 410 : p_LCDRegs->LCCR2 = (LCD_LPP(0x13f) | LCD_VSW(0x01) |
; 411 : LCD_EFW(0x05) | LCD_BFW(0x06) );
00328 e59f0068 ldr r0, [pc, #0x68]
0032c e5853000 str r3, [r5]
00330 e0c3e297 smull lr, r3, r7, r2
00334 e5881000 str r1, [r8]
00338 e5850008 str r0, [r5, #8]
; 412 :
; 413 : p_LCDRegs->LCCR3 = (LCD_PCD(PCD) | LCD_BPP(BPP) | LCD_PCP |
; 414 : LCD_PDFOR(pXllpLCD->PixelDataFormat));
0033c e594202c ldr r2, [r4, #0x2C]
00340 e1a014c3 mov r1, r3, asr #9
00344 e2063008 and r3, r6, #8
00348 e1832202 orr r2, r3, r2, lsl #4
0034c e2063007 and r3, r6, #7
00350 e0811fa1 add r1, r1, r1, lsr #31
00354 e1832102 orr r2, r3, r2, lsl #2
00358 e2413001 sub r3, r1, #1
0035c e1833c02 orr r3, r3, r2, lsl #24
00360 e3833501 orr r3, r3, #1, 10
00364 |$L35536|
00364 e585300c str r3, [r5, #0xC]
; 415 :
; 416 : p_LCDRegs->LCCR4 = LCD_PAL_FOR(0);
00368 e5859010 str r9, [r5, #0x10]
; 417 : if ( (p_LCDRegs->OVL1C1 & LCD_O1EN) || (p_LCDRegs->OVL2C1 & LCD_O2EN))
0036c e5953050 ldr r3, [r5, #0x50]
00370 e3130102 tst r3, #2, 2
00374 1a000002 bne |$L35269|
00378 e5953070 ldr r3, [r5, #0x70]
0037c e3130102 tst r3, #2, 2
00380 0a000002 beq |$L35268|
00384 |$L35269|
; 418 : {
; 419 : p_LCDRegs->LCCR4 = LCD_PAL_FOR(1) | LCD_K1(7) | LCD_K2(7) | LCD_K3(7);
00384 e3a03c81 mov r3, #0x81, 24
00388 e38330ff orr r3, r3, #0xFF
0038c e5853010 str r3, [r5, #0x10]
00390 |$L35268|
; 420 : }
; 421 : }
; 422 : break;
; 423 :
; 424 : default:
; 425 : {
; 426 :
; 427 : }
; 428 : break;
; 429 : }
; 430 :
; 431 : }
00390 e8bd43f0 ldmia sp!, {r4 - r9, lr}
00394 e12fff1e bx lr
00398 |$L35542|
00398 0605053f DCD 0x605053f
0039c 1f1f3cef DCD 0x1f1f3cef
003a0 66666667 DCD 0x66666667
003a4 07b008b8 DCD 0x7b008b8
003a8 00000000 DCD |??_C@_1CE@OBJENNOH@?$AAZ?$AAG?$AAB?$AA?3?$AA?5?$AAT?$AAC?$AAO?$AA2?$AA8?$AAS?$AAT?$AAE?$AAA?$AA1?$AA?$AN?$AA?6?$AA?$AA@|
003ac 0204053f DCD 0x204053f
003b0 0b070cef DCD 0xb070cef
003b4 10624dd3 DCD 0x10624dd3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -