• Alan Stern's avatar
    [PATCH] usbcore support for root-hub IRQ instead of polling · d5926ae7
    Alan Stern authored
    This is a revised version of an earlier patch to add support to usbcore
    for driving root hubs by interrupts rather than polling.
    
    There's a temporary flag added to struct usb_hcd, marking devices whose
    drivers are aware of the new mechanism.  By default that flag doesn't get
    set so drivers will continue to see the same polling behavior as before.
    This way we can convert the HCDs one by one to use interrupt-based event
    reporting, and the temporary flag can be removed when they're all done.
    
    Also included is a small change to the hcd_disable_endpoint routine.
    Although endpoints normally shouldn't be disabled while a controller is
    suspended, it's legal to do so when the controller's driver is being
    rmmod'ed.
    
    Lastly the patch adds a new callback, .hub_irq_enable, for use by HCDs
    where the root hub's port-change interrupts are level-triggered rather
    than edge-triggered.  The callback is invoked each time khubd has finished
    processing a root hub, to let the HCD know that the interrupt can safely
    be re-enabled.
    Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    d5926ae7
hcd.c 51.9 KB