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.
Lothar Waßmann _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot