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

📄 basei2s.cod

📁 CS4245 Wince驱动
💻 COD
📖 第 1 页 / 共 5 页
字号:
  00188	e3a01001	 mov         r1, #1
  0018c	e2840048	 add         r0, r4, #0x48
  00190	eb000000	 bl          |?SetI2SLinkOn@MES_AUDIO03@@QAAXH@Z|

; 414  : 
; 415  : //	RETAILMSG(1, (TEXT("AUDIO DUMP REG DBC0 = 0x%x\n"),*(volatile U16*)0xB000D800));
; 416  : 
; 417  :     InitializeCriticalSection( &m_csMutex );

  00194	e284006c	 add         r0, r4, #0x6C
  00198	eb000000	 bl          InitializeCriticalSection

; 418  : 
; 419  : 
; 420  : 	//--------------------------------------------------------------------------
; 421  : 	//  颇况诀 秦林绰 内靛啊 乐阑扼唱 I2S啊??
; 422  : 	//--------------------------------------------------------------------------
; 423  : 	//	PowerUp();
; 424  : 
; 425  :     // slave mode
; 426  :     m_audio.SetI2SControllerMode( MES_AUDIO03::MODE_MASTER );

  0019c	e3a01000	 mov         r1, #0
  001a0	e2840048	 add         r0, r4, #0x48
  001a4	eb000000	 bl          |?SetI2SControllerMode@MES_AUDIO03@@QAAXW4MODE@1@@Z|

; 427  :     // Set Sync Period ( 256fs )
; 428  :     m_audio.SetSyncPeriod( MES_AUDIO03::SYNCPERIOD_64fs );

  001a8	e3a01002	 mov         r1, #2
  001ac	e2840048	 add         r0, r4, #0x48
  001b0	eb000000	 bl          |?SetSyncPeriod@MES_AUDIO03@@QAAXW4SYNCPERIOD@1@@Z|

; 429  : 
; 430  : 	//--------------------------------------------------------------------------
; 431  : 	//  Codec Initialize窍绰 内靛烙. 
; 432  : 	//--------------------------------------------------------------------------
; 433  : /*
; 434  :         if( CTRUE != InitI2SCodec_audio( )                       ){ return CFALSE; }
; 435  :         if( CTRUE != SetSampling_audio( SAMPLE_48000 )           ){ return CFALSE; }
; 436  :         if( CTRUE != SetI2SVolume_audio( 0x03, 0x03 )            ){ return CFALSE; }
; 437  : */
; 438  : 
; 439  :     m_audio.SetPCMOUTDataWidth( MES_AUDIO03::DATAWIDTH_16 );    

  001b4	e3a01000	 mov         r1, #0
  001b8	e2840048	 add         r0, r4, #0x48
  001bc	eb000000	 bl          |?SetPCMOUTDataWidth@MES_AUDIO03@@QAAXW4DATAWIDTH@1@@Z|

; 440  :     m_audio.SetSPDIFOUTDataWidth( MES_AUDIO03::DATAWIDTH_16 );  

  001c0	e3a01000	 mov         r1, #0
  001c4	e2840048	 add         r0, r4, #0x48
  001c8	eb000000	 bl          |?SetSPDIFOUTDataWidth@MES_AUDIO03@@QAAXW4DATAWIDTH@1@@Z|

; 441  :     m_audio.SetPCMINDataWidth( MES_AUDIO03::DATAWIDTH_16 ); 

  001cc	e3a01000	 mov         r1, #0
  001d0	e2840048	 add         r0, r4, #0x48
  001d4	eb000000	 bl          |?SetPCMINDataWidth@MES_AUDIO03@@QAAXW4DATAWIDTH@1@@Z|

; 442  : 
; 443  : /*
; 444  : 	//--------------------------------------------------------------------------
; 445  : 	// AC97俊 乐带 内靛. Ready 媒阑 绢纳窍瘤..
; 446  : 	//--------------------------------------------------------------------------
; 447  : 	RETAILMSG(1, (TEXT("++ Check I2S Codec Ready\r\n")));
; 448  : 	while(1)
; 449  : 	{
; 450  : 		unsigned short ret;
; 451  : 		CodecReadRegister( 0x26, &ret );
; 452  : 
; 453  : 		if (( ret & 0xf)==0xf)	break;
; 454  : 	}
; 455  : 	RETAILMSG(1, (TEXT("-- Check I2S Codec Ready\r\n")));
; 456  : */
; 457  : 	//--------------------------------------------------------------------------
; 458  : 	// I2C 结具窍聪鳖 Initialize
; 459  : 	//--------------------------------------------------------------------------
; 460  : 	m_pi2c = new MutexI2C(I2S_I2C_ADDR, 1000, MutexI2C::MES_I2C0);	

  001d8	e3a00064	 mov         r0, #0x64
  001dc	eb000000	 bl          |??2@YAPAXI@Z|
  001e0	e3500000	 cmp         r0, #0
  001e4	0a000005	 beq         |$L37294|
  001e8	e3a03000	 mov         r3, #0
  001ec	e3a02ffa	 mov         r2, #0xFA, 30
  001f0	e3a01098	 mov         r1, #0x98
  001f4	eb000000	 bl          |??0MutexI2C@@QAA@EIW4I2CDEV@0@@Z|
  001f8	e1a0e000	 mov         lr, r0
  001fc	ea000000	 b           |$L37295|
  00200		 |$L37294|
  00200	e3a0e000	 mov         lr, #0
  00204		 |$L37295|

; 461  : 	m_pi2c->Init(MES_I2C03::TXCLKSRC_PCLK256, 0, 10);

  00204	e3a0300a	 mov         r3, #0xA
  00208	e3a02000	 mov         r2, #0
  0020c	e3a01001	 mov         r1, #1
  00210	e1a0000e	 mov         r0, lr
  00214	e584e010	 str         lr, [r4, #0x10]
  00218	eb000000	 bl          |?Init@MutexI2C@@QAAXW4TXCLKSRC@MES_I2C03@@KH@Z|

; 462  : 
; 463  : 
; 464  : 	return TRUE;

  0021c	e3a00001	 mov         r0, #1

; 465  : }

  00220	e8bd4010	 ldmia       sp!, {r4, lr}
  00224	e12fff1e	 bx          lr
  00228		 |$L37306|
  00228	00000000	 DCD         |??_C@_1GE@GMDDECGJ@?$AAA?$AAn?$AAd?$AAr?$AAe?$AAw?$AA?$CB?$AA?$CB?$AA?5?$AAM?$AAF?$AAP?$AA_?$AAA?$AAl?$AAl?$AAo?$AAc?$AAR?$AAe@|
  0022c	00000000	 DCD         |??_C@_1GG@BNDIIIOO@?$AAA?$AAn?$AAd?$AAr?$AAe?$AAw?$AA?$CB?$AA?$CB?$AA?5?$AAM?$AAF?$AAP?$AA_?$AAA?$AAl?$AAl?$AAo?$AAc?$AAR?$AAe@|
  00230	00000000	 DCD         |??_C@_1GA@PIKEJFKP@?$AAA?$AAn?$AAd?$AAr?$AAe?$AAw?$AA?$CB?$AA?$CB?$AA?5?$AAM?$AAF?$AAP?$AA_?$AAA?$AAl?$AAl?$AAo?$AAc?$AAR?$AAe@|
  00234	00000000	 DCD         |??_C@_1DC@MEKBLJDN@?$AAA?$AAn?$AAd?$AAr?$AAe?$AAw?$AA?$CB?$AA?$CB?$AA?5?$AAB?$AAA?$AAS?$AAE?$AAI?$AA2?$AAS?$AA?3?$AA?3?$AAo?$AAp@|
  00238		 |$M37302|

			 ENDP  ; |?Open@BASEI2S@@QAAHXZ|, BASEI2S::Open

	EXPORT	|?AllocAudioDMABuffer@BASEI2S@@IAAHPAK00@Z| ; BASEI2S::AllocAudioDMABuffer
	EXPORT	|??_C@_1FE@MDPMCAMI@?$AAm?$AA_?$AAS?$AAD?$AAD?$AAM?$AAA?$AAR?$AAe?$AAa?$AAd?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?3?$AA?5?$AAV@| [ DATA ] ; `string'
	EXPORT	|??_C@_1FC@JBGPHFIK@?$AAm?$AA_?$AAS?$AAD?$AAD?$AAM?$AAA?$AAR?$AAe?$AAa?$AAd?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?3?$AA?5?$AAV@| [ DATA ] ; `string'

  00000			 AREA	 |.text| { |?AllocAudioDMABuffer@BASEI2S@@IAAHPAK00@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?AllocAudioDMABuffer@BASEI2S@@IAAHPAK00@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?AllocAudioDMABuffer@BASEI2S@@IAAHPAK00@Z| } ; comdat associative
|$T37326| DCD	|$L37325|
	DCD	0x40003501

  00000			 AREA	 |.rdata| { |??_C@_1FC@JBGPHFIK@?$AAm?$AA_?$AAS?$AAD?$AAD?$AAM?$AAA?$AAR?$AAe?$AAa?$AAd?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?3?$AA?5?$AAV@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FC@JBGPHFIK@?$AAm?$AA_?$AAS?$AAD?$AAD?$AAM?$AAA?$AAR?$AAe?$AAa?$AAd?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?3?$AA?5?$AAV@| DCB "m"
	DCB	0x0, "_", 0x0, "S", 0x0, "D", 0x0, "D", 0x0, "M", 0x0, "A"
	DCB	0x0, "R", 0x0, "e", 0x0, "a", 0x0, "d", 0x0, "B", 0x0, "u"
	DCB	0x0, "f", 0x0, "f", 0x0, "e", 0x0, "r", 0x0, ":", 0x0, " "
	DCB	0x0, "V", 0x0, "i", 0x0, "r", 0x0, "t", 0x0, "u", 0x0, "a"
	DCB	0x0, "l", 0x0, "C", 0x0, "o", 0x0, "p", 0x0, "y", 0x0, " "
	DCB	0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d"
	DCB	0x0, "!", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_1FE@MDPMCAMI@?$AAm?$AA_?$AAS?$AAD?$AAD?$AAM?$AAA?$AAR?$AAe?$AAa?$AAd?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?3?$AA?5?$AAV@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FE@MDPMCAMI@?$AAm?$AA_?$AAS?$AAD?$AAD?$AAM?$AAA?$AAR?$AAe?$AAa?$AAd?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?3?$AA?5?$AAV@| DCB "m"
	DCB	0x0, "_", 0x0, "S", 0x0, "D", 0x0, "D", 0x0, "M", 0x0, "A"
	DCB	0x0, "R", 0x0, "e", 0x0, "a", 0x0, "d", 0x0, "B", 0x0, "u"
	DCB	0x0, "f", 0x0, "f", 0x0, "e", 0x0, "r", 0x0, ":", 0x0, " "
	DCB	0x0, "V", 0x0, "i", 0x0, "r", 0x0, "t", 0x0, "u", 0x0, "a"
	DCB	0x0, "l", 0x0, "A", 0x0, "l", 0x0, "l", 0x0, "o", 0x0, "c"
	DCB	0x0, " ", 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e"
	DCB	0x0, "d", 0x0, "!", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?AllocAudioDMABuffer@BASEI2S@@IAAHPAK00@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?AllocAudioDMABuffer@BASEI2S@@IAAHPAK00@Z| PROC ; BASEI2S::AllocAudioDMABuffer

; 470  : {

  00000		 |$L37325|
  00000	e92d4ff0	 stmdb       sp!, {r4 - r11, lr}
  00004		 |$M37323|
  00004	e1a09003	 mov         r9, r3
  00008	e1a0a002	 mov         r10, r2
  0000c	e1a0b001	 mov         r11, r1
  00010	e1a08000	 mov         r8, r0

; 471  : 	U32	OffsetAddr, AlignAddr;
; 472  : 	BYTE*	pAllocBuf;
; 473  : 	m_PhysDMAOutBufferAddr.LowPart	= (DWORD)(pBSPargs->wavedev.AudioBuffer);

  00014	e59f40b4	 ldr         r4, [pc, #0xB4]

; 474  : 	m_PhysDMAInBufferAddr.LowPart	= (DWORD)(pBSPargs->wavedev.AudioBuffer + (DWORD)(AUDIO_DMA_PAGE_SIZE * 2));
; 475  : 
; 476  : 	//--------------------------------------------------------------------------
; 477  : 	// Alloc SD DMA READ Buffer
; 478  : 	//--------------------------------------------------------------------------
; 479  : 
; 480  : 	AlignAddr	= m_PhysDMAOutBufferAddr.LowPart & 0xfffff000;
; 481  : 	OffsetAddr	= m_PhysDMAOutBufferAddr.LowPart & 0x00000fff;

  00018	e3a06eff	 mov         r6, #0xFF, 28
  0001c	e386600f	 orr         r6, r6, #0xF
  00020	e594e000	 ldr         lr, [r4]
  00024	e3a07000	 mov         r7, #0
  00028	e2477a01	 sub         r7, r7, #1, 20

; 482  : 
; 483  : 	pAllocBuf = (BYTE*)VirtualAlloc(0, OffsetAddr + AUDIO_DMA_PAGE_SIZE * NUM_DMA_BUFFER + sizeof(DWORD)*2, MEM_RESERVE, PAGE_NOACCESS);

  0002c	e588e000	 str         lr, [r8]
  00030	e1a0500e	 mov         r5, lr
  00034	e594e000	 ldr         lr, [r4]
  00038	e0056006	 and         r6, r5, r6
  0003c	e2861a02	 add         r1, r6, #2, 20
  00040	e28eea01	 add         lr, lr, #1, 20
  00044	e2811008	 add         r1, r1, #8
  00048	e3a03001	 mov         r3, #1
  0004c	e3a02a02	 mov         r2, #2, 20
  00050	e3a00000	 mov         r0, #0
  00054	e588e008	 str         lr, [r8, #8]
  00058	e0055007	 and         r5, r5, r7
  0005c	eb000000	 bl          VirtualAlloc
  00060	e1b04000	 movs        r4, r0

; 484  : 	if (!pAllocBuf)
; 485  : 	{
; 486  : 		RETAILMSG(1, (TEXT("m_SDDMAReadBuffer: VirtualAlloc failed!\r\n")));

  00064	059f0060	 ldreq       r0, [pc, #0x60]
  00068	0a000009	 beq         |$L37322|

; 487  : 		return(FALSE);
; 488  : 	}
; 489  : 	if (!VirtualCopy((PVOID)pAllocBuf, (PVOID)(AlignAddr >> 8),
; 490  : 			OffsetAddr + AUDIO_DMA_PAGE_SIZE * NUM_DMA_BUFFER + sizeof(DWORD)*2, PAGE_PHYSICAL | PAGE_READWRITE | PAGE_NOCACHE))

  0006c	e3a03c06	 mov         r3, #6, 24
  00070	e2862a02	 add         r2, r6, #2, 20
  00074	e3833004	 orr         r3, r3, #4
  00078	e2822008	 add         r2, r2, #8
  0007c	e1a01425	 mov         r1, r5, lsr #8
  00080	e1a00004	 mov         r0, r4
  00084	eb000000	 bl          VirtualCopy
  00088	e3500000	 cmp         r0, #0
  0008c	1a000004	 bne         |$L36292|

; 491  : 	{
; 492  : 		RETAILMSG(1, (TEXT("m_SDDMAReadBuffer: VirtualCopy failed!\r\n")));

  00090	e59f0030	 ldr         r0, [pc, #0x30]
  00094		 |$L37322|
  00094	eb000000	 bl          NKDbgPrintfW

; 493  : 		return(FALSE);

  00098	e3a00000	 mov         r0, #0

; 501  : 
; 502  : }

  0009c	e8bd4ff0	 ldmia       sp!, {r4 - r11, lr}
  000a0	e12fff1e	 bx          lr
  000a4		 |$L36292|

; 494  : 	}
; 495  : 	pAllocBuf = (BYTE*)(pAllocBuf + OffsetAddr);

  000a4	e0843006	 add         r3, r4, r6

; 496  : 	*pDMAStartAddress = (DWORD)pAllocBuf;

  000a8	e58b3000	 str         r3, [r11]

; 497  : 	*pDMASize = AUDIO_DMA_PAGE_SIZE;

  000ac	e3a03b02	 mov         r3, #2, 22
  000b0	e58a3000	 str         r3, [r10]

; 498  : 	*pDMANum = NUM_DMA_BUFFER;

  000b4	e3a03004	 mov         r3, #4
  000b8	e5893000	 str         r3, [r9]

; 499  : 
; 500  : 	return TRUE;

  000bc	e3a00001	 mov         r0, #1

; 501  : 
; 502  : }

  000c0	e8bd4ff0	 ldmia       sp!, {r4 - r11, lr}
  000c4	e12fff1e	 bx          lr
  000c8		 |$L37328|
  000c8	00000000	 DCD         |??_C@_1FC@JBGPHFIK@?$AAm?$AA_?$AAS?$AAD?$AAD?$AAM?$AAA?$AAR?$AAe?$AAa?$AAd?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?3?$AA?5?$AAV@|
  000cc	00000000	 DCD         |??_C@_1FE@MDPMCAMI@?$AAm?$AA_?$AAS?$AAD?$AAD?$AAM?$AAA?$AAR?$AAe?$AAa?$AAd?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?3?$AA?5?$AAV@|
  000d0	00000000	 DCD         |?pBSPargs@@3PAUBSP_ARGS@@A|
  000d4		 |$M37324|

			 ENDP  ; |?AllocAudioDMABuffer@BASEI2S@@IAAHPAK00@Z|, BASEI2S::AllocAudioDMABuffer

	EXPORT	|?RequiredInitialization@BASEI2S@@AAAXXZ| ; BASEI2S::RequiredInitialization

  00000			 AREA	 |.text| { |?RequiredInitialization@BASEI2S@@AAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?RequiredInitialization@BASEI2S@@AAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?RequiredInitialization@BASEI2S@@AAAXXZ| } ; comdat associative
|$T37335| DCD	|$L37334|
	DCD	0x40000f01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?RequiredInitialization@BASEI2S@@AAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?RequiredInitialization@BASEI2S@@AAAXXZ| PROC ; BASEI2S::RequiredInitialization

; 514  : {

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

; 515  :     CodecWriteRegister( 0x00, 0x99 );	 //待研究

  00008	e3a02099	 mov         r2, #0x99
  0000c	e3a01000	 mov         r1, #0
  00010	eb000000	 bl          |?CodecWriteRegister@BASEI2S@@IAAHEE@Z|

; 516  :     CodecWriteRegister( 0x3E, 0xBA );	 //待研究

  00014	e3a020ba	 mov         r2, #0xBA
  00018	e3a0103e	 mov         r1, #0x3E
  0001c	e1a00004	 mov         r0, r4
  00020	eb000000	 bl          |?CodecWriteRegister@BASEI2S@@IAAHEE@Z|

; 517  :     CodecWriteRegister( 0x00, 0x00 );  //待研究

  00024	e3a02000	 mov         r2, #0
  00028	e3a01000	 mov         r1, #0
  0002c	e1a00004	 mov         r0, r4
  00030	eb000000	 bl          |?CodecWriteRegister@BASEI2S@@IAAHEE@Z|

; 518  : }

  00034	e8bd4010	 ldmia       sp!, {r4, lr}
  00038	e12fff1e	 bx          lr
  0003c		 |$M37333|

			 ENDP  ; |?RequiredInitialization@BASEI2S@@AAAXXZ|, BASEI2S::RequiredInitialization

	EXPORT	|?CodecReset@BASEI2S@@QAAHXZ|		; BASEI2S::CodecReset

  00000			 AREA	 |.text| { |?CodecReset@BASEI2S@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?CodecReset@BASEI2S@@QAAHXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?CodecReset@BASEI2S@@QAAHXZ| } ; comdat associative
|$T37346| DCD	|$L37345|
	DCD	0x40002b01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?CodecReset@BASEI2S@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?CodecReset@BASEI2S@@QAAHXZ| PROC	; BASEI2S::CodecReset

; 617  : {

  00000		 |$L37345|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004		 |$M37343|

⌨️ 快捷键说明

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