1. 18 2月, 2011 1 次提交
    • S
      USB: isp1760: Implement solution for erratum 2 · b14e840d
      Sebastian Andrzej Siewior 提交于
      The document says:
      |2.1 Problem description
      |    When at least two USB devices are simultaneously running, it is observed that
      |    sometimes the INT corresponding to one of the USB devices stops occurring. This may
      |    be observed sometimes with USB-to-serial or USB-to-network devices.
      |    The problem is not noticed when only USB mass storage devices are running.
      |2.2 Implication
      |    This issue is because of the clearing of the respective Done Map bit on reading the ATL
      |    PTD Done Map register when an INT is generated by another PTD completion, but is not
      |    found set on that read access. In this situation, the respective Done Map bit will remain
      |    reset and no further INT will be asserted so the data transfer corresponding to that USB
      |    device will stop.
      |2.3 Workaround
      |    An SOF INT can be used instead of an ATL INT with polling on Done bits. A time-out can
      |    be implemented and if a certain Done bit is never set, verification of the PTD completion
      |    can be done by reading PTD contents (valid bit).
      |    This is a proven workaround implemented in software.
      
      Russell King run into this with an USB-to-serial converter. This patch
      implements his suggestion to enable the high frequent SOF interrupt only
      at the time we have ATL packages queued. It goes even one step further
      and enables the SOF interrupt only if we have more than one ATL packet
      queued at the same time.
      
      Cc: <stable@kernel.org> # [2.6.35.x, 2.6.36.x, 2.6.37.x]
      Tested-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      b14e840d
  2. 24 8月, 2010 1 次提交
  3. 11 8月, 2010 1 次提交
    • A
      USB: convert usb_hcd bitfields into atomic flags · 541c7d43
      Alan Stern 提交于
      This patch (as1393) converts several of the single-bit fields in
      struct usb_hcd to atomic flags.  This is for safety's sake; not all
      CPUs can update bitfield values atomically, and these flags are used
      in multiple contexts.
      
      The flag fields that are set only during registration or removal can
      remain as they are, since non-atomic accesses at those times will not
      cause any problems.
      
      (Strictly speaking, the authorized_default flag should become atomic
      as well.  I didn't bother with it because it gets changed only via
      sysfs.  It can be done later, if anyone wants.)
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      541c7d43
  4. 21 5月, 2010 4 次提交
  5. 03 3月, 2010 1 次提交
    • C
      USB: isp1760: Flush the D-cache for the pipe-in transfer buffers · db8516f6
      Catalin Marinas 提交于
      When the HDC driver writes the data to the transfer buffers it pollutes
      the D-cache (unlike DMA drivers where the device writes the data). If
      the corresponding pages get mapped into user space, there are no
      additional cache flushing operations performed and this causes random
      user space faults on architectures with separate I and D caches
      (Harvard) or those with aliasing D-cache.
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      Cc: Matthew Dharm <mdharm-kernel@one-eyed-alien.net>
      Cc: Greg KH <greg@kroah.com>
      Cc: Sebastian Siewior <bigeasy@linutronix.de>
      Cc: Oliver Neukum <oliver@neukum.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      db8516f6
  6. 21 1月, 2010 1 次提交
  7. 23 9月, 2009 1 次提交
  8. 29 5月, 2009 1 次提交
    • W
      USB: isp1760: urb_dequeue doesn't always find the urbs · 0afb20e0
      Warren Free 提交于
      The option driver (and presumably others) allocates several URBs when it
      opens and tries to free them when it closes. The isp1760_urb_dequeue
      function gets called, but the packet being dequeued is not necessarily at
      the
      front of one of the 32 queues. If not, the isp1760_urb_done function doesn't
      get called for the URB and the process trying to free it hangs forever on a
      wait_queue. This patch does two things. If the URB being dequeued has others
      queued behind it, it re-queues them. And it searches the queues looking for
      the URB being dequeued rather than just looking at the one at the front of
      the queue.
      
      [bigeasy@linutronix] whitespace fixes, reformating
      
      Cc: stable <stable@kernel.org>
      Signed-off-by: NWarren Free <wfree@ipmn.com>
      Signed-off-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      0afb20e0
  9. 25 3月, 2009 3 次提交
  10. 08 1月, 2009 1 次提交
  11. 22 8月, 2008 1 次提交
  12. 14 8月, 2008 3 次提交
  13. 22 7月, 2008 4 次提交
  14. 12 6月, 2008 1 次提交
  15. 15 5月, 2008 1 次提交
  16. 03 5月, 2008 1 次提交