Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1452509 > unrolled thread
| Started by | Andreas Kemnade <andreas@kemnade.info> |
|---|---|
| First post | 2016-07-29 20:20 +0200 |
| Last post | 2016-08-03 17:20 +0200 |
| Articles | 5 — 2 participants |
Back to article view | Back to linux.kernel
[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
| From | Andreas Kemnade <andreas@kemnade.info> |
|---|---|
| Date | 2016-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]
| From | Tony Lindgren <tony@atomide.com> |
|---|---|
| Date | 2016-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]
| From | Andreas Kemnade <andreas@kemnade.info> |
|---|---|
| Date | 2016-08-02 18:20 +0200 |
| Subject | Re: [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]
| From | Tony Lindgren <tony@atomide.com> |
|---|---|
| Date | 2016-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]
| From | Andreas Kemnade <andreas@kemnade.info> |
|---|---|
| Date | 2016-08-03 17:20 +0200 |
| Subject | Re: [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