Prevent USB commands from working when USB is stopped.

This commit is contained in:
Bartlomiej Sieka 2006-08-03 23:20:13 +02:00
parent 7455af41d1
commit e51aae3829
3 changed files with 12 additions and 0 deletions

View file

@ -2,6 +2,8 @@
Changes since U-Boot 1.1.4:
======================================================================
* Prevent USB commands from working when USB is stopped.
* Add rudimentary handling of alternate settings of USB interfaces.
This is in order to fix issues with some USB sticks or knives timing
out during initialisation. Some code readability improvements.

View file

@ -444,6 +444,7 @@ int do_usb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
int i;
struct usb_device *dev = NULL;
extern char usb_started;
#ifdef CONFIG_USB_STORAGE
block_dev_desc_t *stor_dev;
#endif
@ -477,6 +478,10 @@ int do_usb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
usb_stop();
return 0;
}
if (!usb_started) {
printf("USB is stopped. Please issue 'usb start' first.\n");
return 1;
}
if (strncmp(argv[1],"tree",4) == 0) {
printf("\nDevice Tree:\n");
usb_show_tree(usb_get_dev_index(0));

View file

@ -72,6 +72,8 @@ static int running;
static int asynch_allowed;
static struct devrequest setup_packet;
char usb_started; /* flag for the started/stopped USB status */
/**********************************************************************
* some forward declerations...
*/
@ -110,10 +112,12 @@ int usb_init(void)
printf("scanning bus for devices... ");
running=1;
usb_scan_devices();
usb_started = 1;
return 0;
}
else {
printf("Error, couldn't init Lowlevel part\n");
usb_started = 0;
return -1;
}
}
@ -124,6 +128,7 @@ int usb_init(void)
int usb_stop(void)
{
asynch_allowed=1;
usb_started = 0;
usb_hub_reset();
return usb_lowlevel_stop();
}