Resources: Introduce new IpcMemory module
[gstreamer-omap:sysbios-rpmsg.git] / src / ti / resources / IpcMemory.xdc
1 /*
2  * Copyright (c) 2011, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * *  Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  *
12  * *  Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * *  Neither the name of Texas Instruments Incorporated nor the names of
17  *    its contributors may be used to endorse or promote products derived
18  *    from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32
33 /*
34  *  ======== IpcMemory.xdc ========
35  */
36
37 /*!
38  *  ======== IpcMemory ========
39  *
40  *  IpcMemory Module
41  *
42  */
43
44 @Template("./IpcMemory.xdt")
45 @ModuleStartup
46 module IpcMemory {
47
48     /*!
49      *  @def    IpcMemory_loadAddr
50      *  @brief  Default load address for the IpcMemory table
51      */
52     metaonly config UInt loadAddr = 0x3000;
53
54     /*!
55      *  @def    IpcMemory_loadSegment
56      *  @brief  If loadSegment is defined, loadAddr is overriden with the base
57      *          address of the loadSegment
58      */
59     metaonly config String loadSegment;
60
61     /*!
62      *  @def    IpcMemory_S_SUCCESS
63      *  @brief  Operation is successful.
64      */
65     const Int S_SUCCESS  = 0;
66
67     /*!
68      *  @def    IpcMemory_E_NOTFOUND
69      *  @brief  Element was not found in table
70      */
71     const Int E_NOTFOUND = -1;
72
73     /*!
74      *  @def       IpcMemory_Resource
75      *
76      *  @brief     A Resource Table record
77      */
78     struct Resource {
79         UInt32 type;
80         UInt32 da_low;       /* Device Virtual Address */
81         UInt32 da_high;
82         UInt32 pa_low;       /* Physical Address */
83         UInt32 pa_high;
84         UInt32 size;
85         UInt32 reserved;
86         Char   name[48];
87     };
88
89     /*!
90      *  @brief      Virtual to Physical address translation function
91      *
92      *  @sa         IpcMemory_physToVirt
93      */
94     @DirectCall
95     Int virtToPhys(UInt32 da, UInt32 *pa);
96
97     /*!
98      *  @brief      Physical to Virtual address translation function
99      *
100      *  @sa         IpcMemory_virtToPhys
101      */
102     @DirectCall
103     Int physToVirt(UInt32 pa, UInt32 *da);
104
105 internal:   /* not for client use */
106
107     /*!
108      *  @brief      Use resource and resourceLen so table could be properly
109      *              allocated
110      *
111      */
112     Void init();
113
114     /*!
115      *  @brief      Return the i-th entry in the resource table
116      *
117      */
118     Resource *getEntry(UInt entry);
119
120     struct Module_State {
121         UInt32    *pSize;  /* Number of resources in the Resource Table */
122         Resource  *pTable; /* IpcMemory Resource Table pointer */
123     };
124 }