X-Git-Url: https://git.kernelconcepts.de/?p=karo-tx-uboot.git;a=blobdiff_plain;f=common%2Fcmd_misc.c;h=dc2772e85df24a8ae85303a70c5d5c9b42c30f01;hp=3ea8ee07f760e01a2c622bff5b6c8d79a0ab4bf1;hb=98ab435f736f24b503c8a9dbacc3ee1556a58106;hpb=50bd0057ba8fceeb48533f8b1a652ccd0e170838 diff --git a/common/cmd_misc.c b/common/cmd_misc.c index 3ea8ee07f7..dc2772e85d 100644 --- a/common/cmd_misc.c +++ b/common/cmd_misc.c @@ -27,42 +27,56 @@ #include #include -int do_sleep (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +static int do_sleep(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { ulong start = get_timer(0); ulong delay; - if (argc != 2) { - printf ("Usage:\n%s\n", cmdtp->usage); - return 1; - } + if (argc != 2) + return CMD_RET_USAGE; delay = simple_strtoul(argv[1], NULL, 10) * CONFIG_SYS_HZ; while (get_timer(start) < delay) { - if (ctrlc ()) { + if (ctrlc()) return (-1); - } - udelay (100); + + udelay(100); } return 0; } -/* Implemented in $(CPU)/interrupts.c */ -#if defined(CONFIG_CMD_IRQ) -int do_irqinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); - U_BOOT_CMD( - irqinfo, 1, 1, do_irqinfo, - "irqinfo - print information about IRQs\n", - NULL + sleep , 2, 1, do_sleep, + "delay execution for some time", + "N\n" + " - delay execution for N seconds (N is _decimal_ !!!)" ); -#endif + +#ifdef CONFIG_CMD_TIMER +static int do_timer(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + static ulong start; + + if (argc != 2) + return CMD_RET_USAGE; + + if (!strcmp(argv[1], "start")) + start = get_timer(0); + + if (!strcmp(argv[1], "get")) { + ulong msecs = get_timer(start) * 1000 / CONFIG_SYS_HZ; + printf("%ld.%03d\n", msecs / 1000, (int)(msecs % 1000)); + } + + return 0; +} U_BOOT_CMD( - sleep , 2, 1, do_sleep, - "sleep - delay execution for some time\n", - "N\n" - " - delay execution for N seconds (N is _decimal_ !!!)\n" + timer, 2, 1, do_timer, + "access the system timer", + "start - Reset the timer reference.\n" + "timer get - Print the time since 'start'." ); +#endif