162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#ifndef B43_DEBUGFS_H_ 362306a36Sopenharmony_ci#define B43_DEBUGFS_H_ 462306a36Sopenharmony_ci 562306a36Sopenharmony_cistruct b43_wldev; 662306a36Sopenharmony_cistruct b43_txstatus; 762306a36Sopenharmony_ci 862306a36Sopenharmony_cienum b43_dyndbg { /* Dynamic debugging features */ 962306a36Sopenharmony_ci B43_DBG_XMITPOWER, 1062306a36Sopenharmony_ci B43_DBG_DMAOVERFLOW, 1162306a36Sopenharmony_ci B43_DBG_DMAVERBOSE, 1262306a36Sopenharmony_ci B43_DBG_PWORK_FAST, 1362306a36Sopenharmony_ci B43_DBG_PWORK_STOP, 1462306a36Sopenharmony_ci B43_DBG_LO, 1562306a36Sopenharmony_ci B43_DBG_FIRMWARE, 1662306a36Sopenharmony_ci B43_DBG_KEYS, 1762306a36Sopenharmony_ci B43_DBG_VERBOSESTATS, 1862306a36Sopenharmony_ci __B43_NR_DYNDBG, 1962306a36Sopenharmony_ci}; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci#ifdef CONFIG_B43_DEBUG 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_cistruct dentry; 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci#define B43_NR_LOGGED_TXSTATUS 100 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_cistruct b43_txstatus_log { 2862306a36Sopenharmony_ci /* This structure is protected by wl->mutex */ 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci struct b43_txstatus *log; 3162306a36Sopenharmony_ci int end; 3262306a36Sopenharmony_ci}; 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_cistruct b43_dfs_file { 3562306a36Sopenharmony_ci char *buffer; 3662306a36Sopenharmony_ci size_t data_len; 3762306a36Sopenharmony_ci}; 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_cistruct b43_dfsentry { 4062306a36Sopenharmony_ci struct b43_wldev *dev; 4162306a36Sopenharmony_ci struct dentry *subdir; 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci struct b43_dfs_file file_shm16read; 4462306a36Sopenharmony_ci struct b43_dfs_file file_shm16write; 4562306a36Sopenharmony_ci struct b43_dfs_file file_shm32read; 4662306a36Sopenharmony_ci struct b43_dfs_file file_shm32write; 4762306a36Sopenharmony_ci struct b43_dfs_file file_mmio16read; 4862306a36Sopenharmony_ci struct b43_dfs_file file_mmio16write; 4962306a36Sopenharmony_ci struct b43_dfs_file file_mmio32read; 5062306a36Sopenharmony_ci struct b43_dfs_file file_mmio32write; 5162306a36Sopenharmony_ci struct b43_dfs_file file_txstat; 5262306a36Sopenharmony_ci struct b43_dfs_file file_txpower_g; 5362306a36Sopenharmony_ci struct b43_dfs_file file_restart; 5462306a36Sopenharmony_ci struct b43_dfs_file file_loctls; 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci struct b43_txstatus_log txstatlog; 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci /* The cached address for the next mmio16read file read */ 5962306a36Sopenharmony_ci u16 mmio16read_next; 6062306a36Sopenharmony_ci /* The cached address for the next mmio32read file read */ 6162306a36Sopenharmony_ci u16 mmio32read_next; 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci /* The cached address for the next shm16read file read */ 6462306a36Sopenharmony_ci u32 shm16read_routing_next; 6562306a36Sopenharmony_ci u32 shm16read_addr_next; 6662306a36Sopenharmony_ci /* The cached address for the next shm32read file read */ 6762306a36Sopenharmony_ci u32 shm32read_routing_next; 6862306a36Sopenharmony_ci u32 shm32read_addr_next; 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci /* Enabled/Disabled list for the dynamic debugging features. */ 7162306a36Sopenharmony_ci bool dyn_debug[__B43_NR_DYNDBG]; 7262306a36Sopenharmony_ci}; 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_cibool b43_debug(struct b43_wldev *dev, enum b43_dyndbg feature); 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_civoid b43_debugfs_init(void); 7762306a36Sopenharmony_civoid b43_debugfs_exit(void); 7862306a36Sopenharmony_civoid b43_debugfs_add_device(struct b43_wldev *dev); 7962306a36Sopenharmony_civoid b43_debugfs_remove_device(struct b43_wldev *dev); 8062306a36Sopenharmony_civoid b43_debugfs_log_txstat(struct b43_wldev *dev, 8162306a36Sopenharmony_ci const struct b43_txstatus *status); 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci#else /* CONFIG_B43_DEBUG */ 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_cistatic inline bool b43_debug(struct b43_wldev *dev, enum b43_dyndbg feature) 8662306a36Sopenharmony_ci{ 8762306a36Sopenharmony_ci return false; 8862306a36Sopenharmony_ci} 8962306a36Sopenharmony_ci 9062306a36Sopenharmony_cistatic inline void b43_debugfs_init(void) 9162306a36Sopenharmony_ci{ 9262306a36Sopenharmony_ci} 9362306a36Sopenharmony_cistatic inline void b43_debugfs_exit(void) 9462306a36Sopenharmony_ci{ 9562306a36Sopenharmony_ci} 9662306a36Sopenharmony_cistatic inline void b43_debugfs_add_device(struct b43_wldev *dev) 9762306a36Sopenharmony_ci{ 9862306a36Sopenharmony_ci} 9962306a36Sopenharmony_cistatic inline void b43_debugfs_remove_device(struct b43_wldev *dev) 10062306a36Sopenharmony_ci{ 10162306a36Sopenharmony_ci} 10262306a36Sopenharmony_cistatic inline void b43_debugfs_log_txstat(struct b43_wldev *dev, 10362306a36Sopenharmony_ci const struct b43_txstatus *status) 10462306a36Sopenharmony_ci{ 10562306a36Sopenharmony_ci} 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci#endif /* CONFIG_B43_DEBUG */ 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci#endif /* B43_DEBUGFS_H_ */ 110