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

📄 xllp_camera.cod

📁 pxa270为硬件平台的wince操作系统XLLP驱动源码
💻 COD
📖 第 1 页 / 共 3 页
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345 

	TTL	F:\wm520\PLATFORM\intel_dbpxa27x\Public\CSP\ARM\INTEL\PXA27X\XLLP\SOURCE\.\xllp_camera.c
	CODE32

  00000			 AREA	 |.drectve|, DRECTVE
	DCB	"-defaultlib:coredll.lib "
	DCB	"-defaultlib:corelibc.lib "


  00000			 AREA	 |.rdata|, DATA, READONLY
|?outpins@?2??XllpCameraInit@@9@9| DCD 0x1		; `XllpCameraInit'::`3'::outpins
	DCD	0x17
|CAMERA_DMA_DEVICE| DCD 0x44
	DCD	0x45
	DCD	0x46
|?inpins@?2??XllpCameraInit@@9@9| DCD 0xb		; `XllpCameraInit'::`3'::inpins
	DCD	0x1b
	DCD	0x72
	DCD	0x74
	DCD	0x73
	DCD	0x5a
	DCD	0x5b
	DCD	0x11
	DCD	0xc
	DCD	0x1a
	DCD	0x19
	DCD	0x18
|?altfunc@?2??XllpCameraInit@@9@9| DCD 0xc		; `XllpCameraInit'::`3'::altfunc
	DCD	0x3
	DCD	0x1
	DCD	0x1
	DCD	0x2
	DCD	0x3
	DCD	0x3
	DCD	0x2
	DCD	0x2
	DCD	0x1
	DCD	0x2
	DCD	0x1
	DCD	0x1
|?altpins@?2??XllpCameraInit@@9@9| DCD 0xc		; `XllpCameraInit'::`3'::altpins
	DCD	0x1b
	DCD	0x72
	DCD	0x74
	DCD	0x73
	DCD	0x5a
	DCD	0x5b
	DCD	0x11
	DCD	0xc
	DCD	0x17
	DCD	0x1a
	DCD	0x19
	DCD	0x18
|?lowpins@?2??XllpCameraInit@@9@9| DCD 0xc		; `XllpCameraInit'::`3'::lowpins
	DCD	0x1b
	DCD	0x72
	DCD	0x74
	DCD	0x73
	DCD	0x5a
	DCD	0x5b
	DCD	0x11
	DCD	0xc
	DCD	0x17
	DCD	0x1a
	DCD	0x18
	DCD	0x19
|FORMAT_MAPPINGS| DCD 0x0
	DCD	0x1
	DCD	0x2
	DCD	0x5
	DCD	0x6
	DCD	0x7
	DCD	0xe
	DCD	0x8
	DCD	0xf
	DCD	0x9
	DCD	0xa
	DCD	0xb
	DCD	0xc
	DCD	0xd
	DCD	0xff
	DCD	0x3
	DCD	0x4
	DCD	0xff
	DCD	0xff
	IMPORT	|OS_DmaCfgChannelDescTransfer|
	IMPORT	|OS_DmaStartTransfer|
; File f:\wm520\platform\intel_dbpxa27x\public\csp\arm\intel\pxa27x\xllp\source\xllp_camera.c

  00000			 AREA	 |.text| { |PrvStartDMATransfer| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$PrvStartDMATransfer|, PDATA, SELECTION=5, ASSOC=|.text| { |PrvStartDMATransfer| } ; comdat associative
|$T2238| DCD	|$L2237|
	DCD	0x40002e02
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |PrvStartDMATransfer| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |PrvStartDMATransfer| PROC

; 78   : {

  00000		 |$L2237|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004	e24dd004	 sub         sp, sp, #4
  00008		 |$M2235|
  00008	e1a04000	 mov         r4, r0

; 79   :     XLLP_DMAC_DESCRIPTOR_T *des_virtual, *des_physical;
; 80   : 
; 81   : /*
; 82   : 	NKDbgPrintfW(TEXT("capture_width %d\r\n"),camera_context->capture_width);
; 83   : 	NKDbgPrintfW(TEXT("capture_height %d\r\n"),camera_context->capture_height);
; 84   : 	NKDbgPrintfW(TEXT("Video_capture_width %d\r\n"),camera_context->Video_capture_width);
; 85   :     NKDbgPrintfW(TEXT("Video_capture_height %d\r\n"),camera_context->Video_capture_height);
; 86   : 	NKDbgPrintfW(TEXT("dma_channels %d %d %d\r\n"),camera_context->dma_channels[0], camera_context->dma_channels[1], camera_context->dma_channels[2]);
; 87   : 	NKDbgPrintfW(TEXT("fifo0_transfer_size %d\r\n"),camera_context->fifo0_transfer_size);
; 88   : 	NKDbgPrintfW(TEXT("fifo1_transfer_size %d\r\n"),camera_context->fifo1_transfer_size);
; 89   : 	NKDbgPrintfW(TEXT("fifo2_transfer_size %d\r\n"),camera_context->fifo2_transfer_size);
; 90   : */
; 91   : 
; 92   :     des_virtual = (P_XLLP_DMAC_DESCRIPTOR_T)NULL;
; 93   :     des_physical = (P_XLLP_DMAC_DESCRIPTOR_T)camera_context->fifo0_descriptors_physical;
; 94   : /*
; 95   : 	NKDbgPrintfW(TEXT("camera_context->fifo0_descriptors_physical 0x%x\r\n"),(DWORD)camera_context->fifo0_descriptors_physical);
; 96   : 	NKDbgPrintfW(TEXT("des_physical 0x%x\r\n"),(DWORD)des_physical);
; 97   : */
; 98   :     OS_DmaCfgChannelDescTransfer( des_virtual,
; 99   :                                des_physical,
; 100  :                                camera_context->dma_channels[0],        
; 101  :                                CAMERA_DMA_DEVICE[0],                    
; 102  :                                XLLP_DMAC_ALIGNMENT_OFF              
; 103  :                               );

  0000c	e5942068	 ldr         r2, [r4, #0x68]
  00010	e594108c	 ldr         r1, [r4, #0x8C]
  00014	e3a05000	 mov         r5, #0
  00018	e3a03044	 mov         r3, #0x44
  0001c	e3a00000	 mov         r0, #0
  00020	e58d5000	 str         r5, [sp]
  00024	eb000000	 bl          OS_DmaCfgChannelDescTransfer

; 104  : 
; 105  :     if ( camera_context->fifo1_transfer_size ) {

  00028	e59430a4	 ldr         r3, [r4, #0xA4]
  0002c	e3530000	 cmp         r3, #0

; 106  : 		des_virtual = (P_XLLP_DMAC_DESCRIPTOR_T)NULL;
; 107  : 		des_physical = (P_XLLP_DMAC_DESCRIPTOR_T)camera_context->fifo1_descriptors_physical;
; 108  :         OS_DmaCfgChannelDescTransfer( des_virtual,
; 109  :                                    des_physical,
; 110  :                                    camera_context->dma_channels[1],        
; 111  :                                    CAMERA_DMA_DEVICE[1],                    
; 112  :                                    XLLP_DMAC_ALIGNMENT_OFF              
; 113  :                                   );

  00030	1594206c	 ldrne       r2, [r4, #0x6C]
  00034	15941094	 ldrne       r1, [r4, #0x94]
  00038	13a03045	 movne       r3, #0x45
  0003c	13a00000	 movne       r0, #0
  00040	158d5000	 strne       r5, [sp]
  00044	1b000000	 blne        OS_DmaCfgChannelDescTransfer

; 114  : 	}
; 115  : 
; 116  :     if ( camera_context->fifo2_transfer_size ) {

  00048	e59430a8	 ldr         r3, [r4, #0xA8]
  0004c	e3530000	 cmp         r3, #0

; 117  :         des_virtual = (P_XLLP_DMAC_DESCRIPTOR_T)NULL;
; 118  :         des_physical = (P_XLLP_DMAC_DESCRIPTOR_T)camera_context->fifo2_descriptors_physical;
; 119  :         OS_DmaCfgChannelDescTransfer( des_virtual,
; 120  :                                    des_physical,
; 121  :                                    camera_context->dma_channels[2],        
; 122  :                                    CAMERA_DMA_DEVICE[2],                    
; 123  :                                    XLLP_DMAC_ALIGNMENT_OFF              
; 124  :                                   );

  00050	15942070	 ldrne       r2, [r4, #0x70]
  00054	1594109c	 ldrne       r1, [r4, #0x9C]
  00058	13a03046	 movne       r3, #0x46
  0005c	13a00000	 movne       r0, #0
  00060	158d5000	 strne       r5, [sp]
  00064	1b000000	 blne        OS_DmaCfgChannelDescTransfer

; 125  :     }
; 126  : 
; 127  :     if ( camera_context->fifo0_transfer_size && camera_context->fifo1_transfer_size && camera_context->fifo2_transfer_size ) 

  00068	e59430a0	 ldr         r3, [r4, #0xA0]
  0006c	e3530000	 cmp         r3, #0
  00070	0a00000b	 beq         |$L2072|
  00074	e59430a4	 ldr         r3, [r4, #0xA4]
  00078	e3530000	 cmp         r3, #0
  0007c	0a000008	 beq         |$L2072|
  00080	e59430a8	 ldr         r3, [r4, #0xA8]
  00084	e3530000	 cmp         r3, #0
  00088	0a000005	 beq         |$L2072|

; 128  : 	{
; 129  : 	    OS_DmaStartTransfer( camera_context->dma_channels[0] );

  0008c	e5940068	 ldr         r0, [r4, #0x68]
  00090	eb000000	 bl          OS_DmaStartTransfer

; 130  : 	    OS_DmaStartTransfer( camera_context->dma_channels[1] );

  00094	e594006c	 ldr         r0, [r4, #0x6C]
  00098	eb000000	 bl          OS_DmaStartTransfer

; 131  : 		OS_DmaStartTransfer( camera_context->dma_channels[2] );

  0009c	e5940070	 ldr         r0, [r4, #0x70]

; 132  : 	} else 

  000a0	ea000000	 b           |$L2234|
  000a4		 |$L2072|

; 133  : 	{
; 134  : 	    OS_DmaStartTransfer( camera_context->dma_channels[0] );

  000a4	e5940068	 ldr         r0, [r4, #0x68]
  000a8		 |$L2234|
  000a8	eb000000	 bl          OS_DmaStartTransfer

; 135  : 	}
; 136  : 
; 137  : }

  000ac	e28dd004	 add         sp, sp, #4
  000b0	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  000b4	e12fff1e	 bx          lr
  000b8		 |$M2236|

			 ENDP  ; |PrvStartDMATransfer|

	IMPORT	|OS_DmaStopTransfer|

  00000			 AREA	 |.text| { |PrvStopDMATransfer| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$PrvStopDMATransfer|, PDATA, SELECTION=5, ASSOC=|.text| { |PrvStopDMATransfer| } ; comdat associative
|$T2246| DCD	|$L2245|
	DCD	0x40000d01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |PrvStopDMATransfer| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |PrvStopDMATransfer| PROC

; 140  : {

  00000		 |$L2245|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004		 |$M2243|
  00004	e1a04000	 mov         r4, r0

; 141  :     // stop channel 0
; 142  :     OS_DmaStopTransfer( camera_context->dma_channels[0] );

  00008	e5940068	 ldr         r0, [r4, #0x68]
  0000c	eb000000	 bl          OS_DmaStopTransfer

; 143  : 
; 144  :     // stop channel 1 and 2  
; 145  :     if ( camera_context->capture_output_format == XLLP_CAMERA_IMAGE_FORMAT_YCBCR422_PLANAR) 

  00010	e5943020	 ldr         r3, [r4, #0x20]
  00014	e3530010	 cmp         r3, #0x10
  00018	1a000003	 bne         |$L2077|

; 146  : 	{
; 147  :         OS_DmaStopTransfer( camera_context->dma_channels[1] );

  0001c	e594006c	 ldr         r0, [r4, #0x6C]
  00020	eb000000	 bl          OS_DmaStopTransfer

; 148  :         OS_DmaStopTransfer( camera_context->dma_channels[2] );

  00024	e5940070	 ldr         r0, [r4, #0x70]
  00028	eb000000	 bl          OS_DmaStopTransfer
  0002c		 |$L2077|

; 149  : 	}
; 150  : }

  0002c	e8bd4010	 ldmia       sp!, {r4, lr}
  00030	e12fff1e	 bx          lr
  00034		 |$M2244|

			 ENDP  ; |PrvStopDMATransfer|

	IMPORT	|XllpCIResetFIFO|
	IMPORT	|XllpCIClearInterruptStatus|

  00000			 AREA	 |.text| { |PrvStartCapture| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$PrvStartCapture|, PDATA, SELECTION=5, ASSOC=|.text| { |PrvStartCapture| } ; comdat associative
|$T2267| DCD	|$L2266|
	DCD	0x40003a02
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |PrvStartCapture| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |PrvStartCapture| PROC

; 153  : {

  00000		 |$L2266|
  00000	e92d4070	 stmdb       sp!, {r4 - r6, lr}
  00004	e24dd004	 sub         sp, sp, #4
  00008		 |$M2264|
  00008	e1a05002	 mov         r5, r2
  0000c	e1a04000	 mov         r4, r0

; 154  :     XLLP_STATUS_T   status;
; 155  :     
; 156  :     // clear ci fifo
; 157  :     XllpCIResetFIFO(camera_context->ci_reg_base);

  00010	e594005c	 ldr         r0, [r4, #0x5C]
  00014	eb000000	 bl          XllpCIResetFIFO

; 158  :     XllpCIClearInterruptStatus(camera_context->ci_reg_base, 0xFFFFFFFF);

  00018	e594005c	 ldr         r0, [r4, #0x5C]
  0001c	e3e01000	 mvn         r1, #0
  00020	eb000000	 bl          XllpCIClearInterruptStatus

; 159  : 
; 160  :     // start dma
; 161  :     PrvStartDMATransfer(camera_context, block_id);

  00024	e5942068	 ldr         r2, [r4, #0x68]
  00028	e594108c	 ldr         r1, [r4, #0x8C]
  0002c	e3a06000	 mov         r6, #0
  00030	e3a03044	 mov         r3, #0x44
  00034	e3a00000	 mov         r0, #0
  00038	e58d6000	 str         r6, [sp]
  0003c	eb000000	 bl          OS_DmaCfgChannelDescTransfer
  00040	e59430a4	 ldr         r3, [r4, #0xA4]
  00044	e3530000	 cmp         r3, #0
  00048	1594206c	 ldrne       r2, [r4, #0x6C]
  0004c	15941094	 ldrne       r1, [r4, #0x94]
  00050	13a03045	 movne       r3, #0x45
  00054	13a00000	 movne       r0, #0
  00058	158d6000	 strne       r6, [sp]
  0005c	1b000000	 blne        OS_DmaCfgChannelDescTransfer
  00060	e59430a8	 ldr         r3, [r4, #0xA8]
  00064	e3530000	 cmp         r3, #0
  00068	15942070	 ldrne       r2, [r4, #0x70]
  0006c	1594109c	 ldrne       r1, [r4, #0x9C]
  00070	13a03046	 movne       r3, #0x46
  00074	13a00000	 movne       r0, #0
  00078	158d6000	 strne       r6, [sp]
  0007c	1b000000	 blne        OS_DmaCfgChannelDescTransfer
  00080	e59430a0	 ldr         r3, [r4, #0xA0]
  00084	e3530000	 cmp         r3, #0
  00088	0a00000b	 beq         |$L2256|
  0008c	e59430a4	 ldr         r3, [r4, #0xA4]
  00090	e3530000	 cmp         r3, #0
  00094	0a000008	 beq         |$L2256|
  00098	e59430a8	 ldr         r3, [r4, #0xA8]
  0009c	e3530000	 cmp         r3, #0
  000a0	0a000005	 beq         |$L2256|
  000a4	e5940068	 ldr         r0, [r4, #0x68]
  000a8	eb000000	 bl          OS_DmaStartTransfer
  000ac	e594006c	 ldr         r0, [r4, #0x6C]
  000b0	eb000000	 bl          OS_DmaStartTransfer
  000b4	e5940070	 ldr         r0, [r4, #0x70]
  000b8	ea000000	 b           |$L2263|
  000bc		 |$L2256|
  000bc	e5940068	 ldr         r0, [r4, #0x68]
  000c0		 |$L2263|
  000c0	eb000000	 bl          OS_DmaStartTransfer

; 162  : 
; 163  :     // start capture
; 164  :     status = camera_context->camera_functions->start_capture(camera_context, frames);    
; 165  :     return status;

  000c4	e5943064	 ldr         r3, [r4, #0x64]
  000c8	e1a01005	 mov         r1, r5
  000cc	e1a00004	 mov         r0, r4
  000d0	e593300c	 ldr         r3, [r3, #0xC]
  000d4	e1a0e00f	 mov         lr, pc
  000d8	e12fff13	 bx          r3

; 166  : }

  000dc	e28dd004	 add         sp, sp, #4
  000e0	e8bd4070	 ldmia       sp!, {r4 - r6, lr}
  000e4	e12fff1e	 bx          lr
  000e8		 |$M2265|

			 ENDP  ; |PrvStartCapture|

	EXPORT	|XllpCameraDeInit|
	IMPORT	|OS_DmaFreeChannel|
	IMPORT	|XllpCIDeInit|

  00000			 AREA	 |.text| { |XllpCameraDeInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XllpCameraDeInit|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCameraDeInit| } ; comdat associative
|$T2280| DCD	|$L2279|
	DCD	0x40001d01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XllpCameraDeInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -