summaryrefslogtreecommitdiff
path: root/arch/arm/plat-omap/include/dspbridge/wcdioctl.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/plat-omap/include/dspbridge/wcdioctl.h')
-rw-r--r--arch/arm/plat-omap/include/dspbridge/wcdioctl.h519
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_ */