xref: /netbsd/sys/arch/hpc/include/debug.h (revision d9aafa85)
1 /*	$NetBSD: debug.h,v 1.11 2010/08/09 23:07:20 uwe Exp $	*/
2 
3 /*-
4  * Copyright (c) 1999-2002 The NetBSD Foundation, Inc.
5  * All rights reserved.
6  *
7  * This code is derived from software contributed to The NetBSD Foundation
8  * by UCHIYAMA Yasushi.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 /*
33  * debug version exports all symbols.
34  */
35 #ifdef DEBUG
36 #define STATIC
37 #else
38 #define STATIC static
39 #endif
40 
41 /*
42  * printf control
43  *	sample:
44  * #ifdef FOO_DEBUG
45  * #define DPRINTF_ENABLE
46  * #define DPRINTF_DEBUG	foo_debug
47  * #define DPRINTF_LEVEL	2
48  * #endif
49  */
50 #ifdef USE_HPC_DPRINTF
51 
52 #ifdef DPRINTF_ENABLE
53 
54 #ifndef DPRINTF_DEBUG
55 #error "specify unique debug variable"
56 #endif
57 
58 #ifndef DPRINTF_LEVEL
59 #define DPRINTF_LEVEL	1
60 #endif
61 
62 int DPRINTF_DEBUG = DPRINTF_LEVEL;
63 #endif /* DPRINTF_ENABLE */
64 
65 
66 #ifdef __DPRINTF_EXT
67 /*
68  * printf with function name prepended
69  */
70 
71 #define	PRINTF(fmt, args...)	do {			\
72 		printf("%s: " fmt, __func__ , ##args);	\
73 	} while (/* CONSTCOND */0)
74 
75 #ifdef DPRINTF_ENABLE
76 
77 #define	DPRINTF(fmt, args...)	do {		\
78 		if (DPRINTF_DEBUG)		\
79 			PRINTF(fmt, ##args);	\
80 	} while (/* CONSTCOND */0)
81 
82 #define	_DPRINTF(fmt, args...)	do {		\
83 		if (DPRINTF_DEBUG)		\
84 			printf(fmt, ##args);	\
85 	} while (/* CONSTCOND */0)
86 
87 #define DPRINTFN(n, fmt, args...)	do {	\
88 		if (DPRINTF_DEBUG > (n))	\
89 			PRINTF(fmt, ##args);	\
90 	} while (/* CONSTCOND */0)
91 
92 #define _DPRINTFN(n, fmt, args...) do {		\
93 		if (DPRINTF_DEBUG > (n))	\
94 			printf(fmt, ##args);	\
95 	} while (/* CONSTCOND */0)
96 
97 #else  /* !DPRINTF_ENABLE */
98 #define	DPRINTF(args...)	do {} while (/* CONSTCOND */ 0)
99 #define	_DPRINTF(args...)	do {} while (/* CONSTCOND */ 0)
100 #define DPRINTFN(n, args...)	do {} while (/* CONSTCOND */ 0)
101 #define _DPRINTFN(n, args...)	do {} while (/* CONSTCOND */ 0)
102 #endif /* !DPRINTF_ENABLE */
103 
104 #else  /* !__DPRINTF_EXT */
105 /*
106  * normal debug printf
107  */
108 
109 #ifdef DPRINTF_ENABLE
110 
111 #define	DPRINTF(arg)	do {			\
112 		if (DPRINTF_DEBUG)		\
113 			printf arg;		\
114 	} while (/* CONSTCOND */0)
115 
116 #define DPRINTFN(n, arg)	do {		\
117 		if (DPRINTF_DEBUG > (n))	\
118 			printf arg;		\
119 	} while (/* CONSTCOND */0)
120 
121 #else  /* !DPRINTF_ENABLE */
122 #define	DPRINTF(arg)		do {} while (/* CONSTCOND */ 0)
123 #define DPRINTFN(n, arg)	do {} while (/* CONSTCOND */ 0)
124 #endif /* !DPRINTF_ENABLE */
125 
126 #endif /* !__DPRINT_EXT */
127 #endif /* USE_HPC_DPRINTF */
128 
129 
130 /*
131  * debug print utility
132  */
133 #define DBG_BIT_PRINT_COUNT	(1 << 0)
134 #define DBG_BIT_PRINT_QUIET	(1 << 1)
135 
136 void __dbg_bit_print(uint32_t, int, int, int, const char *, int);
137 
138 #define dbg_bit_print(a) do {						\
139 		__dbg_bit_print((a), sizeof(typeof(a)), 0, 0, NULL,	\
140 			DBG_BIT_PRINT_COUNT);				\
141 	} while (/* CONSTCOND */0)
142 
143 #define dbg_bit_print_msg(a, m) do {					\
144 		__dbg_bit_print((a), sizeof(typeof(a)), 0, 0, (m),	\
145 			DBG_BIT_PRINT_COUNT);				\
146 	} while (/* CONSTCOND */0)
147 
148 #define dbg_bit_display(a) do {						\
149 		__dbg_bit_print((a), sizeof(typeof(a)), 0, 0, NULL,	\
150 			DBG_BIT_PRINT_QUIET);				\
151 	} while (/* CONSTCOND */0)
152 
153 void dbg_bitmask_print(uint32_t, uint32_t, const char *);
154 void dbg_draw_line(int);
155 void dbg_banner_title(const char *, size_t);
156 void dbg_banner_line(void);
157 
158 #define dbg_banner_function() do {					\
159 		dbg_banner_title(__func__, sizeof(__func__) - 1);	\
160 	} while (/* CONSTCOND */ 0)
161 
162 /* HPC_DEBUG_LCD */
163 #define RGB565_BLACK		0x0000
164 #define RGB565_RED		0xf800
165 #define RGB565_GREEN		0x07e0
166 #define RGB565_YELLOW		0xffe0
167 #define RGB565_BLUE		0x001f
168 #define RGB565_MAGENTA		0xf81f
169 #define RGB565_CYAN		0x07ff
170 #define RGB565_WHITE		0xffff
171 
172 void dbg_lcd_test(void);
173