OSDN Git Service

usb: dwc3: debugfs: convert our regdump to use regsets
authorFelipe Balbi <balbi@ti.com>
Fri, 18 Jan 2013 08:21:34 +0000 (10:21 +0200)
committerFelipe Balbi <balbi@ti.com>
Fri, 18 Jan 2013 08:21:34 +0000 (10:21 +0200)
regset is a generic implementation of regdump
utility through debugfs.

Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/dwc3/core.h
drivers/usb/dwc3/debugfs.c

index 5f79d9f..b7ca82c 100644 (file)
@@ -723,6 +723,7 @@ struct dwc3 {
 
        struct dwc3_hwparams    hwparams;
        struct dentry           *root;
+       struct debugfs_regset32 *regset;
 
        u8                      test_mode;
        u8                      test_mode_nr;
index 5945aad..aff8fd3 100644 (file)
@@ -59,7 +59,7 @@
        .offset = DWC3_ ##nm - DWC3_GLOBALS_REGS_START, \
 }
 
-static const struct debugfs_reg32 dwc3_regs[] = {
+static struct debugfs_reg32 dwc3_regs[] = {
        dump_register(GSBUSCFG0),
        dump_register(GSBUSCFG1),
        dump_register(GTXTHRCFG),
@@ -376,27 +376,6 @@ static const struct debugfs_reg32 dwc3_regs[] = {
        dump_register(OSTS),
 };
 
-static int dwc3_regdump_show(struct seq_file *s, void *unused)
-{
-       struct dwc3             *dwc = s->private;
-
-       seq_printf(s, "DesignWare USB3 Core Register Dump\n");
-       debugfs_print_regs32(s, dwc3_regs, ARRAY_SIZE(dwc3_regs),
-                            dwc->regs, "");
-       return 0;
-}
-
-static int dwc3_regdump_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, dwc3_regdump_show, inode->i_private);
-}
-
-static const struct file_operations dwc3_regdump_fops = {
-       .open                   = dwc3_regdump_open,
-       .read                   = seq_read,
-       .release                = single_release,
-};
-
 static int dwc3_mode_show(struct seq_file *s, void *unused)
 {
        struct dwc3             *dwc = s->private;
@@ -666,8 +645,17 @@ int dwc3_debugfs_init(struct dwc3 *dwc)
 
        dwc->root = root;
 
-       file = debugfs_create_file("regdump", S_IRUGO, root, dwc,
-                       &dwc3_regdump_fops);
+       dwc->regset = kzalloc(sizeof(*dwc->regset), GFP_KERNEL);
+       if (!dwc->regset) {
+               ret = -ENOMEM;
+               goto err1;
+       }
+
+       dwc->regset->regs = dwc3_regs;
+       dwc->regset->nregs = ARRAY_SIZE(dwc3_regs);
+       dwc->regset->base = dwc->regs;
+
+       file = debugfs_create_regset32("regdump", S_IRUGO, root, dwc->regset);
        if (!file) {
                ret = -ENOMEM;
                goto err1;