1. 15 11月, 2011 1 次提交
    • A
      USB: Remove the SAW_IRQ hcd flag · 968b822c
      Alan Stern 提交于
      The HCD_FLAG_SAW_IRQ flag was introduced in order to catch IRQ routing
      errors: If an URB was unlinked and the host controller hadn't gotten
      any IRQs, it seemed likely that the IRQs were directed to the wrong
      vector.
      
      This warning hasn't come up in many years, as far as I know; interrupt
      routing now seems to be well under control.  Therefore there's no
      reason to keep the flag around any more.  This patch (as1495) finally
      removes it.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      968b822c
  2. 08 7月, 2011 1 次提交
  3. 02 7月, 2011 5 次提交
  4. 24 6月, 2011 1 次提交
  5. 07 6月, 2011 1 次提交
  6. 18 5月, 2011 1 次提交
  7. 13 5月, 2011 2 次提交
    • F
      usb: musb: export musb_interrupt symbol · 981430a1
      Felipe Balbi 提交于
      currently that's used by another module
      (am35x) which, granted, it shouldn't be
      using that, but in order to avoid compile
      errors, let's export that symbol temporarily
      until re-factoring work is done on that
      driver.
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      981430a1
    • F
      usb: musb: drop unneeded musb_debug trickery · 5c8a86e1
      Felipe Balbi 提交于
      We have a generic way of enabling/disabling
      different debug messages on a driver called
      DYNAMIC_PRINTK. Anyone interested in enabling
      just part of the debug messages, please read
      the documentation under:
      
      Documentation/dynamic-debug-howto.txt
      
      for information on how to use that great
      infrastructure.
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      5c8a86e1
  8. 07 5月, 2011 1 次提交
  9. 13 4月, 2011 1 次提交
    • H
      usb: musb: Fix the crash issue during reboot · 4f9edd2d
      Hema HK 提交于
      Below crash observed with commit 7acc6197
      (usb: musb: Idle path retention and offmode support for OMAP3)
      during board reboot.
      
      The musb clock was disabled when musb_shutdown() was called by
      platform_drv_shutdown in which there are register accesses.
      call pm_runtime_get_sync() and pm_runtime_put_sync() in the
      musb_shutdown function.
      
      / # [  172.368774] Unhandled fault: imprecise external abort (0x1406) at 0x400f0000
      [  172.376190] Internal error: : 1406 [#1] SMP
      [  172.380554] last sysfs file: /sys/devices/platform/omap/omap_i2c.4/i2c-4/i2c-dev/i2c-4/dev
      [  172.389221] Modules linked in:
      [  172.392456] CPU: 0    Tainted: G        W    (2.6.38-06671-geddecbb6 #33)
      [  172.399475] PC is at do_raw_spin_unlock+0x50/0xc0
      [  172.404418] LR is at _raw_spin_unlock_irqrestore+0x24/0x44
      [  172.410186] pc : [<c069bfdc>]    lr : [<c085a7f8>]    psr: 60000093
      [  172.410186] sp : ee993e40  ip : c0d00240  fp : bea9cf14
      [  172.422241] r10: 00000000  r9 : ee992000  r8 : c04b2fa8
      [  172.427703] r7 : 00000000  r6 : c0fa46c0  r5 : ef966124  r4 : ef966124
      [  172.434539] r3 : ef92cbc0  r2 : ef92cbc0  r1 : 00000000  r0 : ef966124
      [  172.441406] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
      [  172.448974] Control: 10c5387d  Table: ae8d804a  DAC: 00000015
      [  172.454986] Process init (pid: 1094, stack limit = 0xee9922f8)
      [  172.461120] Stack: (0xee993e40 to 0xee994000)
      [  172.465667] 3e40: a0000013 c085a7f8 ef966124 a0000013 c0fa46c0 c0761ab4 c0761a70 ef95c008
      [  172.474273] 3e60: ef95c014 c06e2fd0 c06e2fbc c06dea90 00000000 01234567 28121969 c04fccb4
      [  172.482849] 3e80: 00000000 c04fcd04 c0a302bc c04fce44 c0a02600 00000001 00000000 c085cd04
      [  172.491424] 3ea0: 00000000 00000002 c09ea000 c085afc0 ee993f24 00000000 00040001 00000445
      [  172.499999] 3ec0: a8eb9d34 00000027 00000000 00000000 00000000 c0a56a4c 00000000 00000000
      [  172.508575] 3ee0: 00000002 60000093 00000000 c0519aac 00000002 00000080 00000000 c0550420
      [  172.517150] 3f00: 00000000 00000002 ee970000 c0a56a3c c0a56a20 00000002 c0a56a3c 00000000
      [  172.525726] 3f20: c0a56a3c 0000000a c1580e00 c0a56a20 00000002 c0a56a3c c1580e00 c0a56a20
      [  172.534301] 3f40: ef92cbc0 c05173a0 00000001 ef92cbc0 c0576190 c04e3174 20000013 c0517324
      [  172.542877] 3f60: ef815c00 ee90b720 c04e3174 c0576190 00000001 ef92cbc0 c04b2f00 ffffffff
      [  172.551483] 3f80: 00000058 c0517324 00000000 00000000 ffffffff 00000000 00000000 ffffffff
      [  172.560058] 3fa0: 00000058 c04b2de0 00000000 00000000 fee1dead 28121969 01234567 00000000
      [  172.568634] 3fc0: 00000000 00000000 ffffffff 00000058 00000000 00000001 400aa000 bea9cf14
      [  172.577209] 3fe0: 000ea148 bea9c958 000aa750 40225728 60000010 fee1dead 00000000 00000000
      [  172.585784] [<c069bfdc>] (do_raw_spin_unlock+0x50/0xc0) from [<c085a7f8>] (_raw_spin_unlock_irqrestore+0x24/0x44)
      [  172.596588] [<c085a7f8>] (_raw_spin_unlock_irqrestore+0x24/0x44) from [<c0761ab4>] (musb_shutdown+0x44/0x88)
      [  172.606933] [<c0761ab4>] (musb_shutdown+0x44/0x88) from [<c06e2fd0>] (platform_drv_shutdown+0x14/0x18)
      [  172.616699] [<c06e2fd0>] (platform_drv_shutdown+0x14/0x18) from [<c06dea90>] (device_shutdown+0x74/0xb4)
      [  172.626647] [<c06dea90>] (device_shutdown+0x74/0xb4) from [<c04fccb4>] (kernel_restart_prepare+0x24/0x38)
      [  172.636688] [<c04fccb4>] (kernel_restart_prepare+0x24/0x38) from [<c04fcd04>] (kernel_restart+0xc/0x48)
      [  172.646545] [<c04fcd04>] (kernel_restart+0xc/0x48) from [<c04fce44>] (sys_reboot+0xfc/0x1d8)
      [  172.655426] [<c04fce44>] (sys_reboot+0xfc/0x1d8) from [<c04b2de0>] (ret_fast_syscall+0x0/0x3c)
      [  172.664459] Code: e3c3303f e594200c e593300c e1520003 (0a000002)
      [  172.670867] ------------[ cut here ]------------
      Signed-off-by: NHema HK <hemahk@ti.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      4f9edd2d
  10. 01 3月, 2011 1 次提交
    • H
      usb: musb: Idle path retention and offmode support for OMAP3 · 7acc6197
      Hema HK 提交于
      This patch supports the retention and offmode support in the idle path for
      musb driver using runtime pm APIs.
      
      This is restricted to support offmode and retention only when device not
      connected.When device/cable connected with gadget driver loaded,configured
      to no idle/standby which will not allow the core transition to retention
      or off.
      
      There is no context save/restore done by hardware for musb in OMAP3
      and OMAP4,driver has to take care of saving and restoring the context
      during offmode.
      
      Musb has a requirement of configuring sysconfig register to force
      idle/standby mode and set the ENFORCE bit in module STANDBY register
      for retention and offmode support.
      
      Runtime pm and hwmod frameworks will take care of configuring to force
      idle/standby when pm_runtime_put_sync is called and back to no
      idle/standby when pm_runeime_get_sync is called.
      
      Compile, boot tested and also tested the retention in the idle path on
      OMAP3630Zoom3. And tested the global suspend/resume with offmode enabled.
      Usb basic functionality tested on OMAP4430SDP.
      
      There is some problem with idle path offmode in mainline, I could not test
      with offmode. But I have tested this patch with resetting the controller
      in the idle path when wakeup from retention just to make sure that the
      context is lost, and restore path is working fine.
      
      Removed .suspend/.resume fnction pointers and functions because there
      is no need of having these functions as all required work is done
      at runtime in the driver.
      
      There is no need to call the runtime pm api with glue driver device
      as glue layer device is the parent of musb core device, when runtime apis
      are called for the child, parent device runtime functionality
      will be invoked.
      
      Design overview:
      
      pm_runtime_get_sync: When called with musb core device takes care of
      enabling the clock, calling runtime callback function of omap2430 glue
      layer, runtime call back of musb driver and configure the musb sysconfig
      to no idle/standby
      
      pm_runtime_put: Takes care of calling runtime callback function of omap2430
      glue layer, runtime call back of musb driver, Configure the musb sysconfig
      to force idle/standby and disable the clock.
      
      During musb driver load: Call pm_runtime_get_sync.
      
      End of musb driver load: Call pm_runtime_put
      
      During gadget driver load: Call pm_runtime_get_sync,
      End of gadget driver load: Call pm_runtime_put if there is no device
      or cable is connected.
      
      During unload of the gadget driver:Call pm_runtime_get_sync if cable/device
      is not connected.
      End of the gadget driver unload : pm_runtime_put
      
      During unload of musb driver : Call pm_runtime_get_sync
      End of unload: Call pm_runtime_put
      
      On connect of usb cable/device -> transceiver notification(VBUS and ID-GND):
      pm_runtime_get_sync only if the gadget driver loaded.
      
      On disconnect of the cable/device -> Disconnect Notification:
      pm_runtime_put if the gadget driver is loaded.
      Signed-off-by: NHema HK <hemahk@ti.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      7acc6197
  11. 25 2月, 2011 1 次提交
  12. 18 2月, 2011 1 次提交
  13. 01 2月, 2011 2 次提交
    • S
      usb: musb: core: fix IRQ check · 541079de
      Sergei Shtylyov 提交于
      musb_probe() only regards 0 as a wrong IRQ number, despite platform_get_irq()
      that it calls returns -ENXIO in that case. It leads to musb_init_controller()
      calling request_irq() with a negative IRQ number, and when it naturally
      fails, the following is printed to the console:
      
      request_irq -6 failed!
      musb_init_controller failed with status -19
      
      Fix musb_probe() to filter out the error values as well as 0.
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      541079de
    • M
      usb: musb: fix kernel panic during s2ram(v2) · 456bb169
      Ming Lei 提交于
      This patch fixes kernel panic during s2ram, which is caused
      by the below:
      
      	- musb is not put into drv data of musb platform device if
      	CONFIG_USB_MUSB_HDRC_HCD is defined
      
      	- glue layer driver always get musb instance via platform_get_drvdata.
      
      The patch fixes the issue by always puting musb into drv data
      of musb platform device, which is doable even the platform device
      is a host controller device.
      
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: Sergei Shtylyov <sshtylyov@mvista.com>
      Signed-off-by: NMing Lei <tom.leiming@gmail.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      456bb169
  14. 28 1月, 2011 1 次提交
  15. 17 12月, 2010 1 次提交
  16. 11 12月, 2010 1 次提交
  17. 10 12月, 2010 10 次提交
  18. 07 12月, 2010 1 次提交
    • F
      usb: musb: make all glue layer export struct musb_platform_ops · 743411b3
      Felipe Balbi 提交于
      preparing to a big refactor on musb code. We need
      to be able to compile in all glue layers (or at
      least all ARM-based ones) together and have a
      working binary.
      
      While preparing for that, we move every glue
      layer to export only one symbol, which is
      a struct musb_platform_ops, and make all
      other functions static.
      
      Later patches will come to allow for compiling
      all glue layers together and have a working
      binary.
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      743411b3
  19. 01 12月, 2010 2 次提交
  20. 22 11月, 2010 1 次提交
    • A
      usb: musb: do not use dma for control transfers · 07a8cdd2
      Anand Gadiyar 提交于
      The Inventra DMA engine used with the MUSB controller in many
      SoCs cannot use DMA for control transfers on EP0, but can use
      DMA for all other transfers.
      
      The USB core maps urbs for DMA if hcd->self.uses_dma is true.
      (hcd->self.uses_dma is true for MUSB as well).
      
      Split the uses_dma flag into two - one that says if the
      controller needs to use PIO for control transfers, and
      another which says if the controller uses DMA (for all
      other transfers).
      
      Also, populate this flag for all MUSB by default.
      
      (Tested on OMAP3 and OMAP4 boards, with EHCI and MUSB HCDs
      simultaneously in use).
      Signed-off-by: NMaulik Mankad <x0082077@ti.com>
      Signed-off-by: NSantosh Shilimkar <santosh.shilimkar@ti.com>
      Signed-off-by: NAnand Gadiyar <gadiyar@ti.com>
      Cc: Oliver Neukum <oliver@neukum.org>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: Praveena NADAHALLY <praveen.nadahally@stericsson.com>
      Cc: Ajay Kumar Gupta <ajay.gupta@ti.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      07a8cdd2
  21. 05 11月, 2010 4 次提交
    • H
      usb: musb: Fix handling of spurious SESSREQ · 19aab56c
      Heikki Krogerus 提交于
      Rely on VBUS being valid on top off B device.
      Signed-off-by: NHeikki Krogerus <heikki.krogerus@nokia.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      19aab56c
    • M
      usb: musb: fix kernel oops when loading musb_hdrc module for the 2nd time · b2120914
      Ming Lei 提交于
      musb driver still may write MUSB_DEVCTL register after clock is disabled
      in musb_platform_exit, which may cause the kernel oops[1] when musb_hdrc
      module is loaded for the 2nd time.
      
      The patch fixes the kernel oops in this case.
      
      [1] kernel oops when loading musb_hdrc module for the 2nd time
      
      [   93.380279] musb_hdrc: version 6.0, musb-dma, otg (peripheral+host), debug=5
      [   93.387847] bus: 'platform': add driver musb_hdrc
      [   93.388153] bus: 'platform': driver_probe_device: matched device musb_hdrc with driver musb_hdrc
      [   93.388183] bus: 'platform': really_probe: probing driver musb_hdrc with device musb_hdrc
      [   93.405090] HS USB OTG: revision 0x33, sysconfig 0x2010, sysstatus 0x1, intrfsel 0x1, simenable  0x0
      [   93.405364] musb_hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
      [   93.405395] musb_hdrc: MHDRC RTL version 1.400
      [   93.405426] musb_hdrc: setup fifo_mode 3
      [   93.405456] musb_hdrc: 7/31 max ep, 3648/16384 memory
      [   93.405487] musb_core_init 1524: musb_hdrc: hw_ep 0shared, max 64
      [   93.405487] musb_core_init 1524: musb_hdrc: hw_ep 1tx, doublebuffer, max 512
      [   93.405517] musb_core_init 1533: musb_hdrc: hw_ep 1rx, doublebuffer, max 512
      [   93.405548] musb_core_init 1524: musb_hdrc: hw_ep 2tx, max 512
      [   93.405578] musb_core_init 1533: musb_hdrc: hw_ep 2rx, max 512
      [   93.405578] musb_core_init 1524: musb_hdrc: hw_ep 3shared, max 256
      [   93.405609] musb_core_init 1524: musb_hdrc: hw_ep 4shared, max 256
      [   93.405853] musb_platform_try_idle 133: b_idle inactive, for idle timer for 7 ms
      [   93.405944] device: 'gadget': device_add
      [   93.406921] PM: Adding info for No Bus:gadget
      [   93.406951] musb_init_controller 2136: OTG mode, status 0, dev80
      [   93.407379] musb_do_idle 51: musb_do_idle: state=1
      [   93.408233] musb_hdrc musb_hdrc: USB OTG mode controller at fa0ab000 using DMA, IRQ 92
      [   93.416656] driver: 'musb_hdrc': driver_bound: bound to device 'musb_hdrc'
      [   93.416687] bus: 'platform': really_probe: bound device musb_hdrc to driver musb_hdrc
      [  124.486938] bus: 'platform': remove driver musb_hdrc
      [  124.490509] twl4030_usb twl4030_usb: twl4030_phy_suspend
      [  124.491424] device: 'gadget': device_unregister
      [  124.491424] PM: Removing info for No Bus:gadget
      [  124.495269]  gadget: musb_gadget_release
      [  124.498992] driver: 'musb_hdrc': driver_release
      [  129.569366] musb_hdrc: version 6.0, musb-dma, otg (peripheral+host), debug=5
      [  129.576934] bus: 'platform': add driver musb_hdrc
      [  129.577209] bus: 'platform': driver_probe_device: matched device musb_hdrc with driver musb_hdrc
      [  129.577239] bus: 'platform': really_probe: probing driver musb_hdrc with device musb_hdrc
      [  129.592651] twl4030_usb twl4030_usb: twl4030_phy_resume
      [  129.592681] Unhandled fault: external abort on non-linefetch (0x1028) at 0xfa0ab404
      [  129.600830] Internal error: : 1028 [#1]
      [  129.604858] last sysfs file: /sys/devices/platform/i2c_omap.3/i2c-3/i2c-dev/i2c-3/dev
      [  129.613067] Modules linked in: musb_hdrc(+) [last unloaded: musb_hdrc]
      [  129.619964] CPU: 0    Not tainted  (2.6.36-next-20101021+ #372)
      [  129.626281] PC is at musb_platform_init+0xb0/0x1c8 [musb_hdrc]
      [  129.632415] LR is at mark_held_locks+0x64/0x94
      [  129.637084] pc : [<bf032198>]    lr : [<c00ad7c4>]    psr: 20000013
      [  129.637084] sp : c6d5fcb0  ip : c6d5fc38  fp : c6d5fcd4
      [  129.649139] r10: c6e72180  r9 : fa0ab000  r8 : c05612e8
      [  129.654602] r7 : 0000005c  r6 : c0559cc8  r5 : c6e72180  r4 : c0561548
      [  129.661468] r3 : 04d60047  r2 : fa0ab000  r1 : c07169d8  r0 : 00000000
      [  129.668304] Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
      [  129.675811] Control: 10c5387d  Table: 86e4c019  DAC: 00000015
      [  129.681823] Process insmod (pid: 554, stack limit = 0xc6d5e2f0)
      [  129.688049] Stack: (0xc6d5fcb0 to 0xc6d60000)
      [  129.692626] fca0:                                     fa0ab000 c0555c54 c6d5fcd4 c0561548
      [  129.701202] fcc0: 00000003 c05612e0 c6d5fe04 c6d5fcd8 bf03140c bf0320f4 c6d5fd9c c6d5fce8
      [  129.709808] fce0: c015cb94 c041448c c06d9d10 ffffffff c6d5fd14 c6d5fd00 c00adbec c6d5fd40
      [  129.718383] fd00: c015d478 c6d5fdb0 c6d5fd24 c00a9d18 c6d5e000 60000013 bf02a4ac c05612bc
      [  129.726989] fd20: c0414fb4 c00a9cf0 c6d5fd54 c6d5fd38 c015bbdc c0244280 c6e8b7b0 c7929330
      [  129.735565] fd40: c6d5fdb0 c6d5fdb0 c6d5fd7c c6e7227c c015c010 c015bb90 c015c2ac c6d5fdb0
      [  129.744171] fd60: c7929330 c6d5fdb0 c7929330 c6e8b7b0 c6d5fd9c 00000000 c7929330 c6e8b7b0
      [  129.752746] fd80: c6d5fdb0 00000000 00000001 00000000 c6d5fde4 c6d5fda0 c015d478 c015cb74
      [  129.761322] fda0: c056138c 00000000 c6d5fdcc c6d5fdb8 c7929330 00000000 c056138c c05612e8
      [  129.769927] fdc0: 00000000 c05612f0 c0c5d62c c06f6e00 c73217c0 00000000 c6d5fdf4 c05612e8
      [  129.778503] fde0: c05612e8 bf02a2e4 c0c5d62c c06f6e00 c73217c0 00000000 c6d5fe14 c6d5fe08
      [  129.787109] fe00: c029a398 bf0311c8 c6d5fe4c c6d5fe18 c0299120 c029a384 c7919140 22222222
      [  129.795684] fe20: c6d5fe4c c05612e8 c056131c bf02a2e4 c0299278 c06f6e00 c73217c0 00000000
      [  129.804290] fe40: c6d5fe6c c6d5fe50 c0299314 c0299020 00000000 c6d5fe70 bf02a2e4 c0299278
      [  129.812866] fe60: c6d5fe94 c6d5fe70 c02987d4 c0299284 c7825060 c78c6618 00000000 bf02a2e4
      [  129.821441] fe80: c06e4c98 00000000 c6d5fea4 c6d5fe98 c0298ea4 c0298778 c6d5fedc c6d5fea8
      [  129.830047] fea0: c0297f84 c0298e8c bf02716c 000b9008 bf02a2e4 bf02a2d0 000b9008 bf02a2e4
      [  129.838623] fec0: 00000000 c06f6e00 bf031000 00000000 c6d5fefc c6d5fee0 c0299614 c0297ec0
      [  129.847229] fee0: bf02a2d0 000b9008 bf02a388 00000000 c6d5ff0c c6d5ff00 c029a868 c02995a8
      [  129.855804] ff00: c6d5ff24 c6d5ff10 c029a88c c029a818 0010281c 000b9008 c6d5ff34 c6d5ff28
      [  129.864410] ff20: bf03104c c029a878 c6d5ff7c c6d5ff38 c00463dc bf03100c 00000000 00000000
      [  129.872985] ff40: 00000000 0010281c 000b9008 bf02a388 00000000 0010281c 000b9008 bf02a388
      [  129.881591] ff60: 00000000 c00521c8 c6d5e000 00000000 c6d5ffa4 c6d5ff80 c00bb9b8 c00463ac
      [  129.890167] ff80: c00adc88 c00ada68 00097e8e bebbfcf4 0010281c 00000080 00000000 c6d5ffa8
      [  129.898742] ffa0: c0052000 c00bb908 00097e8e bebbfcf4 402c9008 0010281c 000b9008 bebbfe5a
      [  129.907348] ffc0: 00097e8e bebbfcf4 0010281c 00000080 00000014 bebbfcf4 bebbfe06 0000005b
      [  129.915924] ffe0: bebbf9a0 bebbf990 0001a108 40263ec0 60000010 402c9008 011b0000 0000007c
      [  129.924499] Backtrace:
      [  129.927185] [<bf0320e8>] (musb_platform_init+0x0/0x1c8 [musb_hdrc]) from [<bf03140c>] (musb_probe+0x250/0xf2c [musb_hdrc])
      [  129.938781]  r6:c05612e0 r5:00000003 r4:c0561548
      [  129.943695] [<bf0311bc>] (musb_probe+0x0/0xf2c [musb_hdrc]) from [<c029a398>] (platform_drv_probe+0x20/0x24)
      [  129.954040] [<c029a378>] (platform_drv_probe+0x0/0x24) from [<c0299120>] (driver_probe_device+0x10c/0x264)
      [  129.964172] [<c0299014>] (driver_probe_device+0x0/0x264) from [<c0299314>] (__driver_attach+0x9c/0xa0)
      [  129.973968] [<c0299278>] (__driver_attach+0x0/0xa0) from [<c02987d4>] (bus_for_each_dev+0x68/0x94)
      [  129.983367]  r7:c0299278 r6:bf02a2e4 r5:c6d5fe70 r4:00000000
      [  129.989349] [<c029876c>] (bus_for_each_dev+0x0/0x94) from [<c0298ea4>] (driver_attach+0x24/0x28)
      [  129.998565]  r7:00000000 r6:c06e4c98 r5:bf02a2e4 r4:00000000
      [  130.004547] [<c0298e80>] (driver_attach+0x0/0x28) from [<c0297f84>] (bus_add_driver+0xd0/0x274)
      [  130.013671] [<c0297eb4>] (bus_add_driver+0x0/0x274) from [<c0299614>] (driver_register+0x78/0x158)
      [  130.023101] [<c029959c>] (driver_register+0x0/0x158) from [<c029a868>] (platform_driver_register+0x5c/0x60)
      [  130.033325]  r7:00000000 r6:bf02a388 r5:000b9008 r4:bf02a2d0
      [  130.039276] [<c029a80c>] (platform_driver_register+0x0/0x60) from [<c029a88c>] (platform_driver_probe+0x20/0xa8)
      [  130.050018] [<c029a86c>] (platform_driver_probe+0x0/0xa8) from [<bf03104c>] (musb_init+0x4c/0x54 [musb_hdrc])
      [  130.060424]  r5:000b9008 r4:0010281c
      [  130.064239] [<bf031000>] (musb_init+0x0/0x54 [musb_hdrc]) from [<c00463dc>] (do_one_initcall+0x3c/0x1c0)
      [  130.074218] [<c00463a0>] (do_one_initcall+0x0/0x1c0) from [<c00bb9b8>] (sys_init_module+0xbc/0x1d0)
      [  130.083709] [<c00bb8fc>] (sys_init_module+0x0/0x1d0) from [<c0052000>] (ret_fast_syscall+0x0/0x3c)
      [  130.093109]  r7:00000080 r6:0010281c r5:bebbfcf4 r4:00097e8e
      [  130.099090] Code: 0a000046 e3a01001 e12fff33 e59520e4 (e5923404)
      [  130.105621] ---[ end trace 1d0bd69deb79164d ]---
      
      Cc: Ajay Kumar Gupta <ajay.gupta@ti.com>
      Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
      Cc: Anand Gadiyar <gadiyar@ti.com>
      Cc: stable@kernel.org
      Signed-off-by: NMing Lei <tom.leiming@gmail.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      b2120914
    • B
      USB: musb: pm: don't rely fully on clock support · 32d5dc95
      Bob Liu 提交于
      Since clock support is optional across processors, don't make the whole
      musb pm paths depend upon it.  Just conditionalize the clock accesses.
      Signed-off-by: NBob Liu <lliubbo@gmail.com>
      Signed-off-by: NMike Frysinger <vapier@gentoo.org>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      32d5dc95
    • G
      usb: musb: don't leave PHY enabled on shutdown() · 120d074c
      Grazvydas Ignotas 提交于
      Some actions like musb_platform_exit are only performed on module
      removal and not on shutdown, which results in PHY being left enabled
      on reboot at least. This is sometimes causing strange failures after
      reboot (observed on OMAP3 pandora board), when DEVCTL does not report
      VBUS state correctly due to unknown reasons (possibly because of
      communication issues between musb IP and PHY). Running
      musb_platform_exit before reset seems to resolve that issue.
      
      Move some exit code from musb_remove() to musb_shutdown() so that it
      is performed on both module removal and shutdown/reset. Also convert
      the host check so that it doesn't need #ifdef.
      Signed-off-by: NGrazvydas Ignotas <notasas@gmail.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      120d074c