:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / drivers / dd / sound / mixer.c
1 /*
2  * COPYRIGHT:        See COPYING in the top level directory
3  * PROJECT:          ReactOS kernel
4  * FILE:             drivers/dd/sound/mixer.c
5  * PURPOSE:          Wave Mixer?
6  * PROGRAMMER:       ?
7  *     
8  * UPDATE HISTORY: 
9  *              ??/??/??: Created
10  *              10/23/02: Steven Edwards (Steven_Ed4153@yahoo.com)
11  *                        Minor build fixes             
12  */
13
14 #include "dsp.h"
15 #include "sb16.h"
16 #include "mixer.h"
17
18 unsigned char read_mixer(unsigned short base,unsigned char reg)
19 {
20
21         outb(base+0x04,reg);
22         return inb(base+0x05);
23 }
24
25 unsigned char get_irq(SB16* sb16)
26 {
27         unsigned char irq;
28         irq=(read_mixer(sb16->base,MIXER_INTERRUPT_SETUP_REGISTER)&0x0f);
29
30         if(irq==1) sb16->irq=2;
31         if(irq==2) sb16->irq=5;
32         if(irq==4) sb16->irq=7;
33         if(irq==8) sb16->irq=10;
34         return 0;
35 }
36
37 void get_dma(SB16* sb16)
38 {
39         unsigned char hi,lo,result=read_mixer(sb16->base,MIXER_DMA_SETUP_REGISTER);
40   hi=result&0xE0;
41   lo=result&0x0B;
42   if(hi==0x80) sb16->dma16=7;
43   if(hi==0x40) sb16->dma16=6;
44   if(hi==0x20) sb16->dma16=5;
45   
46   if(lo==0x08) sb16->dma8=3;
47   if(lo==0x02) sb16->dma8=1;
48   if(lo==0x01) sb16->dma8=0;
49 }