Commited by migration script
[keystone-rtos/rm-lld.git] / rm_public_lld.h
1 /**\r
2  *   @file  rm_public_lld.h\r
3  *\r
4  *   @brief   \r
5  *      This is the RM LLD include file for other LLDs.\r
6  *\r
7  *  \par\r
8  *  ============================================================================\r
9  *  @n   (C) Copyright 2012, Texas Instruments, Inc.\r
10  * \r
11  *  Redistribution and use in source and binary forms, with or without \r
12  *  modification, are permitted provided that the following conditions \r
13  *  are met:\r
14  *\r
15  *    Redistributions of source code must retain the above copyright \r
16  *    notice, this list of conditions and the following disclaimer.\r
17  *\r
18  *    Redistributions in binary form must reproduce the above copyright\r
19  *    notice, this list of conditions and the following disclaimer in the \r
20  *    documentation and/or other materials provided with the   \r
21  *    distribution.\r
22  *\r
23  *    Neither the name of Texas Instruments Incorporated nor the names of\r
24  *    its contributors may be used to endorse or promote products derived\r
25  *    from this software without specific prior written permission.\r
26  *\r
27  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \r
28  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT \r
29  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
30  *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT \r
31  *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, \r
32  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT \r
33  *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
34  *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
35  *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT \r
36  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE \r
37  *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
38  *\r
39  *  \par\r
40 */\r
41 \r
42 #ifndef RM_PUBLIC_LLD_H_\r
43 #define RM_PUBLIC_LLD_H_\r
44 \r
45 #ifdef __cplusplus\r
46 extern "C" {\r
47 #endif\r
48 \r
49 /* QMSS type include */\r
50 #include <ti/drv/qmss/qmss_qm.h>\r
51 \r
52 /* CPPI type include */\r
53 #include <ti/csl/csl_cppi.h>\r
54 \r
55 /**\r
56 @addtogroup RM_LLD_SYMBOL\r
57 @{\r
58 */\r
59 \r
60 /** RM Permission Return And Error Codes */\r
61 /** RM LLD Permission Approved Base */\r
62 #define RM_APPROVED_BASE 0\r
63 /** Resource initialization permission approved */\r
64 #define RM_INIT_PERMISSION_APPROVED  (RM_APPROVED_BASE+1)\r
65 /** Resource usage permission approved */\r
66 #define RM_USE_PERMISSION_APPROVED  (RM_APPROVED_BASE+2)\r
67 \r
68 /** RM LLD Permission Denied Base */\r
69 #define RM_DENIED_BASE (-64)\r
70 /** Resource initialization permission denied */\r
71 #define RM_INIT_PERMISSION_DENIED  (RM_DENIED_BASE-1)\r
72 /** Resource usage permission denied */\r
73 #define RM_USE_PERMISSION_DENIED  (RM_DENIED_BASE-2)\r
74 \r
75 /**\r
76 @}\r
77 */\r
78 \r
79 /**\r
80 @addtogroup RM_LLD_ENUM\r
81 @{\r
82 */\r
83 \r
84 /** \r
85  * @brief LLD resource type\r
86  */\r
87 typedef enum\r
88 {\r
89     /** QMSS Firmware Type */\r
90     Rm_resource_QMSS_FIRMWARE_PDSP = 0,\r
91     /** QMSS Queue Type */\r
92     Rm_resource_QMSS_QUEUE,\r
93     /** QMSS Memory Region Type */\r
94     Rm_resource_QMSS_MEMORY_REGION,\r
95     /** QMSS Linking RAM Control Type */\r
96     Rm_resource_QMSS_LINKING_RAM_CONTROL,\r
97     /** QMSS Linking RAM Type */\r
98     Rm_resource_QMSS_LINKING_RAM,\r
99     /** QMSS Accumulator Channel Type */\r
100     Rm_resource_QMSS_ACCUM_CH,\r
101     /** QMSS QOS PDSP Timer */\r
102     Rm_resource_QMSS_QOS_TIMER,\r
103     /** QMSS QOS Cluster Type */\r
104     Rm_resource_QMSS_QOS_CLUSTER,\r
105     /** QMSS QOS Queue Type */\r
106     Rm_resource_QMSS_QOS_QUEUE,\r
107     /** CPPI Transmit Channel Type */\r
108     Rm_resource_CPPI_TX_CH,\r
109     /** CPPI Receive Channel Type */\r
110     Rm_resource_CPPI_RX_CH,\r
111     /** CPPI Receive Flow Type */\r
112     Rm_resource_CPPI_RX_FLOW,\r
113     /** PA Firmware Type */\r
114     Rm_resource_PA_FIRMWARE,\r
115     /** PA LUT Type */\r
116     Rm_resource_PA_LUT\r
117 }Rm_ResourceType;\r
118 \r
119 /**\r
120 @}\r
121 */\r
122 \r
123 /** @addtogroup RM_LLD_DATASTRUCT\r
124 @{ \r
125 */\r
126 \r
127 /** \r
128  * @brief Structure specifying the Linking RAM start and end indices\r
129  */\r
130 typedef struct\r
131 {\r
132     uint32_t linkRamStartIndex;\r
133     uint32_t linkRamEndIndex;\r
134 } Rm_ResourceLinkRamInfo;\r
135 \r
136 /** \r
137  * @brief Structure specifying the CPPI rx channel, tx channel, and flow ID information\r
138  */\r
139 typedef struct\r
140 {\r
141     Cppi_CpDma dmaNum;\r
142     int32_t cppiChNumOrFlowId;\r
143 } Rm_ResourceCpDmaInfo;\r
144 \r
145 /** \r
146  * @brief Structure specifying the LLD resource to have permissions checked by RM\r
147  */\r
148 typedef struct\r
149 {\r
150     /** LLD resource type to be checked */\r
151     Rm_ResourceType resourceType;\r
152     \r
153     /** Resource parameters union. */\r
154     union\r
155     {\r
156         /** QMSS Resource Data */\r
157         uint16_t pdspNum;\r
158         int queNum;\r
159         Qmss_MemRegion memRegion;\r
160         Rm_ResourceLinkRamInfo linkRamData;\r
161         uint8_t accumCh;\r
162         uint32_t qosCluster;\r
163         uint32_t qosQueue;        \r
164 \r
165         /** CPPI Resource Data */\r
166         Rm_ResourceCpDmaInfo cpDmaData;\r
167 \r
168         /** PA Resource Data */\r
169         int32_t lutEntry;\r
170     } res_info;\r
171 } Rm_ResourceInfo;\r
172 \r
173 /** \r
174  * @brief RM return result\r
175  */\r
176 typedef int32_t   Rm_Result;\r
177 \r
178 /** \r
179  * @brief Structure of LLD function callouts for permissions checks\r
180  */\r
181 typedef struct\r
182 {\r
183     /** Init permissions check function */\r
184     Rm_Result  (*rmInitPermissionsCheck)(Rm_ResourceInfo *resourceData);\r
185     /** Use permissions check function */\r
186     Rm_Result  (*rmUsePermissionsCheck)(Rm_ResourceInfo *resourceData); \r
187 }Rm_LldPermCallouts;\r
188 \r
189 /** \r
190 @} \r
191 */\r
192 \r
193 #ifdef __cplusplus\r
194 }\r
195 #endif\r
196 \r
197 #endif /* RM_PUBLIC_LLD_H_ */\r
198 \r