From: Andreas Kemnade <andreas@kemnade.info>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Tony Lindgren <tony@atomide.com>, Bin Liu <b-liu@ti.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-usb@vger.kernel.org, linux-omap@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [v2] musb: omap2430: do not assume balanced enable()/disable()
Date: Fri, 9 Sep 2016 22:40:29 +0200 [thread overview]
Message-ID: <20160909224029.57db61f7@aktux> (raw)
In-Reply-To: <1538976.gm2HNISj8k@avalon>
On Fri, 09 Sep 2016 23:21:50 +0300
Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote:
> Hi Tony,
>
> On Friday 09 Sep 2016 13:08:03 Tony Lindgren wrote:
> > * Laurent Pinchart <laurent.pinchart@ideasonboard.com> [160909
> > 12:27]:
> > > On Wednesday 03 Aug 2016 17:38:51 Andreas Kemnade wrote:
> > >> The code assumes that omap2430_musb_enable() and
> > >> omap2430_musb_disable() are called in a balanced way.
> > >> That fact is broken by the fact that musb_init_controller() calls
> > >> musb_platform_disable() to switch from unknown state to off state
> > >> on initialisation.
> > >>
> > >> 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(). So when usb gadget is started the phy is not
> > >> powered on. Depending on the phy used that caused various
> > >> problems. Besides of causing usb problems, that can also have
> > >> side effects.
> > >>
> > >> In the case of using the phy_twl4030, that prevents also charging
> > >> the battery via usb (using twl4030_charger) and so makes further
> > >> kernel debugging hard.
> > >> The problem was seen with 4.7 on an openphoenux gta04. It has a
> > >> DM3730 SoC and a TPS65950 companion. phy->power never became 1
> > >> and so the usb did get powered on.
> > >>
> > >> The patch prevents phy_power_off() from being called when
> > >> it is already off.
> > >>
> > >> Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
> > >
> > > This fixes USB gadget operation on the Panda board.
> > >
> > > Fixes: a83e17d0f73b ("usb: musb: Improve PM runtime and phy
> > > handling for 2430 glue layer")
> > > Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> >
> > 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 ? :-)
>
Does it still break with my phy-twl4030 fixes? At least on gta04,
they fix real problems and hide the musb problem I tried to fix with
this patch.
https://patchwork.kernel.org/patch/9292097/
https://patchwork.kernel.org/patch/9298447/
> 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.
>
> Feel free to send me a better fix and I will test it.
>
The patch has to be reworked on top of the patch series:
Implement PM runtime for musb-core based on session bit
Regards,
Andreas Kemnade
next prev parent reply other threads:[~2016-09-09 20:40 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-03 15:38 [PATCH v2] musb: omap2430: do not assume balanced enable()/disable() Andreas Kemnade
2016-08-03 17:07 ` [Letux-kernel] " H. Nikolaus Schaller
2016-08-04 14:29 ` Tony Lindgren
2016-08-04 14:49 ` H. Nikolaus Schaller
[not found] ` <3EF398D0-6B90-46B6-83AE-EAE065A68890-xXXSsgcRVICgSpxsJD1C4w@public.gmane.org>
2016-08-04 15:01 ` Tony Lindgren
2016-08-04 20:59 ` Andreas Kemnade
2016-08-04 16:31 ` Andreas Kemnade
2016-08-04 16:44 ` Andreas Kemnade
2016-08-05 13:55 ` Tony Lindgren
2016-08-05 15:20 ` Andreas Kemnade
2016-08-06 6:21 ` Tony Lindgren
2016-08-09 5:35 ` Andreas Kemnade
2016-08-11 18:25 ` Tony Lindgren
2016-09-09 19:27 ` [v2] " Laurent Pinchart
2016-09-09 20:08 ` Tony Lindgren
2016-09-09 20:21 ` Laurent Pinchart
2016-09-09 20:40 ` Andreas Kemnade [this message]
2016-09-09 20:55 ` Tony Lindgren
2016-09-09 20:51 ` Tony Lindgren
2016-09-09 21:22 ` Andreas Kemnade
2016-09-09 21:33 ` Tony Lindgren
2016-09-09 23:40 ` Tony Lindgren
2016-09-10 11:27 ` Andreas Kemnade
2016-09-10 13:07 ` Tony Lindgren
[not found] ` <20160910130749.5qk37gwfidejdqlm-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2016-09-11 9:06 ` Laurent Pinchart
2016-09-12 14:35 ` Tony Lindgren
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160909224029.57db61f7@aktux \
--to=andreas@kemnade.info \
--cc=b-liu@ti.com \
--cc=gregkh@linuxfoundation.org \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).