1 //###########################################################################
2 //
3 // FILE:    F2837xD_ipc.h
4 //
5 // TITLE:   IPC Register Definitions.
6 //
7 //###########################################################################
8 // $TI Release: F2837xD Support Library v3.05.00.00 $
9 // $Release Date: Tue Jun 26 03:15:23 CDT 2018 $
10 // $Copyright:
11 // Copyright (C) 2013-2018 Texas Instruments Incorporated - http://www.ti.com/
12 //
13 // Redistribution and use in source and binary forms, with or without
14 // modification, are permitted provided that the following conditions
15 // are met:
16 //
17 //   Redistributions of source code must retain the above copyright
18 //   notice, this list of conditions and the following disclaimer.
19 //
20 //   Redistributions in binary form must reproduce the above copyright
21 //   notice, this list of conditions and the following disclaimer in the
22 //   documentation and/or other materials provided with the
23 //   distribution.
24 //
25 //   Neither the name of Texas Instruments Incorporated nor the names of
26 //   its contributors may be used to endorse or promote products derived
27 //   from this software without specific prior written permission.
28 //
29 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
30 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
31 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
32 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
33 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
34 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
35 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
36 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40 // $
41 //###########################################################################
42 
43 #ifndef __F2837xD_IPC_H__
44 #define __F2837xD_IPC_H__
45 
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
49 
50 
51 //---------------------------------------------------------------------------
52 // IPC Individual Register Bit Definitions:
53 
54 struct IPCACK_BITS {                    // bits description
55     Uint16 IPC0:1;                      // 0 Local IPC Flag 0 Acknowledgement
56     Uint16 IPC1:1;                      // 1 Local IPC Flag 1 Acknowledgement
57     Uint16 IPC2:1;                      // 2 Local IPC Flag 2 Acknowledgement
58     Uint16 IPC3:1;                      // 3 Local IPC Flag 3 Acknowledgement
59     Uint16 IPC4:1;                      // 4 Local IPC Flag 4 Acknowledgement
60     Uint16 IPC5:1;                      // 5 Local IPC Flag 5 Acknowledgement
61     Uint16 IPC6:1;                      // 6 Local IPC Flag 6 Acknowledgement
62     Uint16 IPC7:1;                      // 7 Local IPC Flag 7 Acknowledgement
63     Uint16 IPC8:1;                      // 8 Local IPC Flag 8 Acknowledgement
64     Uint16 IPC9:1;                      // 9 Local IPC Flag 9 Acknowledgement
65     Uint16 IPC10:1;                     // 10 Local IPC Flag 10 Acknowledgement
66     Uint16 IPC11:1;                     // 11 Local IPC Flag 11 Acknowledgement
67     Uint16 IPC12:1;                     // 12 Local IPC Flag 12 Acknowledgement
68     Uint16 IPC13:1;                     // 13 Local IPC Flag 13 Acknowledgement
69     Uint16 IPC14:1;                     // 14 Local IPC Flag 14 Acknowledgement
70     Uint16 IPC15:1;                     // 15 Local IPC Flag 15 Acknowledgement
71     Uint16 IPC16:1;                     // 16 Local IPC Flag 16 Acknowledgement
72     Uint16 IPC17:1;                     // 17 Local IPC Flag 17 Acknowledgement
73     Uint16 IPC18:1;                     // 18 Local IPC Flag 18 Acknowledgement
74     Uint16 IPC19:1;                     // 19 Local IPC Flag 19 Acknowledgement
75     Uint16 IPC20:1;                     // 20 Local IPC Flag 20 Acknowledgement
76     Uint16 IPC21:1;                     // 21 Local IPC Flag 21 Acknowledgement
77     Uint16 IPC22:1;                     // 22 Local IPC Flag 22 Acknowledgement
78     Uint16 IPC23:1;                     // 23 Local IPC Flag 23 Acknowledgement
79     Uint16 IPC24:1;                     // 24 Local IPC Flag 24 Acknowledgement
80     Uint16 IPC25:1;                     // 25 Local IPC Flag 25 Acknowledgement
81     Uint16 IPC26:1;                     // 26 Local IPC Flag 26 Acknowledgement
82     Uint16 IPC27:1;                     // 27 Local IPC Flag 27 Acknowledgement
83     Uint16 IPC28:1;                     // 28 Local IPC Flag 28 Acknowledgement
84     Uint16 IPC29:1;                     // 29 Local IPC Flag 29 Acknowledgement
85     Uint16 IPC30:1;                     // 30 Local IPC Flag 30 Acknowledgement
86     Uint16 IPC31:1;                     // 31 Local IPC Flag 31 Acknowledgement
87 };
88 
89 union IPCACK_REG {
90     Uint32  all;
91     struct  IPCACK_BITS  bit;
92 };
93 
94 struct IPCSTS_BITS {                    // bits description
95     Uint16 IPC0:1;                      // 0 Local IPC Flag 0 Status
96     Uint16 IPC1:1;                      // 1 Local IPC Flag 1 Status
97     Uint16 IPC2:1;                      // 2 Local IPC Flag 2 Status
98     Uint16 IPC3:1;                      // 3 Local IPC Flag 3 Status
99     Uint16 IPC4:1;                      // 4 Local IPC Flag 4 Status
100     Uint16 IPC5:1;                      // 5 Local IPC Flag 5 Status
101     Uint16 IPC6:1;                      // 6 Local IPC Flag 6 Status
102     Uint16 IPC7:1;                      // 7 Local IPC Flag 7 Status
103     Uint16 IPC8:1;                      // 8 Local IPC Flag 8 Status
104     Uint16 IPC9:1;                      // 9 Local IPC Flag 9 Status
105     Uint16 IPC10:1;                     // 10 Local IPC Flag 10 Status
106     Uint16 IPC11:1;                     // 11 Local IPC Flag 11 Status
107     Uint16 IPC12:1;                     // 12 Local IPC Flag 12 Status
108     Uint16 IPC13:1;                     // 13 Local IPC Flag 13 Status
109     Uint16 IPC14:1;                     // 14 Local IPC Flag 14 Status
110     Uint16 IPC15:1;                     // 15 Local IPC Flag 15 Status
111     Uint16 IPC16:1;                     // 16 Local IPC Flag 16 Status
112     Uint16 IPC17:1;                     // 17 Local IPC Flag 17 Status
113     Uint16 IPC18:1;                     // 18 Local IPC Flag 18 Status
114     Uint16 IPC19:1;                     // 19 Local IPC Flag 19 Status
115     Uint16 IPC20:1;                     // 20 Local IPC Flag 20 Status
116     Uint16 IPC21:1;                     // 21 Local IPC Flag 21 Status
117     Uint16 IPC22:1;                     // 22 Local IPC Flag 22 Status
118     Uint16 IPC23:1;                     // 23 Local IPC Flag 23 Status
119     Uint16 IPC24:1;                     // 24 Local IPC Flag 24 Status
120     Uint16 IPC25:1;                     // 25 Local IPC Flag 25 Status
121     Uint16 IPC26:1;                     // 26 Local IPC Flag 26 Status
122     Uint16 IPC27:1;                     // 27 Local IPC Flag 27 Status
123     Uint16 IPC28:1;                     // 28 Local IPC Flag 28 Status
124     Uint16 IPC29:1;                     // 29 Local IPC Flag 29 Status
125     Uint16 IPC30:1;                     // 30 Local IPC Flag 30 Status
126     Uint16 IPC31:1;                     // 31 Local IPC Flag 31 Status
127 };
128 
129 union IPCSTS_REG {
130     Uint32  all;
131     struct  IPCSTS_BITS  bit;
132 };
133 
134 struct IPCSET_BITS {                    // bits description
135     Uint16 IPC0:1;                      // 0 Set Remote IPC0 Flag
136     Uint16 IPC1:1;                      // 1 Set Remote IPC1 Flag
137     Uint16 IPC2:1;                      // 2 Set Remote IPC2 Flag
138     Uint16 IPC3:1;                      // 3 Set Remote IPC3 Flag
139     Uint16 IPC4:1;                      // 4 Set Remote IPC4 Flag
140     Uint16 IPC5:1;                      // 5 Set Remote IPC5 Flag
141     Uint16 IPC6:1;                      // 6 Set Remote IPC6 Flag
142     Uint16 IPC7:1;                      // 7 Set Remote IPC7 Flag
143     Uint16 IPC8:1;                      // 8 Set Remote IPC8 Flag
144     Uint16 IPC9:1;                      // 9 Set Remote IPC9 Flag
145     Uint16 IPC10:1;                     // 10 Set Remote IPC10 Flag
146     Uint16 IPC11:1;                     // 11 Set Remote IPC11 Flag
147     Uint16 IPC12:1;                     // 12 Set Remote IPC12 Flag
148     Uint16 IPC13:1;                     // 13 Set Remote IPC13 Flag
149     Uint16 IPC14:1;                     // 14 Set Remote IPC14 Flag
150     Uint16 IPC15:1;                     // 15 Set Remote IPC15 Flag
151     Uint16 IPC16:1;                     // 16 Set Remote IPC16 Flag
152     Uint16 IPC17:1;                     // 17 Set Remote IPC17 Flag
153     Uint16 IPC18:1;                     // 18 Set Remote IPC18 Flag
154     Uint16 IPC19:1;                     // 19 Set Remote IPC19 Flag
155     Uint16 IPC20:1;                     // 20 Set Remote IPC20 Flag
156     Uint16 IPC21:1;                     // 21 Set Remote IPC21 Flag
157     Uint16 IPC22:1;                     // 22 Set Remote IPC22 Flag
158     Uint16 IPC23:1;                     // 23 Set Remote IPC23 Flag
159     Uint16 IPC24:1;                     // 24 Set Remote IPC24 Flag
160     Uint16 IPC25:1;                     // 25 Set Remote IPC25 Flag
161     Uint16 IPC26:1;                     // 26 Set Remote IPC26 Flag
162     Uint16 IPC27:1;                     // 27 Set Remote IPC27 Flag
163     Uint16 IPC28:1;                     // 28 Set Remote IPC28 Flag
164     Uint16 IPC29:1;                     // 29 Set Remote IPC29 Flag
165     Uint16 IPC30:1;                     // 30 Set Remote IPC30 Flag
166     Uint16 IPC31:1;                     // 31 Set Remote IPC31 Flag
167 };
168 
169 union IPCSET_REG {
170     Uint32  all;
171     struct  IPCSET_BITS  bit;
172 };
173 
174 struct IPCCLR_BITS {                    // bits description
175     Uint16 IPC0:1;                      // 0 Clear Remote IPC0 Flag
176     Uint16 IPC1:1;                      // 1 Clear Remote IPC1 Flag
177     Uint16 IPC2:1;                      // 2 Clear Remote IPC2 Flag
178     Uint16 IPC3:1;                      // 3 Clear Remote IPC3 Flag
179     Uint16 IPC4:1;                      // 4 Clear Remote IPC4 Flag
180     Uint16 IPC5:1;                      // 5 Clear Remote IPC5 Flag
181     Uint16 IPC6:1;                      // 6 Clear Remote IPC6 Flag
182     Uint16 IPC7:1;                      // 7 Clear Remote IPC7 Flag
183     Uint16 IPC8:1;                      // 8 Clear Remote IPC8 Flag
184     Uint16 IPC9:1;                      // 9 Clear Remote IPC9 Flag
185     Uint16 IPC10:1;                     // 10 Clear Remote IPC10 Flag
186     Uint16 IPC11:1;                     // 11 Clear Remote IPC11 Flag
187     Uint16 IPC12:1;                     // 12 Clear Remote IPC12 Flag
188     Uint16 IPC13:1;                     // 13 Clear Remote IPC13 Flag
189     Uint16 IPC14:1;                     // 14 Clear Remote IPC14 Flag
190     Uint16 IPC15:1;                     // 15 Clear Remote IPC15 Flag
191     Uint16 IPC16:1;                     // 16 Clear Remote IPC16 Flag
192     Uint16 IPC17:1;                     // 17 Clear Remote IPC17 Flag
193     Uint16 IPC18:1;                     // 18 Clear Remote IPC18 Flag
194     Uint16 IPC19:1;                     // 19 Clear Remote IPC19 Flag
195     Uint16 IPC20:1;                     // 20 Clear Remote IPC20 Flag
196     Uint16 IPC21:1;                     // 21 Clear Remote IPC21 Flag
197     Uint16 IPC22:1;                     // 22 Clear Remote IPC22 Flag
198     Uint16 IPC23:1;                     // 23 Clear Remote IPC23 Flag
199     Uint16 IPC24:1;                     // 24 Clear Remote IPC24 Flag
200     Uint16 IPC25:1;                     // 25 Clear Remote IPC25 Flag
201     Uint16 IPC26:1;                     // 26 Clear Remote IPC26 Flag
202     Uint16 IPC27:1;                     // 27 Clear Remote IPC27 Flag
203     Uint16 IPC28:1;                     // 28 Clear Remote IPC28 Flag
204     Uint16 IPC29:1;                     // 29 Clear Remote IPC29 Flag
205     Uint16 IPC30:1;                     // 30 Clear Remote IPC30 Flag
206     Uint16 IPC31:1;                     // 31 Clear Remote IPC31 Flag
207 };
208 
209 union IPCCLR_REG {
210     Uint32  all;
211     struct  IPCCLR_BITS  bit;
212 };
213 
214 struct IPCFLG_BITS {                    // bits description
215     Uint16 IPC0:1;                      // 0 Remote IPC0 Flag Status
216     Uint16 IPC1:1;                      // 1 Remote IPC1 Flag Status
217     Uint16 IPC2:1;                      // 2 Remote IPC2 Flag Status
218     Uint16 IPC3:1;                      // 3 Remote IPC3 Flag Status
219     Uint16 IPC4:1;                      // 4 Remote IPC4 Flag Status
220     Uint16 IPC5:1;                      // 5 Remote IPC5 Flag Status
221     Uint16 IPC6:1;                      // 6 Remote IPC6 Flag Status
222     Uint16 IPC7:1;                      // 7 Remote IPC7 Flag Status
223     Uint16 IPC8:1;                      // 8 Remote IPC8 Flag Status
224     Uint16 IPC9:1;                      // 9 Remote IPC9 Flag Status
225     Uint16 IPC10:1;                     // 10 Remote IPC10 Flag Status
226     Uint16 IPC11:1;                     // 11 Remote IPC11 Flag Status
227     Uint16 IPC12:1;                     // 12 Remote IPC12 Flag Status
228     Uint16 IPC13:1;                     // 13 Remote IPC13 Flag Status
229     Uint16 IPC14:1;                     // 14 Remote IPC14 Flag Status
230     Uint16 IPC15:1;                     // 15 Remote IPC15 Flag Status
231     Uint16 IPC16:1;                     // 16 Remote IPC16 Flag Status
232     Uint16 IPC17:1;                     // 17 Remote IPC17 Flag Status
233     Uint16 IPC18:1;                     // 18 Remote IPC18 Flag Status
234     Uint16 IPC19:1;                     // 19 Remote IPC19 Flag Status
235     Uint16 IPC20:1;                     // 20 Remote IPC20 Flag Status
236     Uint16 IPC21:1;                     // 21 Remote IPC21 Flag Status
237     Uint16 IPC22:1;                     // 22 Remote IPC22 Flag Status
238     Uint16 IPC23:1;                     // 23 Remote IPC23 Flag Status
239     Uint16 IPC24:1;                     // 24 Remote IPC24 Flag Status
240     Uint16 IPC25:1;                     // 25 Remote IPC25 Flag Status
241     Uint16 IPC26:1;                     // 26 Remote IPC26 Flag Status
242     Uint16 IPC27:1;                     // 27 Remote IPC27 Flag Status
243     Uint16 IPC28:1;                     // 28 Remote IPC28 Flag Status
244     Uint16 IPC29:1;                     // 29 Remote IPC29 Flag Status
245     Uint16 IPC30:1;                     // 30 Remote IPC30 Flag Status
246     Uint16 IPC31:1;                     // 31 Remote IPC31 Flag Status
247 };
248 
249 union IPCFLG_REG {
250     Uint32  all;
251     struct  IPCFLG_BITS  bit;
252 };
253 
254 struct IPC_REGS_CPU1 {
255     union   IPCACK_REG                       IPCACK;                       // IPC incoming flag clear (acknowledge) register
256     union   IPCSTS_REG                       IPCSTS;                       // IPC incoming flag status register
257     union   IPCSET_REG                       IPCSET;                       // IPC remote flag set register
258     union   IPCCLR_REG                       IPCCLR;                       // IPC remote flag clear register
259     union   IPCFLG_REG                       IPCFLG;                       // IPC remote flag status register
260     Uint16                                   rsvd1[2];                     // Reserved
261     Uint32                                   IPCCOUNTERL;                  // IPC Counter Low Register
262     Uint32                                   IPCCOUNTERH;                  // IPC Counter High Register
263     Uint32                                   IPCSENDCOM;                   // Local to Remote IPC Command Register
264     Uint32                                   IPCSENDADDR;                  // Local to Remote IPC Address Register
265     Uint32                                   IPCSENDDATA;                  // Local to Remote IPC Data Register
266     Uint32                                   IPCREMOTEREPLY;               // Remote to Local IPC Reply Data Register
267     Uint32                                   IPCRECVCOM;                   // Remote to Local IPC Command Register
268     Uint32                                   IPCRECVADDR;                  // Remote to Local IPC Address Register
269     Uint32                                   IPCRECVDATA;                  // Remote to Local IPC Data Register
270     Uint32                                   IPCLOCALREPLY;                // Local to Remote IPC Reply Data Register
271     Uint32                                   IPCBOOTSTS;                   // CPU2 to CPU1 IPC Boot Status Register
272     Uint32                                   IPCBOOTMODE;                  // CPU1 to CPU2 IPC Boot Mode Register
273 };
274 
275 struct IPC_REGS_CPU2 {
276     union   IPCACK_REG                       IPCACK;                       // IPC incoming flag clear (acknowledge) register
277     union   IPCSTS_REG                       IPCSTS;                       // IPC incoming flag status register
278     union   IPCSET_REG                       IPCSET;                       // IPC remote flag set register
279     union   IPCCLR_REG                       IPCCLR;                       // IPC remote flag clear register
280     union   IPCFLG_REG                       IPCFLG;                       // IPC remote flag status register
281     Uint16                                   rsvd1[2];                     // Reserved
282     Uint32                                   IPCCOUNTERL;                  // IPC Counter Low Register
283     Uint32                                   IPCCOUNTERH;                  // IPC Counter High Register
284     Uint32                                   IPCRECVCOM;                   // Remote to Local IPC Command Register
285     Uint32                                   IPCRECVADDR;                  // Remote to Local IPC Address Register
286     Uint32                                   IPCRECVDATA;                  // Remote to Local IPC Data Register
287     Uint32                                   IPCLOCALREPLY;                // Local to Remote IPC Reply Data Register
288     Uint32                                   IPCSENDCOM;                   // Local to Remote IPC Command Register
289     Uint32                                   IPCSENDADDR;                  // Local to Remote IPC Address Register
290     Uint32                                   IPCSENDDATA;                  // Local to Remote IPC Data Register
291     Uint32                                   IPCREMOTEREPLY;               // Remote to Local IPC Reply Data Register
292     Uint32                                   IPCBOOTSTS;                   // CPU2 to CPU1 IPC Boot Status Register
293     Uint32                                   IPCBOOTMODE;                  // CPU1 to CPU2 IPC Boot Mode Register
294 };
295 
296 //---------------------------------------------------------------------------
297 // IPC External References & Function Declarations:
298 //
299 #ifdef CPU1
300 extern volatile struct IPC_REGS_CPU1 IpcRegs;
301 #endif
302 #ifdef CPU2
303 extern volatile struct IPC_REGS_CPU2 IpcRegs;
304 #endif
305 #ifdef __cplusplus
306 }
307 #endif                                  /* extern "C" */
308 
309 #endif
310 
311 //===========================================================================
312 // End of file.
313 //===========================================================================
314