]> nv-tegra.nvidia Code Review - linux-2.6.git/blobdiff - drivers/net/wireless/rt2x00/rt2x00debug.c
rt2x00: Add chipset version to chipset debugfs entry
[linux-2.6.git] / drivers / net / wireless / rt2x00 / rt2x00debug.c
index 9275d6f9517e32c714a179923f2b162c157cbd8a..3aa7e0ab513bf47e05cf5829b757b4addbf3dffb 100644 (file)
        Abstract: rt2x00 debugfs specific routines.
  */
 
-/*
- * Set enviroment defines for rt2x00.h
- */
-#define DRV_NAME "rt2x00lib"
-
 #include <linux/debugfs.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
@@ -55,18 +50,20 @@ struct rt2x00debug_intf {
        /*
         * Debugfs entries for:
         * - driver folder
-        * - driver file
-        * - chipset file
-        * - device flags file
-        * - register offset/value files
-        * - eeprom offset/value files
-        * - bbp offset/value files
-        * - rf offset/value files
+        *   - driver file
+        *   - chipset file
+        *   - device flags file
+        *   - register folder
+        *     - csr offset/value files
+        *     - eeprom offset/value files
+        *     - bbp offset/value files
+        *     - rf offset/value files
         */
        struct dentry *driver_folder;
        struct dentry *driver_entry;
        struct dentry *chipset_entry;
        struct dentry *dev_flags;
+       struct dentry *register_folder;
        struct dentry *csr_off_entry;
        struct dentry *csr_val_entry;
        struct dentry *eeprom_off_entry;
@@ -120,7 +117,7 @@ static ssize_t rt2x00debug_read_##__name(struct file *file, \
                                         size_t length,         \
                                         loff_t *offset)        \
 {                                                              \
-       struct rt2x00debug_intf *intf = file->private_data;     \
+       struct rt2x00debug_intf *intf = file->private_data;     \
        const struct rt2x00debug *debug = intf->debug;          \
        char line[16];                                          \
        size_t size;                                            \
@@ -150,7 +147,7 @@ static ssize_t rt2x00debug_write_##__name(struct file *file,        \
                                          size_t length,        \
                                          loff_t *offset)       \
 {                                                              \
-       struct rt2x00debug_intf *intf = file->private_data;     \
+       struct rt2x00debug_intf *intf = file->private_data;     \
        const struct rt2x00debug *debug = intf->debug;          \
        char line[16];                                          \
        size_t size;                                            \
@@ -254,16 +251,21 @@ static struct dentry *rt2x00debug_create_file_chipset(const char *name,
        const struct rt2x00debug *debug = intf->debug;
        char *data;
 
-       data = kzalloc(4 * PRINT_LINE_LEN_MAX, GFP_KERNEL);
+       data = kzalloc(8 * PRINT_LINE_LEN_MAX, GFP_KERNEL);
        if (!data)
                return NULL;
 
-       blob->data = data;
+       data += sprintf(data, "rt chip: %04x\n", intf->rt2x00dev->chip.rt);
+       data += sprintf(data, "rf chip: %04x\n", intf->rt2x00dev->chip.rf);
+       data += sprintf(data, "revision:%08x\n", intf->rt2x00dev->chip.rev);
+       data += sprintf(data, "\n");
        data += sprintf(data, "csr length: %d\n", debug->csr.word_count);
        data += sprintf(data, "eeprom length: %d\n", debug->eeprom.word_count);
        data += sprintf(data, "bbp length: %d\n", debug->bbp.word_count);
        data += sprintf(data, "rf length: %d\n", debug->rf.word_count);
-       blob->size = strlen(blob->data);
+
+       blob->data = data;
+       blob->size = strlen(data);
 
        return debugfs_create_blob(name, S_IRUGO, intf->driver_folder, blob);
 }
@@ -306,12 +308,17 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev)
        if (IS_ERR(intf->dev_flags))
                goto exit;
 
-#define RT2X00DEBUGFS_CREATE_ENTRY(__intf, __name)             \
+       intf->register_folder =
+           debugfs_create_dir("register", intf->driver_folder);
+       if (IS_ERR(intf->register_folder))
+               goto exit;
+
+#define RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(__intf, __name)    \
 ({                                                             \
        (__intf)->__name##_off_entry =                          \
            debugfs_create_u32(__stringify(__name) "_offset",   \
                               S_IRUGO | S_IWUSR,               \
-                              (__intf)->driver_folder,         \
+                              (__intf)->register_folder,       \
                               &(__intf)->offset_##__name);     \
        if (IS_ERR((__intf)->__name##_off_entry))               \
                goto exit;                                      \
@@ -319,18 +326,18 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev)
        (__intf)->__name##_val_entry =                          \
            debugfs_create_file(__stringify(__name) "_value",   \
                                S_IRUGO | S_IWUSR,              \
-                               (__intf)->driver_folder,        \
+                               (__intf)->register_folder,      \
                                (__intf), &rt2x00debug_fop_##__name);\
        if (IS_ERR((__intf)->__name##_val_entry))               \
                goto exit;                                      \
 })
 
-       RT2X00DEBUGFS_CREATE_ENTRY(intf, csr);
-       RT2X00DEBUGFS_CREATE_ENTRY(intf, eeprom);
-       RT2X00DEBUGFS_CREATE_ENTRY(intf, bbp);
-       RT2X00DEBUGFS_CREATE_ENTRY(intf, rf);
+       RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, csr);
+       RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, eeprom);
+       RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, bbp);
+       RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, rf);
 
-#undef RT2X00DEBUGFS_CREATE_ENTRY
+#undef RT2X00DEBUGFS_CREATE_REGISTER_ENTRY
 
        return;
 
@@ -356,6 +363,7 @@ void rt2x00debug_deregister(struct rt2x00_dev *rt2x00dev)
        debugfs_remove(intf->eeprom_off_entry);
        debugfs_remove(intf->csr_val_entry);
        debugfs_remove(intf->csr_off_entry);
+       debugfs_remove(intf->register_folder);
        debugfs_remove(intf->dev_flags);
        debugfs_remove(intf->chipset_entry);
        debugfs_remove(intf->driver_entry);