1. 08 6月, 2016 6 次提交
    • A
      usb: host: ehci-msm: Conditionally call ehci suspend/resume · 815c9d6a
      Andy Gross 提交于
      This patch fixes a suspend/resume issue where the driver is blindly
      calling ehci_suspend/resume functions when the ehci hasn't been setup.
      This results in a crash during suspend/resume operations.
      Signed-off-by: NAndy Gross <andy.gross@linaro.org>
      Tested-by: NPramod Gurav <pramod.gurav@linaro.org>
      Acked-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      815c9d6a
    • G
      MAINTAINERS: Add file patterns for usb device tree bindings · 1700bd98
      Geert Uytterhoeven 提交于
      Submitters of device tree binding documentation may forget to CC
      the subsystem maintainer if this is missing.
      Signed-off-by: NGeert Uytterhoeven <geert@linux-m68k.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: linux-usb@vger.kernel.org
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1700bd98
    • T
      usb: host: ehci-tegra: Avoid getting the same reset twice · 7cc9ca5a
      Thierry Reding 提交于
      Starting with commit 0b52297f ("reset: Add support for shared reset
      controls") there is a reference count for reset control assertions. The
      goal is to allow resets to be shared by multiple devices and an assert
      will take effect only when all instances have asserted the reset.
      
      In order to preserve backwards-compatibility, all reset controls become
      exclusive by default. This is to ensure that reset_control_assert() can
      immediately assert in hardware.
      
      However, this new behaviour triggers the following warning in the EHCI
      driver for Tegra:
      
      [    3.365019] ------------[ cut here ]------------
      [    3.369639] WARNING: CPU: 0 PID: 1 at drivers/reset/core.c:187 __of_reset_control_get+0x16c/0x23c
      [    3.382151] Modules linked in:
      [    3.385214] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.6.0-rc6-next-20160503 #140
      [    3.392769] Hardware name: NVIDIA Tegra SoC (Flattened Device Tree)
      [    3.399046] [<c010fa50>] (unwind_backtrace) from [<c010b120>] (show_stack+0x10/0x14)
      [    3.406787] [<c010b120>] (show_stack) from [<c0347dcc>] (dump_stack+0x90/0xa4)
      [    3.414007] [<c0347dcc>] (dump_stack) from [<c011f4fc>] (__warn+0xe8/0x100)
      [    3.420964] [<c011f4fc>] (__warn) from [<c011f5c4>] (warn_slowpath_null+0x20/0x28)
      [    3.428525] [<c011f5c4>] (warn_slowpath_null) from [<c03cc8cc>] (__of_reset_control_get+0x16c/0x23c)
      [    3.437648] [<c03cc8cc>] (__of_reset_control_get) from [<c0526858>] (tegra_ehci_probe+0x394/0x518)
      [    3.446600] [<c0526858>] (tegra_ehci_probe) from [<c04516d8>] (platform_drv_probe+0x4c/0xb0)
      [    3.455029] [<c04516d8>] (platform_drv_probe) from [<c044fe78>] (driver_probe_device+0x1ec/0x330)
      [    3.463892] [<c044fe78>] (driver_probe_device) from [<c0450074>] (__driver_attach+0xb8/0xbc)
      [    3.472320] [<c0450074>] (__driver_attach) from [<c044e1ec>] (bus_for_each_dev+0x68/0x9c)
      [    3.480489] [<c044e1ec>] (bus_for_each_dev) from [<c044f338>] (bus_add_driver+0x1a0/0x218)
      [    3.488743] [<c044f338>] (bus_add_driver) from [<c0450768>] (driver_register+0x78/0xf8)
      [    3.496738] [<c0450768>] (driver_register) from [<c010178c>] (do_one_initcall+0x40/0x170)
      [    3.504909] [<c010178c>] (do_one_initcall) from [<c0c00ddc>] (kernel_init_freeable+0x158/0x1f8)
      [    3.513600] [<c0c00ddc>] (kernel_init_freeable) from [<c0810784>] (kernel_init+0x8/0x114)
      [    3.521770] [<c0810784>] (kernel_init) from [<c0107778>] (ret_from_fork+0x14/0x3c)
      [    3.529361] ---[ end trace 4bda87dbe4ecef8a ]---
      
      The reason is that Tegra SoCs have three EHCI controllers, each with a
      separate reset line. However the first controller contains UTMI pads
      configuration registers that are shared with its siblings and that are
      reset as part of the first controller's reset. There is special code in
      the driver to assert and deassert this shared reset at probe time, and
      it does so irrespective of which controller is probed first to ensure
      that these shared registers are reset before any of the controllers are
      initialized. Unfortunately this means that if the first controller gets
      probed first, it will request its own reset line and will subsequently
      request the same reset line again (temporarily) to perform the reset.
      This used to work fine before the above-mentioned commit, but now
      triggers the new WARN.
      
      Work around this by making sure we reuse the controller's reset if the
      controller happens to be the first controller.
      
      Cc: Philipp Zabel <p.zabel@pengutronix.de>
      Cc: Hans de Goede <hdegoede@redhat.com>
      Reviewed-by: NPhilipp Zabel <p.zabel@pengutronix.de>
      Signed-off-by: NThierry Reding <treding@nvidia.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7cc9ca5a
    • T
      usb: host: ehci-tegra: Grab the correct UTMI pads reset · f8a15a96
      Thierry Reding 提交于
      There are three EHCI controllers on Tegra SoCs, each with its own reset
      line. However, the first controller contains a set of UTMI configuration
      registers that are shared with its siblings. These registers will only
      be reset as part of the first controller's reset. For proper operation
      it must be ensured that the UTMI configuration registers are reset
      before any of the EHCI controllers are enabled, irrespective of the
      probe order.
      
      Commit a47cc24c ("USB: EHCI: tegra: Fix probe order issue leading to
      broken USB") introduced code that ensures the first controller is always
      reset before setting up any of the controllers, and is never again reset
      afterwards.
      
      This code, however, grabs the wrong reset. Each EHCI controller has two
      reset controls attached: 1) the USB controller reset and 2) the UTMI
      pads reset (really the first controller's reset). In order to reset the
      UTMI pads registers the code must grab the second reset, but instead it
      grabbing the first.
      
      Fixes: a47cc24c ("USB: EHCI: tegra: Fix probe order issue leading to broken USB")
      Acked-by: NJon Hunter <jonathanh@nvidia.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NThierry Reding <treding@nvidia.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f8a15a96
    • S
      USB: mos7720: delete parport · dcb21ad4
      Sudip Mukherjee 提交于
      parport subsystem has introduced parport_del_port() to delete a port
      when it is going away. Without parport_del_port() the registered port
      will not be unregistered.
      To reproduce and verify the error:
      Command to be used is : ls /sys/bus/parport/devices
      1) without the device attached there is no output as there is no
      registered parport.
      2) Attach the device, and the command will show "parport0".
      3) Remove the device and the command still shows "parport0".
      4) Attach the device again and we get "parport1".
      
      With the patch applied:
      1) without the device attached there is no output as there is no
      registered parport.
      2) Attach the device, and the command will show "parport0".
      3) Remove the device and there is no output as "parport0" is now
      removed.
      4) Attach device again to get "parport0" again.
      
      Cc: <stable@vger.kernel.org> # 4.2+
      Signed-off-by: NSudip Mukherjee <sudip.mukherjee@codethink.co.uk>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      dcb21ad4
    • M
      USB: OHCI: Don't mark EDs as ED_OPER if scheduling fails · c66f59ee
      Michał Pecio 提交于
      Since ed_schedule begins with marking the ED as "operational",
      the ED may be left in such state even if scheduling actually
      fails.
      
      This allows future submission attempts to smuggle this ED to the
      hardware behind the scheduler's back and without linking it to
      the ohci->eds_in_use list.
      
      The former causes bandwidth saturation and data loss on isoc
      endpoints, the latter crashes the kernel when attempt is made
      to unlink such ED from this list.
      
      Fix ed_schedule to update ED state only on successful return.
      Signed-off-by: NMichal Pecio <michal.pecio@gmail.com>
      Acked-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c66f59ee
  2. 02 6月, 2016 34 次提交