/* * Copyright 2001-2008 Texas Instruments - http://www.ti.com/ * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * ======== wcdioctl.h ======== * DSP-BIOS Bridge driver support functions for TI OMAP processors. * Purpose: * Contains structures and commands that are used for interaction * between the DDSP API and class driver. * *! Revision History *! ================ *! 19-Apr-2004 sb Aligned DMM definitions with Symbian *! 08-Mar-2004 sb Added the Dynamic Memory Mapping structs & offsets *! 15-Oct-2002 kc Updated definitions for private PERF module. *! 16-Aug-2002 map Added ARGS_MGR_REGISTEROBJECT & ARGS_MGR_UNREGISTEROBJECT *! Added CMD_MGR_REGISTEROBJECT_OFFSET & *! CMD_MGR_UNREGISTEROBJECT_OFFSET *! 15-Jan-2002 ag Added actaul bufSize to ARGS_STRM_[RECLAIM][ISSUE]. *! 15-Nov-2001 ag change to STRMINFO in ARGS_STRM_GETINFO. *! 11-Sep-2001 ag ARGS_CMM_GETHANDLE defn uses DSP_HPROCESSOR. *! 23-Apr-2001 jeh Added pStatus to NODE_TERMINATE args. *! 13-Feb-2001 kc DSP/BIOS Bridge name updates. *! 22-Nov-2000 kc: Added CMD_MGR_GETPERF_DATA_OFFSET for acquiring PERF stats. *! 27-Oct-2000 jeh Added timeouts to NODE_GETMESSAGE, NODE_PUTMESSAGE args. *! Removed NODE_GETMESSAGESTRM args. *! 11-Oct-2000 ag: Added SM mgr(CMM) args. *! 27-Sep-2000 jeh Removed struct DSP_BUFFERATTR param from ARGS_STRM_ALLOCATEBUFFER. *! 25-Sep-2000 rr: Updated to Version 0.9 *! 07-Sep-2000 jeh Changed HANDLE to DSP_HNOTIFICATION in RegisterNotify args. *! Added DSP_STRMATTR to DSPNode_Connect args. *! 04-Aug-2000 rr: MEM and UTIL added to RM. *! 27-Jul-2000 rr: NODE, MGR,STRM and PROC added *! 27-Jun-2000 rr: Modifed to Use either PM or DSP/BIOS Bridge *! IFDEF to build for PM or DSP/BIOS Bridge *! 28-Jan-2000 rr: NT_CMD_FROM_OFFSET moved out to dsptrap.h *! 24-Jan-2000 rr: Merged with Scott's code. *! 21-Jan-2000 sg: In ARGS_CHNL_GETMODE changed mode to be ULONG to be *! consistent with chnldefs.h. *! 11-Jan-2000 rr: CMD_CFG_GETCDVERSION_OFFSET added. *! 12-Nov-1999 rr: CMD_BRD_MONITOR_OFFSET added *! 09-Nov-1999 kc: Added MEMRY and enabled CMD_BRD_IOCTL_OFFSET. *! 05-Nov-1999 ag: Added CHNL. *! 02-Nov-1999 kc: Removed field from ARGS_UTIL_TESTDLL. *! 29-Oct-1999 kc: Cleaned up for code review. *! 08-Oct-1999 rr: Util control offsets added. *! 13-Sep-1999 kc: Added ARGS_UTIL_TESTDLL for PM test infrastructure. *! 19-Aug-1999 rr: Created from WSX. Minimal Implementaion of BRD_Start and BRD *! and BRD_Stop. IOCTL Offsets and CTRL Code. */ #ifndef WCDIOCTL_ #define WCDIOCTL_ #include <mem.h> #include <cmm.h> #include <strmdefs.h> #include <dbdcd.h> typedef union { /* MGR Module */ struct { UINT uNode; struct DSP_NDBPROPS *pNDBProps; UINT uNDBPropsSize; UINT *puNumNodes; } ARGS_MGR_ENUMNODE_INFO; struct { UINT uProcessor; struct DSP_PROCESSORINFO *pProcessorInfo; UINT uProcessorInfoSize; UINT *puNumProcs; } ARGS_MGR_ENUMPROC_INFO; struct { struct DSP_UUID *pUuid; DSP_DCDOBJTYPE objType; CHAR *pszPathName; } ARGS_MGR_REGISTEROBJECT; struct { struct DSP_UUID *pUuid; DSP_DCDOBJTYPE objType; } ARGS_MGR_UNREGISTEROBJECT; struct { struct DSP_NOTIFICATION* *aNotifications; UINT uCount; UINT *puIndex; UINT uTimeout; } ARGS_MGR_WAIT; /* PROC Module */ struct { UINT uProcessor; struct DSP_PROCESSORATTRIN *pAttrIn; DSP_HPROCESSOR *phProcessor; } ARGS_PROC_ATTACH; struct { DSP_HPROCESSOR hProcessor; ULONG dwCmd; struct DSP_CBDATA *pArgs; } ARGS_PROC_CTRL; struct { DSP_HPROCESSOR hProcessor; } ARGS_PROC_DETACH; struct { DSP_HPROCESSOR hProcessor; DSP_HNODE *aNodeTab; UINT uNodeTabSize; UINT *puNumNodes; UINT *puAllocated; } ARGS_PROC_ENUMNODE_INFO; struct { DSP_HPROCESSOR hProcessor; UINT uResourceType; struct DSP_RESOURCEINFO *pResourceInfo; UINT uResourceInfoSize; } ARGS_PROC_ENUMRESOURCES; struct { DSP_HPROCESSOR hProcessor; struct DSP_PROCESSORSTATE *pProcStatus; UINT uStateInfoSize; } ARGS_PROC_GETSTATE; struct { DSP_HPROCESSOR hProcessor; BYTE *pBuf; #ifndef RES_CLEANUP_DISABLE BYTE * pSize; #endif UINT uMaxSize; } ARGS_PROC_GETTRACE; struct { DSP_HPROCESSOR hProcessor; INT iArgc; CHAR **aArgv; CHAR **aEnvp; } ARGS_PROC_LOAD; struct { DSP_HPROCESSOR hProcessor; UINT uEventMask; UINT uNotifyType; struct DSP_NOTIFICATION* hNotification; } ARGS_PROC_REGISTER_NOTIFY; struct { DSP_HPROCESSOR hProcessor; } ARGS_PROC_START; struct { DSP_HPROCESSOR hProcessor; ULONG ulSize; PVOID *ppRsvAddr; } ARGS_PROC_RSVMEM; struct { DSP_HPROCESSOR hProcessor; ULONG ulSize; PVOID pRsvAddr; } ARGS_PROC_UNRSVMEM; struct { DSP_HPROCESSOR hProcessor; PVOID pMpuAddr; ULONG ulSize; PVOID pReqAddr; PVOID *ppMapAddr; ULONG ulMapAttr; } ARGS_PROC_MAPMEM; struct { DSP_HPROCESSOR hProcessor; ULONG ulSize; PVOID pMapAddr; } ARGS_PROC_UNMAPMEM; struct { DSP_HPROCESSOR hProcessor; PVOID pMpuAddr; ULONG ulSize; ULONG ulFlags; } ARGS_PROC_FLUSHMEMORY; struct { DSP_HPROCESSOR hProcessor; } ARGS_PROC_STOP; struct { DSP_HPROCESSOR hProcessor; PVOID pMpuAddr; ULONG ulSize; } ARGS_PROC_INVALIDATEMEMORY; /* NODE Module */ struct { DSP_HPROCESSOR hProcessor; struct DSP_UUID *pNodeID; struct DSP_CBDATA *pArgs; struct DSP_NODEATTRIN *pAttrIn; DSP_HNODE *phNode; } ARGS_NODE_ALLOCATE; struct { DSP_HNODE hNode; UINT uSize; struct DSP_BUFFERATTR *pAttr; BYTE **pBuffer; } ARGS_NODE_ALLOCMSGBUF; struct { DSP_HNODE hNode; INT iPriority; } ARGS_NODE_CHANGEPRIORITY; struct { DSP_HNODE hNode; UINT uStream; DSP_HNODE hOtherNode; UINT uOtherStream; struct DSP_STRMATTR *pAttrs; struct DSP_CBDATA *pConnParam; } ARGS_NODE_CONNECT; struct { DSP_HNODE hNode; } ARGS_NODE_CREATE; struct { DSP_HNODE hNode; } ARGS_NODE_DELETE; struct { DSP_HNODE hNode; struct DSP_BUFFERATTR *pAttr; BYTE *pBuffer; } ARGS_NODE_FREEMSGBUF; struct { DSP_HNODE hNode; struct DSP_NODEATTR *pAttr; UINT uAttrSize; } ARGS_NODE_GETATTR; struct { DSP_HNODE hNode; struct DSP_MSG *pMessage; UINT uTimeout; } ARGS_NODE_GETMESSAGE; struct { DSP_HNODE hNode; } ARGS_NODE_PAUSE; struct { DSP_HNODE hNode; struct DSP_MSG *pMessage; UINT uTimeout; } ARGS_NODE_PUTMESSAGE; struct { DSP_HNODE hNode; UINT uEventMask; UINT uNotifyType; struct DSP_NOTIFICATION* hNotification; } ARGS_NODE_REGISTERNOTIFY; struct { DSP_HNODE hNode; } ARGS_NODE_RUN; struct { DSP_HNODE hNode; DSP_STATUS *pStatus; } ARGS_NODE_TERMINATE; struct { DSP_HPROCESSOR hProcessor; struct DSP_UUID *pNodeID; struct DSP_NDBPROPS *pNodeProps; } ARGS_NODE_GETUUIDPROPS; /* STRM module */ struct { DSP_HSTREAM hStream; UINT uSize; BYTE **apBuffer; UINT uNumBufs; } ARGS_STRM_ALLOCATEBUFFER; struct { DSP_HSTREAM hStream; } ARGS_STRM_CLOSE; struct { DSP_HSTREAM hStream; BYTE **apBuffer; UINT uNumBufs; } ARGS_STRM_FREEBUFFER; struct { DSP_HSTREAM hStream; HANDLE *phEvent; } ARGS_STRM_GETEVENTHANDLE; struct { DSP_HSTREAM hStream; struct STRM_INFO *pStreamInfo; UINT uStreamInfoSize; } ARGS_STRM_GETINFO; struct { DSP_HSTREAM hStream; bool bFlush; } ARGS_STRM_IDLE; struct { DSP_HSTREAM hStream; BYTE *pBuffer; ULONG dwBytes; ULONG dwBufSize; DWORD dwArg; } ARGS_STRM_ISSUE; struct { DSP_HNODE hNode; UINT uDirection; UINT uIndex; struct STRM_ATTR *pAttrIn; DSP_HSTREAM *phStream; } ARGS_STRM_OPEN; struct { DSP_HSTREAM hStream; BYTE **pBufPtr; ULONG *pBytes; ULONG *pBufSize; DWORD *pdwArg; } ARGS_STRM_RECLAIM; struct { DSP_HSTREAM hStream; UINT uEventMask; UINT uNotifyType; struct DSP_NOTIFICATION* hNotification; } ARGS_STRM_REGISTERNOTIFY; struct { DSP_HSTREAM *aStreamTab; UINT nStreams; UINT *pMask; UINT uTimeout; } ARGS_STRM_SELECT; /* CMM Module */ struct { struct CMM_OBJECT* hCmmMgr; UINT uSize; struct CMM_ATTRS *pAttrs; OUT PVOID *ppBufVA; } ARGS_CMM_ALLOCBUF; struct { struct CMM_OBJECT* hCmmMgr; PVOID pBufPA; ULONG ulSegId; } ARGS_CMM_FREEBUF; struct { DSP_HPROCESSOR hProcessor; struct CMM_OBJECT* *phCmmMgr; } ARGS_CMM_GETHANDLE; struct { struct CMM_OBJECT* hCmmMgr; struct CMM_INFO *pCmmInfo; } ARGS_CMM_GETINFO; /* MEM Module */ struct { ULONG cBytes; MEM_POOLATTRS type; PVOID pMem; } ARGS_MEM_ALLOC; struct { ULONG cBytes; MEM_POOLATTRS type; PVOID pMem; } ARGS_MEM_CALLOC; struct { PVOID pMem; } ARGS_MEM_FREE; struct { PVOID pBuffer; ULONG cSize; PVOID pLockedBuffer; } ARGS_MEM_PAGELOCK; struct { PVOID pBuffer; ULONG cSize; } ARGS_MEM_PAGEUNLOCK; /* UTIL module */ struct { INT cArgc; CHAR **ppArgv; } ARGS_UTIL_TESTDLL; } Trapped_Args; #define CMD_BASE 1 /* MGR module offsets */ #define CMD_MGR_BASE_OFFSET CMD_BASE #define CMD_MGR_ENUMNODE_INFO_OFFSET (CMD_MGR_BASE_OFFSET + 0) #define CMD_MGR_ENUMPROC_INFO_OFFSET (CMD_MGR_BASE_OFFSET + 1) #define CMD_MGR_REGISTEROBJECT_OFFSET (CMD_MGR_BASE_OFFSET + 2) #define CMD_MGR_UNREGISTEROBJECT_OFFSET (CMD_MGR_BASE_OFFSET + 3) #define CMD_MGR_WAIT_OFFSET (CMD_MGR_BASE_OFFSET + 4) #ifndef RES_CLEANUP_DISABLE #define CMD_MGR_RESOUCES_OFFSET (CMD_MGR_BASE_OFFSET + 5) #define CMD_MGR_END_OFFSET CMD_MGR_RESOUCES_OFFSET #else #define CMD_MGR_END_OFFSET CMD_MGR_WAIT_OFFSET #endif #define CMD_PROC_BASE_OFFSET (CMD_MGR_END_OFFSET + 1) #define CMD_PROC_ATTACH_OFFSET (CMD_PROC_BASE_OFFSET + 0) #define CMD_PROC_CTRL_OFFSET (CMD_PROC_BASE_OFFSET + 1) #define CMD_PROC_DETACH_OFFSET (CMD_PROC_BASE_OFFSET + 2) #define CMD_PROC_ENUMNODE_OFFSET (CMD_PROC_BASE_OFFSET + 3) #define CMD_PROC_ENUMRESOURCES_OFFSET (CMD_PROC_BASE_OFFSET + 4) #define CMD_PROC_GETSTATE_OFFSET (CMD_PROC_BASE_OFFSET + 5) #define CMD_PROC_GETTRACE_OFFSET (CMD_PROC_BASE_OFFSET + 6) #define CMD_PROC_LOAD_OFFSET (CMD_PROC_BASE_OFFSET + 7) #define CMD_PROC_REGISTERNOTIFY_OFFSET (CMD_PROC_BASE_OFFSET + 8) #define CMD_PROC_START_OFFSET (CMD_PROC_BASE_OFFSET + 9) #define CMD_PROC_RSVMEM_OFFSET (CMD_PROC_BASE_OFFSET + 10) #define CMD_PROC_UNRSVMEM_OFFSET (CMD_PROC_BASE_OFFSET + 11) #define CMD_PROC_MAPMEM_OFFSET (CMD_PROC_BASE_OFFSET + 12) #define CMD_PROC_UNMAPMEM_OFFSET (CMD_PROC_BASE_OFFSET + 13) #define CMD_PROC_FLUSHMEMORY_OFFSET (CMD_PROC_BASE_OFFSET + 14) #define CMD_PROC_STOP_OFFSET (CMD_PROC_BASE_OFFSET + 15) #define CMD_PROC_INVALIDATEMEMORY_OFFSET (CMD_PROC_BASE_OFFSET + 16) #define CMD_PROC_END_OFFSET CMD_PROC_INVALIDATEMEMORY_OFFSET #define CMD_NODE_BASE_OFFSET (CMD_PROC_END_OFFSET + 1) #define CMD_NODE_ALLOCATE_OFFSET (CMD_NODE_BASE_OFFSET + 0) #define CMD_NODE_ALLOCMSGBUF_OFFSET (CMD_NODE_BASE_OFFSET + 1) #define CMD_NODE_CHANGEPRIORITY_OFFSET (CMD_NODE_BASE_OFFSET + 2) #define CMD_NODE_CONNECT_OFFSET (CMD_NODE_BASE_OFFSET + 3) #define CMD_NODE_CREATE_OFFSET (CMD_NODE_BASE_OFFSET + 4) #define CMD_NODE_DELETE_OFFSET (CMD_NODE_BASE_OFFSET + 5) #define CMD_NODE_FREEMSGBUF_OFFSET (CMD_NODE_BASE_OFFSET + 6) #define CMD_NODE_GETATTR_OFFSET (CMD_NODE_BASE_OFFSET + 7) #define CMD_NODE_GETMESSAGE_OFFSET (CMD_NODE_BASE_OFFSET + 8) #define CMD_NODE_PAUSE_OFFSET (CMD_NODE_BASE_OFFSET + 9) #define CMD_NODE_PUTMESSAGE_OFFSET (CMD_NODE_BASE_OFFSET + 10) #define CMD_NODE_REGISTERNOTIFY_OFFSET (CMD_NODE_BASE_OFFSET + 11) #define CMD_NODE_RUN_OFFSET (CMD_NODE_BASE_OFFSET + 12) #define CMD_NODE_TERMINATE_OFFSET (CMD_NODE_BASE_OFFSET + 13) #define CMD_NODE_GETUUIDPROPS_OFFSET (CMD_NODE_BASE_OFFSET + 14) #define CMD_NODE_END_OFFSET CMD_NODE_GETUUIDPROPS_OFFSET #define CMD_STRM_BASE_OFFSET (CMD_NODE_END_OFFSET + 1) #define CMD_STRM_ALLOCATEBUFFER_OFFSET (CMD_STRM_BASE_OFFSET + 0) #define CMD_STRM_CLOSE_OFFSET (CMD_STRM_BASE_OFFSET + 1) #define CMD_STRM_FREEBUFFER_OFFSET (CMD_STRM_BASE_OFFSET + 2) #define CMD_STRM_GETEVENTHANDLE_OFFSET (CMD_STRM_BASE_OFFSET + 3) #define CMD_STRM_GETINFO_OFFSET (CMD_STRM_BASE_OFFSET + 4) #define CMD_STRM_IDLE_OFFSET (CMD_STRM_BASE_OFFSET + 5) #define CMD_STRM_ISSUE_OFFSET (CMD_STRM_BASE_OFFSET + 6) #define CMD_STRM_OPEN_OFFSET (CMD_STRM_BASE_OFFSET + 7) #define CMD_STRM_RECLAIM_OFFSET (CMD_STRM_BASE_OFFSET + 8) #define CMD_STRM_REGISTERNOTIFY_OFFSET (CMD_STRM_BASE_OFFSET + 9) #define CMD_STRM_SELECT_OFFSET (CMD_STRM_BASE_OFFSET + 10) #define CMD_STRM_END_OFFSET CMD_STRM_SELECT_OFFSET /* Communication Memory Manager (UCMM) */ #define CMD_CMM_BASE_OFFSET (CMD_STRM_END_OFFSET + 1) #define CMD_CMM_ALLOCBUF_OFFSET (CMD_CMM_BASE_OFFSET + 0) #define CMD_CMM_FREEBUF_OFFSET (CMD_CMM_BASE_OFFSET + 1) #define CMD_CMM_GETHANDLE_OFFSET (CMD_CMM_BASE_OFFSET + 2) #define CMD_CMM_GETINFO_OFFSET (CMD_CMM_BASE_OFFSET + 3) #define CMD_CMM_END_OFFSET CMD_CMM_GETINFO_OFFSET /* MEMRY module offsets */ #define CMD_MEM_BASE_OFFSET (CMD_CMM_END_OFFSET + 1) #define CMD_MEM_ALLOC_OFFSET (CMD_MEM_BASE_OFFSET + 0) #define CMD_MEM_CALLOC_OFFSET (CMD_MEM_BASE_OFFSET + 1) #define CMD_MEM_FREE_OFFSET (CMD_MEM_BASE_OFFSET + 2) #define CMD_MEM_PAGELOCK_OFFSET (CMD_MEM_BASE_OFFSET + 3) #define CMD_MEM_PAGEUNLOCK_OFFSET (CMD_MEM_BASE_OFFSET + 4) #define CMD_MEM_END_OFFSET CMD_MEM_PAGEUNLOCK_OFFSET /* UTIL module */ #define CMD_UTIL_BASE_OFFSET (CMD_MEM_END_OFFSET + 1) #define CMD_UTIL_TESTDLL_OFFSET (CMD_UTIL_BASE_OFFSET + 0) #define CMD_UTIL_END_OFFSET CMD_UTIL_TESTDLL_OFFSET /* !!! place all command modules before CMD_BASE_END_OFFSET */ #define CMD_BASE_END_OFFSET CMD_UTIL_END_OFFSET #endif /* WCDIOCTL_ */