All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tony Lindgren <tony@atomide.com>
To: Bin Liu <b-liu@ti.com>,
	Moreno Bartalucci <moreno.bartalucci@tecnorama.it>,
	Lars Melin <larsm17@gmail.com>,
	"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Alessio Igor Bogani <abogani@kernel.org>
Subject: Re: [PATCH] usb-musb: keep VBUS on when device is disconnected
Date: Thu, 11 May 2017 11:55:28 -0700	[thread overview]
Message-ID: <20170511185528.GW3489@atomide.com> (raw)
In-Reply-To: <20170511185038.GE7154@uda0271908>

* Bin Liu <b-liu@ti.com> [170511 11:53]:
> On Mon, Mar 27, 2017 at 10:55:37AM -0700, Tony Lindgren wrote:
> > * Bin Liu <b-liu@ti.com> [170327 10:17]:
> > > On Mon, Mar 27, 2017 at 09:59:47AM -0700, Tony Lindgren wrote:
> > > > * Moreno Bartalucci <moreno.bartalucci@tecnorama.it> [170327 09:23]:
> > > > > If I understood your patch, however, if the device (anyone, not just my one) takes longer to switch, VBUS is deasserted anyway.
> > > > 
> > > > Yeah some of them can take at least 10 seconds even to enumerate.
> > > > So probably we need to have to have some longer timeout set for
> > > > OTG_STATE_A_WAIT_BCON, like 20 or 30 seconds.
> > > > 
> > > > > Although this patch is working for me, personally I would prefer a solution which would not deassert VBUS. At least on a host only port. Honestly I don’t know how a dual role port should work.
> > > > 
> > > > It's been really long time since I read the OTG spec. There
> > > > may be some diagram showing the required timeouts in the spec
> > > > if there is one for VBUS.
> > > > 
> > > > Maybe we need some property to specify vbus-always-on-in-host-mode?
> > > 
> > > The MUSB otg state machine has been changed in many place since the last
> > > time I looked at it, and I am not sure how exactly it works now.
> > 
> > Yup.. I looked up the timers in the OTG spec and they are described
> > in chapter "8.5.5.2" as a_wait_bcon_tmo or a_wait_bcon_tmr. But
> > I could not find any values for them.
> > 
> > Anyways, clearly we want things working with real devices :)
> > 
> > > If the $subject patch can correctly keep the VBUS on for host-only mode,
> > > we can somehow use dr_modei value to distinguish the mode. We don't have
> > > to create a new vbus-always-on-in-host-mode flag. VBUS has to be always
> > > on in host-only mode anyway, until some error condition happens.
> > 
> > Yeh and it seems PM still works with the $subject patch also for
> > host mode. So maybe that's enough to fix the issue.
> > 
> > Also I don't have any idea why for ages we have been writing
> > 0 to devctl there.. Maybe we've had a bug there that only now
> > shows up when we idle things.
> 
> The otg state machine implementation in the musb drivers are kind of strange.
> OTG_STATE_A_WAIT_BCON suppose to be a steady state when no usb device is
> attached, but the musb drivers use it as a transient state to handle error
> cases, such as overcurrent ot HNP timeout, which is done in the 'case
> OTG_STATE_A_WAIT_BCON' branch in otg_timer() (or dsps_check_status() for dsps
> glue).
> 
> Then later when 2f3fd2c5bde1 adds
> 
> -       /* Poll for ID change in OTG port mode */
> -       if (musb->xceiv->otg->state == OTG_STATE_B_IDLE &&
> -                       musb->port_mode == MUSB_PORT_MODE_DUAL_ROLE)
> +       /* Poll for ID change and connect */
> +       switch (musb->xceiv->otg->state) {
> +       case OTG_STATE_B_IDLE:
> +       case OTG_STATE_A_WAIT_BCON:
>                 mod_timer(&glue->timer, jiffies +
>                                 msecs_to_jiffies(wrp->poll_timeout));
> +               break;
> 
> which causes dsps_check_status (or otg_timer()) got called for a normal
> condition with OTG_STATE_A_WAIT_BCON, then turns off VBUS...
> 
> Will try to see how to solve this...

Maybe we just need to add back the earlier check for non-OTG devices
"musb->port_mode == MUSB_PORT_MODE_DUAL_ROLE" into case
OTG_STATE_A_WAIT_BCON?

Not sure if am335x configured with host port ever idle that way,
but maybe VBUS can be kept on with musb idle.

Regards,

Tony

  reply	other threads:[~2017-05-11 18:55 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-15 14:08 [PATCH] usb-musb: keep VBUS on when device is disconnected Moreno Bartalucci
2017-03-15 14:08 ` Moreno Bartalucci
2017-03-24 18:58 ` Bin Liu
2017-03-24 18:58   ` Bin Liu
2017-03-25  7:21   ` Lars Melin
2017-03-27 12:53     ` Moreno Bartalucci
2017-03-27 12:53       ` Moreno Bartalucci
2017-03-27 13:17       ` Bin Liu
2017-03-27 13:17         ` Bin Liu
2017-03-27 14:30         ` Tony Lindgren
2017-03-27 16:20           ` Moreno Bartalucci
2017-03-27 16:59             ` Tony Lindgren
2017-03-27 16:59               ` Tony Lindgren
2017-03-27 17:15               ` Bin Liu
2017-03-27 17:55                 ` Tony Lindgren
2017-03-27 17:55                   ` Tony Lindgren
2017-05-11 18:50                   ` Bin Liu
2017-05-11 18:55                     ` Tony Lindgren [this message]
2017-05-11 19:01                       ` Bin Liu
2017-05-11 19:10                         ` Bin Liu
2017-05-11 19:20                           ` Bin Liu
2017-05-11 19:38                             ` Tony Lindgren
2017-05-11 20:02                               ` Bin Liu
2017-05-11 20:23                                 ` Tony Lindgren
2017-05-11 20:27                                   ` Tony Lindgren
2017-05-11 20:44                                   ` Bin Liu
2017-05-11 21:06                                     ` Tony Lindgren
2017-05-12 13:40                                       ` Bin Liu
2017-05-12 14:58                                         ` Tony Lindgren
2017-05-12 15:21                                           ` Bin Liu
2017-05-12 15:43                                             ` Moreno Bartalucci
2017-05-12 17:21                                             ` Tony Lindgren
2017-05-12 17:40                                               ` Bin Liu
2017-05-12 17:46                                                 ` Tony Lindgren
2017-05-15  7:07                                             ` Moreno Bartalucci
2017-05-15 12:24                                               ` Bin Liu
2017-03-28  6:10                 ` Moreno Bartalucci
2017-03-28  6:10                   ` Moreno Bartalucci
2017-03-28 14:59                   ` Tony Lindgren
2017-03-28 14:59                     ` 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=20170511185528.GW3489@atomide.com \
    --to=tony@atomide.com \
    --cc=abogani@kernel.org \
    --cc=b-liu@ti.com \
    --cc=larsm17@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=moreno.bartalucci@tecnorama.it \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.