1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /***************************************************************************** 3 4 AudioScience HPI driver 5 Copyright (C) 1997-2011 AudioScience Inc. <support@audioscience.com> 6 7 8 Debug macros. 9 10 *****************************************************************************/ 11 12 #ifndef _HPIDEBUG_H 13 #define _HPIDEBUG_H 14 15 #include "hpi_internal.h" 16 17 /* Define debugging levels. */ 18 enum { HPI_DEBUG_LEVEL_ERROR = 0, /* always log errors */ 19 HPI_DEBUG_LEVEL_WARNING = 1, 20 HPI_DEBUG_LEVEL_NOTICE = 2, 21 HPI_DEBUG_LEVEL_INFO = 3, 22 HPI_DEBUG_LEVEL_DEBUG = 4, 23 HPI_DEBUG_LEVEL_VERBOSE = 5 /* same printk level as DEBUG */ 24 }; 25 26 #define HPI_DEBUG_LEVEL_DEFAULT HPI_DEBUG_LEVEL_NOTICE 27 28 /* an OS can define an extra flag string that is appended to 29 the start of each message, eg see linux kernel hpios.h */ 30 31 #ifdef SOURCEFILE_NAME 32 #undef FILE_LINE 33 #define FILE_LINE SOURCEFILE_NAME ":" __stringify(__LINE__) " " 34 #endif 35 36 #define HPI_DEBUG_ASSERT(expression) \ 37 do { \ 38 if (!(expression)) { \ 39 printk(KERN_ERR FILE_LINE \ 40 " ASSERT " __stringify(expression)); \ 41 } \ 42 } while (0) 43 44 #define HPI_DEBUG_LOG(level, ...) \ 45 do { \ 46 if (hpi_debug_level >= HPI_DEBUG_LEVEL_##level) { \ 47 printk(HPI_DEBUG_FLAG_##level \ 48 FILE_LINE " " __VA_ARGS__); \ 49 } \ 50 } while (0) 51 52 void hpi_debug_init(void); 53 int hpi_debug_level_set(int level); 54 int hpi_debug_level_get(void); 55 /* needed by Linux driver for dynamic debug level changes */ 56 extern int hpi_debug_level; 57 58 void hpi_debug_message(struct hpi_message *phm, char *sz_fileline); 59 60 void hpi_debug_data(u16 *pdata, u32 len); 61 62 #define HPI_DEBUG_DATA(pdata, len) \ 63 do { \ 64 if (hpi_debug_level >= HPI_DEBUG_LEVEL_VERBOSE) \ 65 hpi_debug_data(pdata, len); \ 66 } while (0) 67 68 #define HPI_DEBUG_MESSAGE(level, phm) \ 69 do { \ 70 if (hpi_debug_level >= HPI_DEBUG_LEVEL_##level) { \ 71 hpi_debug_message(phm, HPI_DEBUG_FLAG_##level \ 72 FILE_LINE " " __stringify(level)); \ 73 } \ 74 } while (0) 75 76 #define HPI_DEBUG_RESPONSE(phr) \ 77 do { \ 78 if (((hpi_debug_level >= HPI_DEBUG_LEVEL_DEBUG) && \ 79 (phr->error)) ||\ 80 (hpi_debug_level >= HPI_DEBUG_LEVEL_VERBOSE)) \ 81 printk(KERN_DEBUG "HPI_RES%d,%d,%d\n", \ 82 phr->version, phr->error, phr->specific_error); \ 83 } while (0) 84 85 #ifndef compile_time_assert 86 #define compile_time_assert(cond, msg) \ 87 typedef char msg[(cond) ? 1 : -1] 88 #endif 89 90 #endif /* _HPIDEBUG_H_ */ 91
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.