]> rtime.felk.cvut.cz Git - pes-rpp/rpp-test-sw.git/blob - include/sys_vim.h
Added support for CAN using interrupts
[pes-rpp/rpp-test-sw.git] / include / sys_vim.h
1 /** @file sys_vim.h\r
2 *   @brief Vectored Interrupt Module Header File\r
3 *   @date 15.Mar.2012\r
4 *   @version 03.01.00\r
5 *   \r
6 *   This file contains:\r
7 *   - VIM Type Definitions\r
8 *   - VIM General Definitions\r
9 *   .\r
10 *   which are relevant for Vectored Interrupt Controller.\r
11 */\r
12 \r
13 /* (c) Texas Instruments 2009-2012, All rights reserved. */\r
14 \r
15 #ifndef __SYS_VIM_H__\r
16 #define __SYS_VIM_H__\r
17 \r
18 #include "sys_common.h"\r
19 \r
20 /* USER CODE BEGIN (0) */\r
21 /* USER CODE END */\r
22 \r
23 \r
24 /* VIM Type Definitions */\r
25 \r
26 /** @typedef t_isrFuncPTR\r
27 *   @brief ISR Function Pointer Type Definition\r
28 *\r
29 *   This type is used to access the ISR handler.\r
30 */\r
31 typedef void (*t_isrFuncPTR)();\r
32 \r
33 /* USER CODE BEGIN (1) */\r
34 /* USER CODE END */\r
35 \r
36 \r
37 /* VIM General Configuration */\r
38 \r
39 #define VIM_CHANNELS 96U\r
40 \r
41 /* USER CODE BEGIN (2) */\r
42 /* USER CODE END */\r
43 \r
44 /* Interrupt Handlers */\r
45 \r
46 extern void phantomInterrupt(void);\r
47 extern void esmHighInterrupt(void);\r
48 extern void phantomInterrupt(void);\r
49 extern void vPreemptiveTick(void);\r
50 extern void can1HighLevelInterrupt(void);\r
51 extern void can2HighLevelInterrupt(void);\r
52 extern void sciHighLevelInterrupt(void);\r
53 \r
54 \r
55 /* Vim Register Frame Definition */\r
56 /** @struct vimBase\r
57 *   @brief Vim Register Frame Definition\r
58 *\r
59 *   This type is used to access the Vim Registers.\r
60 */\r
61 /** @typedef vimBASE_t\r
62 *   @brief VIM Register Frame Type Definition\r
63 *\r
64 *   This type is used to access the VIM Registers.\r
65 */\r
66 typedef volatile struct vimBase\r
67 {\r
68 #if ((__little_endian__ == 1) || (__LITTLE_ENDIAN__ == 1))\r
69     uint32_t      IRQIVEC :  8U;    /* 0x0000        */\r
70     uint32_t              : 24U;    /* 0x0000        */\r
71     uint32_t      FIQIVEC :  8U;    /* 0x0004        */\r
72     uint32_t              : 24U;    /* 0x0004        */\r
73 #else\r
74     uint32_t              : 24U;    /* 0x0000        */\r
75     uint32_t      IRQIVEC :  8U;    /* 0x0000        */\r
76     uint32_t              : 24U;    /* 0x0004        */\r
77     uint32_t      FIQIVEC :  8U;    /* 0x0004        */\r
78 #endif\r
79     uint32_t      : 32U;            /* 0x0008        */\r
80     uint32_t      : 32U;            /* 0x000C        */\r
81     uint32_t      FIRQPR0;          /* 0x0010        */\r
82     uint32_t      FIRQPR1;          /* 0x0014        */\r
83     uint32_t      FIRQPR2;          /* 0x0018        */\r
84     uint32_t      FIRQPR3;          /* 0x001C        */\r
85     uint32_t      INTREQ0;          /* 0x0020        */\r
86     uint32_t      INTREQ1;          /* 0x0024        */\r
87     uint32_t      INTREQ2;          /* 0x0028        */\r
88     uint32_t      INTREQ3;          /* 0x002C        */\r
89     uint32_t      REQMASKSET0;      /* 0x0030        */\r
90     uint32_t      REQMASKSET1;      /* 0x0034        */\r
91     uint32_t      REQMASKSET2;      /* 0x0038        */\r
92     uint32_t      REQMASKSET3;      /* 0x003C        */\r
93     uint32_t      REQMASKCLR0;      /* 0x0040        */\r
94     uint32_t      REQMASKCLR1;      /* 0x0044        */\r
95     uint32_t      REQMASKCLR2;      /* 0x0048        */\r
96     uint32_t      REQMASKCLR3;      /* 0x004C        */\r
97     uint32_t      WAKEMASKSET0;     /* 0x0050        */\r
98     uint32_t      WAKEMASKSET1;     /* 0x0054        */\r
99     uint32_t      WAKEMASKSET2;     /* 0x0058        */\r
100     uint32_t      WAKEMASKSET3;     /* 0x005C        */\r
101     uint32_t      WAKEMASKCLR0;     /* 0x0060        */\r
102     uint32_t      WAKEMASKCLR1;     /* 0x0064        */\r
103     uint32_t      WAKEMASKCLR2;     /* 0x0068        */\r
104     uint32_t      WAKEMASKCLR3;     /* 0x006C        */\r
105     uint32_t      IRQVECREG;        /* 0x0070        */\r
106     uint32_t      FIQVECREQ;        /* 0x0074        */\r
107 #if ((__little_endian__ == 1) || (__LITTLE_ENDIAN__ == 1))\r
108     uint32_t      CAPEVTSRC0 :  7U; /* 0x0078        */\r
109     uint32_t                 :  9U; /* 0x0078        */\r
110     uint32_t      CAPEVTSRC1 :  7U; /* 0x0078        */\r
111     uint32_t                 :  9U; /* 0x0078        */\r
112 #else\r
113     uint32_t                 :  9U; /* 0x0078        */\r
114     uint32_t      CAPEVTSRC1 :  7U; /* 0x0078        */\r
115     uint32_t                 :  9U; /* 0x0078        */\r
116     uint32_t      CAPEVTSRC0 :  7U; /* 0x0078        */\r
117 #endif\r
118     uint32_t      : 32U;            /* 0x007C        */\r
119     uint8_t CHANMAP[64U];           /* 0x0080-0x017C */\r
120 } vimBASE_t;\r
121 \r
122 #define vimREG ((vimBASE_t *)0xFFFFFE00U)\r
123 \r
124 /* USER CODE BEGIN (3) */\r
125 /* USER CODE END */\r
126 \r
127 #define VIM_PARFLG              (*(unsigned int *)0xFFFFFDECU)\r
128 #define VIM_PARCTL              (*(unsigned int *)0xFFFFFDF0U)\r
129 #define VIM_ADDERR              (*(unsigned int *)0xFFFFFDF4U)\r
130 #define VIM_FBPARERR    (*(unsigned int *)0xFFFFFDF8U)\r
131 \r
132 #define VIMRAMPARLOC    (*(unsigned int *)0xFFF82400U)\r
133 #define VIMRAMLOC               (*(unsigned int *)0xFFF82000U)\r
134 \r
135 #endif\r