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