
Hi Patrick,
1/ DFU_GETSTATE response error
when the DFU device state is requested using libusb with DFU_GETSTATUS a error is generated : LIBUSB_ERROR_IO
I see the issue with my programmer tools based on dfu with libusb and I don't understood the actual code in U-Boot (req->actual is updated but not req->lenght ?)
With the proposed patch, I aligned the code on the GETSTATUS behavior: the correct lenght is provided in req->lenght as the other answer and the issue is solved.
PS: the issue not see with dfu-util as the existing function dfu_get_state() is never called in main (with dfu-util 0.9)
But I can reproduce the same issue with patched version of
dfu-util to add call to this function, on the dfu-util master branch
diff --git a/src/main.c b/src/main.c index 7f31d4c..d99ace9 100644 --- a/src/main.c +++ b/src/main.c @@ -535,6 +535,13 @@ dfustate: }
status_again:
printf("Determining device state: ");
ret = dfu_get_state(dfu_root->dev_handle,
dfu_root->interface);
if (ret < 0) {
errx(EX_IOERR, "error get_state: %s",
libusb_error_name(ret));
}
printf("state = %s\n", dfu_state_to_string(ret));
printf("Determining device status: "); ret = dfu_get_status(dfu_root, &status ); if (ret < 0) {
2/ harmonize handle_getstatus() with other function
=> add return value with size of the buffer as
- handle_getstate() add in part 1
or existing functions
- handle_dnload()
- handle_upload()
Patrick Delaunay (2): usb: gadget: dfu: correct size for USB_REQ_DFU_GETSTATE result usb: gadget: dfu: add result for handle_getstatus()
First of all thank you very much for fixing several DFU issues.
Secondly, please find my deepest apologies for such long delay. It will NOT happen again.
Your patches have been added to -dfu tree. I will send PR tomorrow.
I've also added following patch: http://patchwork.ozlabs.org/patch/704131/
For all of them:
Acked-by: Lukasz Majewski lukma@denx.de Tested-by: Lukasz Majewski lukma@denx.de
Test HW: BBB (am335x) Test SW: test/py/dfu
drivers/usb/gadget/f_dfu.c | 56 ++++++++++++++++++++-------------------------- drivers/usb/gadget/f_dfu.h | 1 - 2 files changed, 24 insertions(+), 33 deletions(-)
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de