* [PATCH] musb: omap2430: do not assume balanced enable()/disable() @ 2016-07-29 17:42 Andreas Kemnade [not found] ` <1469814151-2571-1-git-send-email-andreas-cLv4Z9ELZ06ZuzBka8ofvg@public.gmane.org> 0 siblings, 1 reply; 5+ messages in thread From: Andreas Kemnade @ 2016-07-29 17:42 UTC (permalink / raw) To: Bin Liu, Greg Kroah-Hartman, linux-usb, linux-omap, linux-kernel, letux-kernel Cc: Andreas Kemnade The code assumes that omap2430_musb_enable() and omap2430_musb_disable() is called in a balanced way. The That fact is broken by the fact that musb_init_controller() calls musb_platform_disable() to switch from unknown state to off state. That means that phy_power_off() is called first so that phy->power_count gets -1 and the phy is not enabled on phy_power_on(). In the probably common case of using the phy_twl4030, that prevents also charging the battery and so makes further kernel debugging hard. The patch prevents phy_power_off() from being called when it is already off. Signed-off-by: Andreas Kemnade <andreas@kemnade.info> --- drivers/usb/musb/omap2430.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c index aecb934..c7ae117 100644 --- a/drivers/usb/musb/omap2430.c +++ b/drivers/usb/musb/omap2430.c @@ -415,9 +415,10 @@ static void omap2430_musb_disable(struct musb *musb) struct device *dev = musb->controller; struct omap2430_glue *glue = dev_get_drvdata(dev->parent); - if (!WARN_ON(!musb->phy)) - phy_power_off(musb->phy); - + if (glue->enabled) { + if (!WARN_ON(!musb->phy)) + phy_power_off(musb->phy); + } if (glue->status != MUSB_UNKNOWN) omap_control_usb_set_mode(glue->control_otghs, USB_MODE_DISCONNECT); -- 2.1.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
[parent not found: <1469814151-2571-1-git-send-email-andreas-cLv4Z9ELZ06ZuzBka8ofvg@public.gmane.org>]
* Re: [PATCH] musb: omap2430: do not assume balanced enable()/disable() [not found] ` <1469814151-2571-1-git-send-email-andreas-cLv4Z9ELZ06ZuzBka8ofvg@public.gmane.org> @ 2016-08-02 10:33 ` Tony Lindgren 2016-08-02 15:01 ` Andreas Kemnade 0 siblings, 1 reply; 5+ messages in thread From: Tony Lindgren @ 2016-08-02 10:33 UTC (permalink / raw) To: Andreas Kemnade Cc: Bin Liu, Greg Kroah-Hartman, linux-usb-u79uwXL29TY76Z2rM5mHXA, linux-omap-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, letux-kernel-S0jZdbWzriLCfDggNXIi3w * Andreas Kemnade <andreas-cLv4Z9ELZ06ZuzBka8ofvg@public.gmane.org> [160729 11:14]: > The code assumes that omap2430_musb_enable() and > omap2430_musb_disable() is called in a balanced way. The > That fact is broken by the fact that musb_init_controller() calls > musb_platform_disable() to switch from unknown state to off state. OK, some spelling issues with the above paragraph though :) > That means that phy_power_off() is called first so that > phy->power_count gets -1 and the phy is not enabled on phy_power_on(). > In the probably common case of using the phy_twl4030, that > prevents also charging the battery and so makes further > kernel debugging hard. Is this with v4.7 kernel? Also, care to describe how you hit this and on which hardware? Just wondering.. > The patch prevents phy_power_off() from being called when > it is already off. OK Regards, Tony -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] musb: omap2430: do not assume balanced enable()/disable() 2016-08-02 10:33 ` Tony Lindgren @ 2016-08-02 15:01 ` Andreas Kemnade 2016-08-03 6:30 ` Tony Lindgren 0 siblings, 1 reply; 5+ messages in thread From: Andreas Kemnade @ 2016-08-02 15:01 UTC (permalink / raw) To: Tony Lindgren Cc: Bin Liu, Greg Kroah-Hartman, linux-usb, linux-omap, linux-kernel, letux-kernel [-- Attachment #1: Type: text/plain, Size: 1310 bytes --] On Tue, 2 Aug 2016 03:33:34 -0700 Tony Lindgren <tony@atomide.com> wrote: > * Andreas Kemnade <andreas@kemnade.info> [160729 11:14]: > > The code assumes that omap2430_musb_enable() and > > omap2430_musb_disable() is called in a balanced way. The > > That fact is broken by the fact that musb_init_controller() calls > > musb_platform_disable() to switch from unknown state to off state. > > OK, some spelling issues with the above paragraph though :) > > > That means that phy_power_off() is called first so that > > phy->power_count gets -1 and the phy is not enabled on > > phy_power_on(). In the probably common case of using the > > phy_twl4030, that prevents also charging the battery and so makes > > further kernel debugging hard. > > Is this with v4.7 kernel? Also, care to describe how you hit this > and on which hardware? Just wondering.. I got this error on the Openphoenux GTA04 phone. It has a DM3730 SoC and a TPS65950 companion. Severe charging problems were already observed with the 4.4rc1. I do not know if that already was exactly *this* problem. I have debugged and patched the v4.7 kernel. How I hit the problem: Just boot an that device and try to charge via usb. Should I resubmit the patch with an extended commit message? Regards, Andreas Kemnade [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] musb: omap2430: do not assume balanced enable()/disable() 2016-08-02 15:01 ` Andreas Kemnade @ 2016-08-03 6:30 ` Tony Lindgren 2016-08-03 14:54 ` Andreas Kemnade 0 siblings, 1 reply; 5+ messages in thread From: Tony Lindgren @ 2016-08-03 6:30 UTC (permalink / raw) To: Andreas Kemnade Cc: Bin Liu, Greg Kroah-Hartman, linux-usb-u79uwXL29TY76Z2rM5mHXA, linux-omap-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, letux-kernel-S0jZdbWzriLCfDggNXIi3w * Andreas Kemnade <andreas-cLv4Z9ELZ06ZuzBka8ofvg@public.gmane.org> [160802 08:14]: > On Tue, 2 Aug 2016 03:33:34 -0700 > Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org> wrote: > > > * Andreas Kemnade <andreas-cLv4Z9ELZ06ZuzBka8ofvg@public.gmane.org> [160729 11:14]: > > > The code assumes that omap2430_musb_enable() and > > > omap2430_musb_disable() is called in a balanced way. The > > > That fact is broken by the fact that musb_init_controller() calls > > > musb_platform_disable() to switch from unknown state to off state. > > > > OK, some spelling issues with the above paragraph though :) > > > > > That means that phy_power_off() is called first so that > > > phy->power_count gets -1 and the phy is not enabled on > > > phy_power_on(). In the probably common case of using the > > > phy_twl4030, that prevents also charging the battery and so makes > > > further kernel debugging hard. > > > > Is this with v4.7 kernel? Also, care to describe how you hit this > > and on which hardware? Just wondering.. > > I got this error on the Openphoenux GTA04 phone. It has a DM3730 > SoC and a TPS65950 companion. Severe charging problems were already > observed with the 4.4rc1. I do not know if that already was exactly > *this* problem. I have debugged and patched the v4.7 kernel. OK thanks for the info. > How I hit the problem: Just boot an that device and try to charge > via usb. OK so it's the twl4030 charger then I guess. > Should I resubmit the patch with an extended commit message? Well yeah it might be worth describing that it's the twl4030 charger that otherwise does not work properly. Regards, Tony -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] musb: omap2430: do not assume balanced enable()/disable() 2016-08-03 6:30 ` Tony Lindgren @ 2016-08-03 14:54 ` Andreas Kemnade 0 siblings, 0 replies; 5+ messages in thread From: Andreas Kemnade @ 2016-08-03 14:54 UTC (permalink / raw) To: Tony Lindgren Cc: Bin Liu, Greg Kroah-Hartman, linux-usb, linux-omap, linux-kernel, letux-kernel [-- Attachment #1: Type: text/plain, Size: 1919 bytes --] On Tue, 2 Aug 2016 23:30:16 -0700 Tony Lindgren <tony@atomide.com> wrote: > * Andreas Kemnade <andreas@kemnade.info> [160802 08:14]: > > On Tue, 2 Aug 2016 03:33:34 -0700 > > Tony Lindgren <tony@atomide.com> wrote: > > > > > * Andreas Kemnade <andreas@kemnade.info> [160729 11:14]: > > > > The code assumes that omap2430_musb_enable() and > > > > omap2430_musb_disable() is called in a balanced way. The > > > > That fact is broken by the fact that musb_init_controller() > > > > calls musb_platform_disable() to switch from unknown state to > > > > off state. > > > > > > OK, some spelling issues with the above paragraph though :) > > > > > > > That means that phy_power_off() is called first so that > > > > phy->power_count gets -1 and the phy is not enabled on > > > > phy_power_on(). In the probably common case of using the > > > > phy_twl4030, that prevents also charging the battery and so > > > > makes further kernel debugging hard. > > > > > > Is this with v4.7 kernel? Also, care to describe how you hit this > > > and on which hardware? Just wondering.. > > > > I got this error on the Openphoenux GTA04 phone. It has a DM3730 > > SoC and a TPS65950 companion. Severe charging problems were already > > observed with the 4.4rc1. I do not know if that already was exactly > > *this* problem. I have debugged and patched the v4.7 kernel. > > OK thanks for the info. > > > How I hit the problem: Just boot an that device and try to charge > > via usb. > > OK so it's the twl4030 charger then I guess. > yes, besides from causing usb gadget problems, it has side effect towards the twl4030 charger. > > Should I resubmit the patch with an extended commit message? > > Well yeah it might be worth describing that it's the twl4030 > charger that otherwise does not work properly. > Ok, will resend a better commit message. Regards, Andreas Kemnade [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-08-03 14:54 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-07-29 17:42 [PATCH] musb: omap2430: do not assume balanced enable()/disable() Andreas Kemnade [not found] ` <1469814151-2571-1-git-send-email-andreas-cLv4Z9ELZ06ZuzBka8ofvg@public.gmane.org> 2016-08-02 10:33 ` Tony Lindgren 2016-08-02 15:01 ` Andreas Kemnade 2016-08-03 6:30 ` Tony Lindgren 2016-08-03 14:54 ` Andreas Kemnade
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).