devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Roger Quadros <rogerq-l0cyMroinI0@public.gmane.org>
To: Li Jun <b47624-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
Cc: Felipe Balbi <balbi-l0cyMroinI0@public.gmane.org>,
	Chen Peter-B29397
	<Peter.Chen-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
	Rob Herring <robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Li Jun-B47624 <Jun.Li-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
	Greg Kroah-Hartman
	<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
	Linux USB List
	<linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org>,
	Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	"macpaul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org"
	<macpaul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Subject: Re: [PATCH v2 05/22] doc: dt-binding: usb: add otg related properties
Date: Fri, 12 Jun 2015 11:41:40 +0300	[thread overview]
Message-ID: <20150612114140.52f87bc8@rockdesk> (raw)
In-Reply-To: <20150612082358.GG16101@shlinux2>



On Fri, 12 Jun 2015 16:23:59 +0800
Li Jun <b47624-KZfg59tc24xl57MIdRCFDg@public.gmane.org> wrote:

> On Fri, Jun 12, 2015 at 11:02:13AM +0300, Roger Quadros wrote:
> > 
> > On Fri, 12 Jun 2015 09:42:04 +0800
> > Li Jun <b47624-KZfg59tc24xl57MIdRCFDg@public.gmane.org> wrote:
> > 
> > > On Thu, Jun 11, 2015 at 05:55:57PM +0300, Roger Quadros wrote:
> > > > > > drivers/usb/core/hub.c
> > > > > > 
> > > > > > static int usb_enumerate_device_otg(struct usb_device *udev)
> > > > > > {
> > > > > > 	int err = 0;
> > > > > > 
> > > > > > #ifdef	CONFIG_USB_OTG
> > > > > > 	/*
> > > > > > 	 * OTG-aware devices on OTG-capable root hubs may be able to use SRP,
> > > > > > 	 * to wake us after we've powered off VBUS; and HNP, switching roles
> > > > > > 	 * "host" to "peripheral".  The OTG descriptor helps figure this out.
> > > > > > 	 */
> > > > > > 	if (!udev->bus->is_b_host
> > > > > > 			&& udev->config
> > > > > > 			&& udev->parent == udev->bus->root_hub) {
> > > > > > 		struct usb_otg_descriptor	*desc = NULL;
> > > > > > 		struct usb_bus			*bus = udev->bus;
> > > > > > 
> > > > > > 		/* descriptor may appear anywhere in config */
> > > > > > 		if (__usb_get_extra_descriptor (udev->rawdescriptors[0],
> > > > > > 					le16_to_cpu(udev->config[0].desc.wTotalLength),
> > > > > > 					USB_DT_OTG, (void **) &desc) == 0) {
> > > > > > 			if (desc->bmAttributes & USB_OTG_HNP) {
> > > > > > 				unsigned		port1 = udev->portnum;
> > > > > > 
> > > > > > 				dev_info(&udev->dev,
> > > > > > 					"Dual-Role OTG device on %sHNP port\n",
> > > > > > 					(port1 == bus->otg_port)
> > > > > > 						? "" : "non-");
> > > > > > 
> > > > > > 				/* enable HNP before suspend, it's simpler */
> > > > > > 				if (port1 == bus->otg_port)
> > > > > > 					bus->b_hnp_enable = 1;
> > > > > > 				err = usb_control_msg(udev,
> > > > > > 					usb_sndctrlpipe(udev, 0),
> > > > > > 					USB_REQ_SET_FEATURE, 0,
> > > > > > 					bus->b_hnp_enable
> > > > > > 						? USB_DEVICE_B_HNP_ENABLE
> > > > > > 						: USB_DEVICE_A_ALT_HNP_SUPPORT,
> > > > > > 					0, NULL, 0, USB_CTRL_SET_TIMEOUT);
> > > > > > 
> > > > > > We're sending out this control request even if this host port is not OTG.
> > > > > > Isn't that wrong?
> > > > > 
> > > > > So send USB_DEVICE_A_ALT_HNP_SUPPORT request.
> > > > > This is correct in OTG 1.x, its intention is to remind the user who is
> > > > > connecting the HNP capable OTG device to a non-OTG port, He can change
> > > > > to another port of this machine which is a OTG port(with HNP).
> > > > 
> > > > I didn't understand.
> > > > If CONFIG_USB_OTG is enabled doesn't mean that this USB host port is OTG host.
> > > Yes, only CONFIG_USB_OTG enabled doesn't mean that this USB host port
> > > is a OTG port, there are might multiple usb host ports, but only one
> > > is a OTG port.
> > 
> > Not necessarily. Many systems don't have any OTG port so that request cannot
> > be sent even if CONFIG_USB_OTG is enabled.
> > 
> That's the fact, but we are talking the code only for those systems which
> have OTG port. If you think we need not cover the support for OTG 1.x host,
> we can simply remove it.

We should not remove it but need to add the following check.

Send that request only if the system has at least one OTG (v1.x) port that is
capable of HNP _and_ this port is not that HNP capable port _and_
the connected device is OTG (v1.x)

> 
> > > > So it should not send any OTG specific request to device. Right?
> > > Non-otg port(in OTG 1.x protocol) + OTG 1.x device, should send,
> > > otherwise, should not send.
> > 
> > What did you mean by Non-OTG port (in OTG 1.x protocol)?
> 
> Means host only port without HNP.
> 
> > If it is Non-OTG port it doesn't understand any OTG protocol.
> 
> With common sense, yes, but there is one exception.
> 
> > So Non-OTG port should not send any OTG request.
> > 
> see below from OTG 1.3:
> 
> 6.5.3 a_alt_hnp_support
> Setting this feature indicates to the B-device that it is connected to
> an A-device port that is not capable of HNP, but that the A-device does
> have an alternate port that is capable of HNP.
> The A-device is required to set this feature under the following conditions:
> • the A-device has multiple receptacles
> • the A-device port that connects to the B-device does not support HNP
> • the A-device has another port that does support HNP
> ... ...

Thanks for this info. I can't seem to find the OTG v1.3 spec.

cheers,
-roger

> 
> > > 
> > > So the code you pasted here was right only for OTG 1.x, I assume
> > > OTG 2.0 has not been released when it was designed. But now it's
> > > out of date, it's wrong if you connect a OTG 2.0 device. 
> > > 
> > 
> > The code is wrong for non-OTG ports when CONFIG_USB_OTG is set.
> > 
> > Peter/Felipe, any comments on this?
> > 
> > cheers,
> > -roger
> > 
> > > > 
> > > > > 
> > > > > > 
> > > > > > 				if (err < 0) {
> > > > > > 					/* OTG MESSAGE: report errors here,
> > > > > > 					 * customize to match your product.
> > > > > > 					 */
> > > > > > 					dev_info(&udev->dev,
> > > > > > 						"can't set HNP mode: %d\n",
> > > > > > 						err);
> > > > > > 					bus->b_hnp_enable = 0;
> > > > > > 				}
> > > > > > 
> > > > > > Instead it should be moved inside the if (port1 == bus->otg_port) condition.
> > > > > 
> > > > > Nope, as I explained above, this is really too detailed OTG protocol:)
> > > > > > 
> > > > > > 			}
> > > > > > 		}
> > > > > > 	}
> > > > > > #endif
> > > > > > 	return err;
> > > > > > }
> > > > > > 
> > 

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2015-06-12  8:41 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-08 15:01 [PATCH v2 00/22] usb gadget update for OTG 2.0 Li Jun
     [not found] ` <1433775737-9816-1-git-send-email-jun.li-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2015-06-08 15:01   ` [PATCH v2 01/22] usb: add OTG version number in usb_otg_descriptor Li Jun
     [not found]     ` <1433775737-9816-2-git-send-email-jun.li-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2015-06-09 12:25       ` Roger Quadros
2015-06-09 12:56       ` Roger Quadros
2015-06-09 13:51         ` Li Jun
     [not found]           ` <20150609135130.GA20453-KgLukfWpBlCctlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2015-06-09 14:16             ` Alan Stern
     [not found]               ` <Pine.LNX.4.44L0.1506091013460.1324-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2015-06-09 15:15                 ` Roger Quadros
2015-06-10 13:53                 ` Li Jun
2015-06-08 15:01   ` [PATCH v2 02/22] usb: add USB_OTG_ADP definition Li Jun
2015-06-08 15:01   ` [PATCH v2 03/22] usb: add OTG feature options to gadget structure Li Jun
     [not found]     ` <1433775737-9816-4-git-send-email-jun.li-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2015-06-09 13:23       ` Roger Quadros
2015-06-08 15:01   ` [PATCH v2 04/22] usb: gadget: composite: add USB_DT_OTG request handling Li Jun
     [not found]     ` <1433775737-9816-5-git-send-email-jun.li-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2015-06-09 12:27       ` Roger Quadros
2015-06-09 13:55         ` Li Jun
2015-06-08 15:02   ` [PATCH v2 05/22] doc: dt-binding: usb: add otg related properties Li Jun
     [not found]     ` <1433775737-9816-6-git-send-email-jun.li-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2015-06-08 16:06       ` Rob Herring
     [not found]         ` <CAL_JsqJ3hHOGevwqcBNFN2LrTP7Bm_k9SDuTNKBbpq5W-eLmdw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-06-09  1:18           ` Li Jun
     [not found]             ` <20150609011806.GA7976-KgLukfWpBlCctlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2015-06-09 13:26               ` Rob Herring
     [not found]                 ` <CAL_JsqKg_NYtLGg9RUQOpKscwHEskHO4_Szo_nM3BnrDdhg3fg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-06-09 15:29                   ` Roger Quadros
2015-06-09 16:33                     ` Rob Herring
     [not found]                       ` <CAL_JsqJ+q5hs26FaLXG1LVb0asE-UZ5hXar2FeVAJN=S8=CG3w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-06-10  7:37                         ` Roger Quadros
2015-06-10 13:47                           ` Li Jun
2015-06-11  7:18                             ` Roger Quadros
2015-06-11  8:20                               ` Li Jun
2015-06-11 12:37                                 ` Roger Quadros
2015-06-11 14:11                                   ` Li Jun
2015-06-11 14:52                                     ` Roger Quadros
2015-06-12  3:09                                       ` Li Jun
2015-06-12  8:31                                         ` Roger Quadros
2015-06-15  6:32                                           ` Li Jun
2015-06-15  7:51                                             ` Roger Quadros
2015-06-15  7:41                                           ` Li Jun
2015-06-15  7:56                                             ` Roger Quadros
2015-06-15 12:25                                             ` Sergei Shtylyov
     [not found]                                               ` <557EC44C.4050306-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>
2015-06-15 13:10                                                 ` Li Jun
2015-06-10 12:06                     ` Li Jun
2015-06-11  7:30                       ` Roger Quadros
2015-06-11  8:38                         ` Li Jun
2015-06-11 12:51                           ` Roger Quadros
2015-06-11 14:22                             ` Li Jun
2015-06-11 14:55                               ` Roger Quadros
2015-06-12  1:42                                 ` Li Jun
2015-06-12  8:02                                   ` Roger Quadros
2015-06-12  8:23                                     ` Li Jun
2015-06-12  8:41                                       ` Roger Quadros [this message]
2015-06-12  9:09                                         ` Li Jun
2015-06-12  8:42                                       ` Roger Quadros
2015-06-12  2:49                     ` Peter Chen
2015-06-10 11:20                   ` Li Jun
2015-06-09 12:49       ` Roger Quadros
2015-06-08 15:02   ` [PATCH v2 06/22] usb: common: add API to get usb otg features from device tree Li Jun
     [not found]     ` <1433775737-9816-7-git-send-email-jun.li-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2015-06-09 12:55       ` Roger Quadros
2015-06-09 13:58         ` Li Jun
2015-06-09 14:15         ` Li Jun
     [not found]           ` <20150609141552.GD20453-KgLukfWpBlCctlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2015-06-09 15:20             ` Roger Quadros
2015-06-08 15:02   ` [PATCH v2 07/22] usb: chipidea: udc: set usb gadeget's otg config Li Jun
     [not found]     ` <1433775737-9816-8-git-send-email-jun.li-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2015-06-09 13:03       ` Roger Quadros
2015-06-08 15:02   ` [PATCH v2 08/22] usb: chipidea: update ci_otg_is_fsm_mode conditions Li Jun
2015-06-08 15:02   ` [PATCH v2 09/22] usb: gadget: add usb_otg_descriptor_add interface to init usb_otg_descriptor Li Jun
     [not found]     ` <1433775737-9816-10-git-send-email-jun.li-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2015-06-09 13:08       ` Roger Quadros
2015-06-09 13:27       ` Roger Quadros
2015-06-10 14:02         ` Li Jun
2015-06-08 15:02   ` [PATCH v2 10/22] usb: gadget: configfs: init and add usb_otg_descriptor for usb configurations Li Jun
     [not found]     ` <1433775737-9816-11-git-send-email-jun.li-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2015-06-09 13:33       ` Roger Quadros
2015-06-08 15:02   ` [PATCH v2 11/22] usb: gadget: ether: init usb_otg_descriptor via usb_otg_descriptor_add Li Jun
2015-06-08 15:02   ` [PATCH v2 12/22] usb: gadget: acm_ms: " Li Jun
2015-06-08 15:02   ` [PATCH v2 13/22] usb: gadget: audio: " Li Jun
2015-06-08 15:02   ` [PATCH v2 14/22] usb: gadget: cdc2: " Li Jun
2015-06-08 15:02   ` [PATCH v2 15/22] usb: gadget: g_ffs: " Li Jun
2015-06-08 15:02   ` [PATCH v2 16/22] usb: gadget: hid: " Li Jun
2015-06-08 15:02   ` [PATCH v2 17/22] usb: gadget: mass_storage: " Li Jun
2015-06-08 15:02   ` [PATCH v2 18/22] usb: gadget: multi: " Li Jun
2015-06-08 15:02   ` [PATCH v2 19/22] usb: gadget: ncm: " Li Jun
2015-06-08 15:02   ` [PATCH v2 20/22] usb: gadget: printer: " Li Jun
2015-06-08 15:02   ` [PATCH v2 21/22] usb: gadget: serial: " Li Jun
2015-06-08 15:02   ` [PATCH v2 22/22] usb: gadget: zero: " Li Jun

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=20150612114140.52f87bc8@rockdesk \
    --to=rogerq-l0cymroini0@public.gmane.org \
    --cc=Jun.Li-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
    --cc=Peter.Chen-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
    --cc=b47624-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
    --cc=balbi-l0cyMroinI0@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
    --cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=macpaul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=pawel.moll-5wv7dgnIgG8@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    /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).