diff mbox

[U-Boot,v2,08/10] cmd:thor: Support for TIZEN's download command (thordown)

Message ID 1381235446-31477-9-git-send-email-l.majewski@samsung.com
State Awaiting Upstream
Delegated to: Marek Vasut
Headers show

Commit Message

Ɓukasz Majewski Oct. 8, 2013, 12:30 p.m. UTC
New command - thordown - has been added to support downloading data
via lthor TIZEN program.
It is similar to dfu command syntax and reuses its code for flashing data.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>

---
Changes for v2:
- Adjust according to new board_usb_init() function semantics.
- do_thor_down() written in a similar way to rewritten do_dfu() function
- Check error condition for board_usb_init()

 common/Makefile       |    1 +
 common/cmd_thordown.c |   72 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 73 insertions(+)
 create mode 100644 common/cmd_thordown.c
diff mbox

Patch

diff --git a/common/Makefile b/common/Makefile
index 288690b..8daca5b 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -168,6 +168,7 @@  COBJS-y += usb.o usb_hub.o
 COBJS-$(CONFIG_USB_STORAGE) += usb_storage.o
 endif
 COBJS-$(CONFIG_CMD_USB_MASS_STORAGE) += cmd_usb_mass_storage.o
+COBJS-$(CONFIG_CMD_THOR_DOWNLOAD) += cmd_thordown.o
 COBJS-$(CONFIG_CMD_XIMG) += cmd_ximg.o
 COBJS-$(CONFIG_YAFFS2) += cmd_yaffs2.o
 COBJS-$(CONFIG_CMD_SPL) += cmd_spl.o
diff --git a/common/cmd_thordown.c b/common/cmd_thordown.c
new file mode 100644
index 0000000..c4b3511
--- /dev/null
+++ b/common/cmd_thordown.c
@@ -0,0 +1,72 @@ 
+/*
+ * cmd_thordown.c -- USB TIZEN "THOR" Downloader gadget
+ *
+ * Copyright (C) 2013 Lukasz Majewski <l.majewski@samsung.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <thor.h>
+#include <dfu.h>
+#include <g_dnl.h>
+#include <usb.h>
+
+int do_thor_down(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+	if (argc < 4)
+		return CMD_RET_USAGE;
+
+	char *usb_controller = argv[1];
+	char *interface = argv[2];
+	char *devstring = argv[3];
+
+	const char *s = "thor";
+	int ret;
+
+	puts("TIZEN \"THOR\" Downloader\n");
+
+	ret = dfu_init_env_entities(interface, simple_strtoul(devstring,
+							      NULL, 10));
+	if (ret)
+		return ret;
+
+	int controller_index = simple_strtoul(usb_controller, NULL, 0);
+	ret = board_usb_init(controller_index, USB_INIT_DEVICE);
+	if (ret) {
+		error("USB init failed: %d", ret);
+		ret = CMD_RET_FAILURE;
+		goto exit;
+	}
+
+	g_dnl_register(s);
+
+	ret = thor_init();
+	if (ret) {
+		error("THOR DOWNLOAD failed: %d", ret);
+		ret = CMD_RET_FAILURE;
+		goto exit;
+	}
+
+	ret = thor_handle();
+	if (ret) {
+		error("THOR failed: %d", ret);
+		ret = CMD_RET_FAILURE;
+		goto exit;
+	}
+
+exit:
+	g_dnl_unregister();
+	dfu_free_entities();
+
+	return ret;
+}
+
+U_BOOT_CMD(thordown, CONFIG_SYS_MAXARGS, 1, do_thor_down,
+	   "TIZEN \"THOR\" downloader",
+	   "<USB_controller> <interface> <dev>\n"
+	   "  - device software upgrade via LTHOR TIZEN dowload\n"
+	   "    program via <USB_controller> on device <dev>,\n"
+	   "	attached to interface <interface>\n"
+);