--- /dev/null
+--- a/drivers/usb/host/adm5120-dbg.c
++++ b/drivers/usb/host/adm5120-dbg.c
+@@ -419,7 +419,7 @@ static struct dentry *admhc_debug_root;
+
+ struct debug_buffer {
+ ssize_t (*fill_func)(struct debug_buffer *); /* fill method */
+- struct device *dev;
++ struct admhcd *ahcd;
+ struct mutex mutex; /* protect filling of buffer */
+ size_t count; /* number of characters filled into buffer */
+ char *page;
+@@ -494,15 +494,11 @@ show_list(struct admhcd *ahcd, char *buf
+
+ static ssize_t fill_async_buffer(struct debug_buffer *buf)
+ {
+- struct usb_bus *bus;
+- struct usb_hcd *hcd;
+ struct admhcd *ahcd;
+ size_t temp;
+ unsigned long flags;
+
+- bus = dev_get_drvdata(buf->dev);
+- hcd = bus_to_hcd(bus);
+- ahcd = hcd_to_admhcd(hcd);
++ ahcd = buf->ahcd;
+
+ spin_lock_irqsave(&ahcd->lock, flags);
+ temp = show_list(ahcd, buf->page, PAGE_SIZE, ahcd->ed_head);
+@@ -516,8 +512,6 @@ static ssize_t fill_async_buffer(struct
+
+ static ssize_t fill_periodic_buffer(struct debug_buffer *buf)
+ {
+- struct usb_bus *bus;
+- struct usb_hcd *hcd;
+ struct admhcd *ahcd;
+ struct ed **seen, *ed;
+ unsigned long flags;
+@@ -529,9 +523,7 @@ static ssize_t fill_periodic_buffer(stru
+ return 0;
+ seen_count = 0;
+
+- bus = dev_get_drvdata(buf->dev);
+- hcd = bus_to_hcd(bus);
+- ahcd = hcd_to_admhcd(hcd);
++ ahcd = buf->ahcd;
+ next = buf->page;
+ size = PAGE_SIZE;
+
+@@ -613,7 +605,6 @@ static ssize_t fill_periodic_buffer(stru
+
+ static ssize_t fill_registers_buffer(struct debug_buffer *buf)
+ {
+- struct usb_bus *bus;
+ struct usb_hcd *hcd;
+ struct admhcd *ahcd;
+ struct admhcd_regs __iomem *regs;
+@@ -622,9 +613,8 @@ static ssize_t fill_registers_buffer(str
+ char *next;
+ u32 rdata;
+
+- bus = dev_get_drvdata(buf->dev);
+- hcd = bus_to_hcd(bus);
+- ahcd = hcd_to_admhcd(hcd);
++ ahcd = buf->ahcd;
++ hcd = admhcd_to_hcd(ahcd);
+ regs = ahcd->regs;
+ next = buf->page;
+ size = PAGE_SIZE;
+@@ -689,7 +679,7 @@ done:
+ }
+
+
+-static struct debug_buffer *alloc_buffer(struct device *dev,
++static struct debug_buffer *alloc_buffer(struct admhcd *ahcd,
+ ssize_t (*fill_func)(struct debug_buffer *))
+ {
+ struct debug_buffer *buf;
+@@ -697,7 +687,7 @@ static struct debug_buffer *alloc_buffer
+ buf = kzalloc(sizeof(struct debug_buffer), GFP_KERNEL);
+
+ if (buf) {
+- buf->dev = dev;
++ buf->ahcd = ahcd;
+ buf->fill_func = fill_func;
+ mutex_init(&buf->mutex);
+ }
+@@ -790,26 +780,25 @@ static int debug_registers_open(struct i
+ static inline void create_debug_files(struct admhcd *ahcd)
+ {
+ struct usb_bus *bus = &admhcd_to_hcd(ahcd)->self;
+- struct device *dev = bus->dev;
+
+ ahcd->debug_dir = debugfs_create_dir(bus->bus_name, admhc_debug_root);
+ if (!ahcd->debug_dir)
+ goto dir_error;
+
+ ahcd->debug_async = debugfs_create_file("async", S_IRUGO,
+- ahcd->debug_dir, dev,
++ ahcd->debug_dir, ahcd,
+ &debug_async_fops);
+ if (!ahcd->debug_async)
+ goto async_error;
+
+ ahcd->debug_periodic = debugfs_create_file("periodic", S_IRUGO,
+- ahcd->debug_dir, dev,
++ ahcd->debug_dir, ahcd,
+ &debug_periodic_fops);
+ if (!ahcd->debug_periodic)
+ goto periodic_error;
+
+ ahcd->debug_registers = debugfs_create_file("registers", S_IRUGO,
+- ahcd->debug_dir, dev,
++ ahcd->debug_dir, ahcd,
+ &debug_registers_fops);
+ if (!ahcd->debug_registers)
+ goto registers_error;