Re: [v2] musb: omap2430: do not assume balanced enable()/disable()

From: Tony Lindgren
Date: Fri Sep 09 2016 - 16:51:17 EST


* Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> [160909 13:21]:
> On Friday 09 Sep 2016 13:08:03 Tony Lindgren wrote:
> > This patch has a side effect of fixing the issue by breaking PM
> > runtime, not a good fix as discussed.
>
> How exactly is it worse breaking runtime PM than breaking USB gadget
> completely ? :-)

Yeah sorry to break it, I obviously did not test it on all platforms :(
I'm mostly using omap3 with the 2430 glue layer and am335x for the
dsps glue layer and did not know that omap4 is broken. I guess I've
recently just used the EHCI ports on panda.

> The issue here is that the .disable() platform operation is called by musb
> with the PHY already powered off, leading to the PHY power reference count
> becoming negative. The next call to the .enable() operation restores the
> reference count to 0 without enabling the PHY.

Well for the phy-twl4030-usb.c, AFAIK the right fix is to fix the PHY
driver as done in "[PATCH v2] phy-twl4030-usb: initialize charging-related
stuff via pm_runtime". I suspect something similar is happening here
also with the omap4 legacy phy.

> Feel free to send me a better fix and I will test it.

Yeah will do, hang on.

Tony