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

📄 ac97.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0005b0  20363278          DCB      "x26 "
0005b4  2e676552          DCB      "Reg."
0005b8  7830203a          DCB      ": 0x"
0005bc  000a7825          DCB      "%x\n\0"
                  |L1.1472|
0005c0  413e3d0a          DCB      "\n=>A"
0005c4  6f6c616e          DCB      "nalo"
0005c8  666f2067          DCB      "g of"
0005cc  52502066          DCB      "f PR"
0005d0  00000a32          DCB      "2\n\0\0"
                  |L1.1492|
0005d4  443e3d0a          DCB      "\n=>D"
0005d8  74696769          DCB      "igit"
0005dc  49206c61          DCB      "al I"
0005e0  6f20462f          DCB      "/F o"
0005e4  50206666          DCB      "ff P"
0005e8  000a3452          DCB      "R4\n\0"
                          ENDP

                  PCM_Out_Volume PROC
;;;738    void PCM_Out_Volume(U8 Up_Down_Volume)
;;;739    {
0005ec  e92d4010          STMFD    sp!,{r4,lr}
0005f0  e1a04000          MOV      r4,r0
;;;740    	if( ( Up_Down_Volume == 'u') | (Up_Down_Volume == 'U') )
0005f4  e3540075          CMP      r4,#0x75
0005f8  1a000001          BNE      |L1.1540|
0005fc  e3a00001          MOV      r0,#1
000600  ea000000          B        |L1.1544|
                  |L1.1540|
000604  e3a00000          MOV      r0,#0
                  |L1.1544|
000608  e3540055          CMP      r4,#0x55
00060c  1a000001          BNE      |L1.1560|
000610  e3a01001          MOV      r1,#1
000614  ea000000          B        |L1.1564|
                  |L1.1560|
000618  e3a01000          MOV      r1,#0
                  |L1.1564|
00061c  e1900001          ORRS     r0,r0,r1
000620  0a000017          BEQ      |L1.1668|
;;;741    	{	
;;;742    		if (Output_Volume == 0x0000) 
000624  e59f00f0          LDR      r0,|L1.1820|
000628  e5900000          LDR      r0,[r0,#0]  ; Output_Volume
00062c  e3500000          CMP      r0,#0
000630  1a000002          BNE      |L1.1600|
;;;743    		{
;;;744    			Uart_Printf("\nLimit Volume Range!");
000634  e28f00e4          ADR      r0,|L1.1824|
000638  ebfffffe          BL       Uart_Printf
00063c  ea000010          B        |L1.1668|
;;;745    		} 
;;;746    		else 
;;;747    		{
;;;748    			Output_Volume -= 0x0101;
                  |L1.1600|
000640  e59f00d4          LDR      r0,|L1.1820|
000644  e5900000          LDR      r0,[r0,#0]  ; Output_Volume
000648  e3e01f40          MVN      r1,#0x100
00064c  e0800001          ADD      r0,r0,r1
000650  e59f10c4          LDR      r1,|L1.1820|
000654  e5810000          STR      r0,[r1,#0]  ; Output_Volume
;;;749    			AC97_Codec_Cmd(0,0x04, Output_Volume);		// PCM out Volume Up
000658  e59f00bc          LDR      r0,|L1.1820|
00065c  e5900000          LDR      r0,[r0,#0]  ; Output_Volume
000660  e1a02800          MOV      r2,r0,LSL #16
000664  e1a02822          MOV      r2,r2,LSR #16
000668  e3a01004          MOV      r1,#4
00066c  e3a00000          MOV      r0,#0
000670  ebfffffe          BL       AC97_Codec_Cmd
;;;750    			Uart_Printf("\nHeadphone Volume Level (In AC97 Codec 04h Reg.): 0x%x", Output_Volume);
000674  e59f00a0          LDR      r0,|L1.1820|
000678  e5901000          LDR      r1,[r0,#0]  ; Output_Volume
00067c  e28f00b4          ADR      r0,|L1.1848|
000680  ebfffffe          BL       Uart_Printf
;;;751    		}
;;;752    	}
;;;753    				
;;;754    	if ( ( Up_Down_Volume == 'd') | (Up_Down_Volume == 'D') ) 
                  |L1.1668|
000684  e3540064          CMP      r4,#0x64
000688  1a000001          BNE      |L1.1684|
00068c  e3a00001          MOV      r0,#1
000690  ea000000          B        |L1.1688|
                  |L1.1684|
000694  e3a00000          MOV      r0,#0
                  |L1.1688|
000698  e3540044          CMP      r4,#0x44
00069c  1a000001          BNE      |L1.1704|
0006a0  e3a01001          MOV      r1,#1
0006a4  ea000000          B        |L1.1708|
                  |L1.1704|
0006a8  e3a01000          MOV      r1,#0
                  |L1.1708|
0006ac  e1900001          ORRS     r0,r0,r1
0006b0  0a000018          BEQ      |L1.1816|
;;;755    	{	
;;;756    		if (Output_Volume == 0x1F1F) 
0006b4  e59f0060          LDR      r0,|L1.1820|
0006b8  e5900000          LDR      r0,[r0,#0]  ; Output_Volume
0006bc  e240cd7c          SUB      r12,r0,#0x1f00
0006c0  e25cc01f          SUBS     r12,r12,#0x1f
0006c4  1a000002          BNE      |L1.1748|
;;;757    		{
;;;758    			Uart_Printf("\nLimit Volume Range!");
0006c8  e28f0050          ADR      r0,|L1.1824|
0006cc  ebfffffe          BL       Uart_Printf
0006d0  ea000010          B        |L1.1816|
;;;759    		} 
;;;760    		else 
;;;761    		{
;;;762    			Output_Volume += 0x0101;
                  |L1.1748|
0006d4  e59f0040          LDR      r0,|L1.1820|
0006d8  e5900000          LDR      r0,[r0,#0]  ; Output_Volume
0006dc  e2800f40          ADD      r0,r0,#0x100
0006e0  e2800001          ADD      r0,r0,#1
0006e4  e59f1030          LDR      r1,|L1.1820|
0006e8  e5810000          STR      r0,[r1,#0]  ; Output_Volume
;;;763    			AC97_Codec_Cmd(0,0x04, Output_Volume);		// PCM out Volume Down
0006ec  e59f0028          LDR      r0,|L1.1820|
0006f0  e5900000          LDR      r0,[r0,#0]  ; Output_Volume
0006f4  e1a02800          MOV      r2,r0,LSL #16
0006f8  e1a02822          MOV      r2,r2,LSR #16
0006fc  e3a01004          MOV      r1,#4
000700  e3a00000          MOV      r0,#0
000704  ebfffffe          BL       AC97_Codec_Cmd
;;;764    			Uart_Printf("\nHeadphone Volume Level (In AC97 Codec 04h Reg.): 0x%x", Output_Volume);
000708  e59f000c          LDR      r0,|L1.1820|
00070c  e5901000          LDR      r1,[r0,#0]  ; Output_Volume
000710  e28f0020          ADR      r0,|L1.1848|
000714  ebfffffe          BL       Uart_Printf
;;;765    		}
;;;766    	}
;;;767    }
                  |L1.1816|
000718  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.1820|
00071c  0000001c          DCD      ||.bss$2|| + 28
                  |L1.1824|
000720  6d694c0a          DCB      "\nLim"
000724  56207469          DCB      "it V"
000728  6d756c6f          DCB      "olum"
00072c  61522065          DCB      "e Ra"
000730  2165676e          DCB      "nge!"
000734  00000000          DCB      "\0\0\0\0"
                  |L1.1848|
000738  6165480a          DCB      "\nHea"
00073c  6f687064          DCB      "dpho"
000740  5620656e          DCB      "ne V"
000744  6d756c6f          DCB      "olum"
000748  654c2065          DCB      "e Le"
00074c  206c6576          DCB      "vel "
000750  206e4928          DCB      "(In "
000754  37394341          DCB      "AC97"
000758  646f4320          DCB      " Cod"
00075c  30206365          DCB      "ec 0"
000760  52206834          DCB      "4h R"
000764  292e6765          DCB      "eg.)"
000768  7830203a          DCB      ": 0x"
00076c  00007825          DCB      "%x\0\0"
                          ENDP

                  DMA1_Play_Done PROC
;;;1273   void __irq DMA1_Play_Done(void)
;;;1274   {
                  |L1.1904|
000770  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;1275         	ClearPending(BIT_DMA1);               
000774  e3a00a40          MOV      r0,#0x40000
000778  e3a0144a          MOV      r1,#0x4a000000
00077c  e5810000          STR      r0,[r1,#0]
000780  e3a00a40          MOV      r0,#0x40000
000784  e3a0144a          MOV      r1,#0x4a000000
000788  e5810010          STR      r0,[r1,#0x10]
00078c  e3a0044a          MOV      r0,#0x4a000000
000790  e5900010          LDR      r0,[r0,#0x10]
;;;1276   	Uart_Printf("\n~~~");
000794  e28f0008          ADR      r0,|L1.1956|
000798  ebfffffe          BL       Uart_Printf
;;;1277   }
00079c  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
0007a0  e25ef004          SUBS     pc,lr,#4
                  |L1.1956|
0007a4  7e7e7e0a          DCB      "\n~~~"
0007a8  00000000          DCB      "\0\0\0\0"
                          ENDP

                  Muting PROC
;;;1399   void __irq Muting(void)
;;;1400   {
                  |L1.1964|
0007ac  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;1401   
;;;1402   	ClearPending(BIT_EINT0);               
0007b0  e3a00001          MOV      r0,#1
0007b4  e3a0144a          MOV      r1,#0x4a000000
0007b8  e5810000          STR      r0,[r1,#0]
0007bc  e3a00001          MOV      r0,#1
0007c0  e3a0144a          MOV      r1,#0x4a000000
0007c4  e5810010          STR      r0,[r1,#0x10]
0007c8  e3a0044a          MOV      r0,#0x4a000000
0007cc  e5900010          LDR      r0,[r0,#0x10]
;;;1403   
;;;1404       	if(AC97_mute)    //AC97_mute
0007d0  e59f0078          LDR      r0,|L1.2128|
0007d4  e5d00000          LDRB     r0,[r0,#0]  ; AC97_mute
0007d8  e3500000          CMP      r0,#0
0007dc  0a00000d          BEQ      |L1.2072|
;;;1405       	{
;;;1406        		AC97_mute = 0;
0007e0  e3a00000          MOV      r0,#0
0007e4  e59f1064          LDR      r1,|L1.2128|
0007e8  e5c10000          STRB     r0,[r1,#0]  ; AC97_mute
;;;1407        		AC97_Codec_Cmd(0,0x04, Output_Volume|0x8000);		
0007ec  e51f00d8          LDR      r0,|L1.1820|
0007f0  e5900000          LDR      r0,[r0,#0]  ; Output_Volume
0007f4  e1a00800          MOV      r0,r0,LSL #16
0007f8  e1a00820          MOV      r0,r0,LSR #16
0007fc  e3802c80          ORR      r2,r0,#0x8000
000800  e3a01004          MOV      r1,#4
000804  e3a00000          MOV      r0,#0
000808  ebfffffe          BL       AC97_Codec_Cmd
;;;1408           	Uart_Printf("\nAC97 Mute On...\n");
00080c  e28f0040          ADR      r0,|L1.2132|
000810  ebfffffe          BL       Uart_Printf
000814  ea00000b          B        |L1.2120|
;;;1409       	}
;;;1410       	else        //No AC97_mute
;;;1411       	{
;;;1412   
;;;1413           	AC97_mute = 1;
                  |L1.2072|
000818  e3a00001          MOV      r0,#1
00081c  e59f102c          LDR      r1,|L1.2128|
000820  e5c10000          STRB     r0,[r1,#0]  ; AC97_mute
;;;1414           	AC97_Codec_Cmd(0,0x04, Output_Volume& ~(0x8000));
000824  e51f0110          LDR      r0,|L1.1820|
000828  e5900000          LDR      r0,[r0,#0]  ; Output_Volume
00082c  e1a02880          MOV      r2,r0,LSL #17
000830  e1a028a2          MOV      r2,r2,LSR #17
000834  e3a01004          MOV      r1,#4
000838  e3a00000          MOV      r0,#0
00083c  ebfffffe          BL       AC97_Codec_Cmd
;;;1415           	Uart_Printf("\nAC97 Mute Off...\n");
000840  e28f0020          ADR      r0,|L1.2152|
000844  ebfffffe          BL       Uart_Printf
;;;1416       	}
;;;1417   }
                  |L1.2120|
000848  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
00084c  e25ef004          SUBS     pc,lr,#4
                  |L1.2128|
000850  00000000          DCD      AC97_mute
                  |L1.2132|
000854  3943410a          DCB      "\nAC9"
000858  754d2037          DCB      "7 Mu"
00085c  4f206574          DCB      "te O"
000860  2e2e2e6e          DCB      "n..."
000864  0000000a          DCB      "\n\0\0\0"
                  |L1.2152|
000868  3943410a          DCB      "\nAC9"
00086c  754d2037          DCB      "7 Mu"
000870  4f206574          DCB      "te O"
000874  2e2e6666          DCB      "ff.."
000878  00000a2e          DCB      ".\n\0\0"
                          ENDP

                  AC97_PCMout_DMA1 PROC
;;;813    void AC97_PCMout_DMA1(U32 PCM_Size)
;;;814    {
00087c  e92d4010          STMFD    sp!,{r4,lr}
000880  e1a04000          MOV      r4,r0
;;;815    	pISR_EINT0= (unsigned)Muting;
000884  e59f0198          LDR      r0,|L1.2596|
000888  e59f1198          LDR      r1,|L1.2600|
00088c  e5810f20          STR      r0,[r1,#0xf20]
;;;816    	pISR_DMA1= (unsigned)DMA1_Play_Done;
000890  e59f0194          LDR      r0,|L1.2604|
000894  e5810f68          STR      r0,[r1,#0xf68]
;;;817    	rINTMSK = ~(BIT_DMA1|BIT_EINT0);
000898  e59f0190          LDR      r0,|L1.2608|
00089c  e3a0144a          MOV      r1,#0x4a000000
0008a0  e5810008          STR      r0,[r1,#8]
;;;818    	
;;;819    	Play_AC97_BUF=(U32 *)(DOWN_BUF +0x30);
0008a4  e59f0188          LDR      r0,|L1.2612|
0008a8  e59f1188          LDR      r1,|L1.2616|
0008ac  e5810000          STR      r0,[r1,#0]  ; Play_AC97_BUF
;;;820    	
;;;821    	//DMA Ch1 for PCMInitialize
;;;822    	rDISRC1  = (int)Play_AC97_BUF;                 
0008b0  e59f0180          LDR      r0,|L1.2616|
0008b4  e5900000          LDR      r0,[r0,#0]  ; Play_AC97_BUF
0008b8  e3a0144b          MOV      r1,#0x4b000000
0008bc  e5810040          STR      r0,[r1,#0x40]
;;;823    	rDISRCC1 = (0<<1) + (0<<0);		//The source is in the system bus(AHB), Increment      
0008c0  e3a00000          MOV      r0,#0
0008c4  e3a0144b          MOV      r1,#0x4b000000
0008c8  e5810044          STR      r0,[r1,#0x44]
;;;824    	rDIDST1  = ((U32)0x5b000018);  	//PCM Out Data Fifo    
0008cc  e59f0168          LDR      r0,|L1.2620|
0008d0  e3a0144b          MOV      r1,#0x4b000000
0008d4  e5810048          STR      r0,[r1,#0x48]
;;;825    	rDIDSTC1 = (1<<1) + (1<<0);           //The destination is in the peripheral bus(APB), Fixed  

⌨️ 快捷键说明

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