public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Stephan Linz <linz@mazet.de>
To: u-boot@lists.denx.de
Subject: [U-Boot-Users] Re: Re: [PATCH] Nios: WATCHDOG preparation
Date: Tue, 17 Feb 2004 18:34:42 +0100	[thread overview]
Message-ID: <0402171834420D.00467@pcj86> (raw)
In-Reply-To: <0402161107320B.00467@pcj86>

Am Montag, 16. Februar 2004 11:07 schrieb Stephan Linz:
> > --snip--
> >
> > > @@ -1174,7 +1175,11 @@ static void smc_write_phy_register (byte
> > >  #ifndef CONFIG_SMC91111_EXT_PHY
> > >  static void smc_wait_ms(unsigned int ms)
> > >  {
> > > +	/* B E   W A R N E D :
> > > +	 * DON'T EXCEED YOUR WATCHDOG TIMOUT WITH ARGUMENT 'ms' */
> > > +	WATCHDOG_RESET ();
> > >  	udelay(ms*1000);
> > > +	WATCHDOG_RESET ();
> >
> > This should never be  necessary.  The  udelay()  function  itself  is
> > expected to trigger the waitchdog as necessary.
> >
> > If this is not the case on NIOS, then please fix this first. It might
> > make some more of your modifications redundand, too.
>
> Hu, you're right. It isn't the case on NIOS. OK, I'll fix it up and try out
> this afternoon. You'll get a new patch tomorrow.

OK, here is the correct patch. Sorry for the delay :-)

Note: In my opinion this is the first stage. In second stage we should move 
the WATCHDOG_RESET macro from within udelay() C function into the underlayed 
assembly function dly_clks(). I've tried it out but without success, so I try 
again.


Best regards,
Stephan Linz
-------------- next part --------------
diff -purN -x CVS u-boot-20040210cvs-prepare_post/cpu/nios/interrupts.c u-boot-20040210cvs-prepare_watchdog/cpu/nios/interrupts.c
--- u-boot-20040210cvs-prepare_post/cpu/nios/interrupts.c	2004-02-16 21:50:23.000000000 +0000
+++ u-boot-20040210cvs-prepare_watchdog/cpu/nios/interrupts.c	2004-02-16 23:42:15.000000000 +0000
@@ -30,6 +30,7 @@
 #include <asm/ptrace.h>
 #include <common.h>
 #include <command.h>
+#include <watchdog.h>
 #ifdef CONFIG_STATUS_LED
 #include <status_led.h>
 #endif
@@ -54,6 +55,7 @@ void reset_timer (void)
 
 ulong get_timer (ulong base)
 {
+	WATCHDOG_RESET ();
 	return (timestamp - base);
 }
 
diff -purN -x CVS u-boot-20040210cvs-prepare_post/cpu/nios/serial.c u-boot-20040210cvs-prepare_watchdog/cpu/nios/serial.c
--- u-boot-20040210cvs-prepare_post/cpu/nios/serial.c	2003-10-08 23:26:14.000000000 +0000
+++ u-boot-20040210cvs-prepare_watchdog/cpu/nios/serial.c	2004-02-16 23:42:15.000000000 +0000
@@ -23,6 +23,7 @@
 
 
 #include <common.h>
+#include <watchdog.h>
 #include <nios-io.h>
 
 
@@ -62,7 +63,7 @@ void serial_putc( char c )
 	if (c == '\n')
 		serial_putc('\r');
 	while( (uart->status & NIOS_UART_TRDY) == 0 )
-		;
+		WATCHDOG_RESET ();
 	uart->txdata = (unsigned char)c;
 }
 
@@ -81,6 +82,6 @@ int serial_tstc( void )
 int serial_getc( void )
 {
 	while( serial_tstc() == 0 )
-		;
+		WATCHDOG_RESET ();
 	return( uart->rxdata & 0x00ff );
 }
diff -purN -x CVS u-boot-20040210cvs-prepare_post/include/watchdog.h u-boot-20040210cvs-prepare_watchdog/include/watchdog.h
--- u-boot-20040210cvs-prepare_post/include/watchdog.h	2003-08-29 10:05:54.000000000 +0000
+++ u-boot-20040210cvs-prepare_watchdog/include/watchdog.h	2004-02-16 23:42:15.000000000 +0000
@@ -31,6 +31,10 @@
 #  error "Configuration error: CONFIG_HW_WATCHDOG and CONFIG_WATCHDOG can't be used together."
 #endif
 
+#if defined(__ASSEMBLY__) && defined(__NIOS__)
+#  error "Configuration error: WATCHDOG_RESET inside assembler not supported for Nios platforms."
+#endif
+
 /*
  * Hardware watchdog
  */
diff -purN -x CVS u-boot-20040210cvs-prepare_post/lib_nios/board.c u-boot-20040210cvs-prepare_watchdog/lib_nios/board.c
--- u-boot-20040210cvs-prepare_post/lib_nios/board.c	2004-02-09 23:12:26.000000000 +0000
+++ u-boot-20040210cvs-prepare_watchdog/lib_nios/board.c	2004-02-16 23:42:15.000000000 +0000
@@ -139,13 +139,16 @@ void board_init (void)
 	bd->bi_baudrate	= CONFIG_BAUDRATE;
 
 	for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
+		WATCHDOG_RESET ();
 		if ((*init_fnc_ptr) () != 0) {
 			hang ();
 		}
 	}
 
+	WATCHDOG_RESET ();
 	bd->bi_flashsize = flash_init();
 
+	WATCHDOG_RESET ();
 	mem_malloc_init();
 	malloc_bin_reloc();
 	env_relocate();
@@ -157,12 +160,14 @@ void board_init (void)
 		if (s) s = (*e) ? e + 1 : e;
 	}
 
+	WATCHDOG_RESET ();
 	devices_init();
 	jumptable_init();
 	console_init_r();
 	/*
 	 */
 
+	WATCHDOG_RESET ();
 	interrupt_init ();
 
 #ifdef CONFIG_STATUS_LED
diff -purN -x CVS u-boot-20040210cvs-prepare_post/lib_nios/time.c u-boot-20040210cvs-prepare_watchdog/lib_nios/time.c
--- u-boot-20040210cvs-prepare_post/lib_nios/time.c	2003-10-08 23:26:15.000000000 +0000
+++ u-boot-20040210cvs-prepare_watchdog/lib_nios/time.c	2004-02-16 23:42:15.000000000 +0000
@@ -22,6 +22,7 @@
  */
 
 #include <common.h>
+#include <watchdog.h>
 
 
 extern void dly_clks( unsigned long ticks );
@@ -33,5 +34,6 @@ void udelay(unsigned long usec)
 	 * cpu clocks.
 	 */
 	unsigned long cnt = (CONFIG_SYS_CLK_FREQ/1000000) * usec;
+	WATCHDOG_RESET ();	/* trigger watchdog if needed */
 	dly_clks (cnt);
 }
diff -purN -x CVS u-boot-20040210cvs-prepare_post/nios_config.mk u-boot-20040210cvs-prepare_watchdog/nios_config.mk
--- u-boot-20040210cvs-prepare_post/nios_config.mk	2003-10-08 23:26:14.000000000 +0000
+++ u-boot-20040210cvs-prepare_watchdog/nios_config.mk	2004-02-16 23:42:15.000000000 +0000
@@ -22,4 +22,4 @@
 # MA 02111-1307 USA
 #
 
-PLATFORM_CPPFLAGS += -m32 -DCONFIG_NIOS -ffixed-g7
+PLATFORM_CPPFLAGS += -m32 -DCONFIG_NIOS -D__NIOS__ -ffixed-g7
-------------- next part --------------
* Patch by Stephan Linz, 16 Feb 2004
  - prepare WATCHDOG framework support for NIOS targets;
    (add WATCHDOG_RESET() macros)

  reply	other threads:[~2004-02-17 17:34 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-02-16  9:09 [U-Boot-Users] [PATCH] Nios: WATCHDOG preparation Stephan Linz
2004-02-16  9:30 ` [U-Boot-Users] " Wolfgang Denk
2004-02-16 10:07   ` Stephan Linz
2004-02-17 17:34     ` Stephan Linz [this message]
2004-02-23 23:19       ` Wolfgang Denk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0402171834420D.00467@pcj86 \
    --to=linz@mazet.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox