diff options
Diffstat (limited to 'common')
| -rw-r--r-- | common/cmd_sf.c | 14 | ||||
| -rw-r--r-- | common/cmd_usb_mass_storage.c | 24 | 
2 files changed, 33 insertions, 5 deletions
| diff --git a/common/cmd_sf.c b/common/cmd_sf.c index 3994b0651..b4ceb7146 100644 --- a/common/cmd_sf.c +++ b/common/cmd_sf.c @@ -358,7 +358,8 @@ static void show_time(struct test_info *test, int stage)  	int bps;	/* Bits per second */  	speed = (long long)test->bytes * 1000; -	do_div(speed, test->time_ms[stage] * 1024); +	if (test->time_ms[stage]) +		do_div(speed, test->time_ms[stage] * 1024);  	bps = speed * 8;  	printf("%d %s: %d ticks, %d KiB/s %d.%03d Mbps\n", stage, @@ -446,11 +447,13 @@ static int do_spi_flash_test(int argc, char * const argv[])  {  	unsigned long offset;  	unsigned long len; -	uint8_t *buf = (uint8_t *)CONFIG_SYS_TEXT_BASE; +	uint8_t *buf, *from;  	char *endp;  	uint8_t *vbuf;  	int ret; +	if (argc < 3) +		return -1;  	offset = simple_strtoul(argv[1], &endp, 16);  	if (*argv[1] == 0 || *endp != 0)  		return -1; @@ -460,17 +463,18 @@ static int do_spi_flash_test(int argc, char * const argv[])  	vbuf = malloc(len);  	if (!vbuf) { -		printf("Cannot allocate memory\n"); +		printf("Cannot allocate memory (%lu bytes)\n", len);  		return 1;  	}  	buf = malloc(len);  	if (!buf) {  		free(vbuf); -		printf("Cannot allocate memory\n"); +		printf("Cannot allocate memory (%lu bytes)\n", len);  		return 1;  	} -	memcpy(buf, (char *)CONFIG_SYS_TEXT_BASE, len); +	from = map_sysmem(CONFIG_SYS_TEXT_BASE, 0); +	memcpy(buf, from, len);  	ret = spi_flash_test(flash, buf, len, offset, vbuf);  	free(vbuf);  	free(buf); diff --git a/common/cmd_usb_mass_storage.c b/common/cmd_usb_mass_storage.c index 99487f4d0..5f557d5f8 100644 --- a/common/cmd_usb_mass_storage.c +++ b/common/cmd_usb_mass_storage.c @@ -42,6 +42,30 @@ int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,  	g_dnl_register("ums"); +	/* Timeout unit: seconds */ +	int cable_ready_timeout = UMS_CABLE_READY_TIMEOUT; + +	if (!usb_cable_connected()) { +		puts("Please connect USB cable.\n"); + +		while (!usb_cable_connected()) { +			if (ctrlc()) { +				puts("\rCTRL+C - Operation aborted.\n"); +				goto exit; +			} +			if (!cable_ready_timeout) { +				puts("\rUSB cable not detected.\n" \ +				     "Command exit.\n"); +				goto exit; +			} + +			printf("\rAuto exit in: %.2d s.", cable_ready_timeout); +			mdelay(1000); +			cable_ready_timeout--; +		} +		puts("\r\n"); +	} +  	while (1) {  		usb_gadget_handle_interrupts(); |