diff target-utils/flash-boot-test/watchdog.c @ 490:3d7b546c710c

target-utils/flash-boot-test: more watchdog experimentation commands
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 21 May 2019 23:48:26 +0000
parents cd900b885eb2
children
line wrap: on
line diff
--- a/target-utils/flash-boot-test/watchdog.c	Tue May 21 21:25:07 2019 +0000
+++ b/target-utils/flash-boot-test/watchdog.c	Tue May 21 23:48:26 2019 +0000
@@ -1,9 +1,48 @@
+#include <sys/types.h>
 #include "types.h"
 
 void
-cmd_watchdog_disable()
+cmd_wd()
 {
 	/* stop/disable the watchdog timer */
 	*(volatile u16 *)0xFFFFF804 = 0xF5;
 	*(volatile u16 *)0xFFFFF804 = 0xA0;
 }
+
+void
+cmd_we()
+{
+	/* watchdog enable */
+	*(volatile u16 *)0xFFFFF804 = 0x8000;
+}
+
+void
+cmd_wr()
+{
+	/* read and display watchdog downcount register */
+	printf("%04X\n", *(volatile u16 *)0xFFFFF802);
+}
+
+void
+cmd_ww(argbulk)
+	char *argbulk;
+{
+	/* single or double write to WATCHDOG_TIM_MODE */
+	char *argv[3];
+	u_long w1, w2;
+
+	if (parse_args(argbulk, 1, 2, argv, 0) < 0)
+		return;
+	if (parse_hexarg(argv[0], 4, &w1) < 0) {
+		printf("ERROR: arg1 must be a valid 16-bit hex value\n");
+		return;
+	}
+	if (argv[1] && parse_hexarg(argv[1], 4, &w2) < 0) {
+		printf("ERROR: arg2 must be a valid 16-bit hex value\n");
+		return;
+	}
+	/* do it */
+	*(volatile u16 *)0xFFFFF804 = w1;
+	if (argv[1])
+		*(volatile u16 *)0xFFFFF804 = w2;
+}