Prevent USB commands from working when USB is stopped.
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 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 @@
 		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 asynch_allowed;
 static struct devrequest setup_packet;
 
+char usb_started; /* flag for the started/stopped USB status */
+
 /**********************************************************************
  * some forward declerations...
  */
@@ -110,10 +112,12 @@
 		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_stop(void)
 {
 	asynch_allowed=1;
+	usb_started = 0;
 	usb_hub_reset();
 	return usb_lowlevel_stop();
 }