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

📄 xllp_pcf506.cod

📁 pxa270为硬件平台的wince操作系统XLLP驱动源码
💻 COD
📖 第 1 页 / 共 5 页
字号:
  00000		 |$L35724|
  00000	e92d41f0	 stmdb       sp!, {r4 - r8, lr}
  00004	e24dd014	 sub         sp, sp, #0x14
  00008		 |$M35722|
  00008	e1a04002	 mov         r4, r2
  0000c	e1a06000	 mov         r6, r0
  00010	e59f31bc	 ldr         r3, [pc, #0x1BC]
  00014	e5933000	 ldr         r3, [r3]
  00018	e58d3010	 str         r3, [sp, #0x10]

; 469  : 	unsigned char data[5];
; 470  : 	unsigned char val=0,i=0;
; 471  : 	int m=0,temp;
; 472  : 	unsigned char gateval=0x0;
; 473  : 	unsigned int writereg1=1;
; 474  : 	BOOL rev=0;
; 475  : 
; 476  : 	//whether the volt is valide
; 477  : 	if(volt<900)

  0001c	e3540fe1	 cmp         r4, #0xE1, 30

; 478  : 		volt=900;
; 479  : 	if(volt>3600)
; 480  : 		volt=3600;
; 481  : 
; 482  : 	//read the define reg number
; 483  : 	data[0]=0x1b;                            
; 484  : 	XllpPI2CWrite(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data, 1, 0);  //write reg address

  00020	e5961004	 ldr         r1, [r6, #4]
  00024	e5960010	 ldr         r0, [r6, #0x10]
  00028	b3a04fe1	 movlt       r4, #0xE1, 30
  0002c	e3540ee1	 cmp         r4, #0xE1, 28
  00030	e3a0e01b	 mov         lr, #0x1B
  00034	e3a07000	 mov         r7, #0
  00038	e3a08001	 mov         r8, #1
  0003c	e28d3008	 add         r3, sp, #8
  00040	e3a02008	 mov         r2, #8
  00044	c3a04ee1	 movgt       r4, #0xE1, 28
  00048	e3a05001	 mov         r5, #1
  0004c	e5cde008	 strb        lr, [sp, #8]
  00050	e58d7004	 str         r7, [sp, #4]
  00054	e58d8000	 str         r8, [sp]
  00058	eb000000	 bl          XllpPI2CWrite

; 485  : 	XllpPI2CRead(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, &data[1], 4, 1);   //read data from the reg address

  0005c	e5961004	 ldr         r1, [r6, #4]
  00060	e5960010	 ldr         r0, [r6, #0x10]
  00064	e3a0e004	 mov         lr, #4
  00068	e28d3009	 add         r3, sp, #9
  0006c	e3a02008	 mov         r2, #8
  00070	e58de000	 str         lr, [sp]
  00074	e58d8004	 str         r8, [sp, #4]
  00078	eb000000	 bl          XllpPI2CRead

; 486  : 	if(data[4] & 0x80)

  0007c	e5dd300c	 ldrb        r3, [sp, #0xC]

; 487  : 		writereg1=0;
; 488  : 
; 489  : 	//codec the reg value
; 490  : 	/*
; 491  : 	if(gate)
; 492  : 		gateval=0xC0;												//when POWEN low, close this regulator
; 493  : 	else
; 494  : 		gateval=0x0;
; 495  : 		*/
; 496  : 	val=(volt-900)/25;

  00080	e2441fe1	 sub         r1, r4, #0xE1, 30
  00084	e3130080	 tst         r3, #0x80
  00088	e59f3140	 ldr         r3, [pc, #0x140]
  0008c	13a05000	 movne       r5, #0

; 497  : 	//val+=gateval;
; 498  : 	if(writereg1)

  00090	e3550000	 cmp         r5, #0
  00094	e0c32391	 smull       r2, r3, r1, r3
  00098	e1a031c3	 mov         r3, r3, asr #3
  0009c	e0833fa3	 add         r3, r3, r3, lsr #31
  000a0	e20300ff	 and         r0, r3, #0xFF
  000a4	0a000022	 beq         |$L35307|
  000a8	e5dd4009	 ldrb        r4, [sp, #9]

; 499  : 	{
; 500  : 		DEBUGMSG(1,(_T("use DCDC1\r\n")));
; 501  : 		temp = data[1];
; 502  : 		temp &= ~0x1f;
; 503  : 		val |= temp;
; 504  : 		data[0]=0x1b; 

  000ac	e3a0301b	 mov         r3, #0x1B
  000b0	e5cd3008	 strb        r3, [sp, #8]
  000b4	e20430e0	 and         r3, r4, #0xE0
  000b8	e1837000	 orr         r7, r3, r0

; 505  : 		if(val>data[1])		//go up

  000bc	e1540007	 cmp         r4, r7
  000c0	2a00000d	 bcs         |$L35720|

; 506  : 		{
; 507  : 			for(m=data[1];m<=val;++m)

  000c4	ca00003c	 bgt         |$L35329|
  000c8	e3a05002	 mov         r5, #2
  000cc		 |$L35310|

; 508  : 			{
; 509  : 			data[1] = m;
; 510  : 			rev = XllpPI2CWrite(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data, 2, 1);

  000cc	e5961004	 ldr         r1, [r6, #4]
  000d0	e5960010	 ldr         r0, [r6, #0x10]
  000d4	e28d3008	 add         r3, sp, #8
  000d8	e3a02008	 mov         r2, #8
  000dc	e5cd4009	 strb        r4, [sp, #9]
  000e0	e58d8004	 str         r8, [sp, #4]
  000e4	e58d5000	 str         r5, [sp]
  000e8	eb000000	 bl          XllpPI2CWrite
  000ec	e2844001	 add         r4, r4, #1
  000f0	e1540007	 cmp         r4, r7
  000f4	dafffff4	 ble         |$L35310|

; 511  : 			DEBUGMSG(1,(_T("DCDC1=%d\r\n"),m));
; 512  : 			}
; 513  : 		}
; 514  : 		else				//go down

  000f8	ea00002f	 b           |$L35329|
  000fc		 |$L35720|

; 515  : 		{
; 516  : 			for(m=data[1];m>=val;--m)

  000fc	ba00002e	 blt         |$L35329|
  00100	e3a05002	 mov         r5, #2
  00104		 |$L35315|

; 517  : 			{
; 518  : 			data[1] = m;
; 519  : 			rev = XllpPI2CWrite(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data, 2, 1);

  00104	e5961004	 ldr         r1, [r6, #4]
  00108	e5960010	 ldr         r0, [r6, #0x10]
  0010c	e28d3008	 add         r3, sp, #8
  00110	e3a02008	 mov         r2, #8
  00114	e5cd4009	 strb        r4, [sp, #9]
  00118	e58d8004	 str         r8, [sp, #4]
  0011c	e58d5000	 str         r5, [sp]
  00120	eb000000	 bl          XllpPI2CWrite
  00124	e2444001	 sub         r4, r4, #1
  00128	e1540007	 cmp         r4, r7
  0012c	aafffff4	 bge         |$L35315|

; 520  : 			DEBUGMSG(1,(_T("DCDC1=%d\r\n"),m));
; 521  : 			}
; 522  : 		}
; 523  : 	}
; 524  : 	else

  00130	ea000021	 b           |$L35329|
  00134		 |$L35307|
  00134	e5dd400a	 ldrb        r4, [sp, #0xA]

; 525  : 	{
; 526  : 		DEBUGMSG(1,(_T("use DCDC2\r\n")));
; 527  : 		temp = data[2];
; 528  : 		temp &= ~0x1f;
; 529  : 		val |= temp;
; 530  : 		data[0]=0x1c; 

  00138	e3a0301c	 mov         r3, #0x1C
  0013c	e5cd3008	 strb        r3, [sp, #8]
  00140	e20430e0	 and         r3, r4, #0xE0
  00144	e1837000	 orr         r7, r3, r0

; 531  : 		if(val>data[2])		//go up

  00148	e1540007	 cmp         r4, r7
  0014c	2a00000d	 bcs         |$L35721|

; 532  : 		{
; 533  : 			for(m=data[2];m<=val;++m)

  00150	ca000019	 bgt         |$L35329|
  00154	e3a05002	 mov         r5, #2
  00158		 |$L35322|

; 534  : 			{
; 535  : 			data[1] = m;
; 536  : 			rev = XllpPI2CWrite(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data, 2, 1);

  00158	e5961004	 ldr         r1, [r6, #4]
  0015c	e5960010	 ldr         r0, [r6, #0x10]
  00160	e28d3008	 add         r3, sp, #8
  00164	e3a02008	 mov         r2, #8
  00168	e5cd4009	 strb        r4, [sp, #9]
  0016c	e58d8004	 str         r8, [sp, #4]
  00170	e58d5000	 str         r5, [sp]
  00174	eb000000	 bl          XllpPI2CWrite
  00178	e2844001	 add         r4, r4, #1
  0017c	e1540007	 cmp         r4, r7
  00180	dafffff4	 ble         |$L35322|

; 537  : 			DEBUGMSG(1,(_T("DCDC2=%d\r\n"),m));
; 538  : 			}
; 539  : 		}
; 540  : 		else				//go down

  00184	ea00000c	 b           |$L35329|
  00188		 |$L35721|

; 541  : 		{
; 542  : 			for(m=data[2];m>=val;--m)

  00188	ba00000b	 blt         |$L35329|
  0018c	e3a05002	 mov         r5, #2
  00190		 |$L35327|

; 543  : 			{
; 544  : 			data[1] = m;
; 545  : 			rev = XllpPI2CWrite(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data, 2, 1);

  00190	e5961004	 ldr         r1, [r6, #4]
  00194	e5960010	 ldr         r0, [r6, #0x10]
  00198	e28d3008	 add         r3, sp, #8
  0019c	e3a02008	 mov         r2, #8
  001a0	e5cd4009	 strb        r4, [sp, #9]
  001a4	e58d8004	 str         r8, [sp, #4]
  001a8	e58d5000	 str         r5, [sp]
  001ac	eb000000	 bl          XllpPI2CWrite
  001b0	e2444001	 sub         r4, r4, #1
  001b4	e1540007	 cmp         r4, r7
  001b8	aafffff4	 bge         |$L35327|
  001bc		 |$L35329|

; 468  : {

  001bc	e59d0010	 ldr         r0, [sp, #0x10]
  001c0	eb000000	 bl          __security_check_cookie

; 546  : 			DEBUGMSG(1,(_T("DCDC2=%d\r\n"),m));
; 547  : 			}
; 548  : 		}
; 549  : 	}
; 550  : 	return;
; 551  : }

  001c4	e28dd014	 add         sp, sp, #0x14
  001c8	e8bd41f0	 ldmia       sp!, {r4 - r8, lr}
  001cc	e12fff1e	 bx          lr
  001d0		 |$L35727|
  001d0	51eb851f	 DCD         0x51eb851f
  001d4	00000000	 DCD         |__security_cookie|
  001d8		 |$M35723|

			 ENDP  ; |Pcf50606DCD|

	EXPORT	|Pcf50606DCDMod|

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

  00000			 AREA	 |.pdata$$Pcf50606DCDMod|, PDATA, SELECTION=5, ASSOC=|.text| { |Pcf50606DCDMod| } ; comdat associative
|$T35739| DCD	|$L35738|
	DCD	0x40003902
; Function compile flags: /Ogsy

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

  00000		 |Pcf50606DCDMod| PROC

; 559  : {

  00000		 |$L35738|
  00000	e92d41f0	 stmdb       sp!, {r4 - r8, lr}
  00004	e24dd00c	 sub         sp, sp, #0xC
  00008		 |$M35736|
  00008	e1a06001	 mov         r6, r1
  0000c	e1a04000	 mov         r4, r0

; 560  : 	unsigned char data[4];
; 561  : 	unsigned char val=0;	
; 562  : 	unsigned int writereg1=1;
; 563  : 	
; 564  : 	//read the define reg number
; 565  : 	data[0]=0x1b;                            
; 566  : 	XllpPI2CWrite(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data, 1, 0);  //write reg address

  00010	e5941004	 ldr         r1, [r4, #4]
  00014	e5940010	 ldr         r0, [r4, #0x10]
  00018	e3a0e01b	 mov         lr, #0x1B
  0001c	e3a07000	 mov         r7, #0
  00020	e3a08001	 mov         r8, #1
  00024	e28d3008	 add         r3, sp, #8
  00028	e3a02008	 mov         r2, #8
  0002c	e3a05001	 mov         r5, #1
  00030	e5cde008	 strb        lr, [sp, #8]
  00034	e58d7004	 str         r7, [sp, #4]
  00038	e58d8000	 str         r8, [sp]
  0003c	eb000000	 bl          XllpPI2CWrite

; 567  : 	XllpPI2CRead(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data, 4, 1);   //read data from the reg address

  00040	e5941004	 ldr         r1, [r4, #4]
  00044	e5940010	 ldr         r0, [r4, #0x10]
  00048	e3a0e004	 mov         lr, #4
  0004c	e28d3008	 add         r3, sp, #8
  00050	e3a02008	 mov         r2, #8
  00054	e58de000	 str         lr, [sp]
  00058	e58d8004	 str         r8, [sp, #4]
  0005c	eb000000	 bl          XllpPI2CRead

; 568  : 	if(data[3] & 0x80)

  00060	e5dd300b	 ldrb        r3, [sp, #0xB]
  00064	e3130080	 tst         r3, #0x80
  00068	0a000013	 beq         |$L35730|

; 575  : 		val=(data[1]&0x1f)+(mode&0xe0);

  0006c	e5dd3009	 ldrb        r3, [sp, #9]
  00070	e3a05000	 mov         r5, #0
  00074		 |$L35735|
  00074	e203301f	 and         r3, r3, #0x1F
  00078	e3c6201f	 bic         r2, r6, #0x1F
  0007c	e1823003	 orr         r3, r2, r3
  00080	e20330ff	 and         r3, r3, #0xFF

; 576  : 	data[1]=val;
; 577  : 	if(writereg1)
; 578  : 	{
; 579  : 		data[0]=0x1b;                            
; 580  : 		XllpPI2CWrite(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data, 2, 1);

  00084	e5941004	 ldr         r1, [r4, #4]
  00088	e5940010	 ldr         r0, [r4, #0x10]
  0008c	e5cd3009	 strb        r3, [sp, #9]
  00090	e28d3008	 add         r3, sp, #8
  00094	e3550000	 cmp         r5, #0
  00098	e3a02008	 mov         r2, #8
  0009c	e3a04002	 mov         r4, #2
  000a0	0a000007	 beq         |$L35342|
  000a4	e3a0e01b	 mov         lr, #0x1B
  000a8	e5cde008	 strb        lr, [sp, #8]
  000ac	e58d8004	 str         r8, [sp, #4]
  000b0	e58d4000	 str         r4, [sp]
  000b4	eb000000	 bl          XllpPI2CWrite

; 581  : 	}else

  000b8	ea000006	 b           |$L35343|
  000bc		 |$L35730|

; 569  : 		writereg1=0;
; 570  : 
; 571  : 	//codec the reg value
; 572  : 	if(writereg1)
; 573  : 		val=(data[0]&0x1f)+(mode&0xe0);

  000bc	e5dd3008	 ldrb        r3, [sp, #8]

; 574  : 	else

  000c0	eaffffeb	 b           |$L35735|
  000c4		 |$L35342|

; 582  : 	{
; 583  : 		data[0]=0x1c;                            
; 584  : 		XllpPI2CWrite(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data, 2, 1);

  000c4	e3a0e01c	 mov         lr, #0x1C
  000c8	e5cde008	 strb        lr, [sp, #8]
  000cc	e58d8004	 str         r8, [sp, #4]
  000d0	e58d4000	 str         r4, [sp]
  000d4	eb000000	 bl          XllpPI2CWrite
  000d8		 |$L35343|

; 585  : 	}
; 586  : 	return;
; 587  : }

  000d8	e28dd00c	 add         sp, sp, #0xC
  000dc	e8bd41f0	 ldmia       sp!, {r4 - r8, lr}
  000e0	e12fff1e	 bx          lr
  000e4		 |$M35737|

			 ENDP  ; |Pcf50606DCDMod|

	EXPORT	|Pcf50606DCDE|

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

  00000			 AREA	 |.pdata$$Pcf50606DCDE|, PDATA, SELECTION=5, ASSOC=|.text| { |Pcf50606DCDE| } ; comdat associative
|$T35750| DCD	|$L35749|

⌨️ 快捷键说明

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