diff options
-rw-r--r-- | drivers/usb/core/buffer.c | 4 | ||||
-rw-r--r-- | drivers/usb/core/hcd.c | 67 | ||||
-rw-r--r-- | drivers/usb/core/hcd.h | 13 | ||||
-rw-r--r-- | drivers/usb/core/usb.c | 5 | ||||
-rw-r--r-- | drivers/usb/gadget/dummy_hcd.c | 8 | ||||
-rw-r--r-- | drivers/usb/host/ehci-dbg.c | 6 | ||||
-rw-r--r-- | drivers/usb/host/ohci-dbg.c | 6 | ||||
-rw-r--r-- | drivers/usb/mon/mon_main.c | 6 | ||||
-rw-r--r-- | include/linux/usb.h | 3 |
9 files changed, 44 insertions, 74 deletions
diff --git a/drivers/usb/core/buffer.c b/drivers/usb/core/buffer.c index f4f4ef0f377a..840442a25b61 100644 --- a/drivers/usb/core/buffer.c +++ b/drivers/usb/core/buffer.c | |||
@@ -104,7 +104,7 @@ void *hcd_buffer_alloc ( | |||
104 | dma_addr_t *dma | 104 | dma_addr_t *dma |
105 | ) | 105 | ) |
106 | { | 106 | { |
107 | struct usb_hcd *hcd = bus->hcpriv; | 107 | struct usb_hcd *hcd = bus_to_hcd(bus); |
108 | int i; | 108 | int i; |
109 | 109 | ||
110 | /* some USB hosts just use PIO */ | 110 | /* some USB hosts just use PIO */ |
@@ -127,7 +127,7 @@ void hcd_buffer_free ( | |||
127 | dma_addr_t dma | 127 | dma_addr_t dma |
128 | ) | 128 | ) |
129 | { | 129 | { |
130 | struct usb_hcd *hcd = bus->hcpriv; | 130 | struct usb_hcd *hcd = bus_to_hcd(bus); |
131 | int i; | 131 | int i; |
132 | 132 | ||
133 | if (!addr) | 133 | if (!addr) |
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index 0cc14206920a..9dfc812de034 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c | |||
@@ -664,31 +664,6 @@ static int usb_rh_urb_dequeue (struct usb_hcd *hcd, struct urb *urb) | |||
664 | 664 | ||
665 | /*-------------------------------------------------------------------------*/ | 665 | /*-------------------------------------------------------------------------*/ |
666 | 666 | ||
667 | /* exported only within usbcore */ | ||
668 | struct usb_bus *usb_bus_get(struct usb_bus *bus) | ||
669 | { | ||
670 | if (bus) | ||
671 | kref_get(&bus->kref); | ||
672 | return bus; | ||
673 | } | ||
674 | |||
675 | static void usb_host_release(struct kref *kref) | ||
676 | { | ||
677 | struct usb_bus *bus = container_of(kref, struct usb_bus, kref); | ||
678 | |||
679 | if (bus->release) | ||
680 | bus->release(bus); | ||
681 | } | ||
682 | |||
683 | /* exported only within usbcore */ | ||
684 | void usb_bus_put(struct usb_bus *bus) | ||
685 | { | ||
686 | if (bus) | ||
687 | kref_put(&bus->kref, usb_host_release); | ||
688 | } | ||
689 | |||
690 | /*-------------------------------------------------------------------------*/ | ||
691 | |||
692 | static struct class *usb_host_class; | 667 | static struct class *usb_host_class; |
693 | 668 | ||
694 | int usb_host_init(void) | 669 | int usb_host_init(void) |
@@ -720,15 +695,12 @@ static void usb_bus_init (struct usb_bus *bus) | |||
720 | bus->devnum_next = 1; | 695 | bus->devnum_next = 1; |
721 | 696 | ||
722 | bus->root_hub = NULL; | 697 | bus->root_hub = NULL; |
723 | bus->hcpriv = NULL; | ||
724 | bus->busnum = -1; | 698 | bus->busnum = -1; |
725 | bus->bandwidth_allocated = 0; | 699 | bus->bandwidth_allocated = 0; |
726 | bus->bandwidth_int_reqs = 0; | 700 | bus->bandwidth_int_reqs = 0; |
727 | bus->bandwidth_isoc_reqs = 0; | 701 | bus->bandwidth_isoc_reqs = 0; |
728 | 702 | ||
729 | INIT_LIST_HEAD (&bus->bus_list); | 703 | INIT_LIST_HEAD (&bus->bus_list); |
730 | |||
731 | kref_init(&bus->kref); | ||
732 | } | 704 | } |
733 | 705 | ||
734 | /*-------------------------------------------------------------------------*/ | 706 | /*-------------------------------------------------------------------------*/ |
@@ -1081,7 +1053,7 @@ static void urb_unlink (struct urb *urb) | |||
1081 | int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags) | 1053 | int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags) |
1082 | { | 1054 | { |
1083 | int status; | 1055 | int status; |
1084 | struct usb_hcd *hcd = urb->dev->bus->hcpriv; | 1056 | struct usb_hcd *hcd = bus_to_hcd(urb->dev->bus); |
1085 | struct usb_host_endpoint *ep; | 1057 | struct usb_host_endpoint *ep; |
1086 | unsigned long flags; | 1058 | unsigned long flags; |
1087 | 1059 | ||
@@ -1189,7 +1161,8 @@ done: | |||
1189 | /* called in any context */ | 1161 | /* called in any context */ |
1190 | int usb_hcd_get_frame_number (struct usb_device *udev) | 1162 | int usb_hcd_get_frame_number (struct usb_device *udev) |
1191 | { | 1163 | { |
1192 | struct usb_hcd *hcd = (struct usb_hcd *)udev->bus->hcpriv; | 1164 | struct usb_hcd *hcd = bus_to_hcd(udev->bus); |
1165 | |||
1193 | if (!HC_IS_RUNNING (hcd->state)) | 1166 | if (!HC_IS_RUNNING (hcd->state)) |
1194 | return -ESHUTDOWN; | 1167 | return -ESHUTDOWN; |
1195 | return hcd->driver->get_frame_number (hcd); | 1168 | return hcd->driver->get_frame_number (hcd); |
@@ -1262,7 +1235,7 @@ int usb_hcd_unlink_urb (struct urb *urb, int status) | |||
1262 | spin_lock (&hcd_data_lock); | 1235 | spin_lock (&hcd_data_lock); |
1263 | 1236 | ||
1264 | sys = &urb->dev->dev; | 1237 | sys = &urb->dev->dev; |
1265 | hcd = urb->dev->bus->hcpriv; | 1238 | hcd = bus_to_hcd(urb->dev->bus); |
1266 | if (hcd == NULL) { | 1239 | if (hcd == NULL) { |
1267 | retval = -ENODEV; | 1240 | retval = -ENODEV; |
1268 | goto done; | 1241 | goto done; |
@@ -1333,7 +1306,7 @@ void usb_hcd_endpoint_disable (struct usb_device *udev, | |||
1333 | struct usb_hcd *hcd; | 1306 | struct usb_hcd *hcd; |
1334 | struct urb *urb; | 1307 | struct urb *urb; |
1335 | 1308 | ||
1336 | hcd = udev->bus->hcpriv; | 1309 | hcd = bus_to_hcd(udev->bus); |
1337 | 1310 | ||
1338 | WARN_ON (!HC_IS_RUNNING (hcd->state) && hcd->state != HC_STATE_HALT && | 1311 | WARN_ON (!HC_IS_RUNNING (hcd->state) && hcd->state != HC_STATE_HALT && |
1339 | udev->state != USB_STATE_NOTATTACHED); | 1312 | udev->state != USB_STATE_NOTATTACHED); |
@@ -1673,14 +1646,6 @@ EXPORT_SYMBOL_GPL (usb_hc_died); | |||
1673 | 1646 | ||
1674 | /*-------------------------------------------------------------------------*/ | 1647 | /*-------------------------------------------------------------------------*/ |
1675 | 1648 | ||
1676 | static void hcd_release (struct usb_bus *bus) | ||
1677 | { | ||
1678 | struct usb_hcd *hcd; | ||
1679 | |||
1680 | hcd = container_of(bus, struct usb_hcd, self); | ||
1681 | kfree(hcd); | ||
1682 | } | ||
1683 | |||
1684 | /** | 1649 | /** |
1685 | * usb_create_hcd - create and initialize an HCD structure | 1650 | * usb_create_hcd - create and initialize an HCD structure |
1686 | * @driver: HC driver that will use this hcd | 1651 | * @driver: HC driver that will use this hcd |
@@ -1705,10 +1670,9 @@ struct usb_hcd *usb_create_hcd (const struct hc_driver *driver, | |||
1705 | return NULL; | 1670 | return NULL; |
1706 | } | 1671 | } |
1707 | dev_set_drvdata(dev, hcd); | 1672 | dev_set_drvdata(dev, hcd); |
1673 | kref_init(&hcd->kref); | ||
1708 | 1674 | ||
1709 | usb_bus_init(&hcd->self); | 1675 | usb_bus_init(&hcd->self); |
1710 | hcd->self.hcpriv = hcd; | ||
1711 | hcd->self.release = &hcd_release; | ||
1712 | hcd->self.controller = dev; | 1676 | hcd->self.controller = dev; |
1713 | hcd->self.bus_name = bus_name; | 1677 | hcd->self.bus_name = bus_name; |
1714 | hcd->self.uses_dma = (dev->dma_mask != NULL); | 1678 | hcd->self.uses_dma = (dev->dma_mask != NULL); |
@@ -1725,10 +1689,25 @@ struct usb_hcd *usb_create_hcd (const struct hc_driver *driver, | |||
1725 | } | 1689 | } |
1726 | EXPORT_SYMBOL (usb_create_hcd); | 1690 | EXPORT_SYMBOL (usb_create_hcd); |
1727 | 1691 | ||
1692 | static void hcd_release (struct kref *kref) | ||
1693 | { | ||
1694 | struct usb_hcd *hcd = container_of (kref, struct usb_hcd, kref); | ||
1695 | |||
1696 | kfree(hcd); | ||
1697 | } | ||
1698 | |||
1699 | struct usb_hcd *usb_get_hcd (struct usb_hcd *hcd) | ||
1700 | { | ||
1701 | if (hcd) | ||
1702 | kref_get (&hcd->kref); | ||
1703 | return hcd; | ||
1704 | } | ||
1705 | EXPORT_SYMBOL (usb_get_hcd); | ||
1706 | |||
1728 | void usb_put_hcd (struct usb_hcd *hcd) | 1707 | void usb_put_hcd (struct usb_hcd *hcd) |
1729 | { | 1708 | { |
1730 | dev_set_drvdata(hcd->self.controller, NULL); | 1709 | if (hcd) |
1731 | usb_bus_put(&hcd->self); | 1710 | kref_put (&hcd->kref, hcd_release); |
1732 | } | 1711 | } |
1733 | EXPORT_SYMBOL (usb_put_hcd); | 1712 | EXPORT_SYMBOL (usb_put_hcd); |
1734 | 1713 | ||
diff --git a/drivers/usb/core/hcd.h b/drivers/usb/core/hcd.h index 83e229914797..7a2bcba2ae61 100644 --- a/drivers/usb/core/hcd.h +++ b/drivers/usb/core/hcd.h | |||
@@ -55,12 +55,13 @@ | |||
55 | 55 | ||
56 | /*-------------------------------------------------------------------------*/ | 56 | /*-------------------------------------------------------------------------*/ |
57 | 57 | ||
58 | struct usb_hcd { /* usb_bus.hcpriv points to this */ | 58 | struct usb_hcd { |
59 | 59 | ||
60 | /* | 60 | /* |
61 | * housekeeping | 61 | * housekeeping |
62 | */ | 62 | */ |
63 | struct usb_bus self; /* hcd is-a bus */ | 63 | struct usb_bus self; /* hcd is-a bus */ |
64 | struct kref kref; /* reference counter */ | ||
64 | 65 | ||
65 | const char *product_desc; /* product/vendor string */ | 66 | const char *product_desc; /* product/vendor string */ |
66 | char irq_descr[24]; /* driver + bus # */ | 67 | char irq_descr[24]; /* driver + bus # */ |
@@ -129,8 +130,10 @@ static inline struct usb_bus *hcd_to_bus (struct usb_hcd *hcd) | |||
129 | return &hcd->self; | 130 | return &hcd->self; |
130 | } | 131 | } |
131 | 132 | ||
132 | 133 | static inline struct usb_hcd *bus_to_hcd (struct usb_bus *bus) | |
133 | // urb.hcpriv is really hardware-specific | 134 | { |
135 | return container_of(bus, struct usb_hcd, self); | ||
136 | } | ||
134 | 137 | ||
135 | struct hcd_timeout { /* timeouts we allocate */ | 138 | struct hcd_timeout { /* timeouts we allocate */ |
136 | struct list_head timeout_list; | 139 | struct list_head timeout_list; |
@@ -210,6 +213,7 @@ extern int usb_hcd_get_frame_number (struct usb_device *udev); | |||
210 | 213 | ||
211 | extern struct usb_hcd *usb_create_hcd (const struct hc_driver *driver, | 214 | extern struct usb_hcd *usb_create_hcd (const struct hc_driver *driver, |
212 | struct device *dev, char *bus_name); | 215 | struct device *dev, char *bus_name); |
216 | extern struct usb_hcd *usb_get_hcd (struct usb_hcd *hcd); | ||
213 | extern void usb_put_hcd (struct usb_hcd *hcd); | 217 | extern void usb_put_hcd (struct usb_hcd *hcd); |
214 | extern int usb_add_hcd(struct usb_hcd *hcd, | 218 | extern int usb_add_hcd(struct usb_hcd *hcd, |
215 | unsigned int irqnum, unsigned long irqflags); | 219 | unsigned int irqnum, unsigned long irqflags); |
@@ -356,9 +360,6 @@ extern struct list_head usb_bus_list; | |||
356 | extern struct mutex usb_bus_list_lock; | 360 | extern struct mutex usb_bus_list_lock; |
357 | extern wait_queue_head_t usb_kill_urb_queue; | 361 | extern wait_queue_head_t usb_kill_urb_queue; |
358 | 362 | ||
359 | extern struct usb_bus *usb_bus_get (struct usb_bus *bus); | ||
360 | extern void usb_bus_put (struct usb_bus *bus); | ||
361 | |||
362 | extern void usb_enable_root_hub_irq (struct usb_bus *bus); | 363 | extern void usb_enable_root_hub_irq (struct usb_bus *bus); |
363 | 364 | ||
364 | extern int usb_find_interface_driver (struct usb_device *dev, | 365 | extern int usb_find_interface_driver (struct usb_device *dev, |
diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c index 7ab9d29215f8..b0c0a993338f 100644 --- a/drivers/usb/core/usb.c +++ b/drivers/usb/core/usb.c | |||
@@ -169,7 +169,7 @@ static void usb_release_dev(struct device *dev) | |||
169 | udev = to_usb_device(dev); | 169 | udev = to_usb_device(dev); |
170 | 170 | ||
171 | usb_destroy_configuration(udev); | 171 | usb_destroy_configuration(udev); |
172 | usb_bus_put(udev->bus); | 172 | usb_put_hcd(bus_to_hcd(udev->bus)); |
173 | kfree(udev->product); | 173 | kfree(udev->product); |
174 | kfree(udev->manufacturer); | 174 | kfree(udev->manufacturer); |
175 | kfree(udev->serial); | 175 | kfree(udev->serial); |
@@ -197,8 +197,7 @@ usb_alloc_dev(struct usb_device *parent, struct usb_bus *bus, unsigned port1) | |||
197 | if (!dev) | 197 | if (!dev) |
198 | return NULL; | 198 | return NULL; |
199 | 199 | ||
200 | bus = usb_bus_get(bus); | 200 | if (!usb_get_hcd(bus_to_hcd(bus))) { |
201 | if (!bus) { | ||
202 | kfree(dev); | 201 | kfree(dev); |
203 | return NULL; | 202 | return NULL; |
204 | } | 203 | } |
diff --git a/drivers/usb/gadget/dummy_hcd.c b/drivers/usb/gadget/dummy_hcd.c index 7d1c22c34957..fdab97a27c08 100644 --- a/drivers/usb/gadget/dummy_hcd.c +++ b/drivers/usb/gadget/dummy_hcd.c | |||
@@ -889,11 +889,9 @@ EXPORT_SYMBOL (net2280_set_fifo_mode); | |||
889 | static void | 889 | static void |
890 | dummy_gadget_release (struct device *dev) | 890 | dummy_gadget_release (struct device *dev) |
891 | { | 891 | { |
892 | #if 0 /* usb_bus_put isn't EXPORTed! */ | ||
893 | struct dummy *dum = gadget_dev_to_dummy (dev); | 892 | struct dummy *dum = gadget_dev_to_dummy (dev); |
894 | 893 | ||
895 | usb_bus_put (&dummy_to_hcd (dum)->self); | 894 | usb_put_hcd (dummy_to_hcd (dum)); |
896 | #endif | ||
897 | } | 895 | } |
898 | 896 | ||
899 | static int dummy_udc_probe (struct platform_device *pdev) | 897 | static int dummy_udc_probe (struct platform_device *pdev) |
@@ -915,9 +913,7 @@ static int dummy_udc_probe (struct platform_device *pdev) | |||
915 | if (rc < 0) | 913 | if (rc < 0) |
916 | return rc; | 914 | return rc; |
917 | 915 | ||
918 | #if 0 /* usb_bus_get isn't EXPORTed! */ | 916 | usb_get_hcd (dummy_to_hcd (dum)); |
919 | usb_bus_get (&dummy_to_hcd (dum)->self); | ||
920 | #endif | ||
921 | 917 | ||
922 | platform_set_drvdata (pdev, dum); | 918 | platform_set_drvdata (pdev, dum); |
923 | device_create_file (&dum->gadget.dev, &dev_attr_function); | 919 | device_create_file (&dum->gadget.dev, &dev_attr_function); |
diff --git a/drivers/usb/host/ehci-dbg.c b/drivers/usb/host/ehci-dbg.c index 65ac9fef3a7c..215ce6d06394 100644 --- a/drivers/usb/host/ehci-dbg.c +++ b/drivers/usb/host/ehci-dbg.c | |||
@@ -451,7 +451,7 @@ show_async (struct class_device *class_dev, char *buf) | |||
451 | *buf = 0; | 451 | *buf = 0; |
452 | 452 | ||
453 | bus = class_get_devdata(class_dev); | 453 | bus = class_get_devdata(class_dev); |
454 | hcd = bus->hcpriv; | 454 | hcd = bus_to_hcd(bus); |
455 | ehci = hcd_to_ehci (hcd); | 455 | ehci = hcd_to_ehci (hcd); |
456 | next = buf; | 456 | next = buf; |
457 | size = PAGE_SIZE; | 457 | size = PAGE_SIZE; |
@@ -497,7 +497,7 @@ show_periodic (struct class_device *class_dev, char *buf) | |||
497 | seen_count = 0; | 497 | seen_count = 0; |
498 | 498 | ||
499 | bus = class_get_devdata(class_dev); | 499 | bus = class_get_devdata(class_dev); |
500 | hcd = bus->hcpriv; | 500 | hcd = bus_to_hcd(bus); |
501 | ehci = hcd_to_ehci (hcd); | 501 | ehci = hcd_to_ehci (hcd); |
502 | next = buf; | 502 | next = buf; |
503 | size = PAGE_SIZE; | 503 | size = PAGE_SIZE; |
@@ -634,7 +634,7 @@ show_registers (struct class_device *class_dev, char *buf) | |||
634 | static char label [] = ""; | 634 | static char label [] = ""; |
635 | 635 | ||
636 | bus = class_get_devdata(class_dev); | 636 | bus = class_get_devdata(class_dev); |
637 | hcd = bus->hcpriv; | 637 | hcd = bus_to_hcd(bus); |
638 | ehci = hcd_to_ehci (hcd); | 638 | ehci = hcd_to_ehci (hcd); |
639 | next = buf; | 639 | next = buf; |
640 | size = PAGE_SIZE; | 640 | size = PAGE_SIZE; |
diff --git a/drivers/usb/host/ohci-dbg.c b/drivers/usb/host/ohci-dbg.c index da52609a9290..534d07dcb824 100644 --- a/drivers/usb/host/ohci-dbg.c +++ b/drivers/usb/host/ohci-dbg.c | |||
@@ -477,7 +477,7 @@ show_async (struct class_device *class_dev, char *buf) | |||
477 | unsigned long flags; | 477 | unsigned long flags; |
478 | 478 | ||
479 | bus = class_get_devdata(class_dev); | 479 | bus = class_get_devdata(class_dev); |
480 | hcd = bus->hcpriv; | 480 | hcd = bus_to_hcd(bus); |
481 | ohci = hcd_to_ohci(hcd); | 481 | ohci = hcd_to_ohci(hcd); |
482 | 482 | ||
483 | /* display control and bulk lists together, for simplicity */ | 483 | /* display control and bulk lists together, for simplicity */ |
@@ -510,7 +510,7 @@ show_periodic (struct class_device *class_dev, char *buf) | |||
510 | seen_count = 0; | 510 | seen_count = 0; |
511 | 511 | ||
512 | bus = class_get_devdata(class_dev); | 512 | bus = class_get_devdata(class_dev); |
513 | hcd = bus->hcpriv; | 513 | hcd = bus_to_hcd(bus); |
514 | ohci = hcd_to_ohci(hcd); | 514 | ohci = hcd_to_ohci(hcd); |
515 | next = buf; | 515 | next = buf; |
516 | size = PAGE_SIZE; | 516 | size = PAGE_SIZE; |
@@ -607,7 +607,7 @@ show_registers (struct class_device *class_dev, char *buf) | |||
607 | u32 rdata; | 607 | u32 rdata; |
608 | 608 | ||
609 | bus = class_get_devdata(class_dev); | 609 | bus = class_get_devdata(class_dev); |
610 | hcd = bus->hcpriv; | 610 | hcd = bus_to_hcd(bus); |
611 | ohci = hcd_to_ohci(hcd); | 611 | ohci = hcd_to_ohci(hcd); |
612 | regs = ohci->regs; | 612 | regs = ohci->regs; |
613 | next = buf; | 613 | next = buf; |
diff --git a/drivers/usb/mon/mon_main.c b/drivers/usb/mon/mon_main.c index 275a66f83058..e0ed36cdfd8b 100644 --- a/drivers/usb/mon/mon_main.c +++ b/drivers/usb/mon/mon_main.c | |||
@@ -265,7 +265,6 @@ static void mon_dissolve(struct mon_bus *mbus, struct usb_bus *ubus) | |||
265 | ubus->mon_bus = NULL; | 265 | ubus->mon_bus = NULL; |
266 | mbus->u_bus = NULL; | 266 | mbus->u_bus = NULL; |
267 | mb(); | 267 | mb(); |
268 | // usb_bus_put(ubus); | ||
269 | } | 268 | } |
270 | 269 | ||
271 | /* | 270 | /* |
@@ -297,10 +296,9 @@ static void mon_bus_init(struct dentry *mondir, struct usb_bus *ubus) | |||
297 | INIT_LIST_HEAD(&mbus->r_list); | 296 | INIT_LIST_HEAD(&mbus->r_list); |
298 | 297 | ||
299 | /* | 298 | /* |
300 | * This usb_bus_get here is superfluous, because we receive | 299 | * We don't need to take a reference to ubus, because we receive |
301 | * a notification if usb_bus is about to be removed. | 300 | * a notification if the bus is about to be removed. |
302 | */ | 301 | */ |
303 | // usb_bus_get(ubus); | ||
304 | mbus->u_bus = ubus; | 302 | mbus->u_bus = ubus; |
305 | ubus->mon_bus = mbus; | 303 | ubus->mon_bus = mbus; |
306 | 304 | ||
diff --git a/include/linux/usb.h b/include/linux/usb.h index 09661759621f..c66303285a45 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
@@ -280,7 +280,6 @@ struct usb_bus { | |||
280 | struct usb_devmap devmap; /* device address allocation map */ | 280 | struct usb_devmap devmap; /* device address allocation map */ |
281 | struct usb_device *root_hub; /* Root hub */ | 281 | struct usb_device *root_hub; /* Root hub */ |
282 | struct list_head bus_list; /* list of busses */ | 282 | struct list_head bus_list; /* list of busses */ |
283 | void *hcpriv; /* Host Controller private data */ | ||
284 | 283 | ||
285 | int bandwidth_allocated; /* on this bus: how much of the time | 284 | int bandwidth_allocated; /* on this bus: how much of the time |
286 | * reserved for periodic (intr/iso) | 285 | * reserved for periodic (intr/iso) |
@@ -295,8 +294,6 @@ struct usb_bus { | |||
295 | struct dentry *usbfs_dentry; /* usbfs dentry entry for the bus */ | 294 | struct dentry *usbfs_dentry; /* usbfs dentry entry for the bus */ |
296 | 295 | ||
297 | struct class_device *class_dev; /* class device for this bus */ | 296 | struct class_device *class_dev; /* class device for this bus */ |
298 | struct kref kref; /* reference counting for this bus */ | ||
299 | void (*release)(struct usb_bus *bus); | ||
300 | 297 | ||
301 | #if defined(CONFIG_USB_MON) | 298 | #if defined(CONFIG_USB_MON) |
302 | struct mon_bus *mon_bus; /* non-null when associated */ | 299 | struct mon_bus *mon_bus; /* non-null when associated */ |