1 /** @file sys_vim.h 2 * @brief Vectored Interrupt Module Header File 3 * @date 29.May.2013 4 * @version 03.05.02 5 * 6 * This file contains: 7 * - VIM Type Definitions 8 * - VIM General Definitions 9 * . 10 * which are relevant for Vectored Interrupt Controller. 11 */ 12 13 /* (c) Texas Instruments 2009-2013, All rights reserved. */ 14 15 #ifndef __SYS_VIM_H__ 16 #define __SYS_VIM_H__ 17 18 #include "reg_vim.h" 19 20 /* USER CODE BEGIN (0) */ 21 /* USER CODE END */ 22 23 24 /* VIM Type Definitions */ 25 26 /** @typedef t_isrFuncPTR 27 * @brief ISR Function Pointer Type Definition 28 * 29 * This type is used to access the ISR handler. 30 */ 31 typedef void (*t_isrFuncPTR)(void); 32 33 /* USER CODE BEGIN (1) */ 34 /* USER CODE END */ 35 36 37 /* VIM General Configuration */ 38 39 #define VIM_CHANNELS 96U 40 41 /* USER CODE BEGIN (2) */ 42 /* USER CODE END */ 43 44 /* Interrupt Handlers */ 45 46 extern void esmHighInterrupt(void); 47 extern void phantomInterrupt(void); 48 extern void rtiCompare3Interrupt(void); 49 extern void linHighLevelInterrupt(void); 50 51 /* USER CODE BEGIN (3) */ 52 /* USER CODE END */ 53 54 #define VIM_PARFLG (*(volatile uint32 *)0xFFFFFDECU) 55 #define VIM_PARCTL (*(volatile uint32 *)0xFFFFFDF0U) 56 #define VIM_ADDERR (*(volatile uint32 *)0xFFFFFDF4U) 57 #define VIM_FBPARERR (*(volatile uint32 *)0xFFFFFDF8U) 58 59 #define VIMRAMPARLOC (*(volatile uint32 *)0xFFF82400U) 60 #define VIMRAMLOC (*(volatile uint32 *)0xFFF82000U) 61 62 /* Configuration registers */ 63 typedef struct vim_config_reg 64 { 65 uint32 CONFIG_FIRQPR0; 66 uint32 CONFIG_FIRQPR1; 67 uint32 CONFIG_FIRQPR2; 68 uint32 CONFIG_FIRQPR3; 69 uint32 CONFIG_REQMASKSET0; 70 uint32 CONFIG_REQMASKSET1; 71 uint32 CONFIG_REQMASKSET2; 72 uint32 CONFIG_REQMASKSET3; 73 uint32 CONFIG_WAKEMASKSET0; 74 uint32 CONFIG_WAKEMASKSET1; 75 uint32 CONFIG_WAKEMASKSET2; 76 uint32 CONFIG_WAKEMASKSET3; 77 uint32 CONFIG_CAPEVT; 78 uint32 CONFIG_CHANCTRL[24U]; 79 } vim_config_reg_t; 80 81 /* Configuration registers initial value */ 82 #define VIM_FIRQPR0_CONFIGVALUE SYS_FIQ\ 83 | (SYS_FIQ << 1U)\ 84 | (SYS_IRQ << 2U)\ 85 | (SYS_IRQ << 3U)\ 86 | (SYS_IRQ << 4U)\ 87 | (SYS_IRQ << 5U)\ 88 | (SYS_IRQ << 6U)\ 89 | (SYS_IRQ << 7U)\ 90 | (SYS_IRQ << 8U)\ 91 | (SYS_IRQ << 9U)\ 92 | (SYS_IRQ << 10U)\ 93 | (SYS_IRQ << 11U)\ 94 | (SYS_IRQ << 12U)\ 95 | (SYS_IRQ << 13U)\ 96 | (SYS_IRQ << 14U)\ 97 | (SYS_IRQ << 15U)\ 98 | (SYS_IRQ << 16U)\ 99 | (SYS_IRQ << 17U)\ 100 | (SYS_IRQ << 18U)\ 101 | (SYS_IRQ << 19U)\ 102 | (SYS_IRQ << 20U)\ 103 | (SYS_IRQ << 21U)\ 104 | (SYS_IRQ << 22U)\ 105 | (SYS_IRQ << 23U)\ 106 | (SYS_IRQ << 24U)\ 107 | (SYS_IRQ << 25U)\ 108 | (SYS_IRQ << 26U)\ 109 | (SYS_IRQ << 27U)\ 110 | (SYS_IRQ << 28U)\ 111 | (SYS_IRQ << 29U)\ 112 | (SYS_IRQ << 30U)\ 113 | (SYS_IRQ << 31U) 114 115 #define VIM_FIRQPR1_CONFIGVALUE SYS_IRQ\ 116 | (SYS_IRQ << 1U)\ 117 | (SYS_IRQ << 2U)\ 118 | (SYS_IRQ << 3U)\ 119 | (SYS_IRQ << 4U)\ 120 | (SYS_IRQ << 5U)\ 121 | (SYS_IRQ << 6U)\ 122 | (SYS_IRQ << 7U)\ 123 | (SYS_IRQ << 8U)\ 124 | (SYS_IRQ << 9U)\ 125 | (SYS_IRQ << 10U)\ 126 | (SYS_IRQ << 11U)\ 127 | (SYS_IRQ << 12U)\ 128 | (SYS_IRQ << 13U)\ 129 | (SYS_IRQ << 14U)\ 130 | (SYS_IRQ << 15U)\ 131 | (SYS_IRQ << 16U)\ 132 | (SYS_IRQ << 17U)\ 133 | (SYS_IRQ << 18U)\ 134 | (SYS_IRQ << 19U)\ 135 | (SYS_IRQ << 20U)\ 136 | (SYS_IRQ << 21U)\ 137 | (SYS_IRQ << 22U)\ 138 | (SYS_IRQ << 23U)\ 139 | (SYS_IRQ << 24U)\ 140 | (SYS_IRQ << 25U)\ 141 | (SYS_IRQ << 26U)\ 142 | (SYS_IRQ << 27U)\ 143 | (SYS_IRQ << 28U)\ 144 | (SYS_IRQ << 29U)\ 145 | (SYS_IRQ << 30U)\ 146 | (SYS_IRQ << 31U) 147 148 #define VIM_FIRQPR2_CONFIGVALUE SYS_IRQ\ 149 | (SYS_IRQ << 1U)\ 150 | (SYS_IRQ << 2U)\ 151 | (SYS_IRQ << 3U)\ 152 | (SYS_IRQ << 4U)\ 153 | (SYS_IRQ << 5U)\ 154 | (SYS_IRQ << 6U)\ 155 | (SYS_IRQ << 7U)\ 156 | (SYS_IRQ << 8U)\ 157 | (SYS_IRQ << 9U)\ 158 | (SYS_IRQ << 10U)\ 159 | (SYS_IRQ << 11U)\ 160 | (SYS_IRQ << 12U)\ 161 | (SYS_IRQ << 13U)\ 162 | (SYS_IRQ << 14U)\ 163 | (SYS_IRQ << 15U)\ 164 | (SYS_IRQ << 16U)\ 165 | (SYS_IRQ << 17U)\ 166 | (SYS_IRQ << 18U)\ 167 | (SYS_IRQ << 19U)\ 168 | (SYS_IRQ << 20U)\ 169 | (SYS_IRQ << 21U)\ 170 | (SYS_IRQ << 22U)\ 171 | (SYS_IRQ << 23U)\ 172 | (SYS_IRQ << 24U)\ 173 | (SYS_IRQ << 25U)\ 174 | (SYS_IRQ << 26U)\ 175 | (SYS_IRQ << 27U)\ 176 | (SYS_IRQ << 28U)\ 177 | (SYS_IRQ << 29U)\ 178 | (SYS_IRQ << 30U)\ 179 | (SYS_IRQ << 31U) 180 181 #define VIM_FIRQPR3_CONFIGVALUE SYS_IRQ\ 182 | (SYS_IRQ << 1U)\ 183 | (SYS_IRQ << 2U)\ 184 | (SYS_IRQ << 3U)\ 185 | (SYS_IRQ << 4U)\ 186 | (SYS_IRQ << 5U)\ 187 | (SYS_IRQ << 6U)\ 188 | (SYS_IRQ << 7U)\ 189 | (SYS_IRQ << 8U)\ 190 | (SYS_IRQ << 9U)\ 191 | (SYS_IRQ << 10U)\ 192 | (SYS_IRQ << 11U)\ 193 | (SYS_IRQ << 12U)\ 194 | (SYS_IRQ << 13U)\ 195 | (SYS_IRQ << 14U)\ 196 | (SYS_IRQ << 15U)\ 197 | (SYS_IRQ << 16U)\ 198 | (SYS_IRQ << 17U)\ 199 | (SYS_IRQ << 18U)\ 200 | (SYS_IRQ << 19U)\ 201 | (SYS_IRQ << 20U)\ 202 | (SYS_IRQ << 21U)\ 203 | (SYS_IRQ << 22U)\ 204 | (SYS_IRQ << 23U)\ 205 | (SYS_IRQ << 24U)\ 206 | (SYS_IRQ << 25U)\ 207 | (SYS_IRQ << 26U)\ 208 | (SYS_IRQ << 27U)\ 209 | (SYS_IRQ << 28U)\ 210 | (SYS_IRQ << 29U)\ 211 | (SYS_IRQ << 30U)\ 212 | (SYS_IRQ << 31U) 213 214 #define VIM_REQMASKSET0_CONFIGVALUE 1U\ 215 | (1U << 1U)\ 216 | (0U << 2U)\ 217 | (0U << 3U)\ 218 | (0U << 4U)\ 219 | (1U << 5U)\ 220 | (0U << 6U)\ 221 | (0U << 7U)\ 222 | (0U << 8U)\ 223 | (0U << 9U)\ 224 | (0U << 10U)\ 225 | (0U << 11U)\ 226 | (0U << 12U)\ 227 | (1U << 13U)\ 228 | (0U << 14U)\ 229 | (0U << 15U)\ 230 | (0U << 16U)\ 231 | (0U << 17U)\ 232 | (0U << 18U)\ 233 | (0U << 19U)\ 234 | (0U << 20U)\ 235 | (0U << 21U)\ 236 | (0U << 22U)\ 237 | (0U << 23U)\ 238 | (0U << 24U)\ 239 | (0U << 25U)\ 240 | (0U << 26U)\ 241 | (0U << 27U)\ 242 | (0U << 28U)\ 243 | (0U << 29U)\ 244 | (0U << 30U)\ 245 | (0U << 31U) 246 247 #define VIM_REQMASKSET1_CONFIGVALUE 0U\ 248 | (0U << 1U)\ 249 | (0U << 2U)\ 250 | (0U << 3U)\ 251 | (0U << 4U)\ 252 | (0U << 5U)\ 253 | (0U << 6U)\ 254 | (0U << 7U)\ 255 | (0U << 8U)\ 256 | (0U << 9U)\ 257 | (0U << 10U)\ 258 | (0U << 11U)\ 259 | (0U << 12U)\ 260 | (0U << 13U)\ 261 | (0U << 14U)\ 262 | (0U << 15U)\ 263 | (0U << 16U)\ 264 | (0U << 17U)\ 265 | (0U << 18U)\ 266 | (0U << 19U)\ 267 | (0U << 20U)\ 268 | (0U << 21U)\ 269 | (0U << 22U)\ 270 | (0U << 23U)\ 271 | (0U << 24U)\ 272 | (0U << 25U)\ 273 | (0U << 26U)\ 274 | (0U << 27U)\ 275 | (0U << 28U)\ 276 | (0U << 29U)\ 277 | (0U << 30U)\ 278 | (0U << 31U) 279 280 #define VIM_REQMASKSET2_CONFIGVALUE 0U\ 281 | (0U << 1U)\ 282 | (0U << 2U)\ 283 | (0U << 3U)\ 284 | (0U << 4U)\ 285 | (0U << 5U)\ 286 | (0U << 6U)\ 287 | (0U << 7U)\ 288 | (0U << 8U)\ 289 | (0U << 9U)\ 290 | (0U << 10U)\ 291 | (0U << 11U)\ 292 | (0U << 12U)\ 293 | (0U << 13U)\ 294 | (0U << 14U)\ 295 | (0U << 15U)\ 296 | (0U << 16U)\ 297 | (0U << 17U)\ 298 | (0U << 18U)\ 299 | (0U << 19U)\ 300 | (0U << 20U)\ 301 | (0U << 21U)\ 302 | (0U << 22U)\ 303 | (0U << 23U)\ 304 | (0U << 24U)\ 305 | (0U << 25U)\ 306 | (0U << 26U)\ 307 | (0U << 27U)\ 308 | (0U << 28U)\ 309 | (0U << 29U)\ 310 | (0U << 30U)\ 311 | (0U << 31U) 312 313 #define VIM_REQMASKSET3_CONFIGVALUE 0U\ 314 | (0U << 1U)\ 315 | (0U << 2U)\ 316 | (0U << 3U)\ 317 | (0U << 4U)\ 318 | (0U << 5U)\ 319 | (0U << 6U)\ 320 | (0U << 7U)\ 321 | (0U << 8U)\ 322 | (0U << 9U)\ 323 | (0U << 10U)\ 324 | (0U << 11U)\ 325 | (0U << 12U)\ 326 | (0U << 13U)\ 327 | (0U << 14U)\ 328 | (0U << 15U)\ 329 | (0U << 16U)\ 330 | (0U << 17U)\ 331 | (0U << 18U)\ 332 | (0U << 19U)\ 333 | (0U << 20U)\ 334 | (0U << 21U)\ 335 | (0U << 22U)\ 336 | (0U << 23U)\ 337 | (0U << 24U)\ 338 | (0U << 25U)\ 339 | (0U << 26U)\ 340 | (0U << 27U)\ 341 | (0U << 28U)\ 342 | (0U << 29U)\ 343 | (0U << 30U)\ 344 | (0U << 31U) 345 346 #define VIM_WAKEMASKSET0_CONFIGVALUE 0xFFFFFFFFU 347 #define VIM_WAKEMASKSET1_CONFIGVALUE 0xFFFFFFFFU 348 #define VIM_WAKEMASKSET2_CONFIGVALUE 0xFFFFFFFFU 349 #define VIM_WAKEMASKSET3_CONFIGVALUE 0U 350 #define VIM_CAPEVT_CONFIGVALUE 0U 351 352 #define VIM_CHANCTRL_CONFIGVALUE {0x00010203U,\ 353 0x04050607U,\ 354 0x08090A0BU,\ 355 0x0C0D0E0FU,\ 356 0x10111213U,\ 357 0x14151617U,\ 358 0x18191A1BU,\ 359 0x1C1D1E1FU,\ 360 0x20212223U,\ 361 0x24252627U,\ 362 0x28292A2BU,\ 363 0x2C2D2E2FU,\ 364 0x30313233U,\ 365 0x34353637U,\ 366 0x38393A3BU,\ 367 0x3C3D3E3FU,\ 368 0x40414243U,\ 369 0x44454647U,\ 370 0x48494A4BU,\ 371 0x4C4D4E4FU,\ 372 0x50515253U,\ 373 0x54555657U,\ 374 0x58595A5BU,\ 375 0x5C5D5E5FU} 376 377 /** 378 * @defgroup VIM VIM 379 * @brief Vectored Interrupt Manager 380 * 381 * The vectored interrupt manager (VIM) provides hardware assistance for prioritizing and controlling the 382 * many interrupt sources present on a device. Interrupts are caused by events outside of the normal flow of 383 * program execution. 384 * 385 * Related files: 386 * - reg_vim.h 387 * - sys_vim.h 388 * - sys_vim.c 389 * 390 * @addtogroup VIM 391 * @{ 392 */ 393 /*VIM Interface functions*/ 394 void vimInit(void); 395 void vimChannelMap(uint32 request, uint32 channel, t_isrFuncPTR handler); 396 void vimEnableInterrupt(uint32 channel, boolean inttype); 397 void vimDisableInterrupt(uint32 channel); 398 void vimGetConfigValue(vim_config_reg_t *config_reg, config_value_type_t type); 399 /*@}*/ 400 #endif 401