1. 12 12月, 2009 4 次提交
    • D
      USB: Add EHCI support for MX27 and MX31 based boards · 7e8d5cd9
      Daniel Mack 提交于
      The Freescale MX27 and MX31 SoCs have a EHCI controller onboard.
      The controller is capable of USB on the go. This patch adds
      a driver to support all three of them.
      
      Users have to pass details about serial interface configuration in the
      platform data.
      
      The USB OTG core used here is the ARC core, so the driver should
      be renamed and probably be merged with ehci-fsl.c eventually.
      Signed-off-by: NSascha Hauer <s.hauer@pengutronix.de>
      Signed-off-by: NDaniel Mack <daniel@caiaq.de>
      Cc: David Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      7e8d5cd9
    • S
      USB: ehci: Respect IST when scheduling new split iTDs. · dccd574c
      Sarah Sharp 提交于
      The EHCI specification says that an EHCI host controller may cache part of
      the isochronous schedule.  The EHCI controller must advertise how much it
      caches in the schedule through the HCCPARAMS register isochronous
      scheduling threshold (IST) bits.
      
      In theory, adding new iTDs within the IST should be harmless.  The HW will
      follow the old cached linked list and miss the new iTD.  SW will notice HW
      missed the iTD and return 0 for the transfer length.
      
      However, Intel ICH9 chipsets (and some later chipsets) have issues when SW
      attempts to schedule a split transaction within the IST.  All transfers
      will cease being sent out that port, and the drivers will see isochronous
      packets complete with a length of zero.  Start of frames may or may not
      also disappear, causing the device to go into auto-suspend.  This "bus
      stall" will continue until a control or bulk transfer is queued to a
      device under that roothub.
      
      Most drivers will never cause this behavior, because they use multiple
      URBs with multiple packets to keep the bus busy.  If you limit the number
      of URBs to one, you may be able to hit this bug.
      
      Make sure the EHCI driver does not schedule full-speed transfers within
      the IST under an Intel chipset.  Make sure that when we fall behind the
      current microframe plus IST, we schedule the new transfer at the next
      periodic interval after the IST.
      
      Don't change the scheduling for new transfers, since the schedule slop will
      always be greater than the IST.  Allow high speed isochronous transfers to
      be scheduled within the IST, since this doesn't trigger the Intel chipset
      bug.
      
      Make sure that if the host caches the full frame, the EHCI driver's
      internal isochronous threshold (ehci->i_thresh) is set to
      8 microframes + 2 microframes wiggle room.  This is similar to what is done in
      the case where the host caches less than the full frame.
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: David Brownell <dbrownell@users.sourceforge.net>
      Cc: Clemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      dccd574c
    • F
      USB: host: ehci: introduce omap ehci-hcd driver · 54ab2b02
      Felipe Balbi 提交于
      this driver has been sitting in linux-omap tree for quite
      some time. It adds support for omap's ehci controller.
      Signed-off-by: NFelipe Balbi <felipe.balbi@nokia.com>
      Signed-off-by: NVikram Pandita <vikram.pandita@ti.com>
      Signed-off-by: NAjay Kumar Gupta <ajay.gupta@ti.com>
      Signed-off-by: NAnand Gadiyar <gadiyar@ti.com>
      Cc: David Brownell <dbrownell@users.sourceforge.net>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      54ab2b02
    • J
      USB: Add support for Xilinx USB host controller · 08d3c18e
      Julie Zhu 提交于
      Add bus glue driver for Xilinx USB host controller. The controller can be
      configured as HS only or HS/FS hybrid. The driver uses the device tree file
      to configure the driver according to the setting in the hardware system.
      
      This driver has been tested with usbtest using the NET2280 PCI card.
      Signed-off-by: NJulie Zhu <julie.zhu@xilinx.com>
      Signed-off-by: NJohn Linn <john.linn@xilinx.com>
      Acked-by: NGrant Likely <grant.likely@secretlab.ca>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      08d3c18e
  2. 04 12月, 2009 1 次提交
  3. 01 12月, 2009 1 次提交
  4. 23 9月, 2009 9 次提交
  5. 08 8月, 2009 1 次提交
    • A
      USB: EHCI: fix two new bugs related to Clear-TT-Buffer · 7a0f0d95
      Alan Stern 提交于
      This patch (as1273) fixes two(!) bugs introduced by the new
      Clear-TT-Buffer implementation in ehci-hcd.
      
      	It is now possible for an idle QH to have some URBs on its
      	queue -- this will happen if a Clear-TT-Buffer is pending for
      	the QH's endpoint.  Consequently we should not issue a warning
      	when someone tries to unlink an URB from an idle QH; instead
      	we should process the request immediately.
      
      	The refcounts for QHs could get messed up, because
      	submit_async() would increment the refcount when calling
      	qh_link_async() and qh_link_async() would then refuse to link
      	the QH into the schedule if a Clear-TT-Buffer was pending.
      	Instead we should increment the refcount only when the QH
      	actually is added to the schedule.  The current code tries to
      	be clever by leaving the refcount alone if an unlink is
      	immediately followed by a relink; the patch changes this to an
      	unconditional decrement and increment (although they occur in
      	the opposite order).
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      CC: David Brownell <david-b@pacbell.net>
      Tested-by: NManuel Lauss <manuel.lauss@gmail.com>
      Tested-by: NMatthijs Kooijman <matthijs@stdin.nl>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      
      7a0f0d95
  6. 13 7月, 2009 2 次提交
    • A
      USB: EHCI: use the new clear_tt_buffer interface · 914b7012
      Alan Stern 提交于
      This patch (as1256) changes ehci-hcd and all the other drivers in the
      EHCI family to make use of the new clear_tt_buffer callbacks.  When a
      Clear-TT-Buffer request is in progress for a QH, the QH is not allowed
      to be linked into the async schedule until the request is finished.
      At that time, if there are any URBs queued for the QH, it is linked
      into the async schedule.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      914b7012
    • A
      USB: EHCI: update toggle state for linked QHs · a455212d
      Alan Stern 提交于
      This is an update to the "usb-ehci-update-toggle-state-for-linked-qhs"
      patch.  Since an HCD's endpoint_reset method can be called in
      interrupt context, it mustn't assume that interrupts are enabled or
      that it can sleep.
      
      So we revert to the original way of refreshing QHs' toggle bits.  Now
      the endpoint_reset method merely clears the toggle flag in the device
      structure (as was done before) and starts an async QH unlink.  When the
      QH is linked again, after the unlink finishes and an URB is queued,
      the qh_refresh() routine will update the QH's toggle bit.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Tested-by: NDavid <david@unsolicited.net>
      CC: David Brownell <david-b@pacbell.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      a455212d
  7. 16 6月, 2009 2 次提交
    • A
      USB: EHCI: update toggle state for linked QHs · b18ffd49
      Alan Stern 提交于
      This patch (as1245) fixes a bug in ehci-hcd.  When an URB is queued
      for an endpoint whose QH is already in the LINKED state, the QH
      doesn't get refreshed.  As a result, if usb_clear_halt() was called
      during the time that the QH was linked but idle, the data toggle value
      in the QH doesn't get reset.
      
      The symptom is that after a clear_halt, data gets lost and transfers
      time out.  This problem is starting to show up now because the
      "ehci-hcd unlink speedups" patch causes QHs with no queued URBs to
      remain linked for a suitable time.
      
      The patch utilizes the new endpoint_reset mechanism to fix the
      problem.  When an endpoint is reset, the new method forcibly unlinks
      the QH (if necessary) and safely updates the toggle value.  This
      allows qh_update() to be simplified and avoids using usb_device's
      toggle bits in a rather unintuitive way.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      CC: David Brownell <david-b@pacbell.net>
      Tested-by: NDavid <david@unsolicited.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      b18ffd49
    • G
      USB: EHCI: use the new usb debugfs directory · 08f4e586
      Greg Kroah-Hartman 提交于
      All usb debugfs files should be behind the usb directory, not at the
      root of debugfs.
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      08f4e586
  8. 07 4月, 2009 1 次提交
  9. 25 3月, 2009 1 次提交
  10. 28 2月, 2009 1 次提交
  11. 14 11月, 2008 1 次提交
    • A
      USB: EHCI: fix handling of dead controllers · 67b2e029
      Alan Stern 提交于
      This patch (as1165) makes a few small changes in the logic used by
      ehci-hcd when it encounters a controller error:
      
      	Instead of printing out the masked status, it prints the
      	original status as read directly from the hardware.
      
      	It doesn't check for the STS_HALT status bit before taking
      	action.  The mere fact that the STS_FATAL bit is set means
      	that something bad has happened and the controller needs to
      	be reset.  With the old code this test could never succeed
      	because the STS_HALT bit was masked out from the status.
      
      I anticipate that this will prevent the occasional "irq X: nobody cared"
      problem people encounter when their EHCI controllers die.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Cc: David Brownell <david-b@pacbell.net>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      67b2e029
  12. 21 10月, 2008 1 次提交
  13. 18 10月, 2008 5 次提交
  14. 24 9月, 2008 1 次提交
  15. 22 7月, 2008 1 次提交
    • D
      USB: ehci-hcd unlink speedups · b9638011
      David Brownell 提交于
      This patch fixes some performance bugs observed with some workloads
      when unlinking EHCI queue header (QH) descriptors from the async ring
      (control/bulk schedule).
      
      The mechanism intended to defer unlinking an empty QH (so there is no
      penalty in common cases where it's quickly reused) was not working as
      intended.  Sometimes the unlink was scheduled:
      
       - too quickly ... which can be a *strong* negative effect, since
         that QH becomes unavailable for immediate re-use;
      
       - too slowly ... wasting DMA cycles, usually a minor issue except
         for increased bus contention and power usage;
      
      Plus there was an extreme case of "too slowly":  a logical error in the
      IAA watchdog-timer conversion meant that sometimes the unlink never
      got scheduled.
      
      The fix replaces a simple counter with a timestamp derived from the
      controller's 8 KHz microframe counter, and adjusts the timer usage
      for some issues associated with HZ being less than 8K.
      
      (Based on a patch originally by Alan Stern, and good troubleshooting
      from  Leonid.)
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: Leonid <leonidv11@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      b9638011
  16. 30 5月, 2008 2 次提交
    • G
      Revert "USB: EHCI: fix performance regression" · bb7e6984
      Greg Kroah-Hartman 提交于
      This reverts commit fa38dfcc.
      
      It wasn't really a regression and David and Alan are still working
      through the issues reported.
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      bb7e6984
    • A
      USB: EHCI: fix performance regression · fa38dfcc
      Alan Stern 提交于
      This patch (as1099) fixes a performance regression in ehci-hcd.  The
      fundamental problem is that queue headers get removed from the
      schedule too quickly, since the code checks for a counter advancing
      rather than making an actual time-based check.  The latency involved
      in removing the queue header and then relinking it can severely
      degrade certain kinds of workloads.
      
      The patch replaces a simple counter with a timestamp derived from the
      controller's uframe value.  In addition, the delay for unlinking an
      idle queue header is increased from 5 ms to 10 ms; since some
      controllers (nVidia) have a latency of up to 1 ms for unlinking, this
      reduces the relative impact from 20% to 10%.
      
      Finally, a logical error left over from the IAA watchdog-timer
      conversion is corrected.  Now the driver will always either unlink an
      idle queue header or set up a timer to unlink it later.  The old code
      would sometimes fail to do either.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Cc: David Brownell <david-b@pacbell.net>
      Cc: Leonid <leonidv11@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      fa38dfcc
  17. 25 4月, 2008 5 次提交
  18. 28 3月, 2008 1 次提交