MLK-14422 imx7d: wdog: Overwrite the reset_cpu to turn off internal reset signal
authorYe Li <ye.li@nxp.com>
Tue, 7 Feb 2017 14:48:01 +0000 (22:48 +0800)
committerYe Li <ye.li@nxp.com>
Tue, 14 Mar 2017 13:27:09 +0000 (21:27 +0800)
Set wdog WCR register SRS bit to turn off internal reset signal WDOG_RESET_B_DEB
for mx7d. So that the warm reset is disabled.
The WDA is cleared to output WDOG_B immediately to reset the board.

Signed-off-by: Ye Li <ye.li@nxp.com>
arch/arm/cpu/armv7/mx7/soc.c

index dead1d3..4bfabf7 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ * Copyright 2017 NXP
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
@@ -17,6 +18,7 @@
 #include <asm/arch/crm_regs.h>
 #include <dm.h>
 #include <imx_thermal.h>
+#include <fsl_wdog.h>
 
 #if defined(CONFIG_IMX_THERMAL)
 static const struct imx_thermal_plat imx7_thermal_plat = {
@@ -463,3 +465,16 @@ void reset_misc(void)
 #endif
 }
 
+void reset_cpu(ulong addr)
+{
+       struct watchdog_regs *wdog = (struct watchdog_regs *)WDOG1_BASE_ADDR;
+
+       /* Clear WDA to trigger WDOG_B immediately */
+       writew((WCR_WDE | WCR_SRS), &wdog->wcr);
+
+       while (1) {
+               /*
+                * spin for .5 seconds before reset
+                */
+       }
+}