1 #ifndef B43_DEBUGFS_H_ 2 #define B43_DEBUGFS_H_ 3 4 struct b43_wldev; 5 struct b43_txstatus; 6 7 enum b43_dyndbg { /* Dynamic debugging features */ 8 B43_DBG_XMITPOWER, 9 B43_DBG_DMAOVERFLOW, 10 B43_DBG_DMAVERBOSE, 11 B43_DBG_PWORK_FAST, 12 B43_DBG_PWORK_STOP, 13 B43_DBG_LO, 14 B43_DBG_FIRMWARE, 15 B43_DBG_KEYS, 16 B43_DBG_VERBOSESTATS, 17 __B43_NR_DYNDBG, 18 }; 19 20 #ifdef CONFIG_B43_DEBUG 21 22 struct dentry; 23 24 #define B43_NR_LOGGED_TXSTATUS 100 25 26 struct b43_txstatus_log { 27 /* This structure is protected by wl->mutex */ 28 29 struct b43_txstatus *log; 30 int end; 31 }; 32 33 struct b43_dfs_file { 34 struct dentry *dentry; 35 char *buffer; 36 size_t data_len; 37 }; 38 39 struct b43_dfsentry { 40 struct b43_wldev *dev; 41 struct dentry *subdir; 42 43 struct b43_dfs_file file_shm16read; 44 struct b43_dfs_file file_shm16write; 45 struct b43_dfs_file file_shm32read; 46 struct b43_dfs_file file_shm32write; 47 struct b43_dfs_file file_mmio16read; 48 struct b43_dfs_file file_mmio16write; 49 struct b43_dfs_file file_mmio32read; 50 struct b43_dfs_file file_mmio32write; 51 struct b43_dfs_file file_txstat; 52 struct b43_dfs_file file_txpower_g; 53 struct b43_dfs_file file_restart; 54 struct b43_dfs_file file_loctls; 55 56 struct b43_txstatus_log txstatlog; 57 58 /* The cached address for the next mmio16read file read */ 59 u16 mmio16read_next; 60 /* The cached address for the next mmio32read file read */ 61 u16 mmio32read_next; 62 63 /* The cached address for the next shm16read file read */ 64 u32 shm16read_routing_next; 65 u32 shm16read_addr_next; 66 /* The cached address for the next shm32read file read */ 67 u32 shm32read_routing_next; 68 u32 shm32read_addr_next; 69 70 /* Enabled/Disabled list for the dynamic debugging features. */ 71 bool dyn_debug[__B43_NR_DYNDBG]; 72 /* Dentries for the dynamic debugging entries. */ 73 struct dentry *dyn_debug_dentries[__B43_NR_DYNDBG]; 74 }; 75 76 bool b43_debug(struct b43_wldev *dev, enum b43_dyndbg feature); 77 78 void b43_debugfs_init(void); 79 void b43_debugfs_exit(void); 80 void b43_debugfs_add_device(struct b43_wldev *dev); 81 void b43_debugfs_remove_device(struct b43_wldev *dev); 82 void b43_debugfs_log_txstat(struct b43_wldev *dev, 83 const struct b43_txstatus *status); 84 85 #else /* CONFIG_B43_DEBUG */ 86 87 static inline bool b43_debug(struct b43_wldev *dev, enum b43_dyndbg feature) 88 { 89 return false; 90 } 91 92 static inline void b43_debugfs_init(void) 93 { 94 } 95 static inline void b43_debugfs_exit(void) 96 { 97 } 98 static inline void b43_debugfs_add_device(struct b43_wldev *dev) 99 { 100 } 101 static inline void b43_debugfs_remove_device(struct b43_wldev *dev) 102 { 103 } 104 static inline void b43_debugfs_log_txstat(struct b43_wldev *dev, 105 const struct b43_txstatus *status) 106 { 107 } 108 109 #endif /* CONFIG_B43_DEBUG */ 110 111 #endif /* B43_DEBUGFS_H_ */ 112