1. 10 Dec, 2013 2 commits
    • Dan Williams's avatar
      usb: xhci: change enumeration scheme to 'new scheme' by default · 48fc7dbd
      Dan Williams authored
      Change the default enumeration scheme for xhci attached non-SuperSpeed
      devices from:
      
         Reset
         SetAddress [xhci address-device BSR = 0]
         GetDescriptor(8)
         GetDescriptor(18)
      
      ...to:
      
         Reset
         [xhci address-device BSR = 1]
         GetDescriptor(64)
         Reset
         SetAddress [xhci address-device BSR = 0]
         GetDescriptor(18)
      
      ...as some devices misbehave when encountering a SetAddress command
      prior to GetDescriptor.  There are known legacy devices that require
      this scheme, but testing has found at least one USB3 device that fails
      enumeration when presented with this ordering.  For now, follow the ehci
      case and enable 'new scheme' by default for non-SuperSpeed devices.
      
      To support this enumeration scheme on xhci the AddressDevice operation
      needs to be performed twice.  The first instance of the command enables
      the HC's device and slot context info for the device, but omits sending
      the device a SetAddress command (BSR == block set address request).
      Then, after GetDescriptor completes, follow up with the full
      AddressDevice+SetAddress operation.
      
      As mentioned before, this ordering of events with USB3 devices causes an
      extra state transition to be exposed to xhci.  Previously USB3 devices
      would transition directly from 'enabled' to 'addressed' and never need
      to underrun responses to 'get descriptor'. We do see the 64-byte
      descriptor fetch the correct data, but the following 18-byte descriptor
      read after the reset gets:
      
      bLength            = 0
      bDescriptorType    = 0
      bcdUSB             = 0
      bDeviceClass       = 0
      bDeviceSubClass    = 0
      bDeviceProtocol    = 0
      bMaxPacketSize0    = 9
      
      instead of:
      
      bLength            = 12
      bDescriptorType    = 1
      bcdUSB             = 300
      bDeviceClass       = 0
      bDeviceSubClass    = 0
      bDeviceProtocol    = 0
      bMaxPacketSize0    = 9
      
      which results in the discovery process looping until falling back to
      'old scheme' enumeration.
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Reported-by: default avatarDavid Moore <david.moore@gmail.com>
      Suggested-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      48fc7dbd
    • Ming Lei's avatar
      USB: storage: fix compile warning · 40fcd88b
      Ming Lei authored
      This patch should fix the below compile warning:
      
      drivers/usb/storage/protocol.c: In function 'usb_stor_access_xfer_buf':
      drivers/usb/storage/protocol.c:155:22: warning: comparison of distinct
      pointer types lacks a cast [enabled by default]
      Reported-by: default avatarkbuild test robot <fengguang.wu@intel.com>
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarMing Lei <ming.lei@canonical.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      40fcd88b
  2. 09 Dec, 2013 31 commits
  3. 05 Dec, 2013 2 commits
    • Fengguang Wu's avatar
      USB: fix coccinelle warnings · 2e30d14f
      Fengguang Wu authored
      drivers/usb/host/ehci-mv.c:181:26-27: WARNING comparing pointer to 0, suggest !E
      /c/kernel-tests/src/cocci/drivers/usb/host/ehci-mv.c:181:26-27: WARNING comparing pointer to 0
      
       Compare pointer-typed values to NULL rather than 0
      
      Semantic patch information:
       This makes an effort to choose between !x and x == NULL.  !x is used
       if it has previously been used with the function used to initialize x.
       This relies on type information.  More type information can be obtained
       using the option -all_includes and the option -I to specify an
       include path.
      
      Generated by: coccinelle/null/badzero.cocci
      
      CC: Jingoo Han <jg1.han@samsung.com>
      CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarFengguang Wu <fengguang.wu@intel.com>
      2e30d14f
    • Jingoo Han's avatar
      USB: remove DEFINE_PCI_DEVICE_TABLE macro · 2fd3f651
      Jingoo Han authored
      Don't use DEFINE_PCI_DEVICE_TABLE macro, because this macro
      is not preferred.
      Signed-off-by: default avatarJingoo Han <jg1.han@samsung.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2fd3f651
  4. 03 Dec, 2013 5 commits