debugfs.h revision 923fd7036ff04381b265037469c79a2e7d0d6b67
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,
15e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	__B43_NR_DYNDBG,
16e4d6b7951812d98417feb10784e400e253caf633Michael Buesch};
17e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
18e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#ifdef CONFIG_B43_DEBUG
19e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
20e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstruct dentry;
21e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
22e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#define B43_NR_LOGGED_TXSTATUS	100
23e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
24e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstruct b43_txstatus_log {
25e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_txstatus *log;
26e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	int end;
27e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	spinlock_t lock;
28e4d6b7951812d98417feb10784e400e253caf633Michael Buesch};
29e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
30e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstruct b43_dfs_file {
31e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct dentry *dentry;
32e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	char *buffer;
33e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	size_t data_len;
34e4d6b7951812d98417feb10784e400e253caf633Michael Buesch};
35e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
36e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstruct b43_dfsentry {
37e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_wldev *dev;
38e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct dentry *subdir;
39e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
406bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch	struct b43_dfs_file file_shm16read;
416bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch	struct b43_dfs_file file_shm16write;
426bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch	struct b43_dfs_file file_shm32read;
436bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch	struct b43_dfs_file file_shm32write;
448bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch	struct b43_dfs_file file_mmio16read;
458bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch	struct b43_dfs_file file_mmio16write;
468bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch	struct b43_dfs_file file_mmio32read;
478bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch	struct b43_dfs_file file_mmio32write;
48e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_dfs_file file_tsf;
49e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_dfs_file file_txstat;
50e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_dfs_file file_txpower_g;
51e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_dfs_file file_restart;
52e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_dfs_file file_loctls;
53e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
54e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct b43_txstatus_log txstatlog;
55e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
568bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch	/* The cached address for the next mmio16read file read */
578bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch	u16 mmio16read_next;
588bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch	/* The cached address for the next mmio32read file read */
598bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch	u16 mmio32read_next;
608bd463f4f913db12a1b7374f84304631289a1e0bMichael Buesch
616bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch	/* The cached address for the next shm16read file read */
626bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch	u32 shm16read_routing_next;
636bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch	u32 shm16read_addr_next;
646bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch	/* The cached address for the next shm32read file read */
656bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch	u32 shm32read_routing_next;
666bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch	u32 shm32read_addr_next;
676bbc321a96d4d3533eb136b981baba6c8248d635Michael Buesch
68e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	/* Enabled/Disabled list for the dynamic debugging features. */
69e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	u32 dyn_debug[__B43_NR_DYNDBG];
70e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	/* Dentries for the dynamic debugging entries. */
71e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	struct dentry *dyn_debug_dentries[__B43_NR_DYNDBG];
72e4d6b7951812d98417feb10784e400e253caf633Michael Buesch};
73e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
74e4d6b7951812d98417feb10784e400e253caf633Michael Bueschint b43_debug(struct b43_wldev *dev, enum b43_dyndbg feature);
75e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
76e4d6b7951812d98417feb10784e400e253caf633Michael Bueschvoid b43_debugfs_init(void);
77e4d6b7951812d98417feb10784e400e253caf633Michael Bueschvoid b43_debugfs_exit(void);
78e4d6b7951812d98417feb10784e400e253caf633Michael Bueschvoid b43_debugfs_add_device(struct b43_wldev *dev);
79e4d6b7951812d98417feb10784e400e253caf633Michael Bueschvoid b43_debugfs_remove_device(struct b43_wldev *dev);
80e4d6b7951812d98417feb10784e400e253caf633Michael Bueschvoid b43_debugfs_log_txstat(struct b43_wldev *dev,
81e4d6b7951812d98417feb10784e400e253caf633Michael Buesch			    const struct b43_txstatus *status);
82e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
83e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#else /* CONFIG_B43_DEBUG */
84e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
85e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline int b43_debug(struct b43_wldev *dev, enum b43_dyndbg feature)
86e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{
87e4d6b7951812d98417feb10784e400e253caf633Michael Buesch	return 0;
88e4d6b7951812d98417feb10784e400e253caf633Michael Buesch}
89e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
90e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline void b43_debugfs_init(void)
91e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{
92e4d6b7951812d98417feb10784e400e253caf633Michael Buesch}
93e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline void b43_debugfs_exit(void)
94e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{
95e4d6b7951812d98417feb10784e400e253caf633Michael Buesch}
96e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline void b43_debugfs_add_device(struct b43_wldev *dev)
97e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{
98e4d6b7951812d98417feb10784e400e253caf633Michael Buesch}
99e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline void b43_debugfs_remove_device(struct b43_wldev *dev)
100e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{
101e4d6b7951812d98417feb10784e400e253caf633Michael Buesch}
102e4d6b7951812d98417feb10784e400e253caf633Michael Bueschstatic inline void b43_debugfs_log_txstat(struct b43_wldev *dev,
103e4d6b7951812d98417feb10784e400e253caf633Michael Buesch					  const struct b43_txstatus *status)
104e4d6b7951812d98417feb10784e400e253caf633Michael Buesch{
105e4d6b7951812d98417feb10784e400e253caf633Michael Buesch}
106e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
107e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#endif /* CONFIG_B43_DEBUG */
108e4d6b7951812d98417feb10784e400e253caf633Michael Buesch
109e4d6b7951812d98417feb10784e400e253caf633Michael Buesch#endif /* B43_DEBUGFS_H_ */
110