18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci	Copyright (C) 2004 - 2009 Ivo van Doorn <IvDoorn@gmail.com>
48c2ecf20Sopenharmony_ci	<http://rt2x00.serialmonkey.com>
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ci */
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci/*
98c2ecf20Sopenharmony_ci	Module: rt2x00debug
108c2ecf20Sopenharmony_ci	Abstract: Data structures for the rt2x00debug.
118c2ecf20Sopenharmony_ci */
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci#ifndef RT2X00DEBUG_H
148c2ecf20Sopenharmony_ci#define RT2X00DEBUG_H
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_cistruct rt2x00_dev;
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ci/**
198c2ecf20Sopenharmony_ci * enum rt2x00debugfs_entry_flags: Flags for debugfs registry entry
208c2ecf20Sopenharmony_ci *
218c2ecf20Sopenharmony_ci * @RT2X00DEBUGFS_OFFSET: rt2x00lib should pass the register offset
228c2ecf20Sopenharmony_ci *	as argument when using the callback function read()/write()
238c2ecf20Sopenharmony_ci */
248c2ecf20Sopenharmony_cienum rt2x00debugfs_entry_flags {
258c2ecf20Sopenharmony_ci	RT2X00DEBUGFS_OFFSET	= (1 << 0),
268c2ecf20Sopenharmony_ci};
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci#define RT2X00DEBUGFS_REGISTER_ENTRY(__name, __type)		\
298c2ecf20Sopenharmony_cistruct reg##__name {						\
308c2ecf20Sopenharmony_ci	__type (*read)(struct rt2x00_dev *rt2x00dev,		\
318c2ecf20Sopenharmony_ci		     const unsigned int word);			\
328c2ecf20Sopenharmony_ci	void (*write)(struct rt2x00_dev *rt2x00dev,		\
338c2ecf20Sopenharmony_ci		      const unsigned int word, __type data);	\
348c2ecf20Sopenharmony_ci								\
358c2ecf20Sopenharmony_ci	unsigned int flags;					\
368c2ecf20Sopenharmony_ci								\
378c2ecf20Sopenharmony_ci	unsigned int word_base;					\
388c2ecf20Sopenharmony_ci	unsigned int word_size;					\
398c2ecf20Sopenharmony_ci	unsigned int word_count;				\
408c2ecf20Sopenharmony_ci} __name
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_cistruct rt2x00debug {
438c2ecf20Sopenharmony_ci	/*
448c2ecf20Sopenharmony_ci	 * Reference to the modules structure.
458c2ecf20Sopenharmony_ci	 */
468c2ecf20Sopenharmony_ci	struct module *owner;
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci	/*
498c2ecf20Sopenharmony_ci	 * Register access entries.
508c2ecf20Sopenharmony_ci	 */
518c2ecf20Sopenharmony_ci	RT2X00DEBUGFS_REGISTER_ENTRY(csr, u32);
528c2ecf20Sopenharmony_ci	RT2X00DEBUGFS_REGISTER_ENTRY(eeprom, u16);
538c2ecf20Sopenharmony_ci	RT2X00DEBUGFS_REGISTER_ENTRY(bbp, u8);
548c2ecf20Sopenharmony_ci	RT2X00DEBUGFS_REGISTER_ENTRY(rf, u32);
558c2ecf20Sopenharmony_ci	RT2X00DEBUGFS_REGISTER_ENTRY(rfcsr, u8);
568c2ecf20Sopenharmony_ci};
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci#endif /* RT2X00DEBUG_H */
59