1. 24 9月, 2014 9 次提交
  2. 20 9月, 2014 1 次提交
  3. 12 9月, 2014 3 次提交
  4. 09 9月, 2014 2 次提交
    • V
      usb: ehci/ohci-exynos: Fix PHY getting sequence · 2f7f41c7
      Vivek Gautam 提交于
      Since we want to keep support for both older usb-phys as well as the
      newer generic phys, lets first get the generic PHYs and fallback to
      older USB-PHYs only when we fail to get the former.
      This should fix the issue with ehci-exynos and ohci-exynos, wherein
      in the absence of SAMSUNG_USB2PHY config symbol, we end up getting
      the NOP_USB_XCEIV phy when the same is enabled. And thus the PHYs
      are not configured properly.
      Reported-by: NSachin Kamat <sachin.kamat@samsung.com>
      Signed-off-by: NVivek Gautam <gautam.vivek@samsung.com>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: Jingoo Han <jg1.han@samsung.com>
      Tested-by: NSachin Kamat <sachin.kamat@samsung.com>
      Acked-by: NJingoo Han <jg1.han@samsung.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2f7f41c7
    • F
      usb: host: xhci: fix compliance mode workaround · 96908589
      Felipe Balbi 提交于
      Commit 71c731a2 (usb: host: xhci: Fix Compliance Mode
      on SN65LVP3502CP Hardware) implemented a workaround
      for a known issue with Texas Instruments' USB 3.0
      redriver IC but it left a condition where any xHCI
      host would be taken out of reset if port was placed
      in compliance mode and there was no device connected
      to the port.
      
      That condition would trigger a fake connection to a
      non-existent device so that usbcore would trigger a
      warm reset of the port, thus taking the link out of
      reset.
      
      This has the side-effect of preventing any xHCI host
      connected to a Linux machine from starting and running
      the USB 3.0 Electrical Compliance Suite because the
      port will mysteriously taken out of compliance mode
      and, thus, xHCI won't step through the necessary
      compliance patterns for link validation.
      
      This patch fixes the issue by just adding a missing
      check for XHCI_COMP_MODE_QUIRK inside
      xhci_hub_report_usb3_link_state() when PORT_CAS isn't
      set.
      
      This patch should be backported to all kernels containing
      commit 71c731a2.
      
      Fixes: 71c731a2 (usb: host: xhci: Fix Compliance Mode on SN65LVP3502CP Hardware)
      Cc: Alexis R. Cortes <alexis.cortes@ti.com>
      Cc: <stable@vger.kernel.org> # v3.2+
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      Acked-by: NMathias Nyman <mathias.nyman@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      96908589
  5. 28 8月, 2014 2 次提交
  6. 27 8月, 2014 1 次提交
  7. 26 8月, 2014 1 次提交
  8. 20 8月, 2014 3 次提交
  9. 02 8月, 2014 3 次提交
  10. 19 7月, 2014 6 次提交
    • A
      USB: OHCI: add check for stopped frame counter · 499b3803
      Alan Stern 提交于
      This patch adds an extra check to ohci-hcd's I/O watchdog routine.  If
      the controller stops updating the frame counter, we will assume it is
      dead.  But there has to be an exception: Some controllers stop the
      frame counter when no ports are connected.  Check to make sure there
      is at least one active port before deciding the controller is dead.
      
      (This test may appear racy, but it isn't.  Enabling a newly connected
      port takes several milliseconds, during which time the frame counter
      must advance.)
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Tested-by: NDennis New <dennisn@dennisn.linuxd.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      499b3803
    • A
      USB: OHCI: add I/O watchdog for orphan TDs · 81e38333
      Alan Stern 提交于
      Some OHCI controllers have a bug: They fail to add completed TDs to
      the done queue.  Examining this queue is the only method ohci-hcd has
      for telling when a transfer is complete; failure to add a TD can
      result in an URB that never completes and cannot be unlinked.
      
      This patch adds a watchdog routine to ohci-hcd.  The routine
      periodically scans the active ED and TD lists, looking for TDs which
      are finished but not on the done queue.  When one is found, and it is
      certain that the controller hardware will never add the TD to the done
      queue, the watchdog routine manually puts the TD on the done list so
      that it can be handled normally.
      
      The watchdog routine also checks for a condition indicating the
      controller has died.  If the done queue is non-empty but the
      HccaDoneHead pointer hasn't been updated for a few hundred
      milliseconds, we assume the controller will never update it and
      therefore is dead.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      81e38333
    • A
      USB: OHCI: make URB completions single-threaded · cdb4dd15
      Alan Stern 提交于
      URBs for a particular endpoint should complete sequentially.  That is,
      we shouldn't call the completion handler for one URB until the handler
      for the previous URB has returned.
      
      When the OHCI watchdog routine is added, there will be two paths for
      completing URBs: interrupt handler and watchdog routine.  Their
      activities have to be synchronized so that completions don't occur in
      multiple threads concurrently.
      
      For that purpose, this patch creates an ohci_work() routine which will
      be responsible for calling process_done_list() and finish_unlinks(),
      the two routines that detect when an URB is complete.  Everything will
      funnel through ohci_work(), and it will be careful not to run in more
      than one thread at a time.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      cdb4dd15
    • A
      USB: OHCI: redesign the TD done list · c6fcb85e
      Alan Stern 提交于
      This patch changes the way ohci-hcd handles the TD done list.  In
      addition to relying on the TD pointers stored by the controller
      hardware, we need to handle TDs that the hardware has forgotten about.
      
      This means the list has to exist even while the dl_done_list() routine
      isn't running.  That function essentially gets split in two:
      update_done_list() reads the TD pointers stored by the hardware and
      adds the TDs to the done list, and process_done_list() scans through
      the list to handle URB completions.  When we detect a TD that the
      hardware forgot about, we will be able to add it to the done list
      manually and then process it normally.
      
      Since the list is really a queue, and because there can be a lot of
      TDs, keep the existing singly linked implementation.  To insure that
      URBs are given back in order of submission, whenever a TD is added to
      the done list, all the preceding TDs for the same endpoint must be
      added as well (going back to the first one that isn't already on the
      done list).
      
      The done list manipulations must all be protected by the private
      lock.  The scope of the lock is expanded in preparation for the
      watchdog routine to be added in a later patch.
      
      We have to be more careful about giving back unlinked URBs.  Since TDs
      may be added to the done list by the watchdog routine and not in
      response to a controller interrupt, we have to check explicitly to
      make sure all the URB's TDs that were added to the done list have been
      processed before giving back the URB.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c6fcb85e
    • A
      USB: OHCI: no shortcut for unlinking URBS from a dead controller · 8b3ab0ed
      Alan Stern 提交于
      When an URB is unlinked from a dead controller, ohci-hcd gives back
      the URB with no regard for cleaning up the internal data structures.
      This won't play nicely with the upcoming changes to the TD done
      list.
      
      Therefore make ohci_urb_dequeue() call finish_unlinks(), which uses
      td_done() to do a proper cleanup, rather than calling finish_urb()
      directly.  Also, remove the checks that urb_priv is non-NULL; the
      driver guarantees that urb_priv will never be NULL for a valid URB.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8b3ab0ed
    • A
      USB: OHCI: revert the ZF Micro orphan-TD quirk · 95d9a01d
      Alan Stern 提交于
      This patch reverts the important parts of commit 89a0fd18 (USB:
      OHCI handles more ZFMicro quirks), namely, the parts related to
      handling orphan TDs for interrupt endpoints.  A later patch in this
      series will introduce a more general mechanism that applies to all
      endpoint types and all controllers.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      95d9a01d
  11. 18 7月, 2014 3 次提交
    • A
      USB: OHCI: don't lose track of EDs when a controller dies · 977dcfdc
      Alan Stern 提交于
      This patch fixes a bug in ohci-hcd.  When an URB is unlinked, the
      corresponding Endpoint Descriptor is added to the ed_rm_list and taken
      off the hardware schedule.  Once the ED is no longer visible to the
      hardware, finish_unlinks() handles the URBs that were unlinked or have
      completed.  If any URBs remain attached to the ED, the ED is added
      back to the hardware schedule -- but only if the controller is
      running.
      
      This fails when a controller dies.  A non-empty ED does not get added
      back to the hardware schedule and does not remain on the ed_rm_list;
      ohci-hcd loses track of it.  The remaining URBs cannot be unlinked,
      which causes the USB stack to hang.
      
      The patch changes finish_unlinks() so that non-empty EDs remain on
      the ed_rm_list if the controller isn't running.  This requires moving
      some of the existing code around, to avoid modifying the ED's hardware
      fields more than once.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      CC: <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      977dcfdc
    • A
      USB: OHCI: fix bugs in debug routines · 256dbcd8
      Alan Stern 提交于
      The debug routine fill_async_buffer() in ohci-hcd is buggy: It never
      produces any output because it forgets to initialize the output buffer
      size.  Also, the debug routine ohci_dump() has an unused argument.
      
      This patch adds the correct initialization and removes the unused
      argument.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      CC: <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      256dbcd8
    • A
      USB: OHCI: add SG support · 6f65126c
      Alan Stern 提交于
      Apparently nobody ever remembered to add Scatter-Gather support to
      ohci-hcd.  This patch adds it.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6f65126c
  12. 10 7月, 2014 6 次提交