2019-05-29 07:12:47 -07:00
/* SPDX-License-Identifier: GPL-2.0-only */
2010-04-21 18:17:39 +02:00
/*****************************************************************************
AudioScience HPI driver
2011-12-22 13:38:32 +13:00
Copyright ( C ) 1997 - 2011 AudioScience Inc . < support @ audioscience . com >
2010-04-21 18:17:39 +02:00
Debug macros .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# ifndef _HPIDEBUG_H
# define _HPIDEBUG_H
# include "hpi_internal.h"
/* Define debugging levels. */
enum { HPI_DEBUG_LEVEL_ERROR = 0 , /* always log errors */
HPI_DEBUG_LEVEL_WARNING = 1 ,
HPI_DEBUG_LEVEL_NOTICE = 2 ,
HPI_DEBUG_LEVEL_INFO = 3 ,
HPI_DEBUG_LEVEL_DEBUG = 4 ,
HPI_DEBUG_LEVEL_VERBOSE = 5 /* same printk level as DEBUG */
} ;
# define HPI_DEBUG_LEVEL_DEFAULT HPI_DEBUG_LEVEL_NOTICE
/* an OS can define an extra flag string that is appended to
2011-02-10 17:25:56 +13:00
the start of each message , eg see linux kernel hpios . h */
2010-04-21 18:17:39 +02:00
# ifdef SOURCEFILE_NAME
# define FILE_LINE SOURCEFILE_NAME ":" __stringify(__LINE__) " "
# else
# define FILE_LINE __FILE__ ":" __stringify(__LINE__) " "
# endif
# define HPI_DEBUG_ASSERT(expression) \
do { \
2011-02-10 17:25:56 +13:00
if ( ! ( expression ) ) { \
printk ( KERN_ERR FILE_LINE \
" ASSERT " __stringify ( expression ) ) ; \
2010-04-21 18:17:39 +02:00
} \
} while ( 0 )
# define HPI_DEBUG_LOG(level, ...) \
do { \
if ( hpi_debug_level > = HPI_DEBUG_LEVEL_ # # level ) { \
printk ( HPI_DEBUG_FLAG_ # # level \
FILE_LINE __VA_ARGS__ ) ; \
} \
} while ( 0 )
void hpi_debug_init ( void ) ;
int hpi_debug_level_set ( int level ) ;
int hpi_debug_level_get ( void ) ;
/* needed by Linux driver for dynamic debug level changes */
extern int hpi_debug_level ;
void hpi_debug_message ( struct hpi_message * phm , char * sz_fileline ) ;
void hpi_debug_data ( u16 * pdata , u32 len ) ;
2011-02-10 17:25:56 +13:00
# define HPI_DEBUG_DATA(pdata, len) \
do { \
2010-04-21 18:17:39 +02:00
if ( hpi_debug_level > = HPI_DEBUG_LEVEL_VERBOSE ) \
hpi_debug_data ( pdata , len ) ; \
} while ( 0 )
2011-02-10 17:25:56 +13:00
# define HPI_DEBUG_MESSAGE(level, phm) \
do { \
if ( hpi_debug_level > = HPI_DEBUG_LEVEL_ # # level ) { \
2011-02-10 17:26:02 +13:00
hpi_debug_message ( phm , HPI_DEBUG_FLAG_ # # level \
2011-02-10 17:25:56 +13:00
FILE_LINE __stringify ( level ) ) ; \
} \
2010-04-21 18:17:39 +02:00
} while ( 0 )
2011-02-10 17:25:56 +13:00
# define HPI_DEBUG_RESPONSE(phr) \
do { \
2011-02-10 17:26:02 +13:00
if ( ( ( hpi_debug_level > = HPI_DEBUG_LEVEL_DEBUG ) & & \
( phr - > error ) ) | | \
2011-02-10 17:25:56 +13:00
( hpi_debug_level > = HPI_DEBUG_LEVEL_VERBOSE ) ) \
2011-02-10 17:26:02 +13:00
printk ( KERN_DEBUG " HPI_RES%d,%d,%d \n " , \
2011-02-10 17:25:56 +13:00
phr - > version , phr - > error , phr - > specific_error ) ; \
2010-04-21 18:17:39 +02:00
} while ( 0 )
# ifndef compile_time_assert
# define compile_time_assert(cond, msg) \
typedef char msg [ ( cond ) ? 1 : - 1 ]
# endif
2011-02-10 17:25:56 +13:00
# endif /* _HPIDEBUG_H_ */