#
# Source files and search directories
#
-CSRC += lcd.c led.c main.c mmc.c pff.c twi.c ssm2603.c
+CSRC += lcd.c led.c main.c mmc.c pff.c twi.c ssm2603.c bfin_util.c
ASRC +=
VPATH =
--- /dev/null
+
+#include <cdefBF592-A.h>
+#include "bfin_util.h"
+
+void bfin_util_usleep(const uint32_t usec)
+{
+ uint32_t start;
+ uint32_t now;
+ uint32_t stop = usec * (1000 / 2.5);
+ /* 1 cycle = 2.5ns */
+
+ asm("%0 = CYCLES;" : "=d"(start));
+ while (1) {
+ asm volatile("%0 = CYCLES;" : "=d"(now));
+ if ((now - start) >= stop) {
+ break;
+ }
+ }
+}
+
\r
#include "diskio.h"\r
#include <cdefBF592-A.h>\r
+#include "bfin_util.h"\r
\r
/*-------------------------------------------------------------------------*/\r
/* Platform dependent macros and functions needed to be modified */\r
asm("ssync;"); \\r
} while (0)\r
/* Delay n microseconds */\r
-#define DLY_US(n) do { volatile uint32_t dlycnt; for (dlycnt = 0; dlycnt < (n) * 100; dlycnt++) { asm("nop;"); } } while (0)\r
+#define DLY_US(n) bfin_util_usleep(n)\r
/* Data in-time processing function (depends on the project) */\r
#define FORWARD(d) do { } while (0)\r
\r