4 * DSP-BIOS Bridge driver support functions for TI OMAP processors.
6 * Copyright (C) 2008 Texas Instruments, Inc.
8 * This package is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
12 * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
13 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
14 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
19 * ======== wcdioctl.h ========
21 * Contains structures and commands that are used for interaction
22 * between the DDSP API and class driver.
26 *! 19-Apr-2004 sb Aligned DMM definitions with Symbian
27 *! 08-Mar-2004 sb Added the Dynamic Memory Mapping structs & offsets
28 *! 15-Oct-2002 kc Updated definitions for private PERF module.
29 *! 16-Aug-2002 map Added ARGS_MGR_REGISTEROBJECT & ARGS_MGR_UNREGISTEROBJECT
30 *! Added CMD_MGR_REGISTEROBJECT_OFFSET &
31 *! CMD_MGR_UNREGISTEROBJECT_OFFSET
32 *! 15-Jan-2002 ag Added actaul bufSize to ARGS_STRM_[RECLAIM][ISSUE].
33 *! 15-Nov-2001 ag change to STRMINFO in ARGS_STRM_GETINFO.
34 *! 11-Sep-2001 ag ARGS_CMM_GETHANDLE defn uses DSP_HPROCESSOR.
35 *! 23-Apr-2001 jeh Added pStatus to NODE_TERMINATE args.
36 *! 13-Feb-2001 kc DSP/BIOS Bridge name updates.
37 *! 22-Nov-2000 kc: Added CMD_MGR_GETPERF_DATA_OFFSET for acquiring PERF stats.
38 *! 27-Oct-2000 jeh Added timeouts to NODE_GETMESSAGE, NODE_PUTMESSAGE args.
39 *! Removed NODE_GETMESSAGESTRM args.
40 *! 11-Oct-2000 ag: Added SM mgr(CMM) args.
41 *! 27-Sep-2000 jeh Removed struct DSP_BUFFERATTR param from
42 *! ARGS_STRM_ALLOCATEBUFFER.
43 *! 25-Sep-2000 rr: Updated to Version 0.9
44 *! 07-Sep-2000 jeh Changed HANDLE to DSP_HNOTIFICATION in RegisterNotify args.
45 *! Added DSP_STRMATTR to DSPNode_Connect args.
46 *! 04-Aug-2000 rr: MEM and UTIL added to RM.
47 *! 27-Jul-2000 rr: NODE, MGR,STRM and PROC added
48 *! 27-Jun-2000 rr: Modifed to Use either PM or DSP/BIOS Bridge
49 *! IFDEF to build for PM or DSP/BIOS Bridge
50 *! 28-Jan-2000 rr: NT_CMD_FROM_OFFSET moved out to dsptrap.h
51 *! 24-Jan-2000 rr: Merged with Scott's code.
52 *! 21-Jan-2000 sg: In ARGS_CHNL_GETMODE changed mode to be u32 to be
53 *! consistent with chnldefs.h.
54 *! 11-Jan-2000 rr: CMD_CFG_GETCDVERSION_OFFSET added.
55 *! 12-Nov-1999 rr: CMD_BRD_MONITOR_OFFSET added
56 *! 09-Nov-1999 kc: Added MEMRY and enabled CMD_BRD_IOCTL_OFFSET.
57 *! 05-Nov-1999 ag: Added CHNL.
58 *! 02-Nov-1999 kc: Removed field from ARGS_UTIL_TESTDLL.
59 *! 29-Oct-1999 kc: Cleaned up for code review.
60 *! 08-Oct-1999 rr: Util control offsets added.
61 *! 13-Sep-1999 kc: Added ARGS_UTIL_TESTDLL for PM test infrastructure.
62 *! 19-Aug-1999 rr: Created from WSX. Minimal Implementaion of BRD_Start and BRD
63 *! and BRD_Stop. IOCTL Offsets and CTRL Code.
69 #include <dspbridge/mem.h>
70 #include <dspbridge/cmm.h>
71 #include <dspbridge/strmdefs.h>
72 #include <dspbridge/dbdcd.h>
79 struct DSP_NDBPROPS __user *pNDBProps;
81 u32 __user *puNumNodes;
82 } ARGS_MGR_ENUMNODE_INFO;
86 struct DSP_PROCESSORINFO __user *pProcessorInfo;
87 u32 uProcessorInfoSize;
88 u32 __user *puNumProcs;
89 } ARGS_MGR_ENUMPROC_INFO;
92 struct DSP_UUID *pUuid;
93 enum DSP_DCDOBJTYPE objType;
95 } ARGS_MGR_REGISTEROBJECT;
98 struct DSP_UUID *pUuid;
99 enum DSP_DCDOBJTYPE objType;
100 } ARGS_MGR_UNREGISTEROBJECT;
103 struct DSP_NOTIFICATION __user*__user *aNotifications;
112 struct DSP_PROCESSORATTRIN __user *pAttrIn;
113 DSP_HPROCESSOR __user *phProcessor;
117 DSP_HPROCESSOR hProcessor;
119 struct DSP_CBDATA __user *pArgs;
123 DSP_HPROCESSOR hProcessor;
127 DSP_HPROCESSOR hProcessor;
128 DSP_HNODE __user *aNodeTab;
130 u32 __user *puNumNodes;
131 u32 __user *puAllocated;
132 } ARGS_PROC_ENUMNODE_INFO;
135 DSP_HPROCESSOR hProcessor;
137 struct DSP_RESOURCEINFO *pResourceInfo;
138 u32 uResourceInfoSize;
139 } ARGS_PROC_ENUMRESOURCES;
142 DSP_HPROCESSOR hProcessor;
143 struct DSP_PROCESSORSTATE __user *pProcStatus;
145 } ARGS_PROC_GETSTATE;
148 DSP_HPROCESSOR hProcessor;
151 #ifndef RES_CLEANUP_DISABLE
155 } ARGS_PROC_GETTRACE;
158 DSP_HPROCESSOR hProcessor;
160 char __user*__user *aArgv;
165 DSP_HPROCESSOR hProcessor;
168 struct DSP_NOTIFICATION __user *hNotification;
169 } ARGS_PROC_REGISTER_NOTIFY;
172 DSP_HPROCESSOR hProcessor;
176 DSP_HPROCESSOR hProcessor;
178 void *__user *ppRsvAddr;
182 DSP_HPROCESSOR hProcessor;
185 } ARGS_PROC_UNRSVMEM;
188 DSP_HPROCESSOR hProcessor;
192 void *__user *ppMapAddr;
197 DSP_HPROCESSOR hProcessor;
200 } ARGS_PROC_UNMAPMEM;
203 DSP_HPROCESSOR hProcessor;
207 } ARGS_PROC_FLUSHMEMORY;
210 DSP_HPROCESSOR hProcessor;
214 DSP_HPROCESSOR hProcessor;
217 } ARGS_PROC_INVALIDATEMEMORY;
222 DSP_HPROCESSOR hProcessor;
223 struct DSP_UUID __user *pNodeID;
224 struct DSP_CBDATA __user *pArgs;
225 struct DSP_NODEATTRIN __user *pAttrIn;
226 DSP_HNODE __user *phNode;
227 } ARGS_NODE_ALLOCATE;
232 struct DSP_BUFFERATTR __user *pAttr;
234 } ARGS_NODE_ALLOCMSGBUF;
239 } ARGS_NODE_CHANGEPRIORITY;
244 DSP_HNODE hOtherNode;
246 struct DSP_STRMATTR __user *pAttrs;
247 struct DSP_CBDATA __user *pConnParam;
260 struct DSP_BUFFERATTR __user *pAttr;
262 } ARGS_NODE_FREEMSGBUF;
266 struct DSP_NODEATTR __user *pAttr;
272 struct DSP_MSG __user *pMessage;
274 } ARGS_NODE_GETMESSAGE;
282 struct DSP_MSG __user *pMessage;
284 } ARGS_NODE_PUTMESSAGE;
290 struct DSP_NOTIFICATION __user *hNotification;
291 } ARGS_NODE_REGISTERNOTIFY;
299 DSP_STATUS __user *pStatus;
300 } ARGS_NODE_TERMINATE;
303 DSP_HPROCESSOR hProcessor;
304 struct DSP_UUID __user *pNodeID;
305 struct DSP_NDBPROPS __user *pNodeProps;
306 } ARGS_NODE_GETUUIDPROPS;
313 u8 *__user *apBuffer;
315 } ARGS_STRM_ALLOCATEBUFFER;
323 u8 *__user *apBuffer;
325 } ARGS_STRM_FREEBUFFER;
330 } ARGS_STRM_GETEVENTHANDLE;
334 struct STRM_INFO __user *pStreamInfo;
355 struct STRM_ATTR __user *pAttrIn;
356 DSP_HSTREAM __user *phStream;
363 u32 __user *pBufSize;
371 struct DSP_NOTIFICATION __user *hNotification;
372 } ARGS_STRM_REGISTERNOTIFY;
375 DSP_HSTREAM __user *aStreamTab;
383 struct CMM_OBJECT *hCmmMgr;
385 struct CMM_ATTRS *pAttrs;
390 struct CMM_OBJECT *hCmmMgr;
396 DSP_HPROCESSOR hProcessor;
397 struct CMM_OBJECT *__user *phCmmMgr;
398 } ARGS_CMM_GETHANDLE;
401 struct CMM_OBJECT *hCmmMgr;
402 struct CMM_INFO __user *pCmmInfo;
408 enum MEM_POOLATTRS type;
414 enum MEM_POOLATTRS type;
431 } ARGS_MEM_PAGEUNLOCK;
442 /* MGR module offsets */
443 #define CMD_MGR_BASE_OFFSET CMD_BASE
444 #define CMD_MGR_ENUMNODE_INFO_OFFSET (CMD_MGR_BASE_OFFSET + 0)
445 #define CMD_MGR_ENUMPROC_INFO_OFFSET (CMD_MGR_BASE_OFFSET + 1)
446 #define CMD_MGR_REGISTEROBJECT_OFFSET (CMD_MGR_BASE_OFFSET + 2)
447 #define CMD_MGR_UNREGISTEROBJECT_OFFSET (CMD_MGR_BASE_OFFSET + 3)
448 #define CMD_MGR_WAIT_OFFSET (CMD_MGR_BASE_OFFSET + 4)
450 #ifndef RES_CLEANUP_DISABLE
451 #define CMD_MGR_RESOUCES_OFFSET (CMD_MGR_BASE_OFFSET + 5)
452 #define CMD_MGR_END_OFFSET CMD_MGR_RESOUCES_OFFSET
454 #define CMD_MGR_END_OFFSET CMD_MGR_WAIT_OFFSET
457 #define CMD_PROC_BASE_OFFSET (CMD_MGR_END_OFFSET + 1)
458 #define CMD_PROC_ATTACH_OFFSET (CMD_PROC_BASE_OFFSET + 0)
459 #define CMD_PROC_CTRL_OFFSET (CMD_PROC_BASE_OFFSET + 1)
460 #define CMD_PROC_DETACH_OFFSET (CMD_PROC_BASE_OFFSET + 2)
461 #define CMD_PROC_ENUMNODE_OFFSET (CMD_PROC_BASE_OFFSET + 3)
462 #define CMD_PROC_ENUMRESOURCES_OFFSET (CMD_PROC_BASE_OFFSET + 4)
463 #define CMD_PROC_GETSTATE_OFFSET (CMD_PROC_BASE_OFFSET + 5)
464 #define CMD_PROC_GETTRACE_OFFSET (CMD_PROC_BASE_OFFSET + 6)
465 #define CMD_PROC_LOAD_OFFSET (CMD_PROC_BASE_OFFSET + 7)
466 #define CMD_PROC_REGISTERNOTIFY_OFFSET (CMD_PROC_BASE_OFFSET + 8)
467 #define CMD_PROC_START_OFFSET (CMD_PROC_BASE_OFFSET + 9)
468 #define CMD_PROC_RSVMEM_OFFSET (CMD_PROC_BASE_OFFSET + 10)
469 #define CMD_PROC_UNRSVMEM_OFFSET (CMD_PROC_BASE_OFFSET + 11)
470 #define CMD_PROC_MAPMEM_OFFSET (CMD_PROC_BASE_OFFSET + 12)
471 #define CMD_PROC_UNMAPMEM_OFFSET (CMD_PROC_BASE_OFFSET + 13)
472 #define CMD_PROC_FLUSHMEMORY_OFFSET (CMD_PROC_BASE_OFFSET + 14)
473 #define CMD_PROC_STOP_OFFSET (CMD_PROC_BASE_OFFSET + 15)
474 #define CMD_PROC_INVALIDATEMEMORY_OFFSET (CMD_PROC_BASE_OFFSET + 16)
475 #define CMD_PROC_END_OFFSET CMD_PROC_INVALIDATEMEMORY_OFFSET
478 #define CMD_NODE_BASE_OFFSET (CMD_PROC_END_OFFSET + 1)
479 #define CMD_NODE_ALLOCATE_OFFSET (CMD_NODE_BASE_OFFSET + 0)
480 #define CMD_NODE_ALLOCMSGBUF_OFFSET (CMD_NODE_BASE_OFFSET + 1)
481 #define CMD_NODE_CHANGEPRIORITY_OFFSET (CMD_NODE_BASE_OFFSET + 2)
482 #define CMD_NODE_CONNECT_OFFSET (CMD_NODE_BASE_OFFSET + 3)
483 #define CMD_NODE_CREATE_OFFSET (CMD_NODE_BASE_OFFSET + 4)
484 #define CMD_NODE_DELETE_OFFSET (CMD_NODE_BASE_OFFSET + 5)
485 #define CMD_NODE_FREEMSGBUF_OFFSET (CMD_NODE_BASE_OFFSET + 6)
486 #define CMD_NODE_GETATTR_OFFSET (CMD_NODE_BASE_OFFSET + 7)
487 #define CMD_NODE_GETMESSAGE_OFFSET (CMD_NODE_BASE_OFFSET + 8)
488 #define CMD_NODE_PAUSE_OFFSET (CMD_NODE_BASE_OFFSET + 9)
489 #define CMD_NODE_PUTMESSAGE_OFFSET (CMD_NODE_BASE_OFFSET + 10)
490 #define CMD_NODE_REGISTERNOTIFY_OFFSET (CMD_NODE_BASE_OFFSET + 11)
491 #define CMD_NODE_RUN_OFFSET (CMD_NODE_BASE_OFFSET + 12)
492 #define CMD_NODE_TERMINATE_OFFSET (CMD_NODE_BASE_OFFSET + 13)
493 #define CMD_NODE_GETUUIDPROPS_OFFSET (CMD_NODE_BASE_OFFSET + 14)
494 #define CMD_NODE_END_OFFSET CMD_NODE_GETUUIDPROPS_OFFSET
496 #define CMD_STRM_BASE_OFFSET (CMD_NODE_END_OFFSET + 1)
497 #define CMD_STRM_ALLOCATEBUFFER_OFFSET (CMD_STRM_BASE_OFFSET + 0)
498 #define CMD_STRM_CLOSE_OFFSET (CMD_STRM_BASE_OFFSET + 1)
499 #define CMD_STRM_FREEBUFFER_OFFSET (CMD_STRM_BASE_OFFSET + 2)
500 #define CMD_STRM_GETEVENTHANDLE_OFFSET (CMD_STRM_BASE_OFFSET + 3)
501 #define CMD_STRM_GETINFO_OFFSET (CMD_STRM_BASE_OFFSET + 4)
502 #define CMD_STRM_IDLE_OFFSET (CMD_STRM_BASE_OFFSET + 5)
503 #define CMD_STRM_ISSUE_OFFSET (CMD_STRM_BASE_OFFSET + 6)
504 #define CMD_STRM_OPEN_OFFSET (CMD_STRM_BASE_OFFSET + 7)
505 #define CMD_STRM_RECLAIM_OFFSET (CMD_STRM_BASE_OFFSET + 8)
506 #define CMD_STRM_REGISTERNOTIFY_OFFSET (CMD_STRM_BASE_OFFSET + 9)
507 #define CMD_STRM_SELECT_OFFSET (CMD_STRM_BASE_OFFSET + 10)
508 #define CMD_STRM_END_OFFSET CMD_STRM_SELECT_OFFSET
510 /* Communication Memory Manager (UCMM) */
511 #define CMD_CMM_BASE_OFFSET (CMD_STRM_END_OFFSET + 1)
512 #define CMD_CMM_ALLOCBUF_OFFSET (CMD_CMM_BASE_OFFSET + 0)
513 #define CMD_CMM_FREEBUF_OFFSET (CMD_CMM_BASE_OFFSET + 1)
514 #define CMD_CMM_GETHANDLE_OFFSET (CMD_CMM_BASE_OFFSET + 2)
515 #define CMD_CMM_GETINFO_OFFSET (CMD_CMM_BASE_OFFSET + 3)
516 #define CMD_CMM_END_OFFSET CMD_CMM_GETINFO_OFFSET
518 #define CMD_BASE_END_OFFSET CMD_CMM_END_OFFSET
519 #endif /* WCDIOCTL_ */