hpidebug.h (2424B)
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 8Debug macros. 9 10*****************************************************************************/ 11 12#ifndef _HPIDEBUG_H 13#define _HPIDEBUG_H 14 15#include "hpi_internal.h" 16 17/* Define debugging levels. */ 18enum { 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#define FILE_LINE SOURCEFILE_NAME ":" __stringify(__LINE__) " " 33#else 34#define FILE_LINE __FILE__ ":" __stringify(__LINE__) " " 35#endif 36 37#define HPI_DEBUG_ASSERT(expression) \ 38 do { \ 39 if (!(expression)) { \ 40 printk(KERN_ERR FILE_LINE \ 41 "ASSERT " __stringify(expression)); \ 42 } \ 43 } while (0) 44 45#define HPI_DEBUG_LOG(level, ...) \ 46 do { \ 47 if (hpi_debug_level >= HPI_DEBUG_LEVEL_##level) { \ 48 printk(HPI_DEBUG_FLAG_##level \ 49 FILE_LINE __VA_ARGS__); \ 50 } \ 51 } while (0) 52 53void hpi_debug_init(void); 54int hpi_debug_level_set(int level); 55int hpi_debug_level_get(void); 56/* needed by Linux driver for dynamic debug level changes */ 57extern int hpi_debug_level; 58 59void hpi_debug_message(struct hpi_message *phm, char *sz_fileline); 60 61void hpi_debug_data(u16 *pdata, u32 len); 62 63#define HPI_DEBUG_DATA(pdata, len) \ 64 do { \ 65 if (hpi_debug_level >= HPI_DEBUG_LEVEL_VERBOSE) \ 66 hpi_debug_data(pdata, len); \ 67 } while (0) 68 69#define HPI_DEBUG_MESSAGE(level, phm) \ 70 do { \ 71 if (hpi_debug_level >= HPI_DEBUG_LEVEL_##level) { \ 72 hpi_debug_message(phm, HPI_DEBUG_FLAG_##level \ 73 FILE_LINE __stringify(level)); \ 74 } \ 75 } while (0) 76 77#define HPI_DEBUG_RESPONSE(phr) \ 78 do { \ 79 if (((hpi_debug_level >= HPI_DEBUG_LEVEL_DEBUG) && \ 80 (phr->error)) ||\ 81 (hpi_debug_level >= HPI_DEBUG_LEVEL_VERBOSE)) \ 82 printk(KERN_DEBUG "HPI_RES%d,%d,%d\n", \ 83 phr->version, phr->error, phr->specific_error); \ 84 } while (0) 85 86#ifndef compile_time_assert 87#define compile_time_assert(cond, msg) \ 88 typedef char msg[(cond) ? 1 : -1] 89#endif 90 91#endif /* _HPIDEBUG_H_ */