From: Sam Day <[email protected]>

Works the same as CONFIG_CMD_UMS_ABORT_KEYED does: any keypress will
abort fastboot mode (rather than only ctrl-c).

Reviewed-by: Mattijs Korpershoek <[email protected]>
Tested-by: Mattijs Korpershoek <[email protected]>
Reviewed-by: Casey Connolly <[email protected]>
Signed-off-by: Sam Day <[email protected]>
---
 cmd/Kconfig              | 7 +++++++
 cmd/fastboot.c           | 9 ++++++++-
 doc/android/fastboot.rst | 4 ++++
 3 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/cmd/Kconfig b/cmd/Kconfig
index c71c6824a19..ee932cc25f1 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -1208,6 +1208,13 @@ config CMD_FASTBOOT
 
          See doc/android/fastboot.rst for more information.
 
+config CMD_FASTBOOT_ABORT_KEYED
+       bool "fastboot abort with any key"
+       depends on CMD_FASTBOOT && USB_FUNCTION_FASTBOOT
+       help
+         Allow interruption of USB fastboot mode by any key presses,
+         rather than just Ctrl-c.
+
 config CMD_FLASH
        bool "flinfo, erase, protect"
        default y
diff --git a/cmd/fastboot.c b/cmd/fastboot.c
index e71f873527b..f3929f88dfa 100644
--- a/cmd/fastboot.c
+++ b/cmd/fastboot.c
@@ -103,8 +103,15 @@ static int do_fastboot_usb(int argc, char *const argv[],
        while (1) {
                if (g_dnl_detach())
                        break;
-               if (ctrlc())
+               if (IS_ENABLED(CONFIG_CMD_FASTBOOT_ABORT_KEYED)) {
+                       if (tstc()) {
+                               getchar();
+                               puts("\rOperation aborted.\n");
+                               break;
+                       }
+               } else if (ctrlc()) {
                        break;
+               }
                schedule();
                dm_usb_gadget_handle_interrupts(udc);
        }
diff --git a/doc/android/fastboot.rst b/doc/android/fastboot.rst
index 818b8815ebd..96c544ae11b 100644
--- a/doc/android/fastboot.rst
+++ b/doc/android/fastboot.rst
@@ -217,6 +217,10 @@ It's possible to interrupt the fastboot command using 
Ctrl-c::
    => fastboot usb 0
    Operation aborted.
 
+``CONFIG_CMD_FASTBOOT_ABORT_KEYED`` can be enabled so that *any* keypress
+will interrupt the fastboot command, rather than just Ctrl-c. This can be
+quite useful on mobile devices which lack a means to input Ctrl-c.
+
 You can also specify a kernel image to boot. You have to either specify
 the an image in Android format *or* pass a binary kernel and let the
 fastboot client wrap the Android suite around it. On OMAP for instance you

-- 
2.54.0


Reply via email to