All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v1 1/4] dfu: Drop unused prototype of dfu_trigger_reset()
@ 2019-11-13 17:43 Andy Shevchenko
  2019-11-13 17:43 ` [U-Boot] [PATCH v1 2/4] dfu: Refactor do_dfu() to handle optional argument Andy Shevchenko
                   ` (3 more replies)
  0 siblings, 4 replies; 15+ messages in thread
From: Andy Shevchenko @ 2019-11-13 17:43 UTC (permalink / raw)
  To: u-boot

After the commit 1cc03c5c53c0 ("dfu: Provide means to find difference between
dfu-util -e and -R") the dangling ptototype appeared. Remove it here.

Fixes: 1cc03c5c53c0 ("dfu: Provide means to find difference between dfu-util -e and -R")
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 include/dfu.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/include/dfu.h b/include/dfu.h
index 564966333f..2e3e91c8d2 100644
--- a/include/dfu.h
+++ b/include/dfu.h
@@ -171,7 +171,6 @@ const char *dfu_get_dev_type(enum dfu_device_type t);
 const char *dfu_get_layout(enum dfu_layout l);
 struct dfu_entity *dfu_get_entity(int alt);
 char *dfu_extract_token(char** e, int *n);
-void dfu_trigger_reset(void);
 int dfu_get_alt(char *name);
 int dfu_init_env_entities(char *interface, char *devstr);
 unsigned char *dfu_get_buf(struct dfu_entity *dfu);
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [U-Boot] [PATCH v1 2/4] dfu: Refactor do_dfu() to handle optional argument
  2019-11-13 17:43 [U-Boot] [PATCH v1 1/4] dfu: Drop unused prototype of dfu_trigger_reset() Andy Shevchenko
@ 2019-11-13 17:43 ` Andy Shevchenko
  2019-11-27 10:52   ` Lukasz Majewski
  2019-11-13 17:43 ` [U-Boot] [PATCH v1 3/4] dfu: Add optional timeout parameter Andy Shevchenko
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 15+ messages in thread
From: Andy Shevchenko @ 2019-11-13 17:43 UTC (permalink / raw)
  To: u-boot

In the future we may utilize optional argument in 'dfu' command line.
As a preparation for this, refactor do_dfu().

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 cmd/dfu.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/cmd/dfu.c b/cmd/dfu.c
index 33491d0bc9..14a8ec879e 100644
--- a/cmd/dfu.c
+++ b/cmd/dfu.c
@@ -30,22 +30,25 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 #if defined(CONFIG_DFU_OVER_USB) || defined(CONFIG_DFU_OVER_TFTP)
 	char *interface = NULL;
 	char *devstring = NULL;
+#if defined(CONFIG_DFU_OVER_TFTP)
+	unsigned long value = 0;
+#endif
 
 	if (argc >= 4) {
 		interface = argv[2];
 		devstring = argv[3];
 	}
+
+#if defined(CONFIG_DFU_OVER_TFTP)
+	if (argc == 5 || argc == 3)
+		value = simple_strtoul(argv[argc - 1], NULL, 0);
+#endif
 #endif
 
 	int ret = 0;
 #ifdef CONFIG_DFU_OVER_TFTP
-	unsigned long addr = 0;
-	if (!strcmp(argv[1], "tftp")) {
-		if (argc == 5 || argc == 3)
-			addr = simple_strtoul(argv[argc - 1], NULL, 0);
-
-		return update_tftp(addr, interface, devstring);
-	}
+	if (!strcmp(argv[1], "tftp"))
+		return update_tftp(value, interface, devstring);
 #endif
 #ifdef CONFIG_DFU_OVER_USB
 	ret = dfu_init_env_entities(interface, devstring);
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [U-Boot] [PATCH v1 3/4] dfu: Add optional timeout parameter
  2019-11-13 17:43 [U-Boot] [PATCH v1 1/4] dfu: Drop unused prototype of dfu_trigger_reset() Andy Shevchenko
  2019-11-13 17:43 ` [U-Boot] [PATCH v1 2/4] dfu: Refactor do_dfu() to handle optional argument Andy Shevchenko
@ 2019-11-13 17:43 ` Andy Shevchenko
  2019-11-27 10:56   ` Lukasz Majewski
  2019-11-13 17:43 ` [U-Boot] [PATCH v1 4/4] x86: edison: Enable DFU timeout Andy Shevchenko
  2019-11-27 10:51 ` [U-Boot] [PATCH v1 1/4] dfu: Drop unused prototype of dfu_trigger_reset() Lukasz Majewski
  3 siblings, 1 reply; 15+ messages in thread
From: Andy Shevchenko @ 2019-11-13 17:43 UTC (permalink / raw)
  To: u-boot

When the `dfu` command is called from the U-Boot environment,
it now accepts an optional parameter that specifies a timeout (in seconds).
If a DFU connection is not made within that time the `dfu` command exits
(as it would if Ctrl+C was pressed). If the timeout is left empty or being
zero the `dfu` command behaves as it does now.

This is useful for allowing U-Boot to check to see if anything wants to
upload new firmware before continuing to boot.

The patch is based on the commit
https://github.com/01org/edison-u-boot/commit/5e966ccc3c65c18c9783741fa04e0c45e021780c
which has been heavily reworked due to U-Boot changes in the past.

Signed-off-by: Sebastien Colleur <sebastienx.colleur@intel.com>
Signed-off-by: Brad Campbell <bradjc5@gmail.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 cmd/dfu.c           | 15 +++++++++++++--
 common/dfu.c        | 17 +++++++++++++++++
 drivers/dfu/Kconfig |  6 ++++++
 drivers/dfu/dfu.c   | 15 +++++++++++++++
 include/dfu.h       |  5 +++++
 5 files changed, 56 insertions(+), 2 deletions(-)

diff --git a/cmd/dfu.c b/cmd/dfu.c
index 14a8ec879e..b30f8a5667 100644
--- a/cmd/dfu.c
+++ b/cmd/dfu.c
@@ -30,7 +30,7 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 #if defined(CONFIG_DFU_OVER_USB) || defined(CONFIG_DFU_OVER_TFTP)
 	char *interface = NULL;
 	char *devstring = NULL;
-#if defined(CONFIG_DFU_OVER_TFTP)
+#if defined(CONFIG_DFU_TIMEOUT) || defined(CONFIG_DFU_OVER_TFTP)
 	unsigned long value = 0;
 #endif
 
@@ -39,7 +39,7 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 		devstring = argv[3];
 	}
 
-#if defined(CONFIG_DFU_OVER_TFTP)
+#if defined(CONFIG_DFU_TIMEOUT) || defined(CONFIG_DFU_OVER_TFTP)
 	if (argc == 5 || argc == 3)
 		value = simple_strtoul(argv[argc - 1], NULL, 0);
 #endif
@@ -55,6 +55,10 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	if (ret)
 		goto done;
 
+#ifdef CONFIG_DFU_TIMEOUT
+	dfu_set_timeout(value * 1000);
+#endif
+
 	ret = CMD_RET_SUCCESS;
 	if (strcmp(argv[argc - 1], "list") == 0) {
 		dfu_show_entities();
@@ -75,10 +79,17 @@ U_BOOT_CMD(dfu, CONFIG_SYS_MAXARGS, 1, do_dfu,
 	"Device Firmware Upgrade",
 	""
 #ifdef CONFIG_DFU_OVER_USB
+#ifdef CONFIG_DFU_TIMEOUT
+	"<USB_controller> [<interface> <dev>] [<timeout>] [list]\n"
+#else
 	"<USB_controller> [<interface> <dev>] [list]\n"
+#endif
 	"  - device firmware upgrade via <USB_controller>\n"
 	"    on device <dev>, attached to interface\n"
 	"    <interface>\n"
+#ifdef CONFIG_DFU_TIMEOUT
+	"    [<timeout>] - specify inactivity timeout in seconds\n"
+#endif
 	"    [list] - list available alt settings\n"
 #endif
 #ifdef CONFIG_DFU_OVER_TFTP
diff --git a/common/dfu.c b/common/dfu.c
index 44d1484d3d..da6289b218 100644
--- a/common/dfu.c
+++ b/common/dfu.c
@@ -35,6 +35,10 @@ int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)
 		return CMD_RET_FAILURE;
 	}
 
+#ifdef CONFIG_DFU_TIMEOUT
+	unsigned long start_time = get_timer(0);
+#endif
+
 	while (1) {
 		if (g_dnl_detach()) {
 			/*
@@ -79,6 +83,19 @@ int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)
 			}
 		}
 
+#ifdef CONFIG_DFU_TIMEOUT
+		unsigned long wait_time = dfu_get_timeout();
+
+		if (wait_time) {
+			unsigned long current_time = get_timer(start_time);
+
+			if (current_time > wait_time) {
+				debug("Inactivity timeout, abort DFU\n");
+				goto exit;
+			}
+		}
+#endif
+
 		WATCHDOG_RESET();
 		usb_gadget_handle_interrupts(usbctrl_index);
 	}
diff --git a/drivers/dfu/Kconfig b/drivers/dfu/Kconfig
index 9fe5bc0f58..e070130b5a 100644
--- a/drivers/dfu/Kconfig
+++ b/drivers/dfu/Kconfig
@@ -23,6 +23,12 @@ config DFU_TFTP
 
 	  Detailed description of this feature can be found at ./doc/README.dfutftp
 
+config DFU_TIMEOUT
+	bool "Timeout waiting for DFU"
+	help
+	  This option adds an optional timeout parameter for DFU which, if set,
+	  will cause DFU to only wait for that many seconds before exiting.
+
 config DFU_MMC
 	bool "MMC back end for DFU"
 	help
diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
index 38aecd3a05..df50196dfd 100644
--- a/drivers/dfu/dfu.c
+++ b/drivers/dfu/dfu.c
@@ -21,6 +21,9 @@ static LIST_HEAD(dfu_list);
 static int dfu_alt_num;
 static int alt_num_cnt;
 static struct hash_algo *dfu_hash_algo;
+#ifdef CONFIG_DFU_TIMEOUT
+static unsigned long dfu_timeout = 0;
+#endif
 
 /*
  * The purpose of the dfu_flush_callback() function is to
@@ -58,6 +61,18 @@ __weak bool dfu_usb_get_reset(void)
 #endif
 }
 
+#ifdef CONFIG_DFU_TIMEOUT
+void dfu_set_timeout(unsigned long timeout)
+{
+	dfu_timeout = timeout;
+}
+
+unsigned long dfu_get_timeout(void)
+{
+	return dfu_timeout;
+}
+#endif
+
 static int dfu_find_alt_num(const char *s)
 {
 	int i = 0;
diff --git a/include/dfu.h b/include/dfu.h
index 2e3e91c8d2..fb5260d903 100644
--- a/include/dfu.h
+++ b/include/dfu.h
@@ -178,6 +178,11 @@ unsigned char *dfu_free_buf(void);
 unsigned long dfu_get_buf_size(void);
 bool dfu_usb_get_reset(void);
 
+#ifdef CONFIG_DFU_TIMEOUT
+unsigned long dfu_get_timeout(void);
+void dfu_set_timeout(unsigned long);
+#endif
+
 int dfu_read(struct dfu_entity *de, void *buf, int size, int blk_seq_num);
 int dfu_write(struct dfu_entity *de, void *buf, int size, int blk_seq_num);
 int dfu_flush(struct dfu_entity *de, void *buf, int size, int blk_seq_num);
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [U-Boot] [PATCH v1 4/4] x86: edison: Enable DFU timeout
  2019-11-13 17:43 [U-Boot] [PATCH v1 1/4] dfu: Drop unused prototype of dfu_trigger_reset() Andy Shevchenko
  2019-11-13 17:43 ` [U-Boot] [PATCH v1 2/4] dfu: Refactor do_dfu() to handle optional argument Andy Shevchenko
  2019-11-13 17:43 ` [U-Boot] [PATCH v1 3/4] dfu: Add optional timeout parameter Andy Shevchenko
@ 2019-11-13 17:43 ` Andy Shevchenko
  2019-11-27 10:57   ` Lukasz Majewski
  2019-11-27 10:51 ` [U-Boot] [PATCH v1 1/4] dfu: Drop unused prototype of dfu_trigger_reset() Lukasz Majewski
  3 siblings, 1 reply; 15+ messages in thread
From: Andy Shevchenko @ 2019-11-13 17:43 UTC (permalink / raw)
  To: u-boot

The stock U-Boot on Intel Edison has timeout parameter for DFU command.
Enable it here to be compatible with the original U-Boot configuration.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 configs/edison_defconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/configs/edison_defconfig b/configs/edison_defconfig
index 1c74ee9709..227e2f750c 100644
--- a/configs/edison_defconfig
+++ b/configs/edison_defconfig
@@ -29,6 +29,7 @@ CONFIG_CMD_FS_GENERIC=y
 CONFIG_DEFAULT_DEVICE_TREE="edison"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_CPU=y
+CONFIG_DFU_TIMEOUT=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
 CONFIG_SUPPORT_EMMC_BOOT=y
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [U-Boot] [PATCH v1 1/4] dfu: Drop unused prototype of dfu_trigger_reset()
  2019-11-13 17:43 [U-Boot] [PATCH v1 1/4] dfu: Drop unused prototype of dfu_trigger_reset() Andy Shevchenko
                   ` (2 preceding siblings ...)
  2019-11-13 17:43 ` [U-Boot] [PATCH v1 4/4] x86: edison: Enable DFU timeout Andy Shevchenko
@ 2019-11-27 10:51 ` Lukasz Majewski
  3 siblings, 0 replies; 15+ messages in thread
From: Lukasz Majewski @ 2019-11-27 10:51 UTC (permalink / raw)
  To: u-boot

On Wed, 13 Nov 2019 19:43:41 +0200
Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:

> After the commit 1cc03c5c53c0 ("dfu: Provide means to find difference
> between dfu-util -e and -R") the dangling ptototype appeared. Remove
> it here.
> 
> Fixes: 1cc03c5c53c0 ("dfu: Provide means to find difference between
> dfu-util -e and -R") Cc: Lukasz Majewski <l.majewski@samsung.com>
> Cc: Stephen Warren <swarren@nvidia.com>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>  include/dfu.h | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/include/dfu.h b/include/dfu.h
> index 564966333f..2e3e91c8d2 100644
> --- a/include/dfu.h
> +++ b/include/dfu.h
> @@ -171,7 +171,6 @@ const char *dfu_get_dev_type(enum dfu_device_type
> t); const char *dfu_get_layout(enum dfu_layout l);
>  struct dfu_entity *dfu_get_entity(int alt);
>  char *dfu_extract_token(char** e, int *n);
> -void dfu_trigger_reset(void);
>  int dfu_get_alt(char *name);
>  int dfu_init_env_entities(char *interface, char *devstr);
>  unsigned char *dfu_get_buf(struct dfu_entity *dfu);

Acked-by: Lukasz Majewski <lukma@denx.de>


Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20191127/6104eaaf/attachment.sig>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [U-Boot] [PATCH v1 2/4] dfu: Refactor do_dfu() to handle optional argument
  2019-11-13 17:43 ` [U-Boot] [PATCH v1 2/4] dfu: Refactor do_dfu() to handle optional argument Andy Shevchenko
@ 2019-11-27 10:52   ` Lukasz Majewski
  0 siblings, 0 replies; 15+ messages in thread
From: Lukasz Majewski @ 2019-11-27 10:52 UTC (permalink / raw)
  To: u-boot

On Wed, 13 Nov 2019 19:43:42 +0200
Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:

> In the future we may utilize optional argument in 'dfu' command line.
> As a preparation for this, refactor do_dfu().
> 
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>  cmd/dfu.c | 17 ++++++++++-------
>  1 file changed, 10 insertions(+), 7 deletions(-)
> 
> diff --git a/cmd/dfu.c b/cmd/dfu.c
> index 33491d0bc9..14a8ec879e 100644
> --- a/cmd/dfu.c
> +++ b/cmd/dfu.c
> @@ -30,22 +30,25 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int
> argc, char * const argv[]) #if defined(CONFIG_DFU_OVER_USB) ||
> defined(CONFIG_DFU_OVER_TFTP) char *interface = NULL;
>  	char *devstring = NULL;
> +#if defined(CONFIG_DFU_OVER_TFTP)
> +	unsigned long value = 0;
> +#endif
>  
>  	if (argc >= 4) {
>  		interface = argv[2];
>  		devstring = argv[3];
>  	}
> +
> +#if defined(CONFIG_DFU_OVER_TFTP)
> +	if (argc == 5 || argc == 3)
> +		value = simple_strtoul(argv[argc - 1], NULL, 0);
> +#endif
>  #endif
>  
>  	int ret = 0;
>  #ifdef CONFIG_DFU_OVER_TFTP
> -	unsigned long addr = 0;
> -	if (!strcmp(argv[1], "tftp")) {
> -		if (argc == 5 || argc == 3)
> -			addr = simple_strtoul(argv[argc - 1], NULL,
> 0); -
> -		return update_tftp(addr, interface, devstring);
> -	}
> +	if (!strcmp(argv[1], "tftp"))
> +		return update_tftp(value, interface, devstring);
>  #endif
>  #ifdef CONFIG_DFU_OVER_USB
>  	ret = dfu_init_env_entities(interface, devstring);

Acked-by: Lukasz Majewski <lukma@denx.de>


Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20191127/cda6d828/attachment.sig>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [U-Boot] [PATCH v1 3/4] dfu: Add optional timeout parameter
  2019-11-13 17:43 ` [U-Boot] [PATCH v1 3/4] dfu: Add optional timeout parameter Andy Shevchenko
@ 2019-11-27 10:56   ` Lukasz Majewski
  2019-11-27 14:38     ` Andy Shevchenko
  0 siblings, 1 reply; 15+ messages in thread
From: Lukasz Majewski @ 2019-11-27 10:56 UTC (permalink / raw)
  To: u-boot

Hi Andy,

Thank you for your work on enhancing DFU. The patch series is generally
Ok.

Please find some minor comments/requests below.

> When the `dfu` command is called from the U-Boot environment,
> it now accepts an optional parameter that specifies a timeout (in
> seconds). If a DFU connection is not made within that time the `dfu`
> command exits (as it would if Ctrl+C was pressed). If the timeout is
> left empty or being zero the `dfu` command behaves as it does now.
> 
> This is useful for allowing U-Boot to check to see if anything wants
> to upload new firmware before continuing to boot.
> 
> The patch is based on the commit
> https://github.com/01org/edison-u-boot/commit/5e966ccc3c65c18c9783741fa04e0c45e021780c
> which has been heavily reworked due to U-Boot changes in the past.
> 
> Signed-off-by: Sebastien Colleur <sebastienx.colleur@intel.com>
> Signed-off-by: Brad Campbell <bradjc5@gmail.com>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>  cmd/dfu.c           | 15 +++++++++++++--
>  common/dfu.c        | 17 +++++++++++++++++
>  drivers/dfu/Kconfig |  6 ++++++
>  drivers/dfu/dfu.c   | 15 +++++++++++++++
>  include/dfu.h       |  5 +++++
>  5 files changed, 56 insertions(+), 2 deletions(-)
> 
> diff --git a/cmd/dfu.c b/cmd/dfu.c
> index 14a8ec879e..b30f8a5667 100644
> --- a/cmd/dfu.c
> +++ b/cmd/dfu.c
> @@ -30,7 +30,7 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int
> argc, char * const argv[]) #if defined(CONFIG_DFU_OVER_USB) ||
> defined(CONFIG_DFU_OVER_TFTP) char *interface = NULL;
>  	char *devstring = NULL;
> -#if defined(CONFIG_DFU_OVER_TFTP)
> +#if defined(CONFIG_DFU_TIMEOUT) || defined(CONFIG_DFU_OVER_TFTP)
>  	unsigned long value = 0;
>  #endif
>  
> @@ -39,7 +39,7 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int
> argc, char * const argv[]) devstring = argv[3];
>  	}
>  
> -#if defined(CONFIG_DFU_OVER_TFTP)
> +#if defined(CONFIG_DFU_TIMEOUT) || defined(CONFIG_DFU_OVER_TFTP)
>  	if (argc == 5 || argc == 3)
>  		value = simple_strtoul(argv[argc - 1], NULL, 0);
>  #endif
> @@ -55,6 +55,10 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int
> argc, char * const argv[]) if (ret)
>  		goto done;
>  
> +#ifdef CONFIG_DFU_TIMEOUT
> +	dfu_set_timeout(value * 1000);
> +#endif
> +
>  	ret = CMD_RET_SUCCESS;
>  	if (strcmp(argv[argc - 1], "list") == 0) {
>  		dfu_show_entities();
> @@ -75,10 +79,17 @@ U_BOOT_CMD(dfu, CONFIG_SYS_MAXARGS, 1, do_dfu,
>  	"Device Firmware Upgrade",
>  	""
>  #ifdef CONFIG_DFU_OVER_USB
> +#ifdef CONFIG_DFU_TIMEOUT
> +	"<USB_controller> [<interface> <dev>] [<timeout>] [list]\n"
> +#else
>  	"<USB_controller> [<interface> <dev>] [list]\n"
> +#endif
>  	"  - device firmware upgrade via <USB_controller>\n"
>  	"    on device <dev>, attached to interface\n"
>  	"    <interface>\n"
> +#ifdef CONFIG_DFU_TIMEOUT
> +	"    [<timeout>] - specify inactivity timeout in seconds\n"
> +#endif
>  	"    [list] - list available alt settings\n"
>  #endif
>  #ifdef CONFIG_DFU_OVER_TFTP
> diff --git a/common/dfu.c b/common/dfu.c
> index 44d1484d3d..da6289b218 100644
> --- a/common/dfu.c
> +++ b/common/dfu.c
> @@ -35,6 +35,10 @@ int run_usb_dnl_gadget(int usbctrl_index, char
> *usb_dnl_gadget) return CMD_RET_FAILURE;
>  	}
>  
> +#ifdef CONFIG_DFU_TIMEOUT
> +	unsigned long start_time = get_timer(0);
> +#endif
> +
>  	while (1) {
>  		if (g_dnl_detach()) {
>  			/*
> @@ -79,6 +83,19 @@ int run_usb_dnl_gadget(int usbctrl_index, char
> *usb_dnl_gadget) }
>  		}
>  
> +#ifdef CONFIG_DFU_TIMEOUT
> +		unsigned long wait_time = dfu_get_timeout();
> +
> +		if (wait_time) {
> +			unsigned long current_time =
> get_timer(start_time); +
> +			if (current_time > wait_time) {
> +				debug("Inactivity timeout, abort
> DFU\n");
> +				goto exit;
> +			}
> +		}
> +#endif
> +
>  		WATCHDOG_RESET();
>  		usb_gadget_handle_interrupts(usbctrl_index);
>  	}
> diff --git a/drivers/dfu/Kconfig b/drivers/dfu/Kconfig
> index 9fe5bc0f58..e070130b5a 100644
> --- a/drivers/dfu/Kconfig
> +++ b/drivers/dfu/Kconfig
> @@ -23,6 +23,12 @@ config DFU_TFTP
>  
>  	  Detailed description of this feature can be found at
> ./doc/README.dfutftp 
> +config DFU_TIMEOUT
> +	bool "Timeout waiting for DFU"
> +	help
> +	  This option adds an optional timeout parameter for DFU
> which, if set,
> +	  will cause DFU to only wait for that many seconds before
> exiting. +
>  config DFU_MMC
>  	bool "MMC back end for DFU"
>  	help
> diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
> index 38aecd3a05..df50196dfd 100644
> --- a/drivers/dfu/dfu.c
> +++ b/drivers/dfu/dfu.c
> @@ -21,6 +21,9 @@ static LIST_HEAD(dfu_list);
>  static int dfu_alt_num;
>  static int alt_num_cnt;
>  static struct hash_algo *dfu_hash_algo;
> +#ifdef CONFIG_DFU_TIMEOUT
> +static unsigned long dfu_timeout = 0;
> +#endif
>  
>  /*
>   * The purpose of the dfu_flush_callback() function is to
> @@ -58,6 +61,18 @@ __weak bool dfu_usb_get_reset(void)
>  #endif
>  }
>  
> +#ifdef CONFIG_DFU_TIMEOUT
> +void dfu_set_timeout(unsigned long timeout)
> +{
> +	dfu_timeout = timeout;
> +}

I do guess that dfu_set_timeout() is not yet used in this patch series?

> +
> +unsigned long dfu_get_timeout(void)
> +{
> +	return dfu_timeout;
> +}
> +#endif
> +
>  static int dfu_find_alt_num(const char *s)
>  {
>  	int i = 0;
> diff --git a/include/dfu.h b/include/dfu.h
> index 2e3e91c8d2..fb5260d903 100644
> --- a/include/dfu.h
> +++ b/include/dfu.h
> @@ -178,6 +178,11 @@ unsigned char *dfu_free_buf(void);
>  unsigned long dfu_get_buf_size(void);
>  bool dfu_usb_get_reset(void);
>  
> +#ifdef CONFIG_DFU_TIMEOUT
> +unsigned long dfu_get_timeout(void);
> +void dfu_set_timeout(unsigned long);
> +#endif
> +
>  int dfu_read(struct dfu_entity *de, void *buf, int size, int
> blk_seq_num); int dfu_write(struct dfu_entity *de, void *buf, int
> size, int blk_seq_num); int dfu_flush(struct dfu_entity *de, void
> *buf, int size, int blk_seq_num);

Please add some description and example of this new option / feature to
./doc/README.dfu file.


Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20191127/d508438b/attachment.sig>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [U-Boot] [PATCH v1 4/4] x86: edison: Enable DFU timeout
  2019-11-13 17:43 ` [U-Boot] [PATCH v1 4/4] x86: edison: Enable DFU timeout Andy Shevchenko
@ 2019-11-27 10:57   ` Lukasz Majewski
  2019-11-27 15:21     ` Andy Shevchenko
  0 siblings, 1 reply; 15+ messages in thread
From: Lukasz Majewski @ 2019-11-27 10:57 UTC (permalink / raw)
  To: u-boot

Hi Andy,

> The stock U-Boot on Intel Edison has timeout parameter for DFU
> command. Enable it here to be compatible with the original U-Boot
> configuration.
> 
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>  configs/edison_defconfig | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/configs/edison_defconfig b/configs/edison_defconfig
> index 1c74ee9709..227e2f750c 100644
> --- a/configs/edison_defconfig
> +++ b/configs/edison_defconfig
> @@ -29,6 +29,7 @@ CONFIG_CMD_FS_GENERIC=y
>  CONFIG_DEFAULT_DEVICE_TREE="edison"
>  CONFIG_ENV_IS_IN_MMC=y
>  CONFIG_CPU=y
> +CONFIG_DFU_TIMEOUT=y
>  CONFIG_DFU_MMC=y
>  CONFIG_DFU_RAM=y
>  CONFIG_SUPPORT_EMMC_BOOT=y

This patch doesn't apply now.

Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20191127/51599972/attachment.sig>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [U-Boot] [PATCH v1 3/4] dfu: Add optional timeout parameter
  2019-11-27 10:56   ` Lukasz Majewski
@ 2019-11-27 14:38     ` Andy Shevchenko
  2019-11-27 15:09       ` Lukasz Majewski
  0 siblings, 1 reply; 15+ messages in thread
From: Andy Shevchenko @ 2019-11-27 14:38 UTC (permalink / raw)
  To: u-boot

On Wed, Nov 27, 2019 at 11:56:15AM +0100, Lukasz Majewski wrote:

> Thank you for your work on enhancing DFU. The patch series is generally
> Ok.
> 
> Please find some minor comments/requests below.

Thank you for review, my answers below.

> > +#ifdef CONFIG_DFU_TIMEOUT
> > +	dfu_set_timeout(value * 1000);
> > +#endif

(1)

> > +#ifdef CONFIG_DFU_TIMEOUT
> > +void dfu_set_timeout(unsigned long timeout)
> > +{
> > +	dfu_timeout = timeout;
> > +}
> 
> I do guess that dfu_set_timeout() is not yet used in this patch series?

I think you missed (1) by some reason.

> Please add some description and example of this new option / feature to
> ./doc/README.dfu file.

Will do for v2.

-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [U-Boot] [PATCH v1 3/4] dfu: Add optional timeout parameter
  2019-11-27 14:38     ` Andy Shevchenko
@ 2019-11-27 15:09       ` Lukasz Majewski
  0 siblings, 0 replies; 15+ messages in thread
From: Lukasz Majewski @ 2019-11-27 15:09 UTC (permalink / raw)
  To: u-boot

Hi Andy,

> On Wed, Nov 27, 2019 at 11:56:15AM +0100, Lukasz Majewski wrote:
> 
> > Thank you for your work on enhancing DFU. The patch series is
> > generally Ok.
> > 
> > Please find some minor comments/requests below.  
> 
> Thank you for review, my answers below.
> 
> > > +#ifdef CONFIG_DFU_TIMEOUT
> > > +	dfu_set_timeout(value * 1000);
> > > +#endif  
> 
> (1)
> 
> > > +#ifdef CONFIG_DFU_TIMEOUT
> > > +void dfu_set_timeout(unsigned long timeout)
> > > +{
> > > +	dfu_timeout = timeout;
> > > +}  
> > 
> > I do guess that dfu_set_timeout() is not yet used in this patch
> > series?  
> 
> I think you missed (1) by some reason.

Right. Thanks for pointing this out.

> 
> > Please add some description and example of this new option /
> > feature to ./doc/README.dfu file.  
> 
> Will do for v2.
> 

Thanks, appreciated.


Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20191127/5f77468e/attachment.sig>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [U-Boot] [PATCH v1 4/4] x86: edison: Enable DFU timeout
  2019-11-27 10:57   ` Lukasz Majewski
@ 2019-11-27 15:21     ` Andy Shevchenko
  2019-11-27 15:37       ` Andy Shevchenko
  2019-11-27 16:10       ` Lukasz Majewski
  0 siblings, 2 replies; 15+ messages in thread
From: Andy Shevchenko @ 2019-11-27 15:21 UTC (permalink / raw)
  To: u-boot

On Wed, Nov 27, 2019 at 11:57:53AM +0100, Lukasz Majewski wrote:
> Hi Andy,
> 
> > The stock U-Boot on Intel Edison has timeout parameter for DFU
> > command. Enable it here to be compatible with the original U-Boot
> > configuration.
> > 
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > ---
> >  configs/edison_defconfig | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/configs/edison_defconfig b/configs/edison_defconfig
> > index 1c74ee9709..227e2f750c 100644
> > --- a/configs/edison_defconfig
> > +++ b/configs/edison_defconfig
> > @@ -29,6 +29,7 @@ CONFIG_CMD_FS_GENERIC=y
> >  CONFIG_DEFAULT_DEVICE_TREE="edison"
> >  CONFIG_ENV_IS_IN_MMC=y
> >  CONFIG_CPU=y
> > +CONFIG_DFU_TIMEOUT=y
> >  CONFIG_DFU_MMC=y
> >  CONFIG_DFU_RAM=y
> >  CONFIG_SUPPORT_EMMC_BOOT=y
> 
> This patch doesn't apply now.

I base my patches on official releases / release candidates. It applies very
well on top of 2020.01-rc3 as of today. Does DFU has a separate repository /
branch to track?

-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [U-Boot] [PATCH v1 4/4] x86: edison: Enable DFU timeout
  2019-11-27 15:21     ` Andy Shevchenko
@ 2019-11-27 15:37       ` Andy Shevchenko
  2019-11-27 16:10       ` Lukasz Majewski
  1 sibling, 0 replies; 15+ messages in thread
From: Andy Shevchenko @ 2019-11-27 15:37 UTC (permalink / raw)
  To: u-boot

On Wed, Nov 27, 2019 at 05:21:32PM +0200, Andy Shevchenko wrote:
> On Wed, Nov 27, 2019 at 11:57:53AM +0100, Lukasz Majewski wrote:
> > Hi Andy,
> > 
> > > The stock U-Boot on Intel Edison has timeout parameter for DFU
> > > command. Enable it here to be compatible with the original U-Boot
> > > configuration.
> > > 
> > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > > ---
> > >  configs/edison_defconfig | 1 +
> > >  1 file changed, 1 insertion(+)
> > > 
> > > diff --git a/configs/edison_defconfig b/configs/edison_defconfig
> > > index 1c74ee9709..227e2f750c 100644
> > > --- a/configs/edison_defconfig
> > > +++ b/configs/edison_defconfig
> > > @@ -29,6 +29,7 @@ CONFIG_CMD_FS_GENERIC=y
> > >  CONFIG_DEFAULT_DEVICE_TREE="edison"
> > >  CONFIG_ENV_IS_IN_MMC=y
> > >  CONFIG_CPU=y
> > > +CONFIG_DFU_TIMEOUT=y
> > >  CONFIG_DFU_MMC=y
> > >  CONFIG_DFU_RAM=y
> > >  CONFIG_SUPPORT_EMMC_BOOT=y
> > 
> > This patch doesn't apply now.
> 
> I base my patches on official releases / release candidates. It applies very
> well on top of 2020.01-rc3 as of today. Does DFU has a separate repository /
> branch to track?

I see few patches in mainstream touching areas nearby. Though, this one can be
still applied with a reduced context.

-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [U-Boot] [PATCH v1 4/4] x86: edison: Enable DFU timeout
  2019-11-27 15:21     ` Andy Shevchenko
  2019-11-27 15:37       ` Andy Shevchenko
@ 2019-11-27 16:10       ` Lukasz Majewski
  2019-11-27 16:45         ` Andy Shevchenko
  1 sibling, 1 reply; 15+ messages in thread
From: Lukasz Majewski @ 2019-11-27 16:10 UTC (permalink / raw)
  To: u-boot

Hi Andy,

> On Wed, Nov 27, 2019 at 11:57:53AM +0100, Lukasz Majewski wrote:
> > Hi Andy,
> >   
> > > The stock U-Boot on Intel Edison has timeout parameter for DFU
> > > command. Enable it here to be compatible with the original U-Boot
> > > configuration.
> > > 
> > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > > ---
> > >  configs/edison_defconfig | 1 +
> > >  1 file changed, 1 insertion(+)
> > > 
> > > diff --git a/configs/edison_defconfig b/configs/edison_defconfig
> > > index 1c74ee9709..227e2f750c 100644
> > > --- a/configs/edison_defconfig
> > > +++ b/configs/edison_defconfig
> > > @@ -29,6 +29,7 @@ CONFIG_CMD_FS_GENERIC=y
> > >  CONFIG_DEFAULT_DEVICE_TREE="edison"
> > >  CONFIG_ENV_IS_IN_MMC=y
> > >  CONFIG_CPU=y
> > > +CONFIG_DFU_TIMEOUT=y
> > >  CONFIG_DFU_MMC=y
> > >  CONFIG_DFU_RAM=y
> > >  CONFIG_SUPPORT_EMMC_BOOT=y  
> > 
> > This patch doesn't apply now.  
> 
> I base my patches on official releases / release candidates. It
> applies very well on top of 2020.01-rc3 as of today. Does DFU has a
> separate repository / branch to track?
> 

I'm using u-boot-usb as a base:

https://gitlab.denx.de/u-boot/custodians/u-boot-usb/commits/next

as I'm sending PRs to Marek.


Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20191127/3cebcabd/attachment.sig>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [U-Boot] [PATCH v1 4/4] x86: edison: Enable DFU timeout
  2019-11-27 16:10       ` Lukasz Majewski
@ 2019-11-27 16:45         ` Andy Shevchenko
  2019-11-27 17:11           ` Lukasz Majewski
  0 siblings, 1 reply; 15+ messages in thread
From: Andy Shevchenko @ 2019-11-27 16:45 UTC (permalink / raw)
  To: u-boot

On Wed, Nov 27, 2019 at 05:10:22PM +0100, Lukasz Majewski wrote:
> > On Wed, Nov 27, 2019 at 11:57:53AM +0100, Lukasz Majewski wrote:

> > I base my patches on official releases / release candidates. It
> > applies very well on top of 2020.01-rc3 as of today. Does DFU has a
> > separate repository / branch to track?
> > 
> 
> I'm using u-boot-usb as a base:
> 
> https://gitlab.denx.de/u-boot/custodians/u-boot-usb/commits/next
> 
> as I'm sending PRs to Marek.

I see, thanks. I have added it to my remote list.

Note, I sent v2 based on origin/master, but later I have tested against
usb/next and everything can be applied well.

-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [U-Boot] [PATCH v1 4/4] x86: edison: Enable DFU timeout
  2019-11-27 16:45         ` Andy Shevchenko
@ 2019-11-27 17:11           ` Lukasz Majewski
  0 siblings, 0 replies; 15+ messages in thread
From: Lukasz Majewski @ 2019-11-27 17:11 UTC (permalink / raw)
  To: u-boot

On Wed, 27 Nov 2019 18:45:43 +0200
Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:

> On Wed, Nov 27, 2019 at 05:10:22PM +0100, Lukasz Majewski wrote:
> > > On Wed, Nov 27, 2019 at 11:57:53AM +0100, Lukasz Majewski wrote:  
> 
> > > I base my patches on official releases / release candidates. It
> > > applies very well on top of 2020.01-rc3 as of today. Does DFU has
> > > a separate repository / branch to track?
> > >   
> > 
> > I'm using u-boot-usb as a base:
> > 
> > https://gitlab.denx.de/u-boot/custodians/u-boot-usb/commits/next
> > 
> > as I'm sending PRs to Marek.  
> 
> I see, thanks. I have added it to my remote list.
> 
> Note, I sent v2 based on origin/master, but later I have tested
> against usb/next and everything can be applied well.
> 

Ok. Great :-)


Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20191127/99ddd5cd/attachment.sig>

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2019-11-27 17:11 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-13 17:43 [U-Boot] [PATCH v1 1/4] dfu: Drop unused prototype of dfu_trigger_reset() Andy Shevchenko
2019-11-13 17:43 ` [U-Boot] [PATCH v1 2/4] dfu: Refactor do_dfu() to handle optional argument Andy Shevchenko
2019-11-27 10:52   ` Lukasz Majewski
2019-11-13 17:43 ` [U-Boot] [PATCH v1 3/4] dfu: Add optional timeout parameter Andy Shevchenko
2019-11-27 10:56   ` Lukasz Majewski
2019-11-27 14:38     ` Andy Shevchenko
2019-11-27 15:09       ` Lukasz Majewski
2019-11-13 17:43 ` [U-Boot] [PATCH v1 4/4] x86: edison: Enable DFU timeout Andy Shevchenko
2019-11-27 10:57   ` Lukasz Majewski
2019-11-27 15:21     ` Andy Shevchenko
2019-11-27 15:37       ` Andy Shevchenko
2019-11-27 16:10       ` Lukasz Majewski
2019-11-27 16:45         ` Andy Shevchenko
2019-11-27 17:11           ` Lukasz Majewski
2019-11-27 10:51 ` [U-Boot] [PATCH v1 1/4] dfu: Drop unused prototype of dfu_trigger_reset() Lukasz Majewski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.