From 731785df0b68158c282d880de0a86d1db8aec118 Mon Sep 17 00:00:00 2001 From: Sean Nyekjaer Date: Thu, 24 Jan 2019 15:17:21 +0100 Subject: [PATCH 1/3] cmd: fastboot: handle watchdog while waiting for fastboot commands. Watchdog is not handled while waiting for fastboot commands. Tested on a i.MX6 ULL EVK board. Signed-off-by: Sean Nyekjaer --- cmd/fastboot.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmd/fastboot.c b/cmd/fastboot.c index 0be83b78ac..1b4215114d 100644 --- a/cmd/fastboot.c +++ b/cmd/fastboot.c @@ -13,6 +13,7 @@ #include #include #include +#include static int do_fastboot_udp(int argc, char *const argv[], uintptr_t buf_addr, size_t buf_size) @@ -74,6 +75,7 @@ static int do_fastboot_usb(int argc, char *const argv[], break; if (ctrlc()) break; + WATCHDOG_RESET(); usb_gadget_handle_interrupts(controller_index); } From e81d9de531fb4c7f14344736bd7568c954e64e14 Mon Sep 17 00:00:00 2001 From: Jean-Jacques Hiblot Date: Thu, 24 Jan 2019 15:44:53 +0100 Subject: [PATCH 2/3] usb: udc-uclass: Fixed problem when no alias is defined in DT commit 801f1fa442 "dm: usb: udc: Use SEQ_ALIAS to index the USB gadget ports" changed the way the udevice if found. It uses the alias to find a udevice for a given USB port number. In the commit log it was stated that if no alias is provided, the bind order will be used instead. However it doesn't work. Fixing this by adding a call to uclass_get_device() if uclass_get_device_by_seq() fails. Signed-off-by: Jean-Jacques Hiblot Tested-by: Vignesh R --- drivers/usb/gadget/udc/udc-uclass.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/usb/gadget/udc/udc-uclass.c b/drivers/usb/gadget/udc/udc-uclass.c index 8d7864797a..3053ccf7d9 100644 --- a/drivers/usb/gadget/udc/udc-uclass.c +++ b/drivers/usb/gadget/udc/udc-uclass.c @@ -23,8 +23,11 @@ int usb_gadget_initialize(int index) return 0; ret = uclass_get_device_by_seq(UCLASS_USB_GADGET_GENERIC, index, &dev); if (!dev || ret) { - pr_err("No USB device found\n"); - return -ENODEV; + ret = uclass_get_device(UCLASS_USB_GADGET_GENERIC, index, &dev); + if (!dev || ret) { + pr_err("No USB device found\n"); + return -ENODEV; + } } dev_array[index] = dev; return 0; From f402d268e8e17e9d6d1d9bf8a8b1f6e0b07718ef Mon Sep 17 00:00:00 2001 From: Neil Armstrong Date: Wed, 20 Feb 2019 11:36:12 +0100 Subject: [PATCH 3/3] fastboot: common: fix default fastboot_boot on 64-bit When booting on a 64-bit system, the boot_addr_start buffer is not large enough to contain a 64-bit number, thus leading to a crash even if fastboot_buf_addr is valid, only the high part of the address will be printed to boot_addr_start : fastboot with fastboot_buf_addr = 0x0000000006000000: downloading of 92239872 bytes finished Booting kernel at 0x00000000... "Synchronous Abort" handler, esr 0x96000004 elr: 00000000010561f4 lr : 0000000001056fac (reloc) x28: 000000007df2d38f x29: 000000007df2d1b0 Resetting CPU ... With this fix, boot_addr_start can have the full 64-bit address passed to bootm. Fixes: f73a7df984a9 ("net: fastboot: Merge AOSP UDP fastboot") Cc: Simon Glass Cc: Alex Kiernan Cc: Sam Protsenko Signed-off-by: Neil Armstrong Reviewed-by: Simon Glass --- drivers/fastboot/fb_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/fastboot/fb_common.c b/drivers/fastboot/fb_common.c index c6e06aab7a..17eca73be0 100644 --- a/drivers/fastboot/fb_common.c +++ b/drivers/fastboot/fb_common.c @@ -119,7 +119,7 @@ void fastboot_boot(void) if (s) { run_command(s, CMD_FLAG_ENV); } else { - static char boot_addr_start[12]; + static char boot_addr_start[20]; static char *const bootm_args[] = { "bootm", boot_addr_start, NULL };