aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnisse Astier <anisse@astier.eu>2012-04-19 09:04:52 -0400
committerJohn W. Linville <linville@tuxdriver.com>2012-05-08 21:53:45 -0400
commitf2efd20facac2de96d33210a982820db960d25d1 (patch)
treee9f222c397065b4d1d28da5874362cc6c0fd9f54
parent7ed85b65ab611ba841d508ae4ff8c45fa0c48c80 (diff)
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>
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00debug.c71
1 files changed, 36 insertions, 35 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00debug.c b/drivers/net/wireless/rt2x00/rt2x00debug.c
index 78787fcc919e..5bb122162b5b 100644
--- a/drivers/net/wireless/rt2x00/rt2x00debug.c
+++ b/drivers/net/wireless/rt2x00/rt2x00debug.c
@@ -624,22 +624,21 @@ static struct dentry *rt2x00debug_create_file_chipset(const char *name,
624 data += sprintf(data, "revision:\t%04x\n", intf->rt2x00dev->chip.rev); 624 data += sprintf(data, "revision:\t%04x\n", intf->rt2x00dev->chip.rev);
625 data += sprintf(data, "\n"); 625 data += sprintf(data, "\n");
626 data += sprintf(data, "register\tbase\twords\twordsize\n"); 626 data += sprintf(data, "register\tbase\twords\twordsize\n");
627 data += sprintf(data, "csr\t%d\t%d\t%d\n", 627#define RT2X00DEBUGFS_SPRINTF_REGISTER(__name) \
628 debug->csr.word_base, 628{ \
629 debug->csr.word_count, 629 if(debug->__name.read) \
630 debug->csr.word_size); 630 data += sprintf(data, __stringify(__name) \
631 data += sprintf(data, "eeprom\t%d\t%d\t%d\n", 631 "\t%d\t%d\t%d\n", \
632 debug->eeprom.word_base, 632 debug->__name.word_base, \
633 debug->eeprom.word_count, 633 debug->__name.word_count, \
634 debug->eeprom.word_size); 634 debug->__name.word_size); \
635 data += sprintf(data, "bbp\t%d\t%d\t%d\n", 635}
636 debug->bbp.word_base, 636 RT2X00DEBUGFS_SPRINTF_REGISTER(csr);
637 debug->bbp.word_count, 637 RT2X00DEBUGFS_SPRINTF_REGISTER(eeprom);
638 debug->bbp.word_size); 638 RT2X00DEBUGFS_SPRINTF_REGISTER(bbp);
639 data += sprintf(data, "rf\t%d\t%d\t%d\n", 639 RT2X00DEBUGFS_SPRINTF_REGISTER(rf);
640 debug->rf.word_base, 640#undef RT2X00DEBUGFS_SPRINTF_REGISTER
641 debug->rf.word_count, 641
642 debug->rf.word_size);
643 blob->size = strlen(blob->data); 642 blob->size = strlen(blob->data);
644 643
645 return debugfs_create_blob(name, S_IRUSR, intf->driver_folder, blob); 644 return debugfs_create_blob(name, S_IRUSR, intf->driver_folder, blob);
@@ -694,25 +693,27 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev)
694 if (IS_ERR(intf->register_folder) || !intf->register_folder) 693 if (IS_ERR(intf->register_folder) || !intf->register_folder)
695 goto exit; 694 goto exit;
696 695
697#define RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(__intf, __name) \ 696#define RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(__intf, __name) \
698({ \ 697({ \
699 (__intf)->__name##_off_entry = \ 698 if(debug->__name.read) { \
700 debugfs_create_u32(__stringify(__name) "_offset", \ 699 (__intf)->__name##_off_entry = \
701 S_IRUSR | S_IWUSR, \ 700 debugfs_create_u32(__stringify(__name) "_offset", \
702 (__intf)->register_folder, \ 701 S_IRUSR | S_IWUSR, \
703 &(__intf)->offset_##__name); \ 702 (__intf)->register_folder, \
704 if (IS_ERR((__intf)->__name##_off_entry) \ 703 &(__intf)->offset_##__name); \
705 || !(__intf)->__name##_off_entry) \ 704 if (IS_ERR((__intf)->__name##_off_entry) \
706 goto exit; \ 705 || !(__intf)->__name##_off_entry) \
707 \ 706 goto exit; \
708 (__intf)->__name##_val_entry = \ 707 \
709 debugfs_create_file(__stringify(__name) "_value", \ 708 (__intf)->__name##_val_entry = \
710 S_IRUSR | S_IWUSR, \ 709 debugfs_create_file(__stringify(__name) "_value", \
711 (__intf)->register_folder, \ 710 S_IRUSR | S_IWUSR, \
712 (__intf), &rt2x00debug_fop_##__name);\ 711 (__intf)->register_folder, \
713 if (IS_ERR((__intf)->__name##_val_entry) \ 712 (__intf), &rt2x00debug_fop_##__name); \
714 || !(__intf)->__name##_val_entry) \ 713 if (IS_ERR((__intf)->__name##_val_entry) \
715 goto exit; \ 714 || !(__intf)->__name##_val_entry) \
715 goto exit; \
716 } \
716}) 717})
717 718
718 RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, csr); 719 RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, csr);