1. 09 May, 2013 1 commit
  2. 25 Apr, 2013 2 commits
    • Arnd Bergmann's avatar
      USB: ehci-msm: USB_MSM_OTG needs USB_PHY · 4626b8da
      Arnd Bergmann authored
      
      
      The Kconfig entry for USB_EHCI_MSM unconditionally selects USB_MSM_OTG,
      which is now only visible when USB_PHY is also enabled.
      
      This adds an appropriate dependency and enables USB_PHY in the msm
      defconfig, avoiding the Kbuild warning:
      
      warning: (USB_EHCI_MSM) selects USB_MSM_OTG which has unmet direct dependencies (USB_SUPPORT && USB_PHY && (USB || USB_GADGET) && ARCH_MSM)
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: Felipe Balbi <balbi@ti.com>
      Cc: Pavankumar Kondeti <pkondeti@codeaurora.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4626b8da
    • Arnd Bergmann's avatar
      USB: OHCI: avoid conflicting platform drivers · 8097804e
      Arnd Bergmann authored
      
      
      Like the EHCI driver, OHCI supports a large number of different platform
      glue drivers by directly including them, which causes problems with
      conflicting macro definitions in some cases. As more ARM architecture
      specific back-ends are required to coexist in a single build, we should
      split those out into separate drivers. Unfortunately, the infrastructure
      for that is still under development, so to give us more time, this uses
      a separate *_PLATFORM_DRIVER macro for each ARM specific OHCI backend,
      just like we already do on PowerPC and some of the other ARM platforms.
      
      In linux-3.10, only the SPEAr and CNS3xxx back-ends would actually conflict
      without this patch, but over time we would get more of them, so this
      is a way to avoid having to patch the driver every time it breaks. We
      should still split out all back-ends into separate loadable modules,
      but that work is only needed to improve code size and cleanliness after
      this patch, not for correctness.
      
      While we're here, this fixes the incorrectly sorted error path
      for the OMAP1 and OMAP3 backends to ensure we always unregister
      the exact set of drivers that were registered before erroring out.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8097804e
  3. 23 Apr, 2013 2 commits
    • Arnd Bergmann's avatar
      usb: phy: tegra: don't call into tegra-ehci directly · ee5d5499
      Arnd Bergmann authored
      
      
      Both phy-tegra-usb.c and ehci-tegra.c export symbols used by the other one,
      which does not work if one of them or both are loadable modules, resulting
      in an error like:
      
      drivers/built-in.o: In function `utmi_phy_clk_disable':
      drivers/usb/phy/phy-tegra-usb.c:302: undefined reference to `tegra_ehci_set_phcd'
      drivers/built-in.o: In function `utmi_phy_clk_enable':
      drivers/usb/phy/phy-tegra-usb.c:324: undefined reference to `tegra_ehci_set_phcd'
      drivers/built-in.o: In function `utmi_phy_power_on':
      drivers/usb/phy/phy-tegra-usb.c:447: undefined reference to `tegra_ehci_set_pts'
      
      This turns the interface into a one-way dependency by letting the tegra ehci
      driver pass two function pointers for callbacks that need to be called by
      the phy driver.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: Venu Byravarasu <vbyravarasu@nvidia.com>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: Felipe Balbi <balbi@ti.com>
      Cc: Stephen Warren <swarren@nvidia.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ee5d5499
    • Andi Kleen's avatar
      USB: Fix initconst in ehci driver · 62d08a11
      Andi Kleen authored
      
      
      Fix some of the initconst markings in the ehci driver(s).
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      62d08a11
  4. 17 Apr, 2013 3 commits
  5. 11 Apr, 2013 2 commits
  6. 09 Apr, 2013 8 commits
  7. 08 Apr, 2013 7 commits
    • Manjunath Goudar's avatar
      USB: EHCI: make ehci-msm a separate driver · 8c68e84f
      Manjunath Goudar authored
      Separate the  Qualcomm QSD/MSM on-chip host controller driver from
      ehci-hcd host code so that it can be built as a separate driver module.
      This work is part of enabling multi-platform kernels on ARM;
      however, note that other changes are still needed before Qualcomm QSD/MSM
      can be booted with a multi-platform kernel, which is not expected before
      3.11.
      
      With the infrastructure added by Alan Stern in patch 3e023203
      
      
      "USB: EHCI: prepare to make ehci-hcd a library module", we can
      avoid this problem by turning a bus glue into a separate
      module, as we do here for the msm bus glue.
      
      In V5 (arnd):
       - add FIXME about missing usb_add_hcd() or usb_remove_hcd() calls
      
      In V3:
       - Detailed commit message added here describing why this patch is required.
       - Arranged  #include's in alphabetical order.
       - driver.name initialized hcd_name[] = "ehci-msm" in platform_driver
         structure initialization instead of "msm-ehci", which was the reason
         why it broke in EHCI USB testing
      
      In V2:
      Tegra patch related changes removed from this patch.
      Signed-off-by: default avatarManjunath Goudar <manjunath.goudar@linaro.org>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Acked-by: default avatarDavid Brown <davidb@codeaurora.org>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8c68e84f
    • Manjunath Goudar's avatar
      USB: EHCI: make ehci-atmel a separate driver · 97736961
      Manjunath Goudar authored
      Separate the Atmel host controller driver from ehci-hcd host code
      so that it can be built as a separate driver module.
      This work is part of enabling multi-platform kernels on ARM;
      however, note that other changes are still needed before Atmel can be
      booted with a multi-platform kernel. This is currently planned for
      Linux-3.11.
      
      With the infrastructure added by Alan Stern in patch 3e023203
      
      
      "USB: EHCI: prepare to make ehci-hcd a library module", we can
      avoid this problem by turning a bus glue into a separate
      module, as we do here for the Atmel bus glue.
      
      In V4 (arnd):
       - reordered #include statements.
       - removed call to ehci_shutdown and the corresponding export
      
      In V3:
       - Detailed commit message added here about why this patch is required.
       - Replaced hcd_name string "ehci-atmel" to "atmel-ehci".
       - Inserted blank line in the Makefile to separate the EHCI drivers from
         the following non-EHCI drivers.
       - Exported ehci_shutdown symbol as it is needed by the Atmel driver.
       - Eliminated ehci_atmel_setup routine because hcd registers
         can be directly set in the ehci_atmel_drv_probe function.
      
      In V2:
        Resolved below compiler error.
        drivers/usb/host/ehci-atmel.c: In function 'ehci_atmel_drv_remove':
        drivers/usb/host/ehci-atmel.c:167: error: implicit declaration of function 'ehci_shutdown'
      Signed-off-by: default avatarManjunath Goudar <manjunath.goudar@linaro.org>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Acked-by: default avatarNicolas Ferre <nicolas.ferre@atmel.com>
      Cc: Andrew Victor <linux@maxim.org.za>
      Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      97736961
    • Manjunath Goudar's avatar
      USB: EHCI: make ehci-s5p a separate driver · 7edb3daf
      Manjunath Goudar authored
      Separate the  Samsung S5P/EXYNOS host controller driver from ehci-hcd
      host code so that it can be built as a separate driver module.
      This work is part of enabling multi-platform kernels on ARM;
      however, note that other changes are still needed before S5P/EXYNOS can
      be booted with a multi-platform kernel. We currently expect those
      to get merged for 3.10.
      
      With the infrastructure added by Alan Stern in patch 3e023203
      
      
      "USB: EHCI: prepare to make ehci-hcd a library module", we can
      avoid this problem by turning a bus glue into a separate
      module, as we do here for the s5p bus glue.
      
      In V4 (arnd)
       - revert some of the pointless changes.
       - fix allocation of s5p specific data structure.
      
      In V3:
       - Detailed commit message added here, why this patch is required.
       - MODULE_LICENSE is GPL v2.
       - Added .extra_priv_size to eliminate the separate allocation of
         the s5p_ehci_hcd structure and removed .reset function pointer
         initialization.
       - Arranged  #include's in alphabetical order.
       - After using extra_priv_size initialization, struct usb_hcd *hcd
         is redundant and can be removed from the probe function.
       - Eliminated s5p_ehci_phy_enable,contents of statements moved
         into the s5p_ehci_probe
       - Eliminated s5p_ehci_phy_disable, contents of statements moved into
         the s5p_ehci_remove.
      
      In V2:
       - Tegra patch related changes removed from this patch.
      Signed-off-by: default avatarManjunath Goudar <manjunath.goudar@linaro.org>
      Acked-by: default avatarJingoo Han <jg1.han@samsung.com>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Cc: Kukjin Kim <kgene.kim@samsung.com>
      Cc: Kyungmin Park <kyungmin.park@samsung.com>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7edb3daf
    • Manjunath Goudar's avatar
      USB: EHCI: make ehci-spear a separate driver · 7675d6ba
      Manjunath Goudar authored
      Separate the SPEAr host controller driver from ehci-hcd host code
      so that it can be built as a separate driver module.
      This work is part of enabling multi-platform kernels on ARM;
      however, note that other changes are still needed before SPEAr can be
      booted with a multi-platform kernel, but they are queued in the
      arm-soc tree for 3.10.
      
      With the infrastructure added by Alan Stern in patch 3e023203
      
      
      "USB: EHCI: prepare to make ehci-hcd a library module", we can
      avoid this problem by turning a bus glue into a separate
      module, as we do here for the SPEAr bus glue.
      
      In V4 (arnd):
       - renamed all 'struct spear_ehci' pointers from 'ehci' to the
         less ambiguous 'sehci'.
       - folded trivial spear_start_ehci/spear_stop_ehci functions into
         callers.
       - brought back initialization of ehci->caps.
      
      In V3:
       - Detailed commit message added here about why this patch is required.
       - Eliminated ehci_spear_setup routine because hcd registers can
         be directly set in the spear_ehci_hcd_drv_probe function.
       - spear_overrides struct initialized.
       - Converted to using .extra_priv_size for allocating spear_ehci,
         and updated all users of that structure.
       - to_spear_ehci() macro modified for spear_ehci.
      
      In V2:
       - Replaced spear as SPEAr everywhere, leaving functions/variables/config options.
      Signed-off-by: default avatarDeepak Saxena <dsaxena@linaro.org>
      Signed-off-by: default avatarManjunath Goudar <manjunath.goudar@linaro.org>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarViresh Kumar <viresh.linux@gmail.com>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Cc: Shiraz Hashim <shiraz.hashim@st.com>
      Cc: spear-devel@list.st.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7675d6ba
    • Manjunath Goudar's avatar
      USB: EHCI: make ehci-orion a separate driver · a76dd463
      Manjunath Goudar authored
      Separate the Orion host controller driver from ehci-hcd host
      code into its own driver module because of following reason.
      
      With the multiplatform changes in arm-soc tree, it becomes
      possible to enable the mvebu platform (which uses
      ehci-orion) at the same time as other platforms that require
      a conflicting EHCI bus glue. At the moment, this results
      in a warning like
      
      drivers/usb/host/ehci-hcd.c:1297:0: warning: "PLATFORM_DRIVER" redefined [enabled by default]
      drivers/usb/host/ehci-hcd.c:1277:0: note: this is the location of the previous definition
      drivers/usb/host/ehci-orion.c:334:31: warning: 'ehci_orion_driver' defined but not used [-Wunused-variable]
      
      and an ehci driver that only works on one of them.
      
      With the infrastructure added by Alan Stern in patch 3e023203
      
      
      "USB: EHCI: prepare to make ehci-hcd a library module", we can
      avoid this problem by turning a bus glue into a separate
      module, as we do here for the orion bus glue.
      
      An earlier version of this patch was included in 3.9 but caused
      a regression there, which has subsequently been fixed.
      
      While we are here, use the opportunity to disabiguate the two
      Marvell EHCI controller implementations in Kconfig.
      
      In V4 (arnd):
      - Improve Kconfig text
      
      In V3:
      - More detail provided in commit message regarding this patch.
      - Replaced hcd_name string "ehci-orion" into "orion-ehci".
      - MODULE_LICENSE is GPL v2.
      - In ehci_init_driver calling second argument passed  as NULL instead of
        ehci_orion_overrides because ehci_orion_overrides is removed.
      
      In V2:
      - Tegra patch related changes removed from this patch.
      Signed-off-by: default avatarManjunath Goudar <manjunath.goudar@linaro.org>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarJason Cooper <jason@lakedaemon.net>
      Tested-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a76dd463
    • Tony Camuso's avatar
      xhci - clarify compliance mode debug messages · 58b1d799
      Tony Camuso authored
      
      
      There are no functional changes in this patch. However, because the
      compliance mode timer can be deleted in more than one function, it
      seemed expedient to include the function name in the debug strings.
      
      Also limited the use of capitals to the first word in the compliance
      mode debug messages, except after a function name where all words
      start with lower case, in keeping with the style prevalent elsewhere
      in xhci.c.
      Signed-off-by: default avatarTony Camuso <tcamuso@redhat.com>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      58b1d799
    • Jingoo Han's avatar
      ARM: EXYNOS: change the name of USB ohci header · b8271856
      Jingoo Han authored
      
      
      This patch changes the name of USB ohci header from 'usb-exynos.h'
      to 'usb-ohci-exynos.h'. This is because this header file has
      the platdata for only EXYNOS OHCI.
      Signed-off-by: default avatarJingoo Han <jg1.han@samsung.com>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>
      b8271856
  8. 03 Apr, 2013 5 commits
  9. 02 Apr, 2013 1 commit
  10. 01 Apr, 2013 1 commit
  11. 28 Mar, 2013 7 commits
  12. 25 Mar, 2013 1 commit
    • Soeren Moch's avatar
      USB: EHCI: fix bug in iTD/siTD DMA pool allocation · 85ecd032
      Soeren Moch authored
      
      
      [Description written by Alan Stern]
      
      Soeren tracked down a very difficult bug in ehci-hcd's DMA pool
      management of iTD and siTD structures.  Some background: ehci-hcd
      gives each isochronous endpoint its own set of active and free itd's
      (or sitd's for full-speed devices).  When a new itd is needed, it is
      taken from the head of the free list, if possible.  However, itd's
      must not be used twice in a single frame because the hardware
      continues to access the data structure for the entire duration of a
      frame.  Therefore if the itd at the head of the free list has its
      "frame" member equal to the current value of ehci->now_frame, it
      cannot be reused and instead a new itd is allocated from the DMA pool.
      The entries on the free list are not released back to the pool until
      the endpoint is no longer in use.
      
      The bug arises from the fact that sometimes an itd can be moved back
      onto the free list before itd->frame has been set properly.  In
      Soeren's case, this happened because ehci-hcd can allocate one more
      itd than it actually needs for an URB; the extra itd may or may not be
      required depending on how the transfer aligns with a frame boundary.
      For example, an URB with 8 isochronous packets will cause two itd's to
      be allocated.  If the URB is scheduled to start in microframe 3 of
      frame N then it will require both itds: one for microframes 3 - 7 of
      frame N and one for microframes 0 - 2 of frame N+1.  But if the URB
      had been scheduled to start in microframe 0 then it would require only
      the first itd, which could cover microframes 0 - 7 of frame N.  The
      second itd would be returned to the end of the free list.
      
      The itd allocation routine initializes the entire structure to 0, so
      the extra itd ends up on the free list with itd->frame set to 0
      instead of a meaningful value.  After a while the itd reaches the head
      of the list, and occasionally this happens when ehci->now_frame is
      equal to 0.  Then, even though it would be okay to reuse this itd, the
      driver thinks it must get another itd from the DMA pool.
      
      For as long as the isochronous endpoint remains in use, this flaw in
      the mechanism causes more and more itd's to be taken slowly from the
      DMA pool.  Since none are released back, the pool eventually becomes
      exhausted.
      
      This reuslts in memory allocation failures, which typically show up
      during a long-running audio stream.  Video might suffer the same
      effect.
      
      The fix is very simple.  To prevent allocations from the pool when
      they aren't needed, make sure that itd's sent back to the free list
      prematurely have itd->frame set to an invalid value which can never be
      equal to ehci->now_frame.
      
      This should be applied to -stable kernels going back to 3.6.
      Signed-off-by: default avatarSoeren Moch <smoch@web.de>
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      85ecd032