diff options
author | Takashi Iwai <tiwai@suse.de> | 2012-07-02 10:37:05 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2012-07-03 02:23:09 -0400 |
commit | 81fcb170852d58d7ebd8101a8ef970c82056426e (patch) | |
tree | f28367c9e30f116efe445cd016d04a4d57cb0551 /sound/pci/cs46xx/cs46xx_dsp_spos.h | |
parent | 2cb1331d9d647643a52be770377ab67ea078fd99 (diff) |
ALSA: Move some headers to local directories from include/sound
This is a bit clean up of public sound header directory.
Some header files in include/sound aren't really necessary to be
located there but can be moved to their local directories gracefully.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/cs46xx/cs46xx_dsp_spos.h')
-rw-r--r-- | sound/pci/cs46xx/cs46xx_dsp_spos.h | 234 |
1 files changed, 234 insertions, 0 deletions
diff --git a/sound/pci/cs46xx/cs46xx_dsp_spos.h b/sound/pci/cs46xx/cs46xx_dsp_spos.h new file mode 100644 index 000000000000..8008c59288a6 --- /dev/null +++ b/sound/pci/cs46xx/cs46xx_dsp_spos.h | |||
@@ -0,0 +1,234 @@ | |||
1 | /* | ||
2 | * The driver for the Cirrus Logic's Sound Fusion CS46XX based soundcards | ||
3 | * Copyright (c) by Jaroslav Kysela <perex@perex.cz> | ||
4 | * | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | * | ||
20 | */ | ||
21 | |||
22 | #ifndef __CS46XX_DSP_SPOS_H__ | ||
23 | #define __CS46XX_DSP_SPOS_H__ | ||
24 | |||
25 | #include "cs46xx_dsp_scb_types.h" | ||
26 | #include "cs46xx_dsp_task_types.h" | ||
27 | |||
28 | #define SYMBOL_CONSTANT 0x0 | ||
29 | #define SYMBOL_SAMPLE 0x1 | ||
30 | #define SYMBOL_PARAMETER 0x2 | ||
31 | #define SYMBOL_CODE 0x3 | ||
32 | |||
33 | #define SEGTYPE_SP_PROGRAM 0x00000001 | ||
34 | #define SEGTYPE_SP_PARAMETER 0x00000002 | ||
35 | #define SEGTYPE_SP_SAMPLE 0x00000003 | ||
36 | #define SEGTYPE_SP_COEFFICIENT 0x00000004 | ||
37 | |||
38 | #define DSP_SPOS_UU 0x0deadul /* unused */ | ||
39 | #define DSP_SPOS_DC 0x0badul /* don't care */ | ||
40 | #define DSP_SPOS_DC_DC 0x0bad0badul /* don't care */ | ||
41 | #define DSP_SPOS_UUUU 0xdeadc0edul /* unused */ | ||
42 | #define DSP_SPOS_UUHI 0xdeadul | ||
43 | #define DSP_SPOS_UULO 0xc0edul | ||
44 | #define DSP_SPOS_DCDC 0x0badf1d0ul /* don't care */ | ||
45 | #define DSP_SPOS_DCDCHI 0x0badul | ||
46 | #define DSP_SPOS_DCDCLO 0xf1d0ul | ||
47 | |||
48 | #define DSP_MAX_TASK_NAME 60 | ||
49 | #define DSP_MAX_SYMBOL_NAME 100 | ||
50 | #define DSP_MAX_SCB_NAME 60 | ||
51 | #define DSP_MAX_SCB_DESC 200 | ||
52 | #define DSP_MAX_TASK_DESC 50 | ||
53 | |||
54 | #define DSP_MAX_PCM_CHANNELS 32 | ||
55 | #define DSP_MAX_SRC_NR 14 | ||
56 | |||
57 | #define DSP_PCM_MAIN_CHANNEL 1 | ||
58 | #define DSP_PCM_REAR_CHANNEL 2 | ||
59 | #define DSP_PCM_CENTER_LFE_CHANNEL 3 | ||
60 | #define DSP_PCM_S71_CHANNEL 4 /* surround 7.1 */ | ||
61 | #define DSP_IEC958_CHANNEL 5 | ||
62 | |||
63 | #define DSP_SPDIF_STATUS_OUTPUT_ENABLED 1 | ||
64 | #define DSP_SPDIF_STATUS_PLAYBACK_OPEN 2 | ||
65 | #define DSP_SPDIF_STATUS_HW_ENABLED 4 | ||
66 | #define DSP_SPDIF_STATUS_INPUT_CTRL_ENABLED 8 | ||
67 | |||
68 | struct dsp_symbol_entry { | ||
69 | u32 address; | ||
70 | char symbol_name[DSP_MAX_SYMBOL_NAME]; | ||
71 | int symbol_type; | ||
72 | |||
73 | /* initialized by driver */ | ||
74 | struct dsp_module_desc * module; | ||
75 | int deleted; | ||
76 | }; | ||
77 | |||
78 | struct dsp_symbol_desc { | ||
79 | int nsymbols; | ||
80 | |||
81 | struct dsp_symbol_entry *symbols; | ||
82 | |||
83 | /* initialized by driver */ | ||
84 | int highest_frag_index; | ||
85 | }; | ||
86 | |||
87 | struct dsp_segment_desc { | ||
88 | int segment_type; | ||
89 | u32 offset; | ||
90 | u32 size; | ||
91 | u32 * data; | ||
92 | }; | ||
93 | |||
94 | struct dsp_module_desc { | ||
95 | char * module_name; | ||
96 | struct dsp_symbol_desc symbol_table; | ||
97 | int nsegments; | ||
98 | struct dsp_segment_desc * segments; | ||
99 | |||
100 | /* initialized by driver */ | ||
101 | u32 overlay_begin_address; | ||
102 | u32 load_address; | ||
103 | int nfixups; | ||
104 | }; | ||
105 | |||
106 | struct dsp_scb_descriptor { | ||
107 | char scb_name[DSP_MAX_SCB_NAME]; | ||
108 | u32 address; | ||
109 | int index; | ||
110 | u32 *data; | ||
111 | |||
112 | struct dsp_scb_descriptor * sub_list_ptr; | ||
113 | struct dsp_scb_descriptor * next_scb_ptr; | ||
114 | struct dsp_scb_descriptor * parent_scb_ptr; | ||
115 | |||
116 | struct dsp_symbol_entry * task_entry; | ||
117 | struct dsp_symbol_entry * scb_symbol; | ||
118 | |||
119 | struct snd_info_entry *proc_info; | ||
120 | int ref_count; | ||
121 | |||
122 | u16 volume[2]; | ||
123 | unsigned int deleted :1; | ||
124 | unsigned int updated :1; | ||
125 | unsigned int volume_set :1; | ||
126 | }; | ||
127 | |||
128 | struct dsp_task_descriptor { | ||
129 | char task_name[DSP_MAX_TASK_NAME]; | ||
130 | int size; | ||
131 | u32 address; | ||
132 | int index; | ||
133 | u32 *data; | ||
134 | }; | ||
135 | |||
136 | struct dsp_pcm_channel_descriptor { | ||
137 | int active; | ||
138 | int src_slot; | ||
139 | int pcm_slot; | ||
140 | u32 sample_rate; | ||
141 | u32 unlinked; | ||
142 | struct dsp_scb_descriptor * pcm_reader_scb; | ||
143 | struct dsp_scb_descriptor * src_scb; | ||
144 | struct dsp_scb_descriptor * mixer_scb; | ||
145 | |||
146 | void * private_data; | ||
147 | }; | ||
148 | |||
149 | struct dsp_spos_instance { | ||
150 | struct dsp_symbol_desc symbol_table; /* currently available loaded symbols in SP */ | ||
151 | |||
152 | int nmodules; | ||
153 | struct dsp_module_desc * modules; /* modules loaded into SP */ | ||
154 | |||
155 | struct dsp_segment_desc code; | ||
156 | |||
157 | /* Main PCM playback mixer */ | ||
158 | struct dsp_scb_descriptor * master_mix_scb; | ||
159 | u16 dac_volume_right; | ||
160 | u16 dac_volume_left; | ||
161 | |||
162 | /* Rear/surround PCM playback mixer */ | ||
163 | struct dsp_scb_descriptor * rear_mix_scb; | ||
164 | |||
165 | /* Center/LFE mixer */ | ||
166 | struct dsp_scb_descriptor * center_lfe_mix_scb; | ||
167 | |||
168 | int npcm_channels; | ||
169 | int nsrc_scb; | ||
170 | struct dsp_pcm_channel_descriptor pcm_channels[DSP_MAX_PCM_CHANNELS]; | ||
171 | int src_scb_slots[DSP_MAX_SRC_NR]; | ||
172 | |||
173 | /* cache this symbols */ | ||
174 | struct dsp_symbol_entry * null_algorithm; /* used by PCMreaderSCB's */ | ||
175 | struct dsp_symbol_entry * s16_up; /* used by SRCtaskSCB's */ | ||
176 | |||
177 | /* proc fs */ | ||
178 | struct snd_card *snd_card; | ||
179 | struct snd_info_entry * proc_dsp_dir; | ||
180 | struct snd_info_entry * proc_sym_info_entry; | ||
181 | struct snd_info_entry * proc_modules_info_entry; | ||
182 | struct snd_info_entry * proc_parameter_dump_info_entry; | ||
183 | struct snd_info_entry * proc_sample_dump_info_entry; | ||
184 | |||
185 | /* SCB's descriptors */ | ||
186 | int nscb; | ||
187 | int scb_highest_frag_index; | ||
188 | struct dsp_scb_descriptor scbs[DSP_MAX_SCB_DESC]; | ||
189 | struct snd_info_entry * proc_scb_info_entry; | ||
190 | struct dsp_scb_descriptor * the_null_scb; | ||
191 | |||
192 | /* Task's descriptors */ | ||
193 | int ntask; | ||
194 | struct dsp_task_descriptor tasks[DSP_MAX_TASK_DESC]; | ||
195 | struct snd_info_entry * proc_task_info_entry; | ||
196 | |||
197 | /* SPDIF status */ | ||
198 | int spdif_status_out; | ||
199 | int spdif_status_in; | ||
200 | u16 spdif_input_volume_right; | ||
201 | u16 spdif_input_volume_left; | ||
202 | /* spdif channel status, | ||
203 | left right and user validity bits */ | ||
204 | unsigned int spdif_csuv_default; | ||
205 | unsigned int spdif_csuv_stream; | ||
206 | |||
207 | /* SPDIF input sample rate converter */ | ||
208 | struct dsp_scb_descriptor * spdif_in_src; | ||
209 | /* SPDIF input asynch. receiver */ | ||
210 | struct dsp_scb_descriptor * asynch_rx_scb; | ||
211 | |||
212 | /* Capture record mixer SCB */ | ||
213 | struct dsp_scb_descriptor * record_mixer_scb; | ||
214 | |||
215 | /* CODEC input SCB */ | ||
216 | struct dsp_scb_descriptor * codec_in_scb; | ||
217 | |||
218 | /* reference snooper */ | ||
219 | struct dsp_scb_descriptor * ref_snoop_scb; | ||
220 | |||
221 | /* SPDIF output PCM reference */ | ||
222 | struct dsp_scb_descriptor * spdif_pcm_input_scb; | ||
223 | |||
224 | /* asynch TX task */ | ||
225 | struct dsp_scb_descriptor * asynch_tx_scb; | ||
226 | |||
227 | /* record sources */ | ||
228 | struct dsp_scb_descriptor * pcm_input; | ||
229 | struct dsp_scb_descriptor * adc_input; | ||
230 | |||
231 | int spdif_in_sample_rate; | ||
232 | }; | ||
233 | |||
234 | #endif /* __DSP_SPOS_H__ */ | ||