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

📄 battif.cod

📁 平台PXA270, Mobile6.0 这是270的mobile6.0的bootloader
💻 COD
📖 第 1 页 / 共 4 页
字号:

  00004	e59f3024	 ldr         r3, [pc, #0x24]
  00008	e3a01ebb	 mov         r1, #0xBB, 28
  0000c	e3811008	 orr         r1, r1, #8
  00010	e5930000	 ldr         r0, [r3]
  00014	eb000000	 bl          WaitForSingleObject
  00018	e3500000	 cmp         r0, #0

; 148  : 
; 149  : 	if(retval==WAIT_OBJECT_0)
; 150  : 	{	
; 151  : 		return(SUCCESS);

  0001c	03a00001	 moveq       r0, #1

; 157  : 	}
; 158  : }

  00020	049de004	 ldreq       lr, [sp], #4

; 152  : 	}
; 153  : 	else
; 154  : 	{
; 155  : 		DEBUGCHK(1);
; 156  : 		return(FALSE);

  00024	13a00000	 movne       r0, #0

; 157  : 	}
; 158  : }

  00028	149de004	 ldrne       lr, [sp], #4
  0002c	e12fff1e	 bx          lr
  00030		 |$L43639|
  00030	00000000	 DCD         |hAcLinkControlMutex|
  00034		 |$M43635|

			 ENDP  ; |Ac97Lock|

	EXPORT	|Ac97Unlock|
	IMPORT	|ReleaseMutex|

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

  00000			 AREA	 |.pdata$$Ac97Unlock|, PDATA, SELECTION=5, ASSOC=|.text| { |Ac97Unlock| } ; comdat associative
|$T43647| DCD	|$L43646|
	DCD	0x40000c01
; Function compile flags: /Ogsy

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

  00000		 |Ac97Unlock| PROC

; 169  : {

  00000		 |$L43646|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M43644|

; 170  : 	v_pAc97regs->CAR &= ~AC97CAR_CAIP;			// clear the Caip bit 

  00004	e59f3020	 ldr         r3, [pc, #0x20]
  00008	e5932014	 ldr         r2, [r3, #0x14]

; 171  : 	ReleaseMutex(hAcLinkControlMutex);

  0000c	e5930000	 ldr         r0, [r3]
  00010	e5923020	 ldr         r3, [r2, #0x20]
  00014	e3c33001	 bic         r3, r3, #1
  00018	e5823020	 str         r3, [r2, #0x20]
  0001c	eb000000	 bl          ReleaseMutex

; 172  : 	
; 173  : 	return(SUCCESS);

  00020	e3a00001	 mov         r0, #1

; 174  : }

  00024	e49de004	 ldr         lr, [sp], #4
  00028	e12fff1e	 bx          lr
  0002c		 |$L43649|
  0002c	00000000	 DCD         |hAcLinkControlMutex|
  00030		 |$M43645|

			 ENDP  ; |Ac97Unlock|

	EXPORT	|AC97GpioConfigure|
	IMPORT	|GPIOSetController|
	IMPORT	|GPIOSetControllerValue|
	IMPORT	|XllpOstDelayMilliSeconds|

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

  00000			 AREA	 |.pdata$$AC97GpioConfigure|, PDATA, SELECTION=5, ASSOC=|.text| { |AC97GpioConfigure| } ; comdat associative
|$T43663| DCD	|$L43662|
	DCD	0x40006b01
; Function compile flags: /Ogsy

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

  00000		 |AC97GpioConfigure| PROC

; 197  : {	

  00000		 |$L43662|
  00000	e92d4070	 stmdb       sp!, {r4 - r6, lr}
  00004		 |$M43660|
  00004	e1a06000	 mov         r6, r0

; 198  : 	unsigned int cSleeps;
; 199  : 	short int retval=FALSE;
; 200  : 
; 201  : 	if(v_pDriverGlobals != NULL)

  00008	e59f5198	 ldr         r5, [pc, #0x198]
  0000c	e3a04000	 mov         r4, #0
  00010	e595100c	 ldr         r1, [r5, #0xC]
  00014	e3510000	 cmp         r1, #0
  00018	0a00005e	 beq         |$L43435|

; 202  : 	{
; 203  :         // If already activated, just log this client and no-op gracefully
; 204  : 		if(0 != v_pDriverGlobals->ac97.GpioIsConfigured)

  0001c	e5d13500	 ldrb        r3, [r1, #0x500]

; 205  : 		{	
; 206  :             // Log activation by this client
; 207  :             v_pDriverGlobals->ac97.GpioIsConfigured |= 1u << DevId;				

  00020	e3a00001	 mov         r0, #1
  00024	e3530000	 cmp         r3, #0
  00028	e20330ff	 and         r3, r3, #0xFF

; 208  : 			return(SUCCESS);

  0002c	e1833210	 orr         r3, r3, r0, lsl r2
  00030	13a04001	 movne       r4, #1
  00034	e5c13500	 strb        r3, [r1, #0x500]
  00038	1a000057	 bne         |$L43431|

; 215  : 	}
; 216  : 
; 217  :     // Transition to active. Log this client and perform the activation
; 218  :     v_pDriverGlobals->ac97.GpioIsConfigured |= 1u << DevId;
; 219  : 
; 220  : 	if(v_pGPIOReg && v_pAc97regs)

  0003c	e3560000	 cmp         r6, #0
  00040	0a000054	 beq         |$L43435|
  00044	e5953008	 ldr         r3, [r5, #8]
  00048	e3530000	 cmp         r3, #0
  0004c	0a000051	 beq         |$L43435|

; 221  : 	{
; 222  : 		GPIOSetController((XLLP_GPIO_T *)v_pGPIOReg, AC97EN | GPIO_OUT | GPIO_AF0);

  00050	e3a01d81	 mov         r1, #0x81, 26
  00054	e3811018	 orr         r1, r1, #0x18
  00058	e1a00006	 mov         r0, r6
  0005c	eb000000	 bl          GPIOSetController

; 223  : 		GPIOSetControllerValue((XLLP_GPIO_T *)v_pGPIOReg, AC97EN | GPIO_OUT_1);

  00060	e3a01f56	 mov         r1, #0x56, 30
  00064	e1a00006	 mov         r0, r6
  00068	eb000000	 bl          GPIOSetControllerValue

; 224  : 
; 225  : 		XllpOstDelayMilliSeconds(vp_OSTRegs, 10);

  0006c	e5950004	 ldr         r0, [r5, #4]
  00070	e3a0100a	 mov         r1, #0xA
  00074	eb000000	 bl          XllpOstDelayMilliSeconds

; 226  : 
; 227  : 		v_pClockRegs->cken |= 0x00000004;

  00078	e5952000	 ldr         r2, [r5]

; 228  : 		GPIOSetController((XLLP_GPIO_T *)v_pGPIOReg, ACSYSCLK | GPIO_OUT | GPIO_AF1);

  0007c	e3a01d85	 mov         r1, #0x85, 26
  00080	e3811019	 orr         r1, r1, #0x19
  00084	e5923004	 ldr         r3, [r2, #4]
  00088	e1a00006	 mov         r0, r6
  0008c	e3833004	 orr         r3, r3, #4
  00090	e5823004	 str         r3, [r2, #4]
  00094	eb000000	 bl          GPIOSetController

; 229  : 	
; 230  : 
; 231  : 		GPIOSetController((XLLP_GPIO_T *)v_pGPIOReg, ACSDOUT | GPIO_OUT | GPIO_AF2);

  00098	e3a01c22	 mov         r1, #0x22, 24
  0009c	e381101e	 orr         r1, r1, #0x1E
  000a0	e1a00006	 mov         r0, r6
  000a4	eb000000	 bl          GPIOSetController

; 232  : 		GPIOSetController((XLLP_GPIO_T *)v_pGPIOReg, ACSYNC | GPIO_OUT | GPIO_AF2);

  000a8	e3a01c22	 mov         r1, #0x22, 24
  000ac	e381101f	 orr         r1, r1, #0x1F
  000b0	e1a00006	 mov         r0, r6
  000b4	eb000000	 bl          GPIOSetController

; 233  : 		GPIOSetController((XLLP_GPIO_T *)v_pGPIOReg, ACBCLK | GPIO_IN | GPIO_AF1);

  000b8	e3a01c11	 mov         r1, #0x11, 24
  000bc	e381101c	 orr         r1, r1, #0x1C
  000c0	e1a00006	 mov         r0, r6
  000c4	eb000000	 bl          GPIOSetController

; 234  : 		GPIOSetController((XLLP_GPIO_T *)v_pGPIOReg, ACSDIN | GPIO_IN | GPIO_AF1);

  000c8	e3a01c11	 mov         r1, #0x11, 24
  000cc	e381101d	 orr         r1, r1, #0x1D
  000d0	e1a00006	 mov         r0, r6
  000d4	eb000000	 bl          GPIOSetController

; 235  :         // Don't use alt fn for reset line, control as simple GPIO: silicon issue after sleep
; 236  : 		GPIOSetController((XLLP_GPIO_T *)v_pGPIOReg, TPINT | GPIO_AF0 | GPIO_OUT);

  000d8	e3a01a02	 mov         r1, #2, 20
  000dc	e381100b	 orr         r1, r1, #0xB
  000e0	e1a00006	 mov         r0, r6
  000e4	eb000000	 bl          GPIOSetController

; 237  : 		GPIOSetControllerValue((XLLP_GPIO_T *)v_pGPIOReg, TPINT | GPIO_OUT_1);

  000e8	e3a01f42	 mov         r1, #0x42, 30
  000ec	e3811003	 orr         r1, r1, #3
  000f0	e1a00006	 mov         r0, r6
  000f4	eb000000	 bl          GPIOSetControllerValue

; 238  : 		XllpOstDelayMilliSeconds(vp_OSTRegs, 10);

  000f8	e5950004	 ldr         r0, [r5, #4]
  000fc	e3a0100a	 mov         r1, #0xA
  00100	eb000000	 bl          XllpOstDelayMilliSeconds

; 239  : 		GPIOSetControllerValue((XLLP_GPIO_T *)v_pGPIOReg, TPINT | GPIO_OUT_0);

  00104	e3a0100b	 mov         r1, #0xB
  00108	e1a00006	 mov         r0, r6
  0010c	eb000000	 bl          GPIOSetControllerValue

; 240  : 		XllpOstDelayMilliSeconds(vp_OSTRegs, 10); 

  00110	e5950004	 ldr         r0, [r5, #4]
  00114	e3a0100a	 mov         r1, #0xA
  00118	eb000000	 bl          XllpOstDelayMilliSeconds

; 241  : 		GPIOSetControllerValue((XLLP_GPIO_T *)v_pGPIOReg, TPINT | GPIO_OUT_1);

  0011c	e3a01f42	 mov         r1, #0x42, 30
  00120	e3811003	 orr         r1, r1, #3
  00124	e1a00006	 mov         r0, r6
  00128	eb000000	 bl          GPIOSetControllerValue

; 242  : 		v_pAc97regs->GCR |= AC97GCR_ColdReset;

  0012c	e5952008	 ldr         r2, [r5, #8]

; 243  : 		
; 244  : 	 	XllpOstDelayMilliSeconds(vp_OSTRegs, 10);

  00130	e3a0100a	 mov         r1, #0xA
  00134	e592300c	 ldr         r3, [r2, #0xC]
  00138	e3833002	 orr         r3, r3, #2
  0013c	e582300c	 str         r3, [r2, #0xC]
  00140	e5950004	 ldr         r0, [r5, #4]
  00144	eb000000	 bl          XllpOstDelayMilliSeconds

; 245  : 		v_pAc97regs->GCR |= (1 << 2);          // Brings codec out of cold reset if alt fn used. 

  00148	e5952008	 ldr         r2, [r5, #8]

; 246  :         // Wait for the clocks to stabilize.  Assume we're in power management
; 247  :         // mode, since it might be so.
; 248  : 		for(cSleeps = 0; (cSleeps < 200) && (retval == FALSE); cSleeps++)

  0014c	e3a06000	 mov         r6, #0
  00150	e592300c	 ldr         r3, [r2, #0xC]
  00154	e3833004	 orr         r3, r3, #4
  00158	e582300c	 str         r3, [r2, #0xC]
  0015c		 |$L43450|
  0015c	e1a03804	 mov         r3, r4, lsl #16
  00160	e1b03823	 movs        r3, r3, lsr #16
  00164	1a000009	 bne         |$L43452|

; 249  : 		{
; 250  : 			XllpOstDelayMilliSeconds(vp_OSTRegs, 10);

  00168	e5950004	 ldr         r0, [r5, #4]
  0016c	e3a0100a	 mov         r1, #0xA
  00170	eb000000	 bl          XllpOstDelayMilliSeconds

; 251  : 	
; 252  : 			if(v_pAc97regs->GSR & AC97GSR_CODEC_READY_BIT)

  00174	e5953008	 ldr         r3, [r5, #8]
  00178	e2866001	 add         r6, r6, #1
  0017c	e593301c	 ldr         r3, [r3, #0x1C]
  00180	e3130c01	 tst         r3, #1, 24

; 253  : 			{
; 254  : 				// add debug message here that found primary codec ready
; 255  : 				retval = SUCCESS;

  00184	13a04001	 movne       r4, #1
  00188	e35600c8	 cmp         r6, #0xC8
  0018c	3afffff2	 bcc         |$L43450|
  00190		 |$L43452|

; 256  : 			}
; 257  : 		}
; 258  : 
; 259  : 		if(cSleeps == 200)

  00190	e35600c8	 cmp         r6, #0xC8
  00194	1a000000	 bne         |$L43431|
  00198		 |$L43435|

; 209  : 		}
; 210  : 	
; 211  : 	}
; 212  : 	else
; 213  : 	{
; 214  : 		return(FALSE);

  00198	e3a04000	 mov         r4, #0
  0019c		 |$L43431|

; 208  : 			return(SUCCESS);

  0019c	e1a00004	 mov         r0, r4

; 260  : 		{		
; 261  : 			retval = FALSE;	
; 262  : 		}
; 263  : 	}
; 264  : 	else
; 265  : 	{
; 266  : 		retval = FALSE;
; 267  : 	}
; 268  : 
; 269  : 	return(retval);
; 270  : }

  001a0	e8bd4070	 ldmia       sp!, {r4 - r6, lr}
  001a4	e12fff1e	 bx          lr
  001a8		 |$L43665|
  001a8	00000000	 DCD         |v_pClockRegs|
  001ac		 |$M43661|

			 ENDP  ; |AC97GpioConfigure|

	EXPORT	|InitAcLink|

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

  00000			 AREA	 |.pdata$$InitAcLink|, PDATA, SELECTION=5, ASSOC=|.text| { |InitAcLink| } ; comdat associative
|$T43677| DCD	|$L43676|
	DCD	0x40001801
; Function compile flags: /Ogsy

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

  00000		 |InitAcLink| PROC

; 273  : {

  00000		 |$L43676|
  00000	e92d4070	 stmdb       sp!, {r4 - r6, lr}
  00004		 |$M43674|
  00004	e1a04002	 mov         r4, r2
  00008	e1a05001	 mov         r5, r1
  0000c	e1a06000	 mov         r6, r0

; 274  : //	  EdbgOutputDebugString ("***********Entering InitAcLink\r\n");
; 275  : 
; 276  : 	if (AllocAcLink(DevId)!=SUCCESS)		// Allocate virtual addresses for AC97 controller and associated registers.

  00010	e1a00004	 mov         r0, r4
  00014	eb000000	 bl          AllocAcLink
  00018	e1a03800	 mov         r3, r0, lsl #16
  0001c	e1a03823	 mov         r3, r3, lsr #16
  00020	e3530001	 cmp         r3, #1

; 277  :     {

⌨️ 快捷键说明

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