GUI: Fix Tomato RAF theme for all builds. Compilation typo.
[tomato.git] / release / src-rt-6.x.4708 / linux / linux-2.6.36 / drivers / staging / tidspbridge / include / dspbridge / dspapi-ioctl.h
blob8da5bd8ede85293ae180adacd9d3d331c4743048
1 /*
2 * dspapi-ioctl.h
4 * DSP-BIOS Bridge driver support functions for TI OMAP processors.
6 * Contains structures and commands that are used for interaction
7 * between the DDSP API and Bridge driver.
9 * Copyright (C) 2008 Texas Instruments, Inc.
11 * This package is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
15 * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
16 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
17 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
20 #ifndef DSPAPIIOCTL_
21 #define DSPAPIIOCTL_
23 #include <dspbridge/cmm.h>
24 #include <dspbridge/strmdefs.h>
25 #include <dspbridge/dbdcd.h>
27 union trapped_args {
29 /* MGR Module */
30 struct {
31 u32 node_id;
32 struct dsp_ndbprops __user *pndb_props;
33 u32 undb_props_size;
34 u32 __user *pu_num_nodes;
35 } args_mgr_enumnode_info;
37 struct {
38 u32 processor_id;
39 struct dsp_processorinfo __user *processor_info;
40 u32 processor_info_size;
41 u32 __user *pu_num_procs;
42 } args_mgr_enumproc_info;
44 struct {
45 struct dsp_uuid *uuid_obj;
46 enum dsp_dcdobjtype obj_type;
47 char *psz_path_name;
48 } args_mgr_registerobject;
50 struct {
51 struct dsp_uuid *uuid_obj;
52 enum dsp_dcdobjtype obj_type;
53 } args_mgr_unregisterobject;
55 struct {
56 struct dsp_notification __user *__user *anotifications;
57 u32 count;
58 u32 __user *pu_index;
59 u32 utimeout;
60 } args_mgr_wait;
62 /* PROC Module */
63 struct {
64 u32 processor_id;
65 struct dsp_processorattrin __user *attr_in;
66 void *__user *ph_processor;
67 } args_proc_attach;
69 struct {
70 void *hprocessor;
71 u32 dw_cmd;
72 struct dsp_cbdata __user *pargs;
73 } args_proc_ctrl;
75 struct {
76 void *hprocessor;
77 } args_proc_detach;
79 struct {
80 void *hprocessor;
81 void *__user *node_tab;
82 u32 node_tab_size;
83 u32 __user *pu_num_nodes;
84 u32 __user *pu_allocated;
85 } args_proc_enumnode_info;
87 struct {
88 void *hprocessor;
89 u32 resource_type;
90 struct dsp_resourceinfo *resource_info;
91 u32 resource_info_size;
92 } args_proc_enumresources;
94 struct {
95 void *hprocessor;
96 struct dsp_processorstate __user *proc_state_obj;
97 u32 state_info_size;
98 } args_proc_getstate;
100 struct {
101 void *hprocessor;
102 u8 __user *pbuf;
103 u8 __user *psize;
104 u32 max_size;
105 } args_proc_gettrace;
107 struct {
108 void *hprocessor;
109 s32 argc_index;
110 char __user *__user *user_args;
111 char *__user *user_envp;
112 } args_proc_load;
114 struct {
115 void *hprocessor;
116 u32 event_mask;
117 u32 notify_type;
118 struct dsp_notification __user *hnotification;
119 } args_proc_register_notify;
121 struct {
122 void *hprocessor;
123 } args_proc_start;
125 struct {
126 void *hprocessor;
127 u32 ul_size;
128 void *__user *pp_rsv_addr;
129 } args_proc_rsvmem;
131 struct {
132 void *hprocessor;
133 u32 ul_size;
134 void *prsv_addr;
135 } args_proc_unrsvmem;
137 struct {
138 void *hprocessor;
139 void *pmpu_addr;
140 u32 ul_size;
141 void *req_addr;
142 void *__user *pp_map_addr;
143 u32 ul_map_attr;
144 } args_proc_mapmem;
146 struct {
147 void *hprocessor;
148 u32 ul_size;
149 void *map_addr;
150 } args_proc_unmapmem;
152 struct {
153 void *hprocessor;
154 void *pmpu_addr;
155 u32 ul_size;
156 u32 dir;
157 } args_proc_dma;
159 struct {
160 void *hprocessor;
161 void *pmpu_addr;
162 u32 ul_size;
163 u32 ul_flags;
164 } args_proc_flushmemory;
166 struct {
167 void *hprocessor;
168 } args_proc_stop;
170 struct {
171 void *hprocessor;
172 void *pmpu_addr;
173 u32 ul_size;
174 } args_proc_invalidatememory;
176 /* NODE Module */
177 struct {
178 void *hprocessor;
179 struct dsp_uuid __user *node_id_ptr;
180 struct dsp_cbdata __user *pargs;
181 struct dsp_nodeattrin __user *attr_in;
182 void *__user *ph_node;
183 } args_node_allocate;
185 struct {
186 void *hnode;
187 u32 usize;
188 struct dsp_bufferattr __user *pattr;
189 u8 *__user *pbuffer;
190 } args_node_allocmsgbuf;
192 struct {
193 void *hnode;
194 s32 prio;
195 } args_node_changepriority;
197 struct {
198 void *hnode;
199 u32 stream_id;
200 void *other_node;
201 u32 other_stream;
202 struct dsp_strmattr __user *pattrs;
203 struct dsp_cbdata __user *conn_param;
204 } args_node_connect;
206 struct {
207 void *hnode;
208 } args_node_create;
210 struct {
211 void *hnode;
212 } args_node_delete;
214 struct {
215 void *hnode;
216 struct dsp_bufferattr __user *pattr;
217 u8 *pbuffer;
218 } args_node_freemsgbuf;
220 struct {
221 void *hnode;
222 struct dsp_nodeattr __user *pattr;
223 u32 attr_size;
224 } args_node_getattr;
226 struct {
227 void *hnode;
228 struct dsp_msg __user *message;
229 u32 utimeout;
230 } args_node_getmessage;
232 struct {
233 void *hnode;
234 } args_node_pause;
236 struct {
237 void *hnode;
238 struct dsp_msg __user *message;
239 u32 utimeout;
240 } args_node_putmessage;
242 struct {
243 void *hnode;
244 u32 event_mask;
245 u32 notify_type;
246 struct dsp_notification __user *hnotification;
247 } args_node_registernotify;
249 struct {
250 void *hnode;
251 } args_node_run;
253 struct {
254 void *hnode;
255 int __user *pstatus;
256 } args_node_terminate;
258 struct {
259 void *hprocessor;
260 struct dsp_uuid __user *node_id_ptr;
261 struct dsp_ndbprops __user *node_props;
262 } args_node_getuuidprops;
264 /* STRM module */
266 struct {
267 void *hstream;
268 u32 usize;
269 u8 *__user *ap_buffer;
270 u32 num_bufs;
271 } args_strm_allocatebuffer;
273 struct {
274 void *hstream;
275 } args_strm_close;
277 struct {
278 void *hstream;
279 u8 *__user *ap_buffer;
280 u32 num_bufs;
281 } args_strm_freebuffer;
283 struct {
284 void *hstream;
285 void **ph_event;
286 } args_strm_geteventhandle;
288 struct {
289 void *hstream;
290 struct stream_info __user *stream_info;
291 u32 stream_info_size;
292 } args_strm_getinfo;
294 struct {
295 void *hstream;
296 bool flush_flag;
297 } args_strm_idle;
299 struct {
300 void *hstream;
301 u8 *pbuffer;
302 u32 dw_bytes;
303 u32 dw_buf_size;
304 u32 dw_arg;
305 } args_strm_issue;
307 struct {
308 void *hnode;
309 u32 direction;
310 u32 index;
311 struct strm_attr __user *attr_in;
312 void *__user *ph_stream;
313 } args_strm_open;
315 struct {
316 void *hstream;
317 u8 *__user *buf_ptr;
318 u32 __user *bytes;
319 u32 __user *buf_size_ptr;
320 u32 __user *pdw_arg;
321 } args_strm_reclaim;
323 struct {
324 void *hstream;
325 u32 event_mask;
326 u32 notify_type;
327 struct dsp_notification __user *hnotification;
328 } args_strm_registernotify;
330 struct {
331 void *__user *stream_tab;
332 u32 strm_num;
333 u32 __user *pmask;
334 u32 utimeout;
335 } args_strm_select;
337 /* CMM Module */
338 struct {
339 struct cmm_object *hcmm_mgr;
340 u32 usize;
341 struct cmm_attrs *pattrs;
342 void **pp_buf_va;
343 } args_cmm_allocbuf;
345 struct {
346 struct cmm_object *hcmm_mgr;
347 void *buf_pa;
348 u32 ul_seg_id;
349 } args_cmm_freebuf;
351 struct {
352 void *hprocessor;
353 struct cmm_object *__user *ph_cmm_mgr;
354 } args_cmm_gethandle;
356 struct {
357 struct cmm_object *hcmm_mgr;
358 struct cmm_info __user *cmm_info_obj;
359 } args_cmm_getinfo;
361 /* UTIL module */
362 struct {
363 s32 util_argc;
364 char **pp_argv;
365 } args_util_testdll;
369 * Dspbridge Ioctl numbering scheme
371 * 7 0
372 * ---------------------------------
373 * | Module | Ioctl Number |
374 * ---------------------------------
375 * | x | x | x | 0 | 0 | 0 | 0 | 0 |
376 * ---------------------------------
379 /* Ioctl driver identifier */
380 #define DB 0xDB
383 * Following are used to distinguish between module ioctls, this is needed
384 * in case new ioctls are introduced.
386 #define DB_MODULE_MASK 0xE0
387 #define DB_IOC_MASK 0x1F
389 /* Ioctl module masks */
390 #define DB_MGR 0x0
391 #define DB_PROC 0x20
392 #define DB_NODE 0x40
393 #define DB_STRM 0x60
394 #define DB_CMM 0x80
396 #define DB_MODULE_SHIFT 5
398 /* Used to calculate the ioctl per dspbridge module */
399 #define DB_IOC(module, num) \
400 (((module) & DB_MODULE_MASK) | ((num) & DB_IOC_MASK))
401 /* Used to get dspbridge ioctl module */
402 #define DB_GET_MODULE(cmd) ((cmd) & DB_MODULE_MASK)
403 /* Used to get dspbridge ioctl number */
404 #define DB_GET_IOC(cmd) ((cmd) & DB_IOC_MASK)
406 /* TODO: Remove deprecated and not implemented */
408 /* MGR Module */
409 #define MGR_ENUMNODE_INFO _IOWR(DB, DB_IOC(DB_MGR, 0), unsigned long)
410 #define MGR_ENUMPROC_INFO _IOWR(DB, DB_IOC(DB_MGR, 1), unsigned long)
411 #define MGR_REGISTEROBJECT _IOWR(DB, DB_IOC(DB_MGR, 2), unsigned long)
412 #define MGR_UNREGISTEROBJECT _IOWR(DB, DB_IOC(DB_MGR, 3), unsigned long)
413 #define MGR_WAIT _IOWR(DB, DB_IOC(DB_MGR, 4), unsigned long)
414 /* MGR_GET_PROC_RES Deprecated */
415 #define MGR_GET_PROC_RES _IOR(DB, DB_IOC(DB_MGR, 5), unsigned long)
417 /* PROC Module */
418 #define PROC_ATTACH _IOWR(DB, DB_IOC(DB_PROC, 0), unsigned long)
419 #define PROC_CTRL _IOR(DB, DB_IOC(DB_PROC, 1), unsigned long)
420 /* PROC_DETACH Deprecated */
421 #define PROC_DETACH _IOR(DB, DB_IOC(DB_PROC, 2), unsigned long)
422 #define PROC_ENUMNODE _IOWR(DB, DB_IOC(DB_PROC, 3), unsigned long)
423 #define PROC_ENUMRESOURCES _IOWR(DB, DB_IOC(DB_PROC, 4), unsigned long)
424 #define PROC_GET_STATE _IOWR(DB, DB_IOC(DB_PROC, 5), unsigned long)
425 #define PROC_GET_TRACE _IOWR(DB, DB_IOC(DB_PROC, 6), unsigned long)
426 #define PROC_LOAD _IOW(DB, DB_IOC(DB_PROC, 7), unsigned long)
427 #define PROC_REGISTERNOTIFY _IOWR(DB, DB_IOC(DB_PROC, 8), unsigned long)
428 #define PROC_START _IOW(DB, DB_IOC(DB_PROC, 9), unsigned long)
429 #define PROC_RSVMEM _IOWR(DB, DB_IOC(DB_PROC, 10), unsigned long)
430 #define PROC_UNRSVMEM _IOW(DB, DB_IOC(DB_PROC, 11), unsigned long)
431 #define PROC_MAPMEM _IOWR(DB, DB_IOC(DB_PROC, 12), unsigned long)
432 #define PROC_UNMAPMEM _IOR(DB, DB_IOC(DB_PROC, 13), unsigned long)
433 #define PROC_FLUSHMEMORY _IOW(DB, DB_IOC(DB_PROC, 14), unsigned long)
434 #define PROC_STOP _IOWR(DB, DB_IOC(DB_PROC, 15), unsigned long)
435 #define PROC_INVALIDATEMEMORY _IOW(DB, DB_IOC(DB_PROC, 16), unsigned long)
436 #define PROC_BEGINDMA _IOW(DB, DB_IOC(DB_PROC, 17), unsigned long)
437 #define PROC_ENDDMA _IOW(DB, DB_IOC(DB_PROC, 18), unsigned long)
439 /* NODE Module */
440 #define NODE_ALLOCATE _IOWR(DB, DB_IOC(DB_NODE, 0), unsigned long)
441 #define NODE_ALLOCMSGBUF _IOWR(DB, DB_IOC(DB_NODE, 1), unsigned long)
442 #define NODE_CHANGEPRIORITY _IOW(DB, DB_IOC(DB_NODE, 2), unsigned long)
443 #define NODE_CONNECT _IOW(DB, DB_IOC(DB_NODE, 3), unsigned long)
444 #define NODE_CREATE _IOW(DB, DB_IOC(DB_NODE, 4), unsigned long)
445 #define NODE_DELETE _IOW(DB, DB_IOC(DB_NODE, 5), unsigned long)
446 #define NODE_FREEMSGBUF _IOW(DB, DB_IOC(DB_NODE, 6), unsigned long)
447 #define NODE_GETATTR _IOWR(DB, DB_IOC(DB_NODE, 7), unsigned long)
448 #define NODE_GETMESSAGE _IOWR(DB, DB_IOC(DB_NODE, 8), unsigned long)
449 #define NODE_PAUSE _IOW(DB, DB_IOC(DB_NODE, 9), unsigned long)
450 #define NODE_PUTMESSAGE _IOW(DB, DB_IOC(DB_NODE, 10), unsigned long)
451 #define NODE_REGISTERNOTIFY _IOWR(DB, DB_IOC(DB_NODE, 11), unsigned long)
452 #define NODE_RUN _IOW(DB, DB_IOC(DB_NODE, 12), unsigned long)
453 #define NODE_TERMINATE _IOWR(DB, DB_IOC(DB_NODE, 13), unsigned long)
454 #define NODE_GETUUIDPROPS _IOWR(DB, DB_IOC(DB_NODE, 14), unsigned long)
456 /* STRM Module */
457 #define STRM_ALLOCATEBUFFER _IOWR(DB, DB_IOC(DB_STRM, 0), unsigned long)
458 #define STRM_CLOSE _IOW(DB, DB_IOC(DB_STRM, 1), unsigned long)
459 #define STRM_FREEBUFFER _IOWR(DB, DB_IOC(DB_STRM, 2), unsigned long)
460 #define STRM_GETEVENTHANDLE _IO(DB, DB_IOC(DB_STRM, 3)) /* Not Impl'd */
461 #define STRM_GETINFO _IOWR(DB, DB_IOC(DB_STRM, 4), unsigned long)
462 #define STRM_IDLE _IOW(DB, DB_IOC(DB_STRM, 5), unsigned long)
463 #define STRM_ISSUE _IOW(DB, DB_IOC(DB_STRM, 6), unsigned long)
464 #define STRM_OPEN _IOWR(DB, DB_IOC(DB_STRM, 7), unsigned long)
465 #define STRM_RECLAIM _IOWR(DB, DB_IOC(DB_STRM, 8), unsigned long)
466 #define STRM_REGISTERNOTIFY _IOWR(DB, DB_IOC(DB_STRM, 9), unsigned long)
467 #define STRM_SELECT _IOWR(DB, DB_IOC(DB_STRM, 10), unsigned long)
469 /* CMM Module */
470 #define CMM_ALLOCBUF _IO(DB, DB_IOC(DB_CMM, 0)) /* Not Impl'd */
471 #define CMM_FREEBUF _IO(DB, DB_IOC(DB_CMM, 1)) /* Not Impl'd */
472 #define CMM_GETHANDLE _IOR(DB, DB_IOC(DB_CMM, 2), unsigned long)
473 #define CMM_GETINFO _IOR(DB, DB_IOC(DB_CMM, 3), unsigned long)
475 #endif /* DSPAPIIOCTL_ */