1. 01 Aug, 2014 2 commits
  2. 22 Jul, 2014 35 commits
  3. 21 Jul, 2014 1 commit
  4. 18 Jul, 2014 2 commits
    • Alan Stern's avatar
      USB: OHCI: add check for stopped frame counter · 499b3803
      Alan Stern authored
      
      
      This patch adds an extra check to ohci-hcd's I/O watchdog routine.  If
      the controller stops updating the frame counter, we will assume it is
      dead.  But there has to be an exception: Some controllers stop the
      frame counter when no ports are connected.  Check to make sure there
      is at least one active port before deciding the controller is dead.
      
      (This test may appear racy, but it isn't.  Enabling a newly connected
      port takes several milliseconds, during which time the frame counter
      must advance.)
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Tested-by: default avatarDennis New <dennisn@dennisn.linuxd.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      499b3803
    • Alan Stern's avatar
      USB: OHCI: add I/O watchdog for orphan TDs · 81e38333
      Alan Stern authored
      
      
      Some OHCI controllers have a bug: They fail to add completed TDs to
      the done queue.  Examining this queue is the only method ohci-hcd has
      for telling when a transfer is complete; failure to add a TD can
      result in an URB that never completes and cannot be unlinked.
      
      This patch adds a watchdog routine to ohci-hcd.  The routine
      periodically scans the active ED and TD lists, looking for TDs which
      are finished but not on the done queue.  When one is found, and it is
      certain that the controller hardware will never add the TD to the done
      queue, the watchdog routine manually puts the TD on the done list so
      that it can be handled normally.
      
      The watchdog routine also checks for a condition indicating the
      controller has died.  If the done queue is non-empty but the
      HccaDoneHead pointer hasn't been updated for a few hundred
      milliseconds, we assume the controller will never update it and
      therefore is dead.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      81e38333