diff options
| -rw-r--r-- | series | 2 | ||||
| -rw-r--r-- | u1.patch | 965 | ||||
| -rw-r--r-- | usb.current/usb-automatically-enable-rhsc-interrupts.patch | 419 |
3 files changed, 1386 insertions, 0 deletions
@@ -43,6 +43,7 @@ usb.current/usb-add-udev-argument-to-interface-suspend-resume-functions.patch usb.current/usb-defer-set-interface-for-suspended-devices.patch usb.current/usb-add-new-pm-callback-methods-for-usb.patch usb.current/usb-don-t-rebind-before-complete-callback.patch +usb.current/usb-automatically-enable-rhsc-interrupts.patch ##################################################################### @@ -184,3 +185,4 @@ usb/usb-gotemp.patch #ns/modpost +u1.patch diff --git a/u1.patch b/u1.patch new file mode 100644 index 00000000000000..dd2367d1c61ed9 --- /dev/null +++ b/u1.patch @@ -0,0 +1,965 @@ +--- + drivers/usb/class/cdc-acm.c | 23 ++++++++++-------- + drivers/usb/class/cdc-wdm.c | 48 +++++++++++++++++++++++-------------- + drivers/usb/class/usblp.c | 7 +++-- + drivers/usb/core/devio.c | 7 +++-- + drivers/usb/core/endpoint.c | 3 +- + drivers/usb/core/file.c | 5 ++- + drivers/usb/core/inode.c | 12 ++++----- + drivers/usb/core/urb.c | 4 +-- + drivers/usb/host/isp1760-if.c | 2 - + drivers/usb/host/r8a66597-hcd.c | 51 +++++++++++++++++++++------------------- + drivers/usb/image/mdc800.c | 46 +++++++++++++++++++++++------------- + drivers/usb/misc/adutux.c | 17 +++++++------ + drivers/usb/serial/aircable.c | 11 ++++---- + drivers/usb/serial/ezusb.c | 3 +- + drivers/usb/serial/usb-serial.c | 19 +++++++++----- + include/linux/usb.h | 3 -- + 16 files changed, 153 insertions(+), 108 deletions(-) + +--- a/drivers/usb/class/cdc-acm.c ++++ b/drivers/usb/class/cdc-acm.c +@@ -326,8 +326,8 @@ exit: + usb_mark_last_busy(acm->dev); + retval = usb_submit_urb (urb, GFP_ATOMIC); + if (retval) +- err ("%s - usb_submit_urb failed with result %d", +- __func__, retval); ++ dev_err(&urb->dev->dev, "%s - usb_submit_urb failed with " ++ "result %d", __func__, retval); + } + + /* data interface returns incoming bytes, or we got unthrottled */ +@@ -514,7 +514,7 @@ static void acm_waker(struct work_struct + + rv = usb_autopm_get_interface(acm->control); + if (rv < 0) { +- err("Autopm failure in %s", __func__); ++ dev_err(&acm->dev->dev, "Autopm failure in %s\n", __func__); + return; + } + if (acm->delayed_wb) { +@@ -924,7 +924,7 @@ static int acm_probe (struct usb_interfa + + /* normal probing*/ + if (!buffer) { +- err("Weird descriptor references\n"); ++ dev_err(&intf->dev, "Weird descriptor references\n"); + return -EINVAL; + } + +@@ -934,21 +934,24 @@ static int acm_probe (struct usb_interfa + buflen = intf->cur_altsetting->endpoint->extralen; + buffer = intf->cur_altsetting->endpoint->extra; + } else { +- err("Zero length descriptor references\n"); ++ dev_err(&intf->dev, ++ "Zero length descriptor references\n"); + return -EINVAL; + } + } + + while (buflen > 0) { + if (buffer [1] != USB_DT_CS_INTERFACE) { +- err("skipping garbage\n"); ++ dev_err(&intf->dev, "skipping garbage\n"); + goto next_desc; + } + + switch (buffer [2]) { + case USB_CDC_UNION_TYPE: /* we've found it */ + if (union_header) { +- err("More than one union descriptor, skipping ..."); ++ dev_err(&intf->dev, "More than one " ++ "union descriptor, " ++ "skipping ...\n"); + goto next_desc; + } + union_header = (struct usb_cdc_union_desc *) +@@ -966,7 +969,9 @@ static int acm_probe (struct usb_interfa + call_management_function = buffer[3]; + call_interface_num = buffer[4]; + if ((call_management_function & 3) != 3) +- err("This device cannot do calls on its own. It is no modem."); ++ dev_err(&intf->dev, "This device " ++ "cannot do calls on its own. " ++ "It is no modem.\n"); + break; + default: + /* there are LOTS more CDC descriptors that +@@ -1051,7 +1056,7 @@ skip_normal_probe: + for (minor = 0; minor < ACM_TTY_MINORS && acm_table[minor]; minor++); + + if (minor == ACM_TTY_MINORS) { +- err("no more free acm devices"); ++ dev_err(&intf->dev, "no more free acm devices\n"); + return -ENODEV; + } + +--- a/drivers/usb/class/cdc-wdm.c ++++ b/drivers/usb/class/cdc-wdm.c +@@ -132,10 +132,12 @@ static void wdm_in_callback(struct urb * + "nonzero urb status received: -ESHUTDOWN"); + break; + case -EPIPE: +- err("nonzero urb status received: -EPIPE"); ++ dev_err(&desc->intf->dev, ++ "nonzero urb status received: -EPIPE\n"); + break; + default: +- err("Unexpected error %d", status); ++ dev_err(&desc->intf->dev, ++ "Unexpected error %d\n", status); + break; + } + } +@@ -170,16 +172,18 @@ static void wdm_int_callback(struct urb + return; /* unplug */ + case -EPIPE: + set_bit(WDM_INT_STALL, &desc->flags); +- err("Stall on int endpoint"); ++ dev_err(&desc->intf->dev, "Stall on int endpoint\n"); + goto sw; /* halt is cleared in work */ + default: +- err("nonzero urb status received: %d", status); ++ dev_err(&desc->intf->dev, ++ "nonzero urb status received: %d\n", status); + break; + } + } + + if (urb->actual_length < sizeof(struct usb_cdc_notification)) { +- err("wdm_int_callback - %d bytes", urb->actual_length); ++ dev_err(&desc->intf->dev, "wdm_int_callback - %d bytes\n", ++ urb->actual_length); + goto exit; + } + +@@ -198,7 +202,8 @@ static void wdm_int_callback(struct urb + goto exit; + default: + clear_bit(WDM_POLL_RUNNING, &desc->flags); +- err("unknown notification %d received: index %d len %d", ++ dev_err(&desc->intf->dev, ++ "unknown notification %d received: index %d len %d\n", + dr->bNotificationType, dr->wIndex, dr->wLength); + goto exit; + } +@@ -236,14 +241,16 @@ static void wdm_int_callback(struct urb + sw: + rv = schedule_work(&desc->rxwork); + if (rv) +- err("Cannot schedule work"); ++ dev_err(&desc->intf->dev, ++ "Cannot schedule work\n"); + } + } + exit: + rv = usb_submit_urb(urb, GFP_ATOMIC); + if (rv) +- err("%s - usb_submit_urb failed with result %d", +- __func__, rv); ++ dev_err(&desc->intf->dev, ++ "%s - usb_submit_urb failed with result %d\n", ++ __func__, rv); + + } + +@@ -353,7 +360,7 @@ static ssize_t wdm_write + if (rv < 0) { + kfree(buf); + clear_bit(WDM_IN_USE, &desc->flags); +- err("Tx URB error: %d", rv); ++ dev_err(&desc->intf->dev, "Tx URB error: %d\n", rv); + } else { + dev_dbg(&desc->intf->dev, "Tx URB has been submitted index=%d", + req->wIndex); +@@ -401,7 +408,8 @@ retry: + int t = desc->rerr; + desc->rerr = 0; + spin_unlock_irq(&desc->iuspin); +- err("reading had resulted in %d", t); ++ dev_err(&desc->intf->dev, ++ "reading had resulted in %d\n", t); + rv = -EIO; + goto err; + } +@@ -440,7 +448,7 @@ retry: + err: + mutex_unlock(&desc->rlock); + if (rv < 0) +- err("wdm_read: exit error"); ++ dev_err(&desc->intf->dev, "wdm_read: exit error\n"); + return rv; + } + +@@ -450,7 +458,8 @@ static int wdm_flush(struct file *file, + + wait_event(desc->wait, !test_bit(WDM_IN_USE, &desc->flags)); + if (desc->werr < 0) +- err("Error in flush path: %d", desc->werr); ++ dev_err(&desc->intf->dev, "Error in flush path: %d\n", ++ desc->werr); + + return desc->werr; + } +@@ -502,7 +511,7 @@ static int wdm_open(struct inode *inode, + + rv = usb_autopm_get_interface(desc->intf); + if (rv < 0) { +- err("Error autopm - %d", rv); ++ dev_err(&desc->intf->dev, "Error autopm - %d\n", rv); + goto out; + } + intf->needs_remote_wakeup = 1; +@@ -512,7 +521,8 @@ static int wdm_open(struct inode *inode, + rv = usb_submit_urb(desc->validity, GFP_KERNEL); + if (rv < 0) { + desc->count--; +- err("Error submitting int urb - %d", rv); ++ dev_err(&desc->intf->dev, ++ "Error submitting int urb - %d\n", rv); + } + } else { + rv = 0; +@@ -600,7 +610,7 @@ static int wdm_probe(struct usb_interfac + + while (buflen > 0) { + if (buffer [1] != USB_DT_CS_INTERFACE) { +- err("skipping garbage"); ++ dev_err(&intf->dev, "skipping garbage\n"); + goto next_desc; + } + +@@ -614,7 +624,8 @@ static int wdm_probe(struct usb_interfac + "Finding maximum buffer length: %d", maxcom); + break; + default: +- err("Ignoring extra header, type %d, length %d", ++ dev_err(&intf->dev, ++ "Ignoring extra header, type %d, length %d\n", + buffer[2], buffer[0]); + break; + } +@@ -772,7 +783,8 @@ static int recover_from_urb_loss(struct + if (desc->count) { + rv = usb_submit_urb(desc->validity, GFP_NOIO); + if (rv < 0) +- err("Error resume submitting int urb - %d", rv); ++ dev_err(&desc->intf->dev, ++ "Error resume submitting int urb - %d\n", rv); + } + return rv; + } +--- a/drivers/usb/class/usblp.c ++++ b/drivers/usb/class/usblp.c +@@ -593,8 +593,9 @@ static long usblp_ioctl(struct file *fil + err = usblp_hp_channel_change_request(usblp, + arg, &newChannel); + if (err < 0) { +- err("usblp%d: error = %d setting " +- "HP channel", ++ dev_err(&usblp->dev->dev, ++ "usblp%d: error = %d setting " ++ "HP channel\n", + usblp->minor, err); + retval = -EIO; + goto done; +@@ -1345,7 +1346,7 @@ static void usblp_disconnect(struct usb_ + usb_deregister_dev(intf, &usblp_class); + + if (!usblp || !usblp->dev) { +- err("bogus disconnect"); ++ dev_err(&intf->dev, "bogus disconnect\n"); + BUG (); + } + +--- a/drivers/usb/core/devio.c ++++ b/drivers/usb/core/devio.c +@@ -1775,19 +1775,20 @@ int __init usb_devio_init(void) + retval = register_chrdev_region(USB_DEVICE_DEV, USB_DEVICE_MAX, + "usb_device"); + if (retval) { +- err("unable to register minors for usb_device"); ++ printk(KERN_ERR "Unable to register minors for usb_device\n"); + goto out; + } + cdev_init(&usb_device_cdev, &usbdev_file_operations); + retval = cdev_add(&usb_device_cdev, USB_DEVICE_DEV, USB_DEVICE_MAX); + if (retval) { +- err("unable to get usb_device major %d", USB_DEVICE_MAJOR); ++ printk(KERN_ERR "Unable to get usb_device major %d\n", ++ USB_DEVICE_MAJOR); + goto error_cdev; + } + #ifdef CONFIG_USB_DEVICE_CLASS + usb_classdev_class = class_create(THIS_MODULE, "usb_device"); + if (IS_ERR(usb_classdev_class)) { +- err("unable to register usb_device class"); ++ printk(KERN_ERR "Unable to register usb_device class\n"); + retval = PTR_ERR(usb_classdev_class); + cdev_del(&usb_device_cdev); + usb_classdev_class = NULL; +--- a/drivers/usb/core/endpoint.c ++++ b/drivers/usb/core/endpoint.c +@@ -169,7 +169,8 @@ static int usb_endpoint_major_init(void) + error = alloc_chrdev_region(&dev, 0, MAX_ENDPOINT_MINORS, + "usb_endpoint"); + if (error) { +- err("unable to get a dynamic major for usb endpoints"); ++ printk(KERN_ERR "Unable to get a dynamic major for " ++ "usb endpoints.\n"); + return error; + } + usb_endpoint_major = MAJOR(dev); +--- a/drivers/usb/core/file.c ++++ b/drivers/usb/core/file.c +@@ -86,7 +86,7 @@ static int init_usb_class(void) + usb_class->class = class_create(THIS_MODULE, "usb"); + if (IS_ERR(usb_class->class)) { + result = IS_ERR(usb_class->class); +- err("class_create failed for usb devices"); ++ printk(KERN_ERR "class_create failed for usb devices\n"); + kfree(usb_class); + usb_class = NULL; + } +@@ -115,7 +115,8 @@ int usb_major_init(void) + + error = register_chrdev(USB_MAJOR, "usb", &usb_fops); + if (error) +- err("unable to get major %d for usb devices", USB_MAJOR); ++ printk(KERN_ERR "Unable to get major %d for usb devices\n", ++ USB_MAJOR); + + return error; + } +--- a/drivers/usb/core/inode.c ++++ b/drivers/usb/core/inode.c +@@ -180,8 +180,8 @@ static int parse_options(struct super_bl + listmode = option & S_IRWXUGO; + break; + default: +- err("usbfs: unrecognised mount option \"%s\" " +- "or missing value\n", p); ++ printk(KERN_ERR "usbfs: unrecognised mount option " ++ "\"%s\" or missing value\n", p); + return -EINVAL; + } + } +@@ -601,7 +601,7 @@ static int create_special_files (void) + /* create the devices special file */ + retval = simple_pin_fs(&usb_fs_type, &usbfs_mount, &usbfs_mount_count); + if (retval) { +- err ("Unable to get usbfs mount"); ++ printk(KERN_ERR "Unable to get usbfs mount\n"); + goto exit; + } + +@@ -613,7 +613,7 @@ static int create_special_files (void) + NULL, &usbfs_devices_fops, + listuid, listgid); + if (devices_usbfs_dentry == NULL) { +- err ("Unable to create devices usbfs file"); ++ printk(KERN_ERR "Unable to create devices usbfs file\n"); + retval = -ENODEV; + goto error_clean_mounts; + } +@@ -665,7 +665,7 @@ static void usbfs_add_bus(struct usb_bus + bus->usbfs_dentry = fs_create_file (name, busmode | S_IFDIR, parent, + bus, NULL, busuid, busgid); + if (bus->usbfs_dentry == NULL) { +- err ("error creating usbfs bus entry"); ++ printk(KERN_ERR "Error creating usbfs bus entry\n"); + return; + } + } +@@ -696,7 +696,7 @@ static void usbfs_add_device(struct usb_ + &usbdev_file_operations, + devuid, devgid); + if (dev->usbfs_dentry == NULL) { +- err ("error creating usbfs device entry"); ++ printk(KERN_ERR "Error creating usbfs device entry\n"); + return; + } + +--- a/drivers/usb/core/urb.c ++++ b/drivers/usb/core/urb.c +@@ -70,7 +70,7 @@ struct urb *usb_alloc_urb(int iso_packet + iso_packets * sizeof(struct usb_iso_packet_descriptor), + mem_flags); + if (!urb) { +- err("alloc_urb: kmalloc failed"); ++ printk(KERN_ERR "alloc_urb: kmalloc failed\n"); + return NULL; + } + usb_init_urb(urb); +@@ -407,7 +407,7 @@ int usb_submit_urb(struct urb *urb, gfp_ + + /* fail if submitter gave bogus flags */ + if (urb->transfer_flags != orig_flags) { +- err("BOGUS urb flags, %x --> %x", ++ dev_err(&dev->dev, "BOGUS urb flags, %x --> %x\n", + orig_flags, urb->transfer_flags); + return -EINVAL; + } +--- a/drivers/usb/host/isp1760-if.c ++++ b/drivers/usb/host/isp1760-if.c +@@ -218,7 +218,7 @@ static int __devinit isp1761_pci_probe(s + * and reading back and checking the contents are same or not + */ + if (reg_data != 0xFACE) { +- err("scratch register mismatch %x", reg_data); ++ dev_err(&dev->dev, "scratch register mismatch %x\n", reg_data); + goto clean; + } + +--- a/drivers/usb/host/r8a66597-hcd.c ++++ b/drivers/usb/host/r8a66597-hcd.c +@@ -118,7 +118,7 @@ static int r8a66597_clock_enable(struct + r8a66597_write(r8a66597, SCKE, SYSCFG0); + tmp = r8a66597_read(r8a66597, SYSCFG0); + if (i++ > 1000) { +- err("register access fail."); ++ printk(KERN_ERR "r8a66597: register access fail.\n"); + return -ENXIO; + } + } while ((tmp & SCKE) != SCKE); +@@ -128,7 +128,7 @@ static int r8a66597_clock_enable(struct + r8a66597_write(r8a66597, USBE, SYSCFG0); + tmp = r8a66597_read(r8a66597, SYSCFG0); + if (i++ > 1000) { +- err("register access fail."); ++ printk(KERN_ERR "r8a66597: register access fail.\n"); + return -ENXIO; + } + } while ((tmp & USBE) != USBE); +@@ -141,7 +141,7 @@ static int r8a66597_clock_enable(struct + msleep(1); + tmp = r8a66597_read(r8a66597, SYSCFG0); + if (i++ > 500) { +- err("register access fail."); ++ printk(KERN_ERR "r8a66597: register access fail.\n"); + return -ENXIO; + } + } while ((tmp & SCKE) != SCKE); +@@ -265,7 +265,7 @@ static void get_port_number(char *devpat + if (root_port) { + *root_port = (devpath[0] & 0x0F) - 1; + if (*root_port >= R8A66597_MAX_ROOT_HUB) +- err("illegal root port number"); ++ printk(KERN_ERR "r8a66597: Illegal root port number.\n"); + } + if (hub_port) + *hub_port = devpath[2] & 0x0F; +@@ -286,7 +286,7 @@ static u16 get_r8a66597_usb_speed(enum u + usbspd = HSMODE; + break; + default: +- err("unknown speed"); ++ printk(KERN_ERR "r8a66597: unknown speed\n"); + break; + } + +@@ -385,7 +385,7 @@ static u8 alloc_usb_address(struct r8a66 + struct r8a66597_device *dev; + + if (is_hub_limit(urb->dev->devpath)) { +- err("Externel hub limit reached."); ++ dev_err(&urb->dev->dev, "External hub limit reached.\n"); + return 0; + } + +@@ -406,8 +406,9 @@ static u8 alloc_usb_address(struct r8a66 + return addr; + } + +- err("cannot communicate with a USB device more than 10.(%x)", +- r8a66597->address_map); ++ dev_err(&urb->dev->dev, ++ "cannot communicate with a USB device more than 10.(%x)\n", ++ r8a66597->address_map); + + return 0; + } +@@ -447,7 +448,8 @@ static void r8a66597_reg_wait(struct r8a + do { + tmp = r8a66597_read(r8a66597, reg); + if (i++ > 1000000) { +- err("register%lx, loop %x is timeout", reg, loop); ++ printk(KERN_ERR "r8a66597: register%lx, loop %x " ++ "is timeout\n", reg, loop); + break; + } + ndelay(1); +@@ -675,7 +677,7 @@ static u16 get_empty_pipenum(struct r8a6 + array[i++] = 1; + break; + default: +- err("Illegal type"); ++ printk(KERN_ERR "r8a66597: Illegal type\n"); + return 0; + } + +@@ -705,7 +707,7 @@ static u16 get_r8a66597_type(__u8 type) + r8a66597_type = R8A66597_ISO; + break; + default: +- err("Illegal type"); ++ printk(KERN_ERR "r8a66597: Illegal type\n"); + r8a66597_type = 0x0000; + break; + } +@@ -724,7 +726,7 @@ static u16 get_bufnum(u16 pipenum) + else if (check_interrupt(pipenum)) + bufnum = 4 + (pipenum - 6); + else +- err("Illegal pipenum (%d)", pipenum); ++ printk(KERN_ERR "r8a66597: Illegal pipenum (%d)\n", pipenum); + + return bufnum; + } +@@ -740,7 +742,7 @@ static u16 get_buf_bsize(u16 pipenum) + else if (check_interrupt(pipenum)) + buf_bsize = 0; + else +- err("Illegal pipenum (%d)", pipenum); ++ printk(KERN_ERR "r8a66597: Illegal pipenum (%d)\n", pipenum); + + return buf_bsize; + } +@@ -1189,7 +1191,7 @@ static int start_transfer(struct r8a6659 + prepare_status_packet(r8a66597, td); + break; + default: +- err("invalid type."); ++ printk(KERN_ERR "r8a66597: invalid type.\n"); + break; + } + +@@ -1297,7 +1299,7 @@ static void packet_read(struct r8a66597 + if (unlikely((tmp & FRDY) == 0)) { + pipe_stop(r8a66597, td->pipe); + pipe_irq_disable(r8a66597, pipenum); +- err("in fifo not ready (%d)", pipenum); ++ printk(KERN_ERR "r8a66597: in fifo not ready (%d)\n", pipenum); + finish_request(r8a66597, td, pipenum, td->urb, -EPIPE); + return; + } +@@ -1372,7 +1374,7 @@ static void packet_write(struct r8a66597 + if (unlikely((tmp & FRDY) == 0)) { + pipe_stop(r8a66597, td->pipe); + pipe_irq_disable(r8a66597, pipenum); +- err("out write fifo not ready. (%d)", pipenum); ++ printk(KERN_ERR "r8a66597: out fifo not ready (%d)\n", pipenum); + finish_request(r8a66597, td, pipenum, urb, -EPIPE); + return; + } +@@ -2007,7 +2009,7 @@ static struct r8a66597_device *get_r8a66 + return dev; + } + +- err("get_r8a66597_device fail.(%d)\n", addr); ++ printk(KERN_ERR "r8a66597: get_r8a66597_device fail.(%d)\n", addr); + return NULL; + } + +@@ -2276,7 +2278,7 @@ static int __init r8a66597_probe(struct + + if (pdev->dev.dma_mask) { + ret = -EINVAL; +- err("dma not support"); ++ dev_err(&pdev->dev, "dma not supported\n"); + goto clean_up; + } + +@@ -2284,14 +2286,15 @@ static int __init r8a66597_probe(struct + (char *)hcd_name); + if (!res) { + ret = -ENODEV; +- err("platform_get_resource_byname error."); ++ dev_err(&pdev->dev, "platform_get_resource_byname error.\n"); + goto clean_up; + } + + ires = platform_get_resource(pdev, IORESOURCE_IRQ, 0); + if (!ires) { + ret = -ENODEV; +- err("platform_get_resource IORESOURCE_IRQ error."); ++ dev_err(&pdev->dev, ++ "platform_get_resource IORESOURCE_IRQ error.\n"); + goto clean_up; + } + +@@ -2301,7 +2304,7 @@ static int __init r8a66597_probe(struct + reg = ioremap(res->start, resource_len(res)); + if (reg == NULL) { + ret = -ENOMEM; +- err("ioremap error."); ++ dev_err(&pdev->dev, "ioremap error.\n"); + goto clean_up; + } + +@@ -2309,7 +2312,7 @@ static int __init r8a66597_probe(struct + hcd = usb_create_hcd(&r8a66597_hc_driver, &pdev->dev, (char *)hcd_name); + if (!hcd) { + ret = -ENOMEM; +- err("Failed to create hcd"); ++ dev_err(&pdev->dev, "Failed to create hcd\n"); + goto clean_up; + } + r8a66597 = hcd_to_r8a66597(hcd); +@@ -2355,12 +2358,12 @@ static int __init r8a66597_probe(struct + } + break; + default: +- err("Unknown irq_sense value."); ++ dev_err(&pdev->dev, "Unknown irq_sense value.\n"); + } + + ret = usb_add_hcd(hcd, irq, IRQF_DISABLED | irq_trigger); + if (ret != 0) { +- err("Failed to add hcd"); ++ dev_err(&pdev->dev, "Failed to add hcd\n"); + goto clean_up; + } + +--- a/drivers/usb/image/mdc800.c ++++ b/drivers/usb/image/mdc800.c +@@ -355,7 +355,7 @@ static int mdc800_usb_waitForIRQ (int mo + if (mdc800->camera_request_ready>0) + { + mdc800->camera_request_ready=0; +- err ("timeout waiting for camera."); ++ dev_err(&mdc800->dev->dev, "timeout waiting for camera.\n"); + return -1; + } + +@@ -380,7 +380,8 @@ static void mdc800_usb_write_notify (str + int status = urb->status; + + if (status != 0) +- err ("writing command fails (status=%i)", status); ++ dev_err(&mdc800->dev->dev, ++ "writing command fails (status=%i)\n", status); + else + mdc800->state=READY; + mdc800->written = 1; +@@ -407,7 +408,8 @@ static void mdc800_usb_download_notify ( + mdc800->state=READY; + } + } else { +- err ("request bytes fails (status:%i)", status); ++ dev_err(&mdc800->dev->dev, ++ "request bytes fails (status:%i)\n", status); + } + mdc800->downloaded = 1; + wake_up (&mdc800->download_wait); +@@ -450,7 +452,8 @@ static int mdc800_usb_probe (struct usb_ + + if (dev->descriptor.bNumConfigurations != 1) + { +- err ("probe fails -> wrong Number of Configuration"); ++ dev_err(&intf->dev, ++ "probe fails -> wrong Number of Configuration\n"); + return -ENODEV; + } + intf_desc = intf->cur_altsetting; +@@ -462,7 +465,7 @@ static int mdc800_usb_probe (struct usb_ + || ( intf_desc->desc.bNumEndpoints != 4) + ) + { +- err ("probe fails -> wrong Interface"); ++ dev_err(&intf->dev, "probe fails -> wrong Interface\n"); + return -ENODEV; + } + +@@ -483,7 +486,7 @@ static int mdc800_usb_probe (struct usb_ + } + if (mdc800->endpoint[i] == -1) + { +- err ("probe fails -> Wrong Endpoints."); ++ dev_err(&intf->dev, "probe fails -> Wrong Endpoints.\n"); + return -ENODEV; + } + } +@@ -495,7 +498,7 @@ static int mdc800_usb_probe (struct usb_ + + retval = usb_register_dev(intf, &mdc800_class); + if (retval) { +- err ("Not able to get a minor for this device."); ++ dev_err(&intf->dev, "Not able to get a minor for this device.\n"); + return -ENODEV; + } + +@@ -645,7 +648,8 @@ static int mdc800_device_open (struct in + mdc800->irq_urb->dev = mdc800->dev; + retval = usb_submit_urb (mdc800->irq_urb, GFP_KERNEL); + if (retval) { +- err ("request USB irq fails (submit_retval=%i).", retval); ++ dev_err(&mdc800->dev->dev, ++ "request USB irq fails (submit_retval=%i).\n", retval); + errn = -EIO; + goto error_out; + } +@@ -735,7 +739,9 @@ static ssize_t mdc800_device_read (struc + mdc800->download_urb->dev = mdc800->dev; + retval = usb_submit_urb (mdc800->download_urb, GFP_KERNEL); + if (retval) { +- err ("Can't submit download urb (retval=%i)",retval); ++ dev_err(&mdc800->dev->dev, ++ "Can't submit download urb " ++ "(retval=%i)\n", retval); + mutex_unlock(&mdc800->io_lock); + return len-left; + } +@@ -744,7 +750,10 @@ static ssize_t mdc800_device_read (struc + mdc800->downloaded = 0; + if (mdc800->download_urb->status != 0) + { +- err ("request download-bytes fails (status=%i)",mdc800->download_urb->status); ++ dev_err(&mdc800->dev->dev, ++ "request download-bytes fails " ++ "(status=%i)\n", ++ mdc800->download_urb->status); + mutex_unlock(&mdc800->io_lock); + return len-left; + } +@@ -841,7 +850,8 @@ static ssize_t mdc800_device_write (stru + + if (mdc800_usb_waitForIRQ (0,TO_GET_READY)) + { +- err ("Camera didn't get ready.\n"); ++ dev_err(&mdc800->dev->dev, ++ "Camera didn't get ready.\n"); + mutex_unlock(&mdc800->io_lock); + return -EIO; + } +@@ -853,7 +863,9 @@ static ssize_t mdc800_device_write (stru + mdc800->write_urb->dev = mdc800->dev; + retval = usb_submit_urb (mdc800->write_urb, GFP_KERNEL); + if (retval) { +- err ("submitting write urb fails (retval=%i)", retval); ++ dev_err(&mdc800->dev->dev, ++ "submitting write urb fails " ++ "(retval=%i)\n", retval); + mutex_unlock(&mdc800->io_lock); + return -EIO; + } +@@ -872,7 +884,9 @@ static ssize_t mdc800_device_write (stru + case 0x3e: /* Take shot in Fine Mode (WCam Mode) */ + if (mdc800->pic_len < 0) + { +- err ("call 0x07 before 0x05,0x3e"); ++ dev_err(&mdc800->dev->dev, ++ "call 0x07 before " ++ "0x05,0x3e\n"); + mdc800->state=READY; + mutex_unlock(&mdc800->io_lock); + return -EIO; +@@ -892,7 +906,7 @@ static ssize_t mdc800_device_write (stru + + if (mdc800_usb_waitForIRQ (1,TO_READ_FROM_IRQ)) + { +- err ("requesting answer from irq fails"); ++ dev_err(&mdc800->dev->dev, "requesting answer from irq fails\n"); + mutex_unlock(&mdc800->io_lock); + return -EIO; + } +@@ -920,7 +934,7 @@ static ssize_t mdc800_device_write (stru + { + if (mdc800_usb_waitForIRQ (0,TO_DEFAULT_COMMAND)) + { +- err ("Command Timeout."); ++ dev_err(&mdc800->dev->dev, "Command Timeout.\n"); + mutex_unlock(&mdc800->io_lock); + return -EIO; + } +@@ -1031,7 +1045,7 @@ cleanup_on_fail: + + if (mdc800 != NULL) + { +- err ("can't alloc memory!"); ++ printk(KERN_ERR "mdc800: can't alloc memory!\n"); + + kfree(mdc800->download_urb_buffer); + kfree(mdc800->write_urb_buffer); +--- a/drivers/usb/misc/adutux.c ++++ b/drivers/usb/misc/adutux.c +@@ -283,8 +283,8 @@ static int adu_open(struct inode *inode, + + interface = usb_find_interface(&adu_driver, subminor); + if (!interface) { +- err("%s - error, can't find device for minor %d", +- __func__, subminor); ++ printk(KERN_ERR "adutux: %s - error, can't find device for " ++ "minor %d\n", __func__, subminor); + retval = -ENODEV; + goto exit_no_device; + } +@@ -416,7 +416,8 @@ static ssize_t adu_read(struct file *fil + /* verify that the device wasn't unplugged */ + if (dev->udev == NULL) { + retval = -ENODEV; +- err("No device or device unplugged %d", retval); ++ printk(KERN_ERR "adutux: No device or device unplugged %d\n", ++ retval); + goto exit; + } + +@@ -576,7 +577,8 @@ static ssize_t adu_write(struct file *fi + /* verify that the device wasn't unplugged */ + if (dev->udev == NULL) { + retval = -ENODEV; +- err("No device or device unplugged %d", retval); ++ printk(KERN_ERR "adutux: No device or device unplugged %d\n", ++ retval); + goto exit; + } + +@@ -645,7 +647,8 @@ static ssize_t adu_write(struct file *fi + retval = usb_submit_urb(dev->interrupt_out_urb, GFP_KERNEL); + if (retval < 0) { + dev->out_urb_finished = 1; +- err("Couldn't submit interrupt_out_urb %d", retval); ++ dev_err(&dev->udev->dev, "Couldn't submit " ++ "interrupt_out_urb %d\n", retval); + goto exit; + } + +@@ -890,8 +893,8 @@ static int __init adu_init(void) + /* register this driver with the USB subsystem */ + result = usb_register(&adu_driver); + if (result < 0) { +- err("usb_register failed for the "__FILE__" driver. " +- "Error number %d", result); ++ printk(KERN_ERR "usb_register failed for the "__FILE__ ++ " driver. Error number %d\n", result); + goto exit; + } + +--- a/drivers/usb/serial/aircable.c ++++ b/drivers/usb/serial/aircable.c +@@ -220,8 +220,8 @@ static void aircable_send(struct usb_ser + + buf = kzalloc(count + HCI_HEADER_LENGTH, GFP_ATOMIC); + if (!buf) { +- err("%s- kzalloc(%d) failed.", __func__, +- count + HCI_HEADER_LENGTH); ++ dev_err(&port->dev, "%s- kzalloc(%d) failed.\n", ++ __func__, count + HCI_HEADER_LENGTH); + return; + } + +@@ -276,7 +276,7 @@ static void aircable_read(struct work_st + + if (!tty) { + schedule_work(&priv->rx_work); +- err("%s - No tty available", __func__); ++ dev_err(&port->dev, "%s - No tty available\n", __func__); + return ; + } + +@@ -287,7 +287,8 @@ static void aircable_read(struct work_st + + tty_prepare_flip_string(tty, &data, count); + if (!data) { +- err("%s- kzalloc(%d) failed.", __func__, count); ++ dev_err(&port->dev, "%s- kzalloc(%d) failed.\n", ++ __func__, count); + return; + } + +@@ -334,7 +335,7 @@ static int aircable_attach(struct usb_se + + priv = kzalloc(sizeof(struct aircable_private), GFP_KERNEL); + if (!priv) { +- err("%s- kmalloc(%Zd) failed.", __func__, ++ dev_err(&port->dev, "%s- kmalloc(%Zd) failed.\n", __func__, + sizeof(struct aircable_private)); + return -ENOMEM; + } +--- a/drivers/usb/serial/ezusb.c ++++ b/drivers/usb/serial/ezusb.c +@@ -28,7 +28,8 @@ int ezusb_writememory(struct usb_serial + + /* dbg("ezusb_writememory %x, %d", address, length); */ + if (!serial->dev) { +- err("%s - no physical device present, failing.", __func__); ++ printk(KERN_ERR "ezusb: %s - no physical device present, " ++ "failing.\n", __func__); + return -ENODEV; + } + +--- a/drivers/usb/serial/usb-serial.c ++++ b/drivers/usb/serial/usb-serial.c +@@ -1113,7 +1113,8 @@ static int __init usb_serial_init(void) + + result = bus_register(&usb_serial_bus_type); + if (result) { +- err("%s - registering bus driver failed", __func__); ++ printk(KERN_ERR "usb-serial: %s - registering bus driver " ++ "failed\n", __func__); + goto exit_bus; + } + +@@ -1134,21 +1135,24 @@ static int __init usb_serial_init(void) + tty_set_operations(usb_serial_tty_driver, &serial_ops); + result = tty_register_driver(usb_serial_tty_driver); + if (result) { +- err("%s - tty_register_driver failed", __func__); ++ printk(KERN_ERR "usb-serial: %s - tty_register_driver failed\n", ++ __func__); + goto exit_reg_driver; + } + + /* register the USB driver */ + result = usb_register(&usb_serial_driver); + if (result < 0) { +- err("%s - usb_register failed", __func__); ++ printk(KERN_ERR "usb-serial: %s - usb_register failed\n", ++ __func__); + goto exit_tty; + } + + /* register the generic driver, if we should */ + result = usb_serial_generic_register(debug); + if (result < 0) { +- err("%s - registering generic driver failed", __func__); ++ printk(KERN_ERR "usb-serial: %s - registering generic " ++ "driver failed\n", __func__); + goto exit_generic; + } + +@@ -1166,7 +1170,8 @@ exit_reg_driver: + bus_unregister(&usb_serial_bus_type); + + exit_bus: +- err("%s - returning with error %d", __func__, result); ++ printk(KERN_ERR "usb-serial: %s - returning with error %d\n", ++ __func__, result); + put_tty_driver(usb_serial_tty_driver); + return result; + } +@@ -1225,8 +1230,8 @@ int usb_serial_register(struct usb_seria + + retval = usb_serial_bus_register(driver); + if (retval) { +- err("problem %d when registering driver %s", +- retval, driver->description); ++ printk(KERN_ERR "usb-serial: problem %d when registering " ++ "driver %s\n", retval, driver->description); + list_del(&driver->driver_list); + } else + printk(KERN_INFO "USB Serial support registered for %s\n", +--- a/include/linux/usb.h ++++ b/include/linux/usb.h +@@ -1715,9 +1715,6 @@ extern void usb_unregister_notify(struct + #define dbg(format, arg...) do {} while (0) + #endif + +-#define err(format, arg...) printk(KERN_ERR KBUILD_MODNAME ": " \ +- format "\n" , ## arg) +- + #endif /* __KERNEL__ */ + + #endif diff --git a/usb.current/usb-automatically-enable-rhsc-interrupts.patch b/usb.current/usb-automatically-enable-rhsc-interrupts.patch new file mode 100644 index 00000000000000..d5e23e15a9a50b --- /dev/null +++ b/usb.current/usb-automatically-enable-rhsc-interrupts.patch @@ -0,0 +1,419 @@ +From stern@rowland.harvard.edu Wed Aug 20 15:16:23 2008 +From: Alan Stern <stern@rowland.harvard.edu> +Date: Wed, 20 Aug 2008 17:22:05 -0400 (EDT) +Subject: USB: automatically enable RHSC interrupts +To: Greg KH <greg@kroah.com> +Cc: USB list <linux-usb@vger.kernel.org> +Message-ID: <Pine.LNX.4.44L0.0808201713110.14505-100000@iolanthe.rowland.org> + + +This patch (as1069c) changes the way OHCI root-hub status-change +interrupts are enabled. Currently a special HCD method, +hub_irq_enable(), is called when the hub driver is finished using a +root hub. This approach turns out to be subject to races, resulting +in unnecessary polling. + +The patch does away with the method entirely. Instead, the driver +automatically enables the RHSC interrupt when no more status changes +are present. This scheme is safe with controllers using +level-triggered semantics for their interrupt flags. + +Signed-off-by: Alan Stern <stern@rowland.harvard.edu> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/core/hcd.c | 9 ------ + drivers/usb/core/hcd.h | 4 --- + drivers/usb/core/hub.c | 9 ------ + drivers/usb/host/ohci-at91.c | 1 + drivers/usb/host/ohci-au1xxx.c | 1 + drivers/usb/host/ohci-ep93xx.c | 1 + drivers/usb/host/ohci-hub.c | 53 +++++++++++++++++++++++----------------- + drivers/usb/host/ohci-lh7a404.c | 1 + drivers/usb/host/ohci-omap.c | 1 + drivers/usb/host/ohci-pci.c | 1 + drivers/usb/host/ohci-pnx4008.c | 1 + drivers/usb/host/ohci-pnx8550.c | 1 + drivers/usb/host/ohci-ppc-of.c | 1 + drivers/usb/host/ohci-ppc-soc.c | 1 + drivers/usb/host/ohci-ps3.c | 1 + drivers/usb/host/ohci-pxa27x.c | 1 + drivers/usb/host/ohci-s3c2410.c | 1 + drivers/usb/host/ohci-sa1111.c | 1 + drivers/usb/host/ohci-sh.c | 1 + drivers/usb/host/ohci-sm501.c | 1 + drivers/usb/host/ohci-ssb.c | 1 + drivers/usb/host/u132-hcd.c | 11 -------- + 22 files changed, 31 insertions(+), 72 deletions(-) + +--- a/drivers/usb/core/hcd.c ++++ b/drivers/usb/core/hcd.c +@@ -924,15 +924,6 @@ static int register_root_hub(struct usb_ + return retval; + } + +-void usb_enable_root_hub_irq (struct usb_bus *bus) +-{ +- struct usb_hcd *hcd; +- +- hcd = container_of (bus, struct usb_hcd, self); +- if (hcd->driver->hub_irq_enable && hcd->state != HC_STATE_HALT) +- hcd->driver->hub_irq_enable (hcd); +-} +- + + /*-------------------------------------------------------------------------*/ + +--- a/drivers/usb/core/hcd.h ++++ b/drivers/usb/core/hcd.h +@@ -212,8 +212,6 @@ struct hc_driver { + int (*bus_suspend)(struct usb_hcd *); + int (*bus_resume)(struct usb_hcd *); + int (*start_port_reset)(struct usb_hcd *, unsigned port_num); +- void (*hub_irq_enable)(struct usb_hcd *); +- /* Needed only if port-change IRQs are level-triggered */ + + /* force handover of high-speed port to full-speed companion */ + void (*relinquish_port)(struct usb_hcd *, int); +@@ -379,8 +377,6 @@ extern struct list_head usb_bus_list; + extern struct mutex usb_bus_list_lock; + extern wait_queue_head_t usb_kill_urb_queue; + +-extern void usb_enable_root_hub_irq(struct usb_bus *bus); +- + extern int usb_find_interface_driver(struct usb_device *dev, + struct usb_interface *interface); + +--- a/drivers/usb/core/hub.c ++++ b/drivers/usb/core/hub.c +@@ -2102,8 +2102,6 @@ int usb_port_resume(struct usb_device *u + } + + clear_bit(port1, hub->busy_bits); +- if (!hub->hdev->parent && !hub->busy_bits[0]) +- usb_enable_root_hub_irq(hub->hdev->bus); + + status = check_port_resume_type(udev, + hub, port1, status, portchange, portstatus); +@@ -3081,11 +3079,6 @@ static void hub_events(void) + } + } + +- /* If this is a root hub, tell the HCD it's okay to +- * re-enable port-change interrupts now. */ +- if (!hdev->parent && !hub->busy_bits[0]) +- usb_enable_root_hub_irq(hdev->bus); +- + loop_autopm: + /* Allow autosuspend if we're not going to run again */ + if (list_empty(&hub->event_list)) +@@ -3311,8 +3304,6 @@ static int usb_reset_and_verify_device(s + break; + } + clear_bit(port1, parent_hub->busy_bits); +- if (!parent_hdev->parent && !parent_hub->busy_bits[0]) +- usb_enable_root_hub_irq(parent_hdev->bus); + + if (ret < 0) + goto re_enumerate; +--- a/drivers/usb/host/ohci-at91.c ++++ b/drivers/usb/host/ohci-at91.c +@@ -260,7 +260,6 @@ static const struct hc_driver ohci_at91_ + */ + .hub_status_data = ohci_hub_status_data, + .hub_control = ohci_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM + .bus_suspend = ohci_bus_suspend, + .bus_resume = ohci_bus_resume, +--- a/drivers/usb/host/ohci-au1xxx.c ++++ b/drivers/usb/host/ohci-au1xxx.c +@@ -163,7 +163,6 @@ static const struct hc_driver ohci_au1xx + */ + .hub_status_data = ohci_hub_status_data, + .hub_control = ohci_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM + .bus_suspend = ohci_bus_suspend, + .bus_resume = ohci_bus_resume, +--- a/drivers/usb/host/ohci-ep93xx.c ++++ b/drivers/usb/host/ohci-ep93xx.c +@@ -134,7 +134,6 @@ static struct hc_driver ohci_ep93xx_hc_d + .get_frame_number = ohci_get_frame, + .hub_status_data = ohci_hub_status_data, + .hub_control = ohci_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM + .bus_suspend = ohci_bus_suspend, + .bus_resume = ohci_bus_resume, +--- a/drivers/usb/host/ohci-hub.c ++++ b/drivers/usb/host/ohci-hub.c +@@ -36,18 +36,6 @@ + + /*-------------------------------------------------------------------------*/ + +-/* hcd->hub_irq_enable() */ +-static void ohci_rhsc_enable (struct usb_hcd *hcd) +-{ +- struct ohci_hcd *ohci = hcd_to_ohci (hcd); +- +- spin_lock_irq(&ohci->lock); +- if (!ohci->autostop) +- del_timer(&hcd->rh_timer); /* Prevent next poll */ +- ohci_writel(ohci, OHCI_INTR_RHSC, &ohci->regs->intrenable); +- spin_unlock_irq(&ohci->lock); +-} +- + #define OHCI_SCHED_ENABLES \ + (OHCI_CTRL_CLE|OHCI_CTRL_BLE|OHCI_CTRL_PLE|OHCI_CTRL_IE) + +@@ -374,18 +362,28 @@ static int ohci_root_hub_state_changes(s + int any_connected) + { + int poll_rh = 1; ++ int rhsc; + ++ rhsc = ohci_readl(ohci, &ohci->regs->intrenable) & OHCI_INTR_RHSC; + switch (ohci->hc_control & OHCI_CTRL_HCFS) { + + case OHCI_USB_OPER: +- /* keep on polling until we know a device is connected +- * and RHSC is enabled */ ++ /* If no status changes are pending, enable status-change ++ * interrupts. ++ */ ++ if (!rhsc && !changed) { ++ rhsc = OHCI_INTR_RHSC; ++ ohci_writel(ohci, rhsc, &ohci->regs->intrenable); ++ } ++ ++ /* Keep on polling until we know a device is connected ++ * and RHSC is enabled, or until we autostop. ++ */ + if (!ohci->autostop) { + if (any_connected || + !device_may_wakeup(&ohci_to_hcd(ohci) + ->self.root_hub->dev)) { +- if (ohci_readl(ohci, &ohci->regs->intrenable) & +- OHCI_INTR_RHSC) ++ if (rhsc) + poll_rh = 0; + } else { + ohci->autostop = 1; +@@ -398,12 +396,13 @@ static int ohci_root_hub_state_changes(s + ohci->autostop = 0; + ohci->next_statechange = jiffies + + STATECHANGE_DELAY; +- } else if (time_after_eq(jiffies, ++ } else if (rhsc && time_after_eq(jiffies, + ohci->next_statechange) + && !ohci->ed_rm_list + && !(ohci->hc_control & + OHCI_SCHED_ENABLES)) { + ohci_rh_suspend(ohci, 1); ++ poll_rh = 0; + } + } + break; +@@ -417,6 +416,12 @@ static int ohci_root_hub_state_changes(s + else + usb_hcd_resume_root_hub(ohci_to_hcd(ohci)); + } else { ++ if (!rhsc && (ohci->autostop || ++ ohci_to_hcd(ohci)->self.root_hub-> ++ do_remote_wakeup)) ++ ohci_writel(ohci, OHCI_INTR_RHSC, ++ &ohci->regs->intrenable); ++ + /* everything is idle, no need for polling */ + poll_rh = 0; + } +@@ -438,12 +443,16 @@ static inline int ohci_rh_resume(struct + static int ohci_root_hub_state_changes(struct ohci_hcd *ohci, int changed, + int any_connected) + { +- int poll_rh = 1; +- +- /* keep on polling until RHSC is enabled */ ++ /* If RHSC is enabled, don't poll */ + if (ohci_readl(ohci, &ohci->regs->intrenable) & OHCI_INTR_RHSC) +- poll_rh = 0; +- return poll_rh; ++ return 0; ++ ++ /* If no status changes are pending, enable status-change interrupts */ ++ if (!changed) { ++ ohci_writel(ohci, OHCI_INTR_RHSC, &ohci->regs->intrenable); ++ return 0; ++ } ++ return 1; + } + + #endif /* CONFIG_PM */ +--- a/drivers/usb/host/ohci-lh7a404.c ++++ b/drivers/usb/host/ohci-lh7a404.c +@@ -193,7 +193,6 @@ static const struct hc_driver ohci_lh7a4 + */ + .hub_status_data = ohci_hub_status_data, + .hub_control = ohci_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM + .bus_suspend = ohci_bus_suspend, + .bus_resume = ohci_bus_resume, +--- a/drivers/usb/host/ohci-omap.c ++++ b/drivers/usb/host/ohci-omap.c +@@ -470,7 +470,6 @@ static const struct hc_driver ohci_omap_ + */ + .hub_status_data = ohci_hub_status_data, + .hub_control = ohci_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM + .bus_suspend = ohci_bus_suspend, + .bus_resume = ohci_bus_resume, +--- a/drivers/usb/host/ohci-pci.c ++++ b/drivers/usb/host/ohci-pci.c +@@ -459,7 +459,6 @@ static const struct hc_driver ohci_pci_h + */ + .hub_status_data = ohci_hub_status_data, + .hub_control = ohci_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM + .bus_suspend = ohci_bus_suspend, + .bus_resume = ohci_bus_resume, +--- a/drivers/usb/host/ohci-pnx4008.c ++++ b/drivers/usb/host/ohci-pnx4008.c +@@ -277,7 +277,6 @@ static const struct hc_driver ohci_pnx40 + */ + .hub_status_data = ohci_hub_status_data, + .hub_control = ohci_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM + .bus_suspend = ohci_bus_suspend, + .bus_resume = ohci_bus_resume, +--- a/drivers/usb/host/ohci-pnx8550.c ++++ b/drivers/usb/host/ohci-pnx8550.c +@@ -201,7 +201,6 @@ static const struct hc_driver ohci_pnx85 + */ + .hub_status_data = ohci_hub_status_data, + .hub_control = ohci_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM + .bus_suspend = ohci_bus_suspend, + .bus_resume = ohci_bus_resume, +--- a/drivers/usb/host/ohci-ppc-of.c ++++ b/drivers/usb/host/ohci-ppc-of.c +@@ -72,7 +72,6 @@ static const struct hc_driver ohci_ppc_o + */ + .hub_status_data = ohci_hub_status_data, + .hub_control = ohci_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM + .bus_suspend = ohci_bus_suspend, + .bus_resume = ohci_bus_resume, +--- a/drivers/usb/host/ohci-ppc-soc.c ++++ b/drivers/usb/host/ohci-ppc-soc.c +@@ -172,7 +172,6 @@ static const struct hc_driver ohci_ppc_s + */ + .hub_status_data = ohci_hub_status_data, + .hub_control = ohci_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM + .bus_suspend = ohci_bus_suspend, + .bus_resume = ohci_bus_resume, +--- a/drivers/usb/host/ohci-ps3.c ++++ b/drivers/usb/host/ohci-ps3.c +@@ -68,7 +68,6 @@ static const struct hc_driver ps3_ohci_h + .get_frame_number = ohci_get_frame, + .hub_status_data = ohci_hub_status_data, + .hub_control = ohci_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + .start_port_reset = ohci_start_port_reset, + #if defined(CONFIG_PM) + .bus_suspend = ohci_bus_suspend, +--- a/drivers/usb/host/ohci-pxa27x.c ++++ b/drivers/usb/host/ohci-pxa27x.c +@@ -298,7 +298,6 @@ static const struct hc_driver ohci_pxa27 + */ + .hub_status_data = ohci_hub_status_data, + .hub_control = ohci_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM + .bus_suspend = ohci_bus_suspend, + .bus_resume = ohci_bus_resume, +--- a/drivers/usb/host/ohci-s3c2410.c ++++ b/drivers/usb/host/ohci-s3c2410.c +@@ -466,7 +466,6 @@ static const struct hc_driver ohci_s3c24 + */ + .hub_status_data = ohci_s3c2410_hub_status_data, + .hub_control = ohci_s3c2410_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM + .bus_suspend = ohci_bus_suspend, + .bus_resume = ohci_bus_resume, +--- a/drivers/usb/host/ohci-sa1111.c ++++ b/drivers/usb/host/ohci-sa1111.c +@@ -231,7 +231,6 @@ static const struct hc_driver ohci_sa111 + */ + .hub_status_data = ohci_hub_status_data, + .hub_control = ohci_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM + .bus_suspend = ohci_bus_suspend, + .bus_resume = ohci_bus_resume, +--- a/drivers/usb/host/ohci-sh.c ++++ b/drivers/usb/host/ohci-sh.c +@@ -68,7 +68,6 @@ static const struct hc_driver ohci_sh_hc + */ + .hub_status_data = ohci_hub_status_data, + .hub_control = ohci_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM + .bus_suspend = ohci_bus_suspend, + .bus_resume = ohci_bus_resume, +--- a/drivers/usb/host/ohci-sm501.c ++++ b/drivers/usb/host/ohci-sm501.c +@@ -75,7 +75,6 @@ static const struct hc_driver ohci_sm501 + */ + .hub_status_data = ohci_hub_status_data, + .hub_control = ohci_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM + .bus_suspend = ohci_bus_suspend, + .bus_resume = ohci_bus_resume, +--- a/drivers/usb/host/ohci-ssb.c ++++ b/drivers/usb/host/ohci-ssb.c +@@ -81,7 +81,6 @@ static const struct hc_driver ssb_ohci_h + + .hub_status_data = ohci_hub_status_data, + .hub_control = ohci_hub_control, +- .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM + .bus_suspend = ohci_bus_suspend, + .bus_resume = ohci_bus_resume, +--- a/drivers/usb/host/u132-hcd.c ++++ b/drivers/usb/host/u132-hcd.c +@@ -2934,16 +2934,6 @@ static int u132_start_port_reset(struct + return 0; + } + +-static void u132_hub_irq_enable(struct usb_hcd *hcd) +-{ +- struct u132 *u132 = hcd_to_u132(hcd); +- if (u132->going > 1) { +- dev_err(&u132->platform_dev->dev, "device has been removed %d\n" +- , u132->going); +- } else if (u132->going > 0) +- dev_err(&u132->platform_dev->dev, "device is being removed\n"); +-} +- + + #ifdef CONFIG_PM + static int u132_bus_suspend(struct usb_hcd *hcd) +@@ -2995,7 +2985,6 @@ static struct hc_driver u132_hc_driver = + .bus_suspend = u132_bus_suspend, + .bus_resume = u132_bus_resume, + .start_port_reset = u132_start_port_reset, +- .hub_irq_enable = u132_hub_irq_enable, + }; + + /* |
