summaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget/f_dfu.c
diff options
context:
space:
mode:
authorTom Rini <trini@ti.com>2014-05-22 12:56:15 -0400
committerTom Rini <trini@ti.com>2014-05-22 12:56:15 -0400
commitc9afa7cea84c9b7346fcd2710577bcc386631aba (patch)
tree6b167eb7bd0ab10fff37259467e07feba24ba843 /drivers/usb/gadget/f_dfu.c
parentd7782d06534fe4fa47a49fa7c106de5ba85a9687 (diff)
parentfc25fa27e5f439705e9ca42182014e2d75d9f0ae (diff)
downloadtalos-obmc-uboot-c9afa7cea84c9b7346fcd2710577bcc386631aba.tar.gz
talos-obmc-uboot-c9afa7cea84c9b7346fcd2710577bcc386631aba.zip
Merge branch 'master' of git://git.denx.de/u-boot-usb
Diffstat (limited to 'drivers/usb/gadget/f_dfu.c')
-rw-r--r--drivers/usb/gadget/f_dfu.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/usb/gadget/f_dfu.c b/drivers/usb/gadget/f_dfu.c
index 1b1e1793d9..859fe828de 100644
--- a/drivers/usb/gadget/f_dfu.c
+++ b/drivers/usb/gadget/f_dfu.c
@@ -175,10 +175,17 @@ static void dnload_request_flush(struct usb_ep *ep, struct usb_request *req)
req->length, f_dfu->blk_seq_num);
}
+static inline int dfu_get_manifest_timeout(struct dfu_entity *dfu)
+{
+ return dfu->poll_timeout ? dfu->poll_timeout(dfu) :
+ DFU_MANIFEST_POLL_TIMEOUT;
+}
+
static void handle_getstatus(struct usb_request *req)
{
struct dfu_status *dstat = (struct dfu_status *)req->buf;
struct f_dfu *f_dfu = req->context;
+ struct dfu_entity *dfu = dfu_get_entity(f_dfu->altsetting);
dfu_set_poll_timeout(dstat, 0);
@@ -191,7 +198,8 @@ static void handle_getstatus(struct usb_request *req)
f_dfu->dfu_state = DFU_STATE_dfuMANIFEST;
break;
case DFU_STATE_dfuMANIFEST:
- dfu_set_poll_timeout(dstat, DFU_MANIFEST_POLL_TIMEOUT);
+ dfu_set_poll_timeout(dstat, dfu_get_manifest_timeout(dfu));
+ break;
default:
break;
}
OpenPOWER on IntegriCloud