]> git.ipfire.org Git - people/ms/u-boot.git/blob - arch/arm/cpu/ixp/npe/include/IxNpeDlMacros_p.h
sh: Move cpu/$CPU to arch/sh/cpu/$CPU
[people/ms/u-boot.git] / arch / arm / cpu / ixp / npe / include / IxNpeDlMacros_p.h
1 /**
2 * @file IxNpeDlMacros_p.h
3 *
4 * @author Intel Corporation
5 * @date 21 January 2002
6 *
7 * @brief This file contains the macros for the IxNpeDl component.
8 *
9 *
10 * @par
11 * IXP400 SW Release version 2.0
12 *
13 * -- Copyright Notice --
14 *
15 * @par
16 * Copyright 2001-2005, Intel Corporation.
17 * All rights reserved.
18 *
19 * @par
20 * Redistribution and use in source and binary forms, with or without
21 * modification, are permitted provided that the following conditions
22 * are met:
23 * 1. Redistributions of source code must retain the above copyright
24 * notice, this list of conditions and the following disclaimer.
25 * 2. Redistributions in binary form must reproduce the above copyright
26 * notice, this list of conditions and the following disclaimer in the
27 * documentation and/or other materials provided with the distribution.
28 * 3. Neither the name of the Intel Corporation nor the names of its contributors
29 * may be used to endorse or promote products derived from this software
30 * without specific prior written permission.
31 *
32 * @par
33 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
34 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
35 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
36 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
37 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
38 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
39 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
40 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
41 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
42 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
43 * SUCH DAMAGE.
44 *
45 * @par
46 * -- End of Copyright Notice --
47 */
48
49 /**
50 * @defgroup IxNpeDlMacros_p IxNpeDlMacros_p
51 *
52 * @brief Macros for the IxNpeDl component.
53 *
54 * @{
55 */
56
57 #ifndef IXNPEDLMACROS_P_H
58 #define IXNPEDLMACROS_P_H
59
60
61 /*
62 * Put the user defined include files required.
63 */
64 #if (CPU != XSCALE)
65 /* To support IxNpeDl unit tests... */
66 #include <stdio.h>
67 #include "test/IxNpeDlTestReg.h"
68
69 #else
70 #include "IxOsal.h"
71
72 #endif
73
74
75 /*
76 * Typedefs
77 */
78
79 /**
80 * @typedef IxNpeDlTraceTypes
81 * @brief Enumeration defining IxNpeDl trace levels
82 */
83 typedef enum
84 {
85 IX_NPEDL_TRACE_OFF, /**< no trace */
86 IX_NPEDL_DEBUG, /**< debug */
87 IX_NPEDL_FN_ENTRY_EXIT /**< function entry/exit */
88 } IxNpeDlTraceTypes;
89
90
91 /*
92 * #defines and macros.
93 */
94
95 /* Implementation of the following macros for use with IxNpeDl unit test code */
96 #if (CPU != XSCALE)
97
98
99 /**
100 * @def IX_NPEDL_TRACE_LEVEL
101 *
102 * @brief IxNpeDl debug trace level
103 */
104 #define IX_NPEDL_TRACE_LEVEL IX_NPEDL_FN_ENTRY_EXIT
105
106 /**
107 * @def IX_NPEDL_ERROR_REPORT
108 *
109 * @brief Mechanism for reporting IxNpeDl software errors
110 *
111 * @param char* [in] STR - Error string to report
112 *
113 * This macro simply prints the error string passed.
114 * Intended for use with IxNpeDl unit test code.
115 *
116 * @return none
117 */
118 #define IX_NPEDL_ERROR_REPORT(STR) printf ("IxNpeDl ERROR: %s\n", (STR));
119
120 /**
121 * @def IX_NPEDL_WARNING_REPORT
122 *
123 * @brief Mechanism for reporting IxNpeDl software errors
124 *
125 * @param char* [in] STR - Error string to report
126 *
127 * This macro simply prints the error string passed.
128 * Intended for use with IxNpeDl unit test code.
129 *
130 * @return none
131 */
132 #define IX_NPEDL_WARNING_REPORT(STR) printf ("IxNpeDl WARNING: %s\n", (STR));
133
134 /**
135 * @def IX_NPEDL_TRACE0
136 *
137 * @brief Mechanism for tracing debug for the IxNpeDl component, for no arguments
138 *
139 * @param unsigned [in] LEVEL - one of IxNpeDlTraceTypes enumerated values
140 * @param char* [in] STR - Trace string
141 *
142 * This macro simply prints the trace string passed, if the level is supported.
143 * Intended for use with IxNpeDl unit test code.
144 *
145 * @return none
146 */
147 #define IX_NPEDL_TRACE0(LEVEL, STR) \
148 { \
149 if (LEVEL <= IX_NPEDL_TRACE_LEVEL) \
150 { \
151 printf ("IxNpeDl TRACE: "); \
152 printf ((STR)); \
153 printf ("\n"); \
154 } \
155 }
156
157 /**
158 * @def IX_NPEDL_TRACE1
159 *
160 * @brief Mechanism for tracing debug for the IxNpeDl component, with 1 argument
161 *
162 * @param unsigned [in] LEVEL - one of IxNpeDlTraceTypes enumerated values
163 * @param char* [in] STR - Trace string
164 * @param argType [in] ARG1 - Argument to trace
165 *
166 * This macro simply prints the trace string passed, if the level is supported.
167 * Intended for use with IxNpeDl unit test code.
168 *
169 * @return none
170 */
171 #define IX_NPEDL_TRACE1(LEVEL, STR, ARG1) \
172 { \
173 if (LEVEL <= IX_NPEDL_TRACE_LEVEL) \
174 { \
175 printf ("IxNpeDl TRACE: "); \
176 printf (STR, ARG1); \
177 printf ("\n"); \
178 } \
179 }
180
181 /**
182 * @def IX_NPEDL_TRACE2
183 *
184 * @brief Mechanism for tracing debug for the IxNpeDl component, with 2 arguments
185 *
186 * @param unsigned [in] LEVEL - one of IxNpeDlTraceTypes enumerated values
187 * @param char* [in] STR - Trace string
188 * @param argType [in] ARG1 - Argument to trace
189 * @param argType [in] ARG2 - Argument to trace
190 *
191 * This macro simply prints the trace string passed, if the level is supported.
192 * Intended for use with IxNpeDl unit test code.
193 *
194 * @return none
195 */
196 #define IX_NPEDL_TRACE2(LEVEL, STR, ARG1, ARG2) \
197 { \
198 if (LEVEL <= IX_NPEDL_TRACE_LEVEL) \
199 { \
200 printf ("IxNpeDl TRACE: "); \
201 printf (STR, ARG1, ARG2); \
202 printf ("\n"); \
203 } \
204 }
205
206
207 /**
208 * @def IX_NPEDL_REG_WRITE
209 *
210 * @brief Mechanism for writing to a memory-mapped register
211 *
212 * @param UINT32 [in] base - Base memory address for this NPE's registers
213 * @param UINT32 [in] offset - Offset from base memory address
214 * @param UINT32 [in] value - Value to write to register
215 *
216 * This macro calls a function from Unit Test code to write a register. This
217 * allows extra flexibility for unit testing of the IxNpeDl component.
218 *
219 * @return none
220 */
221 #define IX_NPEDL_REG_WRITE(base, offset, value) \
222 { \
223 ixNpeDlTestRegWrite (base, offset, value); \
224 }
225
226
227 /**
228 * @def IX_NPEDL_REG_READ
229 *
230 * @brief Mechanism for reading from a memory-mapped register
231 *
232 * @param UINT32 [in] base - Base memory address for this NPE's registers
233 * @param UINT32 [in] offset - Offset from base memory address
234 * @param UINT32 *[out] value - Value read from register
235 *
236 * This macro calls a function from Unit Test code to read a register. This
237 * allows extra flexibility for unit testing of the IxNpeDl component.
238 *
239 * @return none
240 */
241 #define IX_NPEDL_REG_READ(base, offset, value) \
242 { \
243 ixNpeDlTestRegRead (base, offset, value); \
244 }
245
246
247 /* Implementation of the following macros when integrated with IxOsal */
248 #else /* #if (CPU != XSCALE) */
249
250
251 /**
252 * @def IX_NPEDL_TRACE_LEVEL
253 *
254 * @brief IxNpeDl debug trace level
255 */
256 #define IX_NPEDL_TRACE_LEVEL IX_NPEDL_DEBUG
257
258
259 /**
260 * @def IX_NPEDL_ERROR_REPORT
261 *
262 * @brief Mechanism for reporting IxNpeDl software errors
263 *
264 * @param char* [in] STR - Error string to report
265 *
266 * This macro is used to report IxNpeDl software errors.
267 *
268 * @return none
269 */
270 #define IX_NPEDL_ERROR_REPORT(STR) \
271 ixOsalLog (IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDERR, STR, 0, 0, 0, 0, 0, 0);
272
273 /**
274 * @def IX_NPEDL_WARNING_REPORT
275 *
276 * @brief Mechanism for reporting IxNpeDl software warnings
277 *
278 * @param char* [in] STR - Warning string to report
279 *
280 * This macro is used to report IxNpeDl software warnings.
281 *
282 * @return none
283 */
284 #define IX_NPEDL_WARNING_REPORT(STR) \
285 ixOsalLog (IX_OSAL_LOG_LVL_WARNING, IX_OSAL_LOG_DEV_STDOUT, STR, 0, 0, 0, 0, 0, 0);
286
287
288 /**
289 * @def IX_NPEDL_TRACE0
290 *
291 * @brief Mechanism for tracing debug for the IxNpeDl component, for no arguments
292 *
293 * @param unsigned [in] LEVEL - one of IxNpeDlTraceTypes enumerated values
294 * @param char* [in] STR - Trace string
295 *
296 * This macro simply prints the trace string passed, if the level is supported.
297 *
298 * @return none
299 */
300 #define IX_NPEDL_TRACE0(LEVEL, STR) \
301 { \
302 if (LEVEL <= IX_NPEDL_TRACE_LEVEL) \
303 { \
304 if (LEVEL == IX_NPEDL_FN_ENTRY_EXIT) \
305 { \
306 ixOsalLog (IX_OSAL_LOG_LVL_DEBUG3, IX_OSAL_LOG_DEV_STDOUT, STR, 0, 0, 0, 0, 0, 0); \
307 } \
308 else if (LEVEL == IX_NPEDL_DEBUG) \
309 { \
310 ixOsalLog (IX_OSAL_LOG_LVL_MESSAGE, IX_OSAL_LOG_DEV_STDOUT, STR, 0, 0, 0, 0, 0, 0); \
311 } \
312 } \
313 }
314
315 /**
316 * @def IX_NPEDL_TRACE1
317 *
318 * @brief Mechanism for tracing debug for the IxNpeDl component, with 1 argument
319 *
320 * @param unsigned [in] LEVEL - one of IxNpeDlTraceTypes enumerated values
321 * @param char* [in] STR - Trace string
322 * @param argType [in] ARG1 - Argument to trace
323 *
324 * This macro simply prints the trace string passed, if the level is supported.
325 *
326 * @return none
327 */
328 #define IX_NPEDL_TRACE1(LEVEL, STR, ARG1) \
329 { \
330 if (LEVEL <= IX_NPEDL_TRACE_LEVEL) \
331 { \
332 if (LEVEL == IX_NPEDL_FN_ENTRY_EXIT) \
333 { \
334 ixOsalLog (IX_OSAL_LOG_LVL_DEBUG3, IX_OSAL_LOG_DEV_STDOUT, STR, ARG1, 0, 0, 0, 0, 0); \
335 } \
336 else if (LEVEL == IX_NPEDL_DEBUG) \
337 { \
338 ixOsalLog (IX_OSAL_LOG_LVL_MESSAGE, IX_OSAL_LOG_DEV_STDOUT, STR, ARG1, 0, 0, 0, 0, 0); \
339 } \
340 } \
341 }
342
343 /**
344 * @def IX_NPEDL_TRACE2
345 *
346 * @brief Mechanism for tracing debug for the IxNpeDl component, with 2 arguments
347 *
348 * @param unsigned [in] LEVEL - one of IxNpeDlTraceTypes enumerated values
349 * @param char* [in] STR - Trace string
350 * @param argType [in] ARG1 - Argument to trace
351 * @param argType [in] ARG2 - Argument to trace
352 *
353 * This macro simply prints the trace string passed, if the level is supported.
354 *
355 * @return none
356 */
357 #define IX_NPEDL_TRACE2(LEVEL, STR, ARG1, ARG2) \
358 { \
359 if (LEVEL <= IX_NPEDL_TRACE_LEVEL) \
360 { \
361 if (LEVEL == IX_NPEDL_FN_ENTRY_EXIT) \
362 { \
363 ixOsalLog (IX_OSAL_LOG_LVL_DEBUG3, IX_OSAL_LOG_DEV_STDOUT, STR, ARG1, ARG2, 0, 0, 0, 0); \
364 } \
365 else if (LEVEL == IX_NPEDL_DEBUG) \
366 { \
367 ixOsalLog (IX_OSAL_LOG_LVL_MESSAGE, IX_OSAL_LOG_DEV_STDOUT, STR, ARG1, ARG2, 0, 0, 0, 0); \
368 } \
369 } \
370 }
371
372 /**
373 * @def IX_NPEDL_REG_WRITE
374 *
375 * @brief Mechanism for writing to a memory-mapped register
376 *
377 * @param UINT32 [in] base - Base memory address for this NPE's registers
378 * @param UINT32 [in] offset - Offset from base memory address
379 * @param UINT32 [in] value - Value to write to register
380 *
381 * This macro forms the address of the register from base address + offset, and
382 * dereferences that address to write the contents of the register.
383 *
384 * @return none
385 */
386 #define IX_NPEDL_REG_WRITE(base, offset, value) \
387 IX_OSAL_WRITE_LONG(((base) + (offset)), (value))
388
389
390
391 /**
392 * @def IX_NPEDL_REG_READ
393 *
394 * @brief Mechanism for reading from a memory-mapped register
395 *
396 * @param UINT32 [in] base - Base memory address for this NPE's registers
397 * @param UINT32 [in] offset - Offset from base memory address
398 * @param UINT32 *[out] value - Value read from register
399 *
400 * This macro forms the address of the register from base address + offset, and
401 * dereferences that address to read the register contents.
402 *
403 * @return none
404 */
405 #define IX_NPEDL_REG_READ(base, offset, value) \
406 *(value) = IX_OSAL_READ_LONG(((base) + (offset)))
407
408 #endif /* #if (CPU != XSCALE) */
409
410 #endif /* IXNPEDLMACROS_P_H */
411
412 /**
413 * @} defgroup IxNpeDlMacros_p
414 */