173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Copyright 2001-2008 Texas Instruments - http://www.ti.com/
373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Licensed under the Apache License, Version 2.0 (the "License");
573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  you may not use this file except in compliance with the License.
673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  You may obtain a copy of the License at
773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *     http://www.apache.org/licenses/LICENSE-2.0
973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
1073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Unless required by applicable law or agreed to in writing, software
1173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  distributed under the License is distributed on an "AS IS" BASIS,
1273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  See the License for the specific language governing permissions and
1473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  limitations under the License.
1573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
1673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
1773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
1873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
1973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== rms_sh.h ========
2073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  DSP-BIOS Bridge driver support functions for TI OMAP processors.
2173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
2273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  DSP/BIOS Bridge Resource Manager Server shared definitions (used on both
2373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  GPP and DSP sides).
2473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
2573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! Revision History
2673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! ================
2773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 24-Mar-2003 vp  Merged updates required for CCS2.2 transition.
2873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 24-Feb-2003 kc  Rearranged order of node types to temporarily support legacy message
2973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 node code
3073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 23-Nov-2002 gp  Converted tabs -> spaces, to fix formatting.
3173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 13-Feb-2002 jeh Added sysstacksize element to RMS_MoreTaskArgs.
3273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 11-Dec-2000 sg  Added 'misc' element to RMS_MoreTaskArgs.
3373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 04-Dec-2000 ag  Added RMS_BUFDESC command code.
3473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 C/R code value changed to allow ORing of system/user codes.
3573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 10-Oct-2000 sg  Added 'align' field to RMS_StrmDef.
3673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 09-Oct-2000 sg  Moved pre-defined message codes here from rmsdefs.h.
3773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 02-Oct-2000 sg  Changed ticks to msec.
3873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 24-Aug-2000 sg  Moved definitions that will be exposed to app developers
3973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!  		    to a separate file, rmsdefs.h.
4073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 10-Aug-2000 sg  Added RMS_COMMANDBUFSIZE and RMS_RESPONSEBUFSIZE; added
4173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!		    pre-defined command/response codes; more comments.
4273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 09-Aug-2000 sg  Added RMS_ETASK.
4373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 08-Aug-2000 jeh Define RMS_WORD for GPP, rename DSP_MSG to RMS_DSPMSG.
4473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 Added RMS_MsgArgs, RMS_MoreTaskArgs.
4573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 25-Jul-2000 sg: Changed SIO to STRM.
4673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 30-Jun-2000 sg: Initial.
4773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
4873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
4973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifndef RMS_SH_
5073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define RMS_SH_
5173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
5273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef __cplusplus
5373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinextern "C" {
5473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif
5573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
5673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <rmstypes.h>
5773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
5873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Node Types: */
5973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define RMS_TASK                1	/* Task node */
6073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define RMS_DAIS                2	/* xDAIS socket node */
6173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define RMS_MSG                 3	/* Message node */
6273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
6373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Memory Types: */
6473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define RMS_CODE                0	/* Program space */
6573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define RMS_DATA                1	/* Data space */
6673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define RMS_IO                	2	/* I/O space */
6773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
6873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* RM Server Command and Response Buffer Sizes: */
6973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define RMS_COMMANDBUFSIZE     256	/* Size of command buffer */
7073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define RMS_RESPONSEBUFSIZE    16	/* Size of response buffer */
7173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
7273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Pre-Defined Command/Response Codes: */
7373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define RMS_EXIT                0x80000000	/* GPP->Node: shutdown */
7473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define RMS_EXITACK             0x40000000	/* Node->GPP: ack shutdown */
7573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define RMS_BUFDESC             0x20000000	/* Arg1 SM buf, Arg2 is SM size */
7673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define RMS_USER                0x0	/* Start of user-defined msg codes */
7773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define RMS_MAXUSERCODES        0xfff	/* Maximum user defined C/R Codes */
7873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
7973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
8073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* RM Server RPC Command Structure: */
8173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct RMS_Command {
8273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD fxn;	/* Server function address */
8373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD arg1;	/* First argument */
8473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD arg2;	/* Second argument */
8573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD data;	/* Function-specific data array */
8673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
8773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
8873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
8973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  The RMS_StrmDef structure defines the parameters for both input and output
9073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  streams, and is passed to a node's create function.
9173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
9273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct RMS_StrmDef {
9373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD bufsize;	/* Buffer size (in DSP words) */
9473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD nbufs;	/* Max number of bufs in stream */
9573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD segid;	/* Segment to allocate buffers */
9673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD align;	/* Alignment for allocated buffers */
9773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD timeout;	/* Timeout (msec) for blocking calls */
9873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_CHAR name[1];	/* Device Name (terminated by '\0') */
9973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
10073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
10173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Message node create args structure: */
10273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct RMS_MsgArgs {
10373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD maxMessages;	/* Max # simultaneous msgs to node */
10473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD segid;	/* Mem segment for NODE_allocMsgBuf */
10573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD notifyType;	/* Type of message notification */
10673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD argLength;	/* Length (in DSP chars) of arg data */
10773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD argData;	/* Arg data for node */
10873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
10973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
11073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Partial task create args structure */
11173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct RMS_MoreTaskArgs {
11273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD priority;	/* Task's runtime priority level */
11373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD stackSize;	/* Task's stack size */
11473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD sysstackSize;	/* Task's system stack size (55x) */
11573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD stackSeg;	/* Memory segment for task's stack */
11673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#if defined (OMAP_2430) || defined (OMAP_3430)
11773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD heapAddr;	/* base address of the node memory heap in
11873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin					 * external memory (DSP virtual address) */
11973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD heapSize;	/* size in MAUs of the node memory heap in
12073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin					 * external memory */
12173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif
12273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD misc;	/* Misc field.  Not used for 'normal'
12373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				 * task nodes; for xDAIS socket nodes
12473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				 * specifies the IALG_Fxn pointer.
12573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				 */
12673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		RMS_WORD numInputStreams;	/* # input STRM definition structures */
12773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	} ;
12873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
12973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef __cplusplus
13073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin}
13173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif
13273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif				/* RMS_SH_ */
13373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
134