• David Brownell's avatar
    [PATCH] USB: usbcore misc cleanup (notably for non-dma hcds) · 31fd2ea0
    David Brownell authored
    The support for non-dma HCDs is likely the most interesting bit here.
    
        - makes dma calls behave sensibly when used with host controllers
          that don't use dma (including sl811).  usb_buffer_map() is a nop
          while scatterlist dma mappings fail (as they must).
    
        - make usb_sg_init() behave sensibly when used with non-dma hcs.
          the urbs are initted with transfer_buffer, not transfer_dma.
          this is the higher level analogue to usb_buffer_map(), so it
          needs to succeed unless there's a Real Error (tm).
    
        - moves two compatibility inlines from ehci.h into hcd.h so
          it'll be more practical to have the other hcds work in other
          environments (notably lk 2.4) too
    
        - remove URB_TIMEOUT_KILLED flag ... no device driver tests it;
          hcds don't really (uhci sets it, never reads it; sl811 doesn't
          enable the path that might set it), and it's not well defined.
          if any hcd needs such state, keep it in hc-private storage.
    
        - in usb_sg_wait(), use yield() instead of schedule() to let
          other activities free resources needed to continue.  (This
          was noted recently by Oliver.)
    31fd2ea0
hcd.c 39.7 KB