1. 03 May, 2012 5 commits
    • Greg Kroah-Hartman's avatar
      Merge tag 'for-usb-next-2012-05-03' of... · cbad67e3
      Greg Kroah-Hartman authored
      Merge tag 'for-usb-next-2012-05-03' of git://git.kernel.org/pub/scm/linux/kernel/git/sarah/xhci into usb-next
      
      xhci: isoc, Intel xHCI, and suspend races.
      
      Hi Greg,
      
      Here's some xHCI fixes that should be queued for 3.5.
      
      The first patch builds on Alan Stern's 3.4 patch to close the suspend and port
      event race conditions.  It's marked for 3.4 stable, since that's where Alan's
      patch landed.  The second patch fixes an incorrect error code that the xHCI
      driver would return when an isochronous transfer error occurred.
      
      The third and fourth patches fix issues seen on Intel xHCI host controllers.
      The third patch fixes a dead port issue that was seen on the Panther Point
      EHCI/xHCI host when CONFIG_USB_XHCI_HCD was turned off.  The ports were being
      switched over to xHCI, even though the xHCI driver was never even built.  The
      fourth patch adds support for the EHCI to xHCI port switchover for the upcoming
      Intel Lynx Point chipset.
      
      As I said, there's nothing here that's terribly urgent, and these patches can
      wait a couple weeks for the 3.5 merge window.
      
      Thanks,
      Sarah Sharp
      cbad67e3
    • Sarah Sharp's avatar
      xhci: Add Lynx Point to list of Intel switchable hosts. · 1c12443a
      Sarah Sharp authored
      The upcoming Intel Lynx Point chipset includes an xHCI host controller
      that can have ports switched from the EHCI host controller, just like
      the Intel Panther Point xHCI host.  This time, ports from both EHCI
      hosts can be switched to the xHCI host controller.  The PCI config
      registers to do the port switching are in the exact same place in the
      xHCI PCI configuration registers, with the same semantics.
      
      Hooray for shipping patches for next-gen hardware before the current gen
      hardware is even available for purchase!
      
      This patch should be backported to stable kernels as old as 3.0,
      that contain commit 69e848c2
      "Intel xhci: Support EHCI/xHCI port switching."
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Cc: stable@vger.kernel.org
      1c12443a
    • Sarah Sharp's avatar
      xhci: Avoid dead ports when CONFIG_USB_XHCI_HCD=n · 51c9e6c7
      Sarah Sharp authored
      If the user chooses to say "no" to CONFIG_USB_XHCI_HCD on a system
      with an Intel Panther Point chipset, the PCI quirks code or the EHCI
      driver will switch the ports over to the xHCI host, but the xHCI driver
      will never load.  The ports will be powered off and seem "dead" to the
      user.
      
      Fix this by only switching the ports over if CONFIG_USB_XHCI_HCD is
      either compiled in, or compiled as a module.
      
      This patch should be backported to stable kernels as old as 3.0,
      that contain commit 69e848c2
      "Intel xhci: Support EHCI/xHCI port switching."
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Reported-by: default avatarEric Anholt <eric.anholt@intel.com>
      Reported-by: default avatarDavid Bein <d.bein@f5.com>
      Cc: stable@vger.kernel.org
      51c9e6c7
    • Hans de Goede's avatar
      usb-xhci: Handle COMP_TX_ERR for isoc tds · 9c745995
      Hans de Goede authored
      While testing unplugging an UVC HD webcam with usb-redirection (so through
      usbdevfs), my userspace usb-redir code was getting a value of -1 in
      iso_frame_desc[n].status, which according to Documentation/usb/error-codes.txt
      is not a valid value.
      
      The source of this -1 is the default case in xhci-ring.c:process_isoc_td()
      adding a kprintf there showed the value of trb_comp_code to be COMP_TX_ERR
      in this case, so this patch adds handling for that completion code to
      process_isoc_td().
      
      This was observed and tested with the following xhci controller:
      1033:0194 NEC Corporation uPD720200 USB 3.0 Host Controller (rev 04)
      
      Note: I also wonder if setting frame->status to -1 (-EPERM) is the best we can
      do, but since I cannot come up with anything better I've left that as is.
      
      This patch should be backported to kernels as old as 2.6.36, which contain the
      commit 04e51901 "USB: xHCI: Isochronous
      transfer implementation".
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Cc: stable@vger.kernel.org
      9c745995
    • Andiry Xu's avatar
      xHCI: keep track of ports being resumed and indicate in hub_status_data · f370b996
      Andiry Xu authored
      This commit adds a bit-array to xhci bus_state for keeping track of
      which ports are undergoing a resume transition. If any of the bits
      are set when xhci_hub_status_data() is called, the routine will return
      a non-zero value even if no ports have any status changes pending.
      This will allow usbcore to handle races between root-hub suspend and
      port wakeup.
      
      This patch should be backported to kernels as old as 3.4, that contain
      the commit 879d38e6 "USB: fix race
      between root-hub suspend and remote wakeup".
      Signed-off-by: default avatarAndiry Xu <andiry.xu@amd.com>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: stable@vger.kernel.org
      f370b996
  2. 02 May, 2012 35 commits