All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mattijs Korpershoek <mkorpershoek@baylibre.com>
To: Marek Vasut <marex@denx.de>, u-boot@lists.denx.de
Cc: Angus Ainslie <angus@akkea.ca>,
	Dmitrii Merkurev <dimorinny@google.com>,
	Eddie Cai <eddie.cai.linux@gmail.com>,
	Kever Yang <kever.yang@rock-chips.com>,
	Lukasz Majewski <lukma@denx.de>,
	Miquel Raynal <miquel.raynal@bootlin.com>,
	Nishanth Menon <nm@ti.com>,
	Patrice Chotard <patrice.chotard@foss.st.com>,
	Patrick Delaunay <patrick.delaunay@foss.st.com>,
	Philipp Tomsich <philipp.tomsich@vrull.eu>,
	Simon Glass <sjg@chromium.org>, Stefan Roese <sr@denx.de>,
	kernel@puri.sm
Subject: Re: [PATCH v2 15/17] usb: gadget: ether: Use plain udevice for UDC controller interaction
Date: Mon, 04 Sep 2023 17:37:53 +0200	[thread overview]
Message-ID: <874jka2bla.fsf@baylibre.com> (raw)
In-Reply-To: <ecff6c3d-dcb3-3669-c22a-b8f6146e302b@denx.de>

On lun., sept. 04, 2023 at 11:10, Marek Vasut <marex@denx.de> wrote:

> On 9/4/23 09:56, Mattijs Korpershoek wrote:
>> On ven., sept. 01, 2023 at 11:50, Marek Vasut <marex@denx.de> wrote:
>> 
>>> Convert to plain udevice interaction with UDC controller
>>> device, avoid the use of UDC uclass dev_array .
>>>
>>> Signed-off-by: Marek Vasut <marex@denx.de>
>>> ---
>>> Cc: Angus Ainslie <angus@akkea.ca>
>>> Cc: Dmitrii Merkurev <dimorinny@google.com>
>>> Cc: Eddie Cai <eddie.cai.linux@gmail.com>
>>> Cc: Kever Yang <kever.yang@rock-chips.com>
>>> Cc: Lukasz Majewski <lukma@denx.de>
>>> Cc: Miquel Raynal <miquel.raynal@bootlin.com>
>>> Cc: Mattijs Korpershoek <mkorpershoek@baylibre.com>
>>> Cc: Nishanth Menon <nm@ti.com>
>>> Cc: Patrice Chotard <patrice.chotard@foss.st.com>
>>> Cc: Patrick Delaunay <patrick.delaunay@foss.st.com>
>>> Cc: Philipp Tomsich <philipp.tomsich@vrull.eu>
>>> Cc: Simon Glass <sjg@chromium.org>
>>> Cc: Stefan Roese <sr@denx.de>
>>> Cc: kernel@puri.sm
>>> ---
>>> V2: Use udev->parent for UDC access
>>> ---
>>>   drivers/usb/gadget/ether.c | 20 +++++++++++---------
>>>   1 file changed, 11 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
>>> index 5ff06d3814b..11b1a6221b3 100644
>>> --- a/drivers/usb/gadget/ether.c
>>> +++ b/drivers/usb/gadget/ether.c
>>> @@ -1880,8 +1880,10 @@ static void eth_start(struct eth_dev *dev, gfp_t gfp_flags)
>>>   	}
>>>   }
>>>   
>>> -static int eth_stop(struct eth_dev *dev)
>>> +static int eth_stop(struct udevice *udev)
>>>   {
>>> +	struct ether_priv *priv = dev_get_priv(udev);
>>> +	struct eth_dev *dev = &priv->ethdev;
>>>   #ifdef RNDIS_COMPLETE_SIGNAL_DISCONNECT
>>>   	unsigned long ts;
>>>   	unsigned long timeout = CONFIG_SYS_HZ; /* 1 sec to stop RNDIS */
>>> @@ -1895,7 +1897,7 @@ static int eth_stop(struct eth_dev *dev)
>>>   		/* Wait until host receives OID_GEN_MEDIA_CONNECT_STATUS */
>>>   		ts = get_timer(0);
>>>   		while (get_timer(ts) < timeout)
>>> -			usb_gadget_handle_interrupts(0);
>>> +			dm_usb_gadget_handle_interrupts(udev->parent);
>>>   #endif
>>>   
>>>   		rndis_uninit(dev->rndis_config);
>>> @@ -2300,7 +2302,7 @@ static int usb_eth_start(struct udevice *udev)
>>>   			pr_err("The remote end did not respond in time.");
>>>   			goto fail;
>>>   		}
>>> -		usb_gadget_handle_interrupts(0);
>>> +		dm_usb_gadget_handle_interrupts(udev->parent);
>>>   	}
>>>   
>>>   	packet_received = 0;
>>> @@ -2370,7 +2372,7 @@ static int usb_eth_send(struct udevice *udev, void *packet, int length)
>>>   			printf("timeout sending packets to usb ethernet\n");
>>>   			return -1;
>>>   		}
>>> -		usb_gadget_handle_interrupts(0);
>>> +		dm_usb_gadget_handle_interrupts(udev->parent);
>>>   	}
>>>   	free(rndis_pkt);
>>>   
>>> @@ -2400,13 +2402,13 @@ static void usb_eth_stop(struct udevice *udev)
>>>   	 * 2) 'pullup' callback in your UDC driver can be improved to perform
>>>   	 * this deinitialization.
>>>   	 */
>>> -	eth_stop(dev);
>>> +	eth_stop(udev);
>>>   
>>>   	usb_gadget_disconnect(dev->gadget);
>>>   
>>>   	/* Clear pending interrupt */
>>>   	if (dev->network_started) {
>>> -		usb_gadget_handle_interrupts(0);
>>> +		dm_usb_gadget_handle_interrupts(udev->parent);
>>>   		dev->network_started = 0;
>>>   	}
>>>   }
>>> @@ -2416,7 +2418,7 @@ static int usb_eth_recv(struct udevice *dev, int flags, uchar **packetp)
>>>   	struct ether_priv *priv = dev_get_priv(dev);
>>>   	struct eth_dev *ethdev = &priv->ethdev;
>>>   
>>> -	usb_gadget_handle_interrupts(0);
>>> +	dm_usb_gadget_handle_interrupts(dev->parent);
>>>   
>>>   	if (packet_received) {
>>>   		if (ethdev->rx_req) {
>>> @@ -2467,7 +2469,7 @@ int usb_ether_init(void)
>>>   		return ret;
>>>   	}
>>>   
>>> -	return usb_gadget_initialize(0);
>>> +	return 0;
>> 
>> No udc_device_get() here?
>> 
>> This looks a little suspicious, because in the unbind() we call
>> udc_device_put().
>
> Look at how udc_device_get_by_index() is implemented and what it does, 
> compared to what usb_ether_init() does (hint: they are basically doing 
> the same thing). This udc_device_put() here is only a workaround for 
> platforms which are not using the bind command to bind USB ethernet yet.

Oh right. Thank you for explaining.

Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>

  reply	other threads:[~2023-09-04 15:38 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-01  9:49 [PATCH v2 01/17] dm: usb: udc: Factor out plain udevice handler functions Marek Vasut
2023-09-01  9:49 ` [PATCH v2 02/17] usb: sandbox: Add DM_USB_GADGET support Marek Vasut
2023-09-01  9:49 ` [PATCH v2 03/17] configs: sandbox: Enable DM_USB_GADGET Marek Vasut
2023-09-01  9:49 ` [PATCH v2 04/17] cmd: fastboot: Use plain udevice for UDC controller interaction Marek Vasut
2023-09-01  9:49 ` [PATCH v2 05/17] cmd: rockusb: " Marek Vasut
2023-09-04  7:37   ` Mattijs Korpershoek
2023-09-01  9:49 ` [PATCH v2 06/17] cmd: sdp: Reorder variable declaration Marek Vasut
2023-09-01  9:49 ` [PATCH v2 07/17] cmd: thordown: " Marek Vasut
2023-09-04  7:40   ` Mattijs Korpershoek
2023-09-01  9:49 ` [PATCH v2 08/17] cmd: ums: Use plain udevice for UDC controller interaction Marek Vasut
2023-09-01  9:49 ` [PATCH v2 09/17] dfu: Detach the controller on error Marek Vasut
2023-09-01  9:49 ` [PATCH v2 10/17] dfu: Use plain udevice for UDC controller interaction Marek Vasut
2023-09-01  9:49 ` [PATCH v2 11/17] spl: sdp: Detach the controller on error Marek Vasut
2023-09-01  9:49 ` [PATCH v2 12/17] sdp: Use plain udevice for UDC controller interaction Marek Vasut
2023-09-01  9:49 ` [PATCH v2 13/17] thordown: " Marek Vasut
2023-09-04  7:45   ` Mattijs Korpershoek
2023-09-01  9:50 ` [PATCH v2 14/17] usb: gadget: acm: " Marek Vasut
2023-09-04  7:46   ` Mattijs Korpershoek
2023-09-01  9:50 ` [PATCH v2 15/17] usb: gadget: ether: " Marek Vasut
2023-09-04  7:56   ` Mattijs Korpershoek
2023-09-04  9:10     ` Marek Vasut
2023-09-04 15:37       ` Mattijs Korpershoek [this message]
2023-09-01  9:50 ` [PATCH v2 16/17] dm: usb: udc: Drop legacy udevice handler functions Marek Vasut
2023-09-01  9:50 ` [PATCH v2 17/17] board: usb: Replace legacy usb_gadget_handle_interrupts() Marek Vasut
2023-09-22 10:00 ` [PATCH v2 01/17] dm: usb: udc: Factor out plain udevice handler functions Miquel Raynal
2023-09-27 13:59   ` Miquel Raynal
2023-09-30 21:11     ` Marek Vasut
2023-10-02 13:42       ` Miquel Raynal
2023-10-07 21:01         ` Marek Vasut

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=874jka2bla.fsf@baylibre.com \
    --to=mkorpershoek@baylibre.com \
    --cc=angus@akkea.ca \
    --cc=dimorinny@google.com \
    --cc=eddie.cai.linux@gmail.com \
    --cc=kernel@puri.sm \
    --cc=kever.yang@rock-chips.com \
    --cc=lukma@denx.de \
    --cc=marex@denx.de \
    --cc=miquel.raynal@bootlin.com \
    --cc=nm@ti.com \
    --cc=patrice.chotard@foss.st.com \
    --cc=patrick.delaunay@foss.st.com \
    --cc=philipp.tomsich@vrull.eu \
    --cc=sjg@chromium.org \
    --cc=sr@denx.de \
    --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 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.