summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-07-15 09:01:16 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-07-22 08:09:43 +0200
commit791281577f3d68dd7ab6a4af34d211d6ae38d374 (patch)
tree23a1159a55bc8a13bec6e75183ab7e8e4a66cf1f /drivers
parent3504357d8ab38c39fb70374f89fcf243f3dfb9a2 (diff)
downloadbarebox-791281577f3d68dd7ab6a4af34d211d6ae38d374.tar.gz
barebox-791281577f3d68dd7ab6a4af34d211d6ae38d374.tar.xz
USB: gadget: DFU: Use usb_assign_descriptors/usb_free_all_descriptors
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/gadget/dfu.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/drivers/usb/gadget/dfu.c b/drivers/usb/gadget/dfu.c
index a685cc1a16..52527036d1 100644
--- a/drivers/usb/gadget/dfu.c
+++ b/drivers/usb/gadget/dfu.c
@@ -132,19 +132,13 @@ dfu_bind(struct usb_configuration *c, struct usb_function *f)
header[i] = (struct usb_descriptor_header *) &usb_dfu_func;
header[i + 1] = NULL;
- /* copy descriptors, and track endpoint copies */
- f->fs_descriptors = usb_copy_descriptors(header);
- if (!f->fs_descriptors)
- goto out;
+ status = usb_assign_descriptors(f, header, header, NULL);
- /* support all relevant hardware speeds... we expect that when
- * hardware is dual speed, all bulk-capable endpoints work at
- * both speeds
- */
- if (gadget_is_dualspeed(c->cdev->gadget)) {
- /* copy descriptors, and track endpoint copies */
- f->hs_descriptors = usb_copy_descriptors(header);
- }
+ free(desc);
+ free(header);
+
+ if (status)
+ goto out;
for (i = 0; i < dfu_num_alt; i++)
printf("dfu: register alt%d(%s) with device %s\n",
@@ -164,9 +158,7 @@ dfu_unbind(struct usb_configuration *c, struct usb_function *f)
{
struct f_dfu *dfu = func_to_dfu(f);
- free(f->fs_descriptors);
- if (gadget_is_dualspeed(c->cdev->gadget))
- free(f->hs_descriptors);
+ usb_free_all_descriptors(f);
dma_free(dfu->dnreq->buf);
usb_ep_free_request(c->cdev->gadget->ep0, dfu->dnreq);