diff options
author | Eliot Blennerhassett <eblennerhassett@audioscience.com> | 2011-02-09 23:25:58 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2011-02-10 12:22:40 -0500 |
commit | 3285ea10e9b09d68da18d2f805980246ec53523a (patch) | |
tree | f6c7ccc09d07fd808357b50ddad25e5f5b4fa3c9 /sound/pci/asihpi/hpi_internal.h | |
parent | ad210ad10ec96e32d32459545f54e4d3d9c6a088 (diff) |
ALSA: asihpi - Interrelated HPI tidy up.
Remove many unused functions.
Update some message and cache structs.
Use pci info directly from pci_dev.
Allow control cache elements with variable size, and handle
large message/response from dsp.
hpi6000 and hpi6205: fix error path when adapter bootload fails.
hpimsgx.c get rid of code duplicated in hpicmn.c
Signed-off-by: Eliot Blennerhassett <eblennerhassett@audioscience.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/asihpi/hpi_internal.h')
-rw-r--r-- | sound/pci/asihpi/hpi_internal.h | 1022 |
1 files changed, 463 insertions, 559 deletions
diff --git a/sound/pci/asihpi/hpi_internal.h b/sound/pci/asihpi/hpi_internal.h index 16f502d459de..0d500841f1a5 100644 --- a/sound/pci/asihpi/hpi_internal.h +++ b/sound/pci/asihpi/hpi_internal.h | |||
@@ -28,7 +28,7 @@ HPI internal definitions | |||
28 | /** maximum number of memory regions mapped to an adapter */ | 28 | /** maximum number of memory regions mapped to an adapter */ |
29 | #define HPI_MAX_ADAPTER_MEM_SPACES (2) | 29 | #define HPI_MAX_ADAPTER_MEM_SPACES (2) |
30 | 30 | ||
31 | /* Each OS needs its own hpios.h, or specific define as above */ | 31 | /* Each OS needs its own hpios.h */ |
32 | #include "hpios.h" | 32 | #include "hpios.h" |
33 | 33 | ||
34 | /* physical memory allocation */ | 34 | /* physical memory allocation */ |
@@ -49,7 +49,7 @@ HpiOs_LockedMem_GetPyhsAddr() will always succed on the returned handle. | |||
49 | */ | 49 | */ |
50 | u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_locked_mem_handle, | 50 | u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_locked_mem_handle, |
51 | /**< memory handle */ | 51 | /**< memory handle */ |
52 | u32 size, /**< size in bytes to allocate */ | 52 | u32 size, /**< Size in bytes to allocate */ |
53 | struct pci_dev *p_os_reference | 53 | struct pci_dev *p_os_reference |
54 | /**< OS specific data required for memory allocation */ | 54 | /**< OS specific data required for memory allocation */ |
55 | ); | 55 | ); |
@@ -96,41 +96,6 @@ typedef void hpi_handler_func(struct hpi_message *, struct hpi_response *); | |||
96 | #define compile_time_assert(cond, msg) \ | 96 | #define compile_time_assert(cond, msg) \ |
97 | typedef char ASSERT_##msg[(cond) ? 1 : -1] | 97 | typedef char ASSERT_##msg[(cond) ? 1 : -1] |
98 | 98 | ||
99 | /*/////////////////////////////////////////////////////////////////////////// */ | ||
100 | /* Private HPI Entity related definitions */ | ||
101 | |||
102 | #define STR_SIZE_FIELD_MAX 65535U | ||
103 | #define STR_TYPE_FIELD_MAX 255U | ||
104 | #define STR_ROLE_FIELD_MAX 255U | ||
105 | |||
106 | struct hpi_entity_str { | ||
107 | u16 size; | ||
108 | u8 type; | ||
109 | u8 role; | ||
110 | }; | ||
111 | |||
112 | #if defined(_MSC_VER) | ||
113 | #pragma warning(push) | ||
114 | #pragma warning(disable : 4200) | ||
115 | #endif | ||
116 | |||
117 | struct hpi_entity { | ||
118 | struct hpi_entity_str header; | ||
119 | #if ! defined(HPI_OS_DSP_C6000) || (defined(HPI_OS_DSP_C6000) && (__TI_COMPILER_VERSION__ > 6000008)) | ||
120 | /* DSP C6000 compiler v6.0.8 and lower | ||
121 | do not support flexible array member */ | ||
122 | u8 value[]; | ||
123 | #else | ||
124 | /* NOTE! Using sizeof(struct hpi_entity) will give erroneous results */ | ||
125 | #define HPI_INTERNAL_WARN_ABOUT_ENTITY_VALUE | ||
126 | u8 value[1]; | ||
127 | #endif | ||
128 | }; | ||
129 | |||
130 | #if defined(_MSC_VER) | ||
131 | #pragma warning(pop) | ||
132 | #endif | ||
133 | |||
134 | /******************************************* bus types */ | 99 | /******************************************* bus types */ |
135 | enum HPI_BUSES { | 100 | enum HPI_BUSES { |
136 | HPI_BUS_ISAPNP = 1, | 101 | HPI_BUS_ISAPNP = 1, |
@@ -143,202 +108,127 @@ enum HPI_BUSES { | |||
143 | /* (in order of control type ID */ | 108 | /* (in order of control type ID */ |
144 | 109 | ||
145 | /* This allows for 255 control types, 256 unique attributes each */ | 110 | /* This allows for 255 control types, 256 unique attributes each */ |
146 | #define HPI_CTL_ATTR(ctl, ai) (HPI_CONTROL_##ctl * 0x100 + ai) | 111 | #define HPI_CTL_ATTR(ctl, ai) ((HPI_CONTROL_##ctl << 8) + ai) |
147 | 112 | ||
148 | /* Get the sub-index of the attribute for a control type */ | 113 | /* Get the sub-index of the attribute for a control type */ |
149 | #define HPI_CTL_ATTR_INDEX(i) (i&0xff) | 114 | #define HPI_CTL_ATTR_INDEX(i) (i & 0xff) |
150 | 115 | ||
151 | /* Extract the control from the control attribute */ | 116 | /* Extract the control from the control attribute */ |
152 | #define HPI_CTL_ATTR_CONTROL(i) (i>>8) | 117 | #define HPI_CTL_ATTR_CONTROL(i) (i >> 8) |
153 | |||
154 | /* Generic control attributes. */ | ||
155 | |||
156 | /** Enable a control. | ||
157 | 0=disable, 1=enable | ||
158 | \note generic to all mixer plugins? | ||
159 | */ | ||
160 | #define HPI_GENERIC_ENABLE HPI_CTL_ATTR(GENERIC, 1) | ||
161 | 118 | ||
162 | /** Enable event generation for a control. | 119 | /** Enable event generation for a control. |
163 | 0=disable, 1=enable | 120 | 0=disable, 1=enable |
164 | \note generic to all controls that can generate events | 121 | \note generic to all controls that can generate events |
165 | */ | 122 | */ |
166 | #define HPI_GENERIC_EVENT_ENABLE HPI_CTL_ATTR(GENERIC, 2) | 123 | |
167 | 124 | /** Unique identifiers for every control attribute | |
168 | /* Volume Control attributes */ | ||
169 | #define HPI_VOLUME_GAIN HPI_CTL_ATTR(VOLUME, 1) | ||
170 | #define HPI_VOLUME_AUTOFADE HPI_CTL_ATTR(VOLUME, 2) | ||
171 | |||
172 | /** For HPI_ControlQuery() to get the number of channels of a volume control*/ | ||
173 | #define HPI_VOLUME_NUM_CHANNELS HPI_CTL_ATTR(VOLUME, 6) | ||
174 | #define HPI_VOLUME_RANGE HPI_CTL_ATTR(VOLUME, 10) | ||
175 | |||
176 | /** Level Control attributes */ | ||
177 | #define HPI_LEVEL_GAIN HPI_CTL_ATTR(LEVEL, 1) | ||
178 | #define HPI_LEVEL_RANGE HPI_CTL_ATTR(LEVEL, 10) | ||
179 | |||
180 | /* Meter Control attributes */ | ||
181 | /** return RMS signal level */ | ||
182 | #define HPI_METER_RMS HPI_CTL_ATTR(METER, 1) | ||
183 | /** return peak signal level */ | ||
184 | #define HPI_METER_PEAK HPI_CTL_ATTR(METER, 2) | ||
185 | /** ballistics for ALL rms meters on adapter */ | ||
186 | #define HPI_METER_RMS_BALLISTICS HPI_CTL_ATTR(METER, 3) | ||
187 | /** ballistics for ALL peak meters on adapter */ | ||
188 | #define HPI_METER_PEAK_BALLISTICS HPI_CTL_ATTR(METER, 4) | ||
189 | |||
190 | /** For HPI_ControlQuery() to get the number of channels of a meter control*/ | ||
191 | #define HPI_METER_NUM_CHANNELS HPI_CTL_ATTR(METER, 5) | ||
192 | |||
193 | /* Multiplexer control attributes */ | ||
194 | #define HPI_MULTIPLEXER_SOURCE HPI_CTL_ATTR(MULTIPLEXER, 1) | ||
195 | #define HPI_MULTIPLEXER_QUERYSOURCE HPI_CTL_ATTR(MULTIPLEXER, 2) | ||
196 | |||
197 | /** AES/EBU transmitter control attributes */ | ||
198 | /** AESEBU or SPDIF */ | ||
199 | #define HPI_AESEBUTX_FORMAT HPI_CTL_ATTR(AESEBUTX, 1) | ||
200 | #define HPI_AESEBUTX_SAMPLERATE HPI_CTL_ATTR(AESEBUTX, 3) | ||
201 | #define HPI_AESEBUTX_CHANNELSTATUS HPI_CTL_ATTR(AESEBUTX, 4) | ||
202 | #define HPI_AESEBUTX_USERDATA HPI_CTL_ATTR(AESEBUTX, 5) | ||
203 | |||
204 | /** AES/EBU receiver control attributes */ | ||
205 | #define HPI_AESEBURX_FORMAT HPI_CTL_ATTR(AESEBURX, 1) | ||
206 | #define HPI_AESEBURX_ERRORSTATUS HPI_CTL_ATTR(AESEBURX, 2) | ||
207 | #define HPI_AESEBURX_SAMPLERATE HPI_CTL_ATTR(AESEBURX, 3) | ||
208 | #define HPI_AESEBURX_CHANNELSTATUS HPI_CTL_ATTR(AESEBURX, 4) | ||
209 | #define HPI_AESEBURX_USERDATA HPI_CTL_ATTR(AESEBURX, 5) | ||
210 | |||
211 | /** \defgroup tuner_defs Tuners | ||
212 | \{ | ||
213 | */ | ||
214 | /** \defgroup tuner_attrs Tuner control attributes | ||
215 | \{ | ||
216 | */ | ||
217 | #define HPI_TUNER_BAND HPI_CTL_ATTR(TUNER, 1) | ||
218 | #define HPI_TUNER_FREQ HPI_CTL_ATTR(TUNER, 2) | ||
219 | #define HPI_TUNER_LEVEL HPI_CTL_ATTR(TUNER, 3) | ||
220 | #define HPI_TUNER_AUDIOMUTE HPI_CTL_ATTR(TUNER, 4) | ||
221 | /* use TUNER_STATUS instead */ | ||
222 | #define HPI_TUNER_VIDEO_STATUS HPI_CTL_ATTR(TUNER, 5) | ||
223 | #define HPI_TUNER_GAIN HPI_CTL_ATTR(TUNER, 6) | ||
224 | #define HPI_TUNER_STATUS HPI_CTL_ATTR(TUNER, 7) | ||
225 | #define HPI_TUNER_MODE HPI_CTL_ATTR(TUNER, 8) | ||
226 | /** RDS data. */ | ||
227 | #define HPI_TUNER_RDS HPI_CTL_ATTR(TUNER, 9) | ||
228 | /** Audio pre-emphasis. */ | ||
229 | #define HPI_TUNER_DEEMPHASIS HPI_CTL_ATTR(TUNER, 10) | ||
230 | /** HD Radio tuner program control. */ | ||
231 | #define HPI_TUNER_PROGRAM HPI_CTL_ATTR(TUNER, 11) | ||
232 | /** HD Radio tuner digital signal quality. */ | ||
233 | #define HPI_TUNER_HDRADIO_SIGNAL_QUALITY HPI_CTL_ATTR(TUNER, 12) | ||
234 | /** HD Radio SDK firmware version. */ | ||
235 | #define HPI_TUNER_HDRADIO_SDK_VERSION HPI_CTL_ATTR(TUNER, 13) | ||
236 | /** HD Radio DSP firmware version. */ | ||
237 | #define HPI_TUNER_HDRADIO_DSP_VERSION HPI_CTL_ATTR(TUNER, 14) | ||
238 | /** HD Radio signal blend (force analog, or automatic). */ | ||
239 | #define HPI_TUNER_HDRADIO_BLEND HPI_CTL_ATTR(TUNER, 15) | ||
240 | |||
241 | /** \} */ | ||
242 | |||
243 | /** \defgroup pads_attrs Tuner PADs control attributes | ||
244 | \{ | ||
245 | */ | ||
246 | /** The text string containing the station/channel combination. */ | ||
247 | #define HPI_PAD_CHANNEL_NAME HPI_CTL_ATTR(PAD, 1) | ||
248 | /** The text string containing the artist. */ | ||
249 | #define HPI_PAD_ARTIST HPI_CTL_ATTR(PAD, 2) | ||
250 | /** The text string containing the title. */ | ||
251 | #define HPI_PAD_TITLE HPI_CTL_ATTR(PAD, 3) | ||
252 | /** The text string containing the comment. */ | ||
253 | #define HPI_PAD_COMMENT HPI_CTL_ATTR(PAD, 4) | ||
254 | /** The integer containing the PTY code. */ | ||
255 | #define HPI_PAD_PROGRAM_TYPE HPI_CTL_ATTR(PAD, 5) | ||
256 | /** The integer containing the program identification. */ | ||
257 | #define HPI_PAD_PROGRAM_ID HPI_CTL_ATTR(PAD, 6) | ||
258 | /** The integer containing whether traffic information is supported. | ||
259 | Contains either 1 or 0. */ | ||
260 | #define HPI_PAD_TA_SUPPORT HPI_CTL_ATTR(PAD, 7) | ||
261 | /** The integer containing whether traffic announcement is in progress. | ||
262 | Contains either 1 or 0. */ | ||
263 | #define HPI_PAD_TA_ACTIVE HPI_CTL_ATTR(PAD, 8) | ||
264 | /** \} */ | ||
265 | /** \} */ | ||
266 | |||
267 | /* VOX control attributes */ | ||
268 | #define HPI_VOX_THRESHOLD HPI_CTL_ATTR(VOX, 1) | ||
269 | |||
270 | /*?? channel mode used hpi_multiplexer_source attribute == 1 */ | ||
271 | #define HPI_CHANNEL_MODE_MODE HPI_CTL_ATTR(CHANNEL_MODE, 1) | ||
272 | |||
273 | /** \defgroup channel_modes Channel Modes | ||
274 | Used for HPI_ChannelModeSet/Get() | ||
275 | \{ | ||
276 | */ | 125 | */ |
277 | /** Left channel out = left channel in, Right channel out = right channel in. */ | 126 | enum HPI_CONTROL_ATTRIBUTES { |
278 | #define HPI_CHANNEL_MODE_NORMAL 1 | 127 | HPI_GENERIC_ENABLE = HPI_CTL_ATTR(GENERIC, 1), |
279 | /** Left channel out = right channel in, Right channel out = left channel in. */ | 128 | HPI_GENERIC_EVENT_ENABLE = HPI_CTL_ATTR(GENERIC, 2), |
280 | #define HPI_CHANNEL_MODE_SWAP 2 | 129 | |
281 | /** Left channel out = left channel in, Right channel out = left channel in. */ | 130 | HPI_VOLUME_GAIN = HPI_CTL_ATTR(VOLUME, 1), |
282 | #define HPI_CHANNEL_MODE_LEFT_TO_STEREO 3 | 131 | HPI_VOLUME_AUTOFADE = HPI_CTL_ATTR(VOLUME, 2), |
283 | /** Left channel out = right channel in, Right channel out = right channel in.*/ | 132 | HPI_VOLUME_NUM_CHANNELS = HPI_CTL_ATTR(VOLUME, 6), |
284 | #define HPI_CHANNEL_MODE_RIGHT_TO_STEREO 4 | 133 | HPI_VOLUME_RANGE = HPI_CTL_ATTR(VOLUME, 10), |
285 | /** Left channel out = (left channel in + right channel in)/2, | 134 | |
286 | Right channel out = mute. */ | 135 | HPI_METER_RMS = HPI_CTL_ATTR(METER, 1), |
287 | #define HPI_CHANNEL_MODE_STEREO_TO_LEFT 5 | 136 | HPI_METER_PEAK = HPI_CTL_ATTR(METER, 2), |
288 | /** Left channel out = mute, | 137 | HPI_METER_RMS_BALLISTICS = HPI_CTL_ATTR(METER, 3), |
289 | Right channel out = (right channel in + left channel in)/2. */ | 138 | HPI_METER_PEAK_BALLISTICS = HPI_CTL_ATTR(METER, 4), |
290 | #define HPI_CHANNEL_MODE_STEREO_TO_RIGHT 6 | 139 | HPI_METER_NUM_CHANNELS = HPI_CTL_ATTR(METER, 5), |
291 | #define HPI_CHANNEL_MODE_LAST 6 | 140 | |
292 | /** \} */ | 141 | HPI_MULTIPLEXER_SOURCE = HPI_CTL_ATTR(MULTIPLEXER, 1), |
293 | 142 | HPI_MULTIPLEXER_QUERYSOURCE = HPI_CTL_ATTR(MULTIPLEXER, 2), | |
294 | /* Bitstream control set attributes */ | 143 | |
295 | #define HPI_BITSTREAM_DATA_POLARITY HPI_CTL_ATTR(BITSTREAM, 1) | 144 | HPI_AESEBUTX_FORMAT = HPI_CTL_ATTR(AESEBUTX, 1), |
296 | #define HPI_BITSTREAM_CLOCK_EDGE HPI_CTL_ATTR(BITSTREAM, 2) | 145 | HPI_AESEBUTX_SAMPLERATE = HPI_CTL_ATTR(AESEBUTX, 3), |
297 | #define HPI_BITSTREAM_CLOCK_SOURCE HPI_CTL_ATTR(BITSTREAM, 3) | 146 | HPI_AESEBUTX_CHANNELSTATUS = HPI_CTL_ATTR(AESEBUTX, 4), |
147 | HPI_AESEBUTX_USERDATA = HPI_CTL_ATTR(AESEBUTX, 5), | ||
148 | |||
149 | HPI_AESEBURX_FORMAT = HPI_CTL_ATTR(AESEBURX, 1), | ||
150 | HPI_AESEBURX_ERRORSTATUS = HPI_CTL_ATTR(AESEBURX, 2), | ||
151 | HPI_AESEBURX_SAMPLERATE = HPI_CTL_ATTR(AESEBURX, 3), | ||
152 | HPI_AESEBURX_CHANNELSTATUS = HPI_CTL_ATTR(AESEBURX, 4), | ||
153 | HPI_AESEBURX_USERDATA = HPI_CTL_ATTR(AESEBURX, 5), | ||
154 | |||
155 | HPI_LEVEL_GAIN = HPI_CTL_ATTR(LEVEL, 1), | ||
156 | HPI_LEVEL_RANGE = HPI_CTL_ATTR(LEVEL, 10), | ||
157 | |||
158 | HPI_TUNER_BAND = HPI_CTL_ATTR(TUNER, 1), | ||
159 | HPI_TUNER_FREQ = HPI_CTL_ATTR(TUNER, 2), | ||
160 | HPI_TUNER_LEVEL_AVG = HPI_CTL_ATTR(TUNER, 3), | ||
161 | HPI_TUNER_LEVEL_RAW = HPI_CTL_ATTR(TUNER, 4), | ||
162 | HPI_TUNER_SNR = HPI_CTL_ATTR(TUNER, 5), | ||
163 | HPI_TUNER_GAIN = HPI_CTL_ATTR(TUNER, 6), | ||
164 | HPI_TUNER_STATUS = HPI_CTL_ATTR(TUNER, 7), | ||
165 | HPI_TUNER_MODE = HPI_CTL_ATTR(TUNER, 8), | ||
166 | HPI_TUNER_RDS = HPI_CTL_ATTR(TUNER, 9), | ||
167 | HPI_TUNER_DEEMPHASIS = HPI_CTL_ATTR(TUNER, 10), | ||
168 | HPI_TUNER_PROGRAM = HPI_CTL_ATTR(TUNER, 11), | ||
169 | HPI_TUNER_HDRADIO_SIGNAL_QUALITY = HPI_CTL_ATTR(TUNER, 12), | ||
170 | HPI_TUNER_HDRADIO_SDK_VERSION = HPI_CTL_ATTR(TUNER, 13), | ||
171 | HPI_TUNER_HDRADIO_DSP_VERSION = HPI_CTL_ATTR(TUNER, 14), | ||
172 | HPI_TUNER_HDRADIO_BLEND = HPI_CTL_ATTR(TUNER, 15), | ||
173 | |||
174 | HPI_VOX_THRESHOLD = HPI_CTL_ATTR(VOX, 1), | ||
175 | |||
176 | HPI_CHANNEL_MODE_MODE = HPI_CTL_ATTR(CHANNEL_MODE, 1), | ||
177 | |||
178 | HPI_BITSTREAM_DATA_POLARITY = HPI_CTL_ATTR(BITSTREAM, 1), | ||
179 | HPI_BITSTREAM_CLOCK_EDGE = HPI_CTL_ATTR(BITSTREAM, 2), | ||
180 | HPI_BITSTREAM_CLOCK_SOURCE = HPI_CTL_ATTR(BITSTREAM, 3), | ||
181 | HPI_BITSTREAM_ACTIVITY = HPI_CTL_ATTR(BITSTREAM, 4), | ||
182 | |||
183 | HPI_SAMPLECLOCK_SOURCE = HPI_CTL_ATTR(SAMPLECLOCK, 1), | ||
184 | HPI_SAMPLECLOCK_SAMPLERATE = HPI_CTL_ATTR(SAMPLECLOCK, 2), | ||
185 | HPI_SAMPLECLOCK_SOURCE_INDEX = HPI_CTL_ATTR(SAMPLECLOCK, 3), | ||
186 | HPI_SAMPLECLOCK_LOCAL_SAMPLERATE = HPI_CTL_ATTR(SAMPLECLOCK, 4), | ||
187 | HPI_SAMPLECLOCK_AUTO = HPI_CTL_ATTR(SAMPLECLOCK, 5), | ||
188 | HPI_SAMPLECLOCK_LOCAL_LOCK = HPI_CTL_ATTR(SAMPLECLOCK, 6), | ||
189 | |||
190 | HPI_MICROPHONE_PHANTOM_POWER = HPI_CTL_ATTR(MICROPHONE, 1), | ||
191 | |||
192 | HPI_EQUALIZER_NUM_FILTERS = HPI_CTL_ATTR(EQUALIZER, 1), | ||
193 | HPI_EQUALIZER_FILTER = HPI_CTL_ATTR(EQUALIZER, 2), | ||
194 | HPI_EQUALIZER_COEFFICIENTS = HPI_CTL_ATTR(EQUALIZER, 3), | ||
195 | |||
196 | HPI_COMPANDER_PARAMS = HPI_CTL_ATTR(COMPANDER, 1), | ||
197 | HPI_COMPANDER_MAKEUPGAIN = HPI_CTL_ATTR(COMPANDER, 2), | ||
198 | HPI_COMPANDER_THRESHOLD = HPI_CTL_ATTR(COMPANDER, 3), | ||
199 | HPI_COMPANDER_RATIO = HPI_CTL_ATTR(COMPANDER, 4), | ||
200 | HPI_COMPANDER_ATTACK = HPI_CTL_ATTR(COMPANDER, 5), | ||
201 | HPI_COMPANDER_DECAY = HPI_CTL_ATTR(COMPANDER, 6), | ||
202 | |||
203 | HPI_COBRANET_SET = HPI_CTL_ATTR(COBRANET, 1), | ||
204 | HPI_COBRANET_GET = HPI_CTL_ATTR(COBRANET, 2), | ||
205 | HPI_COBRANET_SET_DATA = HPI_CTL_ATTR(COBRANET, 3), | ||
206 | HPI_COBRANET_GET_DATA = HPI_CTL_ATTR(COBRANET, 4), | ||
207 | HPI_COBRANET_GET_STATUS = HPI_CTL_ATTR(COBRANET, 5), | ||
208 | HPI_COBRANET_SEND_PACKET = HPI_CTL_ATTR(COBRANET, 6), | ||
209 | HPI_COBRANET_GET_PACKET = HPI_CTL_ATTR(COBRANET, 7), | ||
210 | |||
211 | HPI_TONEDETECTOR_THRESHOLD = HPI_CTL_ATTR(TONEDETECTOR, 1), | ||
212 | HPI_TONEDETECTOR_STATE = HPI_CTL_ATTR(TONEDETECTOR, 2), | ||
213 | HPI_TONEDETECTOR_FREQUENCY = HPI_CTL_ATTR(TONEDETECTOR, 3), | ||
214 | |||
215 | HPI_SILENCEDETECTOR_THRESHOLD = HPI_CTL_ATTR(SILENCEDETECTOR, 1), | ||
216 | HPI_SILENCEDETECTOR_STATE = HPI_CTL_ATTR(SILENCEDETECTOR, 2), | ||
217 | HPI_SILENCEDETECTOR_DELAY = HPI_CTL_ATTR(SILENCEDETECTOR, 3), | ||
218 | |||
219 | HPI_PAD_CHANNEL_NAME = HPI_CTL_ATTR(PAD, 1), | ||
220 | HPI_PAD_ARTIST = HPI_CTL_ATTR(PAD, 2), | ||
221 | HPI_PAD_TITLE = HPI_CTL_ATTR(PAD, 3), | ||
222 | HPI_PAD_COMMENT = HPI_CTL_ATTR(PAD, 4), | ||
223 | HPI_PAD_PROGRAM_TYPE = HPI_CTL_ATTR(PAD, 5), | ||
224 | HPI_PAD_PROGRAM_ID = HPI_CTL_ATTR(PAD, 6), | ||
225 | HPI_PAD_TA_SUPPORT = HPI_CTL_ATTR(PAD, 7), | ||
226 | HPI_PAD_TA_ACTIVE = HPI_CTL_ATTR(PAD, 8) | ||
227 | }; | ||
298 | 228 | ||
299 | #define HPI_POLARITY_POSITIVE 0 | 229 | #define HPI_POLARITY_POSITIVE 0 |
300 | #define HPI_POLARITY_NEGATIVE 1 | 230 | #define HPI_POLARITY_NEGATIVE 1 |
301 | 231 | ||
302 | /* Bitstream control get attributes */ | ||
303 | #define HPI_BITSTREAM_ACTIVITY 1 | ||
304 | |||
305 | /* SampleClock control attributes */ | ||
306 | #define HPI_SAMPLECLOCK_SOURCE HPI_CTL_ATTR(SAMPLECLOCK, 1) | ||
307 | #define HPI_SAMPLECLOCK_SAMPLERATE HPI_CTL_ATTR(SAMPLECLOCK, 2) | ||
308 | #define HPI_SAMPLECLOCK_SOURCE_INDEX HPI_CTL_ATTR(SAMPLECLOCK, 3) | ||
309 | #define HPI_SAMPLECLOCK_LOCAL_SAMPLERATE\ | ||
310 | HPI_CTL_ATTR(SAMPLECLOCK, 4) | ||
311 | #define HPI_SAMPLECLOCK_AUTO HPI_CTL_ATTR(SAMPLECLOCK, 5) | ||
312 | #define HPI_SAMPLECLOCK_LOCAL_LOCK HPI_CTL_ATTR(SAMPLECLOCK, 6) | ||
313 | |||
314 | /* Microphone control attributes */ | ||
315 | #define HPI_MICROPHONE_PHANTOM_POWER HPI_CTL_ATTR(MICROPHONE, 1) | ||
316 | |||
317 | /** Equalizer control attributes */ | ||
318 | /** Used to get number of filters in an EQ. (Can't set) */ | ||
319 | #define HPI_EQUALIZER_NUM_FILTERS HPI_CTL_ATTR(EQUALIZER, 1) | ||
320 | /** Set/get the filter by type, freq, Q, gain */ | ||
321 | #define HPI_EQUALIZER_FILTER HPI_CTL_ATTR(EQUALIZER, 2) | ||
322 | /** Get the biquad coefficients */ | ||
323 | #define HPI_EQUALIZER_COEFFICIENTS HPI_CTL_ATTR(EQUALIZER, 3) | ||
324 | |||
325 | /* Note compander also uses HPI_GENERIC_ENABLE */ | ||
326 | #define HPI_COMPANDER_PARAMS HPI_CTL_ATTR(COMPANDER, 1) | ||
327 | #define HPI_COMPANDER_MAKEUPGAIN HPI_CTL_ATTR(COMPANDER, 2) | ||
328 | #define HPI_COMPANDER_THRESHOLD HPI_CTL_ATTR(COMPANDER, 3) | ||
329 | #define HPI_COMPANDER_RATIO HPI_CTL_ATTR(COMPANDER, 4) | ||
330 | #define HPI_COMPANDER_ATTACK HPI_CTL_ATTR(COMPANDER, 5) | ||
331 | #define HPI_COMPANDER_DECAY HPI_CTL_ATTR(COMPANDER, 6) | ||
332 | |||
333 | /* Cobranet control attributes. */ | ||
334 | #define HPI_COBRANET_SET HPI_CTL_ATTR(COBRANET, 1) | ||
335 | #define HPI_COBRANET_GET HPI_CTL_ATTR(COBRANET, 2) | ||
336 | #define HPI_COBRANET_SET_DATA HPI_CTL_ATTR(COBRANET, 3) | ||
337 | #define HPI_COBRANET_GET_DATA HPI_CTL_ATTR(COBRANET, 4) | ||
338 | #define HPI_COBRANET_GET_STATUS HPI_CTL_ATTR(COBRANET, 5) | ||
339 | #define HPI_COBRANET_SEND_PACKET HPI_CTL_ATTR(COBRANET, 6) | ||
340 | #define HPI_COBRANET_GET_PACKET HPI_CTL_ATTR(COBRANET, 7) | ||
341 | |||
342 | /*------------------------------------------------------------ | 232 | /*------------------------------------------------------------ |
343 | Cobranet Chip Bridge - copied from HMI.H | 233 | Cobranet Chip Bridge - copied from HMI.H |
344 | ------------------------------------------------------------*/ | 234 | ------------------------------------------------------------*/ |
@@ -398,66 +288,19 @@ Used for HPI_ChannelModeSet/Get() | |||
398 | /** Base network time out is set to 100 milli-seconds. */ | 288 | /** Base network time out is set to 100 milli-seconds. */ |
399 | #define HPI_ETHERNET_TIMEOUT_MS (100) | 289 | #define HPI_ETHERNET_TIMEOUT_MS (100) |
400 | 290 | ||
401 | /** \defgroup tonedet_attr Tonedetector attributes | 291 | /** Locked memory buffer alloc/free phases */ |
402 | \{ | 292 | enum HPI_BUFFER_CMDS { |
403 | Used by HPI_ToneDetector_Set() and HPI_ToneDetector_Get() | 293 | /** use one message to allocate or free physical memory */ |
404 | */ | 294 | HPI_BUFFER_CMD_EXTERNAL = 0, |
405 | 295 | /** alloc physical memory */ | |
406 | /** Set the threshold level of a tonedetector, | 296 | HPI_BUFFER_CMD_INTERNAL_ALLOC = 1, |
407 | Threshold is a -ve number in units of dB/100, | 297 | /** send physical memory address to adapter */ |
408 | */ | 298 | HPI_BUFFER_CMD_INTERNAL_GRANTADAPTER = 2, |
409 | #define HPI_TONEDETECTOR_THRESHOLD HPI_CTL_ATTR(TONEDETECTOR, 1) | 299 | /** notify adapter to stop using physical buffer */ |
410 | 300 | HPI_BUFFER_CMD_INTERNAL_REVOKEADAPTER = 3, | |
411 | /** Get the current state of tonedetection | 301 | /** free physical buffer */ |
412 | The result is a bitmap of detected tones. pairs of bits represent the left | 302 | HPI_BUFFER_CMD_INTERNAL_FREE = 4 |
413 | and right channels, with left channel in LSB. | 303 | }; |
414 | The lowest frequency detector state is in the LSB | ||
415 | */ | ||
416 | #define HPI_TONEDETECTOR_STATE HPI_CTL_ATTR(TONEDETECTOR, 2) | ||
417 | |||
418 | /** Get the frequency of a tonedetector band. | ||
419 | */ | ||
420 | #define HPI_TONEDETECTOR_FREQUENCY HPI_CTL_ATTR(TONEDETECTOR, 3) | ||
421 | |||
422 | /**\}*/ | ||
423 | |||
424 | /** \defgroup silencedet_attr SilenceDetector attributes | ||
425 | \{ | ||
426 | */ | ||
427 | |||
428 | /** Get the current state of tonedetection | ||
429 | The result is a bitmap with 1s for silent channels. Left channel is in LSB | ||
430 | */ | ||
431 | #define HPI_SILENCEDETECTOR_STATE \ | ||
432 | HPI_CTL_ATTR(SILENCEDETECTOR, 2) | ||
433 | |||
434 | /** Set the threshold level of a SilenceDetector, | ||
435 | Threshold is a -ve number in units of dB/100, | ||
436 | */ | ||
437 | #define HPI_SILENCEDETECTOR_THRESHOLD \ | ||
438 | HPI_CTL_ATTR(SILENCEDETECTOR, 1) | ||
439 | |||
440 | /** get/set the silence time before the detector triggers | ||
441 | */ | ||
442 | #define HPI_SILENCEDETECTOR_DELAY \ | ||
443 | HPI_CTL_ATTR(SILENCEDETECTOR, 3) | ||
444 | |||
445 | /**\}*/ | ||
446 | |||
447 | /* Locked memory buffer alloc/free phases */ | ||
448 | /** use one message to allocate or free physical memory */ | ||
449 | #define HPI_BUFFER_CMD_EXTERNAL 0 | ||
450 | /** alloc physical memory */ | ||
451 | #define HPI_BUFFER_CMD_INTERNAL_ALLOC 1 | ||
452 | /** send physical memory address to adapter */ | ||
453 | #define HPI_BUFFER_CMD_INTERNAL_GRANTADAPTER 2 | ||
454 | /** notify adapter to stop using physical buffer */ | ||
455 | #define HPI_BUFFER_CMD_INTERNAL_REVOKEADAPTER 3 | ||
456 | /** free physical buffer */ | ||
457 | #define HPI_BUFFER_CMD_INTERNAL_FREE 4 | ||
458 | |||
459 | /******************************************* CONTROLX ATTRIBUTES ****/ | ||
460 | /* NOTE: All controlx attributes must be unique, unlike control attributes */ | ||
461 | 304 | ||
462 | /*****************************************************************************/ | 305 | /*****************************************************************************/ |
463 | /*****************************************************************************/ | 306 | /*****************************************************************************/ |
@@ -482,6 +325,12 @@ Threshold is a -ve number in units of dB/100, | |||
482 | #define HPI_USB_W2K_TAG 0x57495341 /* "ASIW" */ | 325 | #define HPI_USB_W2K_TAG 0x57495341 /* "ASIW" */ |
483 | #define HPI_USB_LINUX_TAG 0x4C495341 /* "ASIL" */ | 326 | #define HPI_USB_LINUX_TAG 0x4C495341 /* "ASIL" */ |
484 | 327 | ||
328 | /** Invalid Adapter index | ||
329 | Used in HPI messages that are not addressed to a specific adapter | ||
330 | Used in DLL to indicate device not present | ||
331 | */ | ||
332 | #define HPI_ADAPTER_INDEX_INVALID 0xFFFF | ||
333 | |||
485 | /** First 2 hex digits define the adapter family */ | 334 | /** First 2 hex digits define the adapter family */ |
486 | #define HPI_ADAPTER_FAMILY_MASK 0xff00 | 335 | #define HPI_ADAPTER_FAMILY_MASK 0xff00 |
487 | #define HPI_MODULE_FAMILY_MASK 0xfff0 | 336 | #define HPI_MODULE_FAMILY_MASK 0xfff0 |
@@ -490,178 +339,180 @@ Threshold is a -ve number in units of dB/100, | |||
490 | #define HPI_MODULE_FAMILY_ASI(f) (f & HPI_MODULE_FAMILY_MASK) | 339 | #define HPI_MODULE_FAMILY_ASI(f) (f & HPI_MODULE_FAMILY_MASK) |
491 | #define HPI_ADAPTER_ASI(f) (f) | 340 | #define HPI_ADAPTER_ASI(f) (f) |
492 | 341 | ||
493 | /******************************************* message types */ | 342 | enum HPI_MESSAGE_TYPES { |
494 | #define HPI_TYPE_MESSAGE 1 | 343 | HPI_TYPE_MESSAGE = 1, |
495 | #define HPI_TYPE_RESPONSE 2 | 344 | HPI_TYPE_RESPONSE = 2, |
496 | #define HPI_TYPE_DATA 3 | 345 | HPI_TYPE_DATA = 3, |
497 | #define HPI_TYPE_SSX2BYPASS_MESSAGE 4 | 346 | HPI_TYPE_SSX2BYPASS_MESSAGE = 4 |
498 | 347 | }; | |
499 | /******************************************* object types */ | 348 | |
500 | #define HPI_OBJ_SUBSYSTEM 1 | 349 | enum HPI_OBJECT_TYPES { |
501 | #define HPI_OBJ_ADAPTER 2 | 350 | HPI_OBJ_SUBSYSTEM = 1, |
502 | #define HPI_OBJ_OSTREAM 3 | 351 | HPI_OBJ_ADAPTER = 2, |
503 | #define HPI_OBJ_ISTREAM 4 | 352 | HPI_OBJ_OSTREAM = 3, |
504 | #define HPI_OBJ_MIXER 5 | 353 | HPI_OBJ_ISTREAM = 4, |
505 | #define HPI_OBJ_NODE 6 | 354 | HPI_OBJ_MIXER = 5, |
506 | #define HPI_OBJ_CONTROL 7 | 355 | HPI_OBJ_NODE = 6, |
507 | #define HPI_OBJ_NVMEMORY 8 | 356 | HPI_OBJ_CONTROL = 7, |
508 | #define HPI_OBJ_GPIO 9 | 357 | HPI_OBJ_NVMEMORY = 8, |
509 | #define HPI_OBJ_WATCHDOG 10 | 358 | HPI_OBJ_GPIO = 9, |
510 | #define HPI_OBJ_CLOCK 11 | 359 | HPI_OBJ_WATCHDOG = 10, |
511 | #define HPI_OBJ_PROFILE 12 | 360 | HPI_OBJ_CLOCK = 11, |
512 | #define HPI_OBJ_CONTROLEX 13 | 361 | HPI_OBJ_PROFILE = 12, |
513 | #define HPI_OBJ_ASYNCEVENT 14 | 362 | HPI_OBJ_CONTROLEX = 13, |
514 | 363 | HPI_OBJ_ASYNCEVENT = 14 | |
515 | #define HPI_OBJ_MAXINDEX 14 | 364 | #define HPI_OBJ_MAXINDEX 14 |
516 | 365 | }; | |
517 | /******************************************* methods/functions */ | 366 | |
518 | 367 | #define HPI_OBJ_FUNCTION_SPACING 0x100 | |
519 | #define HPI_OBJ_FUNCTION_SPACING 0x100 | 368 | #define HPI_FUNC_ID(obj, index) (HPI_OBJ_##obj * HPI_OBJ_FUNCTION_SPACING + index) |
520 | #define HPI_MAKE_INDEX(obj, index) (obj * HPI_OBJ_FUNCTION_SPACING + index) | 369 | |
521 | #define HPI_EXTRACT_INDEX(fn) (fn & 0xff) | 370 | #define HPI_EXTRACT_INDEX(fn) (fn & 0xff) |
522 | 371 | ||
523 | /* SUB-SYSTEM */ | 372 | enum HPI_FUNCTION_IDS { |
524 | #define HPI_SUBSYS_OPEN HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 1) | 373 | HPI_SUBSYS_OPEN = HPI_FUNC_ID(SUBSYSTEM, 1), |
525 | #define HPI_SUBSYS_GET_VERSION HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 2) | 374 | HPI_SUBSYS_GET_VERSION = HPI_FUNC_ID(SUBSYSTEM, 2), |
526 | #define HPI_SUBSYS_GET_INFO HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 3) | 375 | HPI_SUBSYS_GET_INFO = HPI_FUNC_ID(SUBSYSTEM, 3), |
527 | #define HPI_SUBSYS_FIND_ADAPTERS HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 4) | 376 | HPI_SUBSYS_FIND_ADAPTERS = HPI_FUNC_ID(SUBSYSTEM, 4), |
528 | #define HPI_SUBSYS_CREATE_ADAPTER HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 5) | 377 | HPI_SUBSYS_CREATE_ADAPTER = HPI_FUNC_ID(SUBSYSTEM, 5), |
529 | #define HPI_SUBSYS_CLOSE HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 6) | 378 | HPI_SUBSYS_CLOSE = HPI_FUNC_ID(SUBSYSTEM, 6), |
530 | #define HPI_SUBSYS_DELETE_ADAPTER HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 7) | 379 | HPI_SUBSYS_DELETE_ADAPTER = HPI_FUNC_ID(SUBSYSTEM, 7), |
531 | #define HPI_SUBSYS_DRIVER_LOAD HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 8) | 380 | HPI_SUBSYS_DRIVER_LOAD = HPI_FUNC_ID(SUBSYSTEM, 8), |
532 | #define HPI_SUBSYS_DRIVER_UNLOAD HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 9) | 381 | HPI_SUBSYS_DRIVER_UNLOAD = HPI_FUNC_ID(SUBSYSTEM, 9), |
533 | #define HPI_SUBSYS_READ_PORT_8 HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 10) | 382 | HPI_SUBSYS_READ_PORT_8 = HPI_FUNC_ID(SUBSYSTEM, 10), |
534 | #define HPI_SUBSYS_WRITE_PORT_8 HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 11) | 383 | HPI_SUBSYS_WRITE_PORT_8 = HPI_FUNC_ID(SUBSYSTEM, 11), |
535 | #define HPI_SUBSYS_GET_NUM_ADAPTERS HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 12) | 384 | HPI_SUBSYS_GET_NUM_ADAPTERS = HPI_FUNC_ID(SUBSYSTEM, 12), |
536 | #define HPI_SUBSYS_GET_ADAPTER HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 13) | 385 | HPI_SUBSYS_GET_ADAPTER = HPI_FUNC_ID(SUBSYSTEM, 13), |
537 | #define HPI_SUBSYS_SET_NETWORK_INTERFACE HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 14) | 386 | HPI_SUBSYS_SET_NETWORK_INTERFACE = HPI_FUNC_ID(SUBSYSTEM, 14), |
538 | #define HPI_SUBSYS_FUNCTION_COUNT 14 | 387 | HPI_SUBSYS_OPTION_INFO = HPI_FUNC_ID(SUBSYSTEM, 15), |
539 | /* ADAPTER */ | 388 | HPI_SUBSYS_OPTION_GET = HPI_FUNC_ID(SUBSYSTEM, 16), |
540 | #define HPI_ADAPTER_OPEN HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 1) | 389 | HPI_SUBSYS_OPTION_SET = HPI_FUNC_ID(SUBSYSTEM, 17), |
541 | #define HPI_ADAPTER_CLOSE HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 2) | 390 | #define HPI_SUBSYS_FUNCTION_COUNT 17 |
542 | #define HPI_ADAPTER_GET_INFO HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 3) | 391 | |
543 | #define HPI_ADAPTER_GET_ASSERT HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 4) | 392 | HPI_ADAPTER_OPEN = HPI_FUNC_ID(ADAPTER, 1), |
544 | #define HPI_ADAPTER_TEST_ASSERT HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 5) | 393 | HPI_ADAPTER_CLOSE = HPI_FUNC_ID(ADAPTER, 2), |
545 | #define HPI_ADAPTER_SET_MODE HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 6) | 394 | HPI_ADAPTER_GET_INFO = HPI_FUNC_ID(ADAPTER, 3), |
546 | #define HPI_ADAPTER_GET_MODE HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 7) | 395 | HPI_ADAPTER_GET_ASSERT = HPI_FUNC_ID(ADAPTER, 4), |
547 | #define HPI_ADAPTER_ENABLE_CAPABILITY HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 8) | 396 | HPI_ADAPTER_TEST_ASSERT = HPI_FUNC_ID(ADAPTER, 5), |
548 | #define HPI_ADAPTER_SELFTEST HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 9) | 397 | HPI_ADAPTER_SET_MODE = HPI_FUNC_ID(ADAPTER, 6), |
549 | #define HPI_ADAPTER_FIND_OBJECT HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 10) | 398 | HPI_ADAPTER_GET_MODE = HPI_FUNC_ID(ADAPTER, 7), |
550 | #define HPI_ADAPTER_QUERY_FLASH HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 11) | 399 | HPI_ADAPTER_ENABLE_CAPABILITY = HPI_FUNC_ID(ADAPTER, 8), |
551 | #define HPI_ADAPTER_START_FLASH HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 12) | 400 | HPI_ADAPTER_SELFTEST = HPI_FUNC_ID(ADAPTER, 9), |
552 | #define HPI_ADAPTER_PROGRAM_FLASH HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 13) | 401 | HPI_ADAPTER_FIND_OBJECT = HPI_FUNC_ID(ADAPTER, 10), |
553 | #define HPI_ADAPTER_SET_PROPERTY HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 14) | 402 | HPI_ADAPTER_QUERY_FLASH = HPI_FUNC_ID(ADAPTER, 11), |
554 | #define HPI_ADAPTER_GET_PROPERTY HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 15) | 403 | HPI_ADAPTER_START_FLASH = HPI_FUNC_ID(ADAPTER, 12), |
555 | #define HPI_ADAPTER_ENUM_PROPERTY HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 16) | 404 | HPI_ADAPTER_PROGRAM_FLASH = HPI_FUNC_ID(ADAPTER, 13), |
556 | #define HPI_ADAPTER_MODULE_INFO HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 17) | 405 | HPI_ADAPTER_SET_PROPERTY = HPI_FUNC_ID(ADAPTER, 14), |
557 | #define HPI_ADAPTER_DEBUG_READ HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 18) | 406 | HPI_ADAPTER_GET_PROPERTY = HPI_FUNC_ID(ADAPTER, 15), |
407 | HPI_ADAPTER_ENUM_PROPERTY = HPI_FUNC_ID(ADAPTER, 16), | ||
408 | HPI_ADAPTER_MODULE_INFO = HPI_FUNC_ID(ADAPTER, 17), | ||
409 | HPI_ADAPTER_DEBUG_READ = HPI_FUNC_ID(ADAPTER, 18), | ||
558 | #define HPI_ADAPTER_FUNCTION_COUNT 18 | 410 | #define HPI_ADAPTER_FUNCTION_COUNT 18 |
559 | /* OUTPUT STREAM */ | 411 | |
560 | #define HPI_OSTREAM_OPEN HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 1) | 412 | HPI_OSTREAM_OPEN = HPI_FUNC_ID(OSTREAM, 1), |
561 | #define HPI_OSTREAM_CLOSE HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 2) | 413 | HPI_OSTREAM_CLOSE = HPI_FUNC_ID(OSTREAM, 2), |
562 | #define HPI_OSTREAM_WRITE HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 3) | 414 | HPI_OSTREAM_WRITE = HPI_FUNC_ID(OSTREAM, 3), |
563 | #define HPI_OSTREAM_START HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 4) | 415 | HPI_OSTREAM_START = HPI_FUNC_ID(OSTREAM, 4), |
564 | #define HPI_OSTREAM_STOP HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 5) | 416 | HPI_OSTREAM_STOP = HPI_FUNC_ID(OSTREAM, 5), |
565 | #define HPI_OSTREAM_RESET HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 6) | 417 | HPI_OSTREAM_RESET = HPI_FUNC_ID(OSTREAM, 6), |
566 | #define HPI_OSTREAM_GET_INFO HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 7) | 418 | HPI_OSTREAM_GET_INFO = HPI_FUNC_ID(OSTREAM, 7), |
567 | #define HPI_OSTREAM_QUERY_FORMAT HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 8) | 419 | HPI_OSTREAM_QUERY_FORMAT = HPI_FUNC_ID(OSTREAM, 8), |
568 | #define HPI_OSTREAM_DATA HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 9) | 420 | HPI_OSTREAM_DATA = HPI_FUNC_ID(OSTREAM, 9), |
569 | #define HPI_OSTREAM_SET_VELOCITY HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 10) | 421 | HPI_OSTREAM_SET_VELOCITY = HPI_FUNC_ID(OSTREAM, 10), |
570 | #define HPI_OSTREAM_SET_PUNCHINOUT HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 11) | 422 | HPI_OSTREAM_SET_PUNCHINOUT = HPI_FUNC_ID(OSTREAM, 11), |
571 | #define HPI_OSTREAM_SINEGEN HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 12) | 423 | HPI_OSTREAM_SINEGEN = HPI_FUNC_ID(OSTREAM, 12), |
572 | #define HPI_OSTREAM_ANC_RESET HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 13) | 424 | HPI_OSTREAM_ANC_RESET = HPI_FUNC_ID(OSTREAM, 13), |
573 | #define HPI_OSTREAM_ANC_GET_INFO HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 14) | 425 | HPI_OSTREAM_ANC_GET_INFO = HPI_FUNC_ID(OSTREAM, 14), |
574 | #define HPI_OSTREAM_ANC_READ HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 15) | 426 | HPI_OSTREAM_ANC_READ = HPI_FUNC_ID(OSTREAM, 15), |
575 | #define HPI_OSTREAM_SET_TIMESCALE HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 16) | 427 | HPI_OSTREAM_SET_TIMESCALE = HPI_FUNC_ID(OSTREAM, 16), |
576 | #define HPI_OSTREAM_SET_FORMAT HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 17) | 428 | HPI_OSTREAM_SET_FORMAT = HPI_FUNC_ID(OSTREAM, 17), |
577 | #define HPI_OSTREAM_HOSTBUFFER_ALLOC HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 18) | 429 | HPI_OSTREAM_HOSTBUFFER_ALLOC = HPI_FUNC_ID(OSTREAM, 18), |
578 | #define HPI_OSTREAM_HOSTBUFFER_FREE HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 19) | 430 | HPI_OSTREAM_HOSTBUFFER_FREE = HPI_FUNC_ID(OSTREAM, 19), |
579 | #define HPI_OSTREAM_GROUP_ADD HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 20) | 431 | HPI_OSTREAM_GROUP_ADD = HPI_FUNC_ID(OSTREAM, 20), |
580 | #define HPI_OSTREAM_GROUP_GETMAP HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 21) | 432 | HPI_OSTREAM_GROUP_GETMAP = HPI_FUNC_ID(OSTREAM, 21), |
581 | #define HPI_OSTREAM_GROUP_RESET HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 22) | 433 | HPI_OSTREAM_GROUP_RESET = HPI_FUNC_ID(OSTREAM, 22), |
582 | #define HPI_OSTREAM_HOSTBUFFER_GET_INFO HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 23) | 434 | HPI_OSTREAM_HOSTBUFFER_GET_INFO = HPI_FUNC_ID(OSTREAM, 23), |
583 | #define HPI_OSTREAM_WAIT_START HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 24) | 435 | HPI_OSTREAM_WAIT_START = HPI_FUNC_ID(OSTREAM, 24), |
584 | #define HPI_OSTREAM_FUNCTION_COUNT 24 | 436 | #define HPI_OSTREAM_FUNCTION_COUNT 24 |
585 | /* INPUT STREAM */ | 437 | |
586 | #define HPI_ISTREAM_OPEN HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 1) | 438 | HPI_ISTREAM_OPEN = HPI_FUNC_ID(ISTREAM, 1), |
587 | #define HPI_ISTREAM_CLOSE HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 2) | 439 | HPI_ISTREAM_CLOSE = HPI_FUNC_ID(ISTREAM, 2), |
588 | #define HPI_ISTREAM_SET_FORMAT HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 3) | 440 | HPI_ISTREAM_SET_FORMAT = HPI_FUNC_ID(ISTREAM, 3), |
589 | #define HPI_ISTREAM_READ HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 4) | 441 | HPI_ISTREAM_READ = HPI_FUNC_ID(ISTREAM, 4), |
590 | #define HPI_ISTREAM_START HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 5) | 442 | HPI_ISTREAM_START = HPI_FUNC_ID(ISTREAM, 5), |
591 | #define HPI_ISTREAM_STOP HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 6) | 443 | HPI_ISTREAM_STOP = HPI_FUNC_ID(ISTREAM, 6), |
592 | #define HPI_ISTREAM_RESET HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 7) | 444 | HPI_ISTREAM_RESET = HPI_FUNC_ID(ISTREAM, 7), |
593 | #define HPI_ISTREAM_GET_INFO HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 8) | 445 | HPI_ISTREAM_GET_INFO = HPI_FUNC_ID(ISTREAM, 8), |
594 | #define HPI_ISTREAM_QUERY_FORMAT HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 9) | 446 | HPI_ISTREAM_QUERY_FORMAT = HPI_FUNC_ID(ISTREAM, 9), |
595 | #define HPI_ISTREAM_ANC_RESET HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 10) | 447 | HPI_ISTREAM_ANC_RESET = HPI_FUNC_ID(ISTREAM, 10), |
596 | #define HPI_ISTREAM_ANC_GET_INFO HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 11) | 448 | HPI_ISTREAM_ANC_GET_INFO = HPI_FUNC_ID(ISTREAM, 11), |
597 | #define HPI_ISTREAM_ANC_WRITE HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 12) | 449 | HPI_ISTREAM_ANC_WRITE = HPI_FUNC_ID(ISTREAM, 12), |
598 | #define HPI_ISTREAM_HOSTBUFFER_ALLOC HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 13) | 450 | HPI_ISTREAM_HOSTBUFFER_ALLOC = HPI_FUNC_ID(ISTREAM, 13), |
599 | #define HPI_ISTREAM_HOSTBUFFER_FREE HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 14) | 451 | HPI_ISTREAM_HOSTBUFFER_FREE = HPI_FUNC_ID(ISTREAM, 14), |
600 | #define HPI_ISTREAM_GROUP_ADD HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 15) | 452 | HPI_ISTREAM_GROUP_ADD = HPI_FUNC_ID(ISTREAM, 15), |
601 | #define HPI_ISTREAM_GROUP_GETMAP HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 16) | 453 | HPI_ISTREAM_GROUP_GETMAP = HPI_FUNC_ID(ISTREAM, 16), |
602 | #define HPI_ISTREAM_GROUP_RESET HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 17) | 454 | HPI_ISTREAM_GROUP_RESET = HPI_FUNC_ID(ISTREAM, 17), |
603 | #define HPI_ISTREAM_HOSTBUFFER_GET_INFO HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 18) | 455 | HPI_ISTREAM_HOSTBUFFER_GET_INFO = HPI_FUNC_ID(ISTREAM, 18), |
604 | #define HPI_ISTREAM_WAIT_START HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 19) | 456 | HPI_ISTREAM_WAIT_START = HPI_FUNC_ID(ISTREAM, 19), |
605 | #define HPI_ISTREAM_FUNCTION_COUNT 19 | 457 | #define HPI_ISTREAM_FUNCTION_COUNT 19 |
606 | /* MIXER */ | 458 | |
607 | /* NOTE: | 459 | /* NOTE: |
608 | GET_NODE_INFO, SET_CONNECTION, GET_CONNECTIONS are not currently used */ | 460 | GET_NODE_INFO, SET_CONNECTION, GET_CONNECTIONS are not currently used */ |
609 | #define HPI_MIXER_OPEN HPI_MAKE_INDEX(HPI_OBJ_MIXER, 1) | 461 | HPI_MIXER_OPEN = HPI_FUNC_ID(MIXER, 1), |
610 | #define HPI_MIXER_CLOSE HPI_MAKE_INDEX(HPI_OBJ_MIXER, 2) | 462 | HPI_MIXER_CLOSE = HPI_FUNC_ID(MIXER, 2), |
611 | #define HPI_MIXER_GET_INFO HPI_MAKE_INDEX(HPI_OBJ_MIXER, 3) | 463 | HPI_MIXER_GET_INFO = HPI_FUNC_ID(MIXER, 3), |
612 | #define HPI_MIXER_GET_NODE_INFO HPI_MAKE_INDEX(HPI_OBJ_MIXER, 4) | 464 | HPI_MIXER_GET_NODE_INFO = HPI_FUNC_ID(MIXER, 4), |
613 | #define HPI_MIXER_GET_CONTROL HPI_MAKE_INDEX(HPI_OBJ_MIXER, 5) | 465 | HPI_MIXER_GET_CONTROL = HPI_FUNC_ID(MIXER, 5), |
614 | #define HPI_MIXER_SET_CONNECTION HPI_MAKE_INDEX(HPI_OBJ_MIXER, 6) | 466 | HPI_MIXER_SET_CONNECTION = HPI_FUNC_ID(MIXER, 6), |
615 | #define HPI_MIXER_GET_CONNECTIONS HPI_MAKE_INDEX(HPI_OBJ_MIXER, 7) | 467 | HPI_MIXER_GET_CONNECTIONS = HPI_FUNC_ID(MIXER, 7), |
616 | #define HPI_MIXER_GET_CONTROL_BY_INDEX HPI_MAKE_INDEX(HPI_OBJ_MIXER, 8) | 468 | HPI_MIXER_GET_CONTROL_BY_INDEX = HPI_FUNC_ID(MIXER, 8), |
617 | #define HPI_MIXER_GET_CONTROL_ARRAY_BY_INDEX HPI_MAKE_INDEX(HPI_OBJ_MIXER, 9) | 469 | HPI_MIXER_GET_CONTROL_ARRAY_BY_INDEX = HPI_FUNC_ID(MIXER, 9), |
618 | #define HPI_MIXER_GET_CONTROL_MULTIPLE_VALUES HPI_MAKE_INDEX(HPI_OBJ_MIXER, 10) | 470 | HPI_MIXER_GET_CONTROL_MULTIPLE_VALUES = HPI_FUNC_ID(MIXER, 10), |
619 | #define HPI_MIXER_STORE HPI_MAKE_INDEX(HPI_OBJ_MIXER, 11) | 471 | HPI_MIXER_STORE = HPI_FUNC_ID(MIXER, 11), |
620 | #define HPI_MIXER_FUNCTION_COUNT 11 | 472 | #define HPI_MIXER_FUNCTION_COUNT 11 |
621 | /* MIXER CONTROLS */ | 473 | |
622 | #define HPI_CONTROL_GET_INFO HPI_MAKE_INDEX(HPI_OBJ_CONTROL, 1) | 474 | HPI_CONTROL_GET_INFO = HPI_FUNC_ID(CONTROL, 1), |
623 | #define HPI_CONTROL_GET_STATE HPI_MAKE_INDEX(HPI_OBJ_CONTROL, 2) | 475 | HPI_CONTROL_GET_STATE = HPI_FUNC_ID(CONTROL, 2), |
624 | #define HPI_CONTROL_SET_STATE HPI_MAKE_INDEX(HPI_OBJ_CONTROL, 3) | 476 | HPI_CONTROL_SET_STATE = HPI_FUNC_ID(CONTROL, 3), |
625 | #define HPI_CONTROL_FUNCTION_COUNT 3 | 477 | #define HPI_CONTROL_FUNCTION_COUNT 3 |
626 | /* NONVOL MEMORY */ | 478 | |
627 | #define HPI_NVMEMORY_OPEN HPI_MAKE_INDEX(HPI_OBJ_NVMEMORY, 1) | 479 | HPI_NVMEMORY_OPEN = HPI_FUNC_ID(NVMEMORY, 1), |
628 | #define HPI_NVMEMORY_READ_BYTE HPI_MAKE_INDEX(HPI_OBJ_NVMEMORY, 2) | 480 | HPI_NVMEMORY_READ_BYTE = HPI_FUNC_ID(NVMEMORY, 2), |
629 | #define HPI_NVMEMORY_WRITE_BYTE HPI_MAKE_INDEX(HPI_OBJ_NVMEMORY, 3) | 481 | HPI_NVMEMORY_WRITE_BYTE = HPI_FUNC_ID(NVMEMORY, 3), |
630 | #define HPI_NVMEMORY_FUNCTION_COUNT 3 | 482 | #define HPI_NVMEMORY_FUNCTION_COUNT 3 |
631 | /* GPIO */ | 483 | |
632 | #define HPI_GPIO_OPEN HPI_MAKE_INDEX(HPI_OBJ_GPIO, 1) | 484 | HPI_GPIO_OPEN = HPI_FUNC_ID(GPIO, 1), |
633 | #define HPI_GPIO_READ_BIT HPI_MAKE_INDEX(HPI_OBJ_GPIO, 2) | 485 | HPI_GPIO_READ_BIT = HPI_FUNC_ID(GPIO, 2), |
634 | #define HPI_GPIO_WRITE_BIT HPI_MAKE_INDEX(HPI_OBJ_GPIO, 3) | 486 | HPI_GPIO_WRITE_BIT = HPI_FUNC_ID(GPIO, 3), |
635 | #define HPI_GPIO_READ_ALL HPI_MAKE_INDEX(HPI_OBJ_GPIO, 4) | 487 | HPI_GPIO_READ_ALL = HPI_FUNC_ID(GPIO, 4), |
636 | #define HPI_GPIO_WRITE_STATUS HPI_MAKE_INDEX(HPI_OBJ_GPIO, 5) | 488 | HPI_GPIO_WRITE_STATUS = HPI_FUNC_ID(GPIO, 5), |
637 | #define HPI_GPIO_FUNCTION_COUNT 5 | 489 | #define HPI_GPIO_FUNCTION_COUNT 5 |
638 | /* ASYNC EVENT */ | 490 | |
639 | #define HPI_ASYNCEVENT_OPEN HPI_MAKE_INDEX(HPI_OBJ_ASYNCEVENT, 1) | 491 | HPI_ASYNCEVENT_OPEN = HPI_FUNC_ID(ASYNCEVENT, 1), |
640 | #define HPI_ASYNCEVENT_CLOSE HPI_MAKE_INDEX(HPI_OBJ_ASYNCEVENT, 2) | 492 | HPI_ASYNCEVENT_CLOSE = HPI_FUNC_ID(ASYNCEVENT, 2), |
641 | #define HPI_ASYNCEVENT_WAIT HPI_MAKE_INDEX(HPI_OBJ_ASYNCEVENT, 3) | 493 | HPI_ASYNCEVENT_WAIT = HPI_FUNC_ID(ASYNCEVENT, 3), |
642 | #define HPI_ASYNCEVENT_GETCOUNT HPI_MAKE_INDEX(HPI_OBJ_ASYNCEVENT, 4) | 494 | HPI_ASYNCEVENT_GETCOUNT = HPI_FUNC_ID(ASYNCEVENT, 4), |
643 | #define HPI_ASYNCEVENT_GET HPI_MAKE_INDEX(HPI_OBJ_ASYNCEVENT, 5) | 495 | HPI_ASYNCEVENT_GET = HPI_FUNC_ID(ASYNCEVENT, 5), |
644 | #define HPI_ASYNCEVENT_SENDEVENTS HPI_MAKE_INDEX(HPI_OBJ_ASYNCEVENT, 6) | 496 | HPI_ASYNCEVENT_SENDEVENTS = HPI_FUNC_ID(ASYNCEVENT, 6), |
645 | #define HPI_ASYNCEVENT_FUNCTION_COUNT 6 | 497 | #define HPI_ASYNCEVENT_FUNCTION_COUNT 6 |
646 | /* WATCH-DOG */ | 498 | |
647 | #define HPI_WATCHDOG_OPEN HPI_MAKE_INDEX(HPI_OBJ_WATCHDOG, 1) | 499 | HPI_WATCHDOG_OPEN = HPI_FUNC_ID(WATCHDOG, 1), |
648 | #define HPI_WATCHDOG_SET_TIME HPI_MAKE_INDEX(HPI_OBJ_WATCHDOG, 2) | 500 | HPI_WATCHDOG_SET_TIME = HPI_FUNC_ID(WATCHDOG, 2), |
649 | #define HPI_WATCHDOG_PING HPI_MAKE_INDEX(HPI_OBJ_WATCHDOG, 3) | 501 | HPI_WATCHDOG_PING = HPI_FUNC_ID(WATCHDOG, 3), |
650 | /* CLOCK */ | 502 | |
651 | #define HPI_CLOCK_OPEN HPI_MAKE_INDEX(HPI_OBJ_CLOCK, 1) | 503 | HPI_CLOCK_OPEN = HPI_FUNC_ID(CLOCK, 1), |
652 | #define HPI_CLOCK_SET_TIME HPI_MAKE_INDEX(HPI_OBJ_CLOCK, 2) | 504 | HPI_CLOCK_SET_TIME = HPI_FUNC_ID(CLOCK, 2), |
653 | #define HPI_CLOCK_GET_TIME HPI_MAKE_INDEX(HPI_OBJ_CLOCK, 3) | 505 | HPI_CLOCK_GET_TIME = HPI_FUNC_ID(CLOCK, 3), |
654 | /* PROFILE */ | 506 | |
655 | #define HPI_PROFILE_OPEN_ALL HPI_MAKE_INDEX(HPI_OBJ_PROFILE, 1) | 507 | HPI_PROFILE_OPEN_ALL = HPI_FUNC_ID(PROFILE, 1), |
656 | #define HPI_PROFILE_START_ALL HPI_MAKE_INDEX(HPI_OBJ_PROFILE, 2) | 508 | HPI_PROFILE_START_ALL = HPI_FUNC_ID(PROFILE, 2), |
657 | #define HPI_PROFILE_STOP_ALL HPI_MAKE_INDEX(HPI_OBJ_PROFILE, 3) | 509 | HPI_PROFILE_STOP_ALL = HPI_FUNC_ID(PROFILE, 3), |
658 | #define HPI_PROFILE_GET HPI_MAKE_INDEX(HPI_OBJ_PROFILE, 4) | 510 | HPI_PROFILE_GET = HPI_FUNC_ID(PROFILE, 4), |
659 | #define HPI_PROFILE_GET_IDLECOUNT HPI_MAKE_INDEX(HPI_OBJ_PROFILE, 5) | 511 | HPI_PROFILE_GET_IDLECOUNT = HPI_FUNC_ID(PROFILE, 5), |
660 | #define HPI_PROFILE_GET_NAME HPI_MAKE_INDEX(HPI_OBJ_PROFILE, 6) | 512 | HPI_PROFILE_GET_NAME = HPI_FUNC_ID(PROFILE, 6), |
661 | #define HPI_PROFILE_GET_UTILIZATION HPI_MAKE_INDEX(HPI_OBJ_PROFILE, 7) | 513 | HPI_PROFILE_GET_UTILIZATION = HPI_FUNC_ID(PROFILE, 7) |
662 | #define HPI_PROFILE_FUNCTION_COUNT 7 | 514 | #define HPI_PROFILE_FUNCTION_COUNT 7 |
663 | /* ////////////////////////////////////////////////////////////////////// */ | 515 | }; |
664 | /* PRIVATE ATTRIBUTES */ | ||
665 | 516 | ||
666 | /* ////////////////////////////////////////////////////////////////////// */ | 517 | /* ////////////////////////////////////////////////////////////////////// */ |
667 | /* STRUCTURES */ | 518 | /* STRUCTURES */ |
@@ -672,18 +523,7 @@ Threshold is a -ve number in units of dB/100, | |||
672 | /** PCI bus resource */ | 523 | /** PCI bus resource */ |
673 | struct hpi_pci { | 524 | struct hpi_pci { |
674 | u32 __iomem *ap_mem_base[HPI_MAX_ADAPTER_MEM_SPACES]; | 525 | u32 __iomem *ap_mem_base[HPI_MAX_ADAPTER_MEM_SPACES]; |
675 | struct pci_dev *p_os_data; | 526 | struct pci_dev *pci_dev; |
676 | |||
677 | #ifndef HPI64BIT /* keep structure size constant */ | ||
678 | u32 padding[HPI_MAX_ADAPTER_MEM_SPACES + 1]; | ||
679 | #endif | ||
680 | u16 vendor_id; | ||
681 | u16 device_id; | ||
682 | u16 subsys_vendor_id; | ||
683 | u16 subsys_device_id; | ||
684 | u16 bus_number; | ||
685 | u16 device_number; | ||
686 | u32 interrupt; | ||
687 | }; | 527 | }; |
688 | 528 | ||
689 | struct hpi_resource { | 529 | struct hpi_resource { |
@@ -783,24 +623,18 @@ struct hpi_subsys_res { | |||
783 | u16 aw_adapter_list[HPI_MAX_ADAPTERS]; | 623 | u16 aw_adapter_list[HPI_MAX_ADAPTERS]; |
784 | }; | 624 | }; |
785 | 625 | ||
786 | struct hpi_adapter_msg { | ||
787 | u32 adapter_mode; /* adapter mode */ | ||
788 | u16 assert_id; /* assert number for "test assert" call | ||
789 | object_index for find object call | ||
790 | query_or_set for hpi_adapter_set_mode_ex() */ | ||
791 | u16 object_type; /* for adapter find object call */ | ||
792 | }; | ||
793 | |||
794 | union hpi_adapterx_msg { | 626 | union hpi_adapterx_msg { |
795 | struct hpi_adapter_msg adapter; | ||
796 | struct { | 627 | struct { |
797 | u32 offset; | 628 | u32 dsp_address; |
798 | } query_flash; | 629 | u32 count_bytes; |
630 | } debug_read; | ||
799 | struct { | 631 | struct { |
800 | u32 offset; | 632 | u32 adapter_mode; |
801 | u32 length; | 633 | u16 query_or_set; |
802 | u32 key; | 634 | } mode; |
803 | } start_flash; | 635 | struct { |
636 | u16 index; | ||
637 | } module_info; | ||
804 | struct { | 638 | struct { |
805 | u32 checksum; | 639 | u32 checksum; |
806 | u16 sequence; | 640 | u16 sequence; |
@@ -809,28 +643,38 @@ union hpi_adapterx_msg { | |||
809 | u16 unused; | 643 | u16 unused; |
810 | } program_flash; | 644 | } program_flash; |
811 | struct { | 645 | struct { |
646 | u16 index; | ||
647 | u16 what; | ||
648 | u16 property_index; | ||
649 | } property_enum; | ||
650 | struct { | ||
812 | u16 property; | 651 | u16 property; |
813 | u16 parameter1; | 652 | u16 parameter1; |
814 | u16 parameter2; | 653 | u16 parameter2; |
815 | } property_set; | 654 | } property_set; |
816 | struct { | 655 | struct { |
817 | u16 index; | 656 | u32 offset; |
818 | u16 what; | 657 | } query_flash; |
819 | u16 property_index; | ||
820 | } property_enum; | ||
821 | struct { | 658 | struct { |
822 | u16 index; | 659 | u32 pad32; |
823 | } module_info; | 660 | u16 key1; |
661 | u16 key2; | ||
662 | } restart; | ||
824 | struct { | 663 | struct { |
825 | u32 dsp_address; | 664 | u32 offset; |
826 | u32 count_bytes; | 665 | u32 length; |
827 | } debug_read; | 666 | u32 key; |
667 | } start_flash; | ||
668 | struct { | ||
669 | u32 pad32; | ||
670 | u16 value; | ||
671 | } test_assert; | ||
828 | }; | 672 | }; |
829 | 673 | ||
830 | struct hpi_adapter_res { | 674 | struct hpi_adapter_res { |
831 | u32 serial_number; | 675 | u32 serial_number; |
832 | u16 adapter_type; | 676 | u16 adapter_type; |
833 | u16 adapter_index; /* is this needed? also used for dsp_index */ | 677 | u16 adapter_index; |
834 | u16 num_instreams; | 678 | u16 num_instreams; |
835 | u16 num_outstreams; | 679 | u16 num_outstreams; |
836 | u16 num_mixers; | 680 | u16 num_mixers; |
@@ -839,12 +683,18 @@ struct hpi_adapter_res { | |||
839 | }; | 683 | }; |
840 | 684 | ||
841 | union hpi_adapterx_res { | 685 | union hpi_adapterx_res { |
842 | struct hpi_adapter_res adapter; | 686 | struct hpi_adapter_res info; |
843 | struct { | 687 | struct { |
844 | u32 checksum; | 688 | u32 p1; |
845 | u32 length; | 689 | u16 count; |
846 | u32 version; | 690 | u16 dsp_index; |
847 | } query_flash; | 691 | u32 p2; |
692 | u32 dsp_msg_addr; | ||
693 | char sz_message[HPI_STRING_LEN]; | ||
694 | } assert; | ||
695 | struct { | ||
696 | u32 adapter_mode; | ||
697 | } mode; | ||
848 | struct { | 698 | struct { |
849 | u16 sequence; | 699 | u16 sequence; |
850 | } program_flash; | 700 | } program_flash; |
@@ -852,6 +702,11 @@ union hpi_adapterx_res { | |||
852 | u16 parameter1; | 702 | u16 parameter1; |
853 | u16 parameter2; | 703 | u16 parameter2; |
854 | } property_get; | 704 | } property_get; |
705 | struct { | ||
706 | u32 checksum; | ||
707 | u32 length; | ||
708 | u32 version; | ||
709 | } query_flash; | ||
855 | }; | 710 | }; |
856 | 711 | ||
857 | struct hpi_stream_msg { | 712 | struct hpi_stream_msg { |
@@ -911,7 +766,7 @@ struct hpi_stream_res { | |||
911 | struct hpi_mixer_msg { | 766 | struct hpi_mixer_msg { |
912 | u16 control_index; | 767 | u16 control_index; |
913 | u16 control_type; /* = HPI_CONTROL_METER _VOLUME etc */ | 768 | u16 control_type; /* = HPI_CONTROL_METER _VOLUME etc */ |
914 | u16 padding1; /* maintain alignment of subsequent fields */ | 769 | u16 padding1; /* Maintain alignment of subsequent fields */ |
915 | u16 node_type1; /* = HPI_SOURCENODE_LINEIN etc */ | 770 | u16 node_type1; /* = HPI_SOURCENODE_LINEIN etc */ |
916 | u16 node_index1; /* = 0..N */ | 771 | u16 node_index1; /* = 0..N */ |
917 | u16 node_type2; | 772 | u16 node_type2; |
@@ -1000,12 +855,16 @@ union hpi_control_union_res { | |||
1000 | u32 band; | 855 | u32 band; |
1001 | u32 frequency; | 856 | u32 frequency; |
1002 | u32 gain; | 857 | u32 gain; |
1003 | u32 level; | ||
1004 | u32 deemphasis; | 858 | u32 deemphasis; |
1005 | struct { | 859 | struct { |
1006 | u32 data[2]; | 860 | u32 data[2]; |
1007 | u32 bLER; | 861 | u32 bLER; |
1008 | } rds; | 862 | } rds; |
863 | short s_level; | ||
864 | struct { | ||
865 | u16 value; | ||
866 | u16 mask; | ||
867 | } status; | ||
1009 | } tuner; | 868 | } tuner; |
1010 | struct { | 869 | struct { |
1011 | char sz_data[8]; | 870 | char sz_data[8]; |
@@ -1178,11 +1037,11 @@ struct hpi_profile_res_open { | |||
1178 | }; | 1037 | }; |
1179 | 1038 | ||
1180 | struct hpi_profile_res_time { | 1039 | struct hpi_profile_res_time { |
1181 | u32 micro_seconds; | 1040 | u32 total_tick_count; |
1182 | u32 call_count; | 1041 | u32 call_count; |
1183 | u32 max_micro_seconds; | 1042 | u32 max_tick_count; |
1184 | u32 min_micro_seconds; | 1043 | u32 ticks_per_millisecond; |
1185 | u16 seconds; | 1044 | u16 profile_interval; |
1186 | }; | 1045 | }; |
1187 | 1046 | ||
1188 | struct hpi_profile_res_name { | 1047 | struct hpi_profile_res_name { |
@@ -1218,7 +1077,6 @@ struct hpi_message { | |||
1218 | u16 obj_index; /* */ | 1077 | u16 obj_index; /* */ |
1219 | union { | 1078 | union { |
1220 | struct hpi_subsys_msg s; | 1079 | struct hpi_subsys_msg s; |
1221 | struct hpi_adapter_msg a; | ||
1222 | union hpi_adapterx_msg ax; | 1080 | union hpi_adapterx_msg ax; |
1223 | struct hpi_stream_msg d; | 1081 | struct hpi_stream_msg d; |
1224 | struct hpi_mixer_msg m; | 1082 | struct hpi_mixer_msg m; |
@@ -1239,7 +1097,7 @@ struct hpi_message { | |||
1239 | }; | 1097 | }; |
1240 | 1098 | ||
1241 | #define HPI_MESSAGE_SIZE_BY_OBJECT { \ | 1099 | #define HPI_MESSAGE_SIZE_BY_OBJECT { \ |
1242 | sizeof(struct hpi_message_header) , /* default, no object type 0 */ \ | 1100 | sizeof(struct hpi_message_header) , /* Default, no object type 0 */ \ |
1243 | sizeof(struct hpi_message_header) + sizeof(struct hpi_subsys_msg),\ | 1101 | sizeof(struct hpi_message_header) + sizeof(struct hpi_subsys_msg),\ |
1244 | sizeof(struct hpi_message_header) + sizeof(union hpi_adapterx_msg),\ | 1102 | sizeof(struct hpi_message_header) + sizeof(union hpi_adapterx_msg),\ |
1245 | sizeof(struct hpi_message_header) + sizeof(struct hpi_stream_msg),\ | 1103 | sizeof(struct hpi_message_header) + sizeof(struct hpi_stream_msg),\ |
@@ -1277,7 +1135,6 @@ struct hpi_response { | |||
1277 | u16 specific_error; /* adapter specific error */ | 1135 | u16 specific_error; /* adapter specific error */ |
1278 | union { | 1136 | union { |
1279 | struct hpi_subsys_res s; | 1137 | struct hpi_subsys_res s; |
1280 | struct hpi_adapter_res a; | ||
1281 | union hpi_adapterx_res ax; | 1138 | union hpi_adapterx_res ax; |
1282 | struct hpi_stream_res d; | 1139 | struct hpi_stream_res d; |
1283 | struct hpi_mixer_res m; | 1140 | struct hpi_mixer_res m; |
@@ -1297,7 +1154,7 @@ struct hpi_response { | |||
1297 | }; | 1154 | }; |
1298 | 1155 | ||
1299 | #define HPI_RESPONSE_SIZE_BY_OBJECT { \ | 1156 | #define HPI_RESPONSE_SIZE_BY_OBJECT { \ |
1300 | sizeof(struct hpi_response_header) ,/* default, no object type 0 */ \ | 1157 | sizeof(struct hpi_response_header) ,/* Default, no object type 0 */ \ |
1301 | sizeof(struct hpi_response_header) + sizeof(struct hpi_subsys_res),\ | 1158 | sizeof(struct hpi_response_header) + sizeof(struct hpi_subsys_res),\ |
1302 | sizeof(struct hpi_response_header) + sizeof(union hpi_adapterx_res),\ | 1159 | sizeof(struct hpi_response_header) + sizeof(union hpi_adapterx_res),\ |
1303 | sizeof(struct hpi_response_header) + sizeof(struct hpi_stream_res),\ | 1160 | sizeof(struct hpi_response_header) + sizeof(struct hpi_stream_res),\ |
@@ -1394,6 +1251,17 @@ struct hpi_res_adapter_program_flash { | |||
1394 | sizeof(struct hpi_response_header) - sizeof(u16)]; | 1251 | sizeof(struct hpi_response_header) - sizeof(u16)]; |
1395 | }; | 1252 | }; |
1396 | 1253 | ||
1254 | struct hpi_msg_adapter_debug_read { | ||
1255 | struct hpi_message_header h; | ||
1256 | u32 dsp_address; | ||
1257 | u32 count_bytes; | ||
1258 | }; | ||
1259 | |||
1260 | struct hpi_res_adapter_debug_read { | ||
1261 | struct hpi_response_header h; | ||
1262 | u8 bytes[256]; | ||
1263 | }; | ||
1264 | |||
1397 | #if 1 | 1265 | #if 1 |
1398 | #define hpi_message_header_v1 hpi_message_header | 1266 | #define hpi_message_header_v1 hpi_message_header |
1399 | #define hpi_response_header_v1 hpi_response_header | 1267 | #define hpi_response_header_v1 hpi_response_header |
@@ -1414,23 +1282,10 @@ struct hpi_response_header_v1 { | |||
1414 | }; | 1282 | }; |
1415 | #endif | 1283 | #endif |
1416 | 1284 | ||
1417 | /* STRV HPI Packet */ | ||
1418 | struct hpi_msg_strv { | ||
1419 | struct hpi_message_header h; | ||
1420 | struct hpi_entity strv; | ||
1421 | }; | ||
1422 | |||
1423 | struct hpi_res_strv { | ||
1424 | struct hpi_response_header h; | ||
1425 | struct hpi_entity strv; | ||
1426 | }; | ||
1427 | #define MIN_STRV_PACKET_SIZE sizeof(struct hpi_res_strv) | ||
1428 | |||
1429 | struct hpi_msg_payload_v0 { | 1285 | struct hpi_msg_payload_v0 { |
1430 | struct hpi_message_header h; | 1286 | struct hpi_message_header h; |
1431 | union { | 1287 | union { |
1432 | struct hpi_subsys_msg s; | 1288 | struct hpi_subsys_msg s; |
1433 | struct hpi_adapter_msg a; | ||
1434 | union hpi_adapterx_msg ax; | 1289 | union hpi_adapterx_msg ax; |
1435 | struct hpi_stream_msg d; | 1290 | struct hpi_stream_msg d; |
1436 | struct hpi_mixer_msg m; | 1291 | struct hpi_mixer_msg m; |
@@ -1451,7 +1306,6 @@ struct hpi_res_payload_v0 { | |||
1451 | struct hpi_response_header h; | 1306 | struct hpi_response_header h; |
1452 | union { | 1307 | union { |
1453 | struct hpi_subsys_res s; | 1308 | struct hpi_subsys_res s; |
1454 | struct hpi_adapter_res a; | ||
1455 | union hpi_adapterx_res ax; | 1309 | union hpi_adapterx_res ax; |
1456 | struct hpi_stream_res d; | 1310 | struct hpi_stream_res d; |
1457 | struct hpi_mixer_res m; | 1311 | struct hpi_mixer_res m; |
@@ -1471,13 +1325,13 @@ struct hpi_res_payload_v0 { | |||
1471 | union hpi_message_buffer_v1 { | 1325 | union hpi_message_buffer_v1 { |
1472 | struct hpi_message m0; /* version 0 */ | 1326 | struct hpi_message m0; /* version 0 */ |
1473 | struct hpi_message_header_v1 h; | 1327 | struct hpi_message_header_v1 h; |
1474 | unsigned char buf[HPI_MAX_PAYLOAD_SIZE]; | 1328 | u8 buf[HPI_MAX_PAYLOAD_SIZE]; |
1475 | }; | 1329 | }; |
1476 | 1330 | ||
1477 | union hpi_response_buffer_v1 { | 1331 | union hpi_response_buffer_v1 { |
1478 | struct hpi_response r0; /* version 0 */ | 1332 | struct hpi_response r0; /* version 0 */ |
1479 | struct hpi_response_header_v1 h; | 1333 | struct hpi_response_header_v1 h; |
1480 | unsigned char buf[HPI_MAX_PAYLOAD_SIZE]; | 1334 | u8 buf[HPI_MAX_PAYLOAD_SIZE]; |
1481 | }; | 1335 | }; |
1482 | 1336 | ||
1483 | compile_time_assert((sizeof(union hpi_message_buffer_v1) <= | 1337 | compile_time_assert((sizeof(union hpi_message_buffer_v1) <= |
@@ -1499,6 +1353,11 @@ struct hpi_control_defn { | |||
1499 | /*////////////////////////////////////////////////////////////////////////// */ | 1353 | /*////////////////////////////////////////////////////////////////////////// */ |
1500 | /* declarations for control caching (internal to HPI<->DSP interaction) */ | 1354 | /* declarations for control caching (internal to HPI<->DSP interaction) */ |
1501 | 1355 | ||
1356 | /** indicates a cached u16 value is invalid. */ | ||
1357 | #define HPI_CACHE_INVALID_UINT16 0xFFFF | ||
1358 | /** indicates a cached short value is invalid. */ | ||
1359 | #define HPI_CACHE_INVALID_SHORT -32768 | ||
1360 | |||
1502 | /** A compact representation of (part of) a controls state. | 1361 | /** A compact representation of (part of) a controls state. |
1503 | Used for efficient transfer of the control state | 1362 | Used for efficient transfer of the control state |
1504 | between DSP and host or across a network | 1363 | between DSP and host or across a network |
@@ -1512,58 +1371,103 @@ struct hpi_control_cache_info { | |||
1512 | u16 control_index; | 1371 | u16 control_index; |
1513 | }; | 1372 | }; |
1514 | 1373 | ||
1515 | struct hpi_control_cache_single { | 1374 | struct hpi_control_cache_vol { |
1375 | struct hpi_control_cache_info i; | ||
1376 | short an_log[2]; | ||
1377 | char temp_padding[4]; | ||
1378 | }; | ||
1379 | |||
1380 | struct hpi_control_cache_meter { | ||
1381 | struct hpi_control_cache_info i; | ||
1382 | short an_log_peak[2]; | ||
1383 | short an_logRMS[2]; | ||
1384 | }; | ||
1385 | |||
1386 | struct hpi_control_cache_channelmode { | ||
1387 | struct hpi_control_cache_info i; | ||
1388 | u16 mode; | ||
1389 | char temp_padding[6]; | ||
1390 | }; | ||
1391 | |||
1392 | struct hpi_control_cache_mux { | ||
1393 | struct hpi_control_cache_info i; | ||
1394 | u16 source_node_type; | ||
1395 | u16 source_node_index; | ||
1396 | char temp_padding[4]; | ||
1397 | }; | ||
1398 | |||
1399 | struct hpi_control_cache_level { | ||
1400 | struct hpi_control_cache_info i; | ||
1401 | short an_log[2]; | ||
1402 | char temp_padding[4]; | ||
1403 | }; | ||
1404 | |||
1405 | struct hpi_control_cache_tuner { | ||
1406 | struct hpi_control_cache_info i; | ||
1407 | u32 freq_ink_hz; | ||
1408 | u16 band; | ||
1409 | short s_level_avg; | ||
1410 | }; | ||
1411 | |||
1412 | struct hpi_control_cache_aes3rx { | ||
1413 | struct hpi_control_cache_info i; | ||
1414 | u32 error_status; | ||
1415 | u32 format; | ||
1416 | }; | ||
1417 | |||
1418 | struct hpi_control_cache_aes3tx { | ||
1419 | struct hpi_control_cache_info i; | ||
1420 | u32 format; | ||
1421 | char temp_padding[4]; | ||
1422 | }; | ||
1423 | |||
1424 | struct hpi_control_cache_tonedetector { | ||
1425 | struct hpi_control_cache_info i; | ||
1426 | u16 state; | ||
1427 | char temp_padding[6]; | ||
1428 | }; | ||
1429 | |||
1430 | struct hpi_control_cache_silencedetector { | ||
1431 | struct hpi_control_cache_info i; | ||
1432 | u32 state; | ||
1433 | char temp_padding[4]; | ||
1434 | }; | ||
1435 | |||
1436 | struct hpi_control_cache_sampleclock { | ||
1437 | struct hpi_control_cache_info i; | ||
1438 | u16 source; | ||
1439 | u16 source_index; | ||
1440 | u32 sample_rate; | ||
1441 | }; | ||
1442 | |||
1443 | struct hpi_control_cache_microphone { | ||
1444 | struct hpi_control_cache_info i; | ||
1445 | u16 phantom_state; | ||
1446 | char temp_padding[6]; | ||
1447 | }; | ||
1448 | |||
1449 | struct hpi_control_cache_generic { | ||
1516 | struct hpi_control_cache_info i; | 1450 | struct hpi_control_cache_info i; |
1451 | u32 dw1; | ||
1452 | u32 dw2; | ||
1453 | }; | ||
1454 | |||
1455 | struct hpi_control_cache_single { | ||
1517 | union { | 1456 | union { |
1518 | struct { /* volume */ | 1457 | struct hpi_control_cache_info i; |
1519 | short an_log[2]; | 1458 | struct hpi_control_cache_vol vol; |
1520 | } v; | 1459 | struct hpi_control_cache_meter meter; |
1521 | struct { /* peak meter */ | 1460 | struct hpi_control_cache_channelmode mode; |
1522 | short an_log_peak[2]; | 1461 | struct hpi_control_cache_mux mux; |
1523 | short an_logRMS[2]; | 1462 | struct hpi_control_cache_level level; |
1524 | } p; | 1463 | struct hpi_control_cache_tuner tuner; |
1525 | struct { /* channel mode */ | 1464 | struct hpi_control_cache_aes3rx aes3rx; |
1526 | u16 mode; | 1465 | struct hpi_control_cache_aes3tx aes3tx; |
1527 | } m; | 1466 | struct hpi_control_cache_tonedetector tone; |
1528 | struct { /* multiplexer */ | 1467 | struct hpi_control_cache_silencedetector silence; |
1529 | u16 source_node_type; | 1468 | struct hpi_control_cache_sampleclock clk; |
1530 | u16 source_node_index; | 1469 | struct hpi_control_cache_microphone microphone; |
1531 | } x; | 1470 | struct hpi_control_cache_generic generic; |
1532 | struct { /* level/trim */ | ||
1533 | short an_log[2]; | ||
1534 | } l; | ||
1535 | struct { /* tuner - partial caching. | ||
1536 | some attributes go to the DSP. */ | ||
1537 | u32 freq_ink_hz; | ||
1538 | u16 band; | ||
1539 | u16 level; | ||
1540 | } t; | ||
1541 | struct { /* AESEBU rx status */ | ||
1542 | u32 error_status; | ||
1543 | u32 source; | ||
1544 | } aes3rx; | ||
1545 | struct { /* AESEBU tx */ | ||
1546 | u32 format; | ||
1547 | } aes3tx; | ||
1548 | struct { /* tone detector */ | ||
1549 | u16 state; | ||
1550 | } tone; | ||
1551 | struct { /* silence detector */ | ||
1552 | u32 state; | ||
1553 | u32 count; | ||
1554 | } silence; | ||
1555 | struct { /* sample clock */ | ||
1556 | u16 source; | ||
1557 | u16 source_index; | ||
1558 | u32 sample_rate; | ||
1559 | } clk; | ||
1560 | struct { /* microphone control */ | ||
1561 | u16 state; | ||
1562 | } phantom_power; | ||
1563 | struct { /* generic control */ | ||
1564 | u32 dw1; | ||
1565 | u32 dw2; | ||
1566 | } g; | ||
1567 | } u; | 1471 | } u; |
1568 | }; | 1472 | }; |
1569 | 1473 | ||