debug.h revision af08687b4e6d44dcdb04b519e718eb58ecb99050
10c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger/****************************************************************************** 20c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 30c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * Copyright(c) 2009-2010 Realtek Corporation. 40c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 50c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * Tmis program is free software; you can redistribute it and/or modify it 60c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * under the terms of version 2 of the GNU General Public License as 70c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * published by the Free Software Foundation. 80c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 90c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * Tmis program is distributed in the hope that it will be useful, but WITHOUT 100c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 110c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 120c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * more details. 130c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 140c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * You should have received a copy of the GNU General Public License along with 150c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * tmis program; if not, write to the Free Software Foundation, Inc., 160c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA 170c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 180c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * Tme full GNU General Public License is included in this distribution in the 190c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * file called LICENSE. 200c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 210c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * Contact Information: 220c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * wlanfae <wlanfae@realtek.com> 230c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, 240c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * Hsinchu 300, Taiwan. 250c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 260c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * Larry Finger <Larry.Finger@lwfinger.net> 270c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *****************************************************************************/ 280c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 290c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#ifndef __RTL_DEBUG_H__ 300c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define __RTL_DEBUG_H__ 310c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 320c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger/*-------------------------------------------------------------- 330c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger Debug level 340c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger--------------------------------------------------------------*/ 350c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger/* 360c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *Fatal bug. 370c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *For example, Tx/Rx/IO locked up, 380c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *memory access violation, 390c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *resource allocation failed, 400c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *unexpected HW behavior, HW BUG 410c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *and so on. 420c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger */ 430c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define DBG_EMERG 0 440c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 450c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger/* 460c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *Abnormal, rare, or unexpeted cases. 470c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *For example, Packet/IO Ctl canceled, 480c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *device suprisely unremoved and so on. 490c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger */ 500c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define DBG_WARNING 2 510c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 520c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger/* 530c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *Normal case driver developer should 540c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *open, we can see link status like 550c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *assoc/AddBA/DHCP/adapter start and 560c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *so on basic and useful infromations. 570c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger */ 580c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define DBG_DMESG 3 590c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 600c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger/* 610c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *Normal case with useful information 620c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *about current SW or HW state. 630c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *For example, Tx/Rx descriptor to fill, 640c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *Tx/Rx descriptor completed status, 650c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *SW protocol state change, dynamic 660c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *mechanism state change and so on. 670c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger */ 680c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define DBG_LOUD 4 690c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 700c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger/* 710c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *Normal case with detail execution 720c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *flow or information. 730c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger */ 740c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define DBG_TRACE 5 750c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 760c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger/*-------------------------------------------------------------- 770c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger Define the rt_trace components 780c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger--------------------------------------------------------------*/ 790c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_ERR BIT(0) 800c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_FW BIT(1) 810c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_INIT BIT(2) /*For init/deinit */ 820c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_RECV BIT(3) /*For Rx. */ 830c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_SEND BIT(4) /*For Tx. */ 840c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_MLME BIT(5) /*For MLME. */ 850c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_SCAN BIT(6) /*For Scan. */ 860c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_INTR BIT(7) /*For interrupt Related. */ 870c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_LED BIT(8) /*For LED. */ 880c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_SEC BIT(9) /*For sec. */ 890c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_BEACON BIT(10) /*For beacon. */ 900c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_RATE BIT(11) /*For rate. */ 910c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_RXDESC BIT(12) /*For rx desc. */ 920c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_DIG BIT(13) /*For DIG */ 930c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_TXAGC BIT(14) /*For Tx power */ 940c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_HIPWR BIT(15) /*For High Power Mechanism */ 950c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_POWER BIT(16) /*For lps/ips/aspm. */ 960c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_POWER_TRACKING BIT(17) /*For TX POWER TRACKING */ 970c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_BB_POWERSAVING BIT(18) 980c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_SWAS BIT(19) /*For SW Antenna Switch */ 990c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_RF BIT(20) /*For RF. */ 1000c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_TURBO BIT(21) /*For EDCA TURBO. */ 1010c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_RATR BIT(22) 1020c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_CMD BIT(23) 1030c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_EFUSE BIT(24) 1040c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_QOS BIT(25) 1050c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_MAC80211 BIT(26) 1060c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_REGD BIT(27) 1070c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define COMP_CHAN BIT(28) 10862e63975f47fcc0ebcaca04669098fe3ca7b20a2Larry Finger#define COMP_USB BIT(29) 1090c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 1100c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger/*-------------------------------------------------------------- 1110c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger Define the rt_print components 1120c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger--------------------------------------------------------------*/ 1130c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger/* Define EEPROM and EFUSE check module bit*/ 1140c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define EEPROM_W BIT(0) 1150c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define EFUSE_PG BIT(1) 1160c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define EFUSE_READ_ALL BIT(2) 1170c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 1180c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger/* Define init check for module bit*/ 1190c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define INIT_EEPROM BIT(0) 1200c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define INIT_TxPower BIT(1) 1210c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define INIT_IQK BIT(2) 1220c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define INIT_RF BIT(3) 1230c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 1240c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger/* Define PHY-BB/RF/MAC check module bit */ 1250c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define PHY_BBR BIT(0) 1260c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define PHY_BBW BIT(1) 1270c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define PHY_RFR BIT(2) 1280c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define PHY_RFW BIT(3) 1290c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define PHY_MACR BIT(4) 1300c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define PHY_MACW BIT(5) 1310c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define PHY_ALLR BIT(6) 1320c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define PHY_ALLW BIT(7) 1330c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define PHY_TXPWR BIT(8) 1340c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define PHY_PWRDIFF BIT(9) 1350c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 1360c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerenum dbgp_flag_e { 1370c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FQOS = 0, 1380c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FTX = 1, 1390c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FRX = 2, 1400c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FSEC = 3, 1410c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FMGNT = 4, 1420c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FMLME = 5, 1430c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FRESOURCE = 6, 1440c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FBEACON = 7, 1450c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FISR = 8, 1460c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FPHY = 9, 1470c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FMP = 10, 1480c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FEEPROM = 11, 1490c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FPWR = 12, 1500c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FDM = 13, 1510c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FDBGCtrl = 14, 1520c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FC2H = 15, 1530c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FBT = 16, 1540c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FINIT = 17, 1550c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger FIOCTL = 18, 1560c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger DBGP_TYPE_MAX 1570c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger}; 1580c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 159884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches#define RT_ASSERT(_exp, fmt) \ 160884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perchesdo { \ 161884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches if (!(_exp)) { \ 162884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches printk(KERN_DEBUG "%s:%s(): ", \ 163884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches KBUILD_MODNAME, __func__); \ 164884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches printk fmt; \ 165884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches } \ 166884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches} while (0) 167884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches 168884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches#define RT_TRACE(rtlpriv, comp, level, fmt) \ 169884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perchesdo { \ 170884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches if (unlikely(((comp) & rtlpriv->dbg.global_debugcomponents) && \ 171884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches ((level) <= rtlpriv->dbg.global_debuglevel))) { \ 172884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches printk(KERN_DEBUG "%s:%s():<%lx-%x> ", \ 173884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches KBUILD_MODNAME, __func__, \ 174884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches in_interrupt(), in_atomic()); \ 175884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches printk fmt; \ 176884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches } \ 177884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches} while (0) 178884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches 179884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches#define RTPRINT(rtlpriv, dbgtype, dbgflag, printstr) \ 180884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perchesdo { \ 181884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches if (unlikely(rtlpriv->dbg.dbgp_type[dbgtype] & dbgflag)) { \ 182884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches printk(KERN_DEBUG "%s: ", KBUILD_MODNAME); \ 183884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches printk printstr; \ 184884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches } \ 185884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches} while (0) 186884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches 187884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches#define RT_PRINT_DATA(rtlpriv, _comp, _level, _titlestring, _hexdata, \ 188884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches _hexdatalen) \ 189884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perchesdo { \ 190884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches if (unlikely(((_comp) & rtlpriv->dbg.global_debugcomponents) && \ 191884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches (_level <= rtlpriv->dbg.global_debuglevel))) { \ 192af08687b4e6d44dcdb04b519e718eb58ecb99050Joe Perches printk(KERN_DEBUG "%s: In process \"%s\" (pid %i): %s\n", \ 193af08687b4e6d44dcdb04b519e718eb58ecb99050Joe Perches KBUILD_MODNAME, current->comm, current->pid, \ 194af08687b4e6d44dcdb04b519e718eb58ecb99050Joe Perches _titlestring); \ 195884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches print_hex_dump_bytes("", DUMP_PREFIX_NONE, \ 196884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches _hexdata, _hexdatalen); \ 197884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches } \ 198884dd24499df823f5c167223c7ae93bd764e2e4fJoe Perches} while (0) 1990c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 2000c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingervoid rtl_dbgp_flag_init(struct ieee80211_hw *hw); 2010c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#endif 202