1. 20 10月, 2011 1 次提交
  2. 23 8月, 2011 1 次提交
    • A
      usb/isp1760: Use polling instead of SOF interrupts to fix Errata 2 · 6d50c60e
      Arvid Brodin 提交于
      Errata 2 for the isp1760 explains that the chip sometimes does not issue
      interrupts when an ATL (bulk or control) transfer is completed. There are
      several issues with the current work-around (SOF interrupts) for this:
      
      1) It seems the chip sometimes does not even set the done bit for a
         completed transfer, in which case SOF interrupts does not solve
         the problem since we still check the done map to find out which
         transfer descriptors to handle.
      
      2) The above point seems to happen only when ATL and SOF interrupts
         are enabled at the same time. However, disabling ATL interrupts
         increases the latency between transfer completion and handling.
         This is very noticeable in the testusb suite, which take several
         minutes more to run with ATL interrupts disabled.
      
      This patch removes the code to switch on SOF interrupts, and instead
      use a kernel timer to periodically check for "old" descriptors that
      have their VALID and ACTIVE flags unset, indicating completion, thus
      avoiding the dependency on the chip's done map (and SOF interrupts)
      to find transfers affected by this HW bug.
      
      [bigeasy@linutronix: 80 lines limit]
      Signed-off-by: NArvid Brodin <arvid.brodin@enea.com>
      Signed-off-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      6d50c60e
  3. 03 5月, 2011 2 次提交
  4. 01 3月, 2011 5 次提交
  5. 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
  6. 23 9月, 2009 1 次提交
  7. 25 3月, 2009 1 次提交
  8. 08 1月, 2009 1 次提交
  9. 14 8月, 2008 2 次提交
    • S
      usb: isp1760: don't be noisy about short packets. · 7839b516
      Sebastian Siewior 提交于
      According to Alan Stern, short packets are quite normal under
      certain circumstances. This printk was triggered by usb to
      serial converters on every packet and some usb sticks triggered
      a few of those while plugging the stick.
      This printks are now hidden unless USB debug mode is activated.
      
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NSebastian Siewior <sebastian@breakpoint.cc>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      7839b516
    • E
      usb: ISP1760: improve pre-fetch timing · 3f02a957
      Enrico Scholz 提交于
      ISP1760 requires a delay of 90ns between programming the address and
      reading the data.  Current driver solves this by a mdelay(1) which is
      very heavy weighted and slow.  This patch applies the workaround from
      the ISP1760 FAQ by using two different banks for PTD and payload data
      and using a common wait for them.  This wait is done by an additional
      ISP1760 access (whose timing constraints guarantee the 90ns delay).
      This improves speed when reading from an USB stick from:
      
        $ time dd if=/dev/sda of=/dev/zero bs=65536 count=1638
        real    1m 15.43s
        user    0m 0.44s
        sys     0m 39.46s
      
      to
      
        $ time dd if=/dev/sda of=/dev/zero bs=65536 count=1638
        real    0m 18.53s
        user    0m 0.16s
        sys     0m 12.97s
      
      [bigeasy@linutronix.de: fixed comment formating, moved define into
         header file, obey 80 char rule]
      Signed-off-by: NEnrico Scholz <enrico.scholz@sigma-chemnitz.de>
      Signed-off-by: NSebastian Siewior <bigeasy@linutronix.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      3f02a957
  10. 22 7月, 2008 1 次提交
  11. 03 5月, 2008 1 次提交