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

📄 ac97.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0002c0  e59f0130          LDR      r0,|L1.1016|
0002c4  e3a01453          MOV      r1,#0x53000000
0002c8  e5810000          STR      r0,[r1,#0]
;;;1242           	i = 0xffff - rWTCNT;                     //1 count  => 64us,  300*500 cycle runtime = 64*i us
0002cc  e3a00453          MOV      r0,#0x53000000
0002d0  e5900008          LDR      r0,[r0,#8]
0002d4  e26040ff          RSB      r4,r0,#0xff
0002d8  e2844cff          ADD      r4,r4,#0xff00
;;;1243           	delayLoopCount = 4500000/(i*64);         //300*500:64*i=1*x:30 -> x=150000*30/(64*i)   
0002dc  e1a00304          MOV      r0,r4,LSL #6
0002e0  e59f1118          LDR      r1,|L1.1024|
0002e4  ebfffffe          BL       __rt_sdiv
0002e8  e59f1104          LDR      r1,|L1.1012|
0002ec  e5810000          STR      r0,[r1,#0]  ; delayLoopCount
;;;1244       	}
;;;1245       		
;;;1246   }
                  |L1.752|
0002f0  e8bd8070          LDMFD    sp!,{r4-r6,pc}
                          ENDP

                  AC97_Codec_Cmd PROC
;;;684    U16 AC97_Codec_Cmd(U8 CMD_Read, U8 CMD_Offset, U16 CMD_Data)
;;;685    { 
0002f4  e92d40f8          STMFD    sp!,{r3-r7,lr}
0002f8  e1a04000          MOV      r4,r0
0002fc  e1a05001          MOV      r5,r1
000300  e1a06002          MOV      r6,r2
;;;686    	 U16 Codec_Stat;
;;;687    
;;;688    	 if(CMD_Read == 0)
000304  e3540000          CMP      r4,#0
000308  1a000005          BNE      |L1.804|
;;;689    	 {
;;;690    	 	rAC_CODEC_CMD = (0<<23)|(CMD_Offset<<16)|(CMD_Data<<0);
00030c  e1860805          ORR      r0,r6,r5,LSL #16
000310  e3a0145b          MOV      r1,#0x5b000000
000314  e5810008          STR      r0,[r1,#8]
;;;691    		Delay_After_CommandWrite(1);	//30us delay. 		
000318  e3a00001          MOV      r0,#1
00031c  ebfffffe          BL       Delay_After_CommandWrite
000320  ea000011          B        |L1.876|
;;;692    	 }
;;;693            else if (CMD_Read ==1) 
                  |L1.804|
000324  e3540001          CMP      r4,#1
000328  1a00000d          BNE      |L1.868|
;;;694        	 {
;;;695    		rAC_CODEC_CMD = (1<<23)|(CMD_Offset<<16)|(CMD_Data<<0);
00032c  e1860805          ORR      r0,r6,r5,LSL #16
000330  e3800880          ORR      r0,r0,#0x800000
000334  e3a0145b          MOV      r1,#0x5b000000
000338  e5810008          STR      r0,[r1,#8]
;;;696    		Delay(1000);
00033c  e3a00ffa          MOV      r0,#0x3e8
000340  ebfffffe          BL       Delay
;;;697    		
;;;698        		Codec_Stat = (U16)(rAC_CODEC_STAT & 0xFFFF);
000344  e3a0045b          MOV      r0,#0x5b000000
000348  e590000c          LDR      r0,[r0,#0xc]
00034c  e1a07800          MOV      r7,r0,LSL #16
000350  e1a07827          MOV      r7,r7,LSR #16
;;;699        		Delay(1000);
000354  e3a00ffa          MOV      r0,#0x3e8
000358  ebfffffe          BL       Delay
;;;700        		return Codec_Stat;
00035c  e1a00007          MOV      r0,r7
;;;701        	 }
;;;702            else 
;;;703        	 return 0;
;;;704            
;;;705    }
                  |L1.864|
000360  e8bd80f8          LDMFD    sp!,{r3-r7,pc}
                  |L1.868|
000364  e3a00000          MOV      r0,#0                 ;703
000368  eafffffc          B        |L1.864|              ;703
                  |L1.876|
00036c  eafffffb          B        |L1.864|
                          ENDP

                  AC97_Controller_State PROC
;;;1178   void AC97_Controller_State(void)
;;;1179   {
000370  e92d4010          STMFD    sp!,{r4,lr}
;;;1180   	U8 state;
;;;1181       
;;;1182       	state=(U8)(rAC_GLBSTAT);
000374  e3a0045b          MOV      r0,#0x5b000000
000378  e5900004          LDR      r0,[r0,#4]
00037c  e20040ff          AND      r4,r0,#0xff
;;;1183   
;;;1184        	switch(state)
000380  e3540005          CMP      r4,#5
000384  908ff104          ADDLS    pc,pc,r4,LSL #2
000388  ea000017          B        |L1.1004|
00038c  ea000004          B        |L1.932|
000390  ea000006          B        |L1.944|
000394  ea000008          B        |L1.956|
000398  ea00000a          B        |L1.968|
00039c  ea00000c          B        |L1.980|
0003a0  ea00000e          B        |L1.992|
;;;1185       	{
;;;1186   		case 0:
;;;1187   		Uart_Printf("AC97 Controller State: Idle\n"); 
                  |L1.932|
0003a4  e28f0058          ADR      r0,|L1.1028|
0003a8  ebfffffe          BL       Uart_Printf
;;;1188   		break;
0003ac  ea00000f          B        |L1.1008|
;;;1189   	
;;;1190   		case 1:
;;;1191   			Uart_Printf("AC97 Controller State: Init\n"); 
                  |L1.944|
0003b0  e28f006c          ADR      r0,|L1.1060|
0003b4  ebfffffe          BL       Uart_Printf
;;;1192   		break;
0003b8  ea00000c          B        |L1.1008|
;;;1193   
;;;1194   		case 2:
;;;1195   		       Uart_Printf("AC97 Controller State: Ready\n"); 
                  |L1.956|
0003bc  e28f0080          ADR      r0,|L1.1092|
0003c0  ebfffffe          BL       Uart_Printf
;;;1196   		break;
0003c4  ea000009          B        |L1.1008|
;;;1197   		
;;;1198   		case 3:
;;;1199   			Uart_Printf("AC97 Controller State: Active\n"); 
                  |L1.968|
0003c8  e28f0094          ADR      r0,|L1.1124|
0003cc  ebfffffe          BL       Uart_Printf
;;;1200   		break;
0003d0  ea000006          B        |L1.1008|
;;;1201   
;;;1202   		case 4:
;;;1203   			Uart_Printf("AC97 Controller State: LP\n"); 
                  |L1.980|
0003d4  e28f00a8          ADR      r0,|L1.1156|
0003d8  ebfffffe          BL       Uart_Printf
;;;1204   		break;
0003dc  ea000003          B        |L1.1008|
;;;1205   
;;;1206   		case 5:
;;;1207   			Uart_Printf("AC97 Controller State: Warm\n"); 
                  |L1.992|
0003e0  e28f00b8          ADR      r0,|L1.1184|
0003e4  ebfffffe          BL       Uart_Printf
;;;1208   		break;
0003e8  ea000000          B        |L1.1008|
;;;1209   
;;;1210   		default:
;;;1211   		break;
                  |L1.1004|
0003ec  e1a00000          NOP      
;;;1212        	}
;;;1213   }
                  |L1.1008|
0003f0  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.1012|
0003f4  00000030          DCD      ||.bss$2|| + 48
                  |L1.1016|
0003f8  00003010          DCD      0x00003010
                  |L1.1020|
0003fc  00003030          DCD      0x00003030
                  |L1.1024|
000400  0044aa20          DCD      0x0044aa20
                  |L1.1028|
000404  37394341          DCB      "AC97"
000408  6e6f4320          DCB      " Con"
00040c  6c6f7274          DCB      "trol"
000410  2072656c          DCB      "ler "
000414  74617453          DCB      "Stat"
000418  49203a65          DCB      "e: I"
00041c  0a656c64          DCB      "dle\n"
000420  00000000          DCB      "\0\0\0\0"
                  |L1.1060|
000424  37394341          DCB      "AC97"
000428  6e6f4320          DCB      " Con"
00042c  6c6f7274          DCB      "trol"
000430  2072656c          DCB      "ler "
000434  74617453          DCB      "Stat"
000438  49203a65          DCB      "e: I"
00043c  0a74696e          DCB      "nit\n"
000440  00000000          DCB      "\0\0\0\0"
                  |L1.1092|
000444  37394341          DCB      "AC97"
000448  6e6f4320          DCB      " Con"
00044c  6c6f7274          DCB      "trol"
000450  2072656c          DCB      "ler "
000454  74617453          DCB      "Stat"
000458  52203a65          DCB      "e: R"
00045c  79646165          DCB      "eady"
000460  0000000a          DCB      "\n\0\0\0"
                  |L1.1124|
000464  37394341          DCB      "AC97"
000468  6e6f4320          DCB      " Con"
00046c  6c6f7274          DCB      "trol"
000470  2072656c          DCB      "ler "
000474  74617453          DCB      "Stat"
000478  41203a65          DCB      "e: A"
00047c  76697463          DCB      "ctiv"
000480  00000a65          DCB      "e\n\0\0"
                  |L1.1156|
000484  37394341          DCB      "AC97"
000488  6e6f4320          DCB      " Con"
00048c  6c6f7274          DCB      "trol"
000490  2072656c          DCB      "ler "
000494  74617453          DCB      "Stat"
000498  4c203a65          DCB      "e: L"
00049c  00000a50          DCB      "P\n\0\0"
                  |L1.1184|
0004a0  37394341          DCB      "AC97"
0004a4  6e6f4320          DCB      " Con"
0004a8  6c6f7274          DCB      "trol"
0004ac  2072656c          DCB      "ler "
0004b0  74617453          DCB      "Stat"
0004b4  57203a65          DCB      "e: W"
0004b8  0a6d7261          DCB      "arm\n"
0004bc  00000000          DCB      "\0\0\0\0"
                          ENDP

                  AC97_CodecExit_PCMOut PROC
;;;1068   void AC97_CodecExit_PCMOut(void)
;;;1069   {
0004c0  e92d4010          STMFD    sp!,{r4,lr}
;;;1070   	//DACs off
;;;1071   	Uart_Printf("\n\n=>DACs off PR1\n");
0004c4  e28f00b0          ADR      r0,|L1.1404|
0004c8  ebfffffe          BL       Uart_Printf
;;;1072   	AC97_Codec_Cmd(0,0x26,(1<<8)|(1<<9));
0004cc  e3a02fc0          MOV      r2,#0x300
0004d0  e3a01026          MOV      r1,#0x26
0004d4  e3a00000          MOV      r0,#0
0004d8  ebfffffe          BL       AC97_Codec_Cmd
;;;1073   	AC97_Controller_State();
0004dc  ebfffffe          BL       AC97_Controller_State
;;;1074   	Uart_Printf("AC97 Codec Powerdown Ctrl/Stat 0x26 Reg.: 0x%x\n", AC97_Codec_Cmd(1,0x26,0x0000));	
0004e0  e3a02000          MOV      r2,#0
0004e4  e3a01026          MOV      r1,#0x26
0004e8  e3a00001          MOV      r0,#1
0004ec  ebfffffe          BL       AC97_Codec_Cmd
0004f0  e1a04000          MOV      r4,r0
0004f4  e1a01000          MOV      r1,r0
0004f8  e28f0090          ADR      r0,|L1.1424|
0004fc  ebfffffe          BL       Uart_Printf
;;;1075   
;;;1076   	//Analog off
;;;1077   	Uart_Printf("\n=>Analog off PR2\n");
000500  e28f00b8          ADR      r0,|L1.1472|
000504  ebfffffe          BL       Uart_Printf
;;;1078   	AC97_Codec_Cmd(0,0x26,(1<<8)|(1<<9)|(1<<10));
000508  e3a02e70          MOV      r2,#0x700
00050c  e3a01026          MOV      r1,#0x26
000510  e3a00000          MOV      r0,#0
000514  ebfffffe          BL       AC97_Codec_Cmd
;;;1079   	AC97_Controller_State();
000518  ebfffffe          BL       AC97_Controller_State
;;;1080   	Uart_Printf("AC97 Codec Powerdown Ctrl/Stat 0x26 Reg.: 0x%x\n", AC97_Codec_Cmd(1,0x26,0x0000));	
00051c  e3a02000          MOV      r2,#0
000520  e3a01026          MOV      r1,#0x26
000524  e3a00001          MOV      r0,#1
000528  ebfffffe          BL       AC97_Codec_Cmd
00052c  e1a04000          MOV      r4,r0
000530  e1a01000          MOV      r1,r0
000534  e28f0054          ADR      r0,|L1.1424|
000538  ebfffffe          BL       Uart_Printf
;;;1081   
;;;1082   	//Digital I/F off
;;;1083   	Uart_Printf("\n=>Digital I/F off PR4\n");
00053c  e28f0090          ADR      r0,|L1.1492|
000540  ebfffffe          BL       Uart_Printf
;;;1084   	AC97_Codec_Cmd(0,0x26,(1<<8)|(1<<9)|(1<<10)|(1<<12));
000544  e3a02d5c          MOV      r2,#0x1700
000548  e3a01026          MOV      r1,#0x26
00054c  e3a00000          MOV      r0,#0
000550  ebfffffe          BL       AC97_Codec_Cmd
;;;1085   	AC97_Controller_State();
000554  ebfffffe          BL       AC97_Controller_State
;;;1086   	Uart_Printf("AC97 Codec Powerdown Ctrl/Stat 0x26 Reg.: 0x%x\n", AC97_Codec_Cmd(1,0x26,0x0000));	
000558  e3a02000          MOV      r2,#0
00055c  e3a01026          MOV      r1,#0x26
000560  e3a00001          MOV      r0,#1
000564  ebfffffe          BL       AC97_Codec_Cmd
000568  e1a04000          MOV      r4,r0
00056c  e1a01000          MOV      r1,r0
000570  e28f0018          ADR      r0,|L1.1424|
000574  ebfffffe          BL       Uart_Printf
;;;1087   
;;;1088   }
000578  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.1404|
00057c  3e3d0a0a          DCB      "\n\n=>"
000580  73434144          DCB      "DACs"
000584  66666f20          DCB      " off"
000588  31525020          DCB      " PR1"
00058c  0000000a          DCB      "\n\0\0\0"
                  |L1.1424|
000590  37394341          DCB      "AC97"
000594  646f4320          DCB      " Cod"
000598  50206365          DCB      "ec P"
00059c  7265776f          DCB      "ower"
0005a0  6e776f64          DCB      "down"
0005a4  72744320          DCB      " Ctr"
0005a8  74532f6c          DCB      "l/St"
0005ac  30207461          DCB      "at 0"

⌨️ 快捷键说明

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