1e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#ifndef B43_DEBUGFS_H_ 2e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#define B43_DEBUGFS_H_ 3e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 4e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstruct b43_wldev; 5e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstruct b43_txstatus; 6e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 7e4d6b7951812d98417feb10784e400e253caf633Michael Bueschenum b43_dyndbg { /* Dynamic debugging features */ 8e4d6b7951812d98417feb10784e400e253caf633Michael Buesch B43_DBG_XMITPOWER, 9e4d6b7951812d98417feb10784e400e253caf633Michael Buesch B43_DBG_DMAOVERFLOW, 10e4d6b7951812d98417feb10784e400e253caf633Michael Buesch B43_DBG_DMAVERBOSE, 11e4d6b7951812d98417feb10784e400e253caf633Michael Buesch B43_DBG_PWORK_FAST, 12e4d6b7951812d98417feb10784e400e253caf633Michael Buesch B43_DBG_PWORK_STOP, 13f5eda47f45e90dfa38e25d569b9ac84ba94f8301Michael Buesch B43_DBG_LO, 14923fd7036ff04381b265037469c79a2e7d0d6b67Michael Buesch B43_DBG_FIRMWARE, 159cf7f247bd0cd21e475c71a4e018bb612ef02aabMichael Buesch B43_DBG_KEYS, 16990b86f4f9c54f83085d4136498ac44719b17654Michael Buesch B43_DBG_VERBOSESTATS, 17e4d6b7951812d98417feb10784e400e253caf633Michael Buesch __B43_NR_DYNDBG, 18e4d6b7951812d98417feb10784e400e253caf633Michael Buesch}; 19e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 20e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#ifdef CONFIG_B43_DEBUG 21e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 22e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstruct dentry; 23e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 24e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#define B43_NR_LOGGED_TXSTATUS 100 25e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 26e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstruct b43_txstatus_log { 2736dbd9548e92268127b0c31b0e121e63e9207108Michael Buesch /* This structure is protected by wl->mutex */ 2836dbd9548e92268127b0c31b0e121e63e9207108Michael Buesch 29e4d6b7951812d98417feb10784e400e253caf633Michael Buesch struct b43_txstatus *log; 30e4d6b7951812d98417feb10784e400e253caf633Michael Buesch int end; 31e4d6b7951812d98417feb10784e400e253caf633Michael Buesch}; 32e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 33e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstruct b43_dfs_file { 34e4d6b7951812d98417feb10784e400e253caf633Michael Buesch struct dentry *dentry; 35e4d6b7951812d98417feb10784e400e253caf633Michael Buesch char *buffer; 36e4d6b7951812d98417feb10784e400e253caf633Michael Buesch size_t data_len; 37e4d6b7951812d98417feb10784e400e253caf633Michael Buesch}; 38e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 39e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstruct b43_dfsentry { 40e4d6b7951812d98417feb10784e400e253caf633Michael Buesch struct b43_wldev *dev; 41e4d6b7951812d98417feb10784e400e253caf633Michael Buesch struct dentry *subdir; 42e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 436bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch struct b43_dfs_file file_shm16read; 446bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch struct b43_dfs_file file_shm16write; 456bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch struct b43_dfs_file file_shm32read; 466bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch struct b43_dfs_file file_shm32write; 478bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch struct b43_dfs_file file_mmio16read; 488bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch struct b43_dfs_file file_mmio16write; 498bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch struct b43_dfs_file file_mmio32read; 508bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch struct b43_dfs_file file_mmio32write; 51e4d6b7951812d98417feb10784e400e253caf633Michael Buesch struct b43_dfs_file file_txstat; 52e4d6b7951812d98417feb10784e400e253caf633Michael Buesch struct b43_dfs_file file_txpower_g; 53e4d6b7951812d98417feb10784e400e253caf633Michael Buesch struct b43_dfs_file file_restart; 54e4d6b7951812d98417feb10784e400e253caf633Michael Buesch struct b43_dfs_file file_loctls; 55e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 56e4d6b7951812d98417feb10784e400e253caf633Michael Buesch struct b43_txstatus_log txstatlog; 57e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 588bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch /* The cached address for the next mmio16read file read */ 598bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch u16 mmio16read_next; 608bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch /* The cached address for the next mmio32read file read */ 618bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch u16 mmio32read_next; 628bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch 636bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch /* The cached address for the next shm16read file read */ 646bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch u32 shm16read_routing_next; 656bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch u32 shm16read_addr_next; 666bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch /* The cached address for the next shm32read file read */ 676bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch u32 shm32read_routing_next; 686bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch u32 shm32read_addr_next; 696bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch 70e4d6b7951812d98417feb10784e400e253caf633Michael Buesch /* Enabled/Disabled list for the dynamic debugging features. */ 71e4d6b7951812d98417feb10784e400e253caf633Michael Buesch u32 dyn_debug[__B43_NR_DYNDBG]; 72e4d6b7951812d98417feb10784e400e253caf633Michael Buesch /* Dentries for the dynamic debugging entries. */ 73e4d6b7951812d98417feb10784e400e253caf633Michael Buesch struct dentry *dyn_debug_dentries[__B43_NR_DYNDBG]; 74e4d6b7951812d98417feb10784e400e253caf633Michael Buesch}; 75e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 76060210f938d8aa0b9d795588a2274cd67ba9d6a4Michael Bueschbool b43_debug(struct b43_wldev *dev, enum b43_dyndbg feature); 77e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 78e4d6b7951812d98417feb10784e400e253caf633Michael Bueschvoid b43_debugfs_init(void); 79e4d6b7951812d98417feb10784e400e253caf633Michael Bueschvoid b43_debugfs_exit(void); 80e4d6b7951812d98417feb10784e400e253caf633Michael Bueschvoid b43_debugfs_add_device(struct b43_wldev *dev); 81e4d6b7951812d98417feb10784e400e253caf633Michael Bueschvoid b43_debugfs_remove_device(struct b43_wldev *dev); 82e4d6b7951812d98417feb10784e400e253caf633Michael Bueschvoid b43_debugfs_log_txstat(struct b43_wldev *dev, 83e4d6b7951812d98417feb10784e400e253caf633Michael Buesch const struct b43_txstatus *status); 84e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 85e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#else /* CONFIG_B43_DEBUG */ 86e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 87060210f938d8aa0b9d795588a2274cd67ba9d6a4Michael Bueschstatic inline bool b43_debug(struct b43_wldev *dev, enum b43_dyndbg feature) 88e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{ 89e4d6b7951812d98417feb10784e400e253caf633Michael Buesch return 0; 90e4d6b7951812d98417feb10784e400e253caf633Michael Buesch} 91e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 92e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline void b43_debugfs_init(void) 93e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{ 94e4d6b7951812d98417feb10784e400e253caf633Michael Buesch} 95e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline void b43_debugfs_exit(void) 96e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{ 97e4d6b7951812d98417feb10784e400e253caf633Michael Buesch} 98e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline void b43_debugfs_add_device(struct b43_wldev *dev) 99e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{ 100e4d6b7951812d98417feb10784e400e253caf633Michael Buesch} 101e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline void b43_debugfs_remove_device(struct b43_wldev *dev) 102e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{ 103e4d6b7951812d98417feb10784e400e253caf633Michael Buesch} 104e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline void b43_debugfs_log_txstat(struct b43_wldev *dev, 105e4d6b7951812d98417feb10784e400e253caf633Michael Buesch const struct b43_txstatus *status) 106e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{ 107e4d6b7951812d98417feb10784e400e253caf633Michael Buesch} 108e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 109e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#endif /* CONFIG_B43_DEBUG */ 110e4d6b7951812d98417feb10784e400e253caf633Michael Buesch 111e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#endif /* B43_DEBUGFS_H_ */ 112