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 <[email protected]> Signed-off-by: Jerome Forissier <[email protected]> Co-developed-by: Jens Wiklander <[email protected]> Signed-off-by: Jens Wiklander <[email protected]> Signed-off-by: Anders Roxell <[email protected]> --- 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 87ed25e8bb3a..0eb4af993717 100644 --- a/drivers/usb/gadget/f_mass_storage.c +++ b/drivers/usb/gadget/f_mass_storage.c @@ -2158,7 +2158,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; @@ -2205,10 +2206,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

