#ifndef B43legacy_DEBUGFS_H_
#define B43legacy_DEBUGFS_H_

struct b43legacy_wldev;
struct b43legacy_txstatus;

enum b43legacy_dyndbg { /* Dynamic debugging features */
	B43legacy_DBG_XMITPOWER,
	B43legacy_DBG_DMAOVERFLOW,
	B43legacy_DBG_DMAVERBOSE,
	B43legacy_DBG_PWORK_FAST,
	B43legacy_DBG_PWORK_STOP,
	__B43legacy_NR_DYNDBG,
};


#ifdef CPTCFG_B43LEGACY_DEBUG

struct dentry;

#define B43legacy_NR_LOGGED_TXSTATUS	100

struct b43legacy_txstatus_log {
	struct b43legacy_txstatus *log;
	int end;
	spinlock_t lock;	/* lock for debugging */
};

struct b43legacy_dfs_file {
	struct dentry *dentry;
	char *buffer;
	size_t data_len;
};

struct b43legacy_dfsentry {
	struct b43legacy_wldev *dev;
	struct dentry *subdir;

	struct b43legacy_dfs_file file_tsf;
	struct b43legacy_dfs_file file_ucode_regs;
	struct b43legacy_dfs_file file_shm;
	struct b43legacy_dfs_file file_txstat;
	struct b43legacy_dfs_file file_txpower_g;
	struct b43legacy_dfs_file file_restart;
	struct b43legacy_dfs_file file_loctls;

	struct b43legacy_txstatus_log txstatlog;

	/* Enabled/Disabled list for the dynamic debugging features. */
	u32 dyn_debug[__B43legacy_NR_DYNDBG];
	/* Dentries for the dynamic debugging entries. */
	struct dentry *dyn_debug_dentries[__B43legacy_NR_DYNDBG];
};

int b43legacy_debug(struct b43legacy_wldev *dev,
		    enum b43legacy_dyndbg feature);

void b43legacy_debugfs_init(void);
void b43legacy_debugfs_exit(void);
void b43legacy_debugfs_add_device(struct b43legacy_wldev *dev);
void b43legacy_debugfs_remove_device(struct b43legacy_wldev *dev);
void b43legacy_debugfs_log_txstat(struct b43legacy_wldev *dev,
				  const struct b43legacy_txstatus *status);

#else /* CPTCFG_B43LEGACY_DEBUG*/

static inline
int b43legacy_debug(struct b43legacy_wldev *dev,
		    enum b43legacy_dyndbg feature)
{
	return 0;
}

static inline
void b43legacy_debugfs_init(void) { }
static inline
void b43legacy_debugfs_exit(void) { }
static inline
void b43legacy_debugfs_add_device(struct b43legacy_wldev *dev) { }
static inline
void b43legacy_debugfs_remove_device(struct b43legacy_wldev *dev) { }
static inline
void b43legacy_debugfs_log_txstat(struct b43legacy_wldev *dev,
				  const struct b43legacy_txstatus *status)
				  { }

#endif /* CPTCFG_B43LEGACY_DEBUG*/

#endif /* B43legacy_DEBUGFS_H_ */
