1. 02 Jun, 2015 2 commits
  2. 31 May, 2015 15 commits
    • Ramneek Mehresh's avatar
      drivers:usb:fsl: Fix compilation error for fsl ehci drv · 74db22cb
      Ramneek Mehresh authored
      Fix compilation error in fsl ehci drv because ehci_reset()
      and ehci_adjust_port_wakeup_flags() were not exported, and
      are used when PM is enabled
      Signed-off-by: default avatarRamneek Mehresh <ramneek.mehresh@freescale.com>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      74db22cb
    • Yoshihiro Shimoda's avatar
      usb: renesas_usbhs: Don't disable the pipe if Control write status stage · c5d496ad
      Yoshihiro Shimoda authored
      This patch fixes an issue that sometimes this controller is not able
      to complete the Control write status stage.
      
      This driver should enable DCPCTR.CCPL and PID_BUF to complete the status
      stage. However, if this driver detects the ctrl_stage interruption first
      before the control write data is received, this driver will clear the
      PID_BUF wrongly in the usbhsf_pio_try_pop(). To avoid this issue, this
      patch doesn't clear the PID_BUF in the usbhsf_pio_try_pop().
      (Since also the privious code doesn't disable the PID_BUF after a control
       transfer was finished, this patch doesn't have any side efforts.)
      Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c5d496ad
    • Kazuya Mizuguchi's avatar
      usb: renesas_usbhs: Fix fifo unclear in usbhsf_prepare_pop · 5e582ff3
      Kazuya Mizuguchi authored
      This patch fixes an issue for control write. When usbhsf_prepare_pop()
      is called after this driver called a gadget setup function, this controller
      doesn't receive the control write data. So, this patch adds a code to clear
      the fifo for control write in usbhsf_prepare_pop().
      Signed-off-by: default avatarKazuya Mizuguchi <kazuya.mizuguchi.ks@renesas.com>
      Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5e582ff3
    • Nikhil Badola's avatar
      drivers:usb:fsl: Add support for USB controller version-2.5 · 138c3f03
      Nikhil Badola authored
      Add support for USB controller version-2.5 used in
      T4240 rev2.0, T1024, T1040, T2080, LS1021A
      Signed-off-by: default avatarNikhil Badola <nikhil.badola@freescale.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      138c3f03
    • Nikhil Badola's avatar
      drivers:usb:fsl: Check IP version 2.4 for mph USB controller · d7c444e5
      Nikhil Badola authored
      Check IP version 2.4 for multi port host USB controller and
      return FSL_USB_VER_2_4 macro
      Signed-off-by: default avatarNikhil Badola <nikhil.badola@freescale.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d7c444e5
    • Robert Schlabbach's avatar
      usb: core: Fix USB 3.0 devices lost in NOTATTACHED state after a hub port reset · fb6d1f7d
      Robert Schlabbach authored
      Fix USB 3.0 devices lost in NOTATTACHED state after a hub port reset.
      
      Dissolve the function hub_port_finish_reset() completely and divide the
      actions to be taken into those which need to be done after each reset
      attempt and those which need to be done after the full procedure is
      complete, and place them in the appropriate places in hub_port_reset().
      Also, remove an unneeded forward declaration of hub_port_reset().
      
      Verbose Problem Description:
      
      USB 3.0 devices may be "lost for good" during a hub port reset.
      This makes Linux unable to boot from USB 3.0 devices in certain
      constellations of host controllers and devices, because the USB device is
      lost during initialization, preventing the rootfs from being mounted.
      
      The underlying problem is that in the affected constellations, during the
      processing inside hub_port_reset(), the hub link state goes from 0 to
      SS.inactive after the initial reset, and back to 0 again only after the
      following "warm" reset.
      
      However, hub_port_finish_reset() is called after each reset attempt and
      sets the state the connected USB device based on the "preliminary" status
      of the hot reset to USB_STATE_NOTATTACHED due to SS.inactive, yet when
      the following warm reset is complete and hub_port_finish_reset() is
      called again, its call to set the device to USB_STATE_DEFAULT is blocked
      by usb_set_device_state() which does not allow taking USB devices out of
      USB_STATE_NOTATTACHED state.
      
      Thanks to Alan Stern for guiding me to the proper solution and how to
      submit it.
      
      Link: http://lkml.kernel.org/r/trinity-25981484-72a9-4d46-bf17-9c1cf9301a31-1432073240136%20()%203capp-gmx-bs27Signed-off-by: default avatarRobert Schlabbach <robert_s@gmx.net>
      Cc: stable <stable@vger.kernel.org>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      fb6d1f7d
    • Abhishek Bist's avatar
      USB: hcd.h : Removed an unnecessary function prototype usb_find_interface_driver() · f0e6a326
      Abhishek Bist authored
      This function is used to call in early version of linux kernel in order
      to find out the interface used by a usb device. But now it's use is
      completely abolished. So,it would be relevant to remove this obselete
      function from kernel mainline.
      Signed-off-by: default avatarAbhishek Bist <ishubist@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f0e6a326
    • Chris Bainbridge's avatar
      usb: host: xhci: remove incorrect comment about mutex · 02c018af
      Chris Bainbridge authored
      The comment stating that xhci_setup_device() is protected by the address
      mutex is not true since
      commit 6fecd4f2 ("USB: separate usb_address0 mutexes for each bus")
      as xhci handles two buses.
      Signed-off-by: default avatarChris Bainbridge <chris.bainbridge@gmail.com>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      02c018af
    • Mathias Nyman's avatar
      xhci: Return correct number of tranferred bytes for stalled control endpoints · 22ae47e6
      Mathias Nyman authored
      Fix the xhci driver from bluntly setting the transferred length to 0 if
      we get a STALL on anything else than the data stage of a control transfer.
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      22ae47e6
    • Mathias Nyman's avatar
      xhci: optimize xhci bus resume time · 41485a90
      Mathias Nyman authored
      We used to write the root port state changes in turn for every port,
      sleeping 20ms after every port state change. Suspended usb2 ports need
      two state changes, taking minimun 40ms per port.
      
      Now instead poll the Port Link State Change (PLC) bit as
      the state change to U0 will set this bit.
      Suspended usb2 ports still need the extra 20ms delay, but we now change
      all the port states at once so we only need to sleep 20ms once all together
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      41485a90
    • Roger Quadros's avatar
      usb: xhci: Fix suspend/resume when used with OTG core · 9fa733f2
      Roger Quadros authored
      In the OTG case, the controller might not yet have been
      added or is removed before the system suspends.
      
      Assign xhci->main_hcd during probe to prevent NULL
      pointer de-reference in xhci_suspend/resume().
      
      Use the hcd->state flag to check if HCD is halted
      and if that is so do nothing for xhci_suspend/resume().
      
      [Only for xhci-plat devices, pci devices need it in gen_setup -Mathias]
      Signed-off-by: default avatarRoger Quadros <rogerq@ti.com>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9fa733f2
    • Roger Quadros's avatar
      usb: xhci: fix xhci locking up during hcd remove · ad6b1d91
      Roger Quadros authored
      The problem seems to be that if a new device is detected
      while we have already removed the shared HCD, then many of the
      xhci operations (e.g.  xhci_alloc_dev(), xhci_setup_device())
      hang as command never completes.
      
      I don't think XHCI can operate without the shared HCD as we've
      already called xhci_halt() in xhci_only_stop_hcd() when shared HCD
      goes away. We need to prevent new commands from being queued
      not only when HCD is dying but also when HCD is halted.
      
      The following lockup was detected while testing the otg state
      machine.
      
      [  178.199951] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
      [  178.205799] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1
      [  178.214458] xhci-hcd xhci-hcd.0.auto: hcc params 0x0220f04c hci version 0x100 quirks 0x00010010
      [  178.223619] xhci-hcd xhci-hcd.0.auto: irq 400, io mem 0x48890000
      [  178.230677] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
      [  178.237796] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
      [  178.245358] usb usb1: Product: xHCI Host Controller
      [  178.250483] usb usb1: Manufacturer: Linux 4.0.0-rc1-00024-g6111320 xhci-hcd
      [  178.257783] usb usb1: SerialNumber: xhci-hcd.0.auto
      [  178.267014] hub 1-0:1.0: USB hub found
      [  178.272108] hub 1-0:1.0: 1 port detected
      [  178.278371] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
      [  178.284171] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 2
      [  178.294038] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
      [  178.301183] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
      [  178.308776] usb usb2: Product: xHCI Host Controller
      [  178.313902] usb usb2: Manufacturer: Linux 4.0.0-rc1-00024-g6111320 xhci-hcd
      [  178.321222] usb usb2: SerialNumber: xhci-hcd.0.auto
      [  178.329061] hub 2-0:1.0: USB hub found
      [  178.333126] hub 2-0:1.0: 1 port detected
      [  178.567585] dwc3 48890000.usb: usb_otg_start_host 0
      [  178.572707] xhci-hcd xhci-hcd.0.auto: remove, state 4
      [  178.578064] usb usb2: USB disconnect, device number 1
      [  178.586565] xhci-hcd xhci-hcd.0.auto: USB bus 2 deregistered
      [  178.592585] xhci-hcd xhci-hcd.0.auto: remove, state 1
      [  178.597924] usb usb1: USB disconnect, device number 1
      [  178.603248] usb 1-1: new high-speed USB device number 2 using xhci-hcd
      [  190.597337] INFO: task kworker/u4:0:6 blocked for more than 10 seconds.
      [  190.604273]       Not tainted 4.0.0-rc1-00024-g6111320 #1058
      [  190.610228] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      [  190.618443] kworker/u4:0    D c05c0ac0     0     6      2 0x00000000
      [  190.625120] Workqueue: usb_otg usb_otg_work
      [  190.629533] [<c05c0ac0>] (__schedule) from [<c05c10ac>] (schedule+0x34/0x98)
      [  190.636915] [<c05c10ac>] (schedule) from [<c05c1318>] (schedule_preempt_disabled+0xc/0x10)
      [  190.645591] [<c05c1318>] (schedule_preempt_disabled) from [<c05c23d0>] (mutex_lock_nested+0x1ac/0x3fc)
      [  190.655353] [<c05c23d0>] (mutex_lock_nested) from [<c046cf8c>] (usb_disconnect+0x3c/0x208)
      [  190.664043] [<c046cf8c>] (usb_disconnect) from [<c0470cf0>] (_usb_remove_hcd+0x98/0x1d8)
      [  190.672535] [<c0470cf0>] (_usb_remove_hcd) from [<c0485da8>] (usb_otg_start_host+0x50/0xf4)
      [  190.681299] [<c0485da8>] (usb_otg_start_host) from [<c04849a4>] (otg_set_protocol+0x5c/0xd0)
      [  190.690153] [<c04849a4>] (otg_set_protocol) from [<c0484b88>] (otg_set_state+0x170/0xbfc)
      [  190.698735] [<c0484b88>] (otg_set_state) from [<c0485740>] (otg_statemachine+0x12c/0x470)
      [  190.707326] [<c0485740>] (otg_statemachine) from [<c0053c84>] (process_one_work+0x1b4/0x4a0)
      [  190.716162] [<c0053c84>] (process_one_work) from [<c00540f8>] (worker_thread+0x154/0x44c)
      [  190.724742] [<c00540f8>] (worker_thread) from [<c0058f88>] (kthread+0xd4/0xf0)
      [  190.732328] [<c0058f88>] (kthread) from [<c000e810>] (ret_from_fork+0x14/0x24)
      [  190.739898] 5 locks held by kworker/u4:0/6:
      [  190.744274]  #0:  ("%s""usb_otg"){.+.+.+}, at: [<c0053bf4>] process_one_work+0x124/0x4a0
      [  190.752799]  #1:  ((&otgd->work)){+.+.+.}, at: [<c0053bf4>] process_one_work+0x124/0x4a0
      [  190.761326]  #2:  (&otgd->fsm.lock){+.+.+.}, at: [<c048562c>] otg_statemachine+0x18/0x470
      [  190.769934]  #3:  (usb_bus_list_lock){+.+.+.}, at: [<c0470ce8>] _usb_remove_hcd+0x90/0x1d8
      [  190.778635]  #4:  (&dev->mutex){......}, at: [<c046cf8c>] usb_disconnect+0x3c/0x208
      [  190.786700] INFO: task kworker/1:0:14 blocked for more than 10 seconds.
      [  190.793633]       Not tainted 4.0.0-rc1-00024-g6111320 #1058
      [  190.799567] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      [  190.807783] kworker/1:0     D c05c0ac0     0    14      2 0x00000000
      [  190.814457] Workqueue: usb_hub_wq hub_event
      [  190.818866] [<c05c0ac0>] (__schedule) from [<c05c10ac>] (schedule+0x34/0x98)
      [  190.826252] [<c05c10ac>] (schedule) from [<c05c4e40>] (schedule_timeout+0x13c/0x1ec)
      [  190.834377] [<c05c4e40>] (schedule_timeout) from [<c05c19f0>] (wait_for_common+0xbc/0x150)
      [  190.843062] [<c05c19f0>] (wait_for_common) from [<bf068a3c>] (xhci_setup_device+0x164/0x5cc [xhci_hcd])
      [  190.852986] [<bf068a3c>] (xhci_setup_device [xhci_hcd]) from [<c046b7f4>] (hub_port_init+0x3f4/0xb10)
      [  190.862667] [<c046b7f4>] (hub_port_init) from [<c046eb64>] (hub_event+0x704/0x1018)
      [  190.870704] [<c046eb64>] (hub_event) from [<c0053c84>] (process_one_work+0x1b4/0x4a0)
      [  190.878919] [<c0053c84>] (process_one_work) from [<c00540f8>] (worker_thread+0x154/0x44c)
      [  190.887503] [<c00540f8>] (worker_thread) from [<c0058f88>] (kthread+0xd4/0xf0)
      [  190.895076] [<c0058f88>] (kthread) from [<c000e810>] (ret_from_fork+0x14/0x24)
      [  190.902650] 5 locks held by kworker/1:0/14:
      [  190.907023]  #0:  ("usb_hub_wq"){.+.+.+}, at: [<c0053bf4>] process_one_work+0x124/0x4a0
      [  190.915454]  #1:  ((&hub->events)){+.+.+.}, at: [<c0053bf4>] process_one_work+0x124/0x4a0
      [  190.924070]  #2:  (&dev->mutex){......}, at: [<c046e490>] hub_event+0x30/0x1018
      [  190.931768]  #3:  (&port_dev->status_lock){+.+.+.}, at: [<c046eb50>] hub_event+0x6f0/0x1018
      [  190.940558]  #4:  (&bus->usb_address0_mutex){+.+.+.}, at: [<c046b458>] hub_port_init+0x58/0xb10
      Signed-off-by: default avatarRoger Quadros <rogerq@ti.com>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ad6b1d91
    • Roger Quadros's avatar
      usb: xhci: Allow usb_add/remove_hcd() to be called repeatedly · 8a853759
      Roger Quadros authored
      Don't set xhci->shared_hcd to NULL in xhci_stop() as we have
      still not de-allocated it. It was resulting in a NULL pointer
      de-reference if usb_add/remove_hcd() is called repeatedly.
      
      We want repeated add/remove to work for the OTG use case.
      Signed-off-by: default avatarRoger Quadros <rogerq@ti.com>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8a853759
    • Roger Quadros's avatar
      usb: xhci: plat: Create both HCDs before adding them · 4ac53087
      Roger Quadros authored
      As xhci_hcd is now allocated by usb_create_hcd(), we don't
      need to add the primary HCD before creating the shared HCD.
      
      Creating the shared HCD before adding the primary HCD is particularly
      useful for the OTG use case so that we know at the OTG core if
      the HCD is in single configuration or dual (primary + shared)
      configuration.
      Signed-off-by: default avatarRoger Quadros <rogerq@ti.com>
      [Mathias: rearranged to fit on top of the Marvell Armada 385 phy changes]
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4ac53087
    • Roger Quadros's avatar
      usb: xhci: cleanup xhci_hcd allocation · cd33a321
      Roger Quadros authored
      HCD core allocates memory for HCD private data in
      usb_create_[shared_]hcd() so make use of that
      mechanism to allocate the struct xhci_hcd.
      
      Introduce struct xhci_driver_overrides to provide
      the size of HCD private data and hc_driver operation
      overrides. As of now we only need to override the
      reset and start methods.
      Signed-off-by: default avatarRoger Quadros <rogerq@ti.com>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      cd33a321
  3. 29 May, 2015 1 commit
  4. 28 May, 2015 1 commit
    • Arnd Bergmann's avatar
      usb: phy: add static inline wrapper for devm_usb_get_phy_by_node · 307c858b
      Arnd Bergmann authored
      The newly introduced devm_usb_get_phy_by_node function only has
      an extern declaration, but no alternative for the case that
      CONFIG_USB_PHY is disabled, which leads to a build error when
      it is used anyway:
      
      drivers/power/twl4030_charger.c: In function 'twl4030_bci_probe':
      drivers/power/twl4030_charger.c:648:23: error: implicit declaration of function 'devm_usb_get_phy_by_node' [-Werror=implicit-function-declaration]
          bci->transceiver = devm_usb_get_phy_by_node(
      
      This adds the wrapper in the same way that we have one for
      all other usb-phy API functions.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Fixes: e842b84c ("usb: phy: Add interface to get phy give of device_node.")
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      307c858b
  5. 27 May, 2015 4 commits
    • Felipe Balbi's avatar
      usb: gadget: atmel: fix build warnings · 94a715ed
      Felipe Balbi authored
      This patch fixes the following build warnings:
      
      drivers/usb/gadget/udc/atmel_usba_udc.c:2207:12: warning:
      ‘usba_udc_suspend’ defined but not used [-Wunused-function] static int
      usba_udc_suspend(struct device *dev)
      drivers/usb/gadget/udc/atmel_usba_udc.c:2236:12: warning:
      ‘usba_udc_resume’ defined but not used [-Wunused-function] static int
      usba_udc_resume(struct device *dev)
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      94a715ed
    • Felipe Balbi's avatar
      usb: musb: ux500: fix build warnings · 30d09223
      Felipe Balbi authored
      This patch fixes the following build warnings:
      
      drivers/usb/musb/ux500.c:346:12: warning: ‘ux500_suspend’ defined but
      not used [-Wunused-function]
      drivers/usb/musb/ux500.c:357:12: warning: ‘ux500_resume’ defined but not
      used [-Wunused-function]
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      30d09223
    • Felipe Balbi's avatar
      usb: musb: am35x: fix build warnings · fea2fc6e
      Felipe Balbi authored
      This patch fixes the following build warnings:
      
      drivers/usb/musb/am35x.c:573:12: warning: ‘am35x_suspend’ defined but
      not used [-Wunused-function]
      drivers/usb/musb/am35x.c:589:12: warning: ‘am35x_resume’ defined but not
      used [-Wunused-function]
      drivers/usb/musb/am35x.c:573:12: warning: ‘am35x_suspend’ defined but
      not used [-Wunused-function]
      drivers/usb/musb/am35x.c:589:12: warning: ‘am35x_resume’ defined but not
      used [-Wunused-function]
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      fea2fc6e
    • Hans de Goede's avatar
      phy: sun4i-usb: Add a sunxi specific function for setting squelch-detect · 24fe86a6
      Hans de Goede authored
      The sunxi otg phy has a bug where it wrongly detects a high speed squelch
      when reset on the root port gets de-asserted with a lo-speed device.
      
      The workaround for this is to disable squelch detect before de-asserting
      reset, and re-enabling it after the reset de-assert is done. Add a sunxi
      specific phy function to allow the sunxi-musb glue to do this.
      Acked-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      24fe86a6
  6. 26 May, 2015 17 commits