Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1452509 > unrolled thread

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

Started byAndreas Kemnade <andreas@kemnade.info>
First post2016-07-29 20:20 +0200
Last post2016-08-03 17:20 +0200
Articles 5 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] musb: omap2430: do not assume balanced enable()/disable() Andreas Kemnade <andreas@kemnade.info> - 2016-07-29 20:20 +0200
    Re: [PATCH] musb: omap2430: do not assume balanced enable()/disable() Tony Lindgren <tony@atomide.com> - 2016-08-02 12:50 +0200
      Re: [PATCH] musb: omap2430: do not assume balanced  enable()/disable() Andreas Kemnade <andreas@kemnade.info> - 2016-08-02 18:20 +0200
        Re: [PATCH] musb: omap2430: do not assume balanced enable()/disable() Tony Lindgren <tony@atomide.com> - 2016-08-03 09:30 +0200
          Re: [PATCH] musb: omap2430: do not assume balanced  enable()/disable() Andreas Kemnade <andreas@kemnade.info> - 2016-08-03 17:20 +0200

#1452509 — [PATCH] musb: omap2430: do not assume balanced enable()/disable()

FromAndreas Kemnade <andreas@kemnade.info>
Date2016-07-29 20:20 +0200
Subject[PATCH] musb: omap2430: do not assume balanced enable()/disable()
Message-ID<s0ky6-8fT-15@gated-at.bofh.it>
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

[toc] | [next] | [standalone]


#1453736

FromTony Lindgren <tony@atomide.com>
Date2016-08-02 12:50 +0200
Message-ID<s1FqO-3dN-15@gated-at.bofh.it>
In reply to#1452509
* 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..

> The patch prevents phy_power_off() from being called when
> it is already off.

OK

Regards,

Tony

[toc] | [prev] | [next] | [standalone]


#1454917 — Re: [PATCH] musb: omap2430: do not assume balanced enable()/disable()

FromAndreas Kemnade <andreas@kemnade.info>
Date2016-08-02 18:20 +0200
SubjectRe: [PATCH] musb: omap2430: do not assume balanced enable()/disable()
Message-ID<s1KAb-6OZ-83@gated-at.bofh.it>
In reply to#1453736

[Multipart message — attachments visible in raw view] — view raw

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

[toc] | [prev] | [next] | [standalone]


#1455658

FromTony Lindgren <tony@atomide.com>
Date2016-08-03 09:30 +0200
Message-ID<s1YMO-7Zf-19@gated-at.bofh.it>
In reply to#1454917
* 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.

> 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

[toc] | [prev] | [next] | [standalone]


#1455861 — Re: [PATCH] musb: omap2430: do not assume balanced enable()/disable()

FromAndreas Kemnade <andreas@kemnade.info>
Date2016-08-03 17:20 +0200
SubjectRe: [PATCH] musb: omap2430: do not assume balanced enable()/disable()
Message-ID<s267E-4aR-41@gated-at.bofh.it>
In reply to#1455658

[Multipart message — attachments visible in raw view] — view raw

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

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web