Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  * Intel Wireless Multicomm 3200 WiFi driver
  3  *
  4  * Copyright (C) 2009 Intel Corporation <ilw@linux.intel.com>
  5  * Samuel Ortiz <samuel.ortiz@intel.com>
  6  * Zhu Yi <yi.zhu@intel.com>
  7  *
  8  * This program is free software; you can redistribute it and/or
  9  * modify it under the terms of the GNU General Public License version
 10  * 2 as published by the Free Software Foundation.
 11  *
 12  * This program is distributed in the hope that it will be useful,
 13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 15  * GNU General Public License for more details.
 16  *
 17  * You should have received a copy of the GNU General Public License
 18  * along with this program; if not, write to the Free Software
 19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 20  * 02110-1301, USA.
 21  *
 22  */
 23 
 24 #ifndef __IWM_DEBUG_H__
 25 #define __IWM_DEBUG_H__
 26 
 27 #define IWM_ERR(p, f, a...) dev_err(iwm_to_dev(p), f, ## a)
 28 #define IWM_WARN(p, f, a...) dev_warn(iwm_to_dev(p), f, ## a)
 29 #define IWM_INFO(p, f, a...) dev_info(iwm_to_dev(p), f, ## a)
 30 #define IWM_CRIT(p, f, a...) dev_crit(iwm_to_dev(p), f, ## a)
 31 
 32 #ifdef CONFIG_IWM_DEBUG
 33 
 34 #define IWM_DEBUG_MODULE(i, level, module, f, a...)                          \
 35 do {                                                                         \
 36         if (unlikely(i->dbg.dbg_module[IWM_DM_##module] >= (IWM_DL_##level)))\
 37                 dev_printk(KERN_INFO, (iwm_to_dev(i)),               \
 38                            "%s " f, __func__ , ## a);                        \
 39 } while (0)
 40 
 41 #define IWM_HEXDUMP(i, level, module, pref, buf, len)                        \
 42 do {                                                                         \
 43         if (unlikely(i->dbg.dbg_module[IWM_DM_##module] >= (IWM_DL_##level)))\
 44                 print_hex_dump(KERN_INFO, pref, DUMP_PREFIX_OFFSET,          \
 45                                16, 1, buf, len, 1);                          \
 46 } while (0)
 47 
 48 #else
 49 
 50 #define IWM_DEBUG_MODULE(i, level, module, f, a...)
 51 #define IWM_HEXDUMP(i, level, module, pref, buf, len)
 52 
 53 #endif /* CONFIG_IWM_DEBUG */
 54 
 55 /* Debug modules */
 56 enum iwm_debug_module_id {
 57         IWM_DM_BOOT = 0,
 58         IWM_DM_FW,
 59         IWM_DM_SDIO,
 60         IWM_DM_NTF,
 61         IWM_DM_RX,
 62         IWM_DM_TX,
 63         IWM_DM_MLME,
 64         IWM_DM_CMD,
 65         IWM_DM_WEXT,
 66         __IWM_DM_NR,
 67 };
 68 #define IWM_DM_DEFAULT 0
 69 
 70 #define IWM_DBG_BOOT(i, l, f, a...) IWM_DEBUG_MODULE(i, l, BOOT, f, ## a)
 71 #define IWM_DBG_FW(i, l, f, a...)   IWM_DEBUG_MODULE(i, l, FW, f, ## a)
 72 #define IWM_DBG_SDIO(i, l, f, a...) IWM_DEBUG_MODULE(i, l, SDIO, f, ## a)
 73 #define IWM_DBG_NTF(i, l, f, a...)  IWM_DEBUG_MODULE(i, l, NTF, f, ## a)
 74 #define IWM_DBG_RX(i, l, f, a...)   IWM_DEBUG_MODULE(i, l, RX, f, ## a)
 75 #define IWM_DBG_TX(i, l, f, a...)   IWM_DEBUG_MODULE(i, l, TX, f, ## a)
 76 #define IWM_DBG_MLME(i, l, f, a...) IWM_DEBUG_MODULE(i, l, MLME, f, ## a)
 77 #define IWM_DBG_CMD(i, l, f, a...)  IWM_DEBUG_MODULE(i, l, CMD, f, ## a)
 78 #define IWM_DBG_WEXT(i, l, f, a...) IWM_DEBUG_MODULE(i, l, WEXT, f, ## a)
 79 
 80 /* Debug levels */
 81 enum iwm_debug_level {
 82         IWM_DL_NONE = 0,
 83         IWM_DL_ERR,
 84         IWM_DL_WARN,
 85         IWM_DL_INFO,
 86         IWM_DL_DBG,
 87 };
 88 #define IWM_DL_DEFAULT IWM_DL_ERR
 89 
 90 struct iwm_debugfs {
 91         struct iwm_priv *iwm;
 92         struct dentry *rootdir;
 93         struct dentry *devdir;
 94         struct dentry *dbgdir;
 95         struct dentry *txdir;
 96         struct dentry *rxdir;
 97         struct dentry *busdir;
 98 
 99         u32 dbg_level;
100         struct dentry *dbg_level_dentry;
101 
102         unsigned long dbg_modules;
103         struct dentry *dbg_modules_dentry;
104 
105         u8 dbg_module[__IWM_DM_NR];
106         struct dentry *dbg_module_dentries[__IWM_DM_NR];
107 
108         struct dentry *txq_dentry;
109         struct dentry *tx_credit_dentry;
110         struct dentry *rx_ticket_dentry;
111 };
112 
113 #ifdef CONFIG_IWM_DEBUG
114 int iwm_debugfs_init(struct iwm_priv *iwm);
115 void iwm_debugfs_exit(struct iwm_priv *iwm);
116 #else
117 static inline int iwm_debugfs_init(struct iwm_priv *iwm)
118 {
119         return 0;
120 }
121 static inline void iwm_debugfs_exit(struct iwm_priv *iwm) {}
122 #endif
123 
124 #endif
125 
  This page was automatically generated by the LXR engine.