All of lore.kernel.org
 help / color / mirror / Atom feed
From: Felipe Balbi <balbi@ti.com>
To: Peter Chen <peter.chen@freescale.com>
Cc: Nathan Sullivan <nathan.sullivan@ni.com>,
	<gregkh@linuxfoundation.org>, <linux-usb@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH V4] usb: remove unnecessary CONFIG_PM dependency from USB_OTG
Date: Thu, 5 Nov 2015 08:36:41 -0600	[thread overview]
Message-ID: <87h9l0343q.fsf@saruman.tx.rr.com> (raw)
In-Reply-To: <20151105021319.GA16142@shlinux2>

[-- Attachment #1: Type: text/plain, Size: 3756 bytes --]


Hi,

Peter Chen <peter.chen@freescale.com> writes:
> On Tue, Nov 03, 2015 at 09:51:11PM -0600, Felipe Balbi wrote:
>> 
>> Hi,
>> 
>> Peter Chen <peter.chen@freescale.com> writes:
>> > On Tue, Nov 03, 2015 at 07:56:55AM -0600, Felipe Balbi wrote:
>> >> 
>> >> Hi,
>> >> 
>> >> Nathan Sullivan <nathan.sullivan@ni.com> writes:
>> >> > The USB OTG support currently depends on power management
>> >> > (CONFIG_PM) being enabled, but does not actually need it enabled.
>> >> > Remove this dependency.
>> >> >
>> >> > Tested on Bay Trail hardware with dwc3 USB.
>> >> >
>> >> > Signed-off-by: Nathan Sullivan <nathan.sullivan@ni.com>
>> >> > ---
>> >> >  drivers/usb/core/Kconfig |    1 -
>> >> >  1 file changed, 1 deletion(-)
>> >> >
>> >> > diff --git a/drivers/usb/core/Kconfig b/drivers/usb/core/Kconfig
>> >> > index a99c89e..9c5cdf3 100644
>> >> > --- a/drivers/usb/core/Kconfig
>> >> > +++ b/drivers/usb/core/Kconfig
>> >> > @@ -43,7 +43,6 @@ config USB_DYNAMIC_MINORS
>> >> >  
>> >> >  config USB_OTG
>> >> >  	bool "OTG support"
>> >> > -	depends on PM
>> >> 
>> >> I don't think this is correct. OTG depends on USB bus suspend, which is
>> >> only available on PM builds. Care to further detail why you think PM is
>> >> not needed on OTG ?
>> >> 
>> >
>> > OTG depends on USB bus suspend is not a must, the hardware controlled OTG
>> > design do HNP when the bus goes to suspend; but if the software
>> > implements OTG FSM, it is the user option whether do HNP, and bus
>> > suspend is controlled by OTG FSM software (stop SOF), but not by host 
>> > stack (eg, ehci).
>> >
>> > I am sorry I did not consider the legacy OTG design, this patch should
>> > be dropped.
>> 
>> there is no "legacy" OTG design. OTG requires a bus suspend to enter
>> HNP, and that's achieved by stopping all transfers and avoid new URB
>> submission so usbcore can put the bus in suspend (by means of USB
>> autosuspend). If you're bypassing that in the OTG FSM thing, that needs
>> to be fixed ASAP as that makes it a lot harder for any generic changes
>> in usbcore to be validated. Specially when you consider not many will
>> have whatever special HW which, likely, doesn't even work with mainline
>> to validate a change.
>> 
>
> Felipe, thanks for your comments.
>
> But you may need to consider the user option ~a_bus_req (for A) and
> b_bus_req (for B) when do HNP, we can't do HNP without user option.
>
> - Eg, if the bus enters suspend, but the A does not want role switch,
> we can't try to do HNP, the same for B device.
> - The A device may want to support auto-suspend but without role switch.
>
> You are absolutely right, the SAFE HNP needs to do auto-suspend first, we
> need to add this in documentation. But it does not mean OTG FSM design is
> incorrect, there are two things, eg, if we want to do HNP safely, we
> need

sure it does. If you're bypassing anything in usbcore, it's wrong :-)
For that [ab]_bus_req polling, as soon as you notice that flag, you
should just giveback all URBs to the link partner so the link can
autosuspend and HNP will happen exactly the same.

> to do below things:
> /* B requests HNP */
> echo 1 > /sys/bus/../otg_fsm//inputs/b_bus_req 
>
> /* Put the A to suspend */
> echo auto > /sys/bus/usb/devices/1-1/power/control 
> /* A goes to try HNP */
> echo 0 > /sys/bus/../otg_fsm/inputs/a_bus_req

When you echo 0 to a_bus_req, A should stop all in-flight transfers to
the link partner and wait for the bus to autosuspend. There should be no
differences other than the need to set these flags.

This even gives us opportunity to tune "how fast" we wand HNP to happen
by fiddling with autosuspend delay ;-)

-- 
balbi

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]

  reply	other threads:[~2015-11-05 14:36 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-29 13:52 [PATCH V4] usb: remove unnecessary CONFIG_PM dependency from USB_OTG Nathan Sullivan
2015-11-03  8:40 ` Peter Chen
2015-11-03 13:56 ` Felipe Balbi
2015-11-03 14:53   ` Nathan Sullivan
2015-11-03 15:05     ` Felipe Balbi
2015-11-04  3:00   ` Peter Chen
2015-11-04  3:51     ` Felipe Balbi
2015-11-05  2:13       ` Peter Chen
2015-11-05 14:36         ` Felipe Balbi [this message]
2015-12-01 10:50       ` Li Jun
2015-12-01 14:25         ` Felipe Balbi

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=87h9l0343q.fsf@saruman.tx.rr.com \
    --to=balbi@ti.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=nathan.sullivan@ni.com \
    --cc=peter.chen@freescale.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 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.