From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lothar =?UTF-8?B?V2HDn21hbm4=?= Date: Tue, 8 Aug 2017 12:43:44 +0200 Subject: [U-Boot] [PATCH v1 5/7] spl: add serial download protocol (SDP) support In-Reply-To: <20170804233813.6136-6-stefan@agner.ch> References: <20170804233813.6136-1-stefan@agner.ch> <20170804233813.6136-6-stefan@agner.ch> Message-ID: <20170808124344.673ef99a@karo-electronics.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: quoted-printable To: u-boot@lists.denx.de Hi, On Fri, 4 Aug 2017 16:38:11 -0700 Stefan Agner wrote: > From: Stefan Agner >=20 > 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. >=20 > Signed-off-by: Stefan Agner > --- >=20 > 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 >=20 > 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 > =20 > endchoice > =20 > +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 > =20 > 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) +=3D spl_sata.o > obj-$(CONFIG_SPL_DFU_SUPPORT) +=3D spl_dfu.o > obj-$(CONFIG_SPL_SPI_LOAD) +=3D spl_spi.o > obj-$(CONFIG_SPL_RAM_SUPPORT) +=3D spl_ram.o > +obj-$(CONFIG_SPL_USB_SDP_SUPPORT) +=3D 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 > + * > + * SPDX-License-Identifier: GPL-2.0+ > + */ > + > +#include > +#include > +#include > +#include > +#include > + > +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 =3D sdp_init(); > + if (ret) { > + error("SDP init failed: %d", ret); > + return -ENODEV; > + } > + > + ret =3D 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=C3=9Fmann