diff options
author | Stefan Agner <stefan.agner@toradex.com> | 2017-08-16 21:00:54 +0300 |
---|---|---|
committer | Stefano Babic <sbabic@denx.de> | 2017-08-23 11:41:58 +0300 |
commit | a3774c1c3c28e4ed89a36383ca73970b809bae94 (patch) | |
tree | 70ac6a2501b2522fcbde3491d51fae4bd0e595ba /common/spl/spl_sdp.c | |
parent | 2f005695df7b03d25a367f6bedc41c015088ee29 (diff) | |
download | u-boot-a3774c1c3c28e4ed89a36383ca73970b809bae94.tar.xz |
spl: add serial download protocol (SDP) support
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.agner@toradex.com>
Reviewed-by: Stefano Babic <sbabic@denx.de>
Reviewed-by: Ćukasz Majewski <lukma@denx.de>
Diffstat (limited to 'common/spl/spl_sdp.c')
-rw-r--r-- | common/spl/spl_sdp.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/common/spl/spl_sdp.c b/common/spl/spl_sdp.c new file mode 100644 index 0000000000..350bcdb056 --- /dev/null +++ b/common/spl/spl_sdp.c @@ -0,0 +1,37 @@ +/* + * (C) Copyright 2016 Toradex + * Author: Stefan Agner <stefan.agner@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; + const int controller_index = 0; + + g_dnl_clear_detach(); + g_dnl_register("usb_dnl_sdp"); + + ret = sdp_init(controller_index); + if (ret) { + error("SDP init failed: %d", ret); + return -ENODEV; + } + + /* This command typically does not return but jumps to an image */ + sdp_handle(controller_index); + error("SDP ended"); + + return -EINVAL; +} +SPL_LOAD_IMAGE_METHOD("USB SDP", 0, BOOT_DEVICE_BOARD, spl_sdp_load_image); |