* [PATCH v2 1/2] rt2800: debugfs register access: BBP is 256 bytes big @ 2012-04-19 9:20 Anisse Astier 2012-04-19 9:20 ` [PATCH RFC v2 2/2] rt2x00: Add debugfs access for rfcsr register Anisse Astier 2012-04-19 11:02 ` [PATCH v2 1/2] rt2800: debugfs register access: BBP is 256 bytes big Ivo Van Doorn 0 siblings, 2 replies; 10+ messages in thread From: Anisse Astier @ 2012-04-19 9:20 UTC (permalink / raw) To: linux-wireless, users Cc: linville, Ivo van Doorn, Gertjan van Wingerde, Helmut Schaa, Anisse Astier We're already using BBP for values > 128. Make that explicit and allow debugfs access. Signed-off-by: Anisse Astier <anisse@astier.eu> --- Changes since v1: none --- drivers/net/wireless/rt2x00/rt2800.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h index 1ce2634..d91f4f6 100644 --- a/drivers/net/wireless/rt2x00/rt2800.h +++ b/drivers/net/wireless/rt2x00/rt2800.h @@ -99,7 +99,7 @@ #define EEPROM_BASE 0x0000 #define EEPROM_SIZE 0x0110 #define BBP_BASE 0x0000 -#define BBP_SIZE 0x0080 +#define BBP_SIZE 0x00ff #define RF_BASE 0x0004 #define RF_SIZE 0x0010 -- 1.7.9.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH RFC v2 2/2] rt2x00: Add debugfs access for rfcsr register 2012-04-19 9:20 [PATCH v2 1/2] rt2800: debugfs register access: BBP is 256 bytes big Anisse Astier @ 2012-04-19 9:20 ` Anisse Astier 2012-04-19 11:07 ` Ivo Van Doorn 2012-04-19 11:02 ` [PATCH v2 1/2] rt2800: debugfs register access: BBP is 256 bytes big Ivo Van Doorn 1 sibling, 1 reply; 10+ messages in thread From: Anisse Astier @ 2012-04-19 9:20 UTC (permalink / raw) To: linux-wireless, users Cc: linville, Ivo van Doorn, Gertjan van Wingerde, Helmut Schaa, Anisse Astier RFCSR is only used in rt2800. For other chipsets, the debug struct for rfcsr should be zeroed, so it shouldn't be an issue. Signed-off-by: Anisse Astier <anisse@astier.eu> --- Changes since v1: - removed initialization in chipsets other than rt2800, we now rely on default initialization. - added comments to make this explicit - fix rfcsr size (64) - fix pre-review bug thanks to Ivo Van Doorn --- Please test this patch, I'd *especially* like feedback on chipsets other than rt2800pci. Test procedure: mount -t debugfs none /sys/kernel/debug/ cd /sys/kernel/debug/ieee80211/phy0/rt2800pci/register/ cat ../chipset cat rfcsr_offset cat rfcsr_value #should fail: echo 2 > rfcsr_offset --- drivers/net/wireless/rt2x00/rt2800.h | 2 ++ drivers/net/wireless/rt2x00/rt2800lib.c | 7 +++++++ drivers/net/wireless/rt2x00/rt2x00debug.c | 16 ++++++++++++++++ drivers/net/wireless/rt2x00/rt2x00debug.h | 1 + 4 files changed, 26 insertions(+) diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h index d91f4f6..9348521 100644 --- a/drivers/net/wireless/rt2x00/rt2800.h +++ b/drivers/net/wireless/rt2x00/rt2800.h @@ -102,6 +102,8 @@ #define BBP_SIZE 0x00ff #define RF_BASE 0x0004 #define RF_SIZE 0x0010 +#define RFCSR_BASE 0x0000 +#define RFCSR_SIZE 0x0040 /* * Number of TX queues. diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c index 6c95101..0cdbf2b 100644 --- a/drivers/net/wireless/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/rt2x00/rt2800lib.c @@ -836,6 +836,13 @@ const struct rt2x00debug rt2800_rt2x00debug = { .word_size = sizeof(u32), .word_count = RF_SIZE / sizeof(u32), }, + .rfcsr = { + .read = rt2800_rfcsr_read, + .write = rt2800_rfcsr_write, + .word_base = RFCSR_BASE, + .word_size = sizeof(u8), + .word_count = RFCSR_SIZE / sizeof(u8), + }, }; EXPORT_SYMBOL_GPL(rt2800_rt2x00debug); #endif /* CONFIG_RT2X00_LIB_DEBUGFS */ diff --git a/drivers/net/wireless/rt2x00/rt2x00debug.c b/drivers/net/wireless/rt2x00/rt2x00debug.c index 78787fc..128dac7 100644 --- a/drivers/net/wireless/rt2x00/rt2x00debug.c +++ b/drivers/net/wireless/rt2x00/rt2x00debug.c @@ -70,6 +70,7 @@ struct rt2x00debug_intf { * - eeprom offset/value files * - bbp offset/value files * - rf offset/value files + * - rfcsr offset/value files * - queue folder * - frame dump file * - queue stats file @@ -89,6 +90,8 @@ struct rt2x00debug_intf { struct dentry *bbp_val_entry; struct dentry *rf_off_entry; struct dentry *rf_val_entry; + struct dentry *rfcsr_off_entry; + struct dentry *rfcsr_val_entry; struct dentry *queue_folder; struct dentry *queue_frame_dump_entry; struct dentry *queue_stats_entry; @@ -131,6 +134,7 @@ struct rt2x00debug_intf { unsigned int offset_eeprom; unsigned int offset_bbp; unsigned int offset_rf; + unsigned int offset_rfcsr; }; void rt2x00debug_update_crypto(struct rt2x00_dev *rt2x00dev, @@ -448,6 +452,8 @@ static ssize_t rt2x00debug_read_##__name(struct file *file, \ if (*offset) \ return 0; \ \ + /* This is should always be checked first because \ + * debug->__name could be zeroed (when unspecified) */ \ if (index >= debug->__name.word_count) \ return -EINVAL; \ \ @@ -484,6 +490,8 @@ static ssize_t rt2x00debug_write_##__name(struct file *file, \ if (*offset) \ return 0; \ \ + /* This is should always be checked first because \ + * debug->__name could be zeroed (when unspecified) */ \ if (index >= debug->__name.word_count) \ return -EINVAL; \ \ @@ -525,6 +533,7 @@ RT2X00DEBUGFS_OPS(csr, "0x%.8x\n", u32); RT2X00DEBUGFS_OPS(eeprom, "0x%.4x\n", u16); RT2X00DEBUGFS_OPS(bbp, "0x%.2x\n", u8); RT2X00DEBUGFS_OPS(rf, "0x%.8x\n", u32); +RT2X00DEBUGFS_OPS(rfcsr, "0x%.2x\n", u8); static ssize_t rt2x00debug_read_dev_flags(struct file *file, char __user *buf, @@ -640,6 +649,10 @@ static struct dentry *rt2x00debug_create_file_chipset(const char *name, debug->rf.word_base, debug->rf.word_count, debug->rf.word_size); + data += sprintf(data, "rfcsr\t%d\t%d\t%d\n", + debug->rfcsr.word_base, + debug->rfcsr.word_count, + debug->rfcsr.word_size); blob->size = strlen(blob->data); return debugfs_create_blob(name, S_IRUSR, intf->driver_folder, blob); @@ -719,6 +732,7 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev) RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, eeprom); RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, bbp); RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, rf); + RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, rfcsr); #undef RT2X00DEBUGFS_CREATE_REGISTER_ENTRY @@ -770,6 +784,8 @@ void rt2x00debug_deregister(struct rt2x00_dev *rt2x00dev) debugfs_remove(intf->queue_stats_entry); debugfs_remove(intf->queue_frame_dump_entry); debugfs_remove(intf->queue_folder); + debugfs_remove(intf->rfcsr_val_entry); + debugfs_remove(intf->rfcsr_off_entry); debugfs_remove(intf->rf_val_entry); debugfs_remove(intf->rf_off_entry); debugfs_remove(intf->bbp_val_entry); diff --git a/drivers/net/wireless/rt2x00/rt2x00debug.h b/drivers/net/wireless/rt2x00/rt2x00debug.h index fa11409..e11d39b 100644 --- a/drivers/net/wireless/rt2x00/rt2x00debug.h +++ b/drivers/net/wireless/rt2x00/rt2x00debug.h @@ -65,6 +65,7 @@ struct rt2x00debug { RT2X00DEBUGFS_REGISTER_ENTRY(eeprom, u16); RT2X00DEBUGFS_REGISTER_ENTRY(bbp, u8); RT2X00DEBUGFS_REGISTER_ENTRY(rf, u32); + RT2X00DEBUGFS_REGISTER_ENTRY(rfcsr, u8); }; #endif /* RT2X00DEBUG_H */ -- 1.7.9.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH RFC v2 2/2] rt2x00: Add debugfs access for rfcsr register 2012-04-19 9:20 ` [PATCH RFC v2 2/2] rt2x00: Add debugfs access for rfcsr register Anisse Astier @ 2012-04-19 11:07 ` Ivo Van Doorn 2012-04-19 13:53 ` [PATCH v3 1/2] rt2x00: debugfs support - allow a register to be empty Anisse Astier 0 siblings, 1 reply; 10+ messages in thread From: Ivo Van Doorn @ 2012-04-19 11:07 UTC (permalink / raw) To: Anisse Astier Cc: linux-wireless, users, linville, Gertjan van Wingerde, Helmut Schaa Hi, On Thu, Apr 19, 2012 at 11:20 AM, Anisse Astier <anisse@astier.eu> wrote: > RFCSR is only used in rt2800. For other chipsets, the debug struct > for rfcsr should be zeroed, so it shouldn't be an issue. > > Signed-off-by: Anisse Astier <anisse@astier.eu> > --- > Changes since v1: > - removed initialization in chipsets other than rt2800, we now rely on > default initialization. Thanks, it looks much cleaner now. :) > diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h > index d91f4f6..9348521 100644 > --- a/drivers/net/wireless/rt2x00/rt2800.h > +++ b/drivers/net/wireless/rt2x00/rt2800.h > @@ -102,6 +102,8 @@ > #define BBP_SIZE 0x00ff > #define RF_BASE 0x0004 > #define RF_SIZE 0x0010 > +#define RFCSR_BASE 0x0000 > +#define RFCSR_SIZE 0x0040 > > /* > * Number of TX queues. > diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c > index 6c95101..0cdbf2b 100644 > --- a/drivers/net/wireless/rt2x00/rt2800lib.c > +++ b/drivers/net/wireless/rt2x00/rt2800lib.c > @@ -836,6 +836,13 @@ const struct rt2x00debug rt2800_rt2x00debug = { > .word_size = sizeof(u32), > .word_count = RF_SIZE / sizeof(u32), > }, > + .rfcsr = { > + .read = rt2800_rfcsr_read, > + .write = rt2800_rfcsr_write, > + .word_base = RFCSR_BASE, > + .word_size = sizeof(u8), > + .word_count = RFCSR_SIZE / sizeof(u8), > + }, > }; > EXPORT_SYMBOL_GPL(rt2800_rt2x00debug); > #endif /* CONFIG_RT2X00_LIB_DEBUGFS */ > diff --git a/drivers/net/wireless/rt2x00/rt2x00debug.c b/drivers/net/wireless/rt2x00/rt2x00debug.c > index 78787fc..128dac7 100644 > --- a/drivers/net/wireless/rt2x00/rt2x00debug.c > +++ b/drivers/net/wireless/rt2x00/rt2x00debug.c > @@ -70,6 +70,7 @@ struct rt2x00debug_intf { > * - eeprom offset/value files > * - bbp offset/value files > * - rf offset/value files > + * - rfcsr offset/value files > * - queue folder > * - frame dump file > * - queue stats file > @@ -89,6 +90,8 @@ struct rt2x00debug_intf { > struct dentry *bbp_val_entry; > struct dentry *rf_off_entry; > struct dentry *rf_val_entry; > + struct dentry *rfcsr_off_entry; > + struct dentry *rfcsr_val_entry; > struct dentry *queue_folder; > struct dentry *queue_frame_dump_entry; > struct dentry *queue_stats_entry; > @@ -131,6 +134,7 @@ struct rt2x00debug_intf { > unsigned int offset_eeprom; > unsigned int offset_bbp; > unsigned int offset_rf; > + unsigned int offset_rfcsr; > }; > > void rt2x00debug_update_crypto(struct rt2x00_dev *rt2x00dev, > @@ -448,6 +452,8 @@ static ssize_t rt2x00debug_read_##__name(struct file *file, \ > if (*offset) \ > return 0; \ > \ > + /* This is should always be checked first because \ > + * debug->__name could be zeroed (when unspecified) */ \ > if (index >= debug->__name.word_count) \ > return -EINVAL; \ Actually it would be nicer to not create these files at all when the register was not provided. This means checking during initialization if the files should be created or not. > @@ -640,6 +649,10 @@ static struct dentry *rt2x00debug_create_file_chipset(const char *name, > debug->rf.word_base, > debug->rf.word_count, > debug->rf.word_size); > + data += sprintf(data, "rfcsr\t%d\t%d\t%d\n", > + debug->rfcsr.word_base, > + debug->rfcsr.word_count, > + debug->rfcsr.word_size); This should only be done if the rfcsr is actually available. So I think whole block should be changed to check the availability of each register. Also you are adding a line here, have you ensures that data contains sufficient data? I know by default we are allocating a couple of bytes extra, but we reserve X bytes per line, so adding a line should require some extra data to be allocated. > blob->size = strlen(blob->data); > > return debugfs_create_blob(name, S_IRUSR, intf->driver_folder, blob); > @@ -719,6 +732,7 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev) > RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, eeprom); > RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, bbp); > RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, rf); > + RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, rfcsr); So if we update the RT2X00DEBUGFS_CREATE_REGISTER_ENTRY() define, we can ensure the debugfs files are only created when the register is present on the device. Ivo ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v3 1/2] rt2x00: debugfs support - allow a register to be empty 2012-04-19 11:07 ` Ivo Van Doorn @ 2012-04-19 13:53 ` Anisse Astier 2012-04-19 13:53 ` [PATCH v3 2/2] rt2x00: Add debugfs access for rfcsr register Anisse Astier 2012-04-20 7:03 ` [PATCH v3 1/2] rt2x00: debugfs support - allow a register to be empty Ivo Van Doorn 0 siblings, 2 replies; 10+ messages in thread From: Anisse Astier @ 2012-04-19 13:53 UTC (permalink / raw) To: Ivo van Doorn, linux-wireless, users Cc: linville, Gertjan van Wingerde, Helmut Schaa, Anisse Astier Allow a register to be unspecified, therefore not creating its debugfs file entry. Signed-off-by: Anisse Astier <anisse@astier.eu> --- Changes since v2: Acked patch not resent (BBP size), and split the second patch in two to incorporate changes suggested by Ivo Van Doorn (thanks for the review!) : - first part (this patch) now is only a small rewrite of the code to initialize only the supported register. Any unsupported register wouldn't have its files created. - first patch best viewed ignoring spaces ((git) diff -w) - second part is effectively adding RFCSR support. - we allocate more data for sprintf since we add a new register. - Updated test procedure (see below) Changes since v1: - removed initialization in chipsets other than rt2800, we now rely on default initialization. - added comments to make this explicit - fix rfcsr size (64) - fix pre-review bug thanks to Ivo Van Doorn How to test ? I'd like feedback on chipsets other than rt2800pci. Test procedure: mount -t debugfs none /sys/kernel/debug/ cd /sys/kernel/debug/ieee80211/phy0/rt2800pci/ cat chipset # shouldn't have any "rfcsr" line if not rt2800 ls register # shouldn't have any rfcsr_* file if not rt2800 --- drivers/net/wireless/rt2x00/rt2x00debug.c | 73 +++++++++++++++-------------- 1 file changed, 38 insertions(+), 35 deletions(-) diff --git a/drivers/net/wireless/rt2x00/rt2x00debug.c b/drivers/net/wireless/rt2x00/rt2x00debug.c index 78787fc..ac898c4 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, 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,29 @@ 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; \ + } else \ + DEBUG(rt2x00dev, "Unsupported register on this device: " \ + __stringify(__name) "\n"); \ }) RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, csr); -- 1.7.9.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v3 2/2] rt2x00: Add debugfs access for rfcsr register 2012-04-19 13:53 ` [PATCH v3 1/2] rt2x00: debugfs support - allow a register to be empty Anisse Astier @ 2012-04-19 13:53 ` Anisse Astier 2012-04-20 7:03 ` Ivo Van Doorn 2012-04-20 7:03 ` [PATCH v3 1/2] rt2x00: debugfs support - allow a register to be empty Ivo Van Doorn 1 sibling, 1 reply; 10+ messages in thread From: Anisse Astier @ 2012-04-19 13:53 UTC (permalink / raw) To: Ivo van Doorn, linux-wireless, users Cc: linville, Gertjan van Wingerde, Helmut Schaa, Anisse Astier RFCSR is only used in rt2800. For other chipsets, the debug struct for rfcsr should be zeroed, which isn't be an issue, since the code can now cope with that. Signed-off-by: Anisse Astier <anisse@astier.eu> --- drivers/net/wireless/rt2x00/rt2800.h | 2 ++ drivers/net/wireless/rt2x00/rt2800lib.c | 7 +++++++ drivers/net/wireless/rt2x00/rt2x00debug.c | 11 ++++++++++- drivers/net/wireless/rt2x00/rt2x00debug.h | 1 + 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h index d91f4f6..9348521 100644 --- a/drivers/net/wireless/rt2x00/rt2800.h +++ b/drivers/net/wireless/rt2x00/rt2800.h @@ -102,6 +102,8 @@ #define BBP_SIZE 0x00ff #define RF_BASE 0x0004 #define RF_SIZE 0x0010 +#define RFCSR_BASE 0x0000 +#define RFCSR_SIZE 0x0040 /* * Number of TX queues. diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c index 6c95101..0cdbf2b 100644 --- a/drivers/net/wireless/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/rt2x00/rt2800lib.c @@ -836,6 +836,13 @@ const struct rt2x00debug rt2800_rt2x00debug = { .word_size = sizeof(u32), .word_count = RF_SIZE / sizeof(u32), }, + .rfcsr = { + .read = rt2800_rfcsr_read, + .write = rt2800_rfcsr_write, + .word_base = RFCSR_BASE, + .word_size = sizeof(u8), + .word_count = RFCSR_SIZE / sizeof(u8), + }, }; EXPORT_SYMBOL_GPL(rt2800_rt2x00debug); #endif /* CONFIG_RT2X00_LIB_DEBUGFS */ diff --git a/drivers/net/wireless/rt2x00/rt2x00debug.c b/drivers/net/wireless/rt2x00/rt2x00debug.c index ac898c4..74f6ed5 100644 --- a/drivers/net/wireless/rt2x00/rt2x00debug.c +++ b/drivers/net/wireless/rt2x00/rt2x00debug.c @@ -70,6 +70,7 @@ struct rt2x00debug_intf { * - eeprom offset/value files * - bbp offset/value files * - rf offset/value files + * - rfcsr offset/value files * - queue folder * - frame dump file * - queue stats file @@ -89,6 +90,8 @@ struct rt2x00debug_intf { struct dentry *bbp_val_entry; struct dentry *rf_off_entry; struct dentry *rf_val_entry; + struct dentry *rfcsr_off_entry; + struct dentry *rfcsr_val_entry; struct dentry *queue_folder; struct dentry *queue_frame_dump_entry; struct dentry *queue_stats_entry; @@ -131,6 +134,7 @@ struct rt2x00debug_intf { unsigned int offset_eeprom; unsigned int offset_bbp; unsigned int offset_rf; + unsigned int offset_rfcsr; }; void rt2x00debug_update_crypto(struct rt2x00_dev *rt2x00dev, @@ -525,6 +529,7 @@ RT2X00DEBUGFS_OPS(csr, "0x%.8x\n", u32); RT2X00DEBUGFS_OPS(eeprom, "0x%.4x\n", u16); RT2X00DEBUGFS_OPS(bbp, "0x%.2x\n", u8); RT2X00DEBUGFS_OPS(rf, "0x%.8x\n", u32); +RT2X00DEBUGFS_OPS(rfcsr, "0x%.2x\n", u8); static ssize_t rt2x00debug_read_dev_flags(struct file *file, char __user *buf, @@ -614,7 +619,7 @@ static struct dentry *rt2x00debug_create_file_chipset(const char *name, const struct rt2x00debug *debug = intf->debug; char *data; - data = kzalloc(8 * MAX_LINE_LENGTH, GFP_KERNEL); + data = kzalloc(9 * MAX_LINE_LENGTH, GFP_KERNEL); if (!data) return NULL; @@ -637,6 +642,7 @@ static struct dentry *rt2x00debug_create_file_chipset(const char *name, RT2X00DEBUGFS_SPRINTF_REGISTER(eeprom); RT2X00DEBUGFS_SPRINTF_REGISTER(bbp); RT2X00DEBUGFS_SPRINTF_REGISTER(rf); + RT2X00DEBUGFS_SPRINTF_REGISTER(rfcsr); #undef RT2X00DEBUGFS_SPRINTF_REGISTER blob->size = strlen(blob->data); @@ -722,6 +728,7 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev) RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, eeprom); RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, bbp); RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, rf); + RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, rfcsr); #undef RT2X00DEBUGFS_CREATE_REGISTER_ENTRY @@ -773,6 +780,8 @@ void rt2x00debug_deregister(struct rt2x00_dev *rt2x00dev) debugfs_remove(intf->queue_stats_entry); debugfs_remove(intf->queue_frame_dump_entry); debugfs_remove(intf->queue_folder); + debugfs_remove(intf->rfcsr_val_entry); + debugfs_remove(intf->rfcsr_off_entry); debugfs_remove(intf->rf_val_entry); debugfs_remove(intf->rf_off_entry); debugfs_remove(intf->bbp_val_entry); diff --git a/drivers/net/wireless/rt2x00/rt2x00debug.h b/drivers/net/wireless/rt2x00/rt2x00debug.h index fa11409..e11d39b 100644 --- a/drivers/net/wireless/rt2x00/rt2x00debug.h +++ b/drivers/net/wireless/rt2x00/rt2x00debug.h @@ -65,6 +65,7 @@ struct rt2x00debug { RT2X00DEBUGFS_REGISTER_ENTRY(eeprom, u16); RT2X00DEBUGFS_REGISTER_ENTRY(bbp, u8); RT2X00DEBUGFS_REGISTER_ENTRY(rf, u32); + RT2X00DEBUGFS_REGISTER_ENTRY(rfcsr, u8); }; #endif /* RT2X00DEBUG_H */ -- 1.7.9.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v3 2/2] rt2x00: Add debugfs access for rfcsr register 2012-04-19 13:53 ` [PATCH v3 2/2] rt2x00: Add debugfs access for rfcsr register Anisse Astier @ 2012-04-20 7:03 ` Ivo Van Doorn 0 siblings, 0 replies; 10+ messages in thread From: Ivo Van Doorn @ 2012-04-20 7:03 UTC (permalink / raw) To: Anisse Astier Cc: linux-wireless, users, linville, Gertjan van Wingerde, Helmut Schaa On Thu, Apr 19, 2012 at 3:53 PM, Anisse Astier <anisse@astier.eu> wrote: > RFCSR is only used in rt2800. For other chipsets, the debug struct > for rfcsr should be zeroed, which isn't be an issue, since the code > can now cope with that. > > Signed-off-by: Anisse Astier <anisse@astier.eu> Acked-by: Ivo van Doorn <IvDoorn@gmail.com> > --- > drivers/net/wireless/rt2x00/rt2800.h | 2 ++ > drivers/net/wireless/rt2x00/rt2800lib.c | 7 +++++++ > drivers/net/wireless/rt2x00/rt2x00debug.c | 11 ++++++++++- > drivers/net/wireless/rt2x00/rt2x00debug.h | 1 + > 4 files changed, 20 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h > index d91f4f6..9348521 100644 > --- a/drivers/net/wireless/rt2x00/rt2800.h > +++ b/drivers/net/wireless/rt2x00/rt2800.h > @@ -102,6 +102,8 @@ > #define BBP_SIZE 0x00ff > #define RF_BASE 0x0004 > #define RF_SIZE 0x0010 > +#define RFCSR_BASE 0x0000 > +#define RFCSR_SIZE 0x0040 > > /* > * Number of TX queues. > diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c > index 6c95101..0cdbf2b 100644 > --- a/drivers/net/wireless/rt2x00/rt2800lib.c > +++ b/drivers/net/wireless/rt2x00/rt2800lib.c > @@ -836,6 +836,13 @@ const struct rt2x00debug rt2800_rt2x00debug = { > .word_size = sizeof(u32), > .word_count = RF_SIZE / sizeof(u32), > }, > + .rfcsr = { > + .read = rt2800_rfcsr_read, > + .write = rt2800_rfcsr_write, > + .word_base = RFCSR_BASE, > + .word_size = sizeof(u8), > + .word_count = RFCSR_SIZE / sizeof(u8), > + }, > }; > EXPORT_SYMBOL_GPL(rt2800_rt2x00debug); > #endif /* CONFIG_RT2X00_LIB_DEBUGFS */ > diff --git a/drivers/net/wireless/rt2x00/rt2x00debug.c b/drivers/net/wireless/rt2x00/rt2x00debug.c > index ac898c4..74f6ed5 100644 > --- a/drivers/net/wireless/rt2x00/rt2x00debug.c > +++ b/drivers/net/wireless/rt2x00/rt2x00debug.c > @@ -70,6 +70,7 @@ struct rt2x00debug_intf { > * - eeprom offset/value files > * - bbp offset/value files > * - rf offset/value files > + * - rfcsr offset/value files > * - queue folder > * - frame dump file > * - queue stats file > @@ -89,6 +90,8 @@ struct rt2x00debug_intf { > struct dentry *bbp_val_entry; > struct dentry *rf_off_entry; > struct dentry *rf_val_entry; > + struct dentry *rfcsr_off_entry; > + struct dentry *rfcsr_val_entry; > struct dentry *queue_folder; > struct dentry *queue_frame_dump_entry; > struct dentry *queue_stats_entry; > @@ -131,6 +134,7 @@ struct rt2x00debug_intf { > unsigned int offset_eeprom; > unsigned int offset_bbp; > unsigned int offset_rf; > + unsigned int offset_rfcsr; > }; > > void rt2x00debug_update_crypto(struct rt2x00_dev *rt2x00dev, > @@ -525,6 +529,7 @@ RT2X00DEBUGFS_OPS(csr, "0x%.8x\n", u32); > RT2X00DEBUGFS_OPS(eeprom, "0x%.4x\n", u16); > RT2X00DEBUGFS_OPS(bbp, "0x%.2x\n", u8); > RT2X00DEBUGFS_OPS(rf, "0x%.8x\n", u32); > +RT2X00DEBUGFS_OPS(rfcsr, "0x%.2x\n", u8); > > static ssize_t rt2x00debug_read_dev_flags(struct file *file, > char __user *buf, > @@ -614,7 +619,7 @@ static struct dentry *rt2x00debug_create_file_chipset(const char *name, > const struct rt2x00debug *debug = intf->debug; > char *data; > > - data = kzalloc(8 * MAX_LINE_LENGTH, GFP_KERNEL); > + data = kzalloc(9 * MAX_LINE_LENGTH, GFP_KERNEL); > if (!data) > return NULL; > > @@ -637,6 +642,7 @@ static struct dentry *rt2x00debug_create_file_chipset(const char *name, > RT2X00DEBUGFS_SPRINTF_REGISTER(eeprom); > RT2X00DEBUGFS_SPRINTF_REGISTER(bbp); > RT2X00DEBUGFS_SPRINTF_REGISTER(rf); > + RT2X00DEBUGFS_SPRINTF_REGISTER(rfcsr); > #undef RT2X00DEBUGFS_SPRINTF_REGISTER > > blob->size = strlen(blob->data); > @@ -722,6 +728,7 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev) > RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, eeprom); > RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, bbp); > RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, rf); > + RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, rfcsr); > > #undef RT2X00DEBUGFS_CREATE_REGISTER_ENTRY > > @@ -773,6 +780,8 @@ void rt2x00debug_deregister(struct rt2x00_dev *rt2x00dev) > debugfs_remove(intf->queue_stats_entry); > debugfs_remove(intf->queue_frame_dump_entry); > debugfs_remove(intf->queue_folder); > + debugfs_remove(intf->rfcsr_val_entry); > + debugfs_remove(intf->rfcsr_off_entry); > debugfs_remove(intf->rf_val_entry); > debugfs_remove(intf->rf_off_entry); > debugfs_remove(intf->bbp_val_entry); > diff --git a/drivers/net/wireless/rt2x00/rt2x00debug.h b/drivers/net/wireless/rt2x00/rt2x00debug.h > index fa11409..e11d39b 100644 > --- a/drivers/net/wireless/rt2x00/rt2x00debug.h > +++ b/drivers/net/wireless/rt2x00/rt2x00debug.h > @@ -65,6 +65,7 @@ struct rt2x00debug { > RT2X00DEBUGFS_REGISTER_ENTRY(eeprom, u16); > RT2X00DEBUGFS_REGISTER_ENTRY(bbp, u8); > RT2X00DEBUGFS_REGISTER_ENTRY(rf, u32); > + RT2X00DEBUGFS_REGISTER_ENTRY(rfcsr, u8); > }; > > #endif /* RT2X00DEBUG_H */ > -- > 1.7.9.4 > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3 1/2] rt2x00: debugfs support - allow a register to be empty 2012-04-19 13:53 ` [PATCH v3 1/2] rt2x00: debugfs support - allow a register to be empty Anisse Astier 2012-04-19 13:53 ` [PATCH v3 2/2] rt2x00: Add debugfs access for rfcsr register Anisse Astier @ 2012-04-20 7:03 ` Ivo Van Doorn 2012-04-20 15:48 ` Anisse Astier 1 sibling, 1 reply; 10+ messages in thread From: Ivo Van Doorn @ 2012-04-20 7:03 UTC (permalink / raw) To: Anisse Astier Cc: linux-wireless, users, linville, Gertjan van Wingerde, Helmut Schaa SGksCgpJJ20gYWxtb3N0IGNvbXBsZXRlbHkgaGFwcHkgd2l0aCB0aGlzIHBhdGNoLiA6KQoKPiBA QCAtNjk0LDI1ICs2OTMsMjkgQEAgdm9pZCBydDJ4MDBkZWJ1Z19yZWdpc3RlcihzdHJ1Y3QgcnQy eDAwX2RldiAqcnQyeDAwZGV2KQo+IKAgoCCgIKBpZiAoSVNfRVJSKGludGYtPnJlZ2lzdGVyX2Zv bGRlcikgfHwgIWludGYtPnJlZ2lzdGVyX2ZvbGRlcikKPiCgIKAgoCCgIKAgoCCgIKBnb3RvIGV4 aXQ7Cj4KPiAtI2RlZmluZSBSVDJYMDBERUJVR0ZTX0NSRUFURV9SRUdJU1RFUl9FTlRSWShfX2lu dGYsIF9fbmFtZSkgoCCgXAo+IC0oeyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCBcCj4gLSCgIKAgoCAoX19pbnRmKS0+X19uYW1lIyNf b2ZmX2VudHJ5ID0goCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoFwKPiAtIKAgoCCgIKAgoCBkZWJ1 Z2ZzX2NyZWF0ZV91MzIoX19zdHJpbmdpZnkoX19uYW1lKSAiX29mZnNldCIsIKAgXAo+IC0goCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKBTX0lSVVNSIHwgU19JV1VTUiwgoCCgIKAgoCCgIKAg oCBcCj4gLSCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoChfX2ludGYpLT5yZWdpc3Rlcl9m b2xkZXIsIKAgoCCgIFwKPiAtIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgJihfX2ludGYp LT5vZmZzZXRfIyNfX25hbWUpOyCgIKAgXAo+IC0goCCgIKAgaWYgKElTX0VSUigoX19pbnRmKS0+ X19uYW1lIyNfb2ZmX2VudHJ5KSCgIKAgoCCgIKAgoCCgIKBcCj4gLSCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgfHwgIShfX2ludGYpLT5fX25hbWUjI19vZmZfZW50cnkpIKAgoCCgIFwKPiAtIKAgoCCg IKAgoCCgIKAgZ290byBleGl0OyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg XAo+IC0goCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCBcCj4gLSCgIKAgoCAoX19pbnRmKS0+X19uYW1lIyNfdmFsX2VudHJ5ID0goCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoFwKPiAtIKAgoCCgIKAgoCBkZWJ1Z2ZzX2NyZWF0ZV9maWxl KF9fc3RyaW5naWZ5KF9fbmFtZSkgIl92YWx1ZSIsIKAgXAo+IC0goCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgU19JUlVTUiB8IFNfSVdVU1IsIKAgoCCgIKAgoCCgIKBcCj4gLSCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCAoX19pbnRmKS0+cmVnaXN0ZXJfZm9sZGVyLCCgIKAgoFwK PiAtIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIChfX2ludGYpLCAmcnQyeDAwZGVidWdf Zm9wXyMjX19uYW1lKTtcCj4gLSCgIKAgoCBpZiAoSVNfRVJSKChfX2ludGYpLT5fX25hbWUjI192 YWxfZW50cnkpIKAgoCCgIKAgoCCgIKAgoFwKPiAtIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCB8fCAh KF9faW50ZiktPl9fbmFtZSMjX3ZhbF9lbnRyeSkgoCCgIKAgXAo+IC0goCCgIKAgoCCgIKAgoCBn b3RvIGV4aXQ7IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKBcCj4gKyNkZWZp bmUgUlQyWDAwREVCVUdGU19DUkVBVEVfUkVHSVNURVJfRU5UUlkoX19pbnRmLCBfX25hbWUpIKAg oCCgIKAgoCCgIKAgoCCgIKBcCj4gKyh7IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCBcCj4gKyCgIKAgoCBp ZihkZWJ1Zy0+X19uYW1lLnJlYWQpIHsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKBcCj4gKyCgIKAgoCCgIKAgoCCgIChfX2ludGYpLT5fX25hbWUjI19vZmZf ZW50cnkgPSCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKBcCj4gKyCgIKAgoCCgIKAg oCCgIGRlYnVnZnNfY3JlYXRlX3UzMihfX3N0cmluZ2lmeShfX25hbWUpICJfb2Zmc2V0IiwgoCCg IKAgoCCgIKAgoCBcCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgU19J UlVTUiB8IFNfSVdVU1IsIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCBcCj4gKyCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgKF9faW50ZiktPnJlZ2lzdGVyX2ZvbGRlciwgoCCgIKAg oCCgIKAgoCBcCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgJihfX2lu dGYpLT5vZmZzZXRfIyNfX25hbWUpOyCgIKAgoCCgIKAgoCBcCj4gKyCgIKAgoCCgIKAgoCCgIGlm IChJU19FUlIoKF9faW50ZiktPl9fbmFtZSMjX29mZl9lbnRyeSkgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKBcCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCB8fCAhKF9faW50ZiktPl9f bmFtZSMjX29mZl9lbnRyeSkgoCCgIKAgoCCgIKAgoCBcCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgZ290byBleGl0OyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKBcCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCBcCj4gKyCgIKAgoCCgIKAgoCCgIChfX2ludGYp LT5fX25hbWUjI192YWxfZW50cnkgPSCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKBc Cj4gKyCgIKAgoCCgIKAgoCCgIGRlYnVnZnNfY3JlYXRlX2ZpbGUoX19zdHJpbmdpZnkoX19uYW1l KSAiX3ZhbHVlIiwgoCCgIKAgoCCgIKAgoCBcCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIFNfSVJVU1IgfCBTX0lXVVNSLCCgIKAgoCCgIKAgoCCgIKAgoCCgIKBcCj4g KyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIChfX2ludGYpLT5yZWdpc3Rl cl9mb2xkZXIsIKAgoCCgIKAgoCCgIKBcCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIChfX2ludGYpLCAmcnQyeDAwZGVidWdfZm9wXyMjX19uYW1lKTsgoCBcCj4gKyCg IKAgoCCgIKAgoCCgIGlmIChJU19FUlIoKF9faW50ZiktPl9fbmFtZSMjX3ZhbF9lbnRyeSkgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKBcCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCB8 fCAhKF9faW50ZiktPl9fbmFtZSMjX3ZhbF9lbnRyeSkgoCCgIKAgoCCgIKAgoCBcCj4gKyCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgZ290byBleGl0OyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKBcCj4gKyCgIKAgoCB9IGVsc2UgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKBcCj4gKyCgIKAgoCCg IKAgoCCgIERFQlVHKHJ0MngwMGRldiwgIlVuc3VwcG9ydGVkIHJlZ2lzdGVyIG9uIHRoaXMgZGV2 aWNlOiAiIKAgoCCgIKBcCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgX19zdHJpbmdpZnkoX19u YW1lKSAiXG4iKTsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKBcCj4goH0pCgpJIGRvbid0 IHRoaW5rIHdlIG5lZWQgdG8gcHJpbnQgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIGxvZywgdGhpcyB3 aWxsCm9ubHkgY29uZnVzZSB1c2Vycy4KVGhlIGRyaXZlciBpbnRlbnRpb25hbGx5IGRpZG4ndCBy ZWdpc3RlciB0aGUgcmVnaXN0ZXIgdHlwZSwgc28gaXQgaXMKbm90IHdvcnRoIHRoZSB3YXJuaW5n IHRvIHRoZSB1c2VyLgoKSXZvCg== ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3 1/2] rt2x00: debugfs support - allow a register to be empty 2012-04-20 7:03 ` [PATCH v3 1/2] rt2x00: debugfs support - allow a register to be empty Ivo Van Doorn @ 2012-04-20 15:48 ` Anisse Astier 2012-04-21 12:54 ` Ivo Van Doorn 0 siblings, 1 reply; 10+ messages in thread From: Anisse Astier @ 2012-04-20 15:48 UTC (permalink / raw) To: Ivo Van Doorn Cc: linux-wireless, users, linville, Gertjan van Wingerde, Helmut Schaa On Fri, 20 Apr 2012 09:03:00 +0200, Ivo Van Doorn <ivdoorn@gmail.com> wrote : > Hi, > > I'm almost completely happy with this patch. :) > > > @@ -694,25 +693,29 @@ 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; \ > > + } else \ > > + DEBUG(rt2x00dev, "Unsupported register on this device: " \ > > + __stringify(__name) "\n"); \ > > }) > > I don't think we need to print error messages to the log, this will > only confuse users. > The driver intentionally didn't register the register type, so it is > not worth the warning to the user. > > Ivo Sure :-) From: Anisse Astier <anisse@astier.eu> Date: Thu, 19 Apr 2012 15:04:52 +0200 Subject: [PATCH v4 1/2] 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> --- Changes since v3: - Don't print a debug message when register type isn't registered --- drivers/net/wireless/rt2x00/rt2x00debug.c | 71 +++++++++++++++-------------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/drivers/net/wireless/rt2x00/rt2x00debug.c b/drivers/net/wireless/rt2x00/rt2x00debug.c index 78787fc..5bb1221 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, 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); -- 1.7.9.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v3 1/2] rt2x00: debugfs support - allow a register to be empty 2012-04-20 15:48 ` Anisse Astier @ 2012-04-21 12:54 ` Ivo Van Doorn 0 siblings, 0 replies; 10+ messages in thread From: Ivo Van Doorn @ 2012-04-21 12:54 UTC (permalink / raw) To: Anisse Astier Cc: linux-wireless, users, linville, Gertjan van Wingerde, Helmut Schaa SGksCgo+IEZyb206IEFuaXNzZSBBc3RpZXIgPGFuaXNzZUBhc3RpZXIuZXU+Cj4gRGF0ZTogVGh1 LCAxOSBBcHIgMjAxMiAxNTowNDo1MiArMDIwMAo+IFN1YmplY3Q6IFtQQVRDSCB2NCAxLzJdIHJ0 MngwMDogZGVidWdmcyBzdXBwb3J0IC0gYWxsb3cgYSByZWdpc3RlciB0byBiZSBlbXB0eQo+Cj4g QWxsb3cgYSByZWdpc3RlciB0byBiZSB1bnNwZWNpZmllZCwgdGhlcmVmb3JlIG5vdCBjcmVhdGlu ZyBpdHMgZGVidWdmcwo+IGZpbGUgZW50cnkuCj4KPiBTaWduZWQtb2ZmLWJ5OiBBbmlzc2UgQXN0 aWVyIDxhbmlzc2VAYXN0aWVyLmV1Pgo+IC0tLQo+IENoYW5nZXMgc2luY2UgdjM6Cj4goC0gRG9u J3QgcHJpbnQgYSBkZWJ1ZyBtZXNzYWdlIHdoZW4gcmVnaXN0ZXIgdHlwZSBpc24ndCByZWdpc3Rl cmVkCj4gLS0tCj4goGRyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBkZWJ1Zy5jIHwg oCA3MSArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+IKAxIGZpbGUgY2hhbmdlZCwgMzYg aW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGRlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9y dDJ4MDAvcnQyeDAwZGVidWcuYwo+IGluZGV4IDc4Nzg3ZmMuLjViYjEyMjEgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGRlYnVnLmMKPiArKysgYi9kcml2 ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwZGVidWcuYwo+IEBAIC02MjQsMjIgKzYyNCwy MSBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqcnQyeDAwZGVidWdfY3JlYXRlX2ZpbGVfY2hpcHNl dChjb25zdCBjaGFyICpuYW1lLAo+IKAgoCCgIKBkYXRhICs9IHNwcmludGYoZGF0YSwgInJldmlz aW9uOlx0JTA0eFxuIiwgaW50Zi0+cnQyeDAwZGV2LT5jaGlwLnJldik7Cj4goCCgIKAgoGRhdGEg Kz0gc3ByaW50ZihkYXRhLCAiXG4iKTsKPiCgIKAgoCCgZGF0YSArPSBzcHJpbnRmKGRhdGEsICJy ZWdpc3Rlclx0YmFzZVx0d29yZHNcdHdvcmRzaXplXG4iKTsKPiAtIKAgoCCgIGRhdGEgKz0gc3By aW50ZihkYXRhLCAiY3NyXHQlZFx0JWRcdCVkXG4iLAo+IC0goCCgIKAgoCCgIKAgoCCgIKAgoCCg IGRlYnVnLT5jc3Iud29yZF9iYXNlLAo+IC0goCCgIKAgoCCgIKAgoCCgIKAgoCCgIGRlYnVnLT5j c3Iud29yZF9jb3VudCwKPiAtIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCBkZWJ1Zy0+Y3NyLndvcmRf c2l6ZSk7Cj4gLSCgIKAgoCBkYXRhICs9IHNwcmludGYoZGF0YSwgImVlcHJvbVx0JWRcdCVkXHQl ZFxuIiwKPiAtIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCBkZWJ1Zy0+ZWVwcm9tLndvcmRfYmFzZSwK PiAtIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCBkZWJ1Zy0+ZWVwcm9tLndvcmRfY291bnQsCj4gLSCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgZGVidWctPmVlcHJvbS53b3JkX3NpemUpOwo+IC0goCCgIKAg ZGF0YSArPSBzcHJpbnRmKGRhdGEsICJiYnBcdCVkXHQlZFx0JWRcbiIsCj4gLSCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgZGVidWctPmJicC53b3JkX2Jhc2UsCj4gLSCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgZGVidWctPmJicC53b3JkX2NvdW50LAo+IC0goCCgIKAgoCCgIKAgoCCgIKAgoCCgIGRlYnVn LT5iYnAud29yZF9zaXplKTsKPiAtIKAgoCCgIGRhdGEgKz0gc3ByaW50ZihkYXRhLCAicmZcdCVk XHQlZFx0JWRcbiIsCj4gLSCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgZGVidWctPnJmLndvcmRfYmFz ZSwKPiAtIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCBkZWJ1Zy0+cmYud29yZF9jb3VudCwKPiAtIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCBkZWJ1Zy0+cmYud29yZF9zaXplKTsKPiArI2RlZmluZSBSVDJY MDBERUJVR0ZTX1NQUklOVEZfUkVHSVNURVIoX19uYW1lKSCgIKAgoCCgIKAgoCCgIKAgXAo+ICt7 IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKBcCj4gKyCgIKAgoCBpZihkZWJ1Zy0+X19uYW1lLnJlYWQpIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoFwKPiArIKAgoCCgIKAgoCCgIKAgZGF0YSArPSBzcHJpbnRmKGRhdGEs IF9fc3RyaW5naWZ5KF9fbmFtZSkgoCCgIKAgXAo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgIlx0JWRcdCVkXHQlZFxuIiwgoCCgIKAgoCCgIKAgoCBcCj4gKyCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCBkZWJ1Zy0+X19uYW1lLndvcmRfYmFzZSwgoCCgIKAgoFwKPiArIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIGRlYnVnLT5fX25hbWUud29yZF9jb3VudCwgoCCg IKAgXAo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgZGVidWctPl9fbmFtZS53b3Jk X3NpemUpOyCgIKAgoCBcCj4gK30KPiArIKAgoCCgIFJUMlgwMERFQlVHRlNfU1BSSU5URl9SRUdJ U1RFUihjc3IpOwo+ICsgoCCgIKAgUlQyWDAwREVCVUdGU19TUFJJTlRGX1JFR0lTVEVSKGVlcHJv bSk7Cj4gKyCgIKAgoCBSVDJYMDBERUJVR0ZTX1NQUklOVEZfUkVHSVNURVIoYmJwKTsKPiArIKAg oCCgIFJUMlgwMERFQlVHRlNfU1BSSU5URl9SRUdJU1RFUihyZik7Cj4gKyN1bmRlZiBSVDJYMDBE RUJVR0ZTX1NQUklOVEZfUkVHSVNURVIKPiArCj4goCCgIKAgoGJsb2ItPnNpemUgPSBzdHJsZW4o YmxvYi0+ZGF0YSk7Cj4KPiCgIKAgoCCgcmV0dXJuIGRlYnVnZnNfY3JlYXRlX2Jsb2IobmFtZSwg U19JUlVTUiwgaW50Zi0+ZHJpdmVyX2ZvbGRlciwgYmxvYik7Cj4gQEAgLTY5NCwyNSArNjkzLDI3 IEBAIHZvaWQgcnQyeDAwZGVidWdfcmVnaXN0ZXIoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRl dikKPiCgIKAgoCCgaWYgKElTX0VSUihpbnRmLT5yZWdpc3Rlcl9mb2xkZXIpIHx8ICFpbnRmLT5y ZWdpc3Rlcl9mb2xkZXIpCj4goCCgIKAgoCCgIKAgoCCgZ290byBleGl0Owo+Cj4gLSNkZWZpbmUg UlQyWDAwREVCVUdGU19DUkVBVEVfUkVHSVNURVJfRU5UUlkoX19pbnRmLCBfX25hbWUpIKAgoFwK PiAtKHsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgXAo+IC0goCCgIKAgKF9faW50ZiktPl9fbmFtZSMjX29mZl9lbnRyeSA9IKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKBcCj4gLSCgIKAgoCCgIKAgZGVidWdmc19jcmVhdGVfdTMyKF9f c3RyaW5naWZ5KF9fbmFtZSkgIl9vZmZzZXQiLCCgIFwKPiAtIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgU19JUlVTUiB8IFNfSVdVU1IsIKAgoCCgIKAgoCCgIKAgXAo+IC0goCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAoX19pbnRmKS0+cmVnaXN0ZXJfZm9sZGVyLCCgIKAgoCBcCj4g LSCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCYoX19pbnRmKS0+b2Zmc2V0XyMjX19uYW1l KTsgoCCgIFwKPiAtIKAgoCCgIGlmIChJU19FUlIoKF9faW50ZiktPl9fbmFtZSMjX29mZl9lbnRy eSkgoCCgIKAgoCCgIKAgoCCgXAo+IC0goCCgIKAgoCCgIKAgoCCgIKAgoCCgIHx8ICEoX19pbnRm KS0+X19uYW1lIyNfb2ZmX2VudHJ5KSCgIKAgoCBcCj4gLSCgIKAgoCCgIKAgoCCgIGdvdG8gZXhp dDsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoFwKPiAtIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgXAo+IC0g oCCgIKAgKF9faW50ZiktPl9fbmFtZSMjX3ZhbF9lbnRyeSA9IKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKBcCj4gLSCgIKAgoCCgIKAgZGVidWdmc19jcmVhdGVfZmlsZShfX3N0cmluZ2lmeShfX25h bWUpICJfdmFsdWUiLCCgIFwKPiAtIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIFNfSVJV U1IgfCBTX0lXVVNSLCCgIKAgoCCgIKAgoCCgXAo+IC0goCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgKF9faW50ZiktPnJlZ2lzdGVyX2ZvbGRlciwgoCCgIKBcCj4gLSCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCAoX19pbnRmKSwgJnJ0MngwMGRlYnVnX2ZvcF8jI19fbmFtZSk7XAo+ IC0goCCgIKAgaWYgKElTX0VSUigoX19pbnRmKS0+X19uYW1lIyNfdmFsX2VudHJ5KSCgIKAgoCCg IKAgoCCgIKBcCj4gLSCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgfHwgIShfX2ludGYpLT5fX25hbWUj I192YWxfZW50cnkpIKAgoCCgIFwKPiAtIKAgoCCgIKAgoCCgIKAgZ290byBleGl0OyCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgXAo+ICsjZGVmaW5lIFJUMlgwMERFQlVHRlNf Q1JFQVRFX1JFR0lTVEVSX0VOVFJZKF9faW50ZiwgX19uYW1lKSCgIKAgoCCgIKAgoCCgIKAgoCCg XAo+ICsoeyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgXAo+ICsgoCCgIKAgaWYoZGVidWctPl9fbmFtZS5y ZWFkKSB7IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgXAo+ ICsgoCCgIKAgoCCgIKAgoCAoX19pbnRmKS0+X19uYW1lIyNfb2ZmX2VudHJ5ID0goCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgXAo+ICsgoCCgIKAgoCCgIKAgoCBkZWJ1Z2ZzX2NyZWF0 ZV91MzIoX19zdHJpbmdpZnkoX19uYW1lKSAiX29mZnNldCIsIKAgoCCgIKAgoCCgIKAgXAo+ICsg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoFNfSVJVU1IgfCBTX0lXVVNSLCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgXAo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoChfX2ludGYpLT5yZWdpc3Rlcl9mb2xkZXIsIKAgoCCgIKAgoCCgIKAgXAo+ICsgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCYoX19pbnRmKS0+b2Zmc2V0XyMjX19u YW1lKTsgoCCgIKAgoCCgIKAgXAo+ICsgoCCgIKAgoCCgIKAgoCBpZiAoSVNfRVJSKChfX2ludGYp LT5fX25hbWUjI19vZmZfZW50cnkpIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgXAo+ICsgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgfHwgIShfX2ludGYpLT5fX25hbWUjI19vZmZfZW50cnkp IKAgoCCgIKAgoCCgIKAgXAo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIGdvdG8gZXhpdDsgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgXAo+ICsgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgXAo+ICsgoCCgIKAgoCCgIKAgoCAoX19pbnRmKS0+X19uYW1lIyNfdmFsX2Vu dHJ5ID0goCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgXAo+ICsgoCCgIKAgoCCgIKAg oCBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKF9fc3RyaW5naWZ5KF9fbmFtZSkgIl92YWx1ZSIsIKAgoCCg IKAgoCCgIKAgXAo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCBTX0lS VVNSIHwgU19JV1VTUiwgoCCgIKAgoCCgIKAgoCCgIKAgoCCgXAo+ICsgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCAoX19pbnRmKS0+cmVnaXN0ZXJfZm9sZGVyLCCgIKAgoCCg IKAgoCCgXAo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCAoX19pbnRm KSwgJnJ0MngwMGRlYnVnX2ZvcF8jI19fbmFtZSk7IKAgXAo+ICsgoCCgIKAgoCCgIKAgoCBpZiAo SVNfRVJSKChfX2ludGYpLT5fX25hbWUjI192YWxfZW50cnkpIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgXAo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgfHwgIShfX2ludGYpLT5fX25h bWUjI192YWxfZW50cnkpIKAgoCCgIKAgoCCgIKAgXAo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IGdvdG8gZXhpdDsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg XAo+ICsgoCCgIKAgfSCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgXAo+IKB9KQo+Cj4goCCgIKAgoFJUMlgwMERFQlVH RlNfQ1JFQVRFX1JFR0lTVEVSX0VOVFJZKGludGYsIGNzcik7CgpBY2tlZC1ieTogSXZvIHZhbiBE b29ybiA8SXZEb29ybkBnbWFpbC5jb20+Cg== ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 1/2] rt2800: debugfs register access: BBP is 256 bytes big 2012-04-19 9:20 [PATCH v2 1/2] rt2800: debugfs register access: BBP is 256 bytes big Anisse Astier 2012-04-19 9:20 ` [PATCH RFC v2 2/2] rt2x00: Add debugfs access for rfcsr register Anisse Astier @ 2012-04-19 11:02 ` Ivo Van Doorn 1 sibling, 0 replies; 10+ messages in thread From: Ivo Van Doorn @ 2012-04-19 11:02 UTC (permalink / raw) To: Anisse Astier Cc: linux-wireless, users, linville, Gertjan van Wingerde, Helmut Schaa On Thu, Apr 19, 2012 at 11:20 AM, Anisse Astier <anisse@astier.eu> wrote: > We're already using BBP for values > 128. Make that explicit and allow > debugfs access. > > Signed-off-by: Anisse Astier <anisse@astier.eu> Acked-by: Ivo van Doorn <IvDoorn@gmail.com> > --- > Changes since v1: none > --- > drivers/net/wireless/rt2x00/rt2800.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h > index 1ce2634..d91f4f6 100644 > --- a/drivers/net/wireless/rt2x00/rt2800.h > +++ b/drivers/net/wireless/rt2x00/rt2800.h > @@ -99,7 +99,7 @@ > #define EEPROM_BASE 0x0000 > #define EEPROM_SIZE 0x0110 > #define BBP_BASE 0x0000 > -#define BBP_SIZE 0x0080 > +#define BBP_SIZE 0x00ff > #define RF_BASE 0x0004 > #define RF_SIZE 0x0010 > > -- > 1.7.9.4 > ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2012-04-21 12:54 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2012-04-19 9:20 [PATCH v2 1/2] rt2800: debugfs register access: BBP is 256 bytes big Anisse Astier 2012-04-19 9:20 ` [PATCH RFC v2 2/2] rt2x00: Add debugfs access for rfcsr register Anisse Astier 2012-04-19 11:07 ` Ivo Van Doorn 2012-04-19 13:53 ` [PATCH v3 1/2] rt2x00: debugfs support - allow a register to be empty Anisse Astier 2012-04-19 13:53 ` [PATCH v3 2/2] rt2x00: Add debugfs access for rfcsr register Anisse Astier 2012-04-20 7:03 ` Ivo Van Doorn 2012-04-20 7:03 ` [PATCH v3 1/2] rt2x00: debugfs support - allow a register to be empty Ivo Van Doorn 2012-04-20 15:48 ` Anisse Astier 2012-04-21 12:54 ` Ivo Van Doorn 2012-04-19 11:02 ` [PATCH v2 1/2] rt2800: debugfs register access: BBP is 256 bytes big Ivo Van Doorn
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.