Root/
1 | /* Hewlett-Packard Harmony audio driver |
2 | * Copyright (C) 2004, Kyle McMartin <kyle@parisc-linux.org> |
3 | */ |
4 | |
5 | #ifndef __HARMONY_H__ |
6 | #define __HARMONY_H__ |
7 | |
8 | struct harmony_buffer { |
9 | unsigned long addr; |
10 | int buf; |
11 | int count; |
12 | int size; |
13 | int coherent; |
14 | }; |
15 | |
16 | struct snd_harmony { |
17 | int irq; |
18 | |
19 | unsigned long hpa; /* hard physical address */ |
20 | void __iomem *iobase; /* remapped io address */ |
21 | |
22 | struct parisc_device *dev; |
23 | |
24 | struct { |
25 | u32 gain; |
26 | u32 rate; |
27 | u32 format; |
28 | u32 stereo; |
29 | int playing; |
30 | int capturing; |
31 | } st; |
32 | |
33 | struct snd_dma_device dma; /* playback/capture */ |
34 | struct harmony_buffer pbuf; |
35 | struct harmony_buffer cbuf; |
36 | |
37 | struct snd_dma_buffer gdma; /* graveyard */ |
38 | struct snd_dma_buffer sdma; /* silence */ |
39 | |
40 | struct { |
41 | unsigned long play_intr; |
42 | unsigned long rec_intr; |
43 | unsigned long graveyard_intr; |
44 | unsigned long silence_intr; |
45 | } stats; |
46 | |
47 | struct snd_pcm *pcm; |
48 | struct snd_card *card; |
49 | struct snd_pcm_substream *psubs; |
50 | struct snd_pcm_substream *csubs; |
51 | struct snd_info_entry *proc; |
52 | |
53 | spinlock_t lock; |
54 | spinlock_t mixer_lock; |
55 | }; |
56 | |
57 | #define MAX_PCM_DEVICES 1 |
58 | #define MAX_PCM_SUBSTREAMS 4 |
59 | #define MAX_MIDI_DEVICES 0 |
60 | |
61 | #define HARMONY_SIZE 64 |
62 | |
63 | #define BUF_SIZE PAGE_SIZE |
64 | #define MAX_BUFS 16 |
65 | #define MAX_BUF_SIZE (MAX_BUFS * BUF_SIZE) |
66 | |
67 | #define PLAYBACK_BUFS MAX_BUFS |
68 | #define RECORD_BUFS MAX_BUFS |
69 | #define GRAVEYARD_BUFS 1 |
70 | #define GRAVEYARD_BUFSZ (GRAVEYARD_BUFS*BUF_SIZE) |
71 | #define SILENCE_BUFS 1 |
72 | #define SILENCE_BUFSZ (SILENCE_BUFS*BUF_SIZE) |
73 | |
74 | #define HARMONY_ID 0x000 |
75 | #define HARMONY_RESET 0x004 |
76 | #define HARMONY_CNTL 0x008 |
77 | #define HARMONY_GAINCTL 0x00c |
78 | #define HARMONY_PNXTADD 0x010 |
79 | #define HARMONY_PCURADD 0x014 |
80 | #define HARMONY_RNXTADD 0x018 |
81 | #define HARMONY_RCURADD 0x01c |
82 | #define HARMONY_DSTATUS 0x020 |
83 | #define HARMONY_OV 0x024 |
84 | #define HARMONY_PIO 0x028 |
85 | #define HARMONY_DIAG 0x03c |
86 | |
87 | #define HARMONY_CNTL_C 0x80000000 |
88 | #define HARMONY_CNTL_ST 0x00000020 |
89 | #define HARMONY_CNTL_44100 0x00000015 /* HARMONY_SR_44KHZ */ |
90 | #define HARMONY_CNTL_8000 0x00000008 /* HARMONY_SR_8KHZ */ |
91 | |
92 | #define HARMONY_DSTATUS_ID 0x00000000 /* interrupts off */ |
93 | #define HARMONY_DSTATUS_PN 0x00000200 /* playback fill */ |
94 | #define HARMONY_DSTATUS_RN 0x00000002 /* record fill */ |
95 | #define HARMONY_DSTATUS_IE 0x80000000 /* interrupts on */ |
96 | |
97 | #define HARMONY_DF_16BIT_LINEAR 0x00000000 |
98 | #define HARMONY_DF_8BIT_ULAW 0x00000001 |
99 | #define HARMONY_DF_8BIT_ALAW 0x00000002 |
100 | |
101 | #define HARMONY_SS_MONO 0x00000000 |
102 | #define HARMONY_SS_STEREO 0x00000001 |
103 | |
104 | #define HARMONY_GAIN_SILENCE 0x01F00FFF |
105 | #define HARMONY_GAIN_DEFAULT 0x01F00FFF |
106 | |
107 | #define HARMONY_GAIN_HE_SHIFT 27 /* headphones enabled */ |
108 | #define HARMONY_GAIN_HE_MASK (1 << HARMONY_GAIN_HE_SHIFT) |
109 | #define HARMONY_GAIN_LE_SHIFT 26 /* line-out enabled */ |
110 | #define HARMONY_GAIN_LE_MASK (1 << HARMONY_GAIN_LE_SHIFT) |
111 | #define HARMONY_GAIN_SE_SHIFT 25 /* internal-speaker enabled */ |
112 | #define HARMONY_GAIN_SE_MASK (1 << HARMONY_GAIN_SE_SHIFT) |
113 | #define HARMONY_GAIN_IS_SHIFT 24 /* input select - 0 for line, 1 for mic */ |
114 | #define HARMONY_GAIN_IS_MASK (1 << HARMONY_GAIN_IS_SHIFT) |
115 | |
116 | /* monitor attenuation */ |
117 | #define HARMONY_GAIN_MA 0x0f |
118 | #define HARMONY_GAIN_MA_SHIFT 20 |
119 | #define HARMONY_GAIN_MA_MASK (HARMONY_GAIN_MA << HARMONY_GAIN_MA_SHIFT) |
120 | |
121 | /* input gain */ |
122 | #define HARMONY_GAIN_IN 0x0f |
123 | #define HARMONY_GAIN_LI_SHIFT 16 |
124 | #define HARMONY_GAIN_LI_MASK (HARMONY_GAIN_IN << HARMONY_GAIN_LI_SHIFT) |
125 | #define HARMONY_GAIN_RI_SHIFT 12 |
126 | #define HARMONY_GAIN_RI_MASK (HARMONY_GAIN_IN << HARMONY_GAIN_RI_SHIFT) |
127 | |
128 | /* output gain (master volume) */ |
129 | #define HARMONY_GAIN_OUT 0x3f |
130 | #define HARMONY_GAIN_LO_SHIFT 6 |
131 | #define HARMONY_GAIN_LO_MASK (HARMONY_GAIN_OUT << HARMONY_GAIN_LO_SHIFT) |
132 | #define HARMONY_GAIN_RO_SHIFT 0 |
133 | #define HARMONY_GAIN_RO_MASK (HARMONY_GAIN_OUT << HARMONY_GAIN_RO_SHIFT) |
134 | |
135 | #define HARMONY_MAX_OUT (HARMONY_GAIN_RO_MASK >> HARMONY_GAIN_RO_SHIFT) |
136 | #define HARMONY_MAX_IN (HARMONY_GAIN_RI_MASK >> HARMONY_GAIN_RI_SHIFT) |
137 | #define HARMONY_MAX_MON (HARMONY_GAIN_MA_MASK >> HARMONY_GAIN_MA_SHIFT) |
138 | |
139 | #define HARMONY_SR_8KHZ 0x08 |
140 | #define HARMONY_SR_16KHZ 0x09 |
141 | #define HARMONY_SR_27KHZ 0x0A |
142 | #define HARMONY_SR_32KHZ 0x0B |
143 | #define HARMONY_SR_48KHZ 0x0E |
144 | #define HARMONY_SR_9KHZ 0x0F |
145 | #define HARMONY_SR_5KHZ 0x10 |
146 | #define HARMONY_SR_11KHZ 0x11 |
147 | #define HARMONY_SR_18KHZ 0x12 |
148 | #define HARMONY_SR_22KHZ 0x13 |
149 | #define HARMONY_SR_37KHZ 0x14 |
150 | #define HARMONY_SR_44KHZ 0x15 |
151 | #define HARMONY_SR_33KHZ 0x16 |
152 | #define HARMONY_SR_6KHZ 0x17 |
153 | |
154 | #endif /* __HARMONY_H__ */ |
155 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9