summaryrefslogtreecommitdiff
path: root/cmd/thordown.c
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/thordown.c')
-rw-r--r--cmd/thordown.c84
1 files changed, 84 insertions, 0 deletions
diff --git a/cmd/thordown.c b/cmd/thordown.c
new file mode 100644
index 00000000000..70061bf8d4c
--- /dev/null
+++ b/cmd/thordown.c
@@ -0,0 +1,84 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * cmd_thordown.c -- USB TIZEN "THOR" Downloader gadget
+ *
+ * Copyright (C) 2013 Lukasz Majewski <l.majewski@samsung.com>
+ * All rights reserved.
+ */
+
+#include <command.h>
+#include <thor.h>
+#include <dfu.h>
+#include <g_dnl.h>
+#include <usb.h>
+#include <linux/printk.h>
+
+int do_thor_down(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
+{
+ char *interface, *devstring;
+ int controller_index;
+ struct udevice *udc;
+ int ret;
+
+ if (argc < 4)
+ return CMD_RET_USAGE;
+
+ puts("TIZEN \"THOR\" Downloader\n");
+
+ interface = argv[2];
+ devstring = argv[3];
+
+ ret = dfu_init_env_entities(interface, devstring);
+ if (ret)
+ goto done;
+
+ controller_index = simple_strtoul(argv[1], NULL, 0);
+ ret = udc_device_get_by_index(controller_index, &udc);
+ if (ret) {
+ pr_err("USB init failed: %d\n", ret);
+ ret = CMD_RET_FAILURE;
+ goto exit;
+ }
+
+ ret = g_dnl_register("usb_dnl_thor");
+ if (ret) {
+ pr_err("g_dnl_register failed %d\n", ret);
+ ret = CMD_RET_FAILURE;
+ goto exit;
+ }
+
+ ret = thor_init(udc);
+ if (ret) {
+ pr_err("THOR DOWNLOAD failed: %d\n", ret);
+ ret = CMD_RET_FAILURE;
+ goto exit;
+ }
+
+ do {
+ ret = thor_handle(udc);
+ if (ret == THOR_DFU_REINIT_NEEDED) {
+ dfu_free_entities();
+ ret = dfu_init_env_entities(interface, devstring);
+ }
+ if (ret) {
+ pr_err("THOR failed: %d\n", ret);
+ ret = CMD_RET_FAILURE;
+ goto exit;
+ }
+ } while (ret == 0);
+exit:
+ g_dnl_unregister();
+ udc_device_put(udc);
+done:
+ 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 download\n"
+ " program via <USB_controller> on device <dev>,\n"
+ " attached to interface <interface>\n"
+);