1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#ifndef DSPAPIIOCTL_
21#define DSPAPIIOCTL_
22
23#include <dspbridge/cmm.h>
24#include <dspbridge/strmdefs.h>
25#include <dspbridge/dbdcd.h>
26
27union trapped_args {
28
29
30 struct {
31 u32 node_id;
32 struct dsp_ndbprops __user *ndb_props;
33 u32 ndb_props_size;
34 u32 __user *num_nodes;
35 } args_mgr_enumnode_info;
36
37 struct {
38 u32 processor_id;
39 struct dsp_processorinfo __user *processor_info;
40 u32 processor_info_size;
41 u32 __user *num_procs;
42 } args_mgr_enumproc_info;
43
44 struct {
45 struct dsp_uuid *uuid_obj;
46 enum dsp_dcdobjtype obj_type;
47 char *sz_path_name;
48 } args_mgr_registerobject;
49
50 struct {
51 struct dsp_uuid *uuid_obj;
52 enum dsp_dcdobjtype obj_type;
53 } args_mgr_unregisterobject;
54
55 struct {
56 struct dsp_notification __user *__user *anotifications;
57 u32 count;
58 u32 __user *index;
59 u32 timeout;
60 } args_mgr_wait;
61
62
63 struct {
64 u32 processor_id;
65 struct dsp_processorattrin __user *attr_in;
66 void *__user *ph_processor;
67 } args_proc_attach;
68
69 struct {
70 void *processor;
71 u32 cmd;
72 struct dsp_cbdata __user *args;
73 } args_proc_ctrl;
74
75 struct {
76 void *processor;
77 } args_proc_detach;
78
79 struct {
80 void *processor;
81 void *__user *node_tab;
82 u32 node_tab_size;
83 u32 __user *num_nodes;
84 u32 __user *allocated;
85 } args_proc_enumnode_info;
86
87 struct {
88 void *processor;
89 u32 resource_type;
90 struct dsp_resourceinfo *resource_info;
91 u32 resource_info_size;
92 } args_proc_enumresources;
93
94 struct {
95 void *processor;
96 struct dsp_processorstate __user *proc_state_obj;
97 u32 state_info_size;
98 } args_proc_getstate;
99
100 struct {
101 void *processor;
102 u8 __user *buf;
103 u8 __user *size;
104 u32 max_size;
105 } args_proc_gettrace;
106
107 struct {
108 void *processor;
109 s32 argc_index;
110 char __user *__user *user_args;
111 char *__user *user_envp;
112 } args_proc_load;
113
114 struct {
115 void *processor;
116 u32 event_mask;
117 u32 notify_type;
118 struct dsp_notification __user *notification;
119 } args_proc_register_notify;
120
121 struct {
122 void *processor;
123 u32 size;
124 void *__user *rsv_addr;
125 } args_proc_rsvmem;
126
127 struct {
128 void *processor;
129 u32 size;
130 void *rsv_addr;
131 } args_proc_unrsvmem;
132
133 struct {
134 void *processor;
135 void *mpu_addr;
136 u32 size;
137 void *req_addr;
138 void *__user *map_addr;
139 u32 map_attr;
140 } args_proc_mapmem;
141
142 struct {
143 void *processor;
144 u32 size;
145 void *map_addr;
146 } args_proc_unmapmem;
147
148 struct {
149 void *processor;
150 void *mpu_addr;
151 u32 size;
152 u32 dir;
153 } args_proc_dma;
154
155 struct {
156 void *processor;
157 void *mpu_addr;
158 u32 size;
159 u32 flags;
160 } args_proc_flushmemory;
161
162 struct {
163 void *processor;
164 void *mpu_addr;
165 u32 size;
166 } args_proc_invalidatememory;
167
168
169 struct {
170 void *processor;
171 struct dsp_uuid __user *node_id_ptr;
172 struct dsp_cbdata __user *args;
173 struct dsp_nodeattrin __user *attr_in;
174 void *__user *node;
175 } args_node_allocate;
176
177 struct {
178 void *node;
179 u32 size;
180 struct dsp_bufferattr __user *attr;
181 u8 *__user *buffer;
182 } args_node_allocmsgbuf;
183
184 struct {
185 void *node;
186 s32 prio;
187 } args_node_changepriority;
188
189 struct {
190 void *node;
191 u32 stream_id;
192 void *other_node;
193 u32 other_stream;
194 struct dsp_strmattr __user *attrs;
195 struct dsp_cbdata __user *conn_param;
196 } args_node_connect;
197
198 struct {
199 void *node;
200 } args_node_create;
201
202 struct {
203 void *node;
204 } args_node_delete;
205
206 struct {
207 void *node;
208 struct dsp_bufferattr __user *attr;
209 u8 *buffer;
210 } args_node_freemsgbuf;
211
212 struct {
213 void *node;
214 struct dsp_nodeattr __user *attr;
215 u32 attr_size;
216 } args_node_getattr;
217
218 struct {
219 void *node;
220 struct dsp_msg __user *message;
221 u32 timeout;
222 } args_node_getmessage;
223
224 struct {
225 void *node;
226 } args_node_pause;
227
228 struct {
229 void *node;
230 struct dsp_msg __user *message;
231 u32 timeout;
232 } args_node_putmessage;
233
234 struct {
235 void *node;
236 u32 event_mask;
237 u32 notify_type;
238 struct dsp_notification __user *notification;
239 } args_node_registernotify;
240
241 struct {
242 void *node;
243 } args_node_run;
244
245 struct {
246 void *node;
247 int __user *status;
248 } args_node_terminate;
249
250 struct {
251 void *processor;
252 struct dsp_uuid __user *node_id_ptr;
253 struct dsp_ndbprops __user *node_props;
254 } args_node_getuuidprops;
255
256
257
258 struct {
259 void *stream;
260 u32 size;
261 u8 *__user *ap_buffer;
262 u32 num_bufs;
263 } args_strm_allocatebuffer;
264
265 struct {
266 void *stream;
267 } args_strm_close;
268
269 struct {
270 void *stream;
271 u8 *__user *ap_buffer;
272 u32 num_bufs;
273 } args_strm_freebuffer;
274
275 struct {
276 void *stream;
277 void **event;
278 } args_strm_geteventhandle;
279
280 struct {
281 void *stream;
282 struct stream_info __user *stream_info;
283 u32 stream_info_size;
284 } args_strm_getinfo;
285
286 struct {
287 void *stream;
288 bool flush_flag;
289 } args_strm_idle;
290
291 struct {
292 void *stream;
293 u8 *buffer;
294 u32 bytes;
295 u32 buf_size;
296 u32 arg;
297 } args_strm_issue;
298
299 struct {
300 void *node;
301 u32 direction;
302 u32 index;
303 struct strm_attr __user *attr_in;
304 void *__user *stream;
305 } args_strm_open;
306
307 struct {
308 void *stream;
309 u8 *__user *buf_ptr;
310 u32 __user *bytes;
311 u32 __user *buf_size_ptr;
312 u32 __user *arg;
313 } args_strm_reclaim;
314
315 struct {
316 void *stream;
317 u32 event_mask;
318 u32 notify_type;
319 struct dsp_notification __user *notification;
320 } args_strm_registernotify;
321
322 struct {
323 void *__user *stream_tab;
324 u32 strm_num;
325 u32 __user *mask;
326 u32 timeout;
327 } args_strm_select;
328
329
330 struct {
331 struct cmm_object *cmm_mgr;
332 u32 size;
333 struct cmm_attrs *attrs;
334 void **buf_va;
335 } args_cmm_allocbuf;
336
337 struct {
338 struct cmm_object *cmm_mgr;
339 void *buf_pa;
340 u32 seg_id;
341 } args_cmm_freebuf;
342
343 struct {
344 void *processor;
345 struct cmm_object *__user *cmm_mgr;
346 } args_cmm_gethandle;
347
348 struct {
349 struct cmm_object *cmm_mgr;
350 struct cmm_info __user *cmm_info_obj;
351 } args_cmm_getinfo;
352
353
354 struct {
355 s32 util_argc;
356 char **argv;
357 } args_util_testdll;
358};
359
360
361
362
363
364
365
366
367
368
369
370
371
372#define DB 0xDB
373
374
375
376
377
378#define DB_MODULE_MASK 0xE0
379#define DB_IOC_MASK 0x1F
380
381
382#define DB_MGR 0x0
383#define DB_PROC 0x20
384#define DB_NODE 0x40
385#define DB_STRM 0x60
386#define DB_CMM 0x80
387
388#define DB_MODULE_SHIFT 5
389
390
391#define DB_IOC(module, num) \
392 (((module) & DB_MODULE_MASK) | ((num) & DB_IOC_MASK))
393
394#define DB_GET_MODULE(cmd) ((cmd) & DB_MODULE_MASK)
395
396#define DB_GET_IOC(cmd) ((cmd) & DB_IOC_MASK)
397
398
399
400
401#define MGR_ENUMNODE_INFO _IOWR(DB, DB_IOC(DB_MGR, 0), unsigned long)
402#define MGR_ENUMPROC_INFO _IOWR(DB, DB_IOC(DB_MGR, 1), unsigned long)
403#define MGR_REGISTEROBJECT _IOWR(DB, DB_IOC(DB_MGR, 2), unsigned long)
404#define MGR_UNREGISTEROBJECT _IOWR(DB, DB_IOC(DB_MGR, 3), unsigned long)
405#define MGR_WAIT _IOWR(DB, DB_IOC(DB_MGR, 4), unsigned long)
406
407#define MGR_GET_PROC_RES _IOR(DB, DB_IOC(DB_MGR, 5), unsigned long)
408
409
410#define PROC_ATTACH _IOWR(DB, DB_IOC(DB_PROC, 0), unsigned long)
411#define PROC_CTRL _IOR(DB, DB_IOC(DB_PROC, 1), unsigned long)
412
413#define PROC_DETACH _IOR(DB, DB_IOC(DB_PROC, 2), unsigned long)
414#define PROC_ENUMNODE _IOWR(DB, DB_IOC(DB_PROC, 3), unsigned long)
415#define PROC_ENUMRESOURCES _IOWR(DB, DB_IOC(DB_PROC, 4), unsigned long)
416#define PROC_GET_STATE _IOWR(DB, DB_IOC(DB_PROC, 5), unsigned long)
417#define PROC_GET_TRACE _IOWR(DB, DB_IOC(DB_PROC, 6), unsigned long)
418#define PROC_LOAD _IOW(DB, DB_IOC(DB_PROC, 7), unsigned long)
419#define PROC_REGISTERNOTIFY _IOWR(DB, DB_IOC(DB_PROC, 8), unsigned long)
420#define PROC_START _IOW(DB, DB_IOC(DB_PROC, 9), unsigned long)
421#define PROC_RSVMEM _IOWR(DB, DB_IOC(DB_PROC, 10), unsigned long)
422#define PROC_UNRSVMEM _IOW(DB, DB_IOC(DB_PROC, 11), unsigned long)
423#define PROC_MAPMEM _IOWR(DB, DB_IOC(DB_PROC, 12), unsigned long)
424#define PROC_UNMAPMEM _IOR(DB, DB_IOC(DB_PROC, 13), unsigned long)
425#define PROC_FLUSHMEMORY _IOW(DB, DB_IOC(DB_PROC, 14), unsigned long)
426#define PROC_STOP _IOWR(DB, DB_IOC(DB_PROC, 15), unsigned long)
427#define PROC_INVALIDATEMEMORY _IOW(DB, DB_IOC(DB_PROC, 16), unsigned long)
428#define PROC_BEGINDMA _IOW(DB, DB_IOC(DB_PROC, 17), unsigned long)
429#define PROC_ENDDMA _IOW(DB, DB_IOC(DB_PROC, 18), unsigned long)
430
431
432#define NODE_ALLOCATE _IOWR(DB, DB_IOC(DB_NODE, 0), unsigned long)
433#define NODE_ALLOCMSGBUF _IOWR(DB, DB_IOC(DB_NODE, 1), unsigned long)
434#define NODE_CHANGEPRIORITY _IOW(DB, DB_IOC(DB_NODE, 2), unsigned long)
435#define NODE_CONNECT _IOW(DB, DB_IOC(DB_NODE, 3), unsigned long)
436#define NODE_CREATE _IOW(DB, DB_IOC(DB_NODE, 4), unsigned long)
437#define NODE_DELETE _IOW(DB, DB_IOC(DB_NODE, 5), unsigned long)
438#define NODE_FREEMSGBUF _IOW(DB, DB_IOC(DB_NODE, 6), unsigned long)
439#define NODE_GETATTR _IOWR(DB, DB_IOC(DB_NODE, 7), unsigned long)
440#define NODE_GETMESSAGE _IOWR(DB, DB_IOC(DB_NODE, 8), unsigned long)
441#define NODE_PAUSE _IOW(DB, DB_IOC(DB_NODE, 9), unsigned long)
442#define NODE_PUTMESSAGE _IOW(DB, DB_IOC(DB_NODE, 10), unsigned long)
443#define NODE_REGISTERNOTIFY _IOWR(DB, DB_IOC(DB_NODE, 11), unsigned long)
444#define NODE_RUN _IOW(DB, DB_IOC(DB_NODE, 12), unsigned long)
445#define NODE_TERMINATE _IOWR(DB, DB_IOC(DB_NODE, 13), unsigned long)
446#define NODE_GETUUIDPROPS _IOWR(DB, DB_IOC(DB_NODE, 14), unsigned long)
447
448
449#define STRM_ALLOCATEBUFFER _IOWR(DB, DB_IOC(DB_STRM, 0), unsigned long)
450#define STRM_CLOSE _IOW(DB, DB_IOC(DB_STRM, 1), unsigned long)
451#define STRM_FREEBUFFER _IOWR(DB, DB_IOC(DB_STRM, 2), unsigned long)
452#define STRM_GETEVENTHANDLE _IO(DB, DB_IOC(DB_STRM, 3))
453#define STRM_GETINFO _IOWR(DB, DB_IOC(DB_STRM, 4), unsigned long)
454#define STRM_IDLE _IOW(DB, DB_IOC(DB_STRM, 5), unsigned long)
455#define STRM_ISSUE _IOW(DB, DB_IOC(DB_STRM, 6), unsigned long)
456#define STRM_OPEN _IOWR(DB, DB_IOC(DB_STRM, 7), unsigned long)
457#define STRM_RECLAIM _IOWR(DB, DB_IOC(DB_STRM, 8), unsigned long)
458#define STRM_REGISTERNOTIFY _IOWR(DB, DB_IOC(DB_STRM, 9), unsigned long)
459#define STRM_SELECT _IOWR(DB, DB_IOC(DB_STRM, 10), unsigned long)
460
461
462#define CMM_ALLOCBUF _IO(DB, DB_IOC(DB_CMM, 0))
463#define CMM_FREEBUF _IO(DB, DB_IOC(DB_CMM, 1))
464#define CMM_GETHANDLE _IOR(DB, DB_IOC(DB_CMM, 2), unsigned long)
465#define CMM_GETINFO _IOR(DB, DB_IOC(DB_CMM, 3), unsigned long)
466
467#endif
468