From 4af34177b657e91263919a307fd0b0865a299e52 Mon Sep 17 00:00:00 2001 From: Wolfgang Denk Date: Sun, 16 Aug 2009 23:40:13 +0200 Subject: Monahans: avoid floating point calculations Current code for the Monahans CPU defined OSCR_CLK_FREQ as 3.250 (MHz) which caused floating point operations to be used. This resulted in unresolved references to some FP related libgcc functions when using U-Boot's private libgcc functions. Change the code to use fixed point math only. Signed-off-by: Wolfgang Denk --- board/delta/nand.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'board/delta') diff --git a/board/delta/nand.c b/board/delta/nand.c index e87d502..85a6ba2 100644 --- a/board/delta/nand.c +++ b/board/delta/nand.c @@ -193,7 +193,7 @@ static unsigned long get_delta(unsigned long start) static void wait_us(unsigned long us) { unsigned long start = OSCR; - us *= OSCR_CLK_FREQ; + us = DIV_ROUND_UP(us * OSCR_CLK_FREQ, 1000); while (get_delta(start) < us) { /* do nothing */ @@ -214,9 +214,11 @@ static unsigned long dfc_wait_event(unsigned long event) if(!event) return 0xff000000; else if(event & (NDSR_CS0_CMDD | NDSR_CS0_BBD)) - timeout = CONFIG_SYS_NAND_PROG_ERASE_TO * OSCR_CLK_FREQ; + timeout = DIV_ROUND_UP(CONFIG_SYS_NAND_PROG_ERASE_TO + * OSCR_CLK_FREQ, 1000); else - timeout = CONFIG_SYS_NAND_OTHER_TO * OSCR_CLK_FREQ; + timeout = DIV_ROUND_UP(CONFIG_SYS_NAND_OTHER_TO + * OSCR_CLK_FREQ, 1000); while(1) { ndsr = NDSR; -- cgit v1.1