1 /*
2 * Copyright (c) Texas Instruments Incorporated 2018-2022
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the
14 * 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
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
33 /**
34 * \file udma_rmcfg.c
35 *
36 * \brief File containing the UDMA driver default RM configuration used to
37 * initialize the RM init parameters passed during driver init.
38 *
39 */
41 /* ========================================================================== */
42 /* Include Files */
43 /* ========================================================================== */
45 #include <ti/drv/udma/src/udma_priv.h>
47 /* ========================================================================== */
48 /* Macros & Typedefs */
49 /* ========================================================================== */
51 /* None */
53 /* ========================================================================== */
54 /* Structure Declarations */
55 /* ========================================================================== */
57 /* None */
59 /* ========================================================================== */
60 /* Function Declarations */
61 /* ========================================================================== */
63 /* None */
65 /* ========================================================================== */
66 /* Global Variables */
67 /* ========================================================================== */
69 /** \brief Main Navss defaultBoardCfg Params */
70 const Udma_RmDefBoardCfgPrms gUdmaRmDefBoardCfg_MainNavss[UDMA_RM_DEFAULT_BOARDCFG_NUM_RES] =
71 {
72 /* resId, reqType, reqSubtype, secHost */
73 {UDMA_RM_RES_ID_TX_UHC, TISCI_DEV_NAVSS0_UDMAP_0, TISCI_RESASG_SUBTYPE_UDMAP_TX_UHCHAN, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
74 {UDMA_RM_RES_ID_TX_HC, TISCI_DEV_NAVSS0_UDMAP_0, TISCI_RESASG_SUBTYPE_UDMAP_TX_HCHAN, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
75 {UDMA_RM_RES_ID_TX, TISCI_DEV_NAVSS0_UDMAP_0, TISCI_RESASG_SUBTYPE_UDMAP_TX_CHAN, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
76 {UDMA_RM_RES_ID_RX_UHC, TISCI_DEV_NAVSS0_UDMAP_0, TISCI_RESASG_SUBTYPE_UDMAP_RX_UHCHAN, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
77 {UDMA_RM_RES_ID_RX_HC, TISCI_DEV_NAVSS0_UDMAP_0, TISCI_RESASG_SUBTYPE_UDMAP_RX_HCHAN, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
78 {UDMA_RM_RES_ID_RX, TISCI_DEV_NAVSS0_UDMAP_0, TISCI_RESASG_SUBTYPE_UDMAP_RX_CHAN, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
79 {UDMA_RM_RES_ID_RX_FLOW, TISCI_DEV_NAVSS0_UDMAP_0, TISCI_RESASG_SUBTYPE_UDMAP_RX_FLOW_COMMON, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
80 {UDMA_RM_RES_ID_RING, TISCI_DEV_NAVSS0_RINGACC_0, TISCI_RESASG_SUBTYPE_RA_GP, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
81 #if defined (BUILD_MCU1_0) || defined (BUILD_MCU1_1) /* Tied to cores and not split based on NAVSS instance */
82 {UDMA_RM_RES_ID_GLOBAL_EVENT, TISCI_DEV_MCU_NAVSS0_UDMASS_INTA_0, TISCI_RESASG_SUBTYPE_GLOBAL_EVENT_SEVT, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
83 {UDMA_RM_RES_ID_VINTR, TISCI_DEV_MCU_NAVSS0_UDMASS_INTA_0, TISCI_RESASG_SUBTYPE_IA_VINT, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
84 {UDMA_RM_RES_ID_IR_INTR, TISCI_DEV_MCU_NAVSS0_INTR_0, TISCI_RESASG_SUBTYPE_IR_OUTPUT, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
85 #else
86 {UDMA_RM_RES_ID_GLOBAL_EVENT, TISCI_DEV_NAVSS0_UDMASS_INTA_0, TISCI_RESASG_SUBTYPE_GLOBAL_EVENT_SEVT, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
87 {UDMA_RM_RES_ID_VINTR, TISCI_DEV_NAVSS0_UDMASS_INTA_0, TISCI_RESASG_SUBTYPE_IA_VINT, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
88 {UDMA_RM_RES_ID_IR_INTR, TISCI_DEV_NAVSS0_INTR_ROUTER_0, TISCI_RESASG_SUBTYPE_IR_OUTPUT, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
89 #endif
90 {UDMA_RM_RES_ID_PROXY, TISCI_DEV_NAVSS0_PROXY_0, TISCI_RESASG_SUBTYPE_PROXY_PROXIES, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
91 {UDMA_RM_RES_ID_RING_MON, TISCI_DEV_NAVSS0_RINGACC_0, TISCI_RESASG_SUBTYPE_RA_MONITORS, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST}
92 };
94 /** \brief MCU Navss defaultBoardCfg Params */
95 const Udma_RmDefBoardCfgPrms gUdmaRmDefBoardCfg_McuNavss[UDMA_RM_DEFAULT_BOARDCFG_NUM_RES] =
96 {
97 /* resId, reqType, reqSubtype, secHost */
98 {UDMA_RM_RES_ID_TX_UHC, TISCI_DEV_MCU_NAVSS0_UDMAP_0, TISCI_RESASG_SUBTYPE_UDMAP_TX_UHCHAN, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
99 {UDMA_RM_RES_ID_TX_HC, TISCI_DEV_MCU_NAVSS0_UDMAP_0, TISCI_RESASG_SUBTYPE_UDMAP_TX_HCHAN, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
100 {UDMA_RM_RES_ID_TX, TISCI_DEV_MCU_NAVSS0_UDMAP_0, TISCI_RESASG_SUBTYPE_UDMAP_TX_CHAN, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
101 {UDMA_RM_RES_ID_RX_UHC, TISCI_DEV_MCU_NAVSS0_UDMAP_0, TISCI_RESASG_SUBTYPE_UDMAP_RX_UHCHAN, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
102 {UDMA_RM_RES_ID_RX_HC, TISCI_DEV_MCU_NAVSS0_UDMAP_0, TISCI_RESASG_SUBTYPE_UDMAP_RX_HCHAN, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
103 {UDMA_RM_RES_ID_RX, TISCI_DEV_MCU_NAVSS0_UDMAP_0, TISCI_RESASG_SUBTYPE_UDMAP_RX_CHAN, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
104 {UDMA_RM_RES_ID_RX_FLOW, TISCI_DEV_MCU_NAVSS0_UDMAP_0, TISCI_RESASG_SUBTYPE_UDMAP_RX_FLOW_COMMON, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
105 {UDMA_RM_RES_ID_RING, TISCI_DEV_MCU_NAVSS0_RINGACC0, TISCI_RESASG_SUBTYPE_RA_GP, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
106 #if defined (BUILD_MCU1_0) || defined (BUILD_MCU1_1) /* Tied to cores and not split based on NAVSS instance */
107 {UDMA_RM_RES_ID_GLOBAL_EVENT, TISCI_DEV_MCU_NAVSS0_UDMASS_INTA_0, TISCI_RESASG_SUBTYPE_GLOBAL_EVENT_SEVT, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
108 {UDMA_RM_RES_ID_VINTR, TISCI_DEV_MCU_NAVSS0_UDMASS_INTA_0, TISCI_RESASG_SUBTYPE_IA_VINT, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
109 {UDMA_RM_RES_ID_IR_INTR, TISCI_DEV_MCU_NAVSS0_INTR_0, TISCI_RESASG_SUBTYPE_IR_OUTPUT, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
110 #else
111 {UDMA_RM_RES_ID_GLOBAL_EVENT, TISCI_DEV_NAVSS0_UDMASS_INTA_0, TISCI_RESASG_SUBTYPE_GLOBAL_EVENT_SEVT, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
112 {UDMA_RM_RES_ID_VINTR, TISCI_DEV_NAVSS0_UDMASS_INTA_0, TISCI_RESASG_SUBTYPE_IA_VINT, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
113 {UDMA_RM_RES_ID_IR_INTR, TISCI_DEV_NAVSS0_INTR_ROUTER_0, TISCI_RESASG_SUBTYPE_IR_OUTPUT, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
114 #endif
115 {UDMA_RM_RES_ID_PROXY, TISCI_DEV_MCU_NAVSS0_PROXY0, TISCI_RESASG_SUBTYPE_PROXY_PROXIES, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST},
116 {UDMA_RM_RES_ID_RING_MON, TISCI_DEV_MCU_NAVSS0_RINGACC0, TISCI_RESASG_SUBTYPE_RA_MONITORS, TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST}
117 };
119 /** \brief Shared resource Params */
120 Udma_RmSharedResPrms gUdmaRmSharedResPrms[UDMA_RM_NUM_SHARED_RES] =
121 {
122 /* MAIN NAVSS RX Free Flows are assigned to HOST_ID_ALL and some cores dosen't have core specific reservation */
123 /* resId, startResrvCnt, endResrvCnt, numInst, minReq, instShare[core] */
124 {UDMA_RM_RES_ID_RX_FLOW, 0U, 0U, UDMA_NUM_CORE, 0U, {0U, /* MPU1_0 - Reserved in BoardCfg */
125 UDMA_RM_SHARED_RES_CNT_REST, /* MCU2_0 */
126 0U, /* MCU2_1 - Reserved in BoardCfg*/
127 0U, /* MCU1_0 */
128 0U} }, /* MCU1_1 */
129 /* Global Events/VINTR/IN INTR must be used based on core and split across MCU and MAIN NAVSS instances */
130 #if defined (BUILD_MPU1_0)
131 /* resId, startResrvCnt, endResrvCnt, numInst, minReq, instShare[MAIN_NAVSS,MCU_NAVSS] */
132 {UDMA_RM_RES_ID_GLOBAL_EVENT, 0U, 0U, UDMA_NUM_INST_ID, 50U, {UDMA_RM_SHARED_RES_CNT_REST, UDMA_RM_SHARED_RES_CNT_MIN} },
133 {UDMA_RM_RES_ID_VINTR, 0U, 0U, UDMA_NUM_INST_ID, 4U, {UDMA_RM_SHARED_RES_CNT_REST, UDMA_RM_SHARED_RES_CNT_MIN} },
134 {UDMA_RM_RES_ID_IR_INTR, 0U, 5U, UDMA_NUM_INST_ID, 4U, {UDMA_RM_SHARED_RES_CNT_REST, UDMA_RM_SHARED_RES_CNT_MIN} },
135 #endif
136 #if defined (BUILD_MCU2_0)
137 /* resId, startResrvCnt, endResrvCnt, numInst, minReq, instShare[MAIN_NAVSS,MCU_NAVSS] */
138 {UDMA_RM_RES_ID_GLOBAL_EVENT, 0U, 0U, UDMA_NUM_INST_ID, 50U, {UDMA_RM_SHARED_RES_CNT_REST, UDMA_RM_SHARED_RES_CNT_MIN} },
139 {UDMA_RM_RES_ID_VINTR, 0U, 0U, UDMA_NUM_INST_ID, 10U, {UDMA_RM_SHARED_RES_CNT_REST, UDMA_RM_SHARED_RES_CNT_MIN} },
140 {UDMA_RM_RES_ID_IR_INTR, 0U, 5U, UDMA_NUM_INST_ID, 8U, {UDMA_RM_SHARED_RES_CNT_REST, UDMA_RM_SHARED_RES_CNT_MIN} },
141 #endif
142 #if defined (BUILD_MCU2_1)
143 /* resId, startResrvCnt, endResrvCnt, numInst, minReq, instShare[MAIN_NAVSS,MCU_NAVSS] */
144 {UDMA_RM_RES_ID_GLOBAL_EVENT, 0U, 0U, UDMA_NUM_INST_ID, 50U, {UDMA_RM_SHARED_RES_CNT_REST, UDMA_RM_SHARED_RES_CNT_MIN} },
145 {UDMA_RM_RES_ID_VINTR, 0U, 0U, UDMA_NUM_INST_ID, 4U, {UDMA_RM_SHARED_RES_CNT_REST, UDMA_RM_SHARED_RES_CNT_MIN} },
146 {UDMA_RM_RES_ID_IR_INTR, 0U, 5U, UDMA_NUM_INST_ID, 8U, {UDMA_RM_SHARED_RES_CNT_REST, UDMA_RM_SHARED_RES_CNT_MIN} },
147 #endif
148 #if defined (BUILD_MCU1_0)
149 /* resId, startResrvCnt, endResrvCnt, numInst, minReq, instShare[MAIN_NAVSS,MCU_NAVSS] */
150 {UDMA_RM_RES_ID_GLOBAL_EVENT, 0U, 0U, UDMA_NUM_INST_ID, 50U, {UDMA_RM_SHARED_RES_CNT_MIN, UDMA_RM_SHARED_RES_CNT_REST} },
151 {UDMA_RM_RES_ID_VINTR, 0U, 0U, UDMA_NUM_INST_ID, 4U, {UDMA_RM_SHARED_RES_CNT_MIN, UDMA_RM_SHARED_RES_CNT_REST} },
152 {UDMA_RM_RES_ID_IR_INTR, 0U, 5U, UDMA_NUM_INST_ID, 4U, {UDMA_RM_SHARED_RES_CNT_MIN, UDMA_RM_SHARED_RES_CNT_REST} },
153 #endif
154 #if defined (BUILD_MCU1_1)
155 /* resId, startResrvCnt, endResrvCnt, numInst, minReq, instShare[MAIN_NAVSS,MCU_NAVSS] */
156 {UDMA_RM_RES_ID_GLOBAL_EVENT, 0U, 0U, UDMA_NUM_INST_ID, 32U, {UDMA_RM_SHARED_RES_CNT_MIN, UDMA_RM_SHARED_RES_CNT_REST} },
157 {UDMA_RM_RES_ID_VINTR, 0U, 0U, UDMA_NUM_INST_ID, 4U, {UDMA_RM_SHARED_RES_CNT_MIN, UDMA_RM_SHARED_RES_CNT_REST} },
158 {UDMA_RM_RES_ID_IR_INTR, 0U, 5U, UDMA_NUM_INST_ID, 4U, {UDMA_RM_SHARED_RES_CNT_MIN, UDMA_RM_SHARED_RES_CNT_REST} },
159 #endif
160 };
162 /* ========================================================================== */
163 /* Function Definitions */
164 /* ========================================================================== */
166 const Udma_RmDefBoardCfgPrms *Udma_rmGetDefBoardCfgPrms(uint32_t instId)
167 {
168 const Udma_RmDefBoardCfgPrms *rmDefBoardCfgPrms;
170 if(UDMA_INST_ID_MCU_0 == instId)
171 {
172 rmDefBoardCfgPrms = &gUdmaRmDefBoardCfg_McuNavss[0U];
173 }
174 else
175 {
176 rmDefBoardCfgPrms = &gUdmaRmDefBoardCfg_MainNavss[0U];
177 }
179 return (rmDefBoardCfgPrms);
180 }
182 Udma_RmSharedResPrms *Udma_rmGetSharedResPrms(uint32_t resId)
183 {
184 Udma_RmSharedResPrms *rmSharedResPrms = NULL;
185 uint32_t i;
187 for (i = 0; i < UDMA_RM_NUM_SHARED_RES; i++)
188 {
189 if(resId == gUdmaRmSharedResPrms[i].resId)
190 {
191 rmSharedResPrms = &gUdmaRmSharedResPrms[i];
192 break;
193 }
194 }
196 return (rmSharedResPrms);
197 }