From 6bed7ce569fc409843ff2537937ea1b5fd0f694d Mon Sep 17 00:00:00 2001 From: Lukasz Majewski Date: Thu, 18 Jul 2013 13:19:14 +0200 Subject: dfu: Implementation of target reset after communication with dfu-util's -R switch This patch extends dfu code to support transmission with -R switch specified at dfu-util. When -R is specified, the extra USB_REQ_DFU_DETACH request is sent after successful data transmission. Then dfu resources are released and reset command is issued. Signed-off-by: Lukasz Majewski Signed-off-by: Kyungmin Park --- drivers/dfu/dfu.c | 11 +++++++++++ drivers/usb/gadget/f_dfu.c | 2 ++ 2 files changed, 13 insertions(+) (limited to 'drivers') diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c index b8870ecf730..d73d5103919 100644 --- a/drivers/dfu/dfu.c +++ b/drivers/dfu/dfu.c @@ -16,9 +16,20 @@ #include #include +static bool dfu_reset_request; static LIST_HEAD(dfu_list); static int dfu_alt_num; +bool dfu_reset(void) +{ + return dfu_reset_request; +} + +void dfu_trigger_reset() +{ + dfu_reset_request = true; +} + static int dfu_find_alt_num(const char *s) { int i = 0; diff --git a/drivers/usb/gadget/f_dfu.c b/drivers/usb/gadget/f_dfu.c index 5321a689d4d..37d04a19285 100644 --- a/drivers/usb/gadget/f_dfu.c +++ b/drivers/usb/gadget/f_dfu.c @@ -312,6 +312,8 @@ static int state_dfu_idle(struct f_dfu *f_dfu, DFU_STATE_dfuMANIFEST_WAIT_RST; to_runtime_mode(f_dfu); f_dfu->dfu_state = DFU_STATE_appIDLE; + + dfu_trigger_reset(); break; default: f_dfu->dfu_state = DFU_STATE_dfuERROR; -- cgit v1.3.1