Revert: d7022078269b93dc6ee613a0a8519ce2ebe4a726
Accidentally merged without proper testing.
Change-Id: Iea6c3f7cd383357ac657fd15fde08cbab86bf809
Signed-off-by: David Brown <davidb@codeaurora.org>
diff --git a/drivers/usb/gadget/f_diag.c b/drivers/usb/gadget/f_diag.c
index c4c7941..987ae65 100644
--- a/drivers/usb/gadget/f_diag.c
+++ b/drivers/usb/gadget/f_diag.c
@@ -108,6 +108,8 @@
struct usb_function function;
struct usb_ep *out;
struct usb_ep *in;
+ struct usb_endpoint_descriptor *in_desc;
+ struct usb_endpoint_descriptor *out_desc;
struct list_head read_pool;
struct list_head write_pool;
struct work_struct config_work;
@@ -512,22 +514,21 @@
unsigned long flags;
int rc = 0;
- if (config_ep_by_speed(cdev->gadget, f, dev->in) ||
- config_ep_by_speed(cdev->gadget, f, dev->out)) {
- dev->in->desc = NULL;
- dev->out->desc = NULL;
- return -EINVAL;
- }
-
+ dev->in_desc = ep_choose(cdev->gadget,
+ (struct usb_endpoint_descriptor *)f->hs_descriptors[1],
+ (struct usb_endpoint_descriptor *)f->descriptors[1]);
+ dev->out_desc = ep_choose(cdev->gadget,
+ (struct usb_endpoint_descriptor *)f->hs_descriptors[2],
+ (struct usb_endpoint_descriptor *)f->descriptors[2]);
dev->in->driver_data = dev;
- rc = usb_ep_enable(dev->in);
+ rc = usb_ep_enable(dev->in, dev->in_desc);
if (rc) {
ERROR(dev->cdev, "can't enable %s, result %d\n",
dev->in->name, rc);
return rc;
}
dev->out->driver_data = dev;
- rc = usb_ep_enable(dev->out);
+ rc = usb_ep_enable(dev->out, dev->out_desc);
if (rc) {
ERROR(dev->cdev, "can't enable %s, result %d\n",
dev->out->name, rc);
@@ -629,7 +630,7 @@
/* claim the channel for this USB interface */
_ch->priv_usb = dev;
- dev->update_pid_and_serial_num = update_pid;
+ dev->update_pid_and_serial_num = update_pid;
dev->cdev = c->cdev;
dev->function.name = _ch->name;
dev->function.descriptors = fs_diag_desc;