1/* $NetBSD: debug.h,v 1.10 2010/08/08 16:27:30 chs 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 62int 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 136void __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 153void dbg_bitmask_print(uint32_t, uint32_t, const char *); 154void dbg_draw_line(int); 155void dbg_banner_title(const char *, size_t); 156void 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 172void dbg_lcd_test(void); 173