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

📄 ac97.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000c24  e59f0114          LDR      r0,|L1.3392|
000c28  e5900000          LDR      r0,[r0,#0]  ; Rec_AC97_BUF
000c2c  e28000c0          ADD      r0,r0,#0xc0
000c30  e51f12e4          LDR      r1,|L1.2388|
000c34  e5810000          STR      r0,[r1,#0]  ; Play_AC97_BUF
;;;895    	End_AC97_BUF = (Rec_AC97_BUF + 0x30 + PCM_Size/4);
000c38  e1a00124          MOV      r0,r4,LSR #2
000c3c  e59f10fc          LDR      r1,|L1.3392|
000c40  e5911000          LDR      r1,[r1,#0]  ; Rec_AC97_BUF
000c44  e0810100          ADD      r0,r1,r0,LSL #2
000c48  e28000c0          ADD      r0,r0,#0xc0
000c4c  e59f10e4          LDR      r1,|L1.3384|
000c50  e5810000          STR      r0,[r1,#0]  ; End_AC97_BUF
;;;896    
;;;897    	//IRQ Initialization
;;;898    	pISR_AC97_NFLASH = (unsigned)Irq_AC97_PCMout;	
000c54  e59f00e8          LDR      r0,|L1.3396|
000c58  e51f131c          LDR      r1,|L1.2372|
000c5c  e5810f80          STR      r0,[r1,#0xf80]
;;;899    
;;;900    	Uart_Printf("\nConnect Head Phone into CON20 on SMDK24A0 and Press any key.\n");
000c60  e28f00e0          ADR      r0,|L1.3400|
000c64  ebfffffe          BL       _printf
;;;901    	Uart_Getch();
000c68  ebfffffe          BL       Uart_Getch
;;;902    	Uart_Printf("\nNow Play...\n");
000c6c  e24f0fc3          ADR      r0,|L1.2408|
000c70  ebfffffe          BL       _printf
;;;903    	Uart_Printf("Headphone Volume Register = 0x%x\n", Output_Volume);
000c74  e51f06d0          LDR      r0,|L1.1452|
000c78  e5901000          LDR      r1,[r0,#0]  ; Output_Volume
000c7c  e24f0f9c          ADR      r0,|L1.2580|
000c80  ebfffffe          BL       _printf
;;;904    
;;;905    	ClearPending(BIT_AC97_NFLASH);	
000c84  e3a00740          MOV      r0,#0x1000000
000c88  e51f1648          LDR      r1,|L1.1608|
000c8c  e5810000          STR      r0,[r1,#0]
000c90  e1c10000          BIC      r0,r1,r0
000c94  e5900010          LDR      r0,[r0,#0x10]
000c98  e5810010          STR      r0,[r1,#0x10]
000c9c  e1a00001          MOV      r0,r1
000ca0  e5900010          LDR      r0,[r0,#0x10]
;;;906    	rSUBSRCPND=(BIT_SUB_AC97);
000ca4  e3a00840          MOV      r0,#0x400000
000ca8  e1c11000          BIC      r1,r1,r0
000cac  e5810018          STR      r0,[r1,#0x18]
;;;907    
;;;908       	rINTMSK=~(BIT_AC97_NFLASH);			
000cb0  e3e00740          MVN      r0,#0x1000000
000cb4  e0011000          AND      r1,r1,r0
000cb8  e5810008          STR      r0,[r1,#8]
;;;909       	rINTSUBMSK=~(BIT_SUB_AC97);
000cbc  e3e00840          MVN      r0,#0x400000
000cc0  e0011000          AND      r1,r1,r0
000cc4  e581001c          STR      r0,[r1,#0x1c]
;;;910    
;;;911    	rAC_GLBCTRL = 0x4100C;	//PCM Out channel threshold INT enable, PIO Mode On
000cc8  e59f00b8          LDR      r0,|L1.3464|
000ccc  e3a01445          MOV      r1,#0x45000000
000cd0  e5810000          STR      r0,[r1,#0]
;;;912    
;;;913    	while(1)
000cd4  e1a00000          NOP      
                  |L1.3288|
000cd8  e1a00000          NOP      
;;;914    	{
;;;915    	       if(PCM_Out_INT_Exit == 1)
000cdc  e59f0058          LDR      r0,|L1.3388|
000ce0  e1d000f0          LDRSH    r0,[r0,#0]  ; PCM_Out_INT_Exit
000ce4  e3500001          CMP      r0,#1
000ce8  1a000000          BNE      |L1.3312|
;;;916    		break;	
000cec  ea000000          B        |L1.3316|
;;;917    	}
                  |L1.3312|
000cf0  eafffff8          B        |L1.3288|
;;;918    
;;;919    	rAC_GLBCTRL &= ~(1<<12); //PCM Out Transfer PIO Mode Off
                  |L1.3316|
000cf4  e3a00445          MOV      r0,#0x45000000
000cf8  e5900000          LDR      r0,[r0,#0]
000cfc  e3c00d40          BIC      r0,r0,#0x1000
000d00  e3a01445          MOV      r1,#0x45000000
000d04  e5810000          STR      r0,[r1,#0]
;;;920    		
;;;921    	rINTSUBMSK|=(BIT_SUB_NFLASH|BIT_SUB_AC97);
000d08  e241064e          SUB      r0,r1,#0x4e00000
000d0c  e590001c          LDR      r0,[r0,#0x1c]
000d10  e3800860          ORR      r0,r0,#0x600000
000d14  e241164e          SUB      r1,r1,#0x4e00000
000d18  e581001c          STR      r0,[r1,#0x1c]
;;;922    	rINTMSK|=(BIT_AC97_NFLASH);
000d1c  e1a00001          MOV      r0,r1
000d20  e5900008          LDR      r0,[r0,#8]
000d24  e3800740          ORR      r0,r0,#0x1000000
000d28  e5810008          STR      r0,[r1,#8]
;;;923    
;;;924    	Uart_Printf("\nEnd of Play!\n");
000d2c  e24f0f96          ADR      r0,|L1.2780|
000d30  ebfffffe          BL       _printf
;;;925    }
000d34  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.3384|
000d38  00000020          DCD      ||.bss$2|| + 32
                  |L1.3388|
000d3c  00000000          DCD      ||.bss$2||
                  |L1.3392|
000d40  00000018          DCD      ||.bss$2|| + 24
                  |L1.3396|
000d44  00000000          DCD      Irq_AC97_PCMout
                  |L1.3400|
000d48  6e6f430a          DCB      "\nCon"
000d4c  7463656e          DCB      "nect"
000d50  61654820          DCB      " Hea"
000d54  68502064          DCB      "d Ph"
000d58  20656e6f          DCB      "one "
000d5c  6f746e69          DCB      "into"
000d60  4e4f4320          DCB      " CON"
000d64  6f203032          DCB      "20 o"
000d68  4d53206e          DCB      "n SM"
000d6c  34324b44          DCB      "DK24"
000d70  61203041          DCB      "A0 a"
000d74  5020646e          DCB      "nd P"
000d78  73736572          DCB      "ress"
000d7c  796e6120          DCB      " any"
000d80  79656b20          DCB      " key"
000d84  00000a2e          DCB      ".\n\0\0"
                  |L1.3464|
000d88  0004100c          DCD      0x0004100c
                          ENDP

                  AC97_CodecInit_PCMOut PROC
;;;624    void AC97_CodecInit_PCMOut( U16 AC97_fs)
;;;625    {
000d8c  e92d4010          STMFD    sp!,{r4,lr}
000d90  e1a04000          MOV      r4,r0
;;;626    	
;;;627    	AC97_Codec_Cmd(0,0x00,0x683F);		//codec soft reset	
000d94  e59f2168          LDR      r2,|L1.3844|
000d98  e3a01000          MOV      r1,#0
000d9c  e3a00000          MOV      r0,#0
000da0  ebfffffe          BL       AC97_Codec_Cmd
;;;628    
;;;629    	AC97_Codec_Cmd(0,0x2A,0x0001);		//variable rate enable	
000da4  e3a02001          MOV      r2,#1
000da8  e3a0102a          MOV      r1,#0x2a
000dac  e3a00000          MOV      r0,#0
000db0  ebfffffe          BL       AC97_Codec_Cmd
;;;630    	//Uart_Printf("\nVRA Enable(1)/Disable(0): 0x%x\n", (0x1&AC97_Codec_Cmd(1,0x2A,0x0001)));
;;;631    	
;;;632    	if(AC97_fs==48000){
000db4  e244cc80          SUB      r12,r4,#0x8000
000db8  e25ccdee          SUBS     r12,r12,#0x3b80
000dbc  1a000004          BNE      |L1.3540|
;;;633    	//DAC Sampling frequency 48kHz
;;;634    	AC97_Codec_Cmd(0,0x2C,0xbb80);
000dc0  e59f2140          LDR      r2,|L1.3848|
000dc4  e3a0102c          MOV      r1,#0x2c
000dc8  e3a00000          MOV      r0,#0
000dcc  ebfffffe          BL       AC97_Codec_Cmd
000dd0  ea00000e          B        |L1.3600|
;;;635    	}
;;;636    	else if(AC97_fs==44100){
                  |L1.3540|
000dd4  e244ccac          SUB      r12,r4,#0xac00
000dd8  e25cc044          SUBS     r12,r12,#0x44
000ddc  1a000004          BNE      |L1.3572|
;;;637    	//DAC Sampling frequency 44.1kHz
;;;638    	AC97_Codec_Cmd(0,0x2C,0xac44);
000de0  e59f2124          LDR      r2,|L1.3852|
000de4  e3a0102c          MOV      r1,#0x2c
000de8  e3a00000          MOV      r0,#0
000dec  ebfffffe          BL       AC97_Codec_Cmd
000df0  ea000006          B        |L1.3600|
;;;639    	}
;;;640    	else if(AC97_fs==22050){
                  |L1.3572|
000df4  e244cc56          SUB      r12,r4,#0x5600
000df8  e25cc022          SUBS     r12,r12,#0x22
000dfc  1a000003          BNE      |L1.3600|
;;;641    	//DAC Sampling frequency 22.05kHz
;;;642    	AC97_Codec_Cmd(0,0x2C,0x5622);		
000e00  e59f2108          LDR      r2,|L1.3856|
000e04  e3a0102c          MOV      r1,#0x2c
000e08  e3a00000          MOV      r0,#0
000e0c  ebfffffe          BL       AC97_Codec_Cmd
;;;643    	}
;;;644    
;;;645    	AC97_Codec_Cmd(0,0x26, (1<<8));		// all power on except ADC blcok
                  |L1.3600|
000e10  e3a02f40          MOV      r2,#0x100
000e14  e3a01026          MOV      r1,#0x26
000e18  e3a00000          MOV      r0,#0
000e1c  ebfffffe          BL       AC97_Codec_Cmd
;;;646    	//Uart_Printf("AC97 Codec 0x26 Reg.: 0x%x\n\n", AC97_Codec_Cmd(1,0x26,0x0000));
;;;647    
;;;648    	AC97_Codec_Cmd(0,0x18,0x0000);		// PCM out volume on
000e20  e3a02000          MOV      r2,#0
000e24  e3a01018          MOV      r1,#0x18
000e28  e3a00000          MOV      r0,#0
000e2c  ebfffffe          BL       AC97_Codec_Cmd
;;;649    	AC97_Codec_Cmd(0,0x20,0x0000);		// general purpose
000e30  e3a02000          MOV      r2,#0
000e34  e3a01020          MOV      r1,#0x20
000e38  e3a00000          MOV      r0,#0
000e3c  ebfffffe          BL       AC97_Codec_Cmd
;;;650    	AC97_Codec_Cmd(0,0x04,0x1A1A);		// Aux out(HP out) volume on
000e40  e59f20cc          LDR      r2,|L1.3860|
000e44  e3a01004          MOV      r1,#4
000e48  e3a00000          MOV      r0,#0
000e4c  ebfffffe          BL       AC97_Codec_Cmd
;;;651    	
;;;652    	Output_Volume = AC97_Codec_Cmd(1,0x04,0x00000);	//HP out volume 	
000e50  e3a02000          MOV      r2,#0
000e54  e3a01004          MOV      r1,#4
000e58  e3a00001          MOV      r0,#1
000e5c  ebfffffe          BL       AC97_Codec_Cmd
000e60  e51f18bc          LDR      r1,|L1.1452|
000e64  e5810000          STR      r0,[r1,#0]  ; Output_Volume
;;;653    }
000e68  e8bd8010          LDMFD    sp!,{r4,pc}
                          ENDP

                  AC97_Codec_Ready PROC
;;;1244   void __irq AC97_Codec_Ready(void)
;;;1245   {
000e6c  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;1246   	if ( (rAC_GLBSTAT& 0x400000))
000e70  e3a00445          MOV      r0,#0x45000000
000e74  e5900004          LDR      r0,[r0,#4]
000e78  e3100840          TST      r0,#0x400000
000e7c  0a000009          BEQ      |L1.3752|
;;;1247   	{
;;;1248   		Codec_Ready_Irq=1;
000e80  e3a00001          MOV      r0,#1
000e84  e59f108c          LDR      r1,|L1.3864|
000e88  e5c10000          STRB     r0,[r1,#0]  ; Codec_Ready_Irq
;;;1249   		Uart_Printf("AC97 Codec Ready!\n");	
000e8c  e28f0088          ADR      r0,|L1.3868|
000e90  ebfffffe          BL       _printf
;;;1250   		rAC_GLBCTRL &= ~(0x400000);	// codec ready interrupt disable
000e94  e3a00445          MOV      r0,#0x45000000
000e98  e5900000          LDR      r0,[r0,#0]
000e9c  e3c00840          BIC      r0,r0,#0x400000
000ea0  e3a01445          MOV      r1,#0x45000000
000ea4  e5810000          STR      r0,[r1,#0]
;;;1251   	}
;;;1252   
;;;1253   	rSUBSRCPND=(BIT_SUB_AC97);
                  |L1.3752|
000ea8  e3a00840          MOV      r0,#0x400000
000eac  e51f186c          LDR      r1,|L1.1608|
000eb0  e5810018          STR      r0,[r1,#0x18]
;;;1254   	rSUBSRCPND;	
000eb4  e1c10000          BIC      r0,r1,r0
000eb8  e5900018          LDR      r0,[r0,#0x18]
;;;1255   	ClearPending(BIT_AC97_NFLASH);
000ebc  e3a00740          MOV      r0,#0x1000000
000ec0  e1c11000          BIC      r1,r1,r0
000ec4  e5810000          STR      r0,[r1,#0]
000ec8  e1c10000          BIC      r0,r1,r0
000ecc  e5900010          LDR      r0,[r0,#0x10]
000ed0  e5810010          STR      r0,[r1,#0x10]
000ed4  e1a00001          MOV      r0,r1
000ed8  e5900010          LDR      r0,[r0,#0x10]
;;;1256   
;;;1257   	rINTSUBMSK &= ~(BIT_SUB_AC97);
000edc  e1a00001          MOV      r0,r1
000ee0  e590001c          LDR      r0,[r0,#0x1c]
000ee4  e3c00840          BIC      r0,r0,#0x400000
000ee8  e581001c          STR      r0,[r1,#0x1c]
;;;1258   	rINTMSK &=~(BIT_AC97_NFLASH);
000eec  e1a00001          MOV      r0,r1
000ef0  e5900008          LDR      r0,[r0,#8]
000ef4  e3c00740          BIC      r0,r0,#0x1000000
000ef8  e5810008          STR      r0,[r1,#8]
;;;1259   }
000efc  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
000f00  e25ef004          SUBS     pc,lr,#4
                  |L1.3844|
000f04  0000683f          DCD      0x0000683f
                  |L1.3848|
000f08  0000bb80          DCD      0x0000bb80
                  |L1.3852|
000f0c  0000ac44          DCD      0x0000ac44
                  |L1.3856|
000f10  00005622          DCD      0x00005622
                  |L1.3860|
000f14  00001a1a          DCD      0x00001a1a
                  |L1.3864|
000f18  0000002d          DCD      ||.bss$2|| + 45
                  |L1.3868|
000f1c  37394341          DCB      "AC97"
000f20  646f4320          DCB      " Cod"
000f24  52206365          DCB      "ec R"
000f28  79646165          DCB      "eady"
000f2c  00000a21          DCB      "!\n\0\0"
                          ENDP

                  AC97_Init PROC
;;;520    void AC97_Init(void)
;;;521    {
000f30  e92d4010          STMFD    sp!,{r4,lr}
;;;522    	int i=0;
000f34  e3a04000        

⌨️ 快捷键说明

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