Hi Greg, As promised for 2.6.11, here are patches to change how HCDs manage per-device state. Basically, we've had per-device state hooks since 2.2.9 or so (!) but that's never matched what HCDs really needed: per-endpoint state, tied to each endpoint's DMA queue. Now that the 2.6 USB stack manages per-endpoint state reasonably, we don't need to put up with that mismatch any more.
These patches come in two groups to make usb_host_endpoint take on more of those endpoint responsibilities, plus a minor unrelated patch. An overview of the patches is found here, and the patches follow. Eventually, refocussing on usb_host_endpoint could let us nuke "pipe" and slim down the URB submit/complete paths ... working more like the "usb_endpoint" in the "gadget" API. But for now, this is worth doing because it simplifies things and is a net code shrink. - Dave OVERVIEW * The first group moves some per-endpoint state down from struct usb_device into struct usb_host_endpoint: - Devices now have an array of pointers to the usb_host_endpoint structures for their current configuration and altsetting; they're indexed by endpoint number. - The previous array of endpoint maxpacket values is no longer needed (neither is one function) now that the usb_host_endpoint data structure is readily accessible. This group splits into core patches (the biggest part): epmax-h.patch epmax-core.patch epmax-usbfs.patch and driver patches epmax-audio.patch epmax-auer.patch epmax-cris.patch epmax-ehci.patch epmax-usbtest.patch * The second group moves per-endpoint state up from the HCD glue layer (which used the per-device state to hold it) into usb_host_endpoint: - The HCD glue "hcd_dev" structure is now gone. All its key parts are now in usb_host_endpoint: * There's now a per-endpoint HCD void* pointer, used to track hardware state like an endpoint's QH. * URB queues are now per-endpoint; HCD DMA queues will still need to be separate (one or more TDs per URB). PIO-only HCDs won't need any other queue. - The HCD entry points that previously took an hcd_dev now take a usb_host_endpoint. - The previous usb_device->hcpriv void* pointer is now gone. Along with it go the usb_bus and HCD hooks to allocate and deallocate the data stored there (lately always an hcd_dev, though on 2.4 kernels OHCI had something similar). This group splits into core patches hdev-h.patch hdev-rm.patch (includes some hcd one-liners) hdev-core.patch and HCD patches hdev-ehci.patch hdev-ohci.patch hdev-uhci.patch * There's also a minor (unrelated) "misc.patch" updating the "missing IRQ" message (and comment) to make sense on non-APIC, non-ACPI, and non-PCI systems. ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/ _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel