• David Brownell's avatar
    [PATCH] ohci-hcd endpoint scheduling, driverfs · b92eb850
    David Brownell authored
    This patch cleans up some messy parts of this driver, and
    was pleasantly painless.
    
          - gets rid of ED dma hashtables
             * less memory needed
             * also less (+faster) code
             * ... rewrites all ED scheduling ops, they now use
               cpu addresses, like EHCI and UHCI do already
    
          - simplifies ED scheduling (no dma hashtables)
             * control and bulk lists are now doubly linked
             * periodic tree still singly linked; driver uses a
               new CPU view "shadow" of the hardware framelist
             * previous periodic code was cryptic, almost read-only
             * simpler tree code for EDs with {branch,period}
    
          - bugfixes periodic scheduling
             * when CONFIG_USB_BANDWIDTH, checks per-frame load
               against the limit; no more dodgey accounting
             * handles iso period != 1; interrupt and iso schedule
               EDs with the same routine (HW sees special TDs)
             * credit usbfs with bandwidth for endpoints, not URBs
    
          - adds driverfs output (when CONFIG_USB_DEBUG)
             * resembles EHCI:  'async' (control+bulk) and
               'periodic' (interrupt+iso) files show schedules
             * shows only queue heads (EDs) just now (*)
    
          - has minor text and code cleanups, etc
    
    Now that this logic has morphed into more comprehensible
    form, I know what to borrow into the EHCI code!
    
    
         (*) It shows TDs on the td_list, but this patch won't
             put them there.  A queue fault handling update will.
    b92eb850
ohci-q.c 27.9 KB