diff options
-rw-r--r-- | common/cmd_bootm.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index f701ab6f7c6..da38c322a23 100644 --- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -36,6 +36,10 @@ #include <lmb.h> #include <asm/byteorder.h> +#if (CONFIG_COMMANDS & CFG_CMD_USB) +#include <usb.h> +#endif + #ifdef CFG_HUSH_PARSER #include <hush.h> #endif @@ -213,6 +217,20 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) */ iflag = disable_interrupts(); +#if (CONFIG_COMMANDS & CFG_CMD_USB) + /* + * turn off USB to prevent the host controller from writing to the + * SDRAM while Linux is booting. This could happen (at least for OHCI + * controller), because the HCCA (Host Controller Communication Area) + * lies within the SDRAM and the host controller writes continously to + * this area (as busmaster!). The HccaFrameNumber is for example + * updated every 1 ms within the HCCA structure in SDRAM! For more + * details see the OpenHCI specification. + */ + usb_stop(); +#endif + + #ifdef CONFIG_AMIGAONEG3SE /* * We've possible left the caches enabled during |