linux/drivers/staging/rtl8723bs/hal/odm_debug.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/******************************************************************************
   3 *
   4 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
   5 *
   6 ******************************************************************************/
   7
   8#ifndef __ODM_DBG_H__
   9#define __ODM_DBG_H__
  10
  11
  12/*  */
  13/* Define the debug levels */
  14/*  */
  15/* 1.   DBG_TRACE and DBG_LOUD are used for normal cases. */
  16/* So that, they can help SW engineer to develope or trace states changed */
  17/* and also help HW enginner to trace every operation to and from HW, */
  18/* e.g IO, Tx, Rx. */
  19/*  */
  20/* 2.   DBG_WARNNING and DBG_SERIOUS are used for unusual or error cases, */
  21/* which help us to debug SW or HW. */
  22/*  */
  23/*  */
  24/*  */
  25/* Never used in a call to ODM_RT_TRACE()! */
  26/*  */
  27#define ODM_DBG_OFF                                     1
  28
  29/*  */
  30/* Fatal bug. */
  31/* For example, Tx/Rx/IO locked up, OS hangs, memory access violation, */
  32/* resource allocation failed, unexpected HW behavior, HW BUG and so on. */
  33/*  */
  34#define ODM_DBG_SERIOUS                         2
  35
  36/*  */
  37/* Abnormal, rare, or unexpeted cases. */
  38/* For example, */
  39/* IRP/Packet/OID canceled, */
  40/* device suprisely unremoved and so on. */
  41/*  */
  42#define ODM_DBG_WARNING                         3
  43
  44/*  */
  45/* Normal case with useful information about current SW or HW state. */
  46/* For example, Tx/Rx descriptor to fill, Tx/Rx descriptor completed status, */
  47/* SW protocol state change, dynamic mechanism state change and so on. */
  48/*  */
  49#define ODM_DBG_LOUD                            4
  50
  51/*  */
  52/* Normal case with detail execution flow or information. */
  53/*  */
  54#define ODM_DBG_TRACE                           5
  55
  56/*  */
  57/*  Define the tracing components */
  58/*  */
  59/*  */
  60/* BB Functions */
  61#define ODM_COMP_DIG                            BIT0
  62#define ODM_COMP_RA_MASK                        BIT1
  63#define ODM_COMP_DYNAMIC_TXPWR          BIT2
  64#define ODM_COMP_FA_CNT                         BIT3
  65#define ODM_COMP_RSSI_MONITOR           BIT4
  66#define ODM_COMP_CCK_PD                         BIT5
  67#define ODM_COMP_ANT_DIV                        BIT6
  68#define ODM_COMP_PWR_SAVE                       BIT7
  69#define ODM_COMP_PWR_TRAIN                      BIT8
  70#define ODM_COMP_RATE_ADAPTIVE          BIT9
  71#define ODM_COMP_PATH_DIV                       BIT10
  72#define ODM_COMP_PSD                            BIT11
  73#define ODM_COMP_DYNAMIC_PRICCA         BIT12
  74#define ODM_COMP_RXHP                           BIT13
  75#define ODM_COMP_MP                                     BIT14
  76#define ODM_COMP_CFO_TRACKING           BIT15
  77/* MAC Functions */
  78#define ODM_COMP_EDCA_TURBO                     BIT16
  79#define ODM_COMP_EARLY_MODE                     BIT17
  80/* RF Functions */
  81#define ODM_COMP_TX_PWR_TRACK           BIT24
  82#define ODM_COMP_RX_GAIN_TRACK          BIT25
  83#define ODM_COMP_CALIBRATION            BIT26
  84/* Common Functions */
  85#define ODM_COMP_COMMON                         BIT30
  86#define ODM_COMP_INIT                           BIT31
  87
  88/*------------------------Export Marco Definition---------------------------*/
  89        #define DbgPrint printk
  90        #define RT_PRINTK(fmt, args...)\
  91                DbgPrint("%s(): " fmt, __func__, ## args)
  92        #define RT_DISP(dbgtype, dbgflag, printstr)
  93
  94#ifndef ASSERT
  95        #define ASSERT(expr)
  96#endif
  97
  98#if DBG
  99#define ODM_RT_TRACE(pDM_Odm, comp, level, fmt)\
 100        do {\
 101                if (\
 102                        (comp & pDM_Odm->DebugComponents) &&\
 103                        (level <= pDM_Odm->DebugLevel ||\
 104                         level == ODM_DBG_SERIOUS)\
 105                ) {\
 106                        RT_PRINTK fmt;\
 107                } \
 108        } while (0)
 109
 110#define ODM_RT_TRACE_F(pDM_Odm, comp, level, fmt)\
 111        do {\
 112                if (\
 113                        (comp & pDM_Odm->DebugComponents) &&\
 114                        (level <= pDM_Odm->DebugLevel)\
 115                ) {\
 116                        RT_PRINTK fmt;\
 117                } \
 118        } while (0)
 119
 120#define ODM_RT_ASSERT(pDM_Odm, expr, fmt)\
 121        do {\
 122                if (!expr) {\
 123                        DbgPrint("Assertion failed! %s at ......\n", #expr);\
 124                        DbgPrint(\
 125                                "      ......%s,%s, line =%d\n",\
 126                                __FILE__,\
 127                                __func__,\
 128                                __LINE__\
 129                        );\
 130                        RT_PRINTK fmt;\
 131                        ASSERT(false);\
 132                } \
 133        } while (0)
 134#define ODM_dbg_enter() { DbgPrint("==> %s\n", __func__); }
 135#define ODM_dbg_exit() { DbgPrint("<== %s\n", __func__); }
 136#define ODM_dbg_trace(str) { DbgPrint("%s:%s\n", __func__, str); }
 137
 138#define ODM_PRINT_ADDR(pDM_Odm, comp, level, title_str, ptr)\
 139        do {\
 140                if (\
 141                        (comp & pDM_Odm->DebugComponents) &&\
 142                        (level <= pDM_Odm->DebugLevel)\
 143                ) {\
 144                        int __i;\
 145                        u8 *__ptr = (u8 *)ptr;\
 146                        DbgPrint("[ODM] ");\
 147                        DbgPrint(title_str);\
 148                        DbgPrint(" ");\
 149                        for (__i = 0; __i < 6; __i++)\
 150                                DbgPrint("%02X%s", __ptr[__i], (__i == 5) ? "" : "-");\
 151                        DbgPrint("\n");\
 152                } \
 153        } while (0)
 154#else
 155#define ODM_RT_TRACE(pDM_Odm, comp, level, fmt)         no_printk fmt
 156#define ODM_RT_TRACE_F(pDM_Odm, comp, level, fmt)       no_printk fmt
 157#define ODM_RT_ASSERT(pDM_Odm, expr, fmt)               no_printk fmt
 158#define ODM_dbg_enter()                                 do {} while (0)
 159#define ODM_dbg_exit()                                  do {} while (0)
 160#define ODM_dbg_trace(str)                              no_printk("%s", str)
 161#define ODM_PRINT_ADDR(pDM_Odm, comp, level, title_str, ptr) \
 162        no_printk("%s %p", title_str, ptr)
 163#endif
 164
 165void ODM_InitDebugSetting(PDM_ODM_T pDM_Odm);
 166
 167#endif  /*  __ODM_DBG_H__ */
 168