]> git.baikalelectronics.ru Git - kernel.git/commit
usb: musb: omap2430: Fix regression caused by driver core change
authorTony Lindgren <tony@atomide.com>
Wed, 28 Oct 2015 17:16:04 +0000 (10:16 -0700)
committerTony Lindgren <tony@atomide.com>
Wed, 28 Oct 2015 17:16:04 +0000 (10:16 -0700)
commitadf303971b7e9ad3b2881ac3e9de47c3af6001a9
tree9375149660aed82c465c47313082ff98c33df3e1
parent4afedbf5e65d07d912835e6a99c5fd45e35c8d51
usb: musb: omap2430: Fix regression caused by driver core change

Commit 055a8e55eba9 ("Driver core: wakeup the parent device before trying
probe") started automatically ensuring the parent device is enabled when
the child gets probed.

This however caused a regression for MUSB omap2430 interface as the
runtime PM for the parent device needs the child initialized to access
the MUSB hardware registers.

Let's delay the enabling of PM runtime for the parent until the child
has been properly initialized as suggested in an earlier patch by
Grygorii Strashko <grygorii.strashko@ti.com>.

In addition to delaying pm_runtime_enable, we now also need to make sure
the parent is enabled during omap2430_musb_init. We also want to propagate
an error from omap2430_runtime_resume if struct musb is not initialized.

Note that we use pm_runtime_put_noidle here for both the child and parent
to prevent an extra runtime_suspend/resume cycle.

Let's also add some comments to avoid confusion between the
two different devices.

Fixes: 055a8e55eba9 ("Driver core: wakeup the parent device before
trying probe")
Suggested-by: Grygorii Strashko <grygorii.strashko@ti.com>
Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com>
Acked-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
drivers/usb/musb/omap2430.c