summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLukasz Majewski <l.majewski@samsung.com>2013-07-18 13:19:14 +0200
committerMarek Vasut <marex@denx.de>2013-07-29 23:01:33 +0200
commit6bed7ce569fc409843ff2537937ea1b5fd0f694d (patch)
treebb17efd44c3e2f69ae3dd0f0a0a6bd31a06a2204 /drivers
parent6dd30af0fa5c2f509f6f789789151268bdfcde0c (diff)
downloadu-boot-imx-6bed7ce569fc409843ff2537937ea1b5fd0f694d.zip
u-boot-imx-6bed7ce569fc409843ff2537937ea1b5fd0f694d.tar.gz
u-boot-imx-6bed7ce569fc409843ff2537937ea1b5fd0f694d.tar.bz2
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 <l.majewski@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/dfu/dfu.c11
-rw-r--r--drivers/usb/gadget/f_dfu.c2
2 files changed, 13 insertions, 0 deletions
diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
index b8870ec..d73d510 100644
--- a/drivers/dfu/dfu.c
+++ b/drivers/dfu/dfu.c
@@ -16,9 +16,20 @@
#include <linux/list.h>
#include <linux/compiler.h>
+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 5321a68..37d04a1 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;