All of lore.kernel.org
 help / color / mirror / Atom feed
From: Roger Quadros <rogerq@ti.com>
To: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>,
	"stern@rowland.harvard.edu" <stern@rowland.harvard.edu>,
	"balbi@kernel.org" <balbi@kernel.org>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"peter.chen@freescale.com" <peter.chen@freescale.com>
Cc: "dan.j.williams@intel.com" <dan.j.williams@intel.com>,
	"jun.li@freescale.com" <jun.li@freescale.com>,
	"mathias.nyman@linux.intel.com" <mathias.nyman@linux.intel.com>,
	"tony@atomide.com" <tony@atomide.com>,
	"Joao.Pinto@synopsys.com" <Joao.Pinto@synopsys.com>,
	"abrestic@chromium.org" <abrestic@chromium.org>,
	"r.baldyga@samsung.com" <r.baldyga@samsung.com>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>
Subject: Re: [PATCH v6 07/12] usb: otg: add OTG/dual-role core
Date: Mon, 11 Apr 2016 13:54:32 +0300	[thread overview]
Message-ID: <570B8268.6090700@ti.com> (raw)
In-Reply-To: <SG2PR06MB09197595F9D810CF8A22D860D8910@SG2PR06MB0919.apcprd06.prod.outlook.com>

On 08/04/16 14:22, Yoshihiro Shimoda wrote:
> Hi,
> 
>> From: Roger Quadros
>> Sent: Thursday, April 07, 2016 8:45 PM
>>
>> Hi,
>>
>> On 07/04/16 11:52, Yoshihiro Shimoda wrote:
>>> Hi,
>>>
>>>> From: Roger Quadros
>>>> Sent: Tuesday, April 05, 2016 11:05 PM
> < snip >
>>> diff --git a/drivers/usb/common/usb-otg.c b/drivers/usb/common/usb-otg.c
>>> index 41e762a..4d7f043 100644
>>> --- a/drivers/usb/common/usb-otg.c
>>> +++ b/drivers/usb/common/usb-otg.c
>>> @@ -825,11 +825,16 @@ int usb_otg_register_hcd(struct usb_hcd *hcd, unsigned int irqnum,
>>>  	if (otg->primary_hcd.hcd) {
>>>  		/* probably a shared HCD ? */
>>>  		if (usb_otg_hcd_is_primary_hcd(hcd)) {
>>> +			if (hcd->driver->flags & HCD_USB11) {
>>> +				dev_info(otg_dev, "this assumes usb 1.1 hc is as shared_hcd\n");
>>> +				goto check_shared_hcd;
>>> +			}
>>>  			dev_err(otg_dev, "otg: primary host already registered\n");
>>>  			goto err;
>>>  		}
>>>
>>>  		if (hcd->shared_hcd == otg->primary_hcd.hcd) {
>>> +check_shared_hcd:
>>>  			if (otg->shared_hcd.hcd) {
>>>  				dev_err(otg_dev, "otg: shared host already registered\n");
>>>  				goto err;
>>>
>>> What do you think this local hack?
>>
>> Is it guaranteed that EHCI hcd registers before OHCI hcd?
> 
> Thank you for the comment. No, it is not guaranteed.
> 
>> If not we need to improve the code still.
>> We will also need to remove the constraint that primary_hcd must be registered
>> first in usb_otg_register_hcd(). I think that constraint is no longer
>> needed anyways.
> 
> I got it.
> So, I made a patch to avoid the constraint using an additional property "otg-hcds".
> The patch is in this end of email. What do you think about the patch?

This might only solve the issue for device tree but what about non-device tree?
We need to deal with both cases.

> 
>> If EHCI & OHCI HCDs register before OTG driver then things will break unless
>> we fix usb_otg_hcd_wait_add(). We need to add this HCD_USB11 check there to
>> populate wait->shared_hcd.
> 
> I see. In my environment, since EHCI & OHCI HCDs need phy driver and phy driver
> will calls usb_otg_register(), the order is right. In other words,
> EHCI & OHCI HCDs never register before OTG driver because even if EHCI driver
> is probed first, the driver will be deferred (EHCI driver needs the phy driver).

But still we cannot assume this is true for all platforms. OTG driver can also
be a separate entity than PHY driver.

> 
>>> I also wonder if array of hcd may be good for both xHCI and EHCI/OHCI.
>>> For example of xHCI:
>>>  - otg->hcds[0] = primary_hcd
>>>  - otg->hcds[1] = shared_hcd
>>>
>>> For example of EHCI/OHCI:
>>>  - otg->hcds[0] = primary_hcd of EHCI
>>>  - otg->hcds[1] = primary_hcd of OHCI
>>
>> The bigger problem is that how do we know in the OHCI/EHCI case that we need to wait
>> for both of them before starting the OTG FSM?
>> Some systems might use just OHCI or just EHCI.
>>
>> There is no guarantee that OTG driver registers before the HCDs so this piece
>> of information must come from the HCD itself. i.e. whether it needs a companion or not.
> 
> I understood these problems. I wonder if my patch can resolve these problems.
> 
> Best regards,
> Yoshihiro Shimoda
> ---
> diff --git a/Documentation/devicetree/bindings/usb/generic.txt b/Documentation/devicetree/bindings/usb/generic.txt
> index f6866c1..518b9eb 100644
> --- a/Documentation/devicetree/bindings/usb/generic.txt
> +++ b/Documentation/devicetree/bindings/usb/generic.txt
> @@ -27,6 +27,12 @@ Optional properties:
>   - otg-controller: phandle to otg controller. Host or gadget controllers can
>  			contain this property to link it to a particular OTG
>  			controller.
> + - otg-hcds: phandle to host controller(s). An OTG controller can contain this
> +	     property. The first one is as "primary", and (optional) the second
> +	     one is as "shared".
> +	     - For example for xHCI:		otg-hcds = <&xhci>, <&xhci>;
> +	     - For example for EHCI/OHCI:	otg-hcds = <&ehci>, <&ohci>;
> +	     - For example for just EHCI:	otg-hcds = <&ehci>;
>  

This is kind of duplicating the information. We are already specifying in the
hcd nodes as to which otg controller it is linked to.

Instead, how about just adding a boolean property in the otg node saying that
HCD needs companion. e.g.
	hcd-needs-compainion: must be present if otg controller is dealing with
			EHCI host controller that needs a companion OHCI host controller.

This can also be added in struct usb_otg_config so that it can deal with non-DT cases.

So if this property is true, the OTG core will wait for 2 primary HCDs to be registered.

cheers,
-roger

>  This is an attribute to a USB controller such as:
>  
> diff --git a/arch/arm64/boot/dts/renesas/r8a7795.dtsi b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> index 741d9d2..9dcf76ac 100644
> --- a/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> +++ b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> @@ -1253,6 +1253,7 @@
>  			compatible = "renesas,usb2-phy-r8a7795";
>  			reg = <0 0xee080200 0 0x700>;
>  			interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
> +			otg-hcds = <&ehci0>, <&ohci0>;
>  			clocks = <&cpg CPG_MOD 703>;
>  			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
>  			#phy-cells = <0>;
> diff --git a/drivers/usb/common/usb-otg.c b/drivers/usb/common/usb-otg.c
> index 41e762a..9a78482 100644
> --- a/drivers/usb/common/usb-otg.c
> +++ b/drivers/usb/common/usb-otg.c
> @@ -258,7 +258,8 @@ static void usb_otg_flush_wait(struct device *otg_dev)
>  
>  	dev_dbg(otg_dev, "otg: registering pending host/gadget\n");
>  	gadget = &wait->gcd;
> -	if (gadget)
> +	/* I'm not sure but gadget->gadget is possible to be NULL */
> +	if (gadget && gadget->gadget)
>  		usb_otg_register_gadget(gadget->gadget, gadget->ops);
>  
>  	host = &wait->primary_hcd;
> @@ -567,6 +568,8 @@ struct usb_otg *usb_otg_register(struct device *dev,
>  {
>  	struct usb_otg *otg;
>  	struct otg_wait_data *wait;
> +	struct device_node *np;
> +	struct platform_device *pdev;
>  	int ret = 0;
>  
>  	if (!dev || !config || !config->fsm_ops)
> @@ -616,6 +619,40 @@ struct usb_otg *usb_otg_register(struct device *dev,
>  	list_add_tail(&otg->list, &otg_list);
>  	mutex_unlock(&otg_list_mutex);
>  
> +	/* Get primary hcd device (mandatory) */
> +	np = of_parse_phandle(dev->of_node, "otg-hcds", 0);
> +	if (!np) {
> +		dev_err(dev, "no otg-hcds\n");
> +		ret = -EINVAL;
> +		goto err_dt;
> +	}
> +	pdev = of_find_device_by_node(np);
> +	of_node_put(np);
> +	if (!pdev) {
> +		dev_err(dev, "coulnd't get primary hcd device\n");
> +		ret = -ENODEV;
> +		goto err_dt;
> +	}
> +	otg->primary_dev = &pdev->dev;
> +
> +	/* Get shared hcd device (optional) */
> +	np = of_parse_phandle(dev->of_node, "otg-hcds", 1);
> +	if (np) {
> +		pdev = of_find_device_by_node(np);
> +		of_node_put(np);
> +		if (!pdev) {
> +			dev_err(dev, "coulnd't get shared hcd device\n");
> +			ret = -ENODEV;
> +			goto err_dt;
> +		}
> +		otg->shared_dev = &pdev->dev;
> +	} else {
> +		dev_dbg(dev, "no shared hcd\n");
> +	}
> +
> +	if (otg->primary_dev != otg->shared_dev)
> +		otg->flags |= OTG_FLAG_SHARED_IS_2ND_PRIMARY;
> +
>  	/* were we in wait list? */
>  	mutex_lock(&wait_list_mutex);
>  	wait = usb_otg_get_wait(dev);
> @@ -627,6 +664,8 @@ struct usb_otg *usb_otg_register(struct device *dev,
>  
>  	return otg;
>  
> +err_dt:
> +	destroy_workqueue(otg->wq);
>  err_wq:
>  	kfree(otg);
>  unlock:
> @@ -822,50 +861,42 @@ int usb_otg_register_hcd(struct usb_hcd *hcd, unsigned int irqnum,
>  
>  	/* HCD will be started by OTG fsm when needed */
>  	mutex_lock(&otg->fsm.lock);
> -	if (otg->primary_hcd.hcd) {
> -		/* probably a shared HCD ? */
> -		if (usb_otg_hcd_is_primary_hcd(hcd)) {
> -			dev_err(otg_dev, "otg: primary host already registered\n");
> -			goto err;
> +	if (!otg->primary_hcd.hcd) {
> +		dev_info(hcd_dev, "%s: primary %s, now %s\n", __func__,
> +			dev_name(otg->primary_dev),
> +			dev_name(hcd->self.controller));
> +		if (otg->primary_dev == hcd->self.controller) {
> +			otg->primary_hcd.hcd = hcd;
> +			otg->primary_hcd.irqnum = irqnum;
> +			otg->primary_hcd.irqflags = irqflags;
> +			otg->primary_hcd.ops = ops;
> +			otg->hcd_ops = ops;
> +			dev_info(otg_dev, "otg: primary host %s registered\n",
> +				 dev_name(hcd->self.controller));
>  		}
> +	}
>  
> -		if (hcd->shared_hcd == otg->primary_hcd.hcd) {
> -			if (otg->shared_hcd.hcd) {
> -				dev_err(otg_dev, "otg: shared host already registered\n");
> -				goto err;
> -			}
> -
> +	if (!otg->shared_hcd.hcd && (!usb_otg_hcd_is_primary_hcd(hcd) ||
> +			otg->flags & OTG_FLAG_SHARED_IS_2ND_PRIMARY)) {
> +		dev_info(hcd_dev, "%s: shared %s, now %s\n", __func__,
> +			dev_name(otg->shared_dev),
> +			dev_name(hcd->self.controller));
> +		if (otg->shared_dev == hcd->self.controller) {
>  			otg->shared_hcd.hcd = hcd;
>  			otg->shared_hcd.irqnum = irqnum;
>  			otg->shared_hcd.irqflags = irqflags;
>  			otg->shared_hcd.ops = ops;
>  			dev_info(otg_dev, "otg: shared host %s registered\n",
>  				 dev_name(hcd->self.controller));
> -		} else {
> -			dev_err(otg_dev, "otg: invalid shared host %s\n",
> -				dev_name(hcd->self.controller));
> -			goto err;
> -		}
> -	} else {
> -		if (!usb_otg_hcd_is_primary_hcd(hcd)) {
> -			dev_err(otg_dev, "otg: primary host must be registered first\n");
> -			goto err;
>  		}
> -
> -		otg->primary_hcd.hcd = hcd;
> -		otg->primary_hcd.irqnum = irqnum;
> -		otg->primary_hcd.irqflags = irqflags;
> -		otg->primary_hcd.ops = ops;
> -		otg->hcd_ops = ops;
> -		dev_info(otg_dev, "otg: primary host %s registered\n",
> -			 dev_name(hcd->self.controller));
>  	}
>  
>  	/*
>  	 * we're ready only if we have shared HCD
>  	 * or we don't need shared HCD.
>  	 */
> -	if (otg->shared_hcd.hcd || !otg->primary_hcd.hcd->shared_hcd) {
> +	if (otg->primary_hcd.hcd && (!otg->shared_dev ||
> +	    (otg->shared_dev && otg->shared_hcd.hcd))) {
>  		otg->host = hcd_to_bus(hcd);
>  		/* FIXME: set bus->otg_port if this is true OTG port with HNP */
>  
> @@ -878,10 +909,6 @@ int usb_otg_register_hcd(struct usb_hcd *hcd, unsigned int irqnum,
>  	mutex_unlock(&otg->fsm.lock);
>  
>  	return 0;
> -
> -err:
> -	mutex_unlock(&otg->fsm.lock);
> -	return -EINVAL;
>  }
>  EXPORT_SYMBOL_GPL(usb_otg_register_hcd);
>  
> diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h
> index b094352..ed08865 100644
> --- a/include/linux/usb/otg.h
> +++ b/include/linux/usb/otg.h
> @@ -51,6 +51,8 @@ struct otg_hcd {
>   * @fsm: otg finite state machine
>   * @hcd_ops: host controller interface
>   * ------- internal use only -------
> + * @primary_dev: primary host device for matching
> + * @shared_dev: (optional) shared or other primary host device for matching
>   * @primary_hcd: primary host state and interface
>   * @shared_hcd: shared host state and interface
>   * @gadget_ops: gadget controller interface
> @@ -75,6 +77,8 @@ struct usb_otg {
>  	struct otg_hcd_ops	*hcd_ops;
>  
>  	/* internal use only */
> +	struct device *primary_dev;
> +	struct device *shared_dev;
>  	struct otg_hcd primary_hcd;
>  	struct otg_hcd shared_hcd;
>  	struct otg_gadget_ops *gadget_ops;
> @@ -84,6 +88,7 @@ struct usb_otg {
>  	u32 flags;
>  #define OTG_FLAG_GADGET_RUNNING (1 << 0)
>  #define OTG_FLAG_HOST_RUNNING (1 << 1)
> +#define OTG_FLAG_SHARED_IS_2ND_PRIMARY (1 << 2)
>  	/* use otg->fsm.lock for serializing access */
>  
>  /*------------- deprecated interface -----------------------------*/
> 
> 

  reply	other threads:[~2016-04-11 10:54 UTC|newest]

Thread overview: 155+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-05 14:05 [PATCH v6 00/12] USB OTG/dual-role framework Roger Quadros
2016-04-05 14:05 ` Roger Quadros
2016-04-05 14:05 ` [PATCH v6 01/12] usb: hcd: Initialize hcd->flags to 0 Roger Quadros
2016-04-05 14:05   ` Roger Quadros
2016-04-06  6:09   ` Felipe Balbi
2016-04-06  6:09     ` Felipe Balbi
     [not found]     ` <87zit72rqz.fsf-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-04-06  6:32       ` Roger Quadros
2016-04-06  6:32         ` Roger Quadros
2016-04-07  9:42         ` Peter Chen
2016-04-07 10:40           ` Roger Quadros
2016-04-07 10:40             ` Roger Quadros
     [not found]             ` <57063915.7000700-l0cyMroinI0@public.gmane.org>
2016-04-08  1:01               ` Peter Chen
2016-04-08  1:01                 ` Peter Chen
2016-04-08  7:16                 ` Roger Quadros
2016-04-08  7:16                   ` Roger Quadros
     [not found]                   ` <57075ACE.1010702-l0cyMroinI0@public.gmane.org>
2016-04-08  7:45                     ` Peter Chen
2016-04-08  7:45                       ` Peter Chen
2016-04-18  2:29         ` Peter Chen
2016-04-18 14:11           ` Alan Stern
2016-04-18 14:11             ` Alan Stern
     [not found]             ` <Pine.LNX.4.44L0.1604181007240.1775-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2016-04-19  1:56               ` Peter Chen
2016-04-19  1:56                 ` Peter Chen
2016-04-20  8:15                 ` Roger Quadros
2016-04-20  8:15                   ` Roger Quadros
2016-04-20  9:40                   ` Peter Chen
2016-04-05 14:05 ` [PATCH v6 02/12] usb: hcd.h: Add OTG to HCD interface Roger Quadros
2016-04-05 14:05   ` Roger Quadros
2016-04-18  7:41   ` Peter Chen
2016-04-05 14:05 ` [PATCH v6 03/12] usb: otg-fsm: use usb_otg wherever possible Roger Quadros
2016-04-05 14:05   ` Roger Quadros
2016-04-18  7:42   ` Peter Chen
2016-04-05 14:05 ` [PATCH v6 04/12] usb: otg-fsm: move host controller operations into usb_otg->hcd_ops Roger Quadros
2016-04-05 14:05   ` Roger Quadros
     [not found]   ` <1459865117-7032-5-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2016-04-18  8:00     ` Peter Chen
2016-04-18  8:00       ` Peter Chen
2016-04-05 14:05 ` [PATCH v6 05/12] usb: gadget.h: Add OTG to gadget interface Roger Quadros
2016-04-05 14:05   ` Roger Quadros
2016-04-05 14:05 ` [PATCH v6 06/12] usb: otg: get rid of CONFIG_USB_OTG_FSM in favour of CONFIG_USB_OTG Roger Quadros
2016-04-05 14:05   ` Roger Quadros
2016-04-18  8:05   ` Peter Chen
     [not found]     ` <20160418080514.GG4477-Fb7DQEYuewWctlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2016-04-20  8:12       ` Roger Quadros
2016-04-20  8:12         ` Roger Quadros
2016-04-05 14:05 ` [PATCH v6 07/12] usb: otg: add OTG/dual-role core Roger Quadros
2016-04-05 14:05   ` Roger Quadros
2016-04-07  8:52   ` Yoshihiro Shimoda
2016-04-07 11:45     ` Roger Quadros
2016-04-08 11:22       ` Yoshihiro Shimoda
2016-04-11 10:54         ` Roger Quadros [this message]
2016-04-14  8:36           ` Yoshihiro Shimoda
2016-04-14 10:59             ` Roger Quadros
     [not found]               ` <570F7827.8050707-l0cyMroinI0@public.gmane.org>
2016-04-14 11:15                 ` Yoshihiro Shimoda
2016-04-14 11:15                   ` Yoshihiro Shimoda
     [not found]                   ` <SG2PR06MB09195754753D7FDDAB05D3FDD8970-ESzmfEwOt/zNQ8RBPPB5A20DtJ1/0DrXvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-04-14 11:32                     ` Roger Quadros
2016-04-14 11:32                       ` Roger Quadros
     [not found]                       ` <570F7FB3.2040807-l0cyMroinI0@public.gmane.org>
2016-04-15  9:59                         ` Yoshihiro Shimoda
2016-04-15  9:59                           ` Yoshihiro Shimoda
     [not found]                           ` <SG2PR06MB09195F411F6BBE840F7A22D2D8680-ESzmfEwOt/zNQ8RBPPB5A20DtJ1/0DrXvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-04-15 10:57                             ` Roger Quadros
2016-04-15 10:57                               ` Roger Quadros
2016-04-15 10:03                       ` Yoshihiro Shimoda
2016-04-19  9:18                         ` Peter Chen
2016-04-20  5:08                           ` Yoshihiro Shimoda
2016-04-20  7:03                             ` Roger Quadros
     [not found]                               ` <571729C6.5000200-l0cyMroinI0@public.gmane.org>
2016-04-22  6:05                                 ` Peter Chen
2016-04-22  6:05                                   ` Peter Chen
2016-04-22  1:26                         ` Peter Chen
     [not found]                           ` <20160422012646.GA29299-Fb7DQEYuewWctlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2016-04-22  3:34                             ` Peter Chen
2016-04-22  3:34                               ` Peter Chen
     [not found]                               ` <20160422033414.GB29299-Fb7DQEYuewWctlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2016-04-22  5:57                                 ` Yoshihiro Shimoda
2016-04-22  5:57                                   ` Yoshihiro Shimoda
2016-04-19  8:06   ` Peter Chen
     [not found]     ` <20160419080649.GJ4477-Fb7DQEYuewWctlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2016-04-20  7:02       ` Roger Quadros
2016-04-20  7:02         ` Roger Quadros
2016-04-20  9:39         ` Peter Chen
     [not found]   ` <1459865117-7032-8-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2016-04-15  9:25     ` Peter Chen
2016-04-15  9:25       ` Peter Chen
2016-04-15 11:00       ` Roger Quadros
2016-04-15 11:00         ` Roger Quadros
2016-04-18  2:09         ` Peter Chen
2016-04-20  6:54           ` Roger Quadros
2016-04-20  6:54             ` Roger Quadros
2016-04-20  9:26             ` Peter Chen
2016-04-21  6:52     ` Peter Chen
2016-04-21  6:52       ` Peter Chen
2016-04-25 14:05       ` Roger Quadros
2016-04-25 14:05         ` Roger Quadros
2016-04-26  2:07   ` Jun Li
     [not found]     ` <AM4PR04MB213045DC3D1C1D67A7D9AF0689630-WOempg8NbQQzjTQnahXoOs9NdZoXdze2vxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-04-26  3:47       ` Peter Chen
2016-04-26  3:47         ` Peter Chen
2016-04-26  5:11         ` Jun Li
2016-04-26  5:11           ` Jun Li
     [not found]           ` <AM4PR04MB2130124412E09799A2CB01BF89630-WOempg8NbQQzjTQnahXoOs9NdZoXdze2vxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-04-26  6:28             ` Peter Chen
2016-04-26  6:28               ` Peter Chen
2016-04-26  7:00               ` Jun Li
2016-04-26  7:00                 ` Jun Li
2016-04-26  8:21                 ` Peter Chen
2016-04-27  3:15                   ` Peter Chen
     [not found]                     ` <20160427031509.GA22637-Fb7DQEYuewWctlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2016-04-27 10:59                       ` Roger Quadros
2016-04-27 10:59                         ` Roger Quadros
     [not found]                         ` <57209BA0.6040508-l0cyMroinI0@public.gmane.org>
2016-04-28  1:54                           ` Peter Chen
2016-04-28  1:54                             ` Peter Chen
     [not found]                             ` <20160428015409.GA12199-Fb7DQEYuewWctlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2016-04-28  8:01                               ` Roger Quadros
2016-04-28  8:01                                 ` Roger Quadros
2016-04-27 11:15     ` Roger Quadros
2016-04-05 14:05 ` [PATCH v6 08/12] usb: hcd: Adapt to OTG core Roger Quadros
2016-04-05 14:05   ` Roger Quadros
2016-04-18  6:29   ` Peter Chen
2016-04-19  8:14     ` Peter Chen
     [not found]       ` <20160419081446.GA15789-Fb7DQEYuewWctlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2016-04-20  6:47         ` Roger Quadros
2016-04-20  6:47           ` Roger Quadros
     [not found]     ` <20160418062937.GA4477-Fb7DQEYuewWctlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2016-04-20  6:46       ` Roger Quadros
2016-04-20  6:46         ` Roger Quadros
2016-04-27 10:16   ` Jun Li
2016-04-27 11:00     ` Roger Quadros
2016-04-27 11:11       ` Roger Quadros
2016-04-27 12:49         ` Jun Li
2016-04-27 13:18           ` Jun Li
2016-04-05 14:05 ` [PATCH v6 09/12] usb: gadget: udc: adapt " Roger Quadros
2016-04-05 14:05   ` Roger Quadros
     [not found]   ` <1459865117-7032-10-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2016-04-18  6:59     ` Peter Chen
2016-04-18  6:59       ` Peter Chen
     [not found]       ` <20160418065954.GB4477-Fb7DQEYuewWctlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2016-04-20  6:51         ` Roger Quadros
2016-04-20  6:51           ` Roger Quadros
2016-04-21  6:38   ` Jun Li
2016-04-25 14:04     ` Roger Quadros
2016-04-26  0:07       ` Jun Li
     [not found]         ` <AM4PR04MB2130B0F024C0B275514020DE89630-WOempg8NbQQzjTQnahXoOs9NdZoXdze2vxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-04-27 11:22           ` Roger Quadros
2016-04-27 11:22             ` Roger Quadros
     [not found]             ` <5720A106.1030702-l0cyMroinI0@public.gmane.org>
2016-04-28  9:54               ` Roger Quadros
2016-04-28  9:54                 ` Roger Quadros
2016-04-28 10:23                 ` Jun Li
2016-04-28 12:22                   ` Roger Quadros
2016-05-03  7:06                     ` Jun Li
2016-05-03 15:44                       ` Roger Quadros
     [not found]                         ` <5728C76E.9010405-l0cyMroinI0@public.gmane.org>
2016-05-04  1:47                           ` Peter Chen
2016-05-04  1:47                             ` Peter Chen
2016-05-04  3:35                         ` Peter Chen
2016-05-04  6:37                           ` Roger Quadros
2016-05-04  7:53                             ` Peter Chen
2016-05-04  8:03                             ` Jun Li
     [not found]                               ` <AM4PR04MB2130076A1E77301D143C9CAE897B0-WOempg8NbQQzjTQnahXoOs9NdZoXdze2vxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-05-04  8:40                                 ` Roger Quadros
2016-05-04  8:40                                   ` Roger Quadros
2016-05-04  8:39                                   ` Peter Chen
2016-04-05 14:05 ` [PATCH v6 10/12] usb: doc: dt-binding: Add otg-controller property Roger Quadros
2016-04-05 14:05   ` Roger Quadros
2016-04-05 14:05 ` [PATCH v6 11/12] usb: core: hub: Notify OTG fsm when A device sets b_hnp_enable Roger Quadros
2016-04-05 14:05   ` Roger Quadros
2016-04-18  7:08   ` Peter Chen
2016-04-27 14:35     ` Roger Quadros
2016-04-27 14:35       ` Roger Quadros
     [not found] ` <1459865117-7032-1-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2016-04-05 14:05   ` [PATCH v6 12/12] usb: host: xhci-plat: Add otg device to platform data Roger Quadros
2016-04-05 14:05     ` Roger Quadros
     [not found]     ` <1459865117-7032-13-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2016-04-06  3:23       ` Yoshihiro Shimoda
2016-04-06  3:23         ` Yoshihiro Shimoda
     [not found]         ` <SG2PR06MB09197D03470D6E6083270343D89F0-ESzmfEwOt/zNQ8RBPPB5A20DtJ1/0DrXvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-04-06  6:30           ` Roger Quadros
2016-04-06  6:30             ` Roger Quadros

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=570B8268.6090700@ti.com \
    --to=rogerq@ti.com \
    --cc=Joao.Pinto@synopsys.com \
    --cc=abrestic@chromium.org \
    --cc=balbi@kernel.org \
    --cc=dan.j.williams@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jun.li@freescale.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@linux.intel.com \
    --cc=peter.chen@freescale.com \
    --cc=r.baldyga@samsung.com \
    --cc=stern@rowland.harvard.edu \
    --cc=tony@atomide.com \
    --cc=yoshihiro.shimoda.uh@renesas.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.