| plan 9 kernel history: overview | file list | diff list |
1999/1005/port/devaudio.c (diff list | history)
| 1999/0504/sys/src/9/port/devaudio.c:18,23 – 1999/1005/sys/src/9/port/devaudio.c:18,24 (short | long | prev | next) | ||
| 1995/0119 | Qdir = 0, Qaudio, Qvolume, | |
| 1999/1005 | Qstatus, | |
| 1995/0119 | Fmono = 1, | |
| 1995/0221 | Fin = 2, | |
| 1999/0504/sys/src/9/port/devaudio.c:47,52 – 1999/1005/sys/src/9/port/devaudio.c:48,54 | ||
| 1995/0119 | { "audio", {Qaudio}, 0, 0666, "volume", {Qvolume}, 0, 0666, | |
| 1999/1005 | "audiostat",{Qstatus}, 0, 0444, | |
| 1995/0119 | }; struct Buf | |
| 1999/0504/sys/src/9/port/devaudio.c:76,81 – 1999/1005/sys/src/9/port/devaudio.c:78,85 | ||
| 1995/0221 | int lovol[Nvol]; | |
| 1995/0119 | int major; /* SB16 major version number (sb 4) */ int minor; /* SB16 minor version number */ | |
| 1999/1005 | ulong totcount; /* how many bytes processed since open */ vlong tottime; /* time at which totcount bytes were processed */ | |
| 1995/0119 | Buf buf[Nbuf]; /* buffers and queues */ | |
| 1995/0217 | AQueue empty; | |
| 1999/0504/sys/src/9/port/devaudio.c:399,404 – 1999/1005/sys/src/9/port/devaudio.c:403,409 | ||
| 1995/0119 | sbcmd(count>>8); audio.active = 1; | |
| 1999/1005 | audio.tottime = todget(nil); | |
| 1995/0119 | contindma(); | |
| 1995/0214 | iunlock(&blaster); | |
| 1995/0119 | } | |
| 1999/0504/sys/src/9/port/devaudio.c:490,495 – 1999/1005/sys/src/9/port/devaudio.c:495,501 | ||
| 1998/0317 | ess1688w(0xB8, x|0x05); audio.active = 1; | |
| 1999/1005 | audio.tottime = todget(nil); | |
| 1998/0317 | contindma(); iunlock(&blaster); } | |
| 1999/0504/sys/src/9/port/devaudio.c:516,521 – 1999/1005/sys/src/9/port/devaudio.c:522,529 | ||
| 1995/0119 | if(stat & 2) { | |
| 1995/0214 | ilock(&blaster); dummy = inb(blaster.clri16); | |
| 1999/1005 | audio.totcount += Bufsize; audio.tottime = todget(nil); | |
| 1995/0119 | contindma(); | |
| 1995/0214 | iunlock(&blaster); | |
| 1995/0119 | audio.intr = 1; | |
| 1999/0504/sys/src/9/port/devaudio.c:538,543 – 1999/1005/sys/src/9/port/devaudio.c:546,553 | ||
| 1998/0317 | if(audio.active){ ilock(&blaster); | |
| 1999/1005 | audio.totcount += Bufsize; audio.tottime = todget(nil); | |
| 1998/0317 | contindma(); dummy = inb(blaster.clri8); iunlock(&blaster); | |
| 1999/0504/sys/src/9/port/devaudio.c:625,630 – 1999/1005/sys/src/9/port/devaudio.c:635,642 | ||
| 1995/0119 | audio.filling = 0; for(i=0; i<Nbuf; i++) putbuf(&audio.empty, &audio.buf[i]); | |
| 1999/1005 | audio.totcount = 0; audio.tottime = 0LL; | |
| 1995/0214 | iunlock(&blaster); | |
| 1995/0119 | } | |
| 1999/0504/sys/src/9/port/devaudio.c:707,713 – 1999/1005/sys/src/9/port/devaudio.c:719,726 | ||
| 1995/0119 | audioinit(void) { | |
| 1995/0214 | ISAConf sbconf; | |
| 1995/0119 |
| |
| 1999/1005 | int i, x; static int irq[] = {2,5,7,10}; | |
| 1995/0119 | ||
| 1995/0214 | sbconf.port = 0x220; | |
| 1996/1025 | sbconf.dma = Dma; | |
| 1999/0504/sys/src/9/port/devaudio.c:752,760 – 1999/1005/sys/src/9/port/devaudio.c:765,770 | ||
| 1998/0317 | blaster.startdma = sb16startdma; blaster.intr = sb16intr; | |
| 1996/1024 |
| |
| 1995/0214 |
| |
| 1995/0119 | ||
| 1995/0214 | audio.amode = Aclosed; | |
| 1995/0119 | resetlevel(); | |
| 1999/0504/sys/src/9/port/devaudio.c:789,795 – 1999/1005/sys/src/9/port/devaudio.c:799,811 | ||
| 1995/0119 | mxvolume(); /* | |
| 1999/1005 | * Attempt to set IRQ/DMA channels. * On old ISA boards, these registers are writable. * On Plug-n-Play boards, these are read-only. * * To accomodate both, we write to the registers, * but then use the contents in case the write is * disallowed. | |
| 1995/0119 | */ mxcmd(0x80, /* irq */ | |
| 1995/0214 | (sbconf.irq==2)? 1: | |
| 1999/0504/sys/src/9/port/devaudio.c:798,803 – 1999/1005/sys/src/9/port/devaudio.c:814,836 | ||
| 1995/0214 | (sbconf.irq==10)? 8: | |
| 1995/0119 | 0); | |
| 1996/1024 | mxcmd(0x81, 1<<blaster.dma); /* dma */ | |
| 1999/1005 | x = mxread(0x81); for(i=5; i<=7; i++) if(x & (1<<i)){ blaster.dma = i; break; } x = mxread(0x80); for(i=0; i<=3; i++) if(x & (1<<i)){ sbconf.irq = irq[i]; break; } seteisadma(blaster.dma, audiodmaintr); setvec(Int0vec+sbconf.irq, pcaudiosbintr, 0); | |
| 1995/0119 | } | |
| 1997/0327 | static Chan* | |
| 1999/0504/sys/src/9/port/devaudio.c:831,836 – 1999/1005/sys/src/9/port/devaudio.c:864,872 | ||
| 1995/0119 | error(Eperm); break; | |
| 1999/1005 | case Qstatus: if((omode&7) != OREAD) error(Eperm); | |
| 1995/0119 | case Qvolume: case Qdir: break; | |
| 1999/0504/sys/src/9/port/devaudio.c:875,880 – 1999/1005/sys/src/9/port/devaudio.c:911,917 | ||
| 1995/0119 | case Qdir: case Qvolume: | |
| 1999/1005 | case Qstatus: | |
| 1995/0119 | break; case Qaudio: | |
| 1999/0504/sys/src/9/port/devaudio.c:965,970 – 1999/1005/sys/src/9/port/devaudio.c:1002,1013 | ||
| 1995/0214 | qunlock(&audio); | |
| 1995/0119 | break; | |
| 1999/1005 | case Qstatus: buf[0] = 0; snprint(buf, sizeof(buf), "bytes %lud\ntime %lld\n", audio.totcount, audio.tottime); return readstr(offset, a, n, buf); | |
| 1995/0119 | case Qvolume: j = 0; | |
| 1995/0221 | buf[0] = 0; | |
| 1999/0504/sys/src/9/port/devaudio.c:1004,1010 – 1999/1005/sys/src/9/port/devaudio.c:1047,1052 | ||
| 1995/0119 | } | |
| 1995/0221 | j += snprint(buf+j, sizeof(buf)-j, "\n"); | |
| 1995/0119 | } | |