300 lines
7.4 KiB
C
300 lines
7.4 KiB
C
/******************************************************************************
|
|
* Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
|
|
*
|
|
* Based on the r8180 driver, which is:
|
|
* Copyright 2004-2005 Andrea Merello <andreamrl@tiscali.it>, et al.
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of version 2 of the GNU General Public License as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
* more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along with
|
|
* this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
|
*
|
|
* The full GNU General Public License is included in this distribution in the
|
|
* file called LICENSE.
|
|
*
|
|
* Contact Information:
|
|
* wlanfae <wlanfae@realtek.com>
|
|
******************************************************************************/
|
|
#ifndef _RTL_DEBUG_H
|
|
#define _RTL_DEBUG_H
|
|
#include <linux/kernel.h>
|
|
#include <linux/module.h>
|
|
#include <linux/version.h>
|
|
#include <linux/debugfs.h>
|
|
|
|
struct r8192_priv;
|
|
struct _tx_desc_8192se;
|
|
struct _TX_DESC_8192CE;
|
|
struct net_device;
|
|
|
|
#define DBG_LOUD 4
|
|
|
|
#define RT_ASSERT(_Exp, Fmt) \
|
|
if (!(_Exp)) { \
|
|
printk("Rtl819x: "); \
|
|
printk Fmt; \
|
|
}
|
|
|
|
enum dbgp_flag {
|
|
FQoS = 0,
|
|
FTX = 1,
|
|
FRX = 2,
|
|
FSEC = 3,
|
|
FMGNT = 4,
|
|
FMLME = 5,
|
|
FRESOURCE = 6,
|
|
FBEACON = 7,
|
|
FISR = 8,
|
|
FPHY = 9,
|
|
FMP = 10,
|
|
FEEPROM = 11,
|
|
FPWR = 12,
|
|
FDM = 13,
|
|
FDBGCtrl = 14,
|
|
FC2H = 15,
|
|
FBT = 16,
|
|
FINIT = 17,
|
|
FIOCTL = 18,
|
|
DBGP_TYPE_MAX
|
|
};
|
|
|
|
#define QoS_INIT BIT0
|
|
#define QoS_VISTA BIT1
|
|
|
|
#define TX_DESC BIT0
|
|
#define TX_DESC_TID BIT1
|
|
|
|
#define RX_DATA BIT0
|
|
#define RX_PHY_STS BIT1
|
|
#define RX_PHY_SS BIT2
|
|
#define RX_PHY_SQ BIT3
|
|
#define RX_PHY_ASTS BIT4
|
|
#define RX_ERR_LEN BIT5
|
|
#define RX_DEFRAG BIT6
|
|
#define RX_ERR_RATE BIT7
|
|
|
|
|
|
|
|
#define MEDIA_STS BIT0
|
|
#define LINK_STS BIT1
|
|
|
|
#define OS_CHK BIT0
|
|
|
|
#define BCN_SHOW BIT0
|
|
#define BCN_PEER BIT1
|
|
|
|
#define ISR_CHK BIT0
|
|
|
|
#define PHY_BBR BIT0
|
|
#define PHY_BBW BIT1
|
|
#define PHY_RFR BIT2
|
|
#define PHY_RFW BIT3
|
|
#define PHY_MACR BIT4
|
|
#define PHY_MACW BIT5
|
|
#define PHY_ALLR BIT6
|
|
#define PHY_ALLW BIT7
|
|
#define PHY_TXPWR BIT8
|
|
#define PHY_PWRDIFF BIT9
|
|
|
|
#define MP_RX BIT0
|
|
#define MP_SWICH_CH BIT1
|
|
|
|
#define EEPROM_W BIT0
|
|
#define EFUSE_PG BIT1
|
|
#define EFUSE_READ_ALL BIT2
|
|
|
|
#define LPS BIT0
|
|
#define IPS BIT1
|
|
#define PWRSW BIT2
|
|
#define PWRHW BIT3
|
|
#define PWRHAL BIT4
|
|
|
|
#define WA_IOT BIT0
|
|
#define DM_PWDB BIT1
|
|
#define DM_Monitor BIT2
|
|
#define DM_DIG BIT3
|
|
#define DM_EDCA_Turbo BIT4
|
|
|
|
#define DbgCtrl_Trace BIT0
|
|
#define DbgCtrl_InbandNoise BIT1
|
|
|
|
#define BT_TRACE BIT0
|
|
#define BT_RFPoll BIT1
|
|
|
|
#define C2H_Summary BIT0
|
|
#define C2H_PacketData BIT1
|
|
#define C2H_ContentData BIT2
|
|
#define BT_TRACE BIT0
|
|
#define BT_RFPoll BIT1
|
|
|
|
#define INIT_EEPROM BIT0
|
|
#define INIT_TxPower BIT1
|
|
#define INIT_IQK BIT2
|
|
#define INIT_RF BIT3
|
|
|
|
#define IOCTL_TRACE BIT0
|
|
#define IOCTL_BT_EVENT BIT1
|
|
#define IOCTL_BT_EVENT_DETAIL BIT2
|
|
#define IOCTL_BT_TX_ACLDATA BIT3
|
|
#define IOCTL_BT_TX_ACLDATA_DETAIL BIT4
|
|
#define IOCTL_BT_RX_ACLDATA BIT5
|
|
#define IOCTL_BT_RX_ACLDATA_DETAIL BIT6
|
|
#define IOCTL_BT_HCICMD BIT7
|
|
#define IOCTL_BT_HCICMD_DETAIL BIT8
|
|
#define IOCTL_IRP BIT9
|
|
#define IOCTL_IRP_DETAIL BIT10
|
|
#define IOCTL_CALLBACK_FUN BIT11
|
|
#define IOCTL_STATE BIT12
|
|
#define IOCTL_BT_TP BIT13
|
|
#define IOCTL_BT_LOGO BIT14
|
|
|
|
/* 2007/07/13 MH ------For DeBuG Print modeue------*/
|
|
/*------------------------------Define structure----------------------------*/
|
|
|
|
|
|
/*------------------------Export Marco Definition---------------------------*/
|
|
#define DEBUG_PRINT 1
|
|
|
|
#if (DEBUG_PRINT == 1)
|
|
#define RTPRINT(dbgtype, dbgflag, printstr) \
|
|
{ \
|
|
if (DBGP_Type[dbgtype] & dbgflag) { \
|
|
printk printstr; \
|
|
} \
|
|
}
|
|
|
|
#define RTPRINT_ADDR(dbgtype, dbgflag, printstr, _Ptr) \
|
|
{ \
|
|
if (DBGP_Type[dbgtype] & dbgflag) { \
|
|
int __i; \
|
|
u8 *ptr = (u8 *)_Ptr; \
|
|
printk printstr; \
|
|
printk(" "); \
|
|
for (__i = 0; __i < 6; __i++) \
|
|
printk("%02X%s", ptr[__i], \
|
|
(__i == 5) ? "" : "-"); \
|
|
printk("\n"); \
|
|
} \
|
|
}
|
|
|
|
#define RTPRINT_DATA(dbgtype, dbgflag, _TitleString, _HexData, _HexDataLen)\
|
|
{ \
|
|
if (DBGP_Type[dbgtype] & dbgflag) { \
|
|
int __i; \
|
|
u8 *ptr = (u8 *)_HexData; \
|
|
printk(_TitleString); \
|
|
for (__i = 0; __i < (int)_HexDataLen; __i++) { \
|
|
printk("%02X%s", ptr[__i], (((__i + 1) \
|
|
% 4) == 0) ? " " : " "); \
|
|
if (((__i + 1) % 16) == 0) \
|
|
printk("\n"); \
|
|
} \
|
|
printk("\n"); \
|
|
} \
|
|
}
|
|
#else
|
|
#define RTPRINT(dbgtype, dbgflag, printstr)
|
|
#define RTPRINT_ADDR(dbgtype, dbgflag, printstr, _Ptr)
|
|
#define RTPRINT_DATA(dbgtype, dbgflag, _TitleString, _HexData, _HexDataLen)
|
|
#endif
|
|
|
|
extern u32 DBGP_Type[DBGP_TYPE_MAX];
|
|
|
|
#define RT_PRINT_DATA(_Comp, _Level, _TitleString, _HexData, _HexDataLen) \
|
|
do {\
|
|
if (((_Comp) & rt_global_debug_component) && \
|
|
(_Level <= rt_global_debug_component)) { \
|
|
int __i; \
|
|
u8* ptr = (u8 *)_HexData; \
|
|
printk(KERN_INFO "Rtl819x: "); \
|
|
printk(_TitleString); \
|
|
for (__i = 0; __i < (int)_HexDataLen; __i++) { \
|
|
printk("%02X%s", ptr[__i], (((__i + 1) % \
|
|
4) == 0) ? " " : " "); \
|
|
if (((__i + 1) % 16) == 0) \
|
|
printk("\n"); \
|
|
} \
|
|
printk("\n"); \
|
|
} \
|
|
} while (0);
|
|
|
|
#define DMESG(x, a...)
|
|
#define DMESGW(x, a...)
|
|
#define DMESGE(x, a...)
|
|
extern u32 rt_global_debug_component;
|
|
#define RT_TRACE(component, x, args...) \
|
|
do { \
|
|
if (rt_global_debug_component & component) \
|
|
printk(KERN_DEBUG DRV_NAME ":" x "\n" , \
|
|
##args);\
|
|
} while (0);
|
|
|
|
#define assert(expr) \
|
|
if (!(expr)) { \
|
|
printk(KERN_INFO "Assertion failed! %s,%s,%s,line=%d\n", \
|
|
#expr, __FILE__, __func__, __LINE__); \
|
|
}
|
|
#define RT_DEBUG_DATA(level, data, datalen) \
|
|
do { \
|
|
if ((rt_global_debug_component & (level)) == (level)) {\
|
|
int _i; \
|
|
u8 *_pdata = (u8 *)data; \
|
|
printk(KERN_DEBUG DRV_NAME ": %s()\n", __func__); \
|
|
for (_i = 0; _i < (int)(datalen); _i++) { \
|
|
printk(KERN_INFO "%2x ", _pdata[_i]); \
|
|
if ((_i+1) % 16 == 0) \
|
|
printk("\n"); \
|
|
} \
|
|
printk(KERN_INFO "\n"); \
|
|
} \
|
|
} while (0)
|
|
|
|
struct rtl_fs_debug {
|
|
const char *name;
|
|
struct dentry *dir_drv;
|
|
struct dentry *debug_register;
|
|
u32 hw_type;
|
|
u32 hw_offset;
|
|
bool hw_holding;
|
|
};
|
|
|
|
void print_buffer(u32 *buffer, int len);
|
|
void dump_eprom(struct net_device *dev);
|
|
void rtl8192_dump_reg(struct net_device *dev);
|
|
|
|
/* debugfs stuff */
|
|
static inline int rtl_debug_module_init(struct r8192_priv *priv,
|
|
const char *name)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline void rtl_debug_module_remove(struct r8192_priv *priv)
|
|
{
|
|
}
|
|
|
|
static inline int rtl_create_debugfs_root(void)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline void rtl_remove_debugfs_root(void)
|
|
{
|
|
}
|
|
|
|
/* proc stuff */
|
|
void rtl8192_proc_init_one(struct net_device *dev);
|
|
void rtl8192_proc_remove_one(struct net_device *dev);
|
|
void rtl8192_proc_module_init(void);
|
|
void rtl8192_proc_module_remove(void);
|
|
void rtl8192_dbgp_flag_init(struct net_device *dev);
|
|
|
|
#endif
|