1. 23 9月, 2009 2 次提交
    • S
      USB: xhci: Work around for chain bit in link TRBs. · b0567b3f
      Sarah Sharp 提交于
      Different sections of the xHCI 0.95 specification had opposing
      requirements for the chain bit in a link transaction request buffer (TRB).
      The chain bit is used to designate that adjacent TRBs are all part of the
      same scatter gather list that should be sent to the device.  Link TRBs can
      be in the middle, or at the beginning or end of these chained TRBs.
      
      Sections 4.11.5.1 and 6.4.4.1 both stated the link TRB "shall have the
      chain bit set to 1", meaning it is always chained to the next TRB.
      However, section 4.6.9 on the stop endpoint command has specific cases for
      what the hardware must do for a link TRB with the chain bit set to 0.  The
      0.96 specification errata later cleared up this issue by fixing the
      4.11.5.1 and 6.4.4.1 sections to state that a link TRB can have the chain
      bit set to 1 or 0.
      
      The problem is that the xHCI cancellation code depends on the chain bit of
      the link TRB being cleared when it's at the end of a TD, and some 0.95
      xHCI hardware simply stops processing the ring when it encounters a link
      TRB with the chain bit cleared.
      
      Allow users who are testing 0.95 xHCI prototypes to set a module parameter
      (link_quirk) to turn on this link TRB work around.  Cancellation may not
      work if the ring is stopped exactly on a link TRB with chain bit set, but
      cancellation should be a relatively uncommon case.
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      b0567b3f
    • H
      USB: sl811-hcd: Fix device disconnect: · eb661bc8
      Hennerich, Michael 提交于
      SL811 Device detected after removal used to be working in linux-2.6.22
      but then broke somewhere between 2.6.22 and 2.6.28. Current
      hub_port_connect_change() in drivers/usb/core/hub.c won't call
      usb_disconnect() in case the SL811 driver sets portstatus
      USB_PORT_FEAT_CONNECTION upon removal.
      AFAIK the SL811 has only a combined Device Insert/Remove
      detection bit, therefore use a count to distinguish insert or remove.
      Signed-Off-By: NMichael Hennerich <hennerich@blackfin.uclinux.org>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      eb661bc8
  2. 21 9月, 2009 3 次提交
  3. 16 9月, 2009 1 次提交
  4. 08 8月, 2009 2 次提交
  5. 29 7月, 2009 20 次提交
  6. 23 7月, 2009 1 次提交
  7. 20 7月, 2009 2 次提交
  8. 13 7月, 2009 9 次提交