1. 23 8月, 2011 8 次提交
  2. 09 8月, 2011 4 次提交
  3. 02 8月, 2011 3 次提交
    • M
      usb: host: ehci-omap: fix .remove and failure handling path of .probe(v1) · d4aefec5
      Ming Lei 提交于
      Obviously, disabling & put regulator and iounmap(hcd->regs)
      are missed in .remove and failure handling path of .probe,
      so add them.
      Signed-off-by: NMing Lei <tom.leiming@gmail.com>
      Acked-by: NAlan Stern <stern@rowland.harvard.edu>
      Tested-by: NKeshava Munegowda <Keshava_mgowda@ti.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      d4aefec5
    • J
      USB: xhci: fix OS want to own HC · 6768458b
      JiSheng Zhang 提交于
      Software should set XHCI_HC_OS_OWNED bit to request ownership of xHC.
      
      This patch should be backported to kernels as far back as 2.6.31.
      Signed-off-by: NJiSheng Zhang <jszhang3@gmail.com>
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      Cc: stable@kernel.org
      6768458b
    • S
      xhci: Don't submit commands or URBs to halted hosts. · 7bd89b40
      Sarah Sharp 提交于
      Commit fccf4e86
      "USB: Free bandwidth when usb_disable_device is called" caused a bit of an
      issue when the xHCI host controller driver is unloaded.  It changed the
      USB core to remove all endpoints when a USB device is disabled.  When the
      driver is unloaded, it will remove the SuperSpeed split root hub, which
      will disable all devices under that roothub and then halt the host
      controller.  When the second High Speed split roothub is removed, the USB
      core will attempt to disable the endpoints, which will submit a Configure
      Endpoint command to a halted host controller.
      
      The command will eventually time out, but it makes the xHCI driver unload
      take *minutes* if there are a couple of USB 1.1/2.0 devices attached.  We
      must halt the host controller when the SuperSpeed roothub is removed,
      because we can't allow any interrupts from things like port status
      changes.
      
      Make several different functions not submit commands or URBs to the host
      controller when the host is halted, by adding a check in
      xhci_check_args().  xhci_check_args() is used by these functions:
      
      xhci.c-int xhci_urb_enqueue()
      xhci.c-int xhci_drop_endpoint()
      xhci.c-int xhci_add_endpoint()
      xhci.c-int xhci_check_bandwidth()
      xhci.c-void xhci_reset_bandwidth()
      xhci.c-static int xhci_check_streams_endpoint()
      xhci.c-int xhci_discover_or_reset_device()
      
      It's also used by xhci_free_dev().  However, we have to take special
      care in that case, because we want the device memory to be freed if the
      host controller is halted.
      
      This patch should be backported to the 2.6.39 and 3.0 kernel.
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      Cc: stable@kernel.org
      7bd89b40
  4. 20 7月, 2011 1 次提交
    • A
      EHCI: fix direction handling for interrupt data toggles · e04f5f7e
      Alan Stern 提交于
      This patch (as1480) fixes a rather obscure bug in ehci-hcd.  The
      qh_update() routine needs to know the number and direction of the
      endpoint corresponding to its QH argument.  The number can be taken
      directly from the QH data structure, but the direction isn't stored
      there.  The direction is taken instead from the first qTD linked to
      the QH.
      
      However, it turns out that for interrupt transfers, qh_update() gets
      called before the qTDs are linked to the QH.  As a result, qh_update()
      computes a bogus direction value, which messes up the endpoint toggle
      handling.  Under the right combination of circumstances this causes
      usb_reset_endpoint() not to work correctly, which causes packets to be
      dropped and communications to fail.
      
      Now, it's silly for the QH structure not to have direct access to all
      the descriptor information for the corresponding endpoint.  Ultimately
      it may get a pointer to the usb_host_endpoint structure; for now,
      adding a copy of the direction flag solves the immediate problem.
      
      This allows the Spyder2 color-calibration system (a low-speed USB
      device that sends all its interrupt data packets with the toggle set
      to 0 and hance requires constant use of usb_reset_endpoint) to work
      when connected through a high-speed hub.  Thanks to Graeme Gill for
      supplying the hardware that allowed me to track down this bug.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Reported-by: NGraeme Gill <graeme@argyllcms.com>
      CC: <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      e04f5f7e
  5. 16 7月, 2011 1 次提交
    • A
      USB: OHCI: fix another regression for NVIDIA controllers · 6ea12a04
      Alan Stern 提交于
      The NVIDIA series of OHCI controllers continues to be troublesome.  A
      few people using the MCP67 chipset have reported that even with the
      most recent kernels, the OHCI controller fails to handle new
      connections and spams the system log with "unable to enumerate USB
      port" messages.  This is different from the other problems previously
      reported for NVIDIA OHCI controllers, although it is probably related.
      
      It turns out that the MCP67 controller does not like to be kept in the
      RESET state very long.  After only a few seconds, it decides not to
      work any more.  This patch (as1479) changes the PCI initialization
      quirk code so that NVIDIA controllers are switched into the SUSPEND
      state after 50 ms of RESET.  With no interrupts enabled and all the
      downstream devices reset, and thus unable to send wakeup requests,
      this should be perfectly safe (even for non-NVIDIA hardware).
      
      The removal code in ohci-hcd hasn't been changed; it will still leave
      the controller in the RESET state.  As a result, if someone unloads
      ohci-hcd and then reloads it, the controller won't work again until
      the system is rebooted.  If anybody complains about this, the removal
      code can be updated similarly.
      
      This fixes Bugzilla #22052.
      Tested-by: NLarry Finger <Larry.Finger@lwfinger.net>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      6ea12a04
  6. 09 7月, 2011 10 次提交
    • K
      usb: r8a66597-hcd: fixup USB_PORT_STAT_C_SUSPEND shift · 35da4137
      Kuninori Morimoto 提交于
      This is typo fix of
      749da5f8 (USB: straighten out port feature vs. port status usage)
      Signed-off-by: NKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      35da4137
    • Y
    • Y
      usb: r8a66597-hcd: add function for external controller · f2e9039a
      Yoshihiro Shimoda 提交于
      R8A66597 has the pin of WR0 and WR1. So, if one write-pin of CPU
      connects to the pins, we have to change the setting of FIFOSEL
      register in the controller. If we don't change the setting,
      the controller cannot send the data of odd length.
      Signed-off-by: NYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      f2e9039a
    • S
      EHCI: only power off port if over-current is active · 81463c1d
      Sergei Shtylyov 提交于
      MAX4967 USB power supply chip we use on our boards signals over-current when
      power is not enabled; once it's enabled, over-current signal returns to normal.
      That unfortunately caused the endless stream of "over-current change on port"
      messages. The EHCI root hub code reacts on every over-current signal change
      with powering off the port -- such change event is generated the moment the
      port power is enabled, so once enabled the power is immediately cut off.
      I think we should only cut off power when we're seeing the active over-current
      signal, so I'm adding such check to that code. I also think that the fact that
      we've cut off the port power should be reflected in the result of GetPortStatus
      request immediately, hence I'm adding a PORTSCn register readback after write...
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Cc: stable@kernel.org
      Acked-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      81463c1d
    • A
      USB: EHCI: go back to using the system clock for QH unlinks · 004c1968
      Alan Stern 提交于
      This patch (as1477) fixes a problem affecting a few types of EHCI
      controller.  Contrary to what one might expect, these controllers
      automatically stop their internal frame counter when no ports are
      enabled.  Since ehci-hcd currently relies on the frame counter for
      determining when it should unlink QHs from the async schedule, those
      controllers run into trouble: The frame counter stops and the QHs
      never get unlinked.
      
      Some systems have also experienced other problems traced back to
      commit b9638011 (USB: ehci-hcd unlink
      speedups), which made the original switch from using the system clock
      to using the frame counter.  It never became clear what the reason was
      for these problems, but evidently it is related to use of the frame
      counter.
      
      To fix all these problems, this patch more or less reverts that commit
      and goes back to using the system clock.  But this can't be done
      cleanly because other changes have since been made to the scan_async()
      subroutine.  One of these changes involved the tricky logic that tries
      to avoid rescanning QHs that have already been seen when the scanning
      loop is restarted, which happens whenever an URB is given back.
      Switching back to clock-based unlinks would make this logic even more
      complicated.
      
      Therefore the new code doesn't rescan the entire async list whenever a
      giveback occurs.  Instead it rescans only the current QH and continues
      on from there.  This requires the use of a separate pointer to keep
      track of the next QH to scan, since the current QH may be unlinked
      while the scanning is in progress.  That new pointer must be global,
      so that it can be adjusted forward whenever the _next_ QH gets
      unlinked.  (uhci-hcd uses this same trick.)
      
      Simplification of the scanning loop removes a level of indentation,
      which accounts for the size of the patch.  The amount of code changed
      is relatively small, and it isn't exactly a reversion of the
      b9638011 commit.
      
      This fixes Bugzilla #32432.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      CC: <stable@kernel.org>
      Tested-by: NMatej Kenda <matejken@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      004c1968
    • A
      ehci: add pci quirk for Ordissimo and RM Slate 100 too · 0c42a4e8
      Anisse Astier 提交于
      Add another variant of the Pegatron tablet used by Ordissimo, and
      apparently RM Slate 100, to the list of models that should skip the
      negociation for the handoff of the EHCI controller.
      Signed-off-by: NAnisse Astier <anisse@astier.eu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      0c42a4e8
    • A
      ehci: refactor pci quirk to use standard dmi_check_system method · 03c75362
      Anisse Astier 提交于
      In commit 3610ea53 (ehci: workaround for pci
      quirk timeout on ExoPC), a workaround was added to skip the negociation for
      the handoff of the EHCI controller.
      
      Refactor the DMI detection code to use standard dmi_check_system function.
      Signed-off-by: NAnisse Astier <anisse@astier.eu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      03c75362
    • K
      USB: EHCI: Allow users to override 80% max periodic bandwidth · cc62a7eb
      Kirill Smelkov 提交于
      There are cases, when 80% max isochronous bandwidth is too limiting.
      
      For example I have two USB video capture cards which stream uncompressed
      video, and to stream full NTSC + PAL videos we'd need
      
          NTSC 640x480 YUV422 @30fps      ~17.6 MB/s
          PAL  720x576 YUV422 @25fps      ~19.7 MB/s
      
      isoc bandwidth.
      
      Now, due to limited alt settings in capture devices NTSC one ends up
      streaming with max_pkt_size=2688  and  PAL with max_pkt_size=2892, both
      with interval=1. In terms of microframe time allocation this gives
      
          NTSC    ~53us
          PAL     ~57us
      
      and together
      
          ~110us  >  100us == 80% of 125us uframe time.
      
      So those two devices can't work together simultaneously because the'd
      over allocate isochronous bandwidth.
      
      80% seemed a bit arbitrary to me, and I've tried to raise it to 90% and
      both devices started to work together, so I though sometimes it would be
      a good idea for users to override hardcoded default of max 80% isoc
      bandwidth.
      
      After all, isn't it a user who should decide how to load the bus? If I
      can live with 10% or even 5% bulk bandwidth that should be ok. I'm a USB
      newcomer, but that 80% set in stone by USB 2.0 specification seems to be
      chosen pretty arbitrary to me, just to serve as a reasonable default.
      
      NOTE 1
      ~~~~~~
      
      for two streams with max_pkt_size=3072 (worst case) both time
      allocation would be 60us+60us=120us which is 96% periodic bandwidth
      leaving 4% for bulk and control.  Alan Stern suggested that bulk then
      would be problematic (less than 300*8 bittimes left per microframe), but
      I think that is still enough for control traffic.
      
      NOTE 2
      ~~~~~~
      
      Sarah Sharp expressed concern that maxing out periodic bandwidth
      could lead to vendor-specific hardware bugs on host controllers, because
      
      > It's entirely possible that you'll run into
      > vendor-specific bugs if you try to pack the schedule with isochronous
      > transfers.  I don't think any hardware designer would seriously test or
      > validate their hardware with a schedule that is basically a violation of
      > the USB bus spec (more than 80% for periodic transfers).
      
      So far I've only tested this patch on my HP Mini 5103 with N10 chipset
      
          kirr@mini:~$ lspci
          00:00.0 Host bridge: Intel Corporation N10 Family DMI Bridge
          00:02.0 VGA compatible controller: Intel Corporation N10 Family Integrated Graphics Controller
          00:02.1 Display controller: Intel Corporation N10 Family Integrated Graphics Controller
          00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 02)
          00:1c.0 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 1 (rev 02)
          00:1c.3 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 4 (rev 02)
          00:1d.0 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #1 (rev 02)
          00:1d.1 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #2 (rev 02)
          00:1d.2 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #3 (rev 02)
          00:1d.3 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #4 (rev 02)
          00:1d.7 USB Controller: Intel Corporation N10/ICH 7 Family USB2 EHCI Controller (rev 02)
          00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
          00:1f.0 ISA bridge: Intel Corporation NM10 Family LPC Controller (rev 02)
          00:1f.2 SATA controller: Intel Corporation N10/ICH7 Family SATA AHCI Controller (rev 02)
          01:00.0 Network controller: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller (rev 01)
          02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8059 PCI-E Gigabit Ethernet Controller (rev 11)
      
      and the system works stable with 110us/uframe (~88%) isoc bandwith allocated for
      above-mentioned isochronous transfers.
      
      NOTE 3
      ~~~~~~
      
      This feature is off by default. I mean max periodic bandwidth is set to
      100us/uframe by default exactly as it was before the patch. So only those of us
      who need the extreme settings are taking the risk - normal users who do not
      alter uframe_periodic_max sysfs attribute should not see any change at all.
      
      NOTE 4
      ~~~~~~
      
      I've tried to update documentation in Documentation/ABI/ thoroughly, but
      only "TBD" was put into Documentation/usb/ehci.txt -- the text there seems
      to be outdated and much needing refreshing, before it could be amended.
      
      Cc: Sarah Sharp <sarah.a.sharp@linux.intel.com>
      Signed-off-by: NKirill Smelkov <kirr@mns.spb.ru>
      Acked-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      cc62a7eb
    • K
      USB: EHCI: Move sysfs related bits into ehci-sysfs.c · 4c67045b
      Kirill Smelkov 提交于
      The only sysfs attr implemented so far is "companion" from ehci-hub.c,
      but in the next patch we are going to add another sysfs file, so prior
      to that let's structure things and move already-in-there sysfs code to
      separate file.
      
      NOTE: All the code I'm moving into this new file was written by Alan
      Stern (in 57e06c11 "EHCI: force high-speed devices to run at full
      speed"; Jan 16 2007), that's why I'm putting
      
          Copyright (C) 2007 by Alan Stern
      
      there after explicit request from the author.
      Signed-off-by: NKirill Smelkov <kirr@mns.spb.ru>
      Acked-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      4c67045b
    • M
      2cb30bb1
  7. 07 7月, 2011 1 次提交
  8. 28 6月, 2011 3 次提交
    • Y
      usb: r8a66597-hcd: fix cannot detect low/full speed device · 87abd0a9
      Yoshihiro Shimoda 提交于
      This controller can control "Transaction Translators", but
      the hcd->has_tt is not set.
      Since the commit d199c96d
      ("USB: prevent buggy from crashing the USB stack") has checked it,
      the driver could not work the low/full speed device.
      Signed-off-by: NYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      87abd0a9
    • G
      USB: ehci-ath79: fix a NULL pointer dereference · c27d5368
      Gabor Juhos 提交于
      Loading the ehci-hcd module on the ath79 platform causes
      a NULL pointer dereference:
      
      CPU 0 Unable to handle kernel paging request at virtual address 00000000, epc == c0252928, ra == c00de968
      Oops[#1]:
      Cpu 0
      $ 0   : 00000000 00000070 00000001 00000000
      $ 4   : 802cf870 0000117e ffffffff 8019c7bc
      $ 8   : 0000000a 00000002 00000001 fffffffb
      $12   : 8026ef20 0000000f ffffff80 802dad3c
      $16   : 8077a2d4 8077a200 c00f3484 8019ed84
      $20   : c00f0000 00000003 000000a0 80262c2c
      $24   : 00000002 80079da0
      $28   : 80788000 80789c80 80262b14 c00de968
      Hi    : 00000000
      Lo    : b61f0000
      epc   : c0252928 __mod_vermagic5+0xc260/0xc7e8 [ehci_hcd]
          Not tainted
      ra    : c00de968 usb_add_hcd+0x2a4/0x858 [usbcore]
      Status: 1000c003    KERNEL EXL IE
      Cause : 00800008
      BadVA : 00000000
      PrId  : 00019374 (MIPS 24Kc)
      Modules linked in: ehci_hcd(+) pppoe pppox ipt_REJECT xt_TCPMSS ipt_LOG
      xt_comment xt_multiport xt_mac xt_limit iptable_mangle iptable_filte
      r ip_tables xt_tcpudp x_tables ppp_async ppp_generic slhc ath mac80211
      usbcore nls_base input_polldev crc_ccitt cfg80211 compat input_core a
      rc4 aes_generic crypto_algapi
      Process insmod (pid: 379, threadinfo=80788000, task=80ca2180,
      tls=77fe52d0)
      Stack : c0253184 80c57d80 80789cac 8077a200 00000001 8019edc0 807fa800 8077a200
              8077a290 c00f3484 8019ed84 c00f0000 00000003 000000a0 80262c2c c00de968
              802d0000 800878cc c0253228 c02528e4 c0253184 80c57d80 80bf6800 80ca2180
              8007b75c 00000000 8077a200 802cf830 802d0000 00000003 fffffff4 00000015
              00000348 00000124 800b189c c024bb4c c0255000 801a27e8 c0253228 c02528e4
              ...
      Call Trace:
      [<c0252928>] __mod_vermagic5+0xc260/0xc7e8 [ehci_hcd]
      
      It is caused by:
      
        commit c430131a
        Author: Jan Andersson <jan@gaisler.com>
        Date:   Tue May 3 20:11:57 2011 +0200
      
            USB: EHCI: Support controllers with big endian capability regs
      
            The two first HC capability registers (CAPLENGTH and HCIVERSION)
            are defined as one 8-bit and one 16-bit register. Most HC
            implementations have selected to treat these registers as part
            of a 32-bit register, giving the same layout for both big and
            small endian systems.
      
            This patch adds a new quirk, big_endian_capbase, to support
            controllers with big endian register interfaces that treat
            HCIVERSION and CAPLENGTH as individual registers.
      Signed-off-by: NJan Andersson <jan@gaisler.com>
      Acked-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      The reading of the HC capability register has been moved by that
      commit to a place where the ehci->caps field is not initialized
      yet. This patch moves the reading of the register back to the
      original place.
      Acked-by: NJan Andersson <jan@gaisler.com>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGabor Juhos <juhosg@openwrt.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      c27d5368
    • A
      usb/isp1760: Fix bug preventing the unlinking of control urbs · 8b1ab60c
      Arvid Brodin 提交于
      Both control and bulk transfers use isp1760 slots of type ATL, but the
      driver unlink code for ATL slots only acts on urbs describing a bulk
      transfer, letting the code for INT slots take care of the unlink instead,
      which often ended up removing the interrupt transfer for root hub events
      instead. That's not good, and gets fixed by this patch.
      Signed-off-by: NArvid Brodin <arvid.brodin@enea.com>
      Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      8b1ab60c
  9. 18 6月, 2011 3 次提交
    • S
      xhci: Always set urb->status to zero for isoc endpoints. · b3df3f9c
      Sarah Sharp 提交于
      When the xHCI driver encounters a Missed Service Interval event for an
      isochronous endpoint ring, it means the host controller skipped over
      one or more isochronous TDs.  For TD that is skipped, skip_isoc_td() is
      called.  This sets the frame descriptor status to -EXDEV, and also sets
      the value stored in the int pointed to by status to -EXDEV.
      
      If the isochronous TD happens to be the last TD in an URB,
      handle_tx_event() will use the status variable to give back the URB to
      the USB core.  That means drivers will see urb->status as -EXDEV.
      
      It turns out that EHCI, UHCI, and OHCI always set urb->status to zero for
      an isochronous urb, regardless of what the frame status is.  See
      itd_complete() in ehci-sched.c:
      
                      } else {
                              /* URB was too late */
                              desc->status = -EXDEV;
                      }
              }
      
              /* handle completion now? */
              if (likely ((urb_index + 1) != urb->number_of_packets))
                      goto done;
      
              /* ASSERT: it's really the last itd for this urb
              list_for_each_entry (itd, &stream->td_list, itd_list)
                      BUG_ON (itd->urb == urb);
               */
      
              /* give urb back to the driver; completion often (re)submits */
              dev = urb->dev;
              ehci_urb_done(ehci, urb, 0);
      
      ehci_urb_done() completes the URB with the status of the third argument, which
      is always zero in this case.
      
      It turns out that many USB webcam drivers, such as uvcvideo, cannot
      handle urb->status set to a non-zero value.  They will not resubmit
      their isochronous URBs in that case, and userspace will see a frozen
      video.
      
      Change the xHCI driver to be consistent with the EHCI and UHCI driver,
      and always set urb->status to 0 for isochronous URBs.
      
      This patch should be backported to kernels as old as 2.6.36
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      Cc: "Xu, Andiry" <Andiry.Xu@amd.com>
      Cc: stable@kernel.org
      b3df3f9c
    • M
      xhci: Add reset on resume quirk for asrock p67 host · c877b3b2
      Maarten Lankhorst 提交于
      The asrock p67 xhci controller completely dies on resume, add a
      quirk for this, to bring the host back online after a suspend.
      
      This should be backported to stable kernels as old as 2.6.37.
      Signed-off-by: NMaarten Lankhorst <m.b.lankhorst@gmail.com>
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      Cc: stable@kernel.org
      c877b3b2
    • A
      xHCI 1.0: Incompatible Device Error · f6ba6fe2
      Alex He 提交于
      It is one new TRB Completion Code for the xHCI spec v1.0.
      Asserted if the xHC detects a problem with a device that does not allow it to
      be successfully accessed, e.g. due to a device compliance or compatibility
      problem. This error may be returned by any command or transfer, and is fatal
      as far as the Slot is concerned. Return -EPROTO by urb->status or frame->status
      of ISOC for transfer case. And return -ENODEV for configure endpoint command,
      evaluate context command and address device command if there is an incompatible
      Device Error. The error codes will be sent back to the USB core to decide how
      to do. It's unnecessary for other commands because after the three commands run
      successfully means that the device has been accepted.
      Signed-off-by: NAlex He <alex.he@amd.com>
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      f6ba6fe2
  10. 16 6月, 2011 4 次提交
    • A
      USB: change maintainership of ohci-hcd and ehci-hcd · 578333ab
      Alan Stern 提交于
      Following the loss of David Brownell, I volunteer to maintain the
      ohci-hcd and ehci-hcd drivers.  This patch (as1472) makes it official.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      578333ab
    • A
      xHCI 1.0: Force Stopped Event(FSE) · e1cf486d
      Alex He 提交于
      FSE shall occur on the TD natural boundary. The software ep_ring dequeue pointer
      exceed the hardware ep_ring dequeue pointer in these cases of Table-3. As a
      result, the event_trb(pointed by hardware dequeue pointer) of the FSE can't be
      found in the current TD(pointed by software dequeue pointer). What should we do
      is to figured out the FSE case and skip over it.
      Signed-off-by: NAlex He <alex.he@amd.com>
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      e1cf486d
    • S
      xhci: Don't warn about zeroed bMaxBurst descriptor field. · d2333632
      Sarah Sharp 提交于
      The USB 3.0 specification says that the bMaxBurst field in the SuperSpeed
      Endpoint Companion descriptor is supposed to indicate how many packets a
      SS device can handle before it needs to wait for an explicit handshake
      from the host controller.  A zero value means the device can only handle
      one packet before it needs a handshake.  Remove a warning in the xHCI
      driver that implies this is an invalid value.
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      d2333632
    • S
      xhci: Reject double add of active endpoints. · fa75ac37
      Sarah Sharp 提交于
      While trying to switch a UAS device from the BOT configuration to the UAS
      configuration via the bConfigurationValue file, Tanya ran into an issue in
      the USB core.  usb_disable_device() sets entries in udev->ep_out and
      udev->ep_out to NULL, but doesn't call into the xHCI bandwidth management
      functions to remove the BOT configuration endpoints from the xHCI host's
      internal structures.
      
      The USB core would then attempt to add endpoints for the UAS
      configuration, and some of the endpoints had the same address as endpoints
      in the BOT configuration.  The xHCI driver blindly added the endpoints
      again, but the xHCI host controller rejected the Configure Endpoint
      command because active endpoints were added without being dropped.
      
      Make the xHCI driver reject calls to xhci_add_endpoint() that attempt to
      add active endpoints without first calling xhci_drop_endpoint().
      
      This should be backported to kernels as old as 2.6.31.
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      Reported-by: NTanya Brokhman <tlinder@codeaurora.org>
      Cc: stable@kernel.org
      fa75ac37
  11. 10 6月, 2011 1 次提交
  12. 08 6月, 2011 1 次提交