Skip to content
Snippets Groups Projects
fastboot.c 1.34 KiB
Newer Older
  • Learn to ignore specific revisions
  • /*
     * Copyright 2008 - 2009 Windriver, <www.windriver.com>
     * Author: Tom Rix <Tom.Rix@windriver.com>
     *
     * (C) Copyright 2014 Linaro, Ltd.
     * Rob Herring <robh@kernel.org>
     *
     * SPDX-License-Identifier:	GPL-2.0+
     */
    #include <common.h>
    #include <command.h>
    
    #include <console.h>
    
    #include <g_dnl.h>
    
    
    static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
    {
    
    	int controller_index;
    	char *usb_controller;
    
    	if (argc < 2)
    		return CMD_RET_USAGE;
    
    	usb_controller = argv[1];
    	controller_index = simple_strtoul(usb_controller, NULL, 0);
    
    	ret = board_usb_init(controller_index, USB_INIT_DEVICE);
    	if (ret) {
    
    		pr_err("USB init failed: %d", ret);
    
    	g_dnl_clear_detach();
    
    	ret = g_dnl_register("usb_dnl_fastboot");
    	if (ret)
    		return ret;
    
    
    	if (!g_dnl_board_usb_cable_connected()) {
    		puts("\rUSB cable not detected.\n" \
    		     "Command exit.\n");
    
    		if (g_dnl_detach())
    			break;
    
    		if (ctrlc())
    			break;
    
    		usb_gadget_handle_interrupts(controller_index);
    
    	g_dnl_unregister();
    
    	g_dnl_clear_detach();
    
    	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
    
    	return ret;
    
    	"use USB Fastboot protocol",
    
    	"    - run as a fastboot usb device"