]> git.sur5r.net Git - u-boot/blobdiff - drivers/dfu/dfu.c
dw_mmc: cleanups
[u-boot] / drivers / dfu / dfu.c
index 6cd3fbb58ae4a6e1f13a4125b8dc536b521fb8ab..55e6a83b9ad6956ccc1013bdb227d99d5f9ddfbc 100644 (file)
 #include <linux/list.h>
 #include <linux/compiler.h>
 
-static bool dfu_reset_request;
+static bool dfu_detach_request;
 static LIST_HEAD(dfu_list);
 static int dfu_alt_num;
 static int alt_num_cnt;
 static struct hash_algo *dfu_hash_algo;
 
-bool dfu_reset(void)
+/*
+ * The purpose of the dfu_usb_get_reset() function is to
+ * provide information if after USB_DETACH request
+ * being sent the dfu-util performed reset of USB
+ * bus.
+ *
+ * Described behaviour is the only way to distinct if
+ * user has typed -e (detach) or -R (reset) when invoking
+ * dfu-util command.
+ *
+ */
+__weak bool dfu_usb_get_reset(void)
+{
+       return true;
+}
+
+bool dfu_detach(void)
+{
+       return dfu_detach_request;
+}
+
+void dfu_trigger_detach(void)
 {
-       return dfu_reset_request;
+       dfu_detach_request = true;
 }
 
-void dfu_trigger_reset()
+void dfu_clear_detach(void)
 {
-       dfu_reset_request = true;
+       dfu_detach_request = false;
 }
 
 static int dfu_find_alt_num(const char *s)
@@ -332,7 +353,7 @@ int dfu_read(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
                case DFU_RAM_ADDR:
                        break;
                default:
-                       if (dfu->r_left >= dfu_buf_size) {
+                       if (dfu->r_left > dfu_buf_size) {
                                printf("%s: File too big for buffer\n",
                                       __func__);
                                return -EOVERFLOW;