⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 active.cod

📁 wince6.0 arm LCD 驱动源码 DDshow
💻 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 + -