patch-2.3.99-pre7 linux/drivers/usb/uhci.c

Next file: linux/drivers/usb/usb-ohci.c
Previous file: linux/drivers/usb/serial/whiteheat.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.99-pre6/linux/drivers/usb/uhci.c linux/drivers/usb/uhci.c
@@ -1889,7 +1889,7 @@
 			OK(len);
 		case 0x03:	/* string descriptors */
 			len = usb_root_hub_string (wValue & 0xff,
-				uhci->io_addr, "UHCI",
+				uhci->io_addr, "UHCI-alt",
 				data, wLength);
 			if (len > 0) {
 				OK (min (leni, len));
@@ -1929,9 +1929,10 @@
 {
 	struct uhci *uhci = (struct uhci *)urb->dev->bus->hcpriv;
 
-	uhci->rh.send = 0;
-	del_timer(&uhci->rh.rh_int_timer);
-
+	if (uhci->rh.urb == urb) {
+		uhci->rh.send = 0;
+		del_timer(&uhci->rh.rh_int_timer);
+	}
 	return 0;
 }
 /*-------------------------------------------------------------------*/
@@ -2182,7 +2183,7 @@
 	 * us a reasonable dynamic range for irq latencies.
 	 */
 	for (i = 0; i < 1024; i++) {
-		struct uhci_td *irq = &uhci->skel_int2_td;
+		struct uhci_td *irq = &uhci->skel_int1_td;
 
 		if (i & 1) {
 			irq++;
@@ -2357,10 +2358,14 @@
 
 static int handle_pm_event(struct pm_dev *dev, pm_request_t rqst, void *data)
 {
+	struct uhci *uhci = dev->data;
 	switch (rqst) {
 	case PM_SUSPEND:
+		reset_hc(uhci);
 		break;
 	case PM_RESUME:
+		reset_hc(uhci);
+		start_hc(uhci);
 		break;
 	}
 	return 0;

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)