1. 20 12月, 2013 1 次提交
    • D
      usb: musb: finish suspend/reset work independently from musb_hub_control() · 8ed1fb79
      Daniel Mack 提交于
      Currently, resume and reset is completed when the USB core calls back
      the root hub, asking for the port's state. This results in
      unpredictable timing of state assertion, which in turn renders some
      USB devices unusable after resume.
      
      Fix this by moving the logic to end the reset and suspend state out of
      musb_hub_control() into separate functions called from delayed workers.
      GetPortStatus only reports the current state now, without taking any
      real action.
      
      The rh_timeout variable is kept in order to define a minimum time gap
      between reset and resume only.
      
      FWIW, in my case, a Verbatim "STORE N GO" mass storage device won't
      resume cleanly without this patch.
      Signed-off-by: NDaniel Mack <zonque@gmail.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      8ed1fb79
  2. 11 10月, 2013 1 次提交
    • S
      usb: musb: start musb on the udc side, too · 001dd84a
      Sebastian Andrzej Siewior 提交于
      I have am335x-evm with one port running in OTG mode. Since commit
      fe4cb091 ("usb: musb: gadget: remove hcd initialization") the loaded
      gadget does non pop up on the host. All I see is
      |usb 4-5: new high-speed USB device number 52 using ehci-pci
      |usb 4-5: device descriptor read/64, error -110
      
      Since a later commit 2cc65fea ("usb: musb: add musb_host_setup() and
      musb_host_cleanup()) the gadget shows up on the host again but only
      in OTG mode (because we have the host init code running). It does not
      work in device only mode.
      If running in OTG mode and the gadget is removed and added back (rmmod
      followed by modprobe of a gadget) then the same error is pops up on the
      host side.
      
      This patch ensures that the gadget side also executes musb_start() which
      puts the chip in "connect accept" mode. With this change the device
      works in OTG & device mode and the gadget can be added & removed
      multiple times.
      A device (if musb is in OTG mode acting as a host) is only recognized if
      it is attached during module load (musb_hdrc module). After the device
      unplugged and plugged again the host does not recognize it. We get a
      buch of errors if musb running in OTG mode, attached to a host and no
      gadget is loaded. Bah.
      This is one step forward. Host & device only mode should work. I will
      look at OTG later. I looked at this before commit fe4cb091 and OTG wasn't
      working there perfectly so I am not sure that it is a regression :)
      
      Cc: <stable@vger.kernel.org> # v3.11
      Cc: Daniel Mack <zonque@gmail.com>
      Cc: Peter Korsgaard <jacmet@sunsite.dk>
      Signed-off-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      001dd84a
  3. 28 9月, 2013 1 次提交
  4. 29 7月, 2013 1 次提交
  5. 29 5月, 2013 5 次提交
  6. 01 11月, 2012 1 次提交
    • S
      usb: musb: remove hand-crafted id handling · 2f771164
      Sebastian Andrzej Siewior 提交于
      This replaced the handcrafted id handling by the PLATFORM_DEVID_AUTO
      value which should do the same thing.
      
      This patch probably also fixes ux500 because I did not find the "musbid"
      variable to remove. And we close a tiny-unlikely race window becuase the
      old code gave the id back before device was destroyed in the remove
      case.
      
      [ balbi@ti.com : fixed up two failed hunks when applying patch ]
      
      Cc: B, Ravi <ravibabu@ti.com>
      Cc: Santhapuri, Damodar <damodar.santhapuri@ti.com>
      Cc: Mian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com>
      Cc: Bob Liu <lliubbo@gmail.com>
      Signed-off-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      2f771164
  7. 31 10月, 2012 2 次提交
  8. 11 9月, 2012 2 次提交
  9. 09 8月, 2012 2 次提交
  10. 07 8月, 2012 1 次提交
    • F
      usb: musb: fix sparse warnings · a156544b
      Felipe Balbi 提交于
      The following warnings are fixed:
      
      drivers/usb/musb/musb_core.c:357:6: warning: symbol 'musb_otg_timer_func' was not declared. Should it be static?
      drivers/usb/musb/musb_core.c:1339:27: warning: incorrect type in initializer (different address spaces)
      drivers/usb/musb/musb_core.c:1339:27:    expected void *mbase
      drivers/usb/musb/musb_core.c:1339:27:    got void [noderef] <asn:2>*mregs
      drivers/usb/musb/musb_core.c:1347:17: warning: incorrect type in argument 1 (different address spaces)
      drivers/usb/musb/musb_core.c:1347:17:    expected void [noderef] <asn:2>*addr
      drivers/usb/musb/musb_core.c:1347:17:    got void *mbase
      drivers/usb/musb/musb_core.h:487:27: warning: incorrect type in initializer (different address spaces)
      drivers/usb/musb/musb_core.h:487:27:    expected void *mbase
      drivers/usb/musb/musb_core.h:487:27:    got void [noderef] <asn:2>*mregs
      drivers/usb/musb/musb_core.h:491:26: warning: incorrect type in argument 1 (different address spaces)
      drivers/usb/musb/musb_core.h:491:26:    expected void const [noderef] <asn:2>*addr
      drivers/usb/musb/musb_core.h:491:26:    got void *mbase
      drivers/usb/musb/tusb6010.c:270:48: warning: incorrect type in argument 2 (different address spaces)
      drivers/usb/musb/tusb6010.c:270:48:    expected void [noderef] <asn:2>*buf
      drivers/usb/musb/tusb6010.c:270:48:    got unsigned char [usertype] *[assigned] buf
      drivers/usb/musb/tusb6010.c:164:32: warning: incorrect type in argument 1 (different address spaces)
      drivers/usb/musb/tusb6010.c:164:32:    expected void *to
      drivers/usb/musb/tusb6010.c:164:32:    got void [noderef] <asn:2>*buf
      drivers/usb/musb/tusb6010.c:172:24: warning: incorrect type in argument 1 (different address spaces)
      drivers/usb/musb/tusb6010.c:172:24:    expected void *to
      drivers/usb/musb/tusb6010.c:172:24:    got void [noderef] <asn:2>*[assigned] buf
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      a156544b
  11. 31 7月, 2012 1 次提交
  12. 25 6月, 2012 1 次提交
  13. 18 4月, 2012 1 次提交
  14. 13 2月, 2012 1 次提交
  15. 12 12月, 2011 3 次提交
    • V
      usb: musb: fix pm_runtime calls while atomic · 712d8efa
      Vikram Pandita 提交于
      musb pm_runtime_get_sync call happens in intrrupt context on cable attach case
      That can result in re-enabling the interrupts and cause side affects.
      
      So move the code to a work queue.
      
      Following is the error path hit on cable attach:
      
      BUG: sleeping function called from invalid context at drivers/base/power/runtime.c:802
      in_atomic(): 0, irqs_disabled(): 0, pid: 18, name: irq/378-twl6030
      
      Backtrace:
      [<c00520f0>] (dump_backtrace+0x0/0x110) from [<c054f454>] (dump_stack+0x18/0x1c)
      [<c054f43c>] (dump_stack+0x0/0x1c) from [<c007f59c>] (__might_sleep+0x130/0x134)
      [<c007f46c>] (__might_sleep+0x0/0x134) from [<c02c2794>] (__pm_runtime_resume+0x94/0x98)
      [<c02c2700>] (__pm_runtime_resume+0x0/0x98) from [<c033e7e4>] (musb_otg_notifications+0x9c/0x164)
      [<c033e748>] (musb_otg_notifications+0x0/0x164) from [<c00b3df0>] (notifier_call_chain+0x4c/0x8c)
      [<c00b3da4>] (notifier_call_chain+0x0/0x8c) from [<c00b44a8>] (__atomic_notifier_call_chain+0x40/0x54)
      [<c00b4468>] (__atomic_notifier_call_chain+0x0/0x54) from [<c00b44dc>] (atomic_notifier_call_chain+0x20/0x28)
      [<c00b44bc>] (atomic_notifier_call_chain+0x0/0x28) from [<c033f124>] (twl6030_usb_irq+0xc8/0xdc)
      [<c033f05c>] (twl6030_usb_irq+0x0/0xdc) from [<c00d79f8>] (irq_thread_fn+0x24/0x40)
      [<c00d79d4>] (irq_thread_fn+0x0/0x40) from [<c00d7b64>] (irq_thread+0x150/0x1d8)
      [<c00d7a14>] (irq_thread+0x0/0x1d8) from [<c00adf70>] (kthread+0x94/0x98)
      [<c00adedc>] (kthread+0x0/0x98) from [<c0094388>] (do_exit+0x0/0x720)
      
      Tested with:
      MUSB Device mode: Cold boot / Hot plug
      MUSB Host mode: Cold boot / Hot plug
      Signed-off-by: NVikram Pandita <vikram.pandita@ti.com>
      Signed-off-by: NMoiz Sonasath <m-sonasath@ti.com>
      Signed-off-by: NVikram Pandita <vikram.pandita@ti.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      712d8efa
    • F
      usb: musb: headers cleanup · 7d5b49a2
      Felipe Balbi 提交于
      Remove a few unnecessary headers from a
      few files.
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      7d5b49a2
    • H
      usb: musb: omap2+: save and restore OTG_INTERFSEL · e25bec16
      Hema HK 提交于
      we need to save and restore OTG_INTERFSEL register
      else we will be unable to function on resume after
      OFF mode.
      Reported-by: NDevaraj Rangasamy <dev@ti.com>
      Signed-off-by: NHema HK <hemahk@ti.com>
      Signed-off-by: NKishon Vijay Abraham I <kishon@ti.com>
      Signed-off-by: NVikram Pandita <vikram.pandita@ti.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      e25bec16
  16. 12 8月, 2011 1 次提交
  17. 02 7月, 2011 2 次提交
  18. 13 4月, 2011 1 次提交
    • M
      USB: musb: blackfin: work around anomaly 05000450 · 13254307
      Mike Frysinger 提交于
      DMA mode 1 data corruption anomaly on Blackfin systems.  This issue is
      specific to the Blackfin silicon as the bug appears to be related to the
      connection of the musb ip to the bus/dma fabric.
      
      Data corruption when using USB DMA mode 1. (Issue manager 17-01-0105)
      DMA mode 1 allows large size transfers to generate a single interrupt
      at the end of the entire transfer.  The transfer is split up in packets
      of length specified in the Maximum Packet Size field for that endpoint.
      If the transfer size is not an integer multiple of the Maximum Packet
      Size, a short packet will be present at the end of the transfer.
      
      Under certain conditions this packet may be corrupted in the USB FIFO.
      
      Workaround:
      Use DMA mode 1 to transfer (n* Maximum Packet Size) and schedule DMA
      mode 0 to transfer the short packet.
      
      As an example if your transfer size is 33168 bytes and Maximum Packet
      Size equals 512, schedule [33168 - (33168 mod 512)] in DMA mode 1 and
      the remainder (33168 mod 512) in DMA mode 0.
      Signed-off-by: NMike Frysinger <vapier@gentoo.org>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      13254307
  19. 01 3月, 2011 1 次提交
    • H
      usb: musb: Remove platform context save/restore API · da68ccec
      Hema HK 提交于
      For OMAP3 and OMAP4 for offmode and retention support, musb
      sysconfig is configured to force idle and standby with ENABLE_FORCE bit
      of OTG_FORCESTNDBY set.
      And on wakeup configure to no ilde/standby with resetting the ENABLE_FORCE
      bit. There is not need to save and restore of this register anymore
      so removed omap2430_save_context/omap2430_restore_context functions.
      and also removed otg_forcestandby member of musb_context_registers
      structure
      Signed-off-by: NHema HK <hemahk@ti.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      da68ccec
  20. 18 2月, 2011 2 次提交
    • H
      usb: musb: Using runtime pm APIs for musb. · 207b0e1f
      Hema HK 提交于
      Calling runtime pm APIs pm_runtime_put_sync() and pm_runtime_get_sync()
      for enabling/disabling the clocks, sysconfig settings.
      
      Enable clock, configure no-idle/standby when active and configure force idle/standby
      and disable clock when idled. This is taken care by the runtime framework when
      driver calls the pm_runtime_get_sync and pm_runtime_put_sync APIs.
      Need to configure MUSB into force standby and force idle mode when usb not used
      Signed-off-by: NHema HK <hemahk@ti.com>
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Kevin Hilman <khilman@deeprootsystems.com>
      Cc: Cousson, Benoit <b-cousson@ti.com>
      Cc: Paul Walmsley <paul@pwsan.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      207b0e1f
    • F
      usb: musb: gadget: do not poke with gadget's list_head · ad1adb89
      Felipe Balbi 提交于
      struct usb_request's list_head is supposed to be
      used only by gadget drivers, but musb is abusing
      that. Give struct musb_request its own list_head
      and prevent musb from poking into other driver's
      business.
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      ad1adb89
  21. 17 2月, 2011 1 次提交
  22. 01 2月, 2011 1 次提交
    • F
      usb: musb: disable double buffering when it's broken · 06624818
      Felipe Balbi 提交于
      We know that blackfin doesn't support double
      buffering feature as of today. So we add a
      flag set by musb_platform_init() to forcefully
      disable that feature.
      
      Such flag is created and marked as deprecated
      to force us to find a solution for the missing
      double buffering support on blackfin.
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      06624818
  23. 28 1月, 2011 1 次提交
  24. 17 12月, 2010 1 次提交
  25. 10 12月, 2010 5 次提交
    • H
      usb: musb: Adding musb support for OMAP4430 · 594632ef
      Hema HK 提交于
      OMAP4430 supports UTMI and ULPI types of transceiver interface.
      
      In UTMI mode: The PHY is embedded within OMAP4430. The transceiver functionality
      is split between the twl6030 PMIC chip and OMAP4430. The VBUS, ID pin
      sensing and OTG SRP generation part is integrated in TWL6030 and UTMI PHY
      functionality is embedded within the OMAP4430.
      
      There is no direct interactions between the MUSB controller and TWL6030
      chip to communicate the session-valid, session-end and ID-GND events.
      It has to be done through a software by setting/resetting bits in
      one of the control module register of OMAP4430 which in turn toggles
      the appropriate signals to MUSB controller.
      
      musb driver is register for blocking notifications from the transceiver
      driver to get the event notifications for connect/disconnect and ID-GND.
      Based on these events call the transceiver init/shutdown function to
      configure the transceiver to toggle the VBUS valid, session end and ID_GND
      signals to musb and power on/off the internal PHY.
      
      For ID_GND event notifications, toggle the ID_GND signal and then wait for
      musb to be configured as "A" device, and then call the transceiver function
      to set the VBUS.
      
      In OTG mode and musb as a host, When the Micro A connector used, VBUS is turned on
      and session bit set. When the device is connected, enumeration goes through.
      When the device disconnected from the other end of the connector(ID is still grounded),
      link will detect the disconnect and end the session. When the device is connected back,
      there are no events generated in the TWL6030-usb, and link is already down.
      So the device is not detected. Removed the session bit disable code which
      will recognize the connect of the device.
      
      Limitation: In OTG host mode, if device is connected during boot, it does not get
      detected. If disconnect and connect it back or connect after boot only it works.
      Fix for this, I will submit seperate patch later.
      Signed-off-by: NHema HK <hemahk@ti.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      594632ef
    • F
      usb: musb: drop board_set_vbus · 92b48df2
      Felipe Balbi 提交于
      that's not used anymore. So let's drop it.
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      92b48df2
    • F
      usb: musb: drop musb_platform_suspend/resume · 78417372
      Felipe Balbi 提交于
      all glue layers are now fully moved to the
      new setup. We are now using dev_pm_ops to
      implement suspend/resume functionality and
      thus, musb_platform_suspend/resume has become
      deprecated and useless.
      
      This patch drops those function pointers and
      its uses.
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      78417372
    • F
      usb: musb: drop musb_platform_save/restore_context · 49635141
      Felipe Balbi 提交于
      ... that can be easily folded into the
      musb_platform_suspend/resume calls.
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      49635141
    • F
      usb: musb: drop the set_clock magic · fa56df91
      Felipe Balbi 提交于
      now that platform glue layer handles
      clock completely, that function is completely
      useless for us. Drop it.
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      fa56df91