Merge branch 'for-next/dfu'
This commit is contained in:
commit
fbf087808b
|
@ -101,7 +101,7 @@ static int do_dfu(int argc, char *argv[])
|
|||
char *manufacturer = "barebox";
|
||||
const char *productname = barebox_get_model();
|
||||
u16 idVendor = 0, idProduct = 0;
|
||||
|
||||
int ret;
|
||||
|
||||
while((opt = getopt(argc, argv, "m:p:V:P:")) > 0) {
|
||||
switch(opt) {
|
||||
|
@ -134,6 +134,7 @@ static int do_dfu(int argc, char *argv[])
|
|||
dfu_alts = xrealloc(dfu_alts, sizeof(*dfu_alts) * (n + 1));
|
||||
if (dfu_do_parse_one(argstr, &endptr, &dfu_alts[n])) {
|
||||
printf("parse error\n");
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
argstr = endptr;
|
||||
|
@ -147,7 +148,7 @@ static int do_dfu(int argc, char *argv[])
|
|||
pdata.idVendor = idVendor;
|
||||
pdata.idProduct = idProduct;
|
||||
|
||||
usb_dfu_register(&pdata);
|
||||
ret = usb_dfu_register(&pdata);
|
||||
|
||||
out:
|
||||
while (n) {
|
||||
|
@ -155,8 +156,10 @@ out:
|
|||
free(dfu_alts[n].name);
|
||||
free(dfu_alts[n].dev);
|
||||
};
|
||||
|
||||
free(dfu_alts);
|
||||
return 1;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
BAREBOX_CMD_HELP_START(dfu)
|
||||
|
|
|
@ -1327,7 +1327,7 @@ int usb_gadget_poll(void)
|
|||
u32 value;
|
||||
|
||||
if (!udc->udp_baseaddr)
|
||||
return 0;
|
||||
return -ENODEV;
|
||||
|
||||
value = gpio_get_value(udc->board.vbus_pin);
|
||||
value ^= udc->board.vbus_active_low;
|
||||
|
|
|
@ -682,6 +682,8 @@ static struct usb_composite_driver dfu_driver = {
|
|||
|
||||
int usb_dfu_register(struct usb_dfu_pdata *pdata)
|
||||
{
|
||||
int ret;
|
||||
|
||||
dfu_devs = pdata->alts;
|
||||
dfu_num_alt = pdata->num_alts;
|
||||
dfu_dev_descriptor.idVendor = pdata->idVendor;
|
||||
|
@ -692,7 +694,10 @@ int usb_dfu_register(struct usb_dfu_pdata *pdata)
|
|||
usb_composite_register(&dfu_driver);
|
||||
|
||||
while (1) {
|
||||
usb_gadget_poll();
|
||||
ret = usb_gadget_poll();
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (ctrlc() || dfudetach)
|
||||
goto out;
|
||||
}
|
||||
|
|
|
@ -1938,6 +1938,9 @@ int usb_gadget_poll(void)
|
|||
u32 irq_src;
|
||||
int status = 0;
|
||||
|
||||
if (!udc)
|
||||
return -ENODEV;
|
||||
|
||||
/* Disable ISR for OTG host mode */
|
||||
if (udc->stopped)
|
||||
return -EIO;
|
||||
|
|
Loading…
Reference in New Issue