Blame view

cmd/misc.c 1.57 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  // SPDX-License-Identifier: GPL-2.0+
3863585bb   wdenk   Initial revision
2
3
4
  /*
   * (C) Copyright 2001
   * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
3863585bb   wdenk   Initial revision
5
6
7
8
9
10
11
   */
  
  /*
   * Misc functions
   */
  #include <common.h>
  #include <command.h>
24b852a7a   Simon Glass   Move console defi...
12
  #include <console.h>
3863585bb   wdenk   Initial revision
13

088f1b199   Kim Phillips   common/cmd_*.c: s...
14
  static int do_sleep(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
3863585bb   wdenk   Initial revision
15
  {
c4c13df28   Stefan Roese   Fix problem with ...
16
  	ulong start = get_timer(0);
c4974632e   mario.six@gdsys.cc   cmd: misc: Add su...
17
  	ulong mdelay = 0;
3863585bb   wdenk   Initial revision
18
  	ulong delay;
c4974632e   mario.six@gdsys.cc   cmd: misc: Add su...
19
  	char *frpart;
3863585bb   wdenk   Initial revision
20

47e26b1bf   Wolfgang Denk   cmd_usage(): simp...
21
  	if (argc != 2)
4c12eeb8b   Simon Glass   Convert cmd_usage...
22
  		return CMD_RET_USAGE;
3863585bb   wdenk   Initial revision
23

6d0f6bcf3   Jean-Christophe PLAGNIOL-VILLARD   rename CFG_ macro...
24
  	delay = simple_strtoul(argv[1], NULL, 10) * CONFIG_SYS_HZ;
3863585bb   wdenk   Initial revision
25

c4974632e   mario.six@gdsys.cc   cmd: misc: Add su...
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
  	frpart = strchr(argv[1], '.');
  
  	if (frpart) {
  		uint mult = CONFIG_SYS_HZ / 10;
  		for (frpart++; *frpart != '\0' && mult > 0; frpart++) {
  			if (*frpart < '0' || *frpart > '9') {
  				mdelay = 0;
  				break;
  			}
  			mdelay += (*frpart - '0') * mult;
  			mult /= 10;
  		}
  	}
  
  	delay += mdelay;
c4c13df28   Stefan Roese   Fix problem with ...
41
  	while (get_timer(start) < delay) {
088f1b199   Kim Phillips   common/cmd_*.c: s...
42
  		if (ctrlc())
c4c13df28   Stefan Roese   Fix problem with ...
43
  			return (-1);
47e26b1bf   Wolfgang Denk   cmd_usage(): simp...
44

088f1b199   Kim Phillips   common/cmd_*.c: s...
45
  		udelay(100);
3863585bb   wdenk   Initial revision
46
  	}
c4c13df28   Stefan Roese   Fix problem with ...
47

3863585bb   wdenk   Initial revision
48
49
  	return 0;
  }
c4c13df28   Stefan Roese   Fix problem with ...
50

0d4983930   wdenk   Patch by Kenneth ...
51
  U_BOOT_CMD(
9912121f7   Detlev Zundel   Change 'repeatabl...
52
  	sleep ,    2,    1,     do_sleep,
2fb2604d5   Peter Tyser   Command usage cle...
53
  	"delay execution for some time",
8bde7f776   wdenk   * Code cleanup:
54
55
  	"N
  "
c4974632e   mario.six@gdsys.cc   cmd: misc: Add su...
56
57
58
  	"    - delay execution for N seconds (N is _decimal_ and can be
  "
  	"      fractional)"
8bde7f776   wdenk   * Code cleanup:
59
  );
da83bcd7b   Joe Hershberger   Add a command to ...
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
  
  #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
  ", msecs / 1000, (int)(msecs % 1000));
  	}
  
  	return 0;
  }
  
  U_BOOT_CMD(
  	timer,    2,    1,     do_timer,
  	"access the system timer",
  	"start - Reset the timer reference.
  "
  	"timer get   - Print the time since 'start'."
  );
  #endif