Base directory structure for new RM
[keystone-rtos/rm-lld.git] / resource_table_defs.h
1 /**
2  *   @file  resource_table_defs.h
3  *
4  *   @brief   
5  *      This file defines the identifiers used to populate the resource table used
6  *      by the RM LLD to divy resources.
7  *
8  *  \par
9  *  NOTE:
10  *      (C) Copyright 2012 Texas Instruments, Inc.
11  * 
12  *  Redistribution and use in source and binary forms, with or without 
13  *  modification, are permitted provided that the following conditions 
14  *  are met:
15  *
16  *    Redistributions of source code must retain the above copyright 
17  *    notice, this list of conditions and the following disclaimer.
18  *
19  *    Redistributions in binary form must reproduce the above copyright
20  *    notice, this list of conditions and the following disclaimer in the 
21  *    documentation and/or other materials provided with the   
22  *    distribution.
23  *
24  *    Neither the name of Texas Instruments Incorporated nor the names of
25  *    its contributors may be used to endorse or promote products derived
26  *    from this software without specific prior written permission.
27  *
28  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
29  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
30  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31  *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
32  *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
33  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
34  *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35  *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36  *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
37  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
38  *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39  *
40  *  \par
41 */
42 #ifndef __RESOURCE_TABLE_DEFS_H__
43 #define __RESOURCE_TABLE_DEFS_H__
45 /* c99 include */
46 #include <stdint.h>
48 /**
49 @addtogroup RM_LLD_RESOURCE_TABLE
50 @{
51 */
53 /** RM LLD Resource Table Resource Identifiers */
54 /** This value should be first entry in the resource table.  Used to verify RM can read the resource table. */
55 #define RM_RESOURCE_MAGIC_NUMBER (0x76543210)
56 /** This value should be last entry in the resource table.  Used by RM to find last entry in resource table. */   
57 #define RM_RESOURCE_FINAL_ENTRY (0xFFFFFFFF)                                                                                     
59 /** Start of QMSS resource identifiers */
60 #define RM_RESOURCE_QMSS_BASE 0
61 /** QMSS Firmware PDSP write permissions */
62 #define RM_RESOURCE_QMSS_FIRMWARE_PDSP (RM_RESOURCE_QMSS_BASE+1)
63 /** QMSS queues.  This identifier will be expanded to identify all queue types in the near future */
64 #define RM_RESOURCE_QMSS_QUEUE (RM_RESOURCE_QMSS_BASE+2) 
65 /** QMSS Memory regions */
66 #define RM_RESOURCE_QMSS_MEMORY_REGION (RM_RESOURCE_QMSS_BASE+3) 
67 /** QMSS Linking RAM Control */
68 #define RM_RESOURCE_QMSS_LINKING_RAM_CONTROL (RM_RESOURCE_QMSS_BASE+4) 
69 /** QMSS Linking RAM indices */
70 #define RM_RESOURCE_QMSS_LINKING_RAM (RM_RESOURCE_QMSS_BASE+5) 
71 /** QMSS accumulator channels */
72 #define RM_RESOURCE_QMSS_ACCUMULATOR_CH (RM_RESOURCE_QMSS_BASE+6) 
73 /** QMSS QOS PDSP timer */
74 #define RM_RESOURCE_QMSS_QOS_PDSP_TIMER (RM_RESOURCE_QMSS_BASE+7) 
75 /** QMSS QOS clusters */
76 #define RM_RESOURCE_QMSS_QOS_CLUSTER (RM_RESOURCE_QMSS_BASE+8) 
77 /** QMSS QOS queues */
78 #define RM_RESOURCE_QMSS_QOS_QUEUE (RM_RESOURCE_QMSS_BASE+9) 
80 /** Start of CPPI resource identifiers */
81 #define RM_RESOURCE_CPPI_BASE 64 
82 /** CPPI SRIO transmit channel */
83 #define RM_RESOURCE_CPPI_SRIO_TX_CH (RM_RESOURCE_CPPI_BASE+1) 
84 /** CPPI SRIO receive channel */
85 #define RM_RESOURCE_CPPI_SRIO_RX_CH (RM_RESOURCE_CPPI_BASE+2) 
86 /** CPPI SRIO flow */
87 #define RM_RESOURCE_CPPI_SRIO_FLOW (RM_RESOURCE_CPPI_BASE+3) 
88 /** CPPI AIF transmit channel */
89 #define RM_RESOURCE_CPPI_AIF_TX_CH (RM_RESOURCE_CPPI_BASE+4) 
90 /** CPPI AIF receive channel */
91 #define RM_RESOURCE_CPPI_AIF_RX_CH (RM_RESOURCE_CPPI_BASE+5) 
92 /** CPPI AIF flow */
93 #define RM_RESOURCE_CPPI_AIF_FLOW (RM_RESOURCE_CPPI_BASE+6) 
94 /** CPPI FFTC_A transmit channel */
95 #define RM_RESOURCE_CPPI_FFTC_A_TX_CH (RM_RESOURCE_CPPI_BASE+7) 
96 /** CPPI FFTC_A receive channel */
97 #define RM_RESOURCE_CPPI_FFTC_A_RX_CH (RM_RESOURCE_CPPI_BASE+8) 
98 /** CPPI FFTC_A flow */
99 #define RM_RESOURCE_CPPI_FFTC_A_FLOW  (RM_RESOURCE_CPPI_BASE+9) 
100 /** CPPI FFTC_B transmit channel */
101 #define RM_RESOURCE_CPPI_FFTC_B_TX_CH (RM_RESOURCE_CPPI_BASE+10) 
102 /** CPPI FFTC_B receive channel */
103 #define RM_RESOURCE_CPPI_FFTC_B_RX_CH (RM_RESOURCE_CPPI_BASE+11) 
104 /** CPPI FFTC_B flow */
105 #define RM_RESOURCE_CPPI_FFTC_B_FLOW (RM_RESOURCE_CPPI_BASE+12) 
106 /** CPPI PASS transmit channel */
107 #define RM_RESOURCE_CPPI_PASS_TX_CH (RM_RESOURCE_CPPI_BASE+13) 
108 /** CPPI PASS receive channel */
109 #define RM_RESOURCE_CPPI_PASS_RX_CH (RM_RESOURCE_CPPI_BASE+14) 
110 /** CPPI PASS flow */
111 #define RM_RESOURCE_CPPI_PASS_FLOW (RM_RESOURCE_CPPI_BASE+15) 
112 /** CPPI QMSS transmit channel */
113 #define RM_RESOURCE_CPPI_QMSS_TX_CH (RM_RESOURCE_CPPI_BASE+16) 
114 /** CPPI QMSS receive channel */
115 #define RM_RESOURCE_CPPI_QMSS_RX_CH (RM_RESOURCE_CPPI_BASE+17) 
116 /** CPPI QMSS flow */
117 #define RM_RESOURCE_CPPI_QMSS_FLOW (RM_RESOURCE_CPPI_BASE+18) 
118 /** CPPI FFTC_C transmit channel */
119 #define RM_RESOURCE_CPPI_FFTC_C_TX_CH (RM_RESOURCE_CPPI_BASE+19) 
120 /** CPPI FFTC_C receive channel */
121 #define RM_RESOURCE_CPPI_FFTC_C_RX_CH (RM_RESOURCE_CPPI_BASE+20) 
122 /** CPPI FFTC_C flow */
123 #define RM_RESOURCE_CPPI_FFTC_C_FLOW (RM_RESOURCE_CPPI_BASE+21) 
124 /** CPPI BCP transmit channel */
125 #define RM_RESOURCE_CPPI_BCP_TX_CH (RM_RESOURCE_CPPI_BASE+22) 
126 /** CPPI BCP receive channel */
127 #define RM_RESOURCE_CPPI_BCP_RX_CH (RM_RESOURCE_CPPI_BASE+23) 
128 /** CPPI BCP flow */
129 #define RM_RESOURCE_CPPI_BCP_FLOW (RM_RESOURCE_CPPI_BASE+24) 
131 /** Start of CPPI resource identifiers */
132 #define RM_RESOURCE_PA_BASE 128 
133 /** PA Firmware write permissions */
134 #define RM_RESOURCE_PA_FIRMWARE (RM_RESOURCE_PA_BASE+1) 
135 /** PA look-up table entry */
136 #define RM_RESOURCE_PA_LUT_ENTRY (RM_RESOURCE_PA_BASE+2) 
138 /** RM LLD Resource Table Permission Codes */
139 /** Init or use permission allowed */
140 #define RM_RESOURCE_PERM_DENIED 0x0
141 /** Init or use permission denied */
142 #define RM_RESOURCE_PERM_ALLOWED 0x1
144 /** Resource entry flags bitfield DSP shift macro */
145 #define RM_RESOURCE_FLAG_DSP_SHIFT(dspNum, perms)  \
146                                           (((uint32_t) perms) << dspNum)
148 /** Full Permissions - All DSPs can use and initialize resource */
149 #define RM_RESOURCE_ALL_DSPS_FULL_PERMS  \
150                        ((RM_RESOURCE_FLAG_DSP_SHIFT(0, RM_RESOURCE_PERM_ALLOWED)) | \
151                         (RM_RESOURCE_FLAG_DSP_SHIFT(1, RM_RESOURCE_PERM_ALLOWED)) | \
152                         (RM_RESOURCE_FLAG_DSP_SHIFT(2, RM_RESOURCE_PERM_ALLOWED)) | \
153                         (RM_RESOURCE_FLAG_DSP_SHIFT(3, RM_RESOURCE_PERM_ALLOWED)))
155 /** 
156  * @brief Resource Table resource definition structure
157  */
158 typedef struct 
160     /** Resouce identifier. */
161     uint32_t  resourceId;
162     /** Start range for identified resource */
163     uint32_t  resourceStart;
164     /** End range for identified resource */
165     uint32_t  resourceEnd;
166     /** Resource initialization permission flags
167       * Bits 0 : DSP 0 Permission Bit
168       * Bits 1 : DSP 1 Permission Bit 
169       * Bits 2 : DSP 2 Permission Bit
170       * Bits 3 : DSP 3 Permission Bit 
171       * Bits 31-8 : UNUSED
172       */
173     uint32_t  resourceInitFlags;
174     /** Resource usage permission flags
175       * Bits 0 : DSP 0 Permission Bit
176       * Bits 1 : DSP 1 Permission Bit 
177       * Bits 2 : DSP 2 Permission Bit
178       * Bits 3 : DSP 3 Permission Bit 
179       * Bits 31-8 : UNUSED
180       */    
181     uint32_t  resourceUseFlags;
182 } Rm_Resource;
184 /**
185 @}
186 */
188 #endif  /* __RESOURCE_TABLE_DEFS_H__ */