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

📄 xllp_ci.cod

📁 pxa270为硬件平台的wince操作系统XLLP驱动源码
💻 COD
📖 第 1 页 / 共 4 页
字号:

  00000		 |$L35826|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004		 |$M35824|
  00004	e1a04001	 mov         r4, r1
  00008	e1a02000	 mov         r2, r0

; 374  :     P_XLLP_CLKMGR_T pclk;
; 375  : 
; 376  :     // clear all CI registers
; 377  :     WRITE_REG(XLLP_CICR0, 0x3FF);   // disable all interrupts

  0000c	e3a03fff	 mov         r3, #0xFF, 30
  00010	e3833003	 orr         r3, r3, #3

; 378  :     WRITE_REG(XLLP_CICR1, 0);
; 379  :     WRITE_REG(XLLP_CICR2, 0);
; 380  :     WRITE_REG(XLLP_CICR3, 0);
; 381  :     WRITE_REG(XLLP_CICR4, 0);
; 382  :     WRITE_REG(XLLP_CISR, ~0);

  00014	e3e01000	 mvn         r1, #0
  00018	e3a0e000	 mov         lr, #0

; 383  :     WRITE_REG(XLLP_CIFR,  0);
; 384  :     WRITE_REG(XLLP_CITOR, 0);
; 385  : 
; 386  :     // enable CI clock
; 387  :     XllpLock(CKEN);

  0001c	e3a00026	 mov         r0, #0x26
  00020	e8824008	 stmia       r2, {r3, lr}
  00024	e582e008	 str         lr, [r2, #8]
  00028	e582e00c	 str         lr, [r2, #0xC]
  0002c	e582e010	 str         lr, [r2, #0x10]
  00030	e282c014	 add         r12, r2, #0x14
  00034	e88c4002	 stmia       r12, {r1, lr}
  00038	e582e01c	 str         lr, [r2, #0x1C]
  0003c	eb000000	 bl          XllpLock

; 388  :     pclk = (P_XLLP_CLKMGR_T)clk_regs_base;
; 389  :     pclk->cken |= XLLP_CLKEN_CAMERA;

  00040	e5943004	 ldr         r3, [r4, #4]

; 390  :     XllpUnlock(CKEN);

  00044	e3a00026	 mov         r0, #0x26
  00048	e3833401	 orr         r3, r3, #1, 8
  0004c	e5843004	 str         r3, [r4, #4]
  00050	eb000000	 bl          XllpUnlock

; 391  : }

  00054	e8bd4010	 ldmia       sp!, {r4, lr}
  00058	e12fff1e	 bx          lr
  0005c		 |$M35825|

			 ENDP  ; |XllpCIInit|

	EXPORT	|XllpCIDeInit|

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

  00000			 AREA	 |.pdata$$XllpCIDeInit|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCIDeInit| } ; comdat associative
|$T35835| DCD	|$L35834|
	DCD	0x40000b01
; Function compile flags: /Ogsy

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

  00000		 |XllpCIDeInit| PROC

; 394  : {

  00000		 |$L35834|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004		 |$M35832|
  00004	e1a04001	 mov         r4, r1

; 395  :     P_XLLP_CLKMGR_T pclk;
; 396  : 
; 397  :     // disable CI clock
; 398  :     XllpLock(CKEN);

  00008	e3a00026	 mov         r0, #0x26
  0000c	eb000000	 bl          XllpLock

; 399  :     pclk = (P_XLLP_CLKMGR_T)clk_regs_base;
; 400  :     pclk->cken &= ~XLLP_CLKEN_CAMERA;

  00010	e5943004	 ldr         r3, [r4, #4]

; 401  :     XllpUnlock(CKEN);

  00014	e3a00026	 mov         r0, #0x26
  00018	e3c33401	 bic         r3, r3, #1, 8
  0001c	e5843004	 str         r3, [r4, #4]
  00020	eb000000	 bl          XllpUnlock

; 402  : }

  00024	e8bd4010	 ldmia       sp!, {r4, lr}
  00028	e12fff1e	 bx          lr
  0002c		 |$M35833|

			 ENDP  ; |XllpCIDeInit|

	EXPORT	|XllpCIEnable|

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

  00000			 AREA	 |.pdata$$XllpCIEnable|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCIEnable| } ; comdat associative
|$T35845| DCD	|$L35844|
	DCD	0x40000600
; Function compile flags: /Ogsy

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

  00000		 |XllpCIEnable| PROC

; 405  : {

  00000		 |$L35844|
  00000		 |$M35842|
  00000	e3510000	 cmp         r1, #0

; 406  :     unsigned int value;
; 407  : 
; 408  :     // write mask in cicr0  
; 409  :     value = READ_REG(XLLP_CICR0);
; 410  :     value |= XLLP_CI_CICR0_ENB;

  00004	e5903000	 ldr         r3, [r0]
  00008	e3833201	 orr         r3, r3, #1, 4

; 411  :     if (dma_en) {
; 412  :         value |= XLLP_CI_CICR0_DMA_EN;

  0000c	13833102	 orrne       r3, r3, #2, 2

; 413  :     }
; 414  :     WRITE_REG(XLLP_CICR0, value);   

  00010	e5803000	 str         r3, [r0]

; 415  :     return; 
; 416  : }

  00014	e12fff1e	 bx          lr
  00018		 |$M35843|

			 ENDP  ; |XllpCIEnable|

	EXPORT	|XllpCIDisableComplete|

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

  00000			 AREA	 |.pdata$$XllpCIDisableComplete|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCIDisableComplete| } ; comdat associative
|$T35853| DCD	|$L35852|
	DCD	0x40000400
; Function compile flags: /Ogsy

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

  00000		 |XllpCIDisableComplete| PROC

; 419  : {

  00000		 |$L35852|
  00000		 |$M35850|

; 420  : 	unsigned int value;
; 421  : 	
; 422  : 	// Clear the disable control bit.
; 423  : 	value = READ_REG(XLLP_CICR0);
; 424  : 	value &= ~XLLP_CI_CICR0_DIS;

  00000	e5903000	 ldr         r3, [r0]
  00004	e3c33302	 bic         r3, r3, #2, 6

; 425  : 	WRITE_REG( XLLP_CICR0, value );

  00008	e5803000	 str         r3, [r0]

; 426  : }

  0000c	e12fff1e	 bx          lr
  00010		 |$M35851|

			 ENDP  ; |XllpCIDisableComplete|

	EXPORT	|??_C@_1EA@FJKJMIIM@?$AAZ?$AAQ?$AAS?$AA?3?$AA?$FL?$AAX?$AAL?$AAL?$AAP?$AA_?$AAC?$AAI?$AAC?$AAR?$AA0?$AA?$DN?$AA?5?$AA0?$AAx?$AA?$CF@| [ DATA ] ; `string'
	EXPORT	|??_C@_1DO@GKAEEGBI@?$AAZ?$AAQ?$AAS?$AA?3?$AA?$FL?$AAX?$AAL?$AAL?$AAP?$AA_?$AAC?$AAI?$AAS?$AAR?$AA?$DN?$AA?5?$AA0?$AAx?$AA?$CF?$AAx@| [ DATA ] ; `string'
	EXPORT	|XllpCIDisable|
	IMPORT	|NKDbgPrintfW|
	IMPORT	|XllpOstDelayMilliSeconds|

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

  00000			 AREA	 |.pdata$$XllpCIDisable|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCIDisable| } ; comdat associative
|$T35871| DCD	|$L35870|
	DCD	0x40003902

  00000			 AREA	 |.rdata| { |??_C@_1DO@GKAEEGBI@?$AAZ?$AAQ?$AAS?$AA?3?$AA?$FL?$AAX?$AAL?$AAL?$AAP?$AA_?$AAC?$AAI?$AAS?$AAR?$AA?$DN?$AA?5?$AA0?$AAx?$AA?$CF?$AAx@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DO@GKAEEGBI@?$AAZ?$AAQ?$AAS?$AA?3?$AA?$FL?$AAX?$AAL?$AAL?$AAP?$AA_?$AAC?$AAI?$AAS?$AAR?$AA?$DN?$AA?5?$AA0?$AAx?$AA?$CF?$AAx@| DCB "Z"
	DCB	0x0, "Q", 0x0, "S", 0x0, ":", 0x0, "[", 0x0, "X", 0x0, "L"
	DCB	0x0, "L", 0x0, "P", 0x0, "_", 0x0, "C", 0x0, "I", 0x0, "S"
	DCB	0x0, "R", 0x0, "=", 0x0, " ", 0x0, "0", 0x0, "x", 0x0, "%"
	DCB	0x0, "x", 0x0, "]", 0x0, " ", 0x0, "!", 0x0, "!", 0x0, "!"
	DCB	0x0, "!", 0x0, "!", 0x0, "!", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
	DCB	0x0					; `string'

  00000			 AREA	 |.rdata| { |??_C@_1EA@FJKJMIIM@?$AAZ?$AAQ?$AAS?$AA?3?$AA?$FL?$AAX?$AAL?$AAL?$AAP?$AA_?$AAC?$AAI?$AAC?$AAR?$AA0?$AA?$DN?$AA?5?$AA0?$AAx?$AA?$CF@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EA@FJKJMIIM@?$AAZ?$AAQ?$AAS?$AA?3?$AA?$FL?$AAX?$AAL?$AAL?$AAP?$AA_?$AAC?$AAI?$AAC?$AAR?$AA0?$AA?$DN?$AA?5?$AA0?$AAx?$AA?$CF@| DCB "Z"
	DCB	0x0, "Q", 0x0, "S", 0x0, ":", 0x0, "[", 0x0, "X", 0x0, "L"
	DCB	0x0, "L", 0x0, "P", 0x0, "_", 0x0, "C", 0x0, "I", 0x0, "C"
	DCB	0x0, "R", 0x0, "0", 0x0, "=", 0x0, " ", 0x0, "0", 0x0, "x"
	DCB	0x0, "%", 0x0, "x", 0x0, "]", 0x0, " ", 0x0, "!", 0x0, "!"
	DCB	0x0, "!", 0x0, "!", 0x0, "!", 0x0, "!", 0x0, 0xd, 0x0, 0xa
	DCB	0x0, 0x0, 0x0				; `string'
; Function compile flags: /Ogsy

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

  00000		 |XllpCIDisable| PROC

; 429  : {

  00000		 |$L35870|
  00000	e92d40f0	 stmdb       sp!, {r4 - r7, lr}
  00004	e24dd008	 sub         sp, sp, #8
  00008		 |$M35868|
  00008	e1a06003	 mov         r6, r3
  0000c	e1a07001	 mov         r7, r1
  00010	e1a05000	 mov         r5, r0

; 430  :     volatile unsigned int value, mask;
; 431  :     int retry;
; 432  :     
; 433  :     // write control bit in cicr0   
; 434  :     value = READ_REG(XLLP_CICR0);

  00014	e595e000	 ldr         lr, [r5]

; 435  : 	if(dma_dis)

  00018	e59d401c	 ldr         r4, [sp, #0x1C]

; 436  : 		value&=~XLLP_CI_CICR0_DMA_EN;
; 437  :     if (quick) {
; 438  :         value &= ~XLLP_CI_CICR0_ENB;
; 439  :         mask = XLLP_CI_CISR_CQD;
; 440  :     }
; 441  :     else {
; 442  :         value |= XLLP_CI_CICR0_DIS;
; 443  :         mask = XLLP_CI_CISR_CDD;
; 444  :     }
; 445  :     WRITE_REG(XLLP_CICR0, value);   
; 446  :     value = READ_REG(XLLP_CICR0);
; 447  : 	
; 448  : 	RETAILMSG(1,(TEXT("ZQS:[XLLP_CICR0= 0x%x] !!!!!!\r\n"), value));

  0001c	e59f00bc	 ldr         r0, [pc, #0xBC]
  00020	e58de000	 str         lr, [sp]
  00024	e3540000	 cmp         r4, #0
  00028	159de000	 ldrne       lr, [sp]
  0002c	13cee102	 bicne       lr, lr, #2, 2
  00030	158de000	 strne       lr, [sp]
  00034	e3520000	 cmp         r2, #0
  00038	159d2000	 ldrne       r2, [sp]
  0003c	13a03040	 movne       r3, #0x40
  00040	13c22201	 bicne       r2, r2, #1, 4
  00044	158d2000	 strne       r2, [sp]
  00048	158d3004	 strne       r3, [sp, #4]
  0004c	059d3000	 ldreq       r3, [sp]
  00050	03a02020	 moveq       r2, #0x20
  00054	03833302	 orreq       r3, r3, #2, 6
  00058	058d3000	 streq       r3, [sp]
  0005c	058d2004	 streq       r2, [sp, #4]
  00060	e59d3000	 ldr         r3, [sp]
  00064	e58d3000	 str         r3, [sp]
  00068	e5853000	 str         r3, [r5]
  0006c	e59d1000	 ldr         r1, [sp]
  00070	eb000000	 bl          NKDbgPrintfW

; 449  : 
; 450  : 	if( wait_for_disable_complete )

  00074	e3560000	 cmp         r6, #0
  00078	0a000013	 beq         |$L35465|

; 451  : 	{
; 452  : 	    // wait shutdown complete
; 453  : 	    retry = 100;

  0007c	e3a04064	 mov         r4, #0x64
  00080		 |$L35467|

; 454  : 	    while ( retry-- > 0 ) {
; 455  : 	        value = READ_REG(XLLP_CISR);   

  00080	e5953014	 ldr         r3, [r5, #0x14]

; 456  : 		RETAILMSG(1,(TEXT("ZQS:[XLLP_CISR= 0x%x] !!!!!!\r\n"), value));

  00084	e59f0050	 ldr         r0, [pc, #0x50]
  00088	e2444001	 sub         r4, r4, #1
  0008c	e58d3000	 str         r3, [sp]
  00090	e59d1000	 ldr         r1, [sp]
  00094	eb000000	 bl          NKDbgPrintfW

; 457  : 	        if ( value & mask ) {

  00098	e59d2004	 ldr         r2, [sp, #4]
  0009c	e59d3000	 ldr         r3, [sp]
  000a0	e1120003	 tst         r2, r3
  000a4	1a000006	 bne         |$L35858|

; 460  : 	        }
; 461  : 	        XllpOstDelayMilliSeconds((P_XLLP_OST_T)ost_reg_base, 10);

  000a8	e3a0100a	 mov         r1, #0xA
  000ac	e1a00007	 mov         r0, r7
  000b0	eb000000	 bl          XllpOstDelayMilliSeconds
  000b4	e3540000	 cmp         r4, #0
  000b8	cafffff0	 bgt         |$L35467|

; 466  : 	
; 467  :     return -1; 

  000bc	e3e00000	 mvn         r0, #0
  000c0	ea000002	 b           |$L35451|
  000c4		 |$L35858|

; 458  : 	            WRITE_REG(XLLP_CISR, mask);

  000c4	e59d3004	 ldr         r3, [sp, #4]

; 459  : 	            return 0;

  000c8	e5853014	 str         r3, [r5, #0x14]
  000cc		 |$L35465|

; 462  : 	    }
; 463  : 	}
; 464  : 	else
; 465  : 		return 0;

  000cc	e3a00000	 mov         r0, #0
  000d0		 |$L35451|

; 468  : }

  000d0	e28dd008	 add         sp, sp, #8
  000d4	e8bd40f0	 ldmia       sp!, {r4 - r7, lr}
  000d8	e12fff1e	 bx          lr
  000dc		 |$L35873|
  000dc	00000000	 DCD         |??_C@_1DO@GKAEEGBI@?$AAZ?$AAQ?$AAS?$AA?3?$AA?$FL?$AAX?$AAL?$AAL?$AAP?$AA_?$AAC?$AAI?$AAS?$AAR?$AA?$DN?$AA?5?$AA0?$AAx?$AA?$CF?$AAx@|
  000e0	00000000	 DCD         |??_C@_1EA@FJKJMIIM@?$AAZ?$AAQ?$AAS?$AA?3?$AA?$FL?$AAX?$AAL?$AAL?$AAP?$AA_?$AAC?$AAI?$AAC?$AAR?$AA0?$AA?$DN?$AA?5?$AA0?$AAx?$AA?$CF@|
  000e4		 |$M35869|

			 ENDP  ; |XllpCIDisable|

	EXPORT	|XllpCISlaveCaptureEnable|

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

  00000			 AREA	 |.pdata$$XllpCISlaveCaptureEnable|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCISlaveCaptureEnable| } ; comdat associative
|$T35880| DCD	|$L35879|
	DCD	0x40000400
; Function compile flags: /Ogsy

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

  00000		 |XllpCISlaveCaptureEnable| PROC

; 471  : {

  00000		 |$L35879|
  00000		 |$M35877|

; 472  :     unsigned int value;
; 473  : 
; 474  :     // write mask in cicr0  
; 475  :     value = READ_REG(XLLP_CICR0);
; 476  :     value |= XLLP_CI_CICR0_SL_CAP_EN;

  00000	e5903000	 ldr         r3, [r0]
  00004	e3833202	 orr         r3, r3, #2, 4

; 477  :     WRITE_REG(XLLP_CICR0, value);   

  00008	e5803000	 str         r3, [r0]

; 478  :     return; 
; 479  : }

  0000c	e12fff1e	 bx          lr
  00010		 |$M35878|

			 ENDP  ; |XllpCISlaveCaptureEnable|

	EXPORT	|XllpCISlaveCaptureDisable|

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

  00000			 AREA	 |.pdata$$XllpCISlaveCaptureDisable|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCISlaveCaptureDisable| } ; comdat associative
|$T35888| DCD	|$L35887|
	DCD	0x40000400
; Function compile flags: /Ogsy

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

  00000		 |XllpCISlaveCaptureDisable| PROC

; 482  : {

  00000		 |$L35887|
  00000		 |$M35885|

; 483  :     unsigned int value;
; 484  : 
; 485  :     // write mask in cicr0  
; 486  :     value = READ_REG(XLLP_CICR0);
; 487  :     value &= ~XLLP_CI_CICR0_SL_CAP_EN;

  00000	e5903000	 ldr         r3, [r0]
  00004	e3c33202	 bic         r3, r3, #2, 4

; 488  :     WRITE_REG(XLLP_CICR0, value);   

  00008	e5803000	 str         r3, [r0]

; 489  :     return; 
; 490  : }

  0000c	e12fff1e	 bx          lr
  00010		 |$M35886|

			 ENDP  ; |XllpCISlaveCaptureDisable|

	END

⌨️ 快捷键说明

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