summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorBartlomiej Sieka <tur@semihalf.com>2006-08-03 23:20:13 +0200
committerBartlomiej Sieka <tur@semihalf.com>2006-08-03 23:20:13 +0200
commite51aae382979dd838cd5d4027bb21072b7f03a20 (patch)
tree09a2d64cb23c360373fb06a2b6d0b752431e188f /common
parent7455af41d19d5e0194e23f3b06f1bf64e3430d62 (diff)
Prevent USB commands from working when USB is stopped.
Diffstat (limited to 'common')
-rw-r--r--common/cmd_usb.c5
-rw-r--r--common/usb.c5
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();
}