linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Roger Quadros <rogerq@ti.com>
To: Peter Chen <hzpeterchen@gmail.com>
Cc: <peter.chen@freescale.com>, <balbi@kernel.org>,
	<tony@atomide.com>, <gregkh@linuxfoundation.org>,
	<dan.j.williams@intel.com>, <mathias.nyman@linux.intel.com>,
	<Joao.Pinto@synopsys.com>, <sergei.shtylyov@cogentembedded.com>,
	<jun.li@freescale.com>, <grygorii.strashko@ti.com>,
	<yoshihiro.shimoda.uh@renesas.com>, <robh@kernel.org>,
	<nsekhar@ti.com>, <b-liu@ti.com>, <linux-usb@vger.kernel.org>,
	<linux-omap@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<devicetree@vger.kernel.org>
Subject: Re: [PATCH v9 08/14] usb: otg: add OTG/dual-role core
Date: Thu, 9 Jun 2016 10:24:44 +0300	[thread overview]
Message-ID: <575919BC.8080003@ti.com> (raw)
In-Reply-To: <20160608124204.GB10029@shlinux2>

On 08/06/16 15:42, Peter Chen wrote:
> On Wed, Jun 08, 2016 at 01:12:10PM +0300, Roger Quadros wrote:
>> Hi,
>>
>> On 08/06/16 12:53, Peter Chen wrote:
>>> On Wed, Jun 08, 2016 at 12:03:40PM +0300, Roger Quadros wrote:
>>>> +int usb_otg_unregister(struct device *dev)
>>>> +{
>>>> +	struct usb_otg *otg;
>>>> +
>>>> +	mutex_lock(&otg_list_mutex);
>>>> +	otg = usb_otg_get_data(dev);
>>>> +	if (!otg) {
>>>> +		dev_err(dev, "otg: %s: device not in otg list\n",
>>>> +			__func__);
>>>> +		mutex_unlock(&otg_list_mutex);
>>>> +		return -EINVAL;
>>>> +	}
>>>> +
>>>> +	/* prevent unregister till both host & gadget have unregistered */
>>>> +	if (otg->host || otg->gadget) {
>>>> +		dev_err(dev, "otg: %s: host/gadget still registered\n",
>>>> +			__func__);
>>>
>>> You need to call mutex_unlock here
>>
>> Indeed. good catch.
>>>
>>>> +
>>>> +int usb_otg_gadget_ready(struct usb_gadget *gadget, bool ready)
>>>> +{
>>>
>>> What this API is for? Why need it in this version?
>>
>> we moved gadget to otg registration from udc_bind_to_driver() to usb_add_gadget_udc_release().
>> This means there is a window when gadget function driver (e.g. g_zero) is not loaded.
>> We don't want to start the gadget controller in that window.
>>
>> usb_otg_gadget_ready() is used by gadget core to notify the otg core when the function driver
>> is ready or not-ready.
>>
> 
> Why you need to move this from gadget's probe to udc's probe? Currently,
> the sequence of gadget and udc's probe is random, but udc_bind_to_driver
> is called when udc is ready.
> 
Because we need to support -EPROBE_DEFER at udc probe.
At udc_bind_to_driver there is no scope for -EPROBE_DEFER.

Another issue is that we need to register with otg and have otg->caps available
before driver->bind() is called in udc_bind_to_driver(). Else gadget function
will not have the correct OTG descriptor.

cheers,
-roger

  reply	other threads:[~2016-06-09  7:25 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-08  9:03 [PATCH v9 00/14] USB OTG/dual-role framework Roger Quadros
2016-06-08  9:03 ` [PATCH v9 01/14] usb: hcd: Initialize hcd->flags to 0 Roger Quadros
2016-06-08  9:03 ` [PATCH v9 02/14] usb: otg-fsm: Prevent build warning "VDBG" redefined Roger Quadros
2016-06-08  9:03 ` [PATCH v9 03/14] usb: hcd.h: Add OTG to HCD interface Roger Quadros
2016-06-08 11:39   ` Sergei Shtylyov
2016-06-08 12:04     ` Roger Quadros
2016-06-08 12:10       ` Sergei Shtylyov
2016-06-09  7:31         ` Roger Quadros
2016-06-09 10:16           ` Sergei Shtylyov
2016-06-09 14:11             ` Alan Stern
2016-06-10  7:01               ` Roger Quadros
2016-06-09  7:51   ` [PATCH v10 " Roger Quadros
2016-06-08  9:03 ` [PATCH v9 04/14] usb: otg-fsm: use usb_otg wherever possible Roger Quadros
2016-06-08  9:03 ` [PATCH v9 05/14] usb: otg-fsm: move host controller operations into usb_otg->hcd_ops Roger Quadros
2016-06-08  9:03 ` [PATCH v9 06/14] usb: gadget.h: Add OTG to gadget interface Roger Quadros
2016-06-08  9:03 ` [PATCH v9 07/14] usb: otg: get rid of CONFIG_USB_OTG_FSM in favour of CONFIG_USB_OTG Roger Quadros
2016-06-08  9:03 ` [PATCH v9 08/14] usb: otg: add OTG/dual-role core Roger Quadros
2016-06-08  9:53   ` Peter Chen
2016-06-08 10:12     ` Roger Quadros
2016-06-08 12:42       ` Peter Chen
2016-06-09  7:24         ` Roger Quadros [this message]
2016-06-12  6:26           ` Peter Chen
2016-06-12 10:56             ` Peter Chen
2016-06-09  7:53   ` [PATCH v10 " Roger Quadros
2016-06-09 12:34     ` Sergei Shtylyov
2016-06-10  7:04       ` Roger Quadros
2016-06-10 10:19       ` Roger Quadros
2016-06-10 10:44         ` Sergei Shtylyov
2016-06-10 10:54           ` Roger Quadros
2016-06-10 11:02             ` Felipe Balbi
2016-06-08  9:03 ` [PATCH v9 09/14] usb: of: add an API to get OTG device from USB controller node Roger Quadros
2016-06-08  9:03 ` [PATCH v9 10/14] usb: otg: add hcd companion support Roger Quadros
2016-06-08  9:03 ` [PATCH v9 11/14] usb: otg: use dev_dbg() instead of VDBG() Roger Quadros
2016-06-08 15:10   ` Joe Perches
2016-06-09  7:25     ` Roger Quadros
2016-06-09  7:55   ` [PATCH v10 " Roger Quadros
2016-06-09 15:43     ` Joe Perches
2016-06-10  7:05       ` Roger Quadros
2016-06-08  9:03 ` [PATCH v9 12/14] usb: hcd: Adapt to OTG core Roger Quadros
2016-06-08 11:42   ` Sergei Shtylyov
2016-06-08 12:06     ` Roger Quadros
2016-06-08 12:11       ` Sergei Shtylyov
2016-06-09  7:27         ` Roger Quadros
2016-06-08  9:03 ` [PATCH v9 13/14] usb: gadget: udc: adapt " Roger Quadros
2016-06-09 10:49   ` Yoshihiro Shimoda
2016-06-10  7:06     ` Roger Quadros
2016-06-08  9:03 ` [PATCH v9 14/14] usb: host: xhci-plat: Add otg device to platform data Roger Quadros
2016-06-09  5:27 ` [PATCH v9 00/14] USB OTG/dual-role framework Peter Chen
2016-06-09  7:30   ` Roger Quadros
2016-06-09 10:13     ` Yoshihiro Shimoda

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=575919BC.8080003@ti.com \
    --to=rogerq@ti.com \
    --cc=Joao.Pinto@synopsys.com \
    --cc=b-liu@ti.com \
    --cc=balbi@kernel.org \
    --cc=dan.j.williams@intel.com \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=grygorii.strashko@ti.com \
    --cc=hzpeterchen@gmail.com \
    --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=nsekhar@ti.com \
    --cc=peter.chen@freescale.com \
    --cc=robh@kernel.org \
    --cc=sergei.shtylyov@cogentembedded.com \
    --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 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).