Hi,
please start a new thread
with patch [0/x] ....
and the patch series as reply
use git-send-email for this
Best Resgards,
J.
On 11:34 Wed 13 Mar , Cerrato Renaud wrote:
> Inlined patch below.
>
>
> Signed-off-by: Cerrato Renaud <[email protected]>
> ---
> drivers/usb/gadget/dfu.c | 6 ++----
> 1 files changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/usb/gadget/dfu.c b/drivers/usb/gadget/dfu.c
> index e051879..e4af567 100644
> --- a/drivers/usb/gadget/dfu.c
> +++ b/drivers/usb/gadget/dfu.c
> @@ -514,14 +514,12 @@ static void dfu_disable(struct usb_function *f)
> struct f_dfu *dfu = func_to_dfu(f);
>
> switch (dfu->dfu_state) {
> + case DFU_STATE_dfuIDLE:
> case DFU_STATE_appDETACH:
> dfu->dfu_state = DFU_STATE_dfuIDLE;
> break;
> - case DFU_STATE_dfuMANIFEST_WAIT_RST:
> - dfu->dfu_state = DFU_STATE_appIDLE;
> - break;
> default:
> - dfu->dfu_state = DFU_STATE_appDETACH;
> + dfu->dfu_state = DFU_STATE_appIDLE;
> break;
> }
>
> --
> 1.7.2.5
>
>
> On 12/03/2013 17:38, Renaud C. wrote:
> > When an USB_REQ_DFU_DETACH request is received, the device state switch to
> > DFU_STATE_appDETACH, and then wait for an usb reset to switch to
> > DFU_STATE_dfuIDLE (through dfu_disable() being called).
> >
> > I noticed that using dfu-util v0.7 on my AT91SAM9260 board, the programming
> > failed because of the device not entering the DFU_STATE_dfuIDLE after an
> > usb reset (staying in the DFU_STATE_appDETACH state).
> >
> > According to the current implementation, once the USB_REQ_DFU_DETACH is
> > sent and right after the usb reset, if the DFU client set more than one
> > configuration (by iterating over them for example), the device state will
> > reset to the DFU_STATE_appDETACH state on the 2nd iteration because of the
> > following line in set_config (composite.c, line 362) :
> >
> > ...
> > if(cdev->config)
> > reset_config(); // will call dfu_disable() again!
> > ...
> >
> > The attached patch is a *try* to fix the issue by leaving the device in the
> > DFU_STATE_dfuIDLE state after an usb reset if already in that state.
> > dfu-util will complain about the device already in the DFU_STATE_dfuIDLE on
> > the next start, but everything is still working.
> >
> > This may need a REVISIT, but since the dfu_disable() gets called on both
> > configuration change and usb reset, we can't do this easily for now..
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > barebox mailing list
> > [email protected]
> > http://lists.infradead.org/mailman/listinfo/barebox
>
>
>
> _______________________________________________
> barebox mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/barebox
_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox