diff options
Diffstat (limited to 'sound/pci/pcxhr/pcxhr.h')
-rw-r--r-- | sound/pci/pcxhr/pcxhr.h | 76 |
1 files changed, 51 insertions, 25 deletions
diff --git a/sound/pci/pcxhr/pcxhr.h b/sound/pci/pcxhr/pcxhr.h index 652064787a55..84131a916c92 100644 --- a/sound/pci/pcxhr/pcxhr.h +++ b/sound/pci/pcxhr/pcxhr.h | |||
@@ -27,15 +27,18 @@ | |||
27 | #include <linux/mutex.h> | 27 | #include <linux/mutex.h> |
28 | #include <sound/pcm.h> | 28 | #include <sound/pcm.h> |
29 | 29 | ||
30 | #define PCXHR_DRIVER_VERSION 0x000804 /* 0.8.4 */ | 30 | #define PCXHR_DRIVER_VERSION 0x000905 /* 0.9.5 */ |
31 | #define PCXHR_DRIVER_VERSION_STRING "0.8.4" /* 0.8.4 */ | 31 | #define PCXHR_DRIVER_VERSION_STRING "0.9.5" /* 0.9.5 */ |
32 | 32 | ||
33 | 33 | ||
34 | #define PCXHR_MAX_CARDS 6 | 34 | #define PCXHR_MAX_CARDS 6 |
35 | #define PCXHR_PLAYBACK_STREAMS 4 | 35 | #define PCXHR_PLAYBACK_STREAMS 4 |
36 | 36 | ||
37 | #define PCXHR_GRANULARITY 96 /* transfer granularity (should be min 96 and multiple of 48) */ | 37 | #define PCXHR_GRANULARITY 96 /* min 96 and multiple of 48 */ |
38 | #define PCXHR_GRANULARITY_MIN 96 /* transfer granularity of pipes and the dsp time (MBOX4) */ | 38 | /* transfer granularity of pipes and the dsp time (MBOX4) */ |
39 | #define PCXHR_GRANULARITY_MIN 96 | ||
40 | /* TODO : granularity could be 64 or 128 */ | ||
41 | #define PCXHR_GRANULARITY_HR22 192 /* granularity for stereo cards */ | ||
39 | 42 | ||
40 | struct snd_pcxhr; | 43 | struct snd_pcxhr; |
41 | struct pcxhr_mgr; | 44 | struct pcxhr_mgr; |
@@ -51,6 +54,11 @@ enum pcxhr_clock_type { | |||
51 | PCXHR_CLOCK_TYPE_AES_2, | 54 | PCXHR_CLOCK_TYPE_AES_2, |
52 | PCXHR_CLOCK_TYPE_AES_3, | 55 | PCXHR_CLOCK_TYPE_AES_3, |
53 | PCXHR_CLOCK_TYPE_AES_4, | 56 | PCXHR_CLOCK_TYPE_AES_4, |
57 | PCXHR_CLOCK_TYPE_MAX = PCXHR_CLOCK_TYPE_AES_4, | ||
58 | HR22_CLOCK_TYPE_INTERNAL = PCXHR_CLOCK_TYPE_INTERNAL, | ||
59 | HR22_CLOCK_TYPE_AES_SYNC, | ||
60 | HR22_CLOCK_TYPE_AES_1, | ||
61 | HR22_CLOCK_TYPE_MAX = HR22_CLOCK_TYPE_AES_1, | ||
54 | }; | 62 | }; |
55 | 63 | ||
56 | struct pcxhr_mgr { | 64 | struct pcxhr_mgr { |
@@ -61,6 +69,8 @@ struct pcxhr_mgr { | |||
61 | 69 | ||
62 | int irq; | 70 | int irq; |
63 | 71 | ||
72 | int granularity; | ||
73 | |||
64 | /* card access with 1 mem bar and 2 io bar's */ | 74 | /* card access with 1 mem bar and 2 io bar's */ |
65 | unsigned long port[3]; | 75 | unsigned long port[3]; |
66 | 76 | ||
@@ -83,11 +93,16 @@ struct pcxhr_mgr { | |||
83 | /* hardware interface */ | 93 | /* hardware interface */ |
84 | unsigned int dsp_loaded; /* bit flags of loaded dsp indices */ | 94 | unsigned int dsp_loaded; /* bit flags of loaded dsp indices */ |
85 | unsigned int dsp_version; /* read from embedded once firmware is loaded */ | 95 | unsigned int dsp_version; /* read from embedded once firmware is loaded */ |
86 | int board_has_analog; /* if 0 the board is digital only */ | 96 | int playback_chips; |
87 | int mono_capture; /* if 1 the board does mono capture */ | 97 | int capture_chips; |
88 | int playback_chips; /* 4 or 6 */ | 98 | int fw_file_set; |
89 | int capture_chips; /* 4 or 1 */ | 99 | int firmware_num; |
90 | int firmware_num; /* 41 or 42 */ | 100 | int is_hr_stereo:1; |
101 | int board_has_aes1:1; /* if 1 board has AES1 plug and SRC */ | ||
102 | int board_has_analog:1; /* if 0 the board is digital only */ | ||
103 | int board_has_mic:1; /* if 1 the board has microphone input */ | ||
104 | int board_aes_in_192k:1;/* if 1 the aes input plugs do support 192kHz */ | ||
105 | int mono_capture:1; /* if 1 the board does mono capture */ | ||
91 | 106 | ||
92 | struct snd_dma_buffer hostport; | 107 | struct snd_dma_buffer hostport; |
93 | 108 | ||
@@ -106,6 +121,9 @@ struct pcxhr_mgr { | |||
106 | int async_err_stream_xrun; | 121 | int async_err_stream_xrun; |
107 | int async_err_pipe_xrun; | 122 | int async_err_pipe_xrun; |
108 | int async_err_other_last; | 123 | int async_err_other_last; |
124 | |||
125 | unsigned char xlx_cfg; /* copy of PCXHR_XLX_CFG register */ | ||
126 | unsigned char xlx_selmic; /* copy of PCXHR_XLX_SELMIC register */ | ||
109 | }; | 127 | }; |
110 | 128 | ||
111 | 129 | ||
@@ -155,24 +173,30 @@ struct snd_pcxhr { | |||
155 | 173 | ||
156 | struct snd_pcm *pcm; /* PCM */ | 174 | struct snd_pcm *pcm; /* PCM */ |
157 | 175 | ||
158 | struct pcxhr_pipe playback_pipe; /* 1 stereo pipe only */ | 176 | struct pcxhr_pipe playback_pipe; /* 1 stereo pipe only */ |
159 | struct pcxhr_pipe capture_pipe[2]; /* 1 stereo pipe or 2 mono pipes */ | 177 | struct pcxhr_pipe capture_pipe[2]; /* 1 stereo or 2 mono pipes */ |
160 | 178 | ||
161 | struct pcxhr_stream playback_stream[PCXHR_PLAYBACK_STREAMS]; | 179 | struct pcxhr_stream playback_stream[PCXHR_PLAYBACK_STREAMS]; |
162 | struct pcxhr_stream capture_stream[2]; /* 1 stereo stream or 2 mono streams */ | 180 | struct pcxhr_stream capture_stream[2]; /* 1 stereo or 2 mono streams */ |
163 | int nb_streams_play; | 181 | int nb_streams_play; |
164 | int nb_streams_capt; | 182 | int nb_streams_capt; |
165 | 183 | ||
166 | int analog_playback_active[2]; /* Mixer : Master Playback active (!mute) */ | 184 | int analog_playback_active[2]; /* Mixer : Master Playback !mute */ |
167 | int analog_playback_volume[2]; /* Mixer : Master Playback Volume */ | 185 | int analog_playback_volume[2]; /* Mixer : Master Playback Volume */ |
168 | int analog_capture_volume[2]; /* Mixer : Master Capture Volume */ | 186 | int analog_capture_volume[2]; /* Mixer : Master Capture Volume */ |
169 | int digital_playback_active[PCXHR_PLAYBACK_STREAMS][2]; /* Mixer : Digital Playback Active [streams][stereo]*/ | 187 | int digital_playback_active[PCXHR_PLAYBACK_STREAMS][2]; |
170 | int digital_playback_volume[PCXHR_PLAYBACK_STREAMS][2]; /* Mixer : Digital Playback Volume [streams][stereo]*/ | 188 | int digital_playback_volume[PCXHR_PLAYBACK_STREAMS][2]; |
171 | int digital_capture_volume[2]; /* Mixer : Digital Capture Volume [stereo] */ | 189 | int digital_capture_volume[2]; /* Mixer : Digital Capture Volume */ |
172 | int monitoring_active[2]; /* Mixer : Monitoring Active */ | 190 | int monitoring_active[2]; /* Mixer : Monitoring Active */ |
173 | int monitoring_volume[2]; /* Mixer : Monitoring Volume */ | 191 | int monitoring_volume[2]; /* Mixer : Monitoring Volume */ |
174 | int audio_capture_source; /* Mixer : Audio Capture Source */ | 192 | int audio_capture_source; /* Mixer : Audio Capture Source */ |
175 | unsigned char aes_bits[5]; /* Mixer : IEC958_AES bits */ | 193 | int mic_volume; /* used by cards with MIC only */ |
194 | int mic_boost; /* used by cards with MIC only */ | ||
195 | int mic_active; /* used by cards with MIC only */ | ||
196 | int analog_capture_active; /* used by cards with MIC only */ | ||
197 | int phantom_power; /* used by cards with MIC only */ | ||
198 | |||
199 | unsigned char aes_bits[5]; /* Mixer : IEC958_AES bits */ | ||
176 | }; | 200 | }; |
177 | 201 | ||
178 | struct pcxhr_hostport | 202 | struct pcxhr_hostport |
@@ -184,6 +208,8 @@ struct pcxhr_hostport | |||
184 | /* exported */ | 208 | /* exported */ |
185 | int pcxhr_create_pcm(struct snd_pcxhr *chip); | 209 | int pcxhr_create_pcm(struct snd_pcxhr *chip); |
186 | int pcxhr_set_clock(struct pcxhr_mgr *mgr, unsigned int rate); | 210 | int pcxhr_set_clock(struct pcxhr_mgr *mgr, unsigned int rate); |
187 | int pcxhr_get_external_clock(struct pcxhr_mgr *mgr, enum pcxhr_clock_type clock_type, int *sample_rate); | 211 | int pcxhr_get_external_clock(struct pcxhr_mgr *mgr, |
212 | enum pcxhr_clock_type clock_type, | ||
213 | int *sample_rate); | ||
188 | 214 | ||
189 | #endif /* __SOUND_PCXHR_H */ | 215 | #endif /* __SOUND_PCXHR_H */ |