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.
23 #include <dspbridge/cmm.h>
24 #include <dspbridge/strmdefs.h>
25 #include <dspbridge/dbdcd.h>
32 struct dsp_ndbprops __user
*pndb_props
;
34 u32 __user
*pu_num_nodes
;
35 } args_mgr_enumnode_info
;
39 struct dsp_processorinfo __user
*processor_info
;
40 u32 processor_info_size
;
41 u32 __user
*pu_num_procs
;
42 } args_mgr_enumproc_info
;
45 struct dsp_uuid
*uuid_obj
;
46 enum dsp_dcdobjtype obj_type
;
48 } args_mgr_registerobject
;
51 struct dsp_uuid
*uuid_obj
;
52 enum dsp_dcdobjtype obj_type
;
53 } args_mgr_unregisterobject
;
56 struct dsp_notification __user
*__user
*anotifications
;
65 struct dsp_processorattrin __user
*attr_in
;
66 void *__user
*ph_processor
;
72 struct dsp_cbdata __user
*pargs
;
81 void *__user
*node_tab
;
83 u32 __user
*pu_num_nodes
;
84 u32 __user
*pu_allocated
;
85 } args_proc_enumnode_info
;
90 struct dsp_resourceinfo
*resource_info
;
91 u32 resource_info_size
;
92 } args_proc_enumresources
;
96 struct dsp_processorstate __user
*proc_state_obj
;
105 } args_proc_gettrace
;
110 char __user
*__user
*user_args
;
111 char *__user
*user_envp
;
118 struct dsp_notification __user
*hnotification
;
119 } args_proc_register_notify
;
128 void *__user
*pp_rsv_addr
;
135 } args_proc_unrsvmem
;
142 void *__user
*pp_map_addr
;
150 } args_proc_unmapmem
;
164 } args_proc_flushmemory
;
174 } args_proc_invalidatememory
;
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
;
188 struct dsp_bufferattr __user
*pattr
;
190 } args_node_allocmsgbuf
;
195 } args_node_changepriority
;
202 struct dsp_strmattr __user
*pattrs
;
203 struct dsp_cbdata __user
*conn_param
;
216 struct dsp_bufferattr __user
*pattr
;
218 } args_node_freemsgbuf
;
222 struct dsp_nodeattr __user
*pattr
;
228 struct dsp_msg __user
*message
;
230 } args_node_getmessage
;
238 struct dsp_msg __user
*message
;
240 } args_node_putmessage
;
246 struct dsp_notification __user
*hnotification
;
247 } args_node_registernotify
;
256 } args_node_terminate
;
260 struct dsp_uuid __user
*node_id_ptr
;
261 struct dsp_ndbprops __user
*node_props
;
262 } args_node_getuuidprops
;
269 u8
*__user
*ap_buffer
;
271 } args_strm_allocatebuffer
;
279 u8
*__user
*ap_buffer
;
281 } args_strm_freebuffer
;
286 } args_strm_geteventhandle
;
290 struct stream_info __user
*stream_info
;
291 u32 stream_info_size
;
311 struct strm_attr __user
*attr_in
;
312 void *__user
*ph_stream
;
319 u32 __user
*buf_size_ptr
;
327 struct dsp_notification __user
*hnotification
;
328 } args_strm_registernotify
;
331 void *__user
*stream_tab
;
339 struct cmm_object
*hcmm_mgr
;
341 struct cmm_attrs
*pattrs
;
346 struct cmm_object
*hcmm_mgr
;
353 struct cmm_object
*__user
*ph_cmm_mgr
;
354 } args_cmm_gethandle
;
357 struct cmm_object
*hcmm_mgr
;
358 struct cmm_info __user
*cmm_info_obj
;
369 * Dspbridge Ioctl numbering scheme
372 * ---------------------------------
373 * | Module | Ioctl Number |
374 * ---------------------------------
375 * | x | x | x | 0 | 0 | 0 | 0 | 0 |
376 * ---------------------------------
379 /* Ioctl driver identifier */
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 */
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 */
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)
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)
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)
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)
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_ */