mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 12:08:19 +00:00 
			
		
		
		
	Since we're now using a dynamic controller index for fastboot too, usb_gadget_handle_interrupts should be using it instead of 0 (despite the fact that it's currently not being used at all in the musb-new implementation). Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
		
			
				
	
	
		
			69 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * 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 <g_dnl.h>
 | |
| #include <usb.h>
 | |
| 
 | |
| static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 | |
| {
 | |
| 	int controller_index;
 | |
| 	char *usb_controller;
 | |
| 	int ret;
 | |
| 
 | |
| 	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) {
 | |
| 		error("USB init failed: %d", ret);
 | |
| 		return CMD_RET_FAILURE;
 | |
| 	}
 | |
| 
 | |
| 	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");
 | |
| 		ret = CMD_RET_FAILURE;
 | |
| 		goto exit;
 | |
| 	}
 | |
| 
 | |
| 	while (1) {
 | |
| 		if (g_dnl_detach())
 | |
| 			break;
 | |
| 		if (ctrlc())
 | |
| 			break;
 | |
| 		usb_gadget_handle_interrupts(controller_index);
 | |
| 	}
 | |
| 
 | |
| 	ret = CMD_RET_SUCCESS;
 | |
| 
 | |
| exit:
 | |
| 	g_dnl_unregister();
 | |
| 	g_dnl_clear_detach();
 | |
| 	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
 | |
| 
 | |
| 	return ret;
 | |
| }
 | |
| 
 | |
| U_BOOT_CMD(
 | |
| 	fastboot, 2, 1, do_fastboot,
 | |
| 	"use USB Fastboot protocol",
 | |
| 	"<USB_controller>\n"
 | |
| 	"    - run as a fastboot usb device"
 | |
| );
 |