diff options
author | Bartlomiej Sieka <tur@semihalf.com> | 2006-08-03 23:20:13 +0200 |
---|---|---|
committer | Bartlomiej Sieka <tur@semihalf.com> | 2006-08-03 23:20:13 +0200 |
commit | e51aae382979dd838cd5d4027bb21072b7f03a20 (patch) | |
tree | 09a2d64cb23c360373fb06a2b6d0b752431e188f /common | |
parent | 7455af41d19d5e0194e23f3b06f1bf64e3430d62 (diff) |
Prevent USB commands from working when USB is stopped.
Diffstat (limited to 'common')
-rw-r--r-- | common/cmd_usb.c | 5 | ||||
-rw-r--r-- | common/usb.c | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/common/cmd_usb.c b/common/cmd_usb.c index fcc66621a3..28c05aa20e 100644 --- a/common/cmd_usb.c +++ b/common/cmd_usb.c @@ -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)); diff --git a/common/usb.c b/common/usb.c index b1b7aec621..0857494b27 100644 --- a/common/usb.c +++ b/common/usb.c @@ -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(); } |