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