Loading drivers/usb/core/hcd.c +27 −34 Original line number Diff line number Diff line Loading @@ -653,48 +653,43 @@ static int usb_rh_urb_dequeue (struct usb_hcd *hcd, struct urb *urb) /* exported only within usbcore */ struct usb_bus *usb_bus_get(struct usb_bus *bus) { struct class_device *tmp; if (bus) kref_get(&bus->kref); return bus; } if (!bus) return NULL; static void usb_host_release(struct kref *kref) { struct usb_bus *bus = container_of(kref, struct usb_bus, kref); tmp = class_device_get(&bus->class_dev); if (tmp) return to_usb_bus(tmp); else return NULL; if (bus->release) bus->release(bus); } /* exported only within usbcore */ void usb_bus_put(struct usb_bus *bus) { if (bus) class_device_put(&bus->class_dev); kref_put(&bus->kref, usb_host_release); } /*-------------------------------------------------------------------------*/ static void usb_host_release(struct class_device *class_dev) { struct usb_bus *bus = to_usb_bus(class_dev); if (bus->release) bus->release(bus); } static struct class usb_host_class = { .name = "usb_host", .release = &usb_host_release, }; static struct class *usb_host_class; int usb_host_init(void) { return class_register(&usb_host_class); int retval = 0; usb_host_class = class_create(THIS_MODULE, "usb_host"); if (IS_ERR(usb_host_class)) retval = PTR_ERR(usb_host_class); return retval; } void usb_host_cleanup(void) { class_unregister(&usb_host_class); class_destroy(usb_host_class); } /** Loading @@ -719,8 +714,7 @@ static void usb_bus_init (struct usb_bus *bus) INIT_LIST_HEAD (&bus->bus_list); class_device_initialize(&bus->class_dev); bus->class_dev.class = &usb_host_class; kref_init(&bus->kref); } /** Loading Loading @@ -761,7 +755,6 @@ struct usb_bus *usb_alloc_bus (struct usb_operations *op) static int usb_register_bus(struct usb_bus *bus) { int busnum; int retval; down (&usb_bus_list_lock); busnum = find_next_zero_bit (busmap.busmap, USB_MAXBUS, 1); Loading @@ -774,15 +767,15 @@ static int usb_register_bus(struct usb_bus *bus) return -E2BIG; } snprintf(bus->class_dev.class_id, BUS_ID_SIZE, "usb%d", busnum); bus->class_dev.dev = bus->controller; retval = class_device_add(&bus->class_dev); if (retval) { bus->class_dev = class_device_create(usb_host_class, MKDEV(0,0), bus->controller, "usb%d", busnum); if (IS_ERR(bus->class_dev)) { clear_bit(busnum, busmap.busmap); up(&usb_bus_list_lock); return retval; return PTR_ERR(bus->class_dev); } class_set_devdata(bus->class_dev, bus); /* Add it to the local list of buses */ list_add (&bus->bus_list, &usb_bus_list); up (&usb_bus_list_lock); Loading Loading @@ -820,7 +813,7 @@ static void usb_deregister_bus (struct usb_bus *bus) clear_bit (bus->busnum, busmap.busmap); class_device_del(&bus->class_dev); class_device_unregister(bus->class_dev); } /** Loading drivers/usb/host/ehci-dbg.c +5 −5 Original line number Diff line number Diff line Loading @@ -450,7 +450,7 @@ show_async (struct class_device *class_dev, char *buf) *buf = 0; bus = to_usb_bus(class_dev); bus = class_get_devdata(class_dev); hcd = bus->hcpriv; ehci = hcd_to_ehci (hcd); next = buf; Loading Loading @@ -496,7 +496,7 @@ show_periodic (struct class_device *class_dev, char *buf) return 0; seen_count = 0; bus = to_usb_bus(class_dev); bus = class_get_devdata(class_dev); hcd = bus->hcpriv; ehci = hcd_to_ehci (hcd); next = buf; Loading Loading @@ -633,7 +633,7 @@ show_registers (struct class_device *class_dev, char *buf) static char fmt [] = "%*s\n"; static char label [] = ""; bus = to_usb_bus(class_dev); bus = class_get_devdata(class_dev); hcd = bus->hcpriv; ehci = hcd_to_ehci (hcd); next = buf; Loading Loading @@ -735,7 +735,7 @@ static CLASS_DEVICE_ATTR (registers, S_IRUGO, show_registers, NULL); static inline void create_debug_files (struct ehci_hcd *ehci) { struct class_device *cldev = &ehci_to_hcd(ehci)->self.class_dev; struct class_device *cldev = ehci_to_hcd(ehci)->self.class_dev; class_device_create_file(cldev, &class_device_attr_async); class_device_create_file(cldev, &class_device_attr_periodic); Loading @@ -744,7 +744,7 @@ static inline void create_debug_files (struct ehci_hcd *ehci) static inline void remove_debug_files (struct ehci_hcd *ehci) { struct class_device *cldev = &ehci_to_hcd(ehci)->self.class_dev; struct class_device *cldev = ehci_to_hcd(ehci)->self.class_dev; class_device_remove_file(cldev, &class_device_attr_async); class_device_remove_file(cldev, &class_device_attr_periodic); Loading drivers/usb/host/ohci-dbg.c +5 −5 Original line number Diff line number Diff line Loading @@ -481,7 +481,7 @@ show_async (struct class_device *class_dev, char *buf) size_t temp; unsigned long flags; bus = to_usb_bus(class_dev); bus = class_get_devdata(class_dev); hcd = bus->hcpriv; ohci = hcd_to_ohci(hcd); Loading Loading @@ -514,7 +514,7 @@ show_periodic (struct class_device *class_dev, char *buf) return 0; seen_count = 0; bus = to_usb_bus(class_dev); bus = class_get_devdata(class_dev); hcd = bus->hcpriv; ohci = hcd_to_ohci(hcd); next = buf; Loading Loading @@ -611,7 +611,7 @@ show_registers (struct class_device *class_dev, char *buf) char *next; u32 rdata; bus = to_usb_bus(class_dev); bus = class_get_devdata(class_dev); hcd = bus->hcpriv; ohci = hcd_to_ohci(hcd); regs = ohci->regs; Loading Loading @@ -684,7 +684,7 @@ static CLASS_DEVICE_ATTR (registers, S_IRUGO, show_registers, NULL); static inline void create_debug_files (struct ohci_hcd *ohci) { struct class_device *cldev = &ohci_to_hcd(ohci)->self.class_dev; struct class_device *cldev = ohci_to_hcd(ohci)->self.class_dev; class_device_create_file(cldev, &class_device_attr_async); class_device_create_file(cldev, &class_device_attr_periodic); Loading @@ -694,7 +694,7 @@ static inline void create_debug_files (struct ohci_hcd *ohci) static inline void remove_debug_files (struct ohci_hcd *ohci) { struct class_device *cldev = &ohci_to_hcd(ohci)->self.class_dev; struct class_device *cldev = ohci_to_hcd(ohci)->self.class_dev; class_device_remove_file(cldev, &class_device_attr_async); class_device_remove_file(cldev, &class_device_attr_periodic); Loading include/linux/usb.h +2 −3 Original line number Diff line number Diff line Loading @@ -287,15 +287,14 @@ struct usb_bus { struct dentry *usbfs_dentry; /* usbfs dentry entry for the bus */ struct class_device class_dev; /* class device for this bus */ struct class_device *class_dev; /* class device for this bus */ struct kref kref; /* handles reference counting this bus */ void (*release)(struct usb_bus *bus); /* function to destroy this bus's memory */ #if defined(CONFIG_USB_MON) || defined(CONFIG_USB_MON_MODULE) struct mon_bus *mon_bus; /* non-null when associated */ int monitored; /* non-zero when monitored */ #endif }; #define to_usb_bus(d) container_of(d, struct usb_bus, class_dev) /* -------------------------------------------------------------------------- */ Loading Loading
drivers/usb/core/hcd.c +27 −34 Original line number Diff line number Diff line Loading @@ -653,48 +653,43 @@ static int usb_rh_urb_dequeue (struct usb_hcd *hcd, struct urb *urb) /* exported only within usbcore */ struct usb_bus *usb_bus_get(struct usb_bus *bus) { struct class_device *tmp; if (bus) kref_get(&bus->kref); return bus; } if (!bus) return NULL; static void usb_host_release(struct kref *kref) { struct usb_bus *bus = container_of(kref, struct usb_bus, kref); tmp = class_device_get(&bus->class_dev); if (tmp) return to_usb_bus(tmp); else return NULL; if (bus->release) bus->release(bus); } /* exported only within usbcore */ void usb_bus_put(struct usb_bus *bus) { if (bus) class_device_put(&bus->class_dev); kref_put(&bus->kref, usb_host_release); } /*-------------------------------------------------------------------------*/ static void usb_host_release(struct class_device *class_dev) { struct usb_bus *bus = to_usb_bus(class_dev); if (bus->release) bus->release(bus); } static struct class usb_host_class = { .name = "usb_host", .release = &usb_host_release, }; static struct class *usb_host_class; int usb_host_init(void) { return class_register(&usb_host_class); int retval = 0; usb_host_class = class_create(THIS_MODULE, "usb_host"); if (IS_ERR(usb_host_class)) retval = PTR_ERR(usb_host_class); return retval; } void usb_host_cleanup(void) { class_unregister(&usb_host_class); class_destroy(usb_host_class); } /** Loading @@ -719,8 +714,7 @@ static void usb_bus_init (struct usb_bus *bus) INIT_LIST_HEAD (&bus->bus_list); class_device_initialize(&bus->class_dev); bus->class_dev.class = &usb_host_class; kref_init(&bus->kref); } /** Loading Loading @@ -761,7 +755,6 @@ struct usb_bus *usb_alloc_bus (struct usb_operations *op) static int usb_register_bus(struct usb_bus *bus) { int busnum; int retval; down (&usb_bus_list_lock); busnum = find_next_zero_bit (busmap.busmap, USB_MAXBUS, 1); Loading @@ -774,15 +767,15 @@ static int usb_register_bus(struct usb_bus *bus) return -E2BIG; } snprintf(bus->class_dev.class_id, BUS_ID_SIZE, "usb%d", busnum); bus->class_dev.dev = bus->controller; retval = class_device_add(&bus->class_dev); if (retval) { bus->class_dev = class_device_create(usb_host_class, MKDEV(0,0), bus->controller, "usb%d", busnum); if (IS_ERR(bus->class_dev)) { clear_bit(busnum, busmap.busmap); up(&usb_bus_list_lock); return retval; return PTR_ERR(bus->class_dev); } class_set_devdata(bus->class_dev, bus); /* Add it to the local list of buses */ list_add (&bus->bus_list, &usb_bus_list); up (&usb_bus_list_lock); Loading Loading @@ -820,7 +813,7 @@ static void usb_deregister_bus (struct usb_bus *bus) clear_bit (bus->busnum, busmap.busmap); class_device_del(&bus->class_dev); class_device_unregister(bus->class_dev); } /** Loading
drivers/usb/host/ehci-dbg.c +5 −5 Original line number Diff line number Diff line Loading @@ -450,7 +450,7 @@ show_async (struct class_device *class_dev, char *buf) *buf = 0; bus = to_usb_bus(class_dev); bus = class_get_devdata(class_dev); hcd = bus->hcpriv; ehci = hcd_to_ehci (hcd); next = buf; Loading Loading @@ -496,7 +496,7 @@ show_periodic (struct class_device *class_dev, char *buf) return 0; seen_count = 0; bus = to_usb_bus(class_dev); bus = class_get_devdata(class_dev); hcd = bus->hcpriv; ehci = hcd_to_ehci (hcd); next = buf; Loading Loading @@ -633,7 +633,7 @@ show_registers (struct class_device *class_dev, char *buf) static char fmt [] = "%*s\n"; static char label [] = ""; bus = to_usb_bus(class_dev); bus = class_get_devdata(class_dev); hcd = bus->hcpriv; ehci = hcd_to_ehci (hcd); next = buf; Loading Loading @@ -735,7 +735,7 @@ static CLASS_DEVICE_ATTR (registers, S_IRUGO, show_registers, NULL); static inline void create_debug_files (struct ehci_hcd *ehci) { struct class_device *cldev = &ehci_to_hcd(ehci)->self.class_dev; struct class_device *cldev = ehci_to_hcd(ehci)->self.class_dev; class_device_create_file(cldev, &class_device_attr_async); class_device_create_file(cldev, &class_device_attr_periodic); Loading @@ -744,7 +744,7 @@ static inline void create_debug_files (struct ehci_hcd *ehci) static inline void remove_debug_files (struct ehci_hcd *ehci) { struct class_device *cldev = &ehci_to_hcd(ehci)->self.class_dev; struct class_device *cldev = ehci_to_hcd(ehci)->self.class_dev; class_device_remove_file(cldev, &class_device_attr_async); class_device_remove_file(cldev, &class_device_attr_periodic); Loading
drivers/usb/host/ohci-dbg.c +5 −5 Original line number Diff line number Diff line Loading @@ -481,7 +481,7 @@ show_async (struct class_device *class_dev, char *buf) size_t temp; unsigned long flags; bus = to_usb_bus(class_dev); bus = class_get_devdata(class_dev); hcd = bus->hcpriv; ohci = hcd_to_ohci(hcd); Loading Loading @@ -514,7 +514,7 @@ show_periodic (struct class_device *class_dev, char *buf) return 0; seen_count = 0; bus = to_usb_bus(class_dev); bus = class_get_devdata(class_dev); hcd = bus->hcpriv; ohci = hcd_to_ohci(hcd); next = buf; Loading Loading @@ -611,7 +611,7 @@ show_registers (struct class_device *class_dev, char *buf) char *next; u32 rdata; bus = to_usb_bus(class_dev); bus = class_get_devdata(class_dev); hcd = bus->hcpriv; ohci = hcd_to_ohci(hcd); regs = ohci->regs; Loading Loading @@ -684,7 +684,7 @@ static CLASS_DEVICE_ATTR (registers, S_IRUGO, show_registers, NULL); static inline void create_debug_files (struct ohci_hcd *ohci) { struct class_device *cldev = &ohci_to_hcd(ohci)->self.class_dev; struct class_device *cldev = ohci_to_hcd(ohci)->self.class_dev; class_device_create_file(cldev, &class_device_attr_async); class_device_create_file(cldev, &class_device_attr_periodic); Loading @@ -694,7 +694,7 @@ static inline void create_debug_files (struct ohci_hcd *ohci) static inline void remove_debug_files (struct ohci_hcd *ohci) { struct class_device *cldev = &ohci_to_hcd(ohci)->self.class_dev; struct class_device *cldev = ohci_to_hcd(ohci)->self.class_dev; class_device_remove_file(cldev, &class_device_attr_async); class_device_remove_file(cldev, &class_device_attr_periodic); Loading
include/linux/usb.h +2 −3 Original line number Diff line number Diff line Loading @@ -287,15 +287,14 @@ struct usb_bus { struct dentry *usbfs_dentry; /* usbfs dentry entry for the bus */ struct class_device class_dev; /* class device for this bus */ struct class_device *class_dev; /* class device for this bus */ struct kref kref; /* handles reference counting this bus */ void (*release)(struct usb_bus *bus); /* function to destroy this bus's memory */ #if defined(CONFIG_USB_MON) || defined(CONFIG_USB_MON_MODULE) struct mon_bus *mon_bus; /* non-null when associated */ int monitored; /* non-zero when monitored */ #endif }; #define to_usb_bus(d) container_of(d, struct usb_bus, class_dev) /* -------------------------------------------------------------------------- */ Loading