Patchwork [U-Boot,02/17] Add gettime command

login
register
mail settings
Submitter Simon Glass
Date Nov. 3, 2012, 12:27 a.m.
Message ID <1351902453-27956-3-git-send-email-sjg@chromium.org>
Download mbox | patch
Permalink /patch/196786/
State Superseded, archived
Delegated to: Tom Rini
Headers show

Comments

Simon Glass - Nov. 3, 2012, 12:27 a.m.
From: Anton Staaf <robotboy@chromium.org>

Gettime returns the current timer value.  If CONFIG_SYS_HZ is defined
then the timer value is also converted to seconds.

Tegra20 (SeaBoard) # gettime
Timer val: 7754
Seconds : 7
Remainder : 754
sys_hz = 1000

Signed-off-by: Anton Staaf <robotboy@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
---
 README                   |    1 +
 common/Makefile          |    1 +
 common/cmd_gettime.c     |   56 ++++++++++++++++++++++++++++++++++++++++++++++
 include/config_cmd_all.h |    1 +
 4 files changed, 59 insertions(+), 0 deletions(-)
 create mode 100644 common/cmd_gettime.c
Luka Perkov - Nov. 3, 2012, 8:22 a.m.
Hi Simon,

On Fri, Nov 02, 2012 at 05:27:18PM -0700, Simon Glass wrote:
> From: Anton Staaf <robotboy@chromium.org>
> 
> Gettime returns the current timer value.  If CONFIG_SYS_HZ is defined
> then the timer value is also converted to seconds.
> 
> Tegra20 (SeaBoard) # gettime
> Timer val: 7754
> Seconds : 7
> Remainder : 754
> sys_hz = 1000
> 
> Signed-off-by: Anton Staaf <robotboy@chromium.org>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>  README                   |    1 +
>  common/Makefile          |    1 +
>  common/cmd_gettime.c     |   56 ++++++++++++++++++++++++++++++++++++++++++++++
>  include/config_cmd_all.h |    1 +
>  4 files changed, 59 insertions(+), 0 deletions(-)
>  create mode 100644 common/cmd_gettime.c
> 
> diff --git a/README b/README
> index 22fd6b7..a080225 100644
> --- a/README
> +++ b/README
> @@ -815,6 +815,7 @@ The following options need to be configured:
>  		CONFIG_CMD_FDOS		* Dos diskette Support
>  		CONFIG_CMD_FLASH	  flinfo, erase, protect
>  		CONFIG_CMD_FPGA		  FPGA device initialization support
> +		CONFIG_CMD_GETTIME     * Get time since boot

Here should be TABs instead of spaces.

>  		CONFIG_CMD_GO		* the 'go' command (exec code)
>  		CONFIG_CMD_GREPENV	* search environment
>  		CONFIG_CMD_HWFLOW	* RTS/CTS hw flow control
> diff --git a/common/Makefile b/common/Makefile
> index 9e43322..0fb79ed 100644
> --- a/common/Makefile
> +++ b/common/Makefile
> @@ -100,6 +100,7 @@ ifdef CONFIG_FPGA
>  COBJS-$(CONFIG_CMD_FPGA) += cmd_fpga.o
>  endif
>  COBJS-$(CONFIG_CMD_FS_GENERIC) += cmd_fs.o
> +COBJS-$(CONFIG_CMD_GETTIME) += cmd_gettime.o
>  COBJS-$(CONFIG_CMD_GPIO) += cmd_gpio.o
>  COBJS-$(CONFIG_CMD_I2C) += cmd_i2c.o
>  COBJS-$(CONFIG_CMD_IDE) += cmd_ide.o
> diff --git a/common/cmd_gettime.c b/common/cmd_gettime.c
> new file mode 100644
> index 0000000..d7d36a9
> --- /dev/null
> +++ b/common/cmd_gettime.c
> @@ -0,0 +1,56 @@
> +/*
> + * Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
> + *
> + * Copyright (c) 2009, Code Aurora Forum. All rights reserved.
> + *
> + * (C) Copyright 2001
> + * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +/*
> + * Get Timer overflows after 2^32 / CONFIG_SYS_HZ (32Khz) = 131072 sec
> + */
> +#include <common.h>
> +#include <command.h>
> +
> +static int do_gettime(cmd_tbl_t *cmdtp, int flag, int argc,
> +		      char * const argv[])
> +{
> +	unsigned long int val = get_timer(0);
> +
> +#ifdef CONFIG_SYS_HZ
> +	printf("Timer val: %lu\n", val);
> +	printf("Seconds : %lu\n", val / CONFIG_SYS_HZ);
> +	printf("Remainder : %lu\n", val % CONFIG_SYS_HZ);
> +	printf("sys_hz = %lu\n", (unsigned long int)CONFIG_SYS_HZ);
> +#else
> +	printf("CONFIG_SYS_HZ not defined");
> +	printf("Timer Val %lu", val);
> +#endif
> +
> +	return 0;
> +}
> +
> +U_BOOT_CMD(
> +	gettime,	1,	1,	do_gettime,

I would put here spaces instead of TABs.

> +	"get timer val elapsed,\n",
> +	"get time elapsed from uboot start\n"
> +);
> diff --git a/include/config_cmd_all.h b/include/config_cmd_all.h
> index f434cd0..b87967e 100644
> --- a/include/config_cmd_all.h
> +++ b/include/config_cmd_all.h
> @@ -40,6 +40,7 @@
>  #define CONFIG_CMD_FDOS		/* Floppy DOS support		*/
>  #define CONFIG_CMD_FLASH	/* flinfo, erase, protect	*/
>  #define CONFIG_CMD_FPGA		/* FPGA configuration Support	*/
> +#define CONFIG_CMD_GETTIME	/* Get time since boot         */
>  #define CONFIG_CMD_HWFLOW	/* RTS/CTS hw flow control	*/
>  #define CONFIG_CMD_I2C		/* I2C serial bus support	*/
>  #define CONFIG_CMD_IDE		/* IDE harddisk support		*/
> -- 
> 1.7.7.3

Luka
Wolfgang Denk - Nov. 3, 2012, 3:24 p.m.
Dear Simon Glass,

In message <1351902453-27956-3-git-send-email-sjg@chromium.org> you wrote:
> From: Anton Staaf <robotboy@chromium.org>
> 
> Gettime returns the current timer value.  If CONFIG_SYS_HZ is defined
> then the timer value is also converted to seconds.
> 
> Tegra20 (SeaBoard) # gettime
> Timer val: 7754
> Seconds : 7
> Remainder : 754
> sys_hz = 1000

What exactly is this good for?

Also, are there any boards where CONFIG_SYS_HZ is NOT set?  [Which are
these?]

Best regards,

Wolfgang Denk
Simon Glass - Nov. 15, 2012, 10:15 p.m.
Hi Wolfgang,

On Sat, Nov 3, 2012 at 8:24 AM, Wolfgang Denk <wd@denx.de> wrote:
> Dear Simon Glass,
>
> In message <1351902453-27956-3-git-send-email-sjg@chromium.org> you wrote:
>> From: Anton Staaf <robotboy@chromium.org>
>>
>> Gettime returns the current timer value.  If CONFIG_SYS_HZ is defined
>> then the timer value is also converted to seconds.
>>
>> Tegra20 (SeaBoard) # gettime
>> Timer val: 7754
>> Seconds : 7
>> Remainder : 754
>> sys_hz = 1000
>
> What exactly is this good for?

Just for displaying the current time value and sys_hz. If you don't
think it is useful, please say so and we will drop it.

>
> Also, are there any boards where CONFIG_SYS_HZ is NOT set?  [Which are
> these?]

There are a few:

(for f in 01_of_04_g59852d03_Merge-branch-\'master/*/autoconf.mk; do
if ! grep -q CONFIG_SYS_HZ $f; then echo $f;  fi; done) | awk -F/
'{print $2}'
M52277EVB
M52277EVB_stmicro
M53017EVB
M54418TWR
M54418TWR_nand_mii
M54418TWR_nand_rmii
M54418TWR_nand_rmii_lowfreq
M54418TWR_serial_mii
M54418TWR_serial_rmii

Regards,
Simon

>
> Best regards,
>
> Wolfgang Denk
>
> --
> DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
> Earth -- mother of the most beautiful women in the universe.
>         -- Apollo, "Who Mourns for Adonais?" stardate 3468.1
Simon Glass - Nov. 15, 2012, 10:23 p.m.
Hi Luka,

On Sat, Nov 3, 2012 at 1:22 AM, Luka Perkov <uboot@lukaperkov.net> wrote:
> Hi Simon,
>
> On Fri, Nov 02, 2012 at 05:27:18PM -0700, Simon Glass wrote:
>> From: Anton Staaf <robotboy@chromium.org>
>>
>> Gettime returns the current timer value.  If CONFIG_SYS_HZ is defined
>> then the timer value is also converted to seconds.
>>
>> Tegra20 (SeaBoard) # gettime
>> Timer val: 7754
>> Seconds : 7
>> Remainder : 754
>> sys_hz = 1000
>>
>> Signed-off-by: Anton Staaf <robotboy@chromium.org>
>> Signed-off-by: Simon Glass <sjg@chromium.org>
>> ---
>>  README                   |    1 +
>>  common/Makefile          |    1 +
>>  common/cmd_gettime.c     |   56 ++++++++++++++++++++++++++++++++++++++++++++++
>>  include/config_cmd_all.h |    1 +
>>  4 files changed, 59 insertions(+), 0 deletions(-)
>>  create mode 100644 common/cmd_gettime.c
>>
>> diff --git a/README b/README
>> index 22fd6b7..a080225 100644
>> --- a/README
>> +++ b/README
>> @@ -815,6 +815,7 @@ The following options need to be configured:
>>               CONFIG_CMD_FDOS         * Dos diskette Support
>>               CONFIG_CMD_FLASH          flinfo, erase, protect
>>               CONFIG_CMD_FPGA           FPGA device initialization support
>> +             CONFIG_CMD_GETTIME     * Get time since boot
>
> Here should be TABs instead of spaces.

Done

>
>>               CONFIG_CMD_GO           * the 'go' command (exec code)
>>               CONFIG_CMD_GREPENV      * search environment
>>               CONFIG_CMD_HWFLOW       * RTS/CTS hw flow control
>> diff --git a/common/Makefile b/common/Makefile
>> index 9e43322..0fb79ed 100644
>> --- a/common/Makefile
>> +++ b/common/Makefile
>> @@ -100,6 +100,7 @@ ifdef CONFIG_FPGA
>>  COBJS-$(CONFIG_CMD_FPGA) += cmd_fpga.o
>>  endif
>>  COBJS-$(CONFIG_CMD_FS_GENERIC) += cmd_fs.o
>> +COBJS-$(CONFIG_CMD_GETTIME) += cmd_gettime.o
>>  COBJS-$(CONFIG_CMD_GPIO) += cmd_gpio.o
>>  COBJS-$(CONFIG_CMD_I2C) += cmd_i2c.o
>>  COBJS-$(CONFIG_CMD_IDE) += cmd_ide.o
>> diff --git a/common/cmd_gettime.c b/common/cmd_gettime.c
>> new file mode 100644
>> index 0000000..d7d36a9
>> --- /dev/null
>> +++ b/common/cmd_gettime.c
>> @@ -0,0 +1,56 @@
>> +/*
>> + * Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
>> + *
>> + * Copyright (c) 2009, Code Aurora Forum. All rights reserved.
>> + *
>> + * (C) Copyright 2001
>> + * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
>> + *
>> + * See file CREDITS for list of people who contributed to this
>> + * project.
>> + *
>> + * This program is free software; you can redistribute it and/or
>> + * modify it under the terms of the GNU General Public License as
>> + * published by the Free Software Foundation; either version 2 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + * GNU General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU General Public License
>> + * along with this program; if not, write to the Free Software
>> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
>> + * MA 02111-1307 USA
>> + */
>> +
>> +/*
>> + * Get Timer overflows after 2^32 / CONFIG_SYS_HZ (32Khz) = 131072 sec
>> + */
>> +#include <common.h>
>> +#include <command.h>
>> +
>> +static int do_gettime(cmd_tbl_t *cmdtp, int flag, int argc,
>> +                   char * const argv[])
>> +{
>> +     unsigned long int val = get_timer(0);
>> +
>> +#ifdef CONFIG_SYS_HZ
>> +     printf("Timer val: %lu\n", val);
>> +     printf("Seconds : %lu\n", val / CONFIG_SYS_HZ);
>> +     printf("Remainder : %lu\n", val % CONFIG_SYS_HZ);
>> +     printf("sys_hz = %lu\n", (unsigned long int)CONFIG_SYS_HZ);
>> +#else
>> +     printf("CONFIG_SYS_HZ not defined");
>> +     printf("Timer Val %lu", val);
>> +#endif
>> +
>> +     return 0;
>> +}
>> +
>> +U_BOOT_CMD(
>> +     gettime,        1,      1,      do_gettime,
>
> I would put here spaces instead of TABs.

I don't actually see any spaces on that line.

>
>> +     "get timer val elapsed,\n",
>> +     "get time elapsed from uboot start\n"
>> +);
>> diff --git a/include/config_cmd_all.h b/include/config_cmd_all.h
>> index f434cd0..b87967e 100644
>> --- a/include/config_cmd_all.h
>> +++ b/include/config_cmd_all.h
>> @@ -40,6 +40,7 @@
>>  #define CONFIG_CMD_FDOS              /* Floppy DOS support           */
>>  #define CONFIG_CMD_FLASH     /* flinfo, erase, protect       */
>>  #define CONFIG_CMD_FPGA              /* FPGA configuration Support   */
>> +#define CONFIG_CMD_GETTIME   /* Get time since boot         */
>>  #define CONFIG_CMD_HWFLOW    /* RTS/CTS hw flow control      */
>>  #define CONFIG_CMD_I2C               /* I2C serial bus support       */
>>  #define CONFIG_CMD_IDE               /* IDE harddisk support         */
>> --
>> 1.7.7.3
>
> Luka

Regards,
Simon

Patch

diff --git a/README b/README
index 22fd6b7..a080225 100644
--- a/README
+++ b/README
@@ -815,6 +815,7 @@  The following options need to be configured:
 		CONFIG_CMD_FDOS		* Dos diskette Support
 		CONFIG_CMD_FLASH	  flinfo, erase, protect
 		CONFIG_CMD_FPGA		  FPGA device initialization support
+		CONFIG_CMD_GETTIME     * Get time since boot
 		CONFIG_CMD_GO		* the 'go' command (exec code)
 		CONFIG_CMD_GREPENV	* search environment
 		CONFIG_CMD_HWFLOW	* RTS/CTS hw flow control
diff --git a/common/Makefile b/common/Makefile
index 9e43322..0fb79ed 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -100,6 +100,7 @@  ifdef CONFIG_FPGA
 COBJS-$(CONFIG_CMD_FPGA) += cmd_fpga.o
 endif
 COBJS-$(CONFIG_CMD_FS_GENERIC) += cmd_fs.o
+COBJS-$(CONFIG_CMD_GETTIME) += cmd_gettime.o
 COBJS-$(CONFIG_CMD_GPIO) += cmd_gpio.o
 COBJS-$(CONFIG_CMD_I2C) += cmd_i2c.o
 COBJS-$(CONFIG_CMD_IDE) += cmd_ide.o
diff --git a/common/cmd_gettime.c b/common/cmd_gettime.c
new file mode 100644
index 0000000..d7d36a9
--- /dev/null
+++ b/common/cmd_gettime.c
@@ -0,0 +1,56 @@ 
+/*
+ * Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+ *
+ * Copyright (c) 2009, Code Aurora Forum. All rights reserved.
+ *
+ * (C) Copyright 2001
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * Get Timer overflows after 2^32 / CONFIG_SYS_HZ (32Khz) = 131072 sec
+ */
+#include <common.h>
+#include <command.h>
+
+static int do_gettime(cmd_tbl_t *cmdtp, int flag, int argc,
+		      char * const argv[])
+{
+	unsigned long int val = get_timer(0);
+
+#ifdef CONFIG_SYS_HZ
+	printf("Timer val: %lu\n", val);
+	printf("Seconds : %lu\n", val / CONFIG_SYS_HZ);
+	printf("Remainder : %lu\n", val % CONFIG_SYS_HZ);
+	printf("sys_hz = %lu\n", (unsigned long int)CONFIG_SYS_HZ);
+#else
+	printf("CONFIG_SYS_HZ not defined");
+	printf("Timer Val %lu", val);
+#endif
+
+	return 0;
+}
+
+U_BOOT_CMD(
+	gettime,	1,	1,	do_gettime,
+	"get timer val elapsed,\n",
+	"get time elapsed from uboot start\n"
+);
diff --git a/include/config_cmd_all.h b/include/config_cmd_all.h
index f434cd0..b87967e 100644
--- a/include/config_cmd_all.h
+++ b/include/config_cmd_all.h
@@ -40,6 +40,7 @@ 
 #define CONFIG_CMD_FDOS		/* Floppy DOS support		*/
 #define CONFIG_CMD_FLASH	/* flinfo, erase, protect	*/
 #define CONFIG_CMD_FPGA		/* FPGA configuration Support	*/
+#define CONFIG_CMD_GETTIME	/* Get time since boot         */
 #define CONFIG_CMD_HWFLOW	/* RTS/CTS hw flow control	*/
 #define CONFIG_CMD_I2C		/* I2C serial bus support	*/
 #define CONFIG_CMD_IDE		/* IDE harddisk support		*/