]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - cpu/ixp/npe/include/IxNpeDlMacros_p.h
SAMSUNG: serial: modify name from s5pc1xx to s5p
[karo-tx-uboot.git] / 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  */