|
@@ -541,24 +541,21 @@ static int ecm_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
|
|
|
if (alt != 0)
|
|
|
goto fail;
|
|
|
|
|
|
- if (ecm->notify->driver_data) {
|
|
|
- VDBG(cdev, "reset ecm control %d\n", intf);
|
|
|
- usb_ep_disable(ecm->notify);
|
|
|
- }
|
|
|
+ VDBG(cdev, "reset ecm control %d\n", intf);
|
|
|
+ usb_ep_disable(ecm->notify);
|
|
|
if (!(ecm->notify->desc)) {
|
|
|
VDBG(cdev, "init ecm ctrl %d\n", intf);
|
|
|
if (config_ep_by_speed(cdev->gadget, f, ecm->notify))
|
|
|
goto fail;
|
|
|
}
|
|
|
usb_ep_enable(ecm->notify);
|
|
|
- ecm->notify->driver_data = ecm;
|
|
|
|
|
|
/* Data interface has two altsettings, 0 and 1 */
|
|
|
} else if (intf == ecm->data_id) {
|
|
|
if (alt > 1)
|
|
|
goto fail;
|
|
|
|
|
|
- if (ecm->port.in_ep->driver_data) {
|
|
|
+ if (ecm->port.in_ep->enabled) {
|
|
|
DBG(cdev, "reset ecm\n");
|
|
|
gether_disconnect(&ecm->port);
|
|
|
}
|
|
@@ -618,7 +615,7 @@ static int ecm_get_alt(struct usb_function *f, unsigned intf)
|
|
|
|
|
|
if (intf == ecm->ctrl_id)
|
|
|
return 0;
|
|
|
- return ecm->port.in_ep->driver_data ? 1 : 0;
|
|
|
+ return ecm->port.in_ep->enabled ? 1 : 0;
|
|
|
}
|
|
|
|
|
|
static void ecm_disable(struct usb_function *f)
|
|
@@ -628,14 +625,11 @@ static void ecm_disable(struct usb_function *f)
|
|
|
|
|
|
DBG(cdev, "ecm deactivated\n");
|
|
|
|
|
|
- if (ecm->port.in_ep->driver_data)
|
|
|
+ if (ecm->port.in_ep->enabled)
|
|
|
gether_disconnect(&ecm->port);
|
|
|
|
|
|
- if (ecm->notify->driver_data) {
|
|
|
- usb_ep_disable(ecm->notify);
|
|
|
- ecm->notify->driver_data = NULL;
|
|
|
- ecm->notify->desc = NULL;
|
|
|
- }
|
|
|
+ usb_ep_disable(ecm->notify);
|
|
|
+ ecm->notify->desc = NULL;
|
|
|
}
|
|
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
@@ -750,13 +744,11 @@ ecm_bind(struct usb_configuration *c, struct usb_function *f)
|
|
|
if (!ep)
|
|
|
goto fail;
|
|
|
ecm->port.in_ep = ep;
|
|
|
- ep->driver_data = cdev; /* claim */
|
|
|
|
|
|
ep = usb_ep_autoconfig(cdev->gadget, &fs_ecm_out_desc);
|
|
|
if (!ep)
|
|
|
goto fail;
|
|
|
ecm->port.out_ep = ep;
|
|
|
- ep->driver_data = cdev; /* claim */
|
|
|
|
|
|
/* NOTE: a status/notification endpoint is *OPTIONAL* but we
|
|
|
* don't treat it that way. It's simpler, and some newer CDC
|
|
@@ -766,7 +758,6 @@ ecm_bind(struct usb_configuration *c, struct usb_function *f)
|
|
|
if (!ep)
|
|
|
goto fail;
|
|
|
ecm->notify = ep;
|
|
|
- ep->driver_data = cdev; /* claim */
|
|
|
|
|
|
status = -ENOMEM;
|
|
|
|
|
@@ -820,14 +811,6 @@ fail:
|
|
|
usb_ep_free_request(ecm->notify, ecm->notify_req);
|
|
|
}
|
|
|
|
|
|
- /* we might as well release our claims on endpoints */
|
|
|
- if (ecm->notify)
|
|
|
- ecm->notify->driver_data = NULL;
|
|
|
- if (ecm->port.out_ep)
|
|
|
- ecm->port.out_ep->driver_data = NULL;
|
|
|
- if (ecm->port.in_ep)
|
|
|
- ecm->port.in_ep->driver_data = NULL;
|
|
|
-
|
|
|
ERROR(cdev, "%s: can't bind, err %d\n", f->name, status);
|
|
|
|
|
|
return status;
|