summaryrefslogtreecommitdiff
path: root/common/spl/spl_sdp.c
diff options
context:
space:
mode:
authorStefan Agner <stefan.agner@toradex.com>2016-08-16 10:13:36 -0700
committerMax Krummenacher <max.krummenacher@toradex.com>2017-01-18 09:46:40 +0100
commit6a638b1936026523d6206c3b93066f3386da2937 (patch)
tree5c6626672b0bca4d7fdfebe039cc5865904c46fe /common/spl/spl_sdp.c
parent0b4ddd907a633ca9b5c8407d66e074a31c805336 (diff)
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> Acked-by: Max Krummenacher <max.krummenacher@toradex.com>
Diffstat (limited to 'common/spl/spl_sdp.c')
-rw-r--r--common/spl/spl_sdp.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/common/spl/spl_sdp.c b/common/spl/spl_sdp.c
new file mode 100644
index 0000000000..6252a452a8
--- /dev/null
+++ b/common/spl/spl_sdp.c
@@ -0,0 +1,38 @@
+/*
+ * (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;
+
+ 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();
+ if (ret) {
+ error("SDP failed: %d", ret);
+ return -ENODEV;
+ }
+
+ return 0;
+}
+SPL_LOAD_IMAGE_METHOD(0, BOOT_DEVICE_SDP, spl_sdp_load_image);