• Douglas Anderson's avatar
    usb: dwc2: host: Use periodic interrupt even with DMA · 4e50e011
    Douglas Anderson authored
    The old code in dwc2_process_periodic_channels() would only enable the
    "periodic empty" interrupt if we weren't using DMA.  That wasn't right
    since we can still get into cases where we have small FIFOs even on
    systems that have DMA (the rk3288 is a prime example).
    
    Let's always enable/disable the "periodic empty" when appropriate.  As
    part of this:
    
    * Always call dwc2_process_periodic_channels() even if there's nothing
      in periodic_sched_assigned (we move the queue empty check so we still
      avoid the extra work).  That will make extra certain that we will
      properly disable the "periodic empty" interrupt even if there's
      nothing queued up.
    
    * Move the enable of "periodic empty" due to non-empty
      periodic_sched_assigned to be for slave mode (non-DMA mode) only.
      Presumably this was the original intention of the check for DMA since
      it seems to match the comments above where in slave mode we leave
      things on the assigned queue.
    
    Note that even before this change slave mode didn't work for me, so I
    can't say for sure that my understanding of slave mode is correct.
    However, this shouldn't change anything for slave mode so if slave mode
    worked for someone in the past it ought to still work.
    
    With this change, I no longer get constant misses reported by my other
    debugging code (and with future patches) when I've got:
    * Rockchip rk3288 Chromebook, using port ff540000
      -> Pluggable 7-port Hub with Charging (powered)
         -> Microsoft Wireless Keyboard 2000 in port 1.
         -> Das Keyboard in port 2.
         -> Jabra Speaker in port 3
         -> Logitech, Inc. Webcam C600 in port 4
         -> Microsoft Sidewinder X6 Keyboard in port 5
    
    ...and I'm playing music on the USB speaker and capturing video from the
    webcam.
    Acked-by: default avatarJohn Youn <johnyoun@synopsys.com>
    Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
    Tested-by: default avatarHeiko Stuebner <heiko@sntech.de>
    Tested-by: default avatarStefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: default avatarFelipe Balbi <balbi@kernel.org>
    4e50e011
hcd.c 91.9 KB