📄 active.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 14.01.60511.01
TTL D:\WINCE600\PLATFORM\M-stone\SRC\DRIVERS\Display\common\active.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:LIBCMT "
DCB "-defaultlib:OLDNAMES "
EXPORT |ActiveInit|
IMPORT |PXA_LCDActiveInitController|
IMPORT |PXA_LCDInitDMADescriptor|
; File d:\wince600\platform\m-stone\src\drivers\display\common\active.c
00000 AREA |.pdata|, PDATA
|$T41427| DCD |$LN5@ActiveInit|
DCD 0x40001c01
; Function compile flags: /Ogspy
00000 AREA |.text|, CODE, ARM
00000 |ActiveInit| PROC
; 44 : {
00000 |$LN5@ActiveInit|
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 |$M41424|
00004 e1a06001 mov r6, r1
00008 e1a07000 mov r7, r0
; 45 : PXA_STATUS_T status;
; 46 : UINT32 buf_size;
; 47 :
; 48 : buf_size = lcd->panel->config.width * lcd->panel->config.height * (lcd->panel->config.bpp >> 3);
0000c e5970028 ldr r0, [r7, #0x28]
; 49 :
; 50 : status = lcd->panel->init(lcd->panel);
00010 e5903014 ldr r3, [r0, #0x14]
00014 e5902010 ldr r2, [r0, #0x10]
00018 e590500c ldr r5, [r0, #0xC]
0001c e1a031a3 mov r3, r3, lsr #3
00020 e0040293 mul r4, r3, r2
00024 e5903004 ldr r3, [r0, #4]
00028 e1a0e00f mov lr, pc
0002c e12fff13 bx r3
; 51 :
; 52 : PXA_LCDInitDMADescriptor(&lcd->dma_descs[0], lcd->dma_descs[0].FDADR, base_phy, buf_size);
00030 e5970024 ldr r0, [r7, #0x24]
00034 e0030594 mul r3, r4, r5
00038 e1a02006 mov r2, r6
0003c e5901000 ldr r1, [r0]
00040 eb000000 bl PXA_LCDInitDMADescriptor
; 53 : PXA_LCDActiveInitController(lcd->lcd_regs, &lcd->panel->config, &lcd->dma_descs[0]);
00044 e5973028 ldr r3, [r7, #0x28]
00048 e5972024 ldr r2, [r7, #0x24]
0004c e597001c ldr r0, [r7, #0x1C]
00050 e283100c add r1, r3, #0xC
00054 eb000000 bl PXA_LCDActiveInitController
; 54 :
; 55 : status = lcd->panel->post_init(lcd->panel);
00058 e5970028 ldr r0, [r7, #0x28]
; 56 : return status;
0005c e5903008 ldr r3, [r0, #8]
00060 e1a0e00f mov lr, pc
00064 e12fff13 bx r3
; 57 : }
00068 e8bd40f0 ldmia sp!, {r4 - r7, lr}
0006c e12fff1e bx lr
00070 |$M41425|
ENDP ; |ActiveInit|
EXPORT |ActiveResume|
00000 AREA |.pdata|, PDATA
|$T41435| DCD |$LN5@ActiveResu|
DCD 0x40000e01
; Function compile flags: /Ogspy
00000 AREA |.text|, CODE, ARM
00000 |ActiveResume| PROC
; 60 : {
00000 |$LN5@ActiveResu|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M41432|
00004 e1a04000 mov r4, r0
; 61 : lcd->panel->set_power_mode(lcd->panel, 1);
00008 e5940028 ldr r0, [r4, #0x28]
0000c e3a01001 mov r1, #1
00010 e5903000 ldr r3, [r0]
00014 e1a0e00f mov lr, pc
00018 e12fff13 bx r3
; 62 : PXA_LCDActiveInitController(lcd->lcd_regs, &lcd->panel->config, &lcd->dma_descs[0]);
0001c e5943028 ldr r3, [r4, #0x28]
00020 e5942024 ldr r2, [r4, #0x24]
00024 e594001c ldr r0, [r4, #0x1C]
00028 e283100c add r1, r3, #0xC
0002c eb000000 bl PXA_LCDActiveInitController
; 63 : }
00030 e8bd4010 ldmia sp!, {r4, lr}
00034 e12fff1e bx lr
00038 |$M41433|
ENDP ; |ActiveResume|
EXPORT |ActiveSuspend|
IMPORT |PXA_LCDSuspendController|
IMPORT |PXA_OST_DelayMilliSeconds|
IMPORT |PXA_LCDTurnOffBaseFrame|
00000 AREA |.pdata|, PDATA
|$T41443| DCD |$LN5@ActiveSusp|
DCD 0x40001301
; Function compile flags: /Ogspy
00000 AREA |.text|, CODE, ARM
00000 |ActiveSuspend| PROC
; 66 : {
00000 |$LN5@ActiveSusp|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M41440|
00004 e1a04000 mov r4, r0
; 67 : PXA_LCDTurnOffBaseFrame(lcd->lcd_regs, 0, 0, 0);
00008 e594001c ldr r0, [r4, #0x1C]
0000c e3a03000 mov r3, #0
00010 e3a02000 mov r2, #0
00014 e3a01000 mov r1, #0
00018 eb000000 bl PXA_LCDTurnOffBaseFrame
; 68 : PXA_OST_DelayMilliSeconds(40);
0001c e3a00028 mov r0, #0x28
00020 eb000000 bl PXA_OST_DelayMilliSeconds
; 69 : PXA_LCDSuspendController(lcd->lcd_regs, 0);
00024 e594001c ldr r0, [r4, #0x1C]
00028 e3a01000 mov r1, #0
0002c eb000000 bl PXA_LCDSuspendController
; 70 : lcd->panel->set_power_mode(lcd->panel, 0);
00030 e5940028 ldr r0, [r4, #0x28]
00034 e3a01000 mov r1, #0
00038 e5903000 ldr r3, [r0]
0003c e1a0e00f mov lr, pc
00040 e12fff13 bx r3
; 71 : }
00044 e8bd4010 ldmia sp!, {r4, lr}
00048 e12fff1e bx lr
0004c |$M41441|
ENDP ; |ActiveSuspend|
EXPORT |ActiveFlip|
IMPORT |PXA_LCDActiveFlip|
00000 AREA |.pdata|, PDATA
|$T41452| DCD |$LN5@ActiveFlip|
DCD 0x40000901
; Function compile flags: /Ogspy
00000 AREA |.text|, CODE, ARM
00000 |ActiveFlip| PROC
; 74 : {
00000 |$LN5@ActiveFlip|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M41449|
; 75 : lcd->dma_descs[0].FSADR = FSADR_SRCADDR(frame_phy_addr);
00004 e5902024 ldr r2, [r0, #0x24]
00008 e3c13007 bic r3, r1, #7
0000c e5823004 str r3, [r2, #4]
; 76 : PXA_LCDActiveFlip(lcd->lcd_regs, &lcd->dma_descs[0]);
00010 e5901024 ldr r1, [r0, #0x24]
00014 e590001c ldr r0, [r0, #0x1C]
00018 eb000000 bl PXA_LCDActiveFlip
; 77 : }
0001c e49de004 ldr lr, [sp], #4
00020 e12fff1e bx lr
00024 |$M41450|
ENDP ; |ActiveFlip|
EXPORT |ActiveOverlay2Enable|
IMPORT |PXA_LCDActiveOverlay2Enable|
00000 AREA |.pdata|, PDATA
|$T41466| DCD |$LN10@ActiveOver|
DCD 0x40001601
; Function compile flags: /Ogspy
00000 AREA |.text|, CODE, ARM
00000 |ActiveOverlay2Enable| PROC
; 80 : {
00000 |$LN10@ActiveOver|
00000 e92d41f0 stmdb sp!, {r4 - r8, lr}
00004 |$M41463|
00004 e1a07002 mov r7, r2
00008 e1a06001 mov r6, r1
0000c e1a04000 mov r4, r0
; 81 : UINT i;
; 82 :
; 83 : for (i = 0; i < 3; i++)
00010 e3a05020 mov r5, #0x20
00014 e3a08003 mov r8, #3
00018 |$LL3@ActiveOver|
; 84 : PXA_LCDInitDMADescriptor(&lcd->dma_descs[2 + i], lcd->dma_descs[2 + i].FDADR, phy_addrs[i], 0);
00018 e594e024 ldr lr, [r4, #0x24]
0001c e4972004 ldr r2, [r7], #4
00020 e3a03000 mov r3, #0
00024 e79e1005 ldr r1, [lr, +r5]
00028 e08e0005 add r0, lr, r5
0002c eb000000 bl PXA_LCDInitDMADescriptor
00030 e2855010 add r5, r5, #0x10
00034 e2588001 subs r8, r8, #1
00038 1afffff6 bne |$LL3@ActiveOver|
; 85 :
; 86 : return PXA_LCDActiveOverlay2Enable(lcd->lcd_regs, overlay, &lcd->dma_descs[2]);
0003c e5943024 ldr r3, [r4, #0x24]
00040 e594001c ldr r0, [r4, #0x1C]
00044 e1a01006 mov r1, r6
00048 e2832020 add r2, r3, #0x20
0004c eb000000 bl PXA_LCDActiveOverlay2Enable
; 87 : }
00050 e8bd41f0 ldmia sp!, {r4 - r8, lr}
00054 e12fff1e bx lr
00058 |$M41464|
ENDP ; |ActiveOverlay2Enable|
EXPORT |ActiveOverlay2DynChange|
IMPORT |PXA_LCDActiveOverlay2DynChange|
00000 AREA |.pdata|, PDATA
|$T41481| DCD |$LN10@ActiveOver@2|
DCD 0x40001801
; Function compile flags: /Ogspy
00000 AREA |.text|, CODE, ARM
00000 |ActiveOverlay2DynChange| PROC
; 90 : {
00000 |$LN10@ActiveOver@2|
00000 e92d43f0 stmdb sp!, {r4 - r9, lr}
00004 |$M41478|
00004 e1a06003 mov r6, r3
00008 e1a07002 mov r7, r2
0000c e1a08001 mov r8, r1
00010 e1a04000 mov r4, r0
; 91 : UINT i;
; 92 :
; 93 : for (i = 0; i < 3; i++)
00014 e3a05020 mov r5, #0x20
00018 e3a09003 mov r9, #3
0001c |$LL3@ActiveOver@2|
; 94 : PXA_LCDInitDMADescriptor(&lcd->dma_descs[2 + i], lcd->dma_descs[2 + i].FDADR, phy_addrs[i], 0);
0001c e594e024 ldr lr, [r4, #0x24]
00020 e4972004 ldr r2, [r7], #4
00024 e3a03000 mov r3, #0
00028 e79e1005 ldr r1, [lr, +r5]
0002c e08e0005 add r0, lr, r5
00030 eb000000 bl PXA_LCDInitDMADescriptor
00034 e2855010 add r5, r5, #0x10
00038 e2599001 subs r9, r9, #1
0003c 1afffff6 bne |$LL3@ActiveOver@2|
; 95 :
; 96 : return PXA_LCDActiveOverlay2DynChange(lcd->lcd_regs, overlay, &lcd->dma_descs[2], change_flag);
00040 e5942024 ldr r2, [r4, #0x24]
00044 e594001c ldr r0, [r4, #0x1C]
00048 e1a03006 mov r3, r6
0004c e2822020 add r2, r2, #0x20
00050 e1a01008 mov r1, r8
00054 eb000000 bl PXA_LCDActiveOverlay2DynChange
; 97 : }
00058 e8bd43f0 ldmia sp!, {r4 - r9, lr}
0005c e12fff1e bx lr
00060 |$M41479|
ENDP ; |ActiveOverlay2DynChange|
EXPORT |ActiveOverlay2Disable|
IMPORT |PXA_LCDActiveOverlay2Disable|
00000 AREA |.pdata|, PDATA
|$T41489| DCD |$LN5@ActiveOver@3|
DCD 0x40000501
; Function compile flags: /Ogspy
00000 AREA |.text|, CODE, ARM
00000 |ActiveOverlay2Disable| PROC
; 100 : {
00000 |$LN5@ActiveOver@3|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M41486|
; 101 : PXA_LCDActiveOverlay2Disable(lcd->lcd_regs);
00004 e590001c ldr r0, [r0, #0x1C]
00008 eb000000 bl PXA_LCDActiveOverlay2Disable
; 102 : }
0000c e49de004 ldr lr, [sp], #4
00010 e12fff1e bx lr
00014 |$M41487|
ENDP ; |ActiveOverlay2Disable|
EXPORT |ActiveCreate|
IMPORT |HalAllocateCommonBuffer|
IMPORT |PXA_CTX_GetRegAddr2|
IMPORT |malloc|
00000 AREA |.pdata|, PDATA
|$T41502| DCD |$LN11@ActiveCrea|
DCD 0x40003902
; Function compile flags: /Ogspy
00000 AREA |.text|, CODE, ARM
00000 |ActiveCreate| PROC
; 105 : {
00000 |$LN11@ActiveCrea|
00000 e92d41f0 stmdb sp!, {r4 - r8, lr}
00004 e24dd014 sub sp, sp, #0x14
00008 |$M41499|
00008 e1a08000 mov r8, r0
; 106 : PHYSICAL_ADDRESS phy_addr;
; 107 : DMA_ADAPTER_OBJECT adapter;
; 108 : UINT32 descs_phy;
; 109 : UINT i;
; 110 :
; 111 : active_lcd_t *lcd = (active_lcd_t*)malloc(sizeof(active_lcd_t));
0000c e3a0002c mov r0, #0x2C
00010 eb000000 bl malloc
00014 e1b07000 movs r7, r0
; 112 :
; 113 : if (!lcd)
; 114 : return 0;
00018 03a07000 moveq r7, #0
0001c 0a000025 beq |$LN5@ActiveCrea|
; 115 :
; 116 : lcd->lcd_regs = (lcd_registers_t*)PXA_CTX_GetRegAddr(PXA_PERIPHERAL_REGIDX_LCD);
00020 e3a01000 mov r1, #0
00024 e3a00021 mov r0, #0x21
00028 eb000000 bl PXA_CTX_GetRegAddr2
0002c e1a03000 mov r3, r0
; 117 :
; 118 : lcd->dma_descs = (lcd_dma_descriptor_t*)HalAllocateCommonBuffer(&adapter, sizeof(lcd_dma_descriptor_t) * LCD_DMA_CH_MAX, &phy_addr, FALSE);
00030 e587301c str r3, [r7, #0x1C]
00034 e3a03000 mov r3, #0
00038 e28d0008 add r0, sp, #8
0003c e28d2000 add r2, sp, #0
00040 e3a01050 mov r1, #0x50
00044 eb000000 bl HalAllocateCommonBuffer
00048 e1a04000 mov r4, r0
0004c e59d5000 ldr r5, [sp]
00050 e5874024 str r4, [r7, #0x24]
00054 e3a06005 mov r6, #5
00058 |$LL3@ActiveCrea|
; 119 : descs_phy = (UINT32)phy_addr.LowPart;
; 120 :
; 121 : for (i = 0; i < LCD_DMA_CH_MAX; i++)
; 122 : PXA_LCDInitDMADescriptor(&lcd->dma_descs[i], descs_phy + i * sizeof(lcd_dma_descriptor_t), 0, 0);
00058 e3a03000 mov r3, #0
0005c e3a02000 mov r2, #0
00060 e1a01005 mov r1, r5
00064 e1a00004 mov r0, r4
00068 eb000000 bl PXA_LCDInitDMADescriptor
0006c e2855010 add r5, r5, #0x10
00070 e2844010 add r4, r4, #0x10
00074 e2566001 subs r6, r6, #1
00078 1afffff6 bne |$LL3@ActiveCrea|
; 123 :
; 124 : (void*)lcd->base.init = (void*)ActiveInit;
0007c e59f305c ldr r3, [pc, #0x5C]
; 125 : (void*)lcd->base.resume = (void*)ActiveResume;
00080 e59f2054 ldr r2, [pc, #0x54]
; 126 : (void*)lcd->base.suspend = (void*)ActiveSuspend;
00084 e59f104c ldr r1, [pc, #0x4C]
; 127 : (void*)lcd->base.flip = (void*)ActiveFlip;
00088 e59fe044 ldr lr, [pc, #0x44]
; 128 : (void*)lcd->base.overlay2_enable = (void*)ActiveOverlay2Enable;
0008c e59f403c ldr r4, [pc, #0x3C]
; 129 : (void*)lcd->base.overlay2_disable = (void*)ActiveOverlay2Disable;
00090 e59f5034 ldr r5, [pc, #0x34]
; 130 : (void*)lcd->base.overlay2_dyn_change = (void*)ActiveOverlay2DynChange;
00094 e59f602c ldr r6, [pc, #0x2C]
00098 e5873000 str r3, [r7]
0009c e5872004 str r2, [r7, #4]
000a0 e5871008 str r1, [r7, #8]
000a4 e587e00c str lr, [r7, #0xC]
000a8 e5874010 str r4, [r7, #0x10]
000ac e5875018 str r5, [r7, #0x18]
000b0 e5876014 str r6, [r7, #0x14]
; 131 : lcd->panel = panel;
000b4 e5878028 str r8, [r7, #0x28]
; 132 : return (lcd_t*)lcd;
000b8 |$LN5@ActiveCrea|
; 133 : }
000b8 e1a00007 mov r0, r7
000bc e28dd014 add sp, sp, #0x14
000c0 e8bd41f0 ldmia sp!, {r4 - r8, lr}
000c4 e12fff1e bx lr
000c8 |$LN12@ActiveCrea|
000c8 |$LN13@ActiveCrea|
000c8 00000000 DCD |ActiveOverlay2DynChange|
000cc |$LN14@ActiveCrea|
000cc 00000000 DCD |ActiveOverlay2Disable|
000d0 |$LN15@ActiveCrea|
000d0 00000000 DCD |ActiveOverlay2Enable|
000d4 |$LN16@ActiveCrea|
000d4 00000000 DCD |ActiveFlip|
000d8 |$LN17@ActiveCrea|
000d8 00000000 DCD |ActiveSuspend|
000dc |$LN18@ActiveCrea|
000dc 00000000 DCD |ActiveResume|
000e0 |$LN19@ActiveCrea|
000e0 00000000 DCD |ActiveInit|
000e4 |$M41500|
ENDP ; |ActiveCreate|
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -