]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - arch/blackfin/cpu/start.S
Update from 2013.01 to 2013.07
[karo-tx-uboot.git] / arch / blackfin / cpu / start.S
index 90b4d1ae942c50617c967fc8b9c295190d3f178b..c99cf49833511a0c2c08ec5b2c1a4b82493345a6 100644 (file)
  * (c) 1995, Dionne & Associates
  * (c) 1995, DKG Display Tech.
  *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- * MA 02110-1301 USA
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <config.h>
 #include <asm/blackfin.h>
+#include <asm/mach-common/bits/watchdog.h>
 #include <asm/mach-common/bits/core.h>
 #include <asm/mach-common/bits/pll.h>
-
-#include "serial.h"
+#include <asm/serial.h>
 
 /* It may seem odd that we make calls to functions even though we haven't
  * relocated ourselves yet out of {flash,ram,wherever}.  This is OK because
@@ -65,18 +49,29 @@ ENTRY(_start)
        p5.h = HI(COREMMR_BASE);
 
 #ifdef CONFIG_HW_WATCHDOG
-# ifndef CONFIG_HW_WATCHDOG_TIMEOUT_START
-#  define CONFIG_HW_WATCHDOG_TIMEOUT_START 5000
-# endif
-       /* Program the watchdog with an initial timeout of ~5 seconds.
+       /* Program the watchdog with default timeout of ~5 seconds.
         * That should be long enough to bootstrap ourselves up and
         * then the common u-boot code can take over.
         */
+       r1 = WDDIS;
+# ifdef __ADSPBF60x__
+       [p4 + (WDOG_CTL - SYSMMR_BASE)] = r1;
+# else
+       W[p4 + (WDOG_CTL - SYSMMR_BASE)] = r1;
+# endif
+       SSYNC;
        r0 = 0;
-       r0.h = HI(MSEC_TO_SCLK(CONFIG_HW_WATCHDOG_TIMEOUT_START));
+       r0.h = HI(MSEC_TO_SCLK(CONFIG_WATCHDOG_TIMEOUT_MSECS));
        [p4 + (WDOG_CNT - SYSMMR_BASE)] = r0;
+       SSYNC;
+       r1 = WDEN;
        /* fire up the watchdog - R0.L above needs to be 0x0000 */
-       W[p4 + (WDOG_CTL - SYSMMR_BASE)] = r0;
+# ifdef __ADSPBF60x__
+       [p4 + (WDOG_CTL - SYSMMR_BASE)] = r1;
+# else
+       W[p4 + (WDOG_CTL - SYSMMR_BASE)] = r1;
+# endif
+       SSYNC;
 #endif
 
        /* Turn on the serial for debugging the init process */