]> git.lizzy.rs Git - plan9front.git/blob - sys/src/9/port/audioif.h
aoe: updating aoe driver from erik quanstros 9atom
[plan9front.git] / sys / src / 9 / port / audioif.h
1 typedef struct Audio Audio;
2 typedef struct Volume Volume;
3
4 struct Audio
5 {
6         char *name;
7
8         void *ctlr;
9         void *mixer;
10
11         Ref audioopenr;
12         Ref audioopenw;
13
14         long (*read)(Audio *, void *, long, vlong);
15         long (*write)(Audio *, void *, long, vlong);
16         void (*close)(Audio *, int);
17
18         long (*volread)(Audio *, void *, long, vlong);
19         long (*volwrite)(Audio *, void *, long, vlong);
20
21         long (*ctl)(Audio *, void *, long, vlong);
22         long (*status)(Audio *, void *, long, vlong);
23         long (*buffered)(Audio *);
24
25         int delay;
26         int speed;
27
28         int ctlrno;
29         Audio *next;
30 };
31
32 enum {
33         Left,
34         Right,
35         Stereo,
36         Absolute,
37 };
38
39 #define Mono Left
40
41 struct Volume
42 {
43         char *name;
44         int reg;
45         int range;
46         int type;
47         int cap;
48 };
49
50 extern void addaudiocard(char *, int (*)(Audio *));
51 extern long genaudiovolread(Audio *adev, void *a, long n, vlong off,
52         Volume *vol, int (*volget)(Audio *, int, int *),
53         ulong caps);
54 extern long genaudiovolwrite(Audio *adev, void *a, long n, vlong off,
55         Volume *vol, int (*volset)(Audio *, int, int *),
56         ulong caps);