| plan 9 kernel history: overview | file list | diff list |
1996/1024/port/devaudio.c (diff list | history)
| 1996/0315/sys/src/9/port/devaudio.c:121,131 – 1996/1024/sys/src/9/port/devaudio.c:121,132 (short | long | prev | next) | ||
| 1995/0214 | int clri8; int clri16; int clri401; | |
| 1996/1024 | int dma; | |
| 1995/0214 | } blaster; | |
| 1995/0119 | static void swab(uchar*); | |
| 1995/0214 |
| |
| 1996/1024 | static char Emajor[] = "soundblaster not responding/wrong version"; | |
| 1995/0119 | static char Emode[] = "illegal open mode"; static char Evolume[] = "illegal volume specifier"; | |
| 1996/0315/sys/src/9/port/devaudio.c:334,344 – 1996/1024/sys/src/9/port/devaudio.c:335,345 | ||
| 1995/0119 | if(b == 0) goto shutdown; | |
| 1995/0214 |
| |
| 1996/1024 | dmasetup(blaster.dma, b->virt, Bufsize, audio.amode == Aread); | |
| 1995/0119 | return; shutdown: | |
| 1995/0214 |
| |
| 1996/1024 | dmaend(blaster.dma); | |
| 1995/0119 | sbcmd(0xd9); /* exit at end of count */ sbcmd(0xd5); /* pause */ audio.curcount = 0; | |
| 1996/0315/sys/src/9/port/devaudio.c:356,362 – 1996/1024/sys/src/9/port/devaudio.c:357,363 | ||
| 1995/0221 | int speed; | |
| 1995/0119 | ||
| 1995/0214 | ilock(&blaster); | |
| 1996/1024 | dmaend(blaster.dma); | |
| 1995/0221 | if(audio.amode == Aread) { | |
| 1995/0119 | sbcmd(0x42); /* input sampling rate */ | |
| 1995/0221 | speed = audio.livol[Vspeed]; | |
| 1996/0315/sys/src/9/port/devaudio.c:511,516 – 1996/1024/sys/src/9/port/devaudio.c:512,518 | ||
| 1995/0119 | int i; | |
| 1995/0214 | sbconf.port = 0x220; | |
| 1996/1024 | sbconf.dma = 5; | |
| 1995/0214 | sbconf.irq = 7; if(isaconfig("audio", 0, &sbconf) == 0) return; | |
| 1996/0315/sys/src/9/port/devaudio.c:523,529 – 1996/1024/sys/src/9/port/devaudio.c:525,531 | ||
| 1995/0214 | case 0x280: break; default: | |
| 1996/1024 | print("devaudio: bad sb16 port 0x%x\n", sbconf.port); | |
| 1995/0214 | return; } switch(sbconf.irq){ | |
| 1996/0315/sys/src/9/port/devaudio.c:533,542 – 1996/1024/sys/src/9/port/devaudio.c:535,546 | ||
| 1995/0214 | case 10: break; default: | |
| 1996/1024 | print("devaudio: bad sb16 irq %d\n", sbconf.irq); | |
| 1995/0214 | return; } | |
| 1996/1024 | blaster.dma = sbconf.dma; | |
| 1995/0214 | blaster.reset = sbconf.port + 0x6; blaster.read = sbconf.port + 0xa; blaster.write = sbconf.port + 0xc; | |
| 1996/0315/sys/src/9/port/devaudio.c:548,554 – 1996/1024/sys/src/9/port/devaudio.c:552,558 | ||
| 1995/0214 | blaster.clri16 = sbconf.port + 0xf; blaster.clri401 = sbconf.port + 0x100; | |
| 1995/0119 |
| |
| 1996/1024 | seteisadma(blaster.dma, audiodmaintr); | |
| 1995/0214 | setvec(Int0vec+sbconf.irq, pcaudiosbintr, 0); | |
| 1995/0119 | ||
| 1995/0214 | audio.amode = Aclosed; | |
| 1996/0315/sys/src/9/port/devaudio.c:570,576 – 1996/1024/sys/src/9/port/devaudio.c:574,580 | ||
| 1995/0119 | audio.minor = sbread(); if(audio.major != 4) { | |
| 1996/1024 | print("bad soundblaster model #%.2x #%.2x; not SB 16\n", audio.major, audio.minor); | |
| 1995/0119 | return; } /* | |
| 1996/0315/sys/src/9/port/devaudio.c:588,594 – 1996/1024/sys/src/9/port/devaudio.c:592,598 | ||
| 1995/0214 | (sbconf.irq==7)? 4: (sbconf.irq==10)? 8: | |
| 1995/0119 | 0); | |
| 1996/1024 | mxcmd(0x81, 1<<blaster.dma); /* dma */ | |
| 1995/0119 | } Chan* | |