All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Chen <peter.chen@freescale.com>
To: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: <linux-usb@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	"Ruslan Bilovol" <ruslan.bilovol@gmail.com>,
	Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Subject: Re: [PATCH v6 1/4] usb: gadget: bind UDC by name passed via usb_gadget_driver structure
Date: Fri, 20 Nov 2015 17:21:45 +0800	[thread overview]
Message-ID: <20151120092144.GD30829@shlinux2> (raw)
In-Reply-To: <1448009652-14716-2-git-send-email-m.szyprowski@samsung.com>

On Fri, Nov 20, 2015 at 09:54:09AM +0100, Marek Szyprowski wrote:
> From: Ruslan Bilovol <ruslan.bilovol@gmail.com>
> 
> Introduce new 'udc_name' member to usb_gadget_driver structure.
> The 'udc_name' is a name of UDC that usb_gadget_driver should
> be bound to. If udc_name is NULL, it will be bound to any
> available UDC.
> 
> Tested-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Signed-off-by: Ruslan Bilovol <ruslan.bilovol@gmail.com>
> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> ---
>  drivers/usb/gadget/udc/udc-core.c | 24 +++++++++++++++++++-----
>  include/linux/usb/gadget.h        |  4 ++++
>  2 files changed, 23 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/usb/gadget/udc/udc-core.c b/drivers/usb/gadget/udc/udc-core.c
> index f660afb..429d64e 100644
> --- a/drivers/usb/gadget/udc/udc-core.c
> +++ b/drivers/usb/gadget/udc/udc-core.c
> @@ -549,21 +549,35 @@ EXPORT_SYMBOL_GPL(usb_udc_attach_driver);
>  int usb_gadget_probe_driver(struct usb_gadget_driver *driver)
>  {
>  	struct usb_udc		*udc = NULL;
> -	int			ret;
> +	int			ret = -ENODEV;
>  
>  	if (!driver || !driver->bind || !driver->setup)
>  		return -EINVAL;
>  
>  	mutex_lock(&udc_lock);
> -	list_for_each_entry(udc, &udc_list, list) {
> -		/* For now we take the first one */
> -		if (!udc->driver)
> +	if (driver->udc_name) {
> +		list_for_each_entry(udc, &udc_list, list) {
> +			ret = strcmp(driver->udc_name, dev_name(&udc->dev));
> +			if (!ret)
> +				break;
> +		}
> +		if (ret)
> +			ret = -ENODEV;
> +		else if (udc->driver)
> +			ret = -EBUSY;
> +		else
>  			goto found;
> +	} else {
> +		list_for_each_entry(udc, &udc_list, list) {
> +			/* For now we take the first one */
> +			if (!udc->driver)
> +				goto found;
> +		}
>  	}
>  
>  	pr_debug("couldn't find an available UDC\n");
>  	mutex_unlock(&udc_lock);
> -	return -ENODEV;
> +	return ret;
>  found:
>  	ret = udc_bind_to_driver(udc, driver);
>  	mutex_unlock(&udc_lock);
> diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
> index 3d583a1..b32e44f 100644
> --- a/include/linux/usb/gadget.h
> +++ b/include/linux/usb/gadget.h
> @@ -1012,6 +1012,8 @@ static inline int usb_gadget_activate(struct usb_gadget *gadget)
>   * @reset: Invoked on USB bus reset. It is mandatory for all gadget drivers
>   *	and should be called in_interrupt.
>   * @driver: Driver model state for this driver.
> + * @udc_name: A name of UDC this driver should be bound to. If udc_name is NULL,
> + * 	this driver will be bound to any available UDC.
>   *
>   * Devices are disabled till a gadget driver successfully bind()s, which
>   * means the driver will handle setup() requests needed to enumerate (and
> @@ -1072,6 +1074,8 @@ struct usb_gadget_driver {
>  
>  	/* FIXME support safe rmmod */
>  	struct device_driver	driver;
> +
> +	char			*udc_name;
>  };
>  

When trying to apply for testing, I meet below warning:

Applying: usb: gadget: bind UDC by name passed via usb_gadget_driver
structure
WARNING: please, no space before tabs
#55: FILE: include/linux/usb/gadget.h:1016:
+ * ^Ithis driver will be bound to any available UDC.$

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

-- 

Best Regards,
Peter Chen

  reply	other threads:[~2015-11-20  9:24 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-20  8:54 [PATCH v6 0/4] usb/gadget: independent registration of gadgets and gadget drivers Marek Szyprowski
2015-11-20  8:54 ` [PATCH v6 1/4] usb: gadget: bind UDC by name passed via usb_gadget_driver structure Marek Szyprowski
2015-11-20  9:21   ` Peter Chen [this message]
2015-11-20  8:54 ` [PATCH v6 2/4] usb: gadget: configfs: pass UDC name via usb_gadget_driver struct Marek Szyprowski
2015-11-20  9:22   ` Peter Chen
2015-11-20  8:54 ` [PATCH v6 3/4] usb: gadget: udc-core: remove unused usb_udc_attach_driver() Marek Szyprowski
2015-11-20  8:54 ` [PATCH v6 4/4] usb: gadget: udc-core: independent registration of gadgets and gadget drivers Marek Szyprowski
2015-11-20  9:26   ` Peter Chen
2015-11-20  9:45     ` Marek Szyprowski
2015-11-20  9:51       ` Peter Chen
2015-11-20 16:27   ` Alan Stern
2015-11-23  7:40     ` Peter Chen
2015-11-23  7:44   ` Peter Chen

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=20151120092144.GD30829@shlinux2 \
    --to=peter.chen@freescale.com \
    --cc=b.zolnierkie@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=ruslan.bilovol@gmail.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.