USB: OHCI: use the ohci structure directly in debugfs files.
[firefly-linux-kernel-4.4.55.git] / drivers / usb / host / ohci-dbg.c
index d3269656aa4d8c81036b6e5880123c42a254c821..811f5dfdc582447c18716a79e1bb055735975fff 100644 (file)
@@ -431,7 +431,7 @@ static struct dentry *ohci_debug_root;
 
 struct debug_buffer {
        ssize_t (*fill_func)(struct debug_buffer *);    /* fill method */
-       struct device *dev;
+       struct ohci_hcd *ohci;
        struct mutex mutex;     /* protect filling of buffer */
        size_t count;           /* number of characters filled into buffer */
        char *page;
@@ -505,15 +505,11 @@ show_list (struct ohci_hcd *ohci, char *buf, size_t count, struct ed *ed)
 
 static ssize_t fill_async_buffer(struct debug_buffer *buf)
 {
-       struct usb_bus          *bus;
-       struct usb_hcd          *hcd;
        struct ohci_hcd         *ohci;
        size_t                  temp;
        unsigned long           flags;
 
-       bus = dev_get_drvdata(buf->dev);
-       hcd = bus_to_hcd(bus);
-       ohci = hcd_to_ohci(hcd);
+       ohci = buf->ohci;
 
        /* display control and bulk lists together, for simplicity */
        spin_lock_irqsave (&ohci->lock, flags);
@@ -529,8 +525,6 @@ static ssize_t fill_async_buffer(struct debug_buffer *buf)
 
 static ssize_t fill_periodic_buffer(struct debug_buffer *buf)
 {
-       struct usb_bus          *bus;
-       struct usb_hcd          *hcd;
        struct ohci_hcd         *ohci;
        struct ed               **seen, *ed;
        unsigned long           flags;
@@ -542,9 +536,7 @@ static ssize_t fill_periodic_buffer(struct debug_buffer *buf)
                return 0;
        seen_count = 0;
 
-       bus = (struct usb_bus *)dev_get_drvdata(buf->dev);
-       hcd = bus_to_hcd(bus);
-       ohci = hcd_to_ohci(hcd);
+       ohci = buf->ohci;
        next = buf->page;
        size = PAGE_SIZE;
 
@@ -626,7 +618,6 @@ static ssize_t fill_periodic_buffer(struct debug_buffer *buf)
 
 static ssize_t fill_registers_buffer(struct debug_buffer *buf)
 {
-       struct usb_bus          *bus;
        struct usb_hcd          *hcd;
        struct ohci_hcd         *ohci;
        struct ohci_regs __iomem *regs;
@@ -635,9 +626,8 @@ static ssize_t fill_registers_buffer(struct debug_buffer *buf)
        char                    *next;
        u32                     rdata;
 
-       bus = (struct usb_bus *)dev_get_drvdata(buf->dev);
-       hcd = bus_to_hcd(bus);
-       ohci = hcd_to_ohci(hcd);
+       ohci = buf->ohci;
+       hcd = ohci_to_hcd(ohci);
        regs = ohci->regs;
        next = buf->page;
        size = PAGE_SIZE;
@@ -710,7 +700,7 @@ done:
        return PAGE_SIZE - size;
 }
 
-static struct debug_buffer *alloc_buffer(struct device *dev,
+static struct debug_buffer *alloc_buffer(struct ohci_hcd *ohci,
                                ssize_t (*fill_func)(struct debug_buffer *))
 {
        struct debug_buffer *buf;
@@ -718,7 +708,7 @@ static struct debug_buffer *alloc_buffer(struct device *dev,
        buf = kzalloc(sizeof(struct debug_buffer), GFP_KERNEL);
 
        if (buf) {
-               buf->dev = dev;
+               buf->ohci = ohci;
                buf->fill_func = fill_func;
                mutex_init(&buf->mutex);
        }
@@ -810,26 +800,25 @@ static int debug_registers_open(struct inode *inode, struct file *file)
 static inline void create_debug_files (struct ohci_hcd *ohci)
 {
        struct usb_bus *bus = &ohci_to_hcd(ohci)->self;
-       struct device *dev = bus->dev;
 
        ohci->debug_dir = debugfs_create_dir(bus->bus_name, ohci_debug_root);
        if (!ohci->debug_dir)
                goto dir_error;
 
        ohci->debug_async = debugfs_create_file("async", S_IRUGO,
-                                               ohci->debug_dir, dev,
+                                               ohci->debug_dir, ohci,
                                                &debug_async_fops);
        if (!ohci->debug_async)
                goto async_error;
 
        ohci->debug_periodic = debugfs_create_file("periodic", S_IRUGO,
-                                                  ohci->debug_dir, dev,
+                                                  ohci->debug_dir, ohci,
                                                   &debug_periodic_fops);
        if (!ohci->debug_periodic)
                goto periodic_error;
 
        ohci->debug_registers = debugfs_create_file("registers", S_IRUGO,
-                                                   ohci->debug_dir, dev,
+                                                   ohci->debug_dir, ohci,
                                                    &debug_registers_fops);
        if (!ohci->debug_registers)
                goto registers_error;