From: Albert H. <he...@us...> - 2008-09-13 19:42:47
|
Update of /cvsroot/gc-linux/linux/drivers/usb/host In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv13650/drivers/usb/host Modified Files: Kconfig rvl-sthcd.c Log Message: Merged 2.6.25. Queued small fixes for: - starlet-es - starlet-ipc - starlet-stm - rvl-stsd - rvl-sthcd - gcn-ai Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/Kconfig,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Kconfig 2 Jul 2008 20:51:21 -0000 1.1 +++ Kconfig 13 Sep 2008 19:42:57 -0000 1.2 @@ -29,15 +29,6 @@ To compile this driver as a module, choose M here: the module will be called ehci-hcd. -config USB_EHCI_SPLIT_ISO - bool "Full speed ISO transactions (EXPERIMENTAL)" - depends on USB_EHCI_HCD && EXPERIMENTAL - default n - ---help--- - This code is new and hasn't been used with many different - EHCI or USB 2.0 transaction translator implementations. - It should work for ISO-OUT transfers, like audio. - config USB_EHCI_ROOT_HUB_TT bool "Root Hub Transaction Translators (EXPERIMENTAL)" depends on USB_EHCI_HCD && EXPERIMENTAL @@ -69,21 +60,29 @@ config USB_EHCI_BIG_ENDIAN_MMIO bool - depends on USB_EHCI_HCD && (PPC_CELLEB || PPC_PS3 || 440EPX) + depends on USB_EHCI_HCD && (PPC_CELLEB || PPC_PS3 || 440EPX || ARCH_IXP4XX) default y config USB_EHCI_BIG_ENDIAN_DESC bool - depends on USB_EHCI_HCD && 440EPX + depends on USB_EHCI_HCD && (440EPX || ARCH_IXP4XX) default y config USB_EHCI_FSL - bool + bool "Support for Freescale on-chip EHCI USB controller" + depends on USB_EHCI_HCD && FSL_SOC select USB_EHCI_ROOT_HUB_TT - default y if MPC834x || PPC_MPC831x ---help--- Variation of ARC USB block used in some Freescale chips. +config USB_EHCI_HCD_PPC_OF + bool "EHCI support for PPC USB controller on OF platform bus" + depends on USB_EHCI_HCD && PPC_OF + default y + ---help--- + Enables support for the USB controller present on the PowerPC + OpenFirmware platform bus. + config USB_ISP116X_HCD tristate "ISP116X HCD support" depends on USB Index: rvl-sthcd.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/rvl-sthcd.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- rvl-sthcd.c 2 Jul 2008 20:51:21 -0000 1.1 +++ rvl-sthcd.c 13 Sep 2008 19:42:57 -0000 1.2 @@ -920,12 +920,10 @@ switch(typeReq) { case DeviceOutRequest | USB_REQ_SET_ADDRESS: /* 0005 */ - if (urb->dev->devnum == 0) { - drv_printk(KERN_INFO, "new address %u\n", - wValue); - } else { + if (urb->dev->devnum != 0) { /* REVISIT, never reached */ - drv_printk(KERN_INFO, "address change %u->%u\n", + drv_printk(KERN_WARNING, + "address change %u->%u\n", urb->dev->devnum, wValue); } /* we have an udev because the takein was successful */ @@ -1024,7 +1022,7 @@ status = xfer_len; xfer_len = 0; - if (status != -7004) { + if (status != -7004 && status != 7003) { drv_printk(KERN_ERR, "req %lu: completed with" " error %d\n", pep->serial, status); } @@ -1033,6 +1031,7 @@ case -7005: status = -ESHUTDOWN; break; + case -7003: case -7004: /* endpoint stall */ status = -EPIPE; @@ -1583,8 +1582,7 @@ udev = sthcd_find_udev_by_ids(oh->hcd, idVendor, idProduct); if (!udev) { - drv_printk(KERN_WARNING, "unable to find removed device," - " was it a ignored hub?\n"); + /* normally reached for ignored hubs */ error = -ENODEV; } else { sthcd_udev_exit(udev); @@ -1688,13 +1686,8 @@ starlet_close(fd); if (retval >= USB_DT_DEVICE_SIZE) { - if (descriptor->bDeviceClass == USB_CLASS_HUB) { - drv_printk(KERN_WARNING, "ignoring hub %04X.%04X!\n", - idVendor, idProduct); - retval = 1; /* hub found */ - } else { - retval = 0; - } + /* tell if a hub was found */ + retval = (descriptor->bDeviceClass == USB_CLASS_HUB)?1:0; } else { if (retval >= 0) retval = -EINVAL; /* short descriptor */ @@ -1704,7 +1697,7 @@ done: if (retval < 0) - drv_printk(KERN_ERR, "%s: retval=%d (%x)\n", __func__, retval, retval); + DBG("%s: retval=%d (%x)\n", __func__, retval, retval); return retval; } @@ -1801,8 +1794,8 @@ p = &oh->devids[i]; if (!sthcd_devid_find(oh->new_devids, nr_new_devids, p)) { /* removal */ - drv_printk(KERN_INFO, "%s: %04X.%04X removed\n", - __func__, p->idVendor, p->idProduct); + drv_printk(KERN_INFO, "removing device %04X.%04X\n", + p->idVendor, p->idProduct); sthcd_oh_remove_udev(oh, p->idVendor, p->idProduct); } } @@ -1811,14 +1804,19 @@ p = &oh->new_devids[i]; if (!sthcd_devid_find(oh->devids, oh->nr_devids, p)) { /* insertion */ - drv_printk(KERN_INFO, "%s: %04X.%04X inserted\n", - __func__, p->idVendor, p->idProduct); error = sthcd_oh_check_hub(oh, p->idVendor, p->idProduct); if (error == 0) { /* not a hub, register the usb device */ + drv_printk(KERN_INFO, + "inserting device %04X.%04X\n", + p->idVendor, p->idProduct); sthcd_oh_insert_udev(oh, p->idVendor, p->idProduct); + } else { + drv_printk(KERN_INFO, + "ignoring hub %04X.%04X\n", + p->idVendor, p->idProduct); } } } @@ -2052,6 +2050,7 @@ pep, pep->serial, urb); /* * There is an urb in flight. + * * We deattach the urb from the pep and leave the pep to the * callback function, which will free it upon completion, * without further action. @@ -2086,9 +2085,9 @@ goto done; if (pep->urb) { - DBG("%s: (pep %p, sn %lu, urb %p) urb in transit!\n", __func__, - pep, pep->serial, pep->urb); /* + * There is an urb in flight. + * * Disable the private endpoint and take the urb out of it. * The callback function will take care of freeing the pep * when the IOS call completes. |