Skip to contentSkip to conversation

Add support for freescale watchdog to CPM serial driver.

PATCH/RFCv3 Jochen Friedrich 1 participant 1 message Jan 18, 2008 PowerPC

lore
Share & tools
lore
#0 lore raw

If a freescale watchdog device node is present, reset the watchdog while waiting for serial input.

---

arch/powerpc/boot/Makefile     |    2 +-
arch/powerpc/boot/cpm-serial.c |    6 +++
arch/powerpc/boot/cuboot-8xx.c |    1 +
arch/powerpc/boot/ops.h        |    8 ++++
arch/powerpc/boot/watchdog.c   |   81 ++++++++++++++++++++++++++++++++++++++++
5 files changed, 97 insertions(+), 1 deletions(-)

create mode 100644 arch/powerpc/boot/watchdog.c

arch/powerpc/boot/Makefile +0 -0
index d1e625c..66edf77 100644
@@ -56,7 +56,7 @@ src-wlib := string.S crt0.S stdio.c main.c \
		gunzip_util.c elf_util.c $(zlib) devtree.c oflib.c ofconsole.c \
		4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \
		cpm-serial.c stdlib.c mpc52xx-psc.c planetcore.c uartlite.c \
-		fsl-soc.c mpc8xx.c pq2.c
+		fsl-soc.c mpc8xx.c pq2.c watchdog.c
src-plat := of.c cuboot-52xx.c cuboot-83xx.c cuboot-85xx.c holly.c \
		cuboot-ebony.c treeboot-ebony.c prpmc2800.c \
		ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c \
arch/powerpc/boot/cpm-serial.c +3 -0
index 28296fa..56b5fda 100644
@@ -6,6 +6,9 @@
 *
 * It is assumed that the firmware (or the platform file) has already set
 * up the port.
+ *
+ * If a watchdog node exists, periodically reset the watchdog while waiting
+ * for console input.
 */
 

#include "types.h"
@@ -154,6 +157,9 @@ static void cpm_serial_putc(unsigned char c)

static unsigned char cpm_serial_tstc(void)
{
+
+ watchdog_poke();
+

	barrier();
	return !(rbdf->sc & 0x8000);
}
arch/powerpc/boot/cuboot-8xx.c +0 -0
index c202c88..767670e 100644
@@ -43,5 +43,6 @@ void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
	CUBOOT_INIT();
	fdt_init(_dtb_start);
	serial_console_init();
+	watchdog_init();
	platform_ops.fixups = platform_fixups;
}
arch/powerpc/boot/ops.h +0 -0
index 6036a98..cc97e2b 100644
@@ -70,6 +70,12 @@ struct serial_console_data {
	void		(*close)(void);
};

+/* Watchdog operations */
+struct watchdog_ops {
+ void (*poke)(void);
+};
+extern struct watchdog_ops watchdog_ops;
+

struct loader_info {
	void *promptr;
	unsigned long initrd_addr, initrd_size;

@@ -86,6 +92,8 @@ int mpsc_console_init(void *devp, struct serial_console_data *scdp); int cpm_console_init(void *devp, struct serial_console_data *scdp);
int mpc5200_psc_console_init(void *devp, struct serial_console_data *scdp); int uartlite_console_init(void *devp, struct serial_console_data *scdp); +void watchdog_poke(void);
+void watchdog_init(void);
void *simple_alloc_init(char *base, unsigned long heap_size,

			unsigned long granularity, unsigned long max_allocs);

extern void flush_cache(void *, unsigned long);

arch/powerpc/boot/watchdog.c new file +81 -0

81 lines not on this page · raw message

Signature · 1 line
1.5.3.8