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

Reply via email to