mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 19:00:25 +00:00
rt2x00: debugfs support - allow a register to be empty
Allow a register to be unspecified, therefore not creating its debugfs file entry. Signed-off-by: Anisse Astier <anisse@astier.eu> Acked-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
7ed85b65ab
commit
f2efd20fac
1 changed files with 36 additions and 35 deletions
|
@ -624,22 +624,21 @@ static struct dentry *rt2x00debug_create_file_chipset(const char *name,
|
|||
data += sprintf(data, "revision:\t%04x\n", intf->rt2x00dev->chip.rev);
|
||||
data += sprintf(data, "\n");
|
||||
data += sprintf(data, "register\tbase\twords\twordsize\n");
|
||||
data += sprintf(data, "csr\t%d\t%d\t%d\n",
|
||||
debug->csr.word_base,
|
||||
debug->csr.word_count,
|
||||
debug->csr.word_size);
|
||||
data += sprintf(data, "eeprom\t%d\t%d\t%d\n",
|
||||
debug->eeprom.word_base,
|
||||
debug->eeprom.word_count,
|
||||
debug->eeprom.word_size);
|
||||
data += sprintf(data, "bbp\t%d\t%d\t%d\n",
|
||||
debug->bbp.word_base,
|
||||
debug->bbp.word_count,
|
||||
debug->bbp.word_size);
|
||||
data += sprintf(data, "rf\t%d\t%d\t%d\n",
|
||||
debug->rf.word_base,
|
||||
debug->rf.word_count,
|
||||
debug->rf.word_size);
|
||||
#define RT2X00DEBUGFS_SPRINTF_REGISTER(__name) \
|
||||
{ \
|
||||
if(debug->__name.read) \
|
||||
data += sprintf(data, __stringify(__name) \
|
||||
"\t%d\t%d\t%d\n", \
|
||||
debug->__name.word_base, \
|
||||
debug->__name.word_count, \
|
||||
debug->__name.word_size); \
|
||||
}
|
||||
RT2X00DEBUGFS_SPRINTF_REGISTER(csr);
|
||||
RT2X00DEBUGFS_SPRINTF_REGISTER(eeprom);
|
||||
RT2X00DEBUGFS_SPRINTF_REGISTER(bbp);
|
||||
RT2X00DEBUGFS_SPRINTF_REGISTER(rf);
|
||||
#undef RT2X00DEBUGFS_SPRINTF_REGISTER
|
||||
|
||||
blob->size = strlen(blob->data);
|
||||
|
||||
return debugfs_create_blob(name, S_IRUSR, intf->driver_folder, blob);
|
||||
|
@ -694,25 +693,27 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev)
|
|||
if (IS_ERR(intf->register_folder) || !intf->register_folder)
|
||||
goto exit;
|
||||
|
||||
#define RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(__intf, __name) \
|
||||
({ \
|
||||
(__intf)->__name##_off_entry = \
|
||||
debugfs_create_u32(__stringify(__name) "_offset", \
|
||||
S_IRUSR | S_IWUSR, \
|
||||
(__intf)->register_folder, \
|
||||
&(__intf)->offset_##__name); \
|
||||
if (IS_ERR((__intf)->__name##_off_entry) \
|
||||
|| !(__intf)->__name##_off_entry) \
|
||||
goto exit; \
|
||||
\
|
||||
(__intf)->__name##_val_entry = \
|
||||
debugfs_create_file(__stringify(__name) "_value", \
|
||||
S_IRUSR | S_IWUSR, \
|
||||
(__intf)->register_folder, \
|
||||
(__intf), &rt2x00debug_fop_##__name);\
|
||||
if (IS_ERR((__intf)->__name##_val_entry) \
|
||||
|| !(__intf)->__name##_val_entry) \
|
||||
goto exit; \
|
||||
#define RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(__intf, __name) \
|
||||
({ \
|
||||
if(debug->__name.read) { \
|
||||
(__intf)->__name##_off_entry = \
|
||||
debugfs_create_u32(__stringify(__name) "_offset", \
|
||||
S_IRUSR | S_IWUSR, \
|
||||
(__intf)->register_folder, \
|
||||
&(__intf)->offset_##__name); \
|
||||
if (IS_ERR((__intf)->__name##_off_entry) \
|
||||
|| !(__intf)->__name##_off_entry) \
|
||||
goto exit; \
|
||||
\
|
||||
(__intf)->__name##_val_entry = \
|
||||
debugfs_create_file(__stringify(__name) "_value", \
|
||||
S_IRUSR | S_IWUSR, \
|
||||
(__intf)->register_folder, \
|
||||
(__intf), &rt2x00debug_fop_##__name); \
|
||||
if (IS_ERR((__intf)->__name##_val_entry) \
|
||||
|| !(__intf)->__name##_val_entry) \
|
||||
goto exit; \
|
||||
} \
|
||||
})
|
||||
|
||||
RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, csr);
|
||||
|
|
Loading…
Reference in a new issue