diff options
Diffstat (limited to 'arch/arm/plat-omap/include/dspbridge/wcdioctl.h')
-rw-r--r-- | arch/arm/plat-omap/include/dspbridge/wcdioctl.h | 519 |
1 files changed, 519 insertions, 0 deletions
diff --git a/arch/arm/plat-omap/include/dspbridge/wcdioctl.h b/arch/arm/plat-omap/include/dspbridge/wcdioctl.h new file mode 100644 index 000000000000..1579a3c33332 --- /dev/null +++ b/arch/arm/plat-omap/include/dspbridge/wcdioctl.h @@ -0,0 +1,519 @@ +/* + * wcdioctl.h + * + * DSP-BIOS Bridge driver support functions for TI OMAP processors. + * + * Copyright (C) 2008 Texas Instruments, Inc. + * + * This package is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ + + +/* + * ======== wcdioctl.h ======== + * 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 u32 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 <dspbridge/mem.h> +#include <dspbridge/cmm.h> +#include <dspbridge/strmdefs.h> +#include <dspbridge/dbdcd.h> + +union Trapped_Args { + + /* MGR Module */ + struct { + u32 uNode; + struct DSP_NDBPROPS __user *pNDBProps; + u32 uNDBPropsSize; + u32 __user *puNumNodes; + } ARGS_MGR_ENUMNODE_INFO; + + struct { + u32 uProcessor; + struct DSP_PROCESSORINFO __user *pProcessorInfo; + u32 uProcessorInfoSize; + u32 __user *puNumProcs; + } ARGS_MGR_ENUMPROC_INFO; + + struct { + struct DSP_UUID *pUuid; + enum DSP_DCDOBJTYPE objType; + char *pszPathName; + } ARGS_MGR_REGISTEROBJECT; + + struct { + struct DSP_UUID *pUuid; + enum DSP_DCDOBJTYPE objType; + } ARGS_MGR_UNREGISTEROBJECT; + + struct { + struct DSP_NOTIFICATION __user*__user *aNotifications; + u32 uCount; + u32 __user *puIndex; + u32 uTimeout; + } ARGS_MGR_WAIT; + + /* PROC Module */ + struct { + u32 uProcessor; + struct DSP_PROCESSORATTRIN __user *pAttrIn; + DSP_HPROCESSOR __user *phProcessor; + } ARGS_PROC_ATTACH; + + struct { + DSP_HPROCESSOR hProcessor; + u32 dwCmd; + struct DSP_CBDATA __user *pArgs; + } ARGS_PROC_CTRL; + + struct { + DSP_HPROCESSOR hProcessor; + } ARGS_PROC_DETACH; + + struct { + DSP_HPROCESSOR hProcessor; + DSP_HNODE __user *aNodeTab; + u32 uNodeTabSize; + u32 __user *puNumNodes; + u32 __user *puAllocated; + } ARGS_PROC_ENUMNODE_INFO; + + struct { + DSP_HPROCESSOR hProcessor; + u32 uResourceType; + struct DSP_RESOURCEINFO *pResourceInfo; + u32 uResourceInfoSize; + } ARGS_PROC_ENUMRESOURCES; + + struct { + DSP_HPROCESSOR hProcessor; + struct DSP_PROCESSORSTATE __user *pProcStatus; + u32 uStateInfoSize; + } ARGS_PROC_GETSTATE; + + struct { + DSP_HPROCESSOR hProcessor; + u8 __user *pBuf; + + #ifndef RES_CLEANUP_DISABLE + u8 __user *pSize; + #endif + u32 uMaxSize; + } ARGS_PROC_GETTRACE; + + struct { + DSP_HPROCESSOR hProcessor; + s32 iArgc; + char __user*__user *aArgv; + char *__user *aEnvp; + } ARGS_PROC_LOAD; + + struct { + DSP_HPROCESSOR hProcessor; + u32 uEventMask; + u32 uNotifyType; + struct DSP_NOTIFICATION __user *hNotification; + } ARGS_PROC_REGISTER_NOTIFY; + + struct { + DSP_HPROCESSOR hProcessor; + } ARGS_PROC_START; + + struct { + DSP_HPROCESSOR hProcessor; + u32 ulSize; + void *__user *ppRsvAddr; + } ARGS_PROC_RSVMEM; + + struct { + DSP_HPROCESSOR hProcessor; + u32 ulSize; + void *pRsvAddr; + } ARGS_PROC_UNRSVMEM; + + struct { + DSP_HPROCESSOR hProcessor; + void *pMpuAddr; + u32 ulSize; + void *pReqAddr; + void *__user *ppMapAddr; + u32 ulMapAttr; + } ARGS_PROC_MAPMEM; + + struct { + DSP_HPROCESSOR hProcessor; + u32 ulSize; + void *pMapAddr; + } ARGS_PROC_UNMAPMEM; + + struct { + DSP_HPROCESSOR hProcessor; + void *pMpuAddr; + u32 ulSize; + u32 ulFlags; + } ARGS_PROC_FLUSHMEMORY; + + struct { + DSP_HPROCESSOR hProcessor; + } ARGS_PROC_STOP; + + struct { + DSP_HPROCESSOR hProcessor; + void *pMpuAddr; + u32 ulSize; + } ARGS_PROC_INVALIDATEMEMORY; + + + /* NODE Module */ + struct { + DSP_HPROCESSOR hProcessor; + struct DSP_UUID __user *pNodeID; + struct DSP_CBDATA __user *pArgs; + struct DSP_NODEATTRIN __user *pAttrIn; + DSP_HNODE __user *phNode; + } ARGS_NODE_ALLOCATE; + + struct { + DSP_HNODE hNode; + u32 uSize; + struct DSP_BUFFERATTR __user *pAttr; + u8 *__user *pBuffer; + } ARGS_NODE_ALLOCMSGBUF; + + struct { + DSP_HNODE hNode; + s32 iPriority; + } ARGS_NODE_CHANGEPRIORITY; + + struct { + DSP_HNODE hNode; + u32 uStream; + DSP_HNODE hOtherNode; + u32 uOtherStream; + struct DSP_STRMATTR __user *pAttrs; + struct DSP_CBDATA __user *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 __user *pAttr; + u8 *pBuffer; + } ARGS_NODE_FREEMSGBUF; + + struct { + DSP_HNODE hNode; + struct DSP_NODEATTR __user *pAttr; + u32 uAttrSize; + } ARGS_NODE_GETATTR; + + struct { + DSP_HNODE hNode; + struct DSP_MSG __user *pMessage; + u32 uTimeout; + } ARGS_NODE_GETMESSAGE; + + struct { + DSP_HNODE hNode; + } ARGS_NODE_PAUSE; + + struct { + DSP_HNODE hNode; + struct DSP_MSG __user *pMessage; + u32 uTimeout; + } ARGS_NODE_PUTMESSAGE; + + struct { + DSP_HNODE hNode; + u32 uEventMask; + u32 uNotifyType; + struct DSP_NOTIFICATION __user *hNotification; + } ARGS_NODE_REGISTERNOTIFY; + + struct { + DSP_HNODE hNode; + } ARGS_NODE_RUN; + + struct { + DSP_HNODE hNode; + DSP_STATUS __user *pStatus; + } ARGS_NODE_TERMINATE; + + struct { + DSP_HPROCESSOR hProcessor; + struct DSP_UUID __user *pNodeID; + struct DSP_NDBPROPS __user *pNodeProps; + } ARGS_NODE_GETUUIDPROPS; + + /* STRM module */ + + struct { + DSP_HSTREAM hStream; + u32 uSize; + u8 *__user *apBuffer; + u32 uNumBufs; + } ARGS_STRM_ALLOCATEBUFFER; + + struct { + DSP_HSTREAM hStream; + } ARGS_STRM_CLOSE; + + struct { + DSP_HSTREAM hStream; + u8 *__user *apBuffer; + u32 uNumBufs; + } ARGS_STRM_FREEBUFFER; + + struct { + DSP_HSTREAM hStream; + HANDLE *phEvent; + } ARGS_STRM_GETEVENTHANDLE; + + struct { + DSP_HSTREAM hStream; + struct STRM_INFO __user *pStreamInfo; + u32 uStreamInfoSize; + } ARGS_STRM_GETINFO; + + struct { + DSP_HSTREAM hStream; + bool bFlush; + } ARGS_STRM_IDLE; + + struct { + DSP_HSTREAM hStream; + u8 *pBuffer; + u32 dwBytes; + u32 dwBufSize; + u32 dwArg; + } ARGS_STRM_ISSUE; + + struct { + DSP_HNODE hNode; + u32 uDirection; + u32 uIndex; + struct STRM_ATTR __user *pAttrIn; + DSP_HSTREAM __user *phStream; + } ARGS_STRM_OPEN; + + struct { + DSP_HSTREAM hStream; + u8 *__user *pBufPtr; + u32 __user *pBytes; + u32 __user *pBufSize; + u32 __user *pdwArg; + } ARGS_STRM_RECLAIM; + + struct { + DSP_HSTREAM hStream; + u32 uEventMask; + u32 uNotifyType; + struct DSP_NOTIFICATION __user *hNotification; + } ARGS_STRM_REGISTERNOTIFY; + + struct { + DSP_HSTREAM __user *aStreamTab; + u32 nStreams; + u32 __user *pMask; + u32 uTimeout; + } ARGS_STRM_SELECT; + + /* CMM Module */ + struct { + struct CMM_OBJECT *hCmmMgr; + u32 uSize; + struct CMM_ATTRS *pAttrs; + OUT void **ppBufVA; + } ARGS_CMM_ALLOCBUF; + + struct { + struct CMM_OBJECT *hCmmMgr; + void *pBufPA; + u32 ulSegId; + } ARGS_CMM_FREEBUF; + + struct { + DSP_HPROCESSOR hProcessor; + struct CMM_OBJECT *__user *phCmmMgr; + } ARGS_CMM_GETHANDLE; + + struct { + struct CMM_OBJECT *hCmmMgr; + struct CMM_INFO __user *pCmmInfo; + } ARGS_CMM_GETINFO; + + /* MEM Module */ + struct { + u32 cBytes; + enum MEM_POOLATTRS type; + void *pMem; + } ARGS_MEM_ALLOC; + + struct { + u32 cBytes; + enum MEM_POOLATTRS type; + void *pMem; + } ARGS_MEM_CALLOC; + + struct { + void *pMem; + } ARGS_MEM_FREE; + + struct { + void *pBuffer; + u32 cSize; + void *pLockedBuffer; + } ARGS_MEM_PAGELOCK; + + struct { + void *pBuffer; + u32 cSize; + } ARGS_MEM_PAGEUNLOCK; + + /* UTIL module */ + struct { + s32 cArgc; + char **ppArgv; + } ARGS_UTIL_TESTDLL; +} ; + +#define CMD_BASE 101 + +/* 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 + +#define CMD_BASE_END_OFFSET CMD_CMM_END_OFFSET +#endif /* WCDIOCTL_ */ |