]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - arch/blackfin/cpu/reset.c
Merge branch 'master' of git://git.denx.de/u-boot-blackfin
[karo-tx-uboot.git] / arch / blackfin / cpu / reset.c
index e23dcc7bae88aa8287ccb908e949fe9248060489..b6718d3bb5db44ccddc766da2afe770d307fd9c1 100644 (file)
@@ -23,6 +23,7 @@
 __attribute__ ((__l1_text__, __noreturn__))
 static void bfin_reset(void)
 {
+#ifdef SWRST
        /* Wait for completion of "system" events such as cache line
         * line fills so that we avoid infinite stalls later on as
         * much as possible.  This code is in L1, so it won't trigger
@@ -51,7 +52,9 @@ static void bfin_reset(void)
 
        /* The BF526 ROM will crash during reset */
 #if defined(__ADSPBF522__) || defined(__ADSPBF524__) || defined(__ADSPBF526__)
-       bfin_read_SWRST();
+       /* Seems to be fixed with newer parts though ... */
+       if (__SILICON_REVISION__ < 1 && bfin_revid() < 1)
+               bfin_read_SWRST();
 #endif
 
        /* Wait for the SWRST write to complete.  Cannot rely on SSYNC
@@ -64,10 +67,15 @@ static void bfin_reset(void)
                : "a" (15 * 1)
                : "LC1", "LB1", "LT1"
        );
+#endif
 
        while (1)
+#if defined(__ADSPBF60x__)
+               bfin_write_RCU0_CTL(0x1);
+#else
                /* Issue core reset */
                asm("raise 1");
+#endif
 }
 
 /* We need to trampoline ourselves up into L1 since our linker