162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef B43legacy_DEBUGFS_H_
362306a36Sopenharmony_ci#define B43legacy_DEBUGFS_H_
462306a36Sopenharmony_ci
562306a36Sopenharmony_cistruct b43legacy_wldev;
662306a36Sopenharmony_cistruct b43legacy_txstatus;
762306a36Sopenharmony_ci
862306a36Sopenharmony_cienum b43legacy_dyndbg { /* Dynamic debugging features */
962306a36Sopenharmony_ci	B43legacy_DBG_XMITPOWER,
1062306a36Sopenharmony_ci	B43legacy_DBG_DMAOVERFLOW,
1162306a36Sopenharmony_ci	B43legacy_DBG_DMAVERBOSE,
1262306a36Sopenharmony_ci	B43legacy_DBG_PWORK_FAST,
1362306a36Sopenharmony_ci	B43legacy_DBG_PWORK_STOP,
1462306a36Sopenharmony_ci	__B43legacy_NR_DYNDBG,
1562306a36Sopenharmony_ci};
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci#ifdef CONFIG_B43LEGACY_DEBUG
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_cistruct dentry;
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci#define B43legacy_NR_LOGGED_TXSTATUS	100
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_cistruct b43legacy_txstatus_log {
2562306a36Sopenharmony_ci	struct b43legacy_txstatus *log;
2662306a36Sopenharmony_ci	int end;
2762306a36Sopenharmony_ci	spinlock_t lock;	/* lock for debugging */
2862306a36Sopenharmony_ci};
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_cistruct b43legacy_dfs_file {
3162306a36Sopenharmony_ci	char *buffer;
3262306a36Sopenharmony_ci	size_t data_len;
3362306a36Sopenharmony_ci};
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_cistruct b43legacy_dfsentry {
3662306a36Sopenharmony_ci	struct b43legacy_wldev *dev;
3762306a36Sopenharmony_ci	struct dentry *subdir;
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci	struct b43legacy_dfs_file file_tsf;
4062306a36Sopenharmony_ci	struct b43legacy_dfs_file file_ucode_regs;
4162306a36Sopenharmony_ci	struct b43legacy_dfs_file file_shm;
4262306a36Sopenharmony_ci	struct b43legacy_dfs_file file_txstat;
4362306a36Sopenharmony_ci	struct b43legacy_dfs_file file_txpower_g;
4462306a36Sopenharmony_ci	struct b43legacy_dfs_file file_restart;
4562306a36Sopenharmony_ci	struct b43legacy_dfs_file file_loctls;
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci	struct b43legacy_txstatus_log txstatlog;
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci	/* Enabled/Disabled list for the dynamic debugging features. */
5062306a36Sopenharmony_ci	bool dyn_debug[__B43legacy_NR_DYNDBG];
5162306a36Sopenharmony_ci};
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ciint b43legacy_debug(struct b43legacy_wldev *dev,
5462306a36Sopenharmony_ci		    enum b43legacy_dyndbg feature);
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_civoid b43legacy_debugfs_init(void);
5762306a36Sopenharmony_civoid b43legacy_debugfs_exit(void);
5862306a36Sopenharmony_civoid b43legacy_debugfs_add_device(struct b43legacy_wldev *dev);
5962306a36Sopenharmony_civoid b43legacy_debugfs_remove_device(struct b43legacy_wldev *dev);
6062306a36Sopenharmony_civoid b43legacy_debugfs_log_txstat(struct b43legacy_wldev *dev,
6162306a36Sopenharmony_ci				  const struct b43legacy_txstatus *status);
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci#else /* CONFIG_B43LEGACY_DEBUG*/
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_cistatic inline
6662306a36Sopenharmony_ciint b43legacy_debug(struct b43legacy_wldev *dev,
6762306a36Sopenharmony_ci		    enum b43legacy_dyndbg feature)
6862306a36Sopenharmony_ci{
6962306a36Sopenharmony_ci	return 0;
7062306a36Sopenharmony_ci}
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_cistatic inline
7362306a36Sopenharmony_civoid b43legacy_debugfs_init(void) { }
7462306a36Sopenharmony_cistatic inline
7562306a36Sopenharmony_civoid b43legacy_debugfs_exit(void) { }
7662306a36Sopenharmony_cistatic inline
7762306a36Sopenharmony_civoid b43legacy_debugfs_add_device(struct b43legacy_wldev *dev) { }
7862306a36Sopenharmony_cistatic inline
7962306a36Sopenharmony_civoid b43legacy_debugfs_remove_device(struct b43legacy_wldev *dev) { }
8062306a36Sopenharmony_cistatic inline
8162306a36Sopenharmony_civoid b43legacy_debugfs_log_txstat(struct b43legacy_wldev *dev,
8262306a36Sopenharmony_ci				  const struct b43legacy_txstatus *status)
8362306a36Sopenharmony_ci				  { }
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci#endif /* CONFIG_B43LEGACY_DEBUG*/
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci#endif /* B43legacy_DEBUGFS_H_ */
88