summaryrefslogtreecommitdiff
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
parent7455af41d19d5e0194e23f3b06f1bf64e3430d62 (diff)
downloadu-boot-imx-e51aae382979dd838cd5d4027bb21072b7f03a20.zip
u-boot-imx-e51aae382979dd838cd5d4027bb21072b7f03a20.tar.gz
u-boot-imx-e51aae382979dd838cd5d4027bb21072b7f03a20.tar.bz2
Prevent USB commands from working when USB is stopped.
-rw-r--r--CHANGELOG2
-rw-r--r--common/cmd_usb.c5
-rw-r--r--common/usb.c5
3 files changed, 12 insertions, 0 deletions
diff --git a/CHANGELOG b/CHANGELOG
index e981116..df1b6d0 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -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.
diff --git a/common/cmd_usb.c b/common/cmd_usb.c
index fcc6662..28c05aa 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 b1b7aec..0857494 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();
}