diff options
author | Anisse Astier <anisse@astier.eu> | 2012-04-19 09:04:52 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-05-08 21:53:45 -0400 |
commit | f2efd20facac2de96d33210a982820db960d25d1 (patch) | |
tree | e9f222c397065b4d1d28da5874362cc6c0fd9f54 | |
parent | 7ed85b65ab611ba841d508ae4ff8c45fa0c48c80 (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.c | 71 |
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); |