12f005695SStefan Agner /* 22f005695SStefan Agner * cmd_sdp.c -- sdp command 32f005695SStefan Agner * 42f005695SStefan Agner * Copyright (C) 2016 Toradex 52f005695SStefan Agner * Author: Stefan Agner <stefan.agner@toradex.com> 62f005695SStefan Agner * 72f005695SStefan Agner * SPDX-License-Identifier: GPL-2.0+ 82f005695SStefan Agner */ 92f005695SStefan Agner 102f005695SStefan Agner #include <common.h> 112f005695SStefan Agner #include <g_dnl.h> 122f005695SStefan Agner #include <sdp.h> 132f005695SStefan Agner #include <usb.h> 142f005695SStefan Agner 152f005695SStefan Agner static int do_sdp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) 162f005695SStefan Agner { 172f005695SStefan Agner int ret = CMD_RET_FAILURE; 182f005695SStefan Agner 192f005695SStefan Agner if (argc < 2) 202f005695SStefan Agner return CMD_RET_USAGE; 212f005695SStefan Agner 222f005695SStefan Agner char *usb_controller = argv[1]; 232f005695SStefan Agner int controller_index = simple_strtoul(usb_controller, NULL, 0); 24*b95d4446SJean-Jacques Hiblot usb_gadget_initialize(controller_index); 252f005695SStefan Agner 262f005695SStefan Agner g_dnl_clear_detach(); 272f005695SStefan Agner g_dnl_register("usb_dnl_sdp"); 282f005695SStefan Agner 292f005695SStefan Agner ret = sdp_init(controller_index); 302f005695SStefan Agner if (ret) { 318e33586eSAndre Heider pr_err("SDP init failed: %d\n", ret); 322f005695SStefan Agner goto exit; 332f005695SStefan Agner } 342f005695SStefan Agner 352f005695SStefan Agner /* This command typically does not return but jumps to an image */ 362f005695SStefan Agner sdp_handle(controller_index); 378e33586eSAndre Heider pr_err("SDP ended\n"); 382f005695SStefan Agner 392f005695SStefan Agner exit: 402f005695SStefan Agner g_dnl_unregister(); 41*b95d4446SJean-Jacques Hiblot usb_gadget_release(controller_index); 422f005695SStefan Agner 432f005695SStefan Agner return ret; 442f005695SStefan Agner } 452f005695SStefan Agner 462f005695SStefan Agner U_BOOT_CMD(sdp, 2, 1, do_sdp, 472f005695SStefan Agner "Serial Downloader Protocol", 482f005695SStefan Agner "<USB_controller>\n" 492f005695SStefan Agner " - serial downloader protocol via <USB_controller>\n" 502f005695SStefan Agner ); 51