Fix merge problems
[platform/kernel/u-boot.git] / common / cmd_bootm.c
index f701ab6..18d7100 100644 (file)
 #include <lmb.h>
 #include <asm/byteorder.h>
 
+#if defined(CONFIG_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 defined(CONFIG_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
@@ -233,10 +251,9 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 
                        memmove_wd ((void *)load_start,
                                   (void *)os_data, os_len, CHUNKSZ);
-
-                       load_end = load_start + os_len;
-                       puts("OK\n");
                }
+               load_end = load_start + os_len;
+               puts("OK\n");
                break;
        case IH_COMP_GZIP:
                printf ("   Uncompressing %s ... ", type_name);