[Letux-kernel] [PATCH v2] musb: omap2430: do not assume balanced enable()/disable()

Andreas Kemnade andreas at kemnade.info
Thu Aug 4 18:31:29 CEST 2016


On Thu, 4 Aug 2016 07:29:19 -0700
Tony Lindgren <tony at atomide.com> wrote:

> Hi,
> * H. Nikolaus Schaller <hns at goldelico.com> [160803 10:07]:
> > All this prevents detection of cable plugin-events and VBUS
> > measurement and setting OTG_EN before charging is attempted.
> So I gave this patch a try but it now blocks all deeper SoC idle
> states as the PHY stays active. I think the real fix is to make
> sure the charger behaves independent of the USB PHY state. So
> probably this needs to be fixed in phy-twl4030-usb.c and
> twl4030_charger.c instead. Now it sounds like we're also shutting
> down the charger with the USB PHY.
Then there is another power management issue. The patch is not about
fixing every pm issue in musb. That is not only about charging, it is
about enabling/disabling() the phy unbalanced:
Again what happens here without the patch:

musb will be initialized:
   calls phy_power_off(), phy will be disabled,
	phy->power_count goes to -1.

gadget driver is loaded.
musb_start() is called
    omap2430_musb_enable() is called
	calls phy_power_on(),
	phy->power_count goes to 0,
	phy is not powered on because power_count != 1
-> no gadget working, no charging.


More information about the Letux-kernel mailing list