173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * dspbridge/mpu_api/inc/dbdefs.h
373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP-BIOS Bridge driver support functions for TI OMAP processors.
573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Copyright (C) 2007 Texas Instruments, Inc.
773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * This program is free software; you can redistribute it and/or modify it
973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * under the terms of the GNU Lesser General Public License as published
1073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * by the Free Software Foundation version 2.1 of the License.
1173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
1273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * This program is distributed .as is. WITHOUT ANY WARRANTY of any kind,
1373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * whether express or implied; without even the implied warranty of
1473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Lesser General Public License for more details.
1673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
1773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
1873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
1973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
2073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
2173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== dbdefs.h ========
2273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Description:
2373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Global definitions and constants for DSP/BIOS Bridge.
2473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
2573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! Revision History:
2673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! ================
2773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 19-Apr-2004 sb  Aligned DMM definitions with Symbian
2873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 08-Mar-2004 sb  Added MAPATTR & ELEM_SIZE for Dynamic Memory Mapping feature
2973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 09-Feb-2004 vp  Added processor ID numbers for DSP and IVA
3073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 06-Feb-2003 kc  Removed DSP_POSTMESSAGE. Updated IsValid*Event macros.
3173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 22-Nov-2002 gp  Cleaned up comments, formatting.
3273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 Removed unused DSP_ENUMLASTNODE define.
3373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 13-Feb-2002 jeh Added uSysStackSize to DSP_NDBPROPS.
3473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 23-Jan-2002 ag  Added #define DSP_SHMSEG0.
3573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 12-Dec-2001 ag  Added DSP_ESTRMMODE error code.
3673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 04-Dec-2001 jeh Added DSP_ENOTCONNECTED error code.
3773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 10-Dec-2001 kc: Modified macros and definitions to disable DSP_POSTMESSAGE.
3873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 01-Nov-2001 jeh Added DSP_EOVERLAYMEMORY.
3973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 18-Oct-2001 ag  Added DSP_STRMMODE type.
4073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 Added DSP_ENOTSHAREDMEM.
4173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 21-Sep-2001 ag  Added additional error codes.
4273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 07-Jun-2001 sg  Made DSPStream_AllocateBuffer fxn name plural.
4373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 11-May-2001 jeh Changed DSP_NODE_MIN_PRIORITY from 0 to 1. Removed hNode
4473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 from DSP_NODEINFO.
4573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 02-Apr-2001 sg  Added missing error codes, rearranged codes, switched to
4673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!             hex offsets, renamed some codes to match API spec.
4773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 16-Jan-2001 jeh Added DSP_ESYMBOL, DSP_EUUID.
4873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 13-Feb-2001 kc: DSP/BIOS Bridge name updates.
4973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 05-Dec-2000 ag: Added DSP_RMSxxx user available message command codes.
5073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 09-Nov-2000 rr: Added DSP_PROCEESORRESTART define; Removed DSP_PBUFFER.
5173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 Added DSP_DCD_ENOAUTOREGISTER, DSP_EUSER1-16, DSP_ESTRMFUL
5273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 Removed DSP_EDONE. Macros's modified.
5373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 23-Oct-2000 jeh Replaced DSP_STREAMSTATECHANGE with DSP_STREAMDONE.
5473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 09-Oct-2000 jeh Updated to version 0.9 DSP Bridge API spec.
5573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 29-Sep-2000 kc  Added error codes for DCD and REG to simplify use of
5673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 these codes within the RM module.
5773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 27-Sep-2000 jeh Added segid, alignment, uNumBufs to DSP_STREAMATTRIN.
5873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 29-Aug-2000 jeh Added DSP_NODETYPE enum, changed DSP_EALREADYATTACHED to
5973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 DSP_EALREADYCONNECTED. Changed scStreamConnection[1]
6073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 to scStreamConnection[16] in DSP_NODEINFO structure.
6173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 Added DSP_NOTIFICATION, DSP_STRMATTR. PSTRING changed
6273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 back to TCHAR * and moved to dbtype.h.
6373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 11-Aug-2000 rr: Macros to check valid events and notify masks added.
6473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 09-Aug-2000 rr: Changed PSTRING to *CHAR
6573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 07-Aug-2000 rr: PROC_IDLE/SYNCINIT/UNKNOWN state removed.
6673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 20-Jul-2000 rr: Updated to version 0.8
6773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 17-Jul-2000 rr: New PROC states added to the DSP_PROCSTATE.
6873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 27-Jun-2000 rr: Created from dspapi.h
6973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
7073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
7173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifndef DBDEFS_
7273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DBDEFS_
7373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
7473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <dbtype.h>		/* GPP side type definitions           */
7573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <std.h>		/* DSP/BIOS type definitions           */
7673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <rms_sh.h>		/* Types shared between GPP and DSP    */
7773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
7873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef __cplusplus
7973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinextern "C" {
8073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif
8173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
8273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define PG_SIZE_4K 4096
8373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define PG_MASK(pg_size) (~((pg_size)-1))
8473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define PG_ALIGN_LOW(addr, pg_size) ((addr) & PG_MASK(pg_size))
8573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define PG_ALIGN_HIGH(addr, pg_size) (((addr)+(pg_size)-1) & PG_MASK(pg_size))
8673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
8773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* API return value and calling convention */
8873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DBAPI                       DSP_STATUS CDECL
8973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
9073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Infinite time value for the uTimeout parameter to DSPStream_Select() */
9173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_FOREVER                 (-1)
9273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
9373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Maximum length of node name, used in DSP_NDBPROPS */
9473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_MAXNAMELEN              32
9573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
9673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* uNotifyType values for the RegisterNotify() functions. */
9773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_SIGNALEVENT             0x00000001
9873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
9973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Types of events for processors */
10073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_PROCESSORSTATECHANGE    0x00000001
10173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_PROCESSORATTACH         0x00000002
10273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_PROCESSORDETACH         0x00000004
10373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_PROCESSORRESTART        0x00000008
10473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
10573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* DSP exception events (DSP/BIOS and DSP MMU fault) */
10673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_MMUFAULT                0x00000010
10773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_SYSERROR                0x00000020
10873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
10973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* IVA exception events (IVA MMU fault) */
11073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define IVA_MMUFAULT                0x00000040
11173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Types of events for nodes */
11273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_NODESTATECHANGE         0x00000100
11373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_NODEMESSAGEREADY        0x00000200
11473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
11573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Types of events for streams */
11673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_STREAMDONE              0x00001000
11773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_STREAMIOCOMPLETION      0x00002000
11873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
11973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Handle definition representing the GPP node in DSPNode_Connect() calls */
12073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_HGPPNODE                0xFFFFFFFF
12173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
12273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Node directions used in DSPNode_Connect() */
12373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_TONODE                  1
12473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_FROMNODE                2
12573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
12673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Define Node Minimum and Maximum Priorities */
12773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_NODE_MIN_PRIORITY       1
12873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_NODE_MAX_PRIORITY       15
12973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
13073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Pre-Defined Message Command Codes available to user: */
13173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_RMSUSERCODESTART RMS_USER	/* Start of RMS user cmd codes */
13273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_RMSUSERCODEEND RMS_USER + RMS_MAXUSERCODES;	/* end of user codes */
13373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_RMSBUFDESC RMS_BUFDESC	/* MSG contains SM buffer description */
13473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
13573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Shared memory identifier for MEM segment named "SHMSEG0" */
13673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_SHMSEG0     (UINT)(-1)
13773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
13873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Processor ID numbers */
13973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_UNIT    0
14073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define IVA_UNIT    1
14173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
14273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSPWORD       BYTE
14373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSPWORDSIZE     sizeof(DSPWORD)
14473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
14573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Success & Failure macros  */
14673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_SUCCEEDED(Status)      ((INT)(Status) >= 0)
14773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_FAILED(Status)         ((INT)(Status) < 0)
14873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
14973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Power control enumerations */
15073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define PROC_PWRCONTROL             0x8070
15173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
15273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define PROC_PWRMGT_ENABLE          (PROC_PWRCONTROL + 0x3)
15373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define PROC_PWRMGT_DISABLE         (PROC_PWRCONTROL + 0x4)
15473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
15573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Bridge Code Version */
15673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define BRIDGE_VERSION_CODE         333
15773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
15873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define    MAX_PROFILES     16
15973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
16073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Types defined for 'Bridge API */
16173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef DWORD DSP_STATUS;	/* API return code type         */
16273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
16373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef HANDLE DSP_HNODE;	/* Handle to a DSP Node object  */
16473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef HANDLE DSP_HPROCESSOR;	/* Handle to a Processor object */
16573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef HANDLE DSP_HSTREAM;	/* Handle to a Stream object    */
16673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
16773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef ULONG DSP_PROCFAMILY;	/* Processor family             */
16873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef ULONG DSP_PROCTYPE;	/* Processor type (w/in family) */
16973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef ULONG DSP_RTOSTYPE;	/* Type of DSP RTOS             */
17073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
17173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef ULONG DSP_RESOURCEMASK;	/* Mask for processor resources */
17273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef ULONG DSP_ERRORMASK;	/* Mask for various error types */
17373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
17473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Handy Macros */
17573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define IsValidProcEvent(x)    (((x) == 0) || (((x) & (DSP_PROCESSORSTATECHANGE | \
17673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                    DSP_PROCESSORATTACH | \
17773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                    DSP_PROCESSORDETACH | \
17873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                    DSP_PROCESSORRESTART | \
17973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                    DSP_NODESTATECHANGE | \
18073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                    DSP_STREAMDONE | \
18173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                    DSP_STREAMIOCOMPLETION | \
18273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                    DSP_MMUFAULT | \
18373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                    DSP_SYSERROR)) && \
18473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                !((x) & ~(DSP_PROCESSORSTATECHANGE | \
18573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                    DSP_PROCESSORATTACH | \
18673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                    DSP_PROCESSORDETACH | \
18773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                    DSP_PROCESSORRESTART | \
18873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                    DSP_NODESTATECHANGE | \
18973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                    DSP_STREAMDONE | \
19073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                    DSP_STREAMIOCOMPLETION | \
19173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                    DSP_MMUFAULT | \
19273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                    DSP_SYSERROR))))
19373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
19473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define IsValidNodeEvent(x)    (((x) == 0) || (((x) & (DSP_NODESTATECHANGE | \
19573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                DSP_NODEMESSAGEREADY)) && \
19673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                !((x) & ~(DSP_NODESTATECHANGE | \
19773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                DSP_NODEMESSAGEREADY))))
19873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
19973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define IsValidStrmEvent(x)     (((x) == 0) || (((x) & (DSP_STREAMDONE | \
20073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                DSP_STREAMIOCOMPLETION)) && \
20173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                !((x) & ~(DSP_STREAMDONE | \
20273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin                                DSP_STREAMIOCOMPLETION))))
20373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
20473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define IsValidNotifyMask(x)   ((x) & DSP_SIGNALEVENT)
20573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
20673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* The Node UUID structure */
20773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_UUID {
20873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		ULONG ulData1;
20973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		USHORT usData2;
21073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		USHORT usData3;
21173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		BYTE ucData4;
21273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		BYTE ucData5;
21373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UCHAR ucData6[6];
21473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	};
21573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_UUID, *DSP_HUUID;*/
21673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
21773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* DCD types */
21873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef enum {
21973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_DCDNODETYPE,
22073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_DCDPROCESSORTYPE,
22173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_DCDLIBRARYTYPE,
22273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_DCDCREATELIBTYPE,
22373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_DCDEXECUTELIBTYPE,
22473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_DCDDELETELIBTYPE
22573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} DSP_DCDOBJTYPE;
22673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
22773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Processor states */
22873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef enum {
22973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		PROC_STOPPED,
23073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		PROC_LOADED,
23173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		PROC_RUNNING,
23273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		PROC_ERROR
23373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} DSP_PROCSTATE;
23473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
23573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Node types */
23673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef enum {
23773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		NODE_DEVICE,
23873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		NODE_TASK,
23973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		NODE_DAISSOCKET,
24073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		NODE_MESSAGE
24173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} DSP_NODETYPE;
24273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
24373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Node states */
24473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef enum {
24573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		NODE_ALLOCATED,
24673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		NODE_CREATED,
24773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		NODE_RUNNING,
24873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		NODE_PAUSED,
24973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		NODE_DONE
25073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} DSP_NODESTATE;
25173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
25273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Stream states */
25373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef enum {
25473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		STREAM_IDLE,
25573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		STREAM_READY,
25673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		STREAM_PENDING,
25773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		STREAM_DONE
25873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} DSP_STREAMSTATE;
25973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
26073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Stream connect types */
26173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef enum {
26273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		CONNECTTYPE_NODEOUTPUT,
26373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		CONNECTTYPE_GPPOUTPUT,
26473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		CONNECTTYPE_NODEINPUT,
26573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		CONNECTTYPE_GPPINPUT
26673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} DSP_CONNECTTYPE;
26773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
26873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Stream mode types */
26973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef enum {
27073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		STRMMODE_PROCCOPY,	/* Processor(s) copy stream data payloads */
27173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		STRMMODE_ZEROCOPY,	/* Stream buffer pointers swapped, no data copied */
27273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		STRMMODE_LDMA,	/* Local DMA : OMAP's System-DMA device */
27373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		STRMMODE_RDMA	/* Remote DMA: OMAP's DSP-DMA device */
27473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} DSP_STRMMODE;
27573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
27673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Stream DMA priority. Only Low and High supported */
27773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef enum {
27873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DMAPRI_LOW,
27973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DMAPRI_HIGH
28073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} DSP_DMAPRIORITY;
28173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
28273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Resource Types */
28373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef enum {
28473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_RESOURCE_DYNDARAM = 0,
28573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_RESOURCE_DYNSARAM,
28673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_RESOURCE_DYNEXTERNAL,
28773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_RESOURCE_DYNSRAM,
28873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_RESOURCE_PROCLOAD
28973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} DSP_RESOURCEINFOTYPE;
29073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
29173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Memory Segment Types */
29273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	typedef enum {
29373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_DYNDARAM = 0,
29473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_DYNSARAM,
29573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_DYNEXTERNAL,
29673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_DYNSRAM
29773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} DSP_MEMTYPE;
29873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
29973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Memory Flush Types */
30073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin       typedef enum {
30173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		PROC_INVALIDATE_MEM = 0,
30273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		PROC_WRITEBACK_MEM,
30373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		PROC_WRITEBACK_INVALIDATE_MEM,
30473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} DSP_FLUSHTYPE;
30573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
30673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Memory Segment Status Values */
30773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	 struct DSP_MEMSTAT {
30873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		ULONG ulSize;
30973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		ULONG ulTotalFreeSize;
31073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		ULONG ulLenMaxFreeBlock;
31173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		ULONG ulNumFreeBlocks;
31273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		ULONG ulNumAllocBlocks;
31373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
31473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
31573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Processor Load information Values */
31673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	 struct DSP_PROCLOADSTAT {
31773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		ULONG uCurrLoad;
31873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		ULONG uPredictedLoad;
31973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		ULONG uCurrDspFreq;
32073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		ULONG uPredictedFreq;
32173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
32273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
32373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Attributes for STRM connections between nodes */
32473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_STRMATTR {
32573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uSegid;	/* Memory segment on DSP to allocate buffers */
32673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uBufsize;	/* Buffer size (DSP words) */
32773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uNumBufs;	/* Number of buffers */
32873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uAlignment;	/* Buffer alignment */
32973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uTimeout;	/* Timeout for blocking STRM calls */
33073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT lMode;	/* mode of stream when opened */
33173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uDMAChnlId;	/* DMA chnl id if DSP_STRMMODE is LDMA or RDMA */
33273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uDMAPriority;	/* DMA channel priority 0=lowest, >0=high */
33373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
33473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
33573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* The DSP_CBDATA structure */
33673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_CBDATA {
33773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		ULONG cbData;
33873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		BYTE cData[1];
33973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
34073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_CBDATA, *DSP_HCBDATA;*/
34173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
34273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* The DSP_MSG structure */
34373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_MSG {
34473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD dwCmd;
34573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD dwArg1;
34673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD dwArg2;
34773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
34873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_MSG, *DSP_HMSG;*/
34973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
35073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* The DSP_RESOURCEREQMTS structure for node's resource requirements  */
35173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_RESOURCEREQMTS {
35273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD cbStruct;
35373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uStaticDataSize;
35473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uGlobalDataSize;
35573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uProgramMemSize;
35673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uWCExecutionTime;
35773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uWCPeriod;
35873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uWCDeadline;
35973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uAvgExectionTime;
36073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uMinimumPeriod;
36173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
36273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_RESOURCEREQMTS, *DSP_HRESOURCEREQMTS;*/
36373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
36473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
36573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * The DSP_STREAMCONNECT structure describes a stream connection
36673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * between two nodes, or between a node and the GPP
36773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
36873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_STREAMCONNECT {
36973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD cbStruct;
37073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_CONNECTTYPE lType;
37173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uThisNodeStreamIndex;
37273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_HNODE hConnectedNode;
37373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		struct DSP_UUID uiConnectedNodeID;
37473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uConnectedNodeStreamIndex;
37573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
37673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_STREAMCONNECT, *DSP_HSTREAMCONNECT;*/
37773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
37873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_NODEPROFS {
37973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT ulHeapSize;
38073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
38173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_NODEPROFS, *DSP_HNODEPROFS;*/
38273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
38373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* The DSP_NDBPROPS structure reports the attributes of a node */
38473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_NDBPROPS {
38573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD cbStruct;
38673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		struct DSP_UUID uiNodeID;
38773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		CHARACTER acName[DSP_MAXNAMELEN];
38873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_NODETYPE uNodeType;
38973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT bCacheOnGPP;
39073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		struct DSP_RESOURCEREQMTS dspResourceReqmts;
39173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		INT iPriority;
39273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uStackSize;
39373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uSysStackSize;
39473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uStackSeg;
39573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uMessageDepth;
39673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uNumInputStreams;
39773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uNumOutputStreams;
39873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uTimeout;
39973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uCountProfiles;	/* Number of supported profiles */
40073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		/* Array of profiles */
40173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		struct DSP_NODEPROFS aProfiles[MAX_PROFILES];
40273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uStackSegName; /* Stack Segment Name */
40373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
40473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_NDBPROPS, *DSP_HNDBPROPS;*/
40573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
40673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin    /* The DSP_NODEATTRIN structure describes the attributes of a node client */
40773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin    struct DSP_NODEATTRIN {
40873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin            DWORD cbStruct;
40973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin            INT iPriority;
41073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin            UINT uTimeout;
41173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin            UINT    uProfileID;
41273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin			/* Reserved, for Bridge Internal use only */
41373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin            UINT    uHeapSize;
41473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin            PVOID   pGPPVirtAddr; /* Reserved, for Bridge Internal use only */
41573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin        } ;
41673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_NODEATTRIN, *DSP_HNODEATTRIN;*/
41773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
41873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* The DSP_NODEINFO structure is used to retrieve information about a node */
41973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_NODEINFO {
42073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD cbStruct;
42173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		struct DSP_NDBPROPS nbNodeDatabaseProps;
42273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uExecutionPriority;
42373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_NODESTATE nsExecutionState;
42473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_HNODE hDeviceOwner;
42573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uNumberStreams;
42673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		struct DSP_STREAMCONNECT scStreamConnection[16];
42773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uNodeEnv;
42873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
42973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_NODEINFO, *DSP_HNODEINFO;*/
43073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
43173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* The DSP_NODEATTR structure describes the attributes of a node */
43273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_NODEATTR {
43373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD cbStruct;
43473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		struct DSP_NODEATTRIN inNodeAttrIn;
43573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		ULONG uInputs;
43673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		ULONG uOutputs;
43773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		struct DSP_NODEINFO iNodeInfo;
43873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
43973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_NODEATTR, *DSP_HNODEATTR;*/
44073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
44173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
44273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Notification type: either the name of an opened event, or an event or
44373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  window handle.
44473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
44573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_NOTIFICATION {
44673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		PSTRING psName;
44773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		HANDLE handle;
44873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
44973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_NOTIFICATION, *DSP_HNOTIFICATION;*/
45073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
45173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* The DSP_PROCESSORATTRIN structure describes the attributes of a processor */
45273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_PROCESSORATTRIN{
45373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD cbStruct;
45473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uTimeout;
45573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
45673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_PROCESSORATTRIN, *DSP_HPROCESSORATTRIN;*/
45773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
45873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	enum chipTypes {
45973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSPTYPE_55 = 6,
46073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		IVA_ARM7 = 0x97,
46173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSPTYPE_64 = 0x99
46273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	};
46373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
46473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
46573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * The DSP_PROCESSORINFO structure describes basic capabilities of a
46673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP processor
46773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
46873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_PROCESSORINFO {
46973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD cbStruct;
47073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_PROCFAMILY uProcessorFamily;
47173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_PROCTYPE uProcessorType;
47273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uClockRate;
47373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		ULONG ulInternalMemSize;
47473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		ULONG ulExternalMemSize;
47573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uProcessorID;
47673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_RTOSTYPE tyRunningRTOS;
47773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		INT nNodeMinPriority;
47873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		INT nNodeMaxPriority;
47973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
48073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_PROCESSORINFO, *DSP_HPROCESSORINFO;*/
48173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
48273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Error information of last DSP exception signalled to the GPP */
48373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_ERRORINFO {
48473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD dwErrMask;
48573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD dwVal1;
48673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD dwVal2;
48773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD dwVal3;
48873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
48973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_ERRORINFO;*/
49073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
49173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* The DSP_PROCESSORSTATE structure describes the state of a DSP processor */
49273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_PROCESSORSTATE {
49373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD cbStruct;
49473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_PROCSTATE iState;
49573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		struct DSP_ERRORINFO errInfo;
49673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
49773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_PROCESSORSTATE, *DSP_HPROCESSORSTATE;*/
49873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
49973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
50073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * The DSP_RESOURCEINFO structure is used to retrieve information about a
50173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * processor's resources
50273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
50373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_RESOURCEINFO {
50473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD cbStruct;
50573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_RESOURCEINFOTYPE uResourceType;
50673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		union {
50773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin			ULONG ulResource;
50873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin			struct DSP_MEMSTAT memStat;
50973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin			struct DSP_PROCLOADSTAT procLoadStat;
51073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		} result;
51173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
51273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_RESOURCEINFO, *DSP_HRESOURCEINFO;*/
51373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
51473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
51573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * The DSP_STREAMATTRIN structure describes the attributes of a stream,
51673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * including segment and alignment of data buffers allocated with
51773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSPStream_AllocateBuffers(), if applicable
51873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
51973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_STREAMATTRIN {
52073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD cbStruct;
52173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uTimeout;
52273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uSegment;
52373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uAlignment;
52473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uNumBufs;
52573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT lMode;
52673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uDMAChnlId;
52773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uDMAPriority;
52873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
52973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_STREAMATTRIN, *DSP_HSTREAMATTRIN;*/
53073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
53173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* The DSP_BUFFERATTR structure describes the attributes of a data buffer */
53273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_BUFFERATTR {
53373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD cbStruct;
53473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uSegment;
53573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uAlignment;
53673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
53773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_BUFFERATTR, *DSP_HBUFFERATTR;*/
53873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
53973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
54073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  The DSP_STREAMINFO structure is used to retrieve information
54173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  about a stream.
54273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
54373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct DSP_STREAMINFO {
54473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DWORD cbStruct;
54573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uNumberBufsAllowed;
54673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		UINT uNumberBufsInStream;
54773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		ULONG ulNumberBytes;
54873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		HANDLE hSyncObjectHandle;
54973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		DSP_STREAMSTATE ssStreamState;
55073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
55173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	/*DSP_STREAMINFO, *DSP_HSTREAMINFO;*/
55273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
55373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* DMM MAP attributes
55473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz ZavinIt is a bit mask with each bit value indicating a specific attribute
55573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinbit 0 - GPP address type (user virtual=0, physical=1)
55673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinbit 1 - MMU Endianism (Big Endian=1, Little Endian=0)
55773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinbit 2 - MMU mixed page attribute (Mixed/ CPUES=1, TLBES =0)
55873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinbit 3 - MMU element size = 8bit (valid only for non mixed page entries)
55973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinbit 4 - MMU element size = 16bit (valid only for non mixed page entries)
56073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinbit 5 - MMU element size = 32bit (valid only for non mixed page entries)
56173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinbit 6 - MMU element size = 64bit (valid only for non mixed page entries)
56273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin*/
56373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
56473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Types of mapping attributes */
56573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
56673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* MPU address is virtual and needs to be translated to physical addr */
56773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_MAPVIRTUALADDR          0x00000000
56873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_MAPPHYSICALADDR         0x00000001
56973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
57073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Mapped data is big endian */
57173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_MAPBIGENDIAN            0x00000002
57273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_MAPLITTLEENDIAN         0x00000000
57373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
57473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Element size is based on DSP r/w access size */
57573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_MAPMIXEDELEMSIZE        0x00000004
57673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
57773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
57873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Element size for MMU mapping (8, 16, 32, or 64 bit)
57973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Ignored if DSP_MAPMIXEDELEMSIZE enabled
58073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
58173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_MAPELEMSIZE8            0x00000008
58273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_MAPELEMSIZE16           0x00000010
58373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_MAPELEMSIZE32           0x00000020
58473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_MAPELEMSIZE64           0x00000040
58573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
58673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSP_MAPVMALLOCADDR         0x00000080
58773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
58873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define GEM_CACHE_LINE_SIZE     128
58973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define GEM_L1P_PREFETCH_SIZE   128
59073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
59173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef __cplusplus
59273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin}
59373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif
59473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif				/* DBDEFS_ */
595