From: Heiko Schocher Date: Tue, 25 Jun 2013 11:59:29 +0000 (+0200) Subject: usb, dfu gadget: switch to dfu mode in dfu_bind X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=ad5f9778896534d9eae0c7499bcf5386e675257e;p=project%2Fbcm63xx%2Fu-boot.git usb, dfu gadget: switch to dfu mode in dfu_bind - set in to_dfu_mode() f_dfu->dfu_state = DFU_STATE_dfuIDLE as after every to_dfu_mode call this is done, so move this into to_dfu_mode - switch in dfu_bind() into dfu mode: This fixes wrong "dfu-util -l" output, when calling "dfu-util -l" after a board reset, without doing a download before. See also discussion here: http://lists.denx.de/pipermail/u-boot/2013-June/157272.html Signed-off-by: Heiko Schocher Cc: Lukasz Majewski Cc: Pantelis Antoniou Cc: Tom Rini Cc: Kyungmin Park Cc: Marek Vasut Cc: Wolfgang Denk Cc: Samuel Egli Acked-by: Lukasz Majewski Tested-by: Lukasz Majewski --- diff --git a/drivers/usb/gadget/f_dfu.c b/drivers/usb/gadget/f_dfu.c index a322ae5eb8..178a0044c4 100644 --- a/drivers/usb/gadget/f_dfu.c +++ b/drivers/usb/gadget/f_dfu.c @@ -183,6 +183,7 @@ static inline void to_dfu_mode(struct f_dfu *f_dfu) { f_dfu->usb_function.strings = dfu_strings; f_dfu->usb_function.hs_descriptors = f_dfu->function; + f_dfu->dfu_state = DFU_STATE_dfuIDLE; } static inline void to_runtime_mode(struct f_dfu *f_dfu) @@ -233,7 +234,6 @@ static int state_app_idle(struct f_dfu *f_dfu, case USB_REQ_DFU_DETACH: f_dfu->dfu_state = DFU_STATE_appDETACH; to_dfu_mode(f_dfu); - f_dfu->dfu_state = DFU_STATE_dfuIDLE; value = RET_ZLP; break; default: @@ -653,6 +653,8 @@ static int dfu_bind(struct usb_configuration *c, struct usb_function *f) ->iInterface = id; } + to_dfu_mode(f_dfu); + stringtab_dfu.strings = f_dfu->strings; cdev->req->context = f_dfu;