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

Reply via email to