On 2017-08-08 03:43, Lothar Waßmann wrote: > Hi, > > On Fri, 4 Aug 2017 16:38:11 -0700 Stefan Agner wrote: >> From: Stefan Agner <stefan.ag...@toradex.com> >> >> Add USB serial download protocol support to SPL. If the SoC started >> in recovery mode the SPL will immediately switch to SDP and wait for >> further downloads/commands from the host side. >> >> Signed-off-by: Stefan Agner <stefan.ag...@toradex.com> >> --- >> >> common/spl/Kconfig | 6 ++++++ >> common/spl/Makefile | 1 + >> common/spl/spl_sdp.c | 38 ++++++++++++++++++++++++++++++++++++++ >> drivers/usb/gadget/Makefile | 1 + >> 4 files changed, 46 insertions(+) >> create mode 100644 common/spl/spl_sdp.c >> >> diff --git a/common/spl/Kconfig b/common/spl/Kconfig >> index 4de81392b0..95378b98a0 100644 >> --- a/common/spl/Kconfig >> +++ b/common/spl/Kconfig >> @@ -646,6 +646,12 @@ config SPL_DFU_RAM >> >> endchoice >> >> +config SPL_USB_SDP_SUPPORT >> + bool "Support SDP (Serial Download Protocol)" >> + help >> + Enable Serial Download Protocol (SDP) device support in SPL. This >> + allows to download images into memory and execute (jump to) them >> + using the same protocol as implemented by the i.MX family's boot ROM. >> endif >> >> config SPL_WATCHDOG_SUPPORT >> diff --git a/common/spl/Makefile b/common/spl/Makefile >> index 47a64dd7d0..a979560acf 100644 >> --- a/common/spl/Makefile >> +++ b/common/spl/Makefile >> @@ -29,4 +29,5 @@ obj-$(CONFIG_SPL_SATA_SUPPORT) += spl_sata.o >> obj-$(CONFIG_SPL_DFU_SUPPORT) += spl_dfu.o >> obj-$(CONFIG_SPL_SPI_LOAD) += spl_spi.o >> obj-$(CONFIG_SPL_RAM_SUPPORT) += spl_ram.o >> +obj-$(CONFIG_SPL_USB_SDP_SUPPORT) += spl_sdp.o >> endif >> diff --git a/common/spl/spl_sdp.c b/common/spl/spl_sdp.c >> new file mode 100644 >> index 0000000000..faa74b8bec >> --- /dev/null >> +++ b/common/spl/spl_sdp.c >> @@ -0,0 +1,38 @@ >> +/* >> + * (C) Copyright 2016 Toradex >> + * Author: Stefan Agner <stefan.ag...@toradex.com> >> + * >> + * SPDX-License-Identifier: GPL-2.0+ >> + */ >> + >> +#include <common.h> >> +#include <spl.h> >> +#include <usb.h> >> +#include <g_dnl.h> >> +#include <sdp.h> >> + >> +DECLARE_GLOBAL_DATA_PTR; >> + >> +static int spl_sdp_load_image(struct spl_image_info *spl_image, >> + struct spl_boot_device *bootdev) >> +{ >> + int ret; >> + >> + g_dnl_clear_detach(); >> + g_dnl_register("usb_dnl_sdp"); >> + >> + ret = sdp_init(); >> + if (ret) { >> + error("SDP init failed: %d", ret); >> + return -ENODEV; >> + } >> + >> + ret = sdp_handle(); >> > This function (and sdp_init() above) always return 0. Do you expect to > be changed in future? Otherwise the return type of those functions > should be changed to void. >
I followed f_thor's approach here which use int in both functions, but yeah, in the SDP case there is currently no error condition. Not sure there will be one added in the future, I guess we could just make it void for now. -- Stefan _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot