am65xx: Update Resource type to match sciclient API change
[ipc/ipcdev.git] / qnx / src / ipc3x_dev / ti / syslink / SysLink.h
1 /**
2  *  @file   SysLink.h
3  *
4  *  @brief      This module contains common definitions, types, structures and
5  *              functions used by IPC.
6  *
7  *
8  */
9 /*
10  *  ============================================================================
11  *
12  *  Copyright (c) 2008-2015, Texas Instruments Incorporated
13  *
14  *  Redistribution and use in source and binary forms, with or without
15  *  modification, are permitted provided that the following conditions
16  *  are met:
17  *
18  *  *  Redistributions of source code must retain the above copyright
19  *     notice, this list of conditions and the following disclaimer.
20  *
21  *  *  Redistributions in binary form must reproduce the above copyright
22  *     notice, this list of conditions and the following disclaimer in the
23  *     documentation and/or other materials provided with the distribution.
24  *
25  *  *  Neither the name of Texas Instruments Incorporated nor the names of
26  *     its contributors may be used to endorse or promote products derived
27  *     from this software without specific prior written permission.
28  *
29  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
30  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
31  *  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
32  *  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
33  *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
34  *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
35  *  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
36  *  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
37  *  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
38  *  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
39  *  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40  *  Contact information for paper mail:
41  *  Texas Instruments
42  *  Post Office Box 655303
43  *  Dallas, Texas 75265
44  *  Contact information:
45  *  http://www-k.ext.ti.com/sc/technical-support/product-information-centers.htm?
46  *  DCMP=TIHomeTracking&HQS=Other+OT+home_d_contact
47  *  ============================================================================
48  *
49  */
53 #ifndef _SysLink_H_
54 #define _SysLink_H_
57 #if defined (__cplusplus)
58 extern "C" {
59 #endif
61 /* =============================================================================
62  * macros & defines
63  * =============================================================================
64  */
66 /* The bulk of this file is wrapped in this doxygen INTERNAL as it's not intended
67  * to be used by end users.  Most of this is implementation details that users
68  * shouldn't see or bind to.
69  */
71 /** @cond INTERNAL */
73 /**
74  *  @const  IPC_BUFFER_ALIGN
75  *
76  *  @desc   Macro to align a number.
77  *          x: The number to be aligned
78  *          y: The value that the number should be aligned to.
79  */
80 #define IPC_BUFFER_ALIGN(x, y) (UInt32)((UInt32)((x + y - 1) / y) * y)
83 /**
84  *  @brief   Maximum number of mem entries for each core for one platform.
85  */
86 #define IPC_MAX_MEMENTRIES  32
88 /**
89  *  @brief   Max name length.
90  */
91 #define IPC_MAX_NAMELENGTH  32
93 /* =============================================================================
94  * Structures & Enums
95  * =============================================================================
96  */
98 typedef UInt32 Ipc_MapMask;
100 /**
101  *  @brief  Kernel Virtual address on master processor
102  */
103 #define Ipc_MASTERKNLVIRT   (Ipc_MapMask)(1 << 0)
105 /**
106  *  @brief  User Virtual address on master processor
107  */
108 #define Ipc_MASTERUSRVIRT   (Ipc_MapMask)(1 << 1)
110 /**
111  *  @brief  Virtual address on slave processor
112  */
113 #define Ipc_SLAVEVIRT       (Ipc_MapMask)(1 << 2)
115 /**
116  *  @brief  Structure for memEntry.
117  */
118 typedef struct Ipc_MemEntry_tag {
119     UInt32 slaveVirtAddr;    /**< Virtual address */
120     UInt32 masterPhysAddr;   /**< Physical address */
121     UInt32 size;             /**< Size of the entry */
122     Ipc_MapMask mapMask; /**< Used for entries for which map is TRUE */
123     Bool   map;              /**< Flag indicating whether this region should
124                               *   be mapped to the slave MMU.
125                               */
126     Bool   isCached;         /**< Flag indicating whether the cache is enabled
127                               *   for this region
128                               */
129     Bool   isValid;          /**< Specifies if the memEntry is valid */
130 } Ipc_MemEntry;
132 /**
133  *  @brief  Structure for memEntry block for one core.
134  */
135 typedef struct Ipc_MemEntry_Block_tag {
136     Char             procName[IPC_MAX_NAMELENGTH];
137     /*!< Processor name for which entries are being defined*/
138     UInt32           numEntries;
139     /*!< Max memEntries for one core*/
140     Ipc_MemEntry memEntries [IPC_MAX_MEMENTRIES];
141     /*!< Entire memory map (p->v) for one code*/
142 } Ipc_MemEntry_Block;
145 /**
146  *  @brief  Structure for memEntry block for one core.
147  */
148 typedef struct Ipc_MemoryMap_tag {
149     UInt16                   numBlocks;
150     /*!< Number of memory blocks in the memory map */
151     Ipc_MemEntry_Block * memBlocks;
152     /*!< Poninter to entire system memory map */
153 } Ipc_MemoryMap;
155 #if defined (__cplusplus)
157 #endif
160 #endif /*_SysLink_H_*/