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