Bluetooth: Convert Marvell driver to use per adapter debugfs
authorMarcel Holtmann <marcel@holtmann.org>
Mon, 8 Feb 2010 15:47:04 +0000 (16:47 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Sat, 27 Feb 2010 13:05:38 +0000 (14:05 +0100)
The debugfs support of the Marvell driver is buggy. It is limited to one
controller per system. Fix this by using the controller specific debugfs
directory as parent.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/bluetooth/btmrvl_debugfs.c

index d43b5cb864ef86fcb70fe6aa6e678fa275a196e1..3126a3d0c45c0e7a43350ad41e45018a39968dab 100644 (file)
@@ -26,7 +26,8 @@
 #include "btmrvl_drv.h"
 
 struct btmrvl_debugfs_data {
-       struct dentry *root_dir, *config_dir, *status_dir;
+       struct dentry *config_dir;
+       struct dentry *status_dir;
 
        /* config */
        struct dentry *psmode;
@@ -363,6 +364,9 @@ void btmrvl_debugfs_init(struct hci_dev *hdev)
        struct btmrvl_private *priv = hdev->driver_data;
        struct btmrvl_debugfs_data *dbg;
 
+       if (!hdev->debugfs)
+               return;
+
        dbg = kzalloc(sizeof(*dbg), GFP_KERNEL);
        priv->debugfs_data = dbg;
 
@@ -371,9 +375,7 @@ void btmrvl_debugfs_init(struct hci_dev *hdev)
                return;
        }
 
-       dbg->root_dir = debugfs_create_dir("btmrvl", NULL);
-
-       dbg->config_dir = debugfs_create_dir("config", dbg->root_dir);
+       dbg->config_dir = debugfs_create_dir("config", hdev->debugfs);
 
        dbg->psmode = debugfs_create_file("psmode", 0644, dbg->config_dir,
                                hdev->driver_data, &btmrvl_psmode_fops);
@@ -388,7 +390,7 @@ void btmrvl_debugfs_init(struct hci_dev *hdev)
        dbg->hscfgcmd = debugfs_create_file("hscfgcmd", 0644, dbg->config_dir,
                                hdev->driver_data, &btmrvl_hscfgcmd_fops);
 
-       dbg->status_dir = debugfs_create_dir("status", dbg->root_dir);
+       dbg->status_dir = debugfs_create_dir("status", hdev->debugfs);
        dbg->curpsmode = debugfs_create_file("curpsmode", 0444,
                                                dbg->status_dir,
                                                hdev->driver_data,
@@ -425,7 +427,5 @@ void btmrvl_debugfs_remove(struct hci_dev *hdev)
        debugfs_remove(dbg->txdnldready);
        debugfs_remove(dbg->status_dir);
 
-       debugfs_remove(dbg->root_dir);
-
        kfree(dbg);
 }