[U-Boot] [PATCH] Revert "imx: wdog: correct wcr register settings"
Fabio Estevam
festevam at gmail.com
Fri Oct 2 13:39:12 CEST 2015
On Fri, Oct 2, 2015 at 8:10 AM, Fabio Estevam <festevam at gmail.com> wrote:
> On Fri, Oct 2, 2015 at 1:30 AM, Wolfgang Denk <wd at denx.de> wrote:
>
>> In message <CAOMZO5CAQXVzpX9mW7uHKB98JnMBeuT3ZjiUe4-V4=adjRk0zg at mail.gmail.com> you
>> But if we agree that both are LE accessors, and that the register is
>> BE, then how does it work at all - we would be writing the wrong bit?
>
> Watchdog on LS1021 works by accident rather than by design.
>
> What we are trying to do is to avoid the regression on LS1021 for the
> 2015.10 release.
>
> Then a proper watchdog driver implementation is needed for 2016.01 so
> that it takes care of the endianness.
>
> Is this approach acceptable?
Or what about providing a reset_cpu() for LS102x that uses the proper
endianness? Would this be a better approach?
Sinan, does it work?
--- a/arch/arm/cpu/armv7/ls102xa/cpu.c
+++ b/arch/arm/cpu/armv7/ls102xa/cpu.c
@@ -13,6 +13,7 @@
#include <tsec.h>
#include <netdev.h>
#include <fsl_esdhc.h>
+#include <config.h>
#include "fsl_epu.h"
@@ -354,3 +355,25 @@ void smp_kick_all_cpus(void)
asm volatile("sev");
}
#endif
+
+struct watchdog_regs {
+ u16 wcr; /* Control */
+ u16 wsr; /* Service */
+ u16 wrsr; /* Reset Status */
+};
+
+#define WCR_WDE 0x04 /* WDOG enable */
+void reset_cpu(ulong addr)
+{
+ struct watchdog_regs *wdog = (struct watchdog_regs *)WDOG1_BASE_ADDR;
+
+ out_be16(&wdog->wcr, WCR_WDE);
+
+ out_be16(&wdog->wsr, 0x5555);
+ out_be16(&wdog->wsr, 0xaaaa); /* load minimum 1/2 second timeout */
+ while (1) {
+ /*
+ * spin for .5 seconds before reset
+ */
+ }
+}
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
index 9e9cb55..a007ae8 100644
--- a/drivers/watchdog/Makefile
+++ b/drivers/watchdog/Makefile
@@ -7,7 +7,7 @@
obj-$(CONFIG_AT91SAM9_WATCHDOG) += at91sam9_wdt.o
obj-$(CONFIG_FTWDT010_WATCHDOG) += ftwdt010_wdt.o
-ifneq (,$(filter $(SOC), mx31 mx35 mx5 mx6 mx7 vf610 ls102xa))
+ifneq (,$(filter $(SOC), mx31 mx35 mx5 mx6 mx7 vf610))
obj-y += imx_watchdog.o
endif
obj-$(CONFIG_S5P) += s5p_wdt.o
--
1.9.1
More information about the U-Boot
mailing list