From: Anders Roxell <anders.roxell@linaro.org>
To: u-boot@lists.u-boot-project.org
Cc: marek.vasut@mailbox.org, trini@konsulko.com,
ilias.apalodimas@linaro.org, michal.simek@amd.com, lukma@denx.de,
alchark@flipper.net, jerome.forissier@arm.com,
dlechner@baylibre.com, anshuld@ti.com, sjg@chromium.org,
Anders Roxell <anders.roxell@linaro.org>,
Jerome Forissier <jerome.forissier@linaro.org>,
Jens Wiklander <jens.wiklander@linaro.org>
Subject: [PATCH v7 14/24] usb: gadget: fix up the function drivers after the resync
Date: Mon, 24 Aug 2026 17:41:23 +0200 [thread overview]
Message-ID: <20260824154133.217744-15-anders.roxell@linaro.org> (raw)
In-Reply-To: <20260824154133.217744-1-anders.roxell@linaro.org>
Adapt the gadget function drivers (acm, fastboot, mass_storage, rockusb,
sdp, thor, ether and composite) to the new gadget API.
Co-developed-by: Jerome Forissier <jerome.forissier@linaro.org>
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Co-developed-by: Jens Wiklander <jens.wiklander@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
---
drivers/usb/gadget/composite.c | 2 +-
drivers/usb/gadget/ether.c | 21 ++++++++++++++-------
drivers/usb/gadget/f_acm.c | 20 +++++++++++---------
drivers/usb/gadget/f_fastboot.c | 10 +++++-----
drivers/usb/gadget/f_mass_storage.c | 5 ++++-
drivers/usb/gadget/f_rockusb.c | 11 ++++++-----
drivers/usb/gadget/f_sdp.c | 12 ++++++++----
drivers/usb/gadget/f_thor.c | 19 +++++++++----------
8 files changed, 58 insertions(+), 42 deletions(-)
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index 04b85419931e..060788419553 100644
--- a/drivers/usb/gadget/composite.c
+++ b/drivers/usb/gadget/composite.c
@@ -833,7 +833,7 @@ static int bos_desc(struct usb_composite_dev *cdev)
/* Get Controller configuration */
if (cdev->gadget->ops->get_config_params) {
- cdev->gadget->ops->get_config_params(
+ cdev->gadget->ops->get_config_params(cdev->gadget,
&dcd_config_params);
} else {
dcd_config_params.bU1devExitLat =
diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
index 7973927e8a7f..13a20441419d 100644
--- a/drivers/usb/gadget/ether.c
+++ b/drivers/usb/gadget/ether.c
@@ -925,8 +925,9 @@ set_ether_config(struct eth_dev *dev, gfp_t gfp_flags)
dev->status = ep_desc(gadget, &hs_status_desc,
&fs_status_desc);
dev->status_ep->driver_data = dev;
+ dev->status_ep->desc = dev->status;
- result = usb_ep_enable(dev->status_ep, dev->status);
+ result = usb_ep_enable(dev->status_ep);
if (result != 0) {
debug("enable %s --> %d\n",
dev->status_ep->name, result);
@@ -951,14 +952,16 @@ set_ether_config(struct eth_dev *dev, gfp_t gfp_flags)
* from REMOTE_NDIS_HALT_MSG, reset from REMOTE_NDIS_RESET_MSG.
*/
if (!cdc_active(dev)) {
- result = usb_ep_enable(dev->in_ep, dev->in);
+ dev->in_ep->desc = dev->in;
+ result = usb_ep_enable(dev->in_ep);
if (result != 0) {
debug("enable %s --> %d\n",
dev->in_ep->name, result);
goto done;
}
- result = usb_ep_enable(dev->out_ep, dev->out);
+ dev->out_ep->desc = dev->out;
+ result = usb_ep_enable(dev->out_ep);
if (result != 0) {
debug("enable %s --> %d\n",
dev->out_ep->name, result);
@@ -1156,7 +1159,8 @@ static void issue_start_status(struct eth_dev *dev)
* FIXME iff req->context != null just dequeue it
*/
usb_ep_disable(dev->status_ep);
- usb_ep_enable(dev->status_ep, dev->status);
+ dev->status_ep->desc = dev->status;
+ usb_ep_enable(dev->status_ep);
/*
* 3.8.1 says to issue first NETWORK_CONNECTION, then
@@ -1314,7 +1318,8 @@ eth_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
break;
if (dev->status) {
usb_ep_disable(dev->status_ep);
- usb_ep_enable(dev->status_ep, dev->status);
+ dev->status_ep->desc = dev->status;
+ usb_ep_enable(dev->status_ep);
}
value = 0;
@@ -1333,8 +1338,10 @@ eth_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
if (wValue == 1) {
if (!cdc_active(dev))
break;
- usb_ep_enable(dev->in_ep, dev->in);
- usb_ep_enable(dev->out_ep, dev->out);
+ dev->in_ep->desc = dev->in;
+ usb_ep_enable(dev->in_ep);
+ dev->out_ep->desc = dev->out;
+ usb_ep_enable(dev->out_ep);
dev->cdc_filter = DEFAULT_FILTER;
if (dev->status)
issue_start_status(dev);
diff --git a/drivers/usb/gadget/f_acm.c b/drivers/usb/gadget/f_acm.c
index b6c11d97a62d..5f5400bab7ec 100644
--- a/drivers/usb/gadget/f_acm.c
+++ b/drivers/usb/gadget/f_acm.c
@@ -325,20 +325,20 @@ static struct usb_request *acm_start_ep(struct usb_ep *ep, void *complete_cb,
static int acm_start_data(struct f_acm *f_acm, struct usb_gadget *gadget)
{
- const struct usb_endpoint_descriptor *d;
int ret;
/* EP IN */
- d = ep_desc(gadget, &acm_hs_in_desc, &acm_fs_in_desc);
- ret = usb_ep_enable(f_acm->ep_in, d);
+ f_acm->ep_in->desc = ep_desc(gadget, &acm_hs_in_desc, &acm_fs_in_desc);
+ ret = usb_ep_enable(f_acm->ep_in);
if (ret)
return ret;
f_acm->req_in = acm_start_ep(f_acm->ep_in, acm_tx_complete, f_acm);
/* EP OUT */
- d = ep_desc(gadget, &acm_hs_out_desc, &acm_fs_out_desc);
- ret = usb_ep_enable(f_acm->ep_out, d);
+ f_acm->ep_out->desc = ep_desc(gadget, &acm_hs_out_desc,
+ &acm_fs_out_desc);
+ ret = usb_ep_enable(f_acm->ep_out);
if (ret)
return ret;
@@ -354,12 +354,11 @@ static int acm_start_data(struct f_acm *f_acm, struct usb_gadget *gadget)
static int acm_start_ctrl(struct f_acm *f_acm, struct usb_gadget *gadget)
{
- const struct usb_endpoint_descriptor *d;
-
usb_ep_disable(f_acm->ep_notify);
- d = ep_desc(gadget, &acm_hs_notify_desc, &acm_fs_notify_desc);
- usb_ep_enable(f_acm->ep_notify, d);
+ f_acm->ep_notify->desc = ep_desc(gadget, &acm_hs_notify_desc,
+ &acm_fs_notify_desc);
+ usb_ep_enable(f_acm->ep_notify);
acm_start_ep(f_acm->ep_notify, acm_notify_complete, f_acm);
@@ -454,6 +453,9 @@ static void acm_disable(struct usb_function *f)
usb_ep_disable(f_acm->ep_out);
usb_ep_disable(f_acm->ep_in);
usb_ep_disable(f_acm->ep_notify);
+ f_acm->ep_out->desc = NULL;
+ f_acm->ep_in->desc = NULL;
+ f_acm->ep_notify->desc = NULL;
if (f_acm->req_out) {
free(f_acm->req_out->buf);
diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c
index 8df0e3f331d1..e1eed5fa4cb4 100644
--- a/drivers/usb/gadget/f_fastboot.c
+++ b/drivers/usb/gadget/f_fastboot.c
@@ -320,13 +320,13 @@ static int fastboot_set_alt(struct usb_function *f,
struct usb_composite_dev *cdev = f->config->cdev;
struct usb_gadget *gadget = cdev->gadget;
struct f_fastboot *f_fb = func_to_fastboot(f);
- const struct usb_endpoint_descriptor *d;
debug("%s: func: %s intf: %d alt: %d\n",
__func__, f->name, interface, alt);
- d = fb_ep_desc(gadget, &fs_ep_out, &hs_ep_out, &ss_ep_out);
- ret = usb_ep_enable(f_fb->out_ep, d);
+ f_fb->out_ep->desc = fb_ep_desc(gadget, &fs_ep_out, &hs_ep_out,
+ &ss_ep_out);
+ ret = usb_ep_enable(f_fb->out_ep);
if (ret) {
puts("failed to enable out ep\n");
return ret;
@@ -340,8 +340,8 @@ static int fastboot_set_alt(struct usb_function *f,
}
f_fb->out_req->complete = rx_handler_command;
- d = fb_ep_desc(gadget, &fs_ep_in, &hs_ep_in, &ss_ep_in);
- ret = usb_ep_enable(f_fb->in_ep, d);
+ f_fb->in_ep->desc = fb_ep_desc(gadget, &fs_ep_in, &hs_ep_in, &ss_ep_in);
+ ret = usb_ep_enable(f_fb->in_ep);
if (ret) {
puts("failed to enable in ep\n");
goto err;
diff --git a/drivers/usb/gadget/f_mass_storage.c b/drivers/usb/gadget/f_mass_storage.c
index 7eb667c130d2..22a1352b6d2b 100644
--- a/drivers/usb/gadget/f_mass_storage.c
+++ b/drivers/usb/gadget/f_mass_storage.c
@@ -2159,7 +2159,8 @@ static int enable_endpoint(struct fsg_common *common, struct usb_ep *ep,
int rc;
ep->driver_data = common;
- rc = usb_ep_enable(ep, d);
+ ep->desc = d;
+ rc = usb_ep_enable(ep);
if (rc)
ERROR(common, "can't enable %s, result %d\n", ep->name, rc);
return rc;
@@ -2206,10 +2207,12 @@ reset:
/* Disable the endpoints */
if (fsg->bulk_in_enabled) {
usb_ep_disable(fsg->bulk_in);
+ fsg->bulk_in->desc = NULL;
fsg->bulk_in_enabled = 0;
}
if (fsg->bulk_out_enabled) {
usb_ep_disable(fsg->bulk_out);
+ fsg->bulk_out->desc = NULL;
fsg->bulk_out_enabled = 0;
}
diff --git a/drivers/usb/gadget/f_rockusb.c b/drivers/usb/gadget/f_rockusb.c
index d679cdae97c8..37957b202f8c 100644
--- a/drivers/usb/gadget/f_rockusb.c
+++ b/drivers/usb/gadget/f_rockusb.c
@@ -202,6 +202,8 @@ static void rockusb_disable(struct usb_function *f)
usb_ep_disable(f_rkusb->out_ep);
usb_ep_disable(f_rkusb->in_ep);
+ f_rkusb->out_ep->desc = NULL;
+ f_rkusb->in_ep->desc = NULL;
if (f_rkusb->out_req) {
free(f_rkusb->out_req->buf);
@@ -246,13 +248,12 @@ static int rockusb_set_alt(struct usb_function *f, unsigned int interface,
struct usb_composite_dev *cdev = f->config->cdev;
struct usb_gadget *gadget = cdev->gadget;
struct f_rockusb *f_rkusb = func_to_rockusb(f);
- const struct usb_endpoint_descriptor *d;
debug("%s: func: %s intf: %d alt: %d\n",
__func__, f->name, interface, alt);
- d = rkusb_ep_desc(gadget, &fs_ep_out, &hs_ep_out);
- ret = usb_ep_enable(f_rkusb->out_ep, d);
+ f_rkusb->out_ep->desc = rkusb_ep_desc(gadget, &fs_ep_out, &hs_ep_out);
+ ret = usb_ep_enable(f_rkusb->out_ep);
if (ret) {
printf("failed to enable out ep\n");
return ret;
@@ -266,8 +267,8 @@ static int rockusb_set_alt(struct usb_function *f, unsigned int interface,
}
f_rkusb->out_req->complete = rx_handler_command;
- d = rkusb_ep_desc(gadget, &fs_ep_in, &hs_ep_in);
- ret = usb_ep_enable(f_rkusb->in_ep, d);
+ f_rkusb->in_ep->desc = rkusb_ep_desc(gadget, &fs_ep_in, &hs_ep_in);
+ ret = usb_ep_enable(f_rkusb->in_ep);
if (ret) {
printf("failed to enable in ep\n");
goto err;
diff --git a/drivers/usb/gadget/f_sdp.c b/drivers/usb/gadget/f_sdp.c
index cd2c282247ac..0bb386053258 100644
--- a/drivers/usb/gadget/f_sdp.c
+++ b/drivers/usb/gadget/f_sdp.c
@@ -625,12 +625,14 @@ static int sdp_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
debug("%s: intf: %d alt: %d\n", __func__, intf, alt);
if (gadget_is_dualspeed(gadget) && gadget->speed == USB_SPEED_HIGH) {
- result = usb_ep_enable(sdp->in_ep, &in_hs_desc);
- result |= usb_ep_enable(sdp->out_ep, &out_hs_desc);
+ sdp->in_ep->desc = &in_hs_desc;
+ sdp->out_ep->desc = &out_hs_desc;
} else {
- result = usb_ep_enable(sdp->in_ep, &in_desc);
- result |= usb_ep_enable(sdp->out_ep, &out_desc);
+ sdp->in_ep->desc = &in_hs_desc;
+ sdp->out_ep->desc = &out_hs_desc;
}
+ result = usb_ep_enable(sdp->in_ep);
+ result |= usb_ep_enable(sdp->out_ep);
if (result)
return result;
@@ -662,6 +664,8 @@ static void sdp_disable(struct usb_function *f)
usb_ep_disable(sdp->in_ep);
usb_ep_disable(sdp->out_ep);
+ sdp->in_ep->desc = NULL;
+ sdp->out_ep->desc = NULL;
if (sdp->in_req) {
free(sdp->in_req->buf);
diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c
index 540b9f882378..210537d51e92 100644
--- a/drivers/usb/gadget/f_thor.c
+++ b/drivers/usb/gadget/f_thor.c
@@ -909,16 +909,15 @@ static int thor_eps_setup(struct usb_function *f)
struct usb_composite_dev *cdev = f->config->cdev;
struct usb_gadget *gadget = cdev->gadget;
struct thor_dev *dev = thor_func->dev;
- struct usb_endpoint_descriptor *d;
struct usb_request *req;
struct usb_ep *ep;
int result;
ep = dev->in_ep;
- d = ep_desc(gadget, &hs_in_desc, &fs_in_desc);
- debug("(d)bEndpointAddress: 0x%x\n", d->bEndpointAddress);
+ ep->desc = ep_desc(gadget, &hs_in_desc, &fs_in_desc);
+ debug("(d)bEndpointAddress: 0x%x\n", ep->desc->bEndpointAddress);
- result = usb_ep_enable(ep, d);
+ result = usb_ep_enable(ep);
if (result)
goto err;
@@ -933,10 +932,10 @@ static int thor_eps_setup(struct usb_function *f)
req->complete = thor_rx_tx_complete;
dev->in_req = req;
ep = dev->out_ep;
- d = ep_desc(gadget, &hs_out_desc, &fs_out_desc);
- debug("(d)bEndpointAddress: 0x%x\n", d->bEndpointAddress);
+ ep->desc = ep_desc(gadget, &hs_out_desc, &fs_out_desc);
+ debug("(d)bEndpointAddress: 0x%x\n", ep->desc->bEndpointAddress);
- result = usb_ep_enable(ep, d);
+ result = usb_ep_enable(ep);
if (result)
goto err_free_in_req;
@@ -951,10 +950,10 @@ static int thor_eps_setup(struct usb_function *f)
dev->out_req = req;
/* ACM control EP */
ep = dev->int_ep;
- d = ep_desc(gadget, &hs_int_desc, &fs_int_desc);
- debug("(d)bEndpointAddress: 0x%x\n", d->bEndpointAddress);
+ ep->desc = ep_desc(gadget, &hs_int_desc, &fs_int_desc);
+ debug("(d)bEndpointAddress: 0x%x\n", ep->desc->bEndpointAddress);
- result = usb_ep_enable(ep, d);
+ result = usb_ep_enable(ep);
if (result)
goto err;
--
2.53.0
next prev parent reply other threads:[~2026-08-24 16:47 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-24 15:41 [PATCH v7 00/24] usb: dwc3: part 2, make the resynced code work Anders Roxell
2026-08-24 15:41 ` [PATCH v7 01/24] dm: add helpers needed by the resynced DWC3 code Anders Roxell
2026-09-11 12:16 ` Mattijs Korpershoek
2026-08-24 15:41 ` [PATCH v7 02/24] usb: phy: add the usb_phy " Anders Roxell
2026-09-11 12:17 ` Mattijs Korpershoek
2026-08-24 15:41 ` [PATCH v7 03/24] usb: gadget: adapt the gadget API after the resync Anders Roxell
2026-08-24 15:41 ` [PATCH v7 04/24] usb: gadget: udc: make udc-core build in u-boot Anders Roxell
2026-08-24 15:41 ` [PATCH v7 05/24] usb: dwc3: make the core driver " Anders Roxell
2026-08-24 15:41 ` [PATCH v7 06/24] usb: dwc3: bring back the samsung usb phy driver Anders Roxell
2026-08-24 15:41 ` [PATCH v7 07/24] usb: dwc3: make gadget and ep0 build in u-boot Anders Roxell
2026-08-24 15:41 ` [PATCH v7 08/24] usb: gadget: udc: enable async callbacks on bind Anders Roxell
2026-08-24 15:41 ` [PATCH v7 09/24] usb: dwc3: ep0: flush and invalidate cache around ep0 transfers Anders Roxell
2026-08-24 15:41 ` [PATCH v7 10/24] usb: dwc3: make the am62 glue build in u-boot Anders Roxell
2026-08-24 15:41 ` [PATCH v7 11/24] usb: gadget: ci_udc: move to the udc-core registration Anders Roxell
2026-08-24 15:41 ` [PATCH v7 12/24] usb: gadget: ci_udc: set endpoint capabilities Anders Roxell
2026-08-24 15:41 ` [PATCH v7 13/24] usb: gadget: dwc2_udc_otg: fix up after the resync Anders Roxell
2026-08-24 15:41 ` Anders Roxell [this message]
2026-08-24 15:41 ` [PATCH v7 15/24] usb: gadget: fix up the last UDC drivers " Anders Roxell
2026-08-24 15:41 ` [PATCH v7 16/24] usb: gadget: atmel_usba_udc: set endpoint capabilities Anders Roxell
2026-08-24 15:41 ` [PATCH v7 17/24] usb: gadget: at91_udc: register with udc-core Anders Roxell
2026-08-24 15:41 ` [PATCH v7 18/24] usb: gadget: at91_udc: set endpoint capabilities Anders Roxell
2026-08-24 15:41 ` [PATCH v7 19/24] usb: musb-new: fix up after the resync Anders Roxell
2026-08-24 15:41 ` [PATCH v7 20/24] usb: musb-new: set endpoint capabilities Anders Roxell
2026-08-24 15:41 ` [PATCH v7 21/24] usb: mtu3: fix up after the resync Anders Roxell
2026-08-24 15:41 ` [PATCH v7 22/24] usb: mtu3: set endpoint capabilities Anders Roxell
2026-08-24 15:41 ` [PATCH v7 23/24] usb: host: xhci: fix up after the resync Anders Roxell
2026-08-24 15:41 ` [PATCH v7 24/24] usb: cdns3: " Anders Roxell
2026-08-25 9:42 ` [PATCH v7 00/24] usb: dwc3: part 2, make the resynced code work Anshul Dalal
2026-08-26 8:29 ` Anders Roxell
2026-08-27 7:48 ` Anshul Dalal
2026-08-28 12:26 ` Anders Roxell
2026-09-11 10:33 ` Love Kumar
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=20260824154133.217744-15-anders.roxell@linaro.org \
--to=anders.roxell@linaro.org \
--cc=alchark@flipper.net \
--cc=anshuld@ti.com \
--cc=dlechner@baylibre.com \
--cc=ilias.apalodimas@linaro.org \
--cc=jens.wiklander@linaro.org \
--cc=jerome.forissier@arm.com \
--cc=jerome.forissier@linaro.org \
--cc=lukma@denx.de \
--cc=marek.vasut@mailbox.org \
--cc=michal.simek@amd.com \
--cc=sjg@chromium.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.u-boot-project.org \
/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