debugfs.h revision f5eda47f45e90dfa38e25d569b9ac84ba94f8301
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,
14e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	__B43_NR_DYNDBG,
15e4d6b7951812d98417feb10784e400e253caf633Michael Buesch};
16e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
17e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#ifdef CONFIG_B43_DEBUG
18e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
19e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstruct dentry;
20e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
21e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#define B43_NR_LOGGED_TXSTATUS	100
22e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
23e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstruct b43_txstatus_log {
24e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_txstatus *log;
25e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	int end;
26e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	spinlock_t lock;
27e4d6b7951812d98417feb10784e400e253caf633Michael Buesch};
28e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
29e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstruct b43_dfs_file {
30e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct dentry *dentry;
31e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	char *buffer;
32e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	size_t data_len;
33e4d6b7951812d98417feb10784e400e253caf633Michael Buesch};
34e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
35e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstruct b43_dfsentry {
36e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_wldev *dev;
37e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct dentry *subdir;
38e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
39e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_dfs_file file_tsf;
40e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_dfs_file file_ucode_regs;
41e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_dfs_file file_shm;
42e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_dfs_file file_txstat;
43e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_dfs_file file_txpower_g;
44e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_dfs_file file_restart;
45e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_dfs_file file_loctls;
46e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
47e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_txstatus_log txstatlog;
48e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
49e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	/* Enabled/Disabled list for the dynamic debugging features. */
50e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	u32 dyn_debug[__B43_NR_DYNDBG];
51e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	/* Dentries for the dynamic debugging entries. */
52e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct dentry *dyn_debug_dentries[__B43_NR_DYNDBG];
53e4d6b7951812d98417feb10784e400e253caf633Michael Buesch};
54e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
55e4d6b7951812d98417feb10784e400e253caf633Michael Bueschint b43_debug(struct b43_wldev *dev, enum b43_dyndbg feature);
56e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
57e4d6b7951812d98417feb10784e400e253caf633Michael Bueschvoid b43_debugfs_init(void);
58e4d6b7951812d98417feb10784e400e253caf633Michael Bueschvoid b43_debugfs_exit(void);
59e4d6b7951812d98417feb10784e400e253caf633Michael Bueschvoid b43_debugfs_add_device(struct b43_wldev *dev);
60e4d6b7951812d98417feb10784e400e253caf633Michael Bueschvoid b43_debugfs_remove_device(struct b43_wldev *dev);
61e4d6b7951812d98417feb10784e400e253caf633Michael Bueschvoid b43_debugfs_log_txstat(struct b43_wldev *dev,
62e4d6b7951812d98417feb10784e400e253caf633Michael Buesch			    const struct b43_txstatus *status);
63e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
64e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#else /* CONFIG_B43_DEBUG */
65e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
66e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline int b43_debug(struct b43_wldev *dev, enum b43_dyndbg feature)
67e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{
68e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	return 0;
69e4d6b7951812d98417feb10784e400e253caf633Michael Buesch}
70e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
71e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline void b43_debugfs_init(void)
72e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{
73e4d6b7951812d98417feb10784e400e253caf633Michael Buesch}
74e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline void b43_debugfs_exit(void)
75e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{
76e4d6b7951812d98417feb10784e400e253caf633Michael Buesch}
77e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline void b43_debugfs_add_device(struct b43_wldev *dev)
78e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{
79e4d6b7951812d98417feb10784e400e253caf633Michael Buesch}
80e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline void b43_debugfs_remove_device(struct b43_wldev *dev)
81e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{
82e4d6b7951812d98417feb10784e400e253caf633Michael Buesch}
83e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline void b43_debugfs_log_txstat(struct b43_wldev *dev,
84e4d6b7951812d98417feb10784e400e253caf633Michael Buesch					  const struct b43_txstatus *status)
85e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{
86e4d6b7951812d98417feb10784e400e253caf633Michael Buesch}
87e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
88e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#endif /* CONFIG_B43_DEBUG */
89e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
90e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#endif /* B43_DEBUGFS_H_ */
91