U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Mattijs Korpershoek <mkorpershoek@baylibre.com>
To: Marek Vasut <marek.vasut+renesas@mailbox.org>,
	u-boot@lists.denx.de, Li Jun <jun.li@nxp.com>,
	Peng Fan <peng.fan@nxp.com>
Cc: Marek Vasut <marek.vasut+renesas@mailbox.org>,
	Alexander Sverdlin <alexander.sverdlin@siemens.com>,
	Felipe Balbi <felipe.balbi@linux.intel.com>,
	Lukasz Majewski <lukma@denx.de>, Nishanth Menon <nm@ti.com>,
	Simon Glass <sjg@chromium.org>,
	Thinh Nguyen <Thinh.Nguyen@synopsys.com>,
	Tom Rini <trini@konsulko.com>
Subject: Re: [PATCH 6/6] usb: dwc3: gadget: Convert epautoconf workaround to match_ep callback
Date: Tue, 11 Jun 2024 09:56:11 +0200	[thread overview]
Message-ID: <87v82fzzdw.fsf@baylibre.com> (raw)
In-Reply-To: <20240609213449.194762-6-marek.vasut+renesas@mailbox.org>

Hi Marek,

Thank you for the patch.

On dim., juin 09, 2024 at 23:32, Marek Vasut <marek.vasut+renesas@mailbox.org> wrote:

> Use the .match_ep() callback instead of workaround in core code.
> Replace descriptor parsing with ch9 macros with the same effect.
> Drop the SPL specific behavior, it is unclear why SPL should even
> be special.

Li, Peng,

Is this good for you as well?

You seem to be the author/committer of:
c93edbf5385e ("usb: gadget: don't change ep name for dwc3 while ep autoconfig")

I'd like to make sure this patch does not break your use-case.
Please let me know within 2 weeks or so, otherwise I'll apply the changes.

>
> Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>

To me, this looks good.

Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> # on vim3

> ---
> Cc: Alexander Sverdlin <alexander.sverdlin@siemens.com>
> Cc: Felipe Balbi <felipe.balbi@linux.intel.com>
> Cc: Lukasz Majewski <lukma@denx.de>
> Cc: Mattijs Korpershoek <mkorpershoek@baylibre.com>
> Cc: Nishanth Menon <nm@ti.com>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
> Cc: Tom Rini <trini@konsulko.com>
> Cc: u-boot@lists.denx.de
> ---
>  drivers/usb/dwc3/gadget.c       | 33 +++++++++++++++++++++++
>  drivers/usb/gadget/epautoconf.c | 46 +--------------------------------
>  2 files changed, 34 insertions(+), 45 deletions(-)
>
> diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
> index fab32575647..3ef2f016a60 100644
> --- a/drivers/usb/dwc3/gadget.c
> +++ b/drivers/usb/dwc3/gadget.c
> @@ -1606,6 +1606,38 @@ static int dwc3_gadget_stop(struct usb_gadget *g)
>  	return 0;
>  }
>  
> +static struct usb_ep *dwc3_find_ep(struct usb_gadget *gadget, const char *name)
> +{
> +	struct usb_ep *ep;
> +
> +	list_for_each_entry(ep, &gadget->ep_list, ep_list)
> +		if (!strcmp(ep->name, name))
> +			return ep;
> +
> +	return NULL;
> +}
> +
> +static struct
> +usb_ep *dwc3_gadget_match_ep(struct usb_gadget *gadget,
> +			     struct usb_endpoint_descriptor *desc,
> +			     struct usb_ss_ep_comp_descriptor *comp_desc)
> +{
> +	/*
> +	 * First try standard, common configuration: ep1in-bulk,
> +	 * ep2out-bulk, ep3in-int to match other udc drivers to avoid
> +	 * confusion in already deployed software (endpoint numbers
> +	 * hardcoded in userspace software/drivers)
> +	 */
> +	if (usb_endpoint_is_bulk_in(desc))
> +		return dwc3_find_ep(gadget, "ep1in");
> +	if (usb_endpoint_is_bulk_out(desc))
> +		return dwc3_find_ep(gadget, "ep2out");
> +	if (usb_endpoint_is_int_in(desc))
> +		return dwc3_find_ep(gadget, "ep3in");
> +
> +	return NULL;
> +}
> +
>  static const struct usb_gadget_ops dwc3_gadget_ops = {
>  	.get_frame		= dwc3_gadget_get_frame,
>  	.wakeup			= dwc3_gadget_wakeup,
> @@ -1613,6 +1645,7 @@ static const struct usb_gadget_ops dwc3_gadget_ops = {
>  	.pullup			= dwc3_gadget_pullup,
>  	.udc_start		= dwc3_gadget_start,
>  	.udc_stop		= dwc3_gadget_stop,
> +	.match_ep		= dwc3_gadget_match_ep,
>  };
>  
>  /* -------------------------------------------------------------------------- */
> diff --git a/drivers/usb/gadget/epautoconf.c b/drivers/usb/gadget/epautoconf.c
> index 66599ce8efa..a4da4f72de9 100644
> --- a/drivers/usb/gadget/epautoconf.c
> +++ b/drivers/usb/gadget/epautoconf.c
> @@ -166,18 +166,6 @@ static int ep_matches(
>  	return 1;
>  }
>  
> -static struct usb_ep *
> -find_ep(struct usb_gadget *gadget, const char *name)
> -{
> -	struct usb_ep	*ep;
> -
> -	list_for_each_entry(ep, &gadget->ep_list, ep_list) {
> -		if (0 == strcmp(ep->name, name))
> -			return ep;
> -	}
> -	return NULL;
> -}
> -
>  /**
>   * usb_ep_autoconfig - choose an endpoint matching the descriptor
>   * @gadget: The device to which the endpoint must belong.
> @@ -213,39 +201,7 @@ struct usb_ep *usb_ep_autoconfig(
>  	struct usb_endpoint_descriptor	*desc
>  )
>  {
> -	struct usb_ep	*ep = NULL;
> -	u8		type;
> -
> -	type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
> -
> -	/* First, apply chip-specific "best usage" knowledge.
> -	 * This might make a good usb_gadget_ops hook ...
> -	 */
> -	if (!IS_ENABLED(CONFIG_SPL_BUILD) &&
> -	    IS_ENABLED(CONFIG_USB_DWC3_GADGET) &&
> -	    !strcmp("dwc3-gadget", gadget->name)) {
> -		const char *name = NULL;
> -		/*
> -		 * First try standard, common configuration: ep1in-bulk,
> -		 * ep2out-bulk, ep3in-int to match other udc drivers to avoid
> -		 * confusion in already deployed software (endpoint numbers
> -		 * hardcoded in userspace software/drivers)
> -		 */
> -		if ((desc->bEndpointAddress & USB_DIR_IN) &&
> -		    type == USB_ENDPOINT_XFER_BULK)
> -			name = "ep1in";
> -		else if ((desc->bEndpointAddress & USB_DIR_IN) == 0 &&
> -			 type == USB_ENDPOINT_XFER_BULK)
> -			name = "ep2out";
> -		else if ((desc->bEndpointAddress & USB_DIR_IN) &&
> -			 type == USB_ENDPOINT_XFER_INT)
> -			name = "ep3in";
> -
> -		if (name)
> -			ep = find_ep(gadget, name);
> -		if (ep && ep_matches(gadget, ep, desc))
> -			return ep;
> -	}
> +	struct usb_ep *ep;
>  
>  	if (gadget->ops->match_ep) {
>  		ep = gadget->ops->match_ep(gadget, desc, NULL);
> -- 
> 2.43.0

  parent reply	other threads:[~2024-06-11  7:56 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-09 21:32 [PATCH 1/6] usb: gadget: g_dnl: Drop usb_gadget_controller_number() Marek Vasut
2024-06-09 21:32 ` [PATCH 2/6] usb: gadget: ether: " Marek Vasut
2024-06-11  7:16   ` Mattijs Korpershoek
2024-06-09 21:32 ` [PATCH 3/6] usb: gadget: " Marek Vasut
2024-06-11  7:20   ` Mattijs Korpershoek
2024-06-11  8:51     ` Lukasz Majewski
2024-06-11  9:20       ` Mattijs Korpershoek
2024-06-09 21:32 ` [PATCH 4/6] usb: gadget: Drop all gadget_is_*() functions Marek Vasut
2024-06-11  7:35   ` Mattijs Korpershoek
2024-06-09 21:32 ` [PATCH 5/6] usb: gadget: Add full ep_matches() check past .match_ep() callback Marek Vasut
2024-06-11  7:42   ` Mattijs Korpershoek
2024-06-09 21:32 ` [PATCH 6/6] usb: dwc3: gadget: Convert epautoconf workaround to match_ep callback Marek Vasut
2024-06-10 10:10   ` Sverdlin, Alexander
2024-06-11  7:56   ` Mattijs Korpershoek [this message]
2024-06-11  7:14 ` [PATCH 1/6] usb: gadget: g_dnl: Drop usb_gadget_controller_number() Mattijs Korpershoek
2024-07-05 12:02 ` Mattijs Korpershoek

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=87v82fzzdw.fsf@baylibre.com \
    --to=mkorpershoek@baylibre.com \
    --cc=Thinh.Nguyen@synopsys.com \
    --cc=alexander.sverdlin@siemens.com \
    --cc=felipe.balbi@linux.intel.com \
    --cc=jun.li@nxp.com \
    --cc=lukma@denx.de \
    --cc=marek.vasut+renesas@mailbox.org \
    --cc=nm@ti.com \
    --cc=peng.fan@nxp.com \
    --cc=sjg@chromium.org \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    /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