* [U-Boot-Users] [PATCH] Nios: timer with variable period; POST preparation
@ 2004-02-13 8:45 Stephan Linz
2004-02-23 21:17 ` Wolfgang Denk
0 siblings, 1 reply; 2+ messages in thread
From: Stephan Linz @ 2004-02-13 8:45 UTC (permalink / raw)
To: u-boot
Hi all,
Hi Scott,
here are two small patches I need for my upcoming new Nios board support.
Scott, could you check-up the patches at your DK1C20 board and note Wolfgang
and me so we can put it into CVS ? -- thanks.
1/2 tick timer supports variable (programmable) periods (min. 1 ms tick)
2/2 some small preparation for upcoming POST support for Nios arch
--
Best regards,
Stephan Linz
-------------- next part --------------
* Patch by Stephan Linz, 12 Feb 2004
- add support for NIOS timer with variable period preload counter value
-------------- next part --------------
diff -purN -x CVS u-boot-20040210cvs/cpu/nios/interrupts.c u-boot-20040210cvs-timer_varper/cpu/nios/interrupts.c
--- u-boot-20040210cvs/cpu/nios/interrupts.c 2004-01-03 19:43:49.000000000 +0000
+++ u-boot-20040210cvs-timer_varper/cpu/nios/interrupts.c 2004-02-12 22:32:37.000000000 +0000
@@ -128,6 +128,10 @@ int interrupt_init (void)
tmr->control &= ~NIOS_TIMER_ITO;
tmr->control |= NIOS_TIMER_STOP;
+#if defined(CFG_NIOS_TMRCNT)
+ tmr->periodl = CFG_NIOS_TMRCNT & 0xffff;
+ tmr->periodh = (CFG_NIOS_TMRCNT >> 16) & 0xffff;
+#endif
#endif
for (vec=0; vec<64; vec++ ) {
diff -purN -x CVS u-boot-20040210cvs/doc/README.nios u-boot-20040210cvs-timer_varper/doc/README.nios
--- u-boot-20040210cvs/doc/README.nios 2004-02-09 23:12:25.000000000 +0000
+++ u-boot-20040210cvs-timer_varper/doc/README.nios 2004-02-12 22:42:32.000000000 +0000
@@ -100,6 +100,9 @@ CFG_NIOS_TMRIRQ -- the interrupt request
CFG_NIOS_TMRMS -- the period of the timer in milliseconds.
+CFG_NIOS_TMRCNT -- the preloadable counter value for the timer if it has
+ no fixed period.
+
CFG_NIOS_ASMIBASE -- the base address of the ASMI peripheral.
(standard-32: na_asmi_base).
diff -purN -x CVS u-boot-20040210cvs/include/configs/DK1C20.h u-boot-20040210cvs-timer_varper/include/configs/DK1C20.h
--- u-boot-20040210cvs/include/configs/DK1C20.h 2004-02-09 23:12:25.000000000 +0000
+++ u-boot-20040210cvs-timer_varper/include/configs/DK1C20.h 2004-02-12 22:38:49.000000000 +0000
@@ -146,17 +146,60 @@
#if (CFG_NIOS_CPU_TICK_TIMER == 0)
-#error *** CFG_ERROR: tick timer@TIMER0 not supported, expand your config.h
+#define CFG_NIOS_TMRBASE CFG_NIOS_CPU_TIMER0 /* TIMER0 as tick */
+#define CFG_NIOS_TMRIRQ CFG_NIOS_CPU_TIMER0_IRQ
+
+#if (CFG_NIOS_CPU_TIMER0_FP == 1) /* fixed period */
+
+#if (CFG_NIOS_CPU_TIMER0_PER >= CFG_HZ)
+#define CFG_NIOS_TMRMS (CFG_NIOS_CPU_TIMER0_PER / CFG_HZ)
+#else
+#error *** CFG_ERROR: you have to use a timer periode greater than CFG_HZ
+#endif
+
+#undef CFG_NIOS_TMRCNT /* no preloadable counter value */
+
+#elif (CFG_NIOS_CPU_TIMER0_FP == 0) /* variable period */
+
+#if (CFG_HZ <= 1000)
+#define CFG_NIOS_TMRMS (1000 / CFG_HZ)
+#else
+#error *** CFG_ERROR: sorry, CFG_HZ have to be less than 1000
+#endif
+
+#define CFG_NIOS_TMRCNT (CONFIG_SYS_CLK_FREQ / CFG_HZ)
+
+#else
+#error *** CFG_ERROR: you have to define CFG_NIOS_CPU_TIMER0_FP correct
+#endif
#elif (CFG_NIOS_CPU_TICK_TIMER == 1)
#define CFG_NIOS_TMRBASE CFG_NIOS_CPU_TIMER1 /* TIMER1 as tick */
#define CFG_NIOS_TMRIRQ CFG_NIOS_CPU_TIMER1_IRQ
+#if (CFG_NIOS_CPU_TIMER1_FP == 1) /* fixed period */
+
#if (CFG_NIOS_CPU_TIMER1_PER >= CFG_HZ)
#define CFG_NIOS_TMRMS (CFG_NIOS_CPU_TIMER1_PER / CFG_HZ)
#else
-#error *** CFG_ERROR: you have to use a timer periode of more than CFG_HZ
+#error *** CFG_ERROR: you have to use a timer periode greater than CFG_HZ
+#endif
+
+#undef CFG_NIOS_TMRCNT /* no preloadable counter value */
+
+#elif (CFG_NIOS_CPU_TIMER1_FP == 0) /* variable period */
+
+#if (CFG_HZ <= 1000)
+#define CFG_NIOS_TMRMS (1000 / CFG_HZ)
+#else
+#error *** CFG_ERROR: sorry, CFG_HZ have to be less than 1000
+#endif
+
+#define CFG_NIOS_TMRCNT (CONFIG_SYS_CLK_FREQ / CFG_HZ)
+
+#else
+#error *** CFG_ERROR: you have to define CFG_NIOS_CPU_TIMER1_FP correct
#endif
#endif /* CFG_NIOS_CPU_TICK_TIMER */
diff -purN -x CVS u-boot-20040210cvs/include/configs/DK1S10.h u-boot-20040210cvs-timer_varper/include/configs/DK1S10.h
--- u-boot-20040210cvs/include/configs/DK1S10.h 2004-02-09 23:12:26.000000000 +0000
+++ u-boot-20040210cvs-timer_varper/include/configs/DK1S10.h 2004-02-12 22:36:27.000000000 +0000
@@ -168,10 +168,28 @@
#define CFG_NIOS_TMRBASE CFG_NIOS_CPU_TIMER0 /* TIMER0 as tick */
#define CFG_NIOS_TMRIRQ CFG_NIOS_CPU_TIMER0_IRQ
+#if (CFG_NIOS_CPU_TIMER0_FP == 1) /* fixed period */
+
#if (CFG_NIOS_CPU_TIMER0_PER >= CFG_HZ)
#define CFG_NIOS_TMRMS (CFG_NIOS_CPU_TIMER0_PER / CFG_HZ)
#else
-#error *** CFG_ERROR: you have to use a timer periode of more than CFG_HZ
+#error *** CFG_ERROR: you have to use a timer periode greater than CFG_HZ
+#endif
+
+#undef CFG_NIOS_TMRCNT /* no preloadable counter value */
+
+#elif (CFG_NIOS_CPU_TIMER0_FP == 0) /* variable period */
+
+#if (CFG_HZ <= 1000)
+#define CFG_NIOS_TMRMS (1000 / CFG_HZ)
+#else
+#error *** CFG_ERROR: sorry, CFG_HZ have to be less than 1000
+#endif
+
+#define CFG_NIOS_TMRCNT (CONFIG_SYS_CLK_FREQ / CFG_HZ)
+
+#else
+#error *** CFG_ERROR: you have to define CFG_NIOS_CPU_TIMER0_FP correct
#endif
#elif (CFG_NIOS_CPU_TICK_TIMER == 1)
@@ -179,10 +197,28 @@
#define CFG_NIOS_TMRBASE CFG_NIOS_CPU_TIMER1 /* TIMER1 as tick */
#define CFG_NIOS_TMRIRQ CFG_NIOS_CPU_TIMER1_IRQ
+#if (CFG_NIOS_CPU_TIMER1_FP == 1) /* fixed period */
+
#if (CFG_NIOS_CPU_TIMER1_PER >= CFG_HZ)
#define CFG_NIOS_TMRMS (CFG_NIOS_CPU_TIMER1_PER / CFG_HZ)
#else
-#error *** CFG_ERROR: you have to use a timer periode of more than CFG_HZ
+#error *** CFG_ERROR: you have to use a timer periode greater than CFG_HZ
+#endif
+
+#undef CFG_NIOS_TMRCNT /* no preloadable counter value */
+
+#elif (CFG_NIOS_CPU_TIMER1_FP == 0) /* variable period */
+
+#if (CFG_HZ <= 1000)
+#define CFG_NIOS_TMRMS (1000 / CFG_HZ)
+#else
+#error *** CFG_ERROR: sorry, CFG_HZ have to be less than 1000
+#endif
+
+#define CFG_NIOS_TMRCNT (CONFIG_SYS_CLK_FREQ / CFG_HZ)
+
+#else
+#error *** CFG_ERROR: you have to define CFG_NIOS_CPU_TIMER1_FP correct
#endif
#endif /* CFG_NIOS_CPU_TICK_TIMER */
-------------- next part --------------
* Patch by Stephan Linz, 12 Feb 2004
- prepare POST framework support for NIOS targets
-------------- next part --------------
diff -purN -x CVS u-boot-20040210cvs-timer_varper/include/asm-nios/cache.h u-boot-20040210cvs-prepare_post/include/asm-nios/cache.h
--- u-boot-20040210cvs-timer_varper/include/asm-nios/cache.h 1970-01-01 00:00:00.000000000 +0000
+++ u-boot-20040210cvs-prepare_post/include/asm-nios/cache.h 2004-02-12 23:18:00.000000000 +0000
@@ -0,0 +1 @@
+/*FIXME: Implement this! */
diff -purN -x CVS u-boot-20040210cvs-timer_varper/include/asm-nios/global_data.h u-boot-20040210cvs-prepare_post/include/asm-nios/global_data.h
--- u-boot-20040210cvs-timer_varper/include/asm-nios/global_data.h 2003-10-10 10:05:43.000000000 +0000
+++ u-boot-20040210cvs-prepare_post/include/asm-nios/global_data.h 2004-02-12 23:18:00.000000000 +0000
@@ -34,6 +34,10 @@ typedef struct global_data {
unsigned long reloc_off; /* Relocation Offset */
unsigned long env_addr; /* Address of Environment struct */
unsigned long env_valid; /* Checksum of Environment valid */
+#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
+ unsigned long post_log_word; /* Record POST activities */
+ unsigned long post_init_f_time; /* When post_init_f started */
+#endif
void **jt; /* Standalone app jump table */
} gd_t;
^ permalink raw reply [flat|nested] 2+ messages in thread
* [U-Boot-Users] [PATCH] Nios: timer with variable period; POST preparation
2004-02-13 8:45 [U-Boot-Users] [PATCH] Nios: timer with variable period; POST preparation Stephan Linz
@ 2004-02-23 21:17 ` Wolfgang Denk
0 siblings, 0 replies; 2+ messages in thread
From: Wolfgang Denk @ 2004-02-23 21:17 UTC (permalink / raw)
To: u-boot
In message <04021309450508.00467@pcj86> you wrote:
>
> here are two small patches I need for my upcoming new Nios board support.
> Scott, could you check-up the patches at your DK1C20 board and note Wolfgang
> and me so we can put it into CVS ? -- thanks.
>
> 1/2 tick timer supports variable (programmable) periods (min. 1 ms tick)
> 2/2 some small preparation for upcoming POST support for Nios arch
Added both.
Please note: when you're working on POST support for another (non-
MPC8xx) processor, the post/ directory will need to be restructured
to support different processors; make sure to read the previous
discussion about this.
And thanks in advance - this cleanup / extension is long due ;-)
Best regards,
Wolfgang Denk
--
Software Engineering: Embedded and Realtime Systems, Embedded Linux
Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de
"Life sucks, but it's better than the alternative."
- Peter da Silva
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2004-02-23 21:17 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-02-13 8:45 [U-Boot-Users] [PATCH] Nios: timer with variable period; POST preparation Stephan Linz
2004-02-23 21:17 ` Wolfgang Denk
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox