Home | History | Annotate | Line # | Download | only in include
      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