📄 basei2s.cod
字号:
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 + -