summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-07-17 08:39:16 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-07-22 08:11:31 +0200
commite5a903db22922801f95a40cbc9d67f7d2c690dca (patch)
tree5205855b9996a7d309f43111790435fa9cdb0a50 /drivers
parent14a72d425891ccd5e15e0305d753d91b8d9c8c2c (diff)
downloadbarebox-e5a903db22922801f95a40cbc9d67f7d2c690dca.tar.gz
barebox-e5a903db22922801f95a40cbc9d67f7d2c690dca.tar.xz
USB: gadget: DFU: use usb_gstrings_attach
Instead of allocating string ids one by one use usb_gstrings_attach() to simplify things. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/gadget/dfu.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/usb/gadget/dfu.c b/drivers/usb/gadget/dfu.c
index 56601babad..616d7ad132 100644
--- a/drivers/usb/gadget/dfu.c
+++ b/drivers/usb/gadget/dfu.c
@@ -43,6 +43,7 @@
#include <linux/list.h>
#include <usb/gadget.h>
#include <linux/stat.h>
+#include <linux/err.h>
#include <usb/ch9.h>
#include <usb/dfu.h>
#include <config.h>
@@ -179,23 +180,16 @@ dfu_bind(struct usb_configuration *c, struct usb_function *f)
struct f_dfu *dfu = container_of(f, struct f_dfu, func);
int i;
int status;
-
- status = usb_string_id(c->cdev);
- if (status < 0)
- return status;
+ struct usb_string *us;
dfu_string_defs = xzalloc(sizeof(struct usb_string) * (dfu_files->num_entries + 2));
dfu_string_defs[0].s = "Generic DFU";
- dfu_string_defs[0].id = status;
i = 0;
file_list_for_each_entry(dfu_files, fentry) {
dfu_string_defs[i + 1].s = fentry->name;
- status = usb_string_id(c->cdev);
- if (status < 0)
- goto out;
- dfu_string_defs[i + 1].id = status;
i++;
}
+
dfu_string_defs[i + 1].s = NULL;
dfu_string_table.strings = dfu_string_defs;
@@ -211,6 +205,12 @@ dfu_bind(struct usb_configuration *c, struct usb_function *f)
dfu->dnreq->complete = dn_complete;
dfu->dnreq->zero = 0;
+ us = usb_gstrings_attach(cdev, dfu_strings, dfu_files->num_entries + 1);
+ if (IS_ERR(us)) {
+ status = PTR_ERR(us);
+ goto out;
+ }
+
/* allocate instance-specific interface IDs, and patch descriptors */
status = usb_interface_id(c, f);
if (status < 0)
@@ -226,7 +226,7 @@ dfu_bind(struct usb_configuration *c, struct usb_function *f)
desc[i].bInterfaceSubClass = 1;
desc[i].bInterfaceProtocol = 1;
desc[i].bAlternateSetting = i;
- desc[i].iInterface = dfu_string_defs[i + 1].id;
+ desc[i].iInterface = us[i + 1].id;
header[i] = (struct usb_descriptor_header *)&desc[i];
}
header[i] = (struct usb_descriptor_header *) &usb_dfu_func;