aboutsummaryrefslogtreecommitdiffstats
path: root/sound/oss/aci.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-16 18:20:36 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-16 18:20:36 -0400
commit1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch)
tree0bba044c4ce775e45a88a51686b5d9f90697ea9d /sound/oss/aci.h
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
Diffstat (limited to 'sound/oss/aci.h')
-rw-r--r--sound/oss/aci.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/sound/oss/aci.h b/sound/oss/aci.h
new file mode 100644
index 000000000000..20102ee088eb
--- /dev/null
+++ b/sound/oss/aci.h
@@ -0,0 +1,57 @@
1#ifndef _ACI_H_
2#define _ACI_H_
3
4extern int aci_port;
5extern int aci_version; /* ACI firmware version */
6extern int aci_rw_cmd(int write1, int write2, int write3);
7
8#define aci_indexed_cmd(a, b) aci_rw_cmd(a, b, -1)
9#define aci_write_cmd(a, b) aci_rw_cmd(a, b, -1)
10#define aci_read_cmd(a) aci_rw_cmd(a,-1, -1)
11
12#define COMMAND_REGISTER (aci_port) /* write register */
13#define STATUS_REGISTER (aci_port + 1) /* read register */
14#define BUSY_REGISTER (aci_port + 2) /* also used for rds */
15
16#define RDS_REGISTER BUSY_REGISTER
17
18#define ACI_SET_MUTE 0x0d
19#define ACI_SET_POWERAMP 0x0f
20#define ACI_SET_TUNERMUTE 0xa3
21#define ACI_SET_TUNERMONO 0xa4
22#define ACI_SET_IDE 0xd0
23#define ACI_SET_WSS 0xd1
24#define ACI_SET_SOLOMODE 0xd2
25#define ACI_WRITE_IGAIN 0x03
26#define ACI_WRITE_TUNE 0xa7
27#define ACI_READ_TUNERSTEREO 0xa8
28#define ACI_READ_TUNERSTATION 0xa9
29#define ACI_READ_VERSION 0xf1
30#define ACI_READ_IDCODE 0xf2
31#define ACI_INIT 0xff
32#define ACI_STATUS 0xf0
33#define ACI_S_GENERAL 0x00
34#define ACI_S_READ_IGAIN 0x21
35#define ACI_ERROR_OP 0xdf
36
37/*
38 * The following macro SCALE can be used to scale one integer volume
39 * value into another one using only integer arithmetic. If the input
40 * value x is in the range 0 <= x <= xmax, then the result will be in
41 * the range 0 <= SCALE(xmax,ymax,x) <= ymax.
42 *
43 * This macro has for all xmax, ymax > 0 and all 0 <= x <= xmax the
44 * following nice properties:
45 *
46 * - SCALE(xmax,ymax,xmax) = ymax
47 * - SCALE(xmax,ymax,0) = 0
48 * - SCALE(xmax,ymax,SCALE(ymax,xmax,SCALE(xmax,ymax,x))) = SCALE(xmax,ymax,x)
49 *
50 * In addition, the rounding error is minimal and nicely distributed.
51 * The proofs are left as an exercise to the reader.
52 */
53
54#define SCALE(xmax,ymax,x) (((x)*(ymax)+(xmax)/2)/(xmax))
55
56
57#endif /* _ACI_H_ */