1. 08 Jun, 2016 5 commits
    • Geert Uytterhoeven's avatar
      MAINTAINERS: Add file patterns for usb device tree bindings · 1700bd98
      Geert Uytterhoeven authored
      Submitters of device tree binding documentation may forget to CC
      the subsystem maintainer if this is missing.
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: linux-usb@vger.kernel.org
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1700bd98
    • Thierry Reding's avatar
      usb: host: ehci-tegra: Avoid getting the same reset twice · 7cc9ca5a
      Thierry Reding authored
      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: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7cc9ca5a
    • Thierry Reding's avatar
      usb: host: ehci-tegra: Grab the correct UTMI pads reset · f8a15a96
      Thierry Reding authored
      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: default avatarJon Hunter <jonathanh@nvidia.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f8a15a96
    • Sudip Mukherjee's avatar
      USB: mos7720: delete parport · dcb21ad4
      Sudip Mukherjee authored
      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: default avatarSudip Mukherjee <sudip.mukherjee@codethink.co.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      dcb21ad4
    • Michał Pecio's avatar
      USB: OHCI: Don't mark EDs as ED_OPER if scheduling fails · c66f59ee
      Michał Pecio authored
      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: default avatarMichal Pecio <michal.pecio@gmail.com>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c66f59ee
  2. 01 Jun, 2016 35 commits