sandbox: add a sandbox timer and basic test
PATCH 1/1 sandbox: add a sandbox timer and basic test
Add a sandbox timer which get time from host os and a basic test.
--- arch/sandbox/dts/sandbox.dts | 4 ++ board/sandbox/sandbox.c | 2 + common/board_f.c | 2 +- configs/sandbox_defconfig | 2 + doc/device-tree-bindings/timer/sandbox_timer.txt | 7 ++++ drivers/timer/Kconfig | 7 ++++ drivers/timer/Makefile | 1 + drivers/timer/sandbox_timer.c | 53 ++++++++++++++++++++++++ include/configs/sandbox.h | 2 + test/dm/Makefile | 1 + test/dm/timer.c | 27 ++++++++++++ 11 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 doc/device-tree-bindings/timer/sandbox_timer.txt create mode 100644 drivers/timer/sandbox_timer.c create mode 100644 test/dm/timer.c
arch/sandbox/dts/sandbox.dts +4 -0
@@ -177,6 +177,10 @@ sides = <4>; }; + timer { + compatible = "sandbox,timer"; + }; + tpm { compatible = "google,sandbox-tpm"; };
board/sandbox/sandbox.c +2 -0
@@ -26,6 +26,7 @@ void flush_cache(unsigned long start, unsigned long size) { } +#ifndef CONFIG_TIMER /* system timer offset in ms */ static unsigned long sandbox_timer_offset;
@@ -38,6 +39,7 @@ unsigned long timer_read_counter(void) {return os_get_nsec () /1000 + sandbox_timer_offset *1000 ; } +#endif int dram_init (void ) {
common/board_f.c +1 -1
@@ -778,9 +778,9 @@ static init_fnc_t init_sequence_f[] = { x86_fsp_init, #endif arch_cpu_init,/* basic arch cpu dependent setup */ - mark_bootstage, initf_dm, arch_cpu_init_dm, + mark_bootstage,/* need timer, go after init dm */ #if defined(CONFIG_BOARD_EARLY_INIT_F) board_early_init_f, #endif
configs/sandbox_defconfig +2 -0
@@ -47,6 +47,8 @@ CONFIG_SANDBOX_SERIAL=y CONFIG_SOUND=y CONFIG_SOUND_SANDBOX=y CONFIG_SANDBOX_SPI=y +CONFIG_TIMER=y +CONFIG_SANDBOX_TIMER=y CONFIG_DM_TPM=y CONFIG_TPM_TIS_SANDBOX=y CONFIG_USB=y
doc/device-tree-bindings/timer/sandbox_timer.txt new file +7 -0
@@ -0,0 +1,7 @@ +Sandbox timer + +The sandbox timer device is an emulated device which gets time from +host os. + +Required properties: + compatible: "sandbox,timer"
drivers/timer/Kconfig +7 -0
@@ -16,4 +16,11 @@ config ALTERA_TIMER Select this to enable an timer for Altera devices. Please find details on the "Embedded Peripherals IP User Guide" of Altera. +config SANDBOX_TIMER + bool "Sandbox Timer support" + depends on SANDBOX && TIMER + help + Select this to enable an emulated timer for sandbox. It gets + time from host os. + endmenu
drivers/timer/Makefile +1 -0
@@ -6,3 +6,4 @@ obj-$(CONFIG_TIMER) += timer-uclass.o obj-$(CONFIG_ALTERA_TIMER) += altera_timer.o +obj-$(CONFIG_SANDBOX_TIMER) += sandbox_timer.o
drivers/timer/sandbox_timer.c new file +53 -0
53 lines not on this page · raw message
include/configs/sandbox.h +2 -0
@@ -19,7 +19,9 @@#define CONFIG_IO_TRACE #define CONFIG_CMD_IOTRACE +#ifndef CONFIG_TIMER #define CONFIG_SYS_TIMER_RATE 1000000 +#endif #define CONFIG_SYS_STDIO_DEREGISTER
test/dm/Makefile +1 -0
@@ -32,4 +32,5 @@ obj-y += syscon.o obj-$(CONFIG_DM_USB) += usb.o obj-$(CONFIG_DM_PMIC) += pmic.o obj-$(CONFIG_DM_REGULATOR) += regulator.o +obj-$(CONFIG_TIMER) += timer.o endif
test/dm/timer.c new file +27 -0
@@ -0,0 +1,27 @@ +/* +* Copyright (C) 2015 Thomas Chou <[email protected]> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#include <common.h> +#include <dm.h> +#include <timer.h> +#include <dm/test.h> +#include <test/ut.h> + +DECLARE_GLOBAL_DATA_PTR ; + +/* +* Basic test of the timer uclass. +*/ +static int dm_test_timer_base (struct unit_test_state *uts) +{ +struct udevice *dev; + +ut_assertok (uclass_get_device (UCLASS_TIMER ,0 , &dev)); +ut_asserteq (1000000 ,timer_get_rate (dev)); + +return 0 ; +} +DM_TEST (dm_test_timer_base,DM_TESTF_SCAN_PDATA |DM_TESTF_SCAN_FDT );
Signature · 1 line
2.1.4
PATCH 1/1 sandbox: add a sandbox timer and basic test
Hi Thomas,
Quoted 4 lines · Thomas Chou
Add a sandbox timer which get time from host os and a basic test.
Signed-off-by Thomas Chou <[email protected]>
Quoted 12 lines
--- arch/sandbox/dts/sandbox.dts | 4 ++ board/sandbox/sandbox.c | 2 + common/board_f.c | 2 +- configs/sandbox_defconfig | 2 + doc/device-tree-bindings/timer/sandbox_timer.txt | 7 ++++ drivers/timer/Kconfig | 7 ++++ drivers/timer/Makefile | 1 + drivers/timer/sandbox_timer.c | 53 ++++++++++++++++++++++++ include/configs/sandbox.h | 2 + test/dm/Makefile | 1 + test/dm/timer.c | 27 ++++++++++++
Can you please split out the board_f.c change into a separate commit?
Otherwise:
Quoted 144 lines
11 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 doc/device-tree-bindings/timer/sandbox_timer.txt create mode 100644 drivers/timer/sandbox_timer.c create mode 100644 test/dm/timer.carch/sandbox/dts/sandbox.dts +4
-0@@ -177,6 +177,10 @@ sides = <4>; }; + timer { + compatible = "sandbox,timer"; + }; + tpm { compatible = "google,sandbox-tpm"; };board/sandbox/sandbox.c +2
-0@@ -26,6 +26,7 @@ void flush_cache(unsigned long start, unsigned long size) { } +#ifndef CONFIG_TIMER /* system timer offset in ms */ static unsigned long sandbox_timer_offset;@@ -38,6 +39,7 @@ unsigned long timer_read_counter(void) {return os_get_nsec () /1000 + sandbox_timer_offset *1000 ; } +#endif int dram_init (void ) {common/board_f.c +1
-1@@ -778,9 +778,9 @@ static init_fnc_t init_sequence_f[] = { x86_fsp_init, #endif arch_cpu_init,/* basic arch cpu dependent setup */ - mark_bootstage, initf_dm, arch_cpu_init_dm, + mark_bootstage,/* need timer, go after init dm */ #if defined(CONFIG_BOARD_EARLY_INIT_F) board_early_init_f, #endifconfigs/sandbox_defconfig +2
-0@@ -47,6 +47,8 @@ CONFIG_SANDBOX_SERIAL=y CONFIG_SOUND=y CONFIG_SOUND_SANDBOX=y CONFIG_SANDBOX_SPI=y +CONFIG_TIMER=y +CONFIG_SANDBOX_TIMER=y CONFIG_DM_TPM=y CONFIG_TPM_TIS_SANDBOX=y CONFIG_USB=ydoc/device-tree-bindings/timer/sandbox_timer.txt new file +7
-0@@ -0,0 +1,7 @@ +Sandbox timer + +The sandbox timer device is an emulated device which gets time from +host os. + +Required properties: + compatible: "sandbox,timer"drivers/timer/Kconfig +7
-0@@ -16,4 +16,11 @@ config ALTERA_TIMER Select this to enable an timer for Altera devices. Please find details on the "Embedded Peripherals IP User Guide" of Altera. +config SANDBOX_TIMER + bool "Sandbox Timer support" + depends on SANDBOX && TIMER + help + Select this to enable an emulated timer for sandbox. It gets + time from host os. + endmenudrivers/timer/Makefile +1
-0@@ -6,3 +6,4 @@ obj-$(CONFIG_TIMER) += timer-uclass.o obj-$(CONFIG_ALTERA_TIMER) += altera_timer.o +obj-$(CONFIG_SANDBOX_TIMER) += sandbox_timer.odrivers/timer/sandbox_timer.c new file +32
-0@@ -0,0 +1,53 @@ +/* +* Copyright (C) 2015 Thomas Chou <[email protected]> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#include <common.h> +#include <dm.h> +#include <errno.h> +#include <timer.h> +#include <os.h> + +/* system timer offset in ms */ +static unsigned long sandbox_timer_offset; + +void sandbox_timer_add_offset (unsigned long offset) +{ + sandbox_timer_offset += offset; +} + +static int sandbox_timer_get_count (struct udevice *dev,unsigned long *count) +{ + *count =os_get_nsec () /1000 + sandbox_timer_offset *1000 ; + +return 0 ; +} + +static int sandbox_timer_probe (struct udevice *dev) +{ +struct timer_dev_priv *uc_priv =dev_get_uclass_priv (dev); + + uc_priv->clock_rate =1000000 ;
drivers/timer/sandbox_timer.c line 42
Quoted 10 lines
drivers/timer/sandbox_timer.c new file +10
-0+ +return 0 ; +} + +static const struct timer_ops sandbox_timer_ops = { + .get_count = sandbox_timer_get_count, +}; + +static const struct udevice_id sandbox_timer_ids[] = { + { .compatible ="sandbox,timer" , },
You can drop the penultimate comma.
Quoted 69 lines
drivers/timer/sandbox_timer.c new file +11
-0+ { } +}; + +U_BOOT_DRIVER (sandbox_timer) = { + .name ="sandbox_timer" , + .id =UCLASS_TIMER , + .of_match = sandbox_timer_ids, + .probe = sandbox_timer_probe, + .ops = &sandbox_timer_ops, + .flags =DM_FLAG_PRE_RELOC , +};include/configs/sandbox.h +2
-0@@ -19,7 +19,9 @@#define CONFIG_IO_TRACE #define CONFIG_CMD_IOTRACE +#ifndef CONFIG_TIMER #define CONFIG_SYS_TIMER_RATE 1000000 +#endif #define CONFIG_SYS_STDIO_DEREGISTER test/dm/Makefile +1
-0@@ -32,4 +32,5 @@ obj-y += syscon.o obj-$(CONFIG_DM_USB) += usb.o obj-$(CONFIG_DM_PMIC) += pmic.o obj-$(CONFIG_DM_REGULATOR) += regulator.o +obj-$(CONFIG_TIMER) += timer.o endiftest/dm/timer.c new file +27
-1@@ -0,0 +1,27 @@ +/* +* Copyright (C) 2015 Thomas Chou <[email protected]> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#include <common.h> +#include <dm.h> +#include <timer.h> +#include <dm/test.h> +#include <test/ut.h> + +DECLARE_GLOBAL_DATA_PTR ; + +/* +* Basic test of the timer uclass. +*/ +static int dm_test_timer_base (struct unit_test_state *uts) +{ +struct udevice *dev; + +ut_assertok (uclass_get_device (UCLASS_TIMER ,0 , &dev)); +ut_asserteq (1000000 ,timer_get_rate (dev)); + +return 0 ; +} +DM_TEST (dm_test_timer_base,DM_TESTF_SCAN_PDATA |DM_TESTF_SCAN_FDT ); --
Quoted 2 lines
2.1.4
Regards,
Simon
PATCH 1/1 sandbox: add a sandbox timer and basic test
Hi Simon,
Quoted 20 lines · Simon Glass
Hi Thomas,
Quoted 4 lines · Thomas Chou
Add a sandbox timer which get time from host os and a basic test.
Signed-off-by Thomas Chou <[email protected]>Quoted 12 lines
--- arch/sandbox/dts/sandbox.dts | 4 ++ board/sandbox/sandbox.c | 2 + common/board_f.c | 2 +- configs/sandbox_defconfig | 2 + doc/device-tree-bindings/timer/sandbox_timer.txt | 7 ++++ drivers/timer/Kconfig | 7 ++++ drivers/timer/Makefile | 1 + drivers/timer/sandbox_timer.c | 53 ++++++++++++++++++++++++ include/configs/sandbox.h | 2 + test/dm/Makefile | 1 + test/dm/timer.c | 27 ++++++++++++
Quoted 1 line
Can you please split out the
board_f.cchange into a separate commit?
But the sandbox will fail (with seg fault or hang) without the change in board_f.c . Is this alright?
Quoted 5 lines
drivers/timer/sandbox_timer.c line 42
Quoted 2 lines
drivers/timer/sandbox_timer.c new file +2
-0+static const struct udevice_id sandbox_timer_ids[] = { + { .compatible ="sandbox,timer" , },You can drop the penultimate comma.
OK.
Thanks a lot for your review.
Best regards,
Thomas
PATCH 1/1 sandbox: add a sandbox timer and basic test
Hi Thomas,
Quoted 27 lines · Thomas Chou
Hi Simon,
Quoted 24 lines · Simon Glass
Hi Thomas,
Quoted 18 lines · Thomas Chou
Add a sandbox timer which get time from host os and a basic test.
Signed-off-by Thomas Chou <[email protected]>--- arch/sandbox/dts/sandbox.dts | 4 ++ board/sandbox/sandbox.c | 2 + common/board_f.c | 2 +- configs/sandbox_defconfig | 2 + doc/device-tree-bindings/timer/sandbox_timer.txt | 7 ++++ drivers/timer/Kconfig | 7 ++++ drivers/timer/Makefile | 1 + drivers/timer/sandbox_timer.c | 53 ++++++++++++++++++++++++ include/configs/sandbox.h | 2 + test/dm/Makefile | 1 + test/dm/timer.c | 27 ++++++++++++
Quoted 5 lines
Quoted 1 line
Can you please split out the
board_f.cchange into a separate commit?But the sandbox will fail (with seg fault or hang) without the change in
board_f.c. Is this alright?
What if you put that commit first in the series?
Quoted 9 lines
Quoted 8 lines
drivers/timer/sandbox_timer.c line 42
Quoted 4 lines
drivers/timer/sandbox_timer.c new file +2
-0+static const struct udevice_id sandbox_timer_ids[] = { + { .compatible ="sandbox,timer" , },You can drop the penultimate comma.
Quoted 7 lines
OK.
Thanks a lot for your review.
Best regards,
Thomas
Regards,
Simon
PATCH 1/1 sandbox: add a sandbox timer and basic test
Hi Simon,
Quoted 7 lines · Simon Glass
Quoted 5 lines
Quoted 1 line
Can you please split out the
board_f.cchange into a separate commit?But the sandbox will fail (with seg fault or hang) without the change in
board_f.c. Is this alright?What if you put that commit first in the series?
Good idea. Thank you.
Best regards,
Thomas
PATCH v2 1/2 common/board_f.c: move mark_bootstage after arch_cpu_init_dm
In reply to Thomas ChouAs mark_bootstage() uses timer, it should go after driver model is initialized.
--- common/board_f.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
common/board_f.c +1 -1
@@ -778,9 +778,9 @@ static init_fnc_t init_sequence_f[] = { x86_fsp_init, #endif arch_cpu_init,/* basic arch cpu dependent setup */ - mark_bootstage, initf_dm, arch_cpu_init_dm, + mark_bootstage,/* need timer, go after init dm */ #if defined(CONFIG_BOARD_EARLY_INIT_F) board_early_init_f, #endif
Signature · 1 line
2.5.0
PATCH v2 2/2 sandbox: add a sandbox timer and basic test
Add a sandbox timer which get time from host os and a basic test.
---
v2
split board_f.c to another patch as suggested by Simon. drop the penultimate comma in of_match ids.
arch/sandbox/dts/sandbox.dts | 4 ++ board/sandbox/sandbox.c | 2 + configs/sandbox_defconfig | 2 + doc/device-tree-bindings/timer/sandbox_timer.txt | 7 ++++ drivers/timer/Kconfig | 7 ++++ drivers/timer/Makefile | 1 + drivers/timer/sandbox_timer.c | 53 ++++++++++++++++++++++++ include/configs/sandbox.h | 2 + test/dm/Makefile | 1 + test/dm/timer.c | 27 ++++++++++++ 10 files changed, 106 insertions(+) create mode 100644 doc/device-tree-bindings/timer/sandbox_timer.txt create mode 100644 drivers/timer/sandbox_timer.c create mode 100644 test/dm/timer.c
arch/sandbox/dts/sandbox.dts +4 -0
@@ -177,6 +177,10 @@ sides = <4>; }; + timer { + compatible = "sandbox,timer"; + }; + tpm { compatible = "google,sandbox-tpm"; };
board/sandbox/sandbox.c +2 -0
@@ -26,6 +26,7 @@ void flush_cache(unsigned long start, unsigned long size) { } +#ifndef CONFIG_TIMER /* system timer offset in ms */ static unsigned long sandbox_timer_offset;
@@ -38,6 +39,7 @@ unsigned long timer_read_counter(void) {return os_get_nsec () /1000 + sandbox_timer_offset *1000 ; } +#endif int dram_init (void ) {
configs/sandbox_defconfig +2 -0
@@ -48,6 +48,8 @@ CONFIG_SANDBOX_SERIAL=y CONFIG_SOUND=y CONFIG_SOUND_SANDBOX=y CONFIG_SANDBOX_SPI=y +CONFIG_TIMER=y +CONFIG_SANDBOX_TIMER=y CONFIG_DM_TPM=y CONFIG_TPM_TIS_SANDBOX=y CONFIG_USB=y
doc/device-tree-bindings/timer/sandbox_timer.txt new file +7 -0
@@ -0,0 +1,7 @@ +Sandbox timer + +The sandbox timer device is an emulated device which gets time from +host os. + +Required properties: + compatible: "sandbox,timer"
drivers/timer/Kconfig +7 -0
@@ -16,4 +16,11 @@ config ALTERA_TIMER Select this to enable an timer for Altera devices. Please find details on the "Embedded Peripherals IP User Guide" of Altera. +config SANDBOX_TIMER + bool "Sandbox Timer support" + depends on SANDBOX && TIMER + help + Select this to enable an emulated timer for sandbox. It gets + time from host os. + endmenu
drivers/timer/Makefile +1 -0
@@ -6,3 +6,4 @@ obj-$(CONFIG_TIMER) += timer-uclass.o obj-$(CONFIG_ALTERA_TIMER) += altera_timer.o +obj-$(CONFIG_SANDBOX_TIMER) += sandbox_timer.o
drivers/timer/sandbox_timer.c new file +53 -0
53 lines not on this page · raw message
include/configs/sandbox.h +2 -0
@@ -19,7 +19,9 @@#define CONFIG_IO_TRACE #define CONFIG_CMD_IOTRACE +#ifndef CONFIG_TIMER #define CONFIG_SYS_TIMER_RATE 1000000 +#endif #define CONFIG_SYS_STDIO_DEREGISTER
test/dm/Makefile +1 -0
@@ -33,4 +33,5 @@ obj-y += syscon.o obj-$(CONFIG_DM_USB) += usb.o obj-$(CONFIG_DM_PMIC) += pmic.o obj-$(CONFIG_DM_REGULATOR) += regulator.o +obj-$(CONFIG_TIMER) += timer.o endif
test/dm/timer.c new file +27 -0
@@ -0,0 +1,27 @@ +/* +* Copyright (C) 2015 Thomas Chou <[email protected]> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#include <common.h> +#include <dm.h> +#include <timer.h> +#include <dm/test.h> +#include <test/ut.h> + +DECLARE_GLOBAL_DATA_PTR ; + +/* +* Basic test of the timer uclass. +*/ +static int dm_test_timer_base (struct unit_test_state *uts) +{ +struct udevice *dev; + +ut_assertok (uclass_get_device (UCLASS_TIMER ,0 , &dev)); +ut_asserteq (1000000 ,timer_get_rate (dev)); + +return 0 ; +} +DM_TEST (dm_test_timer_base,DM_TESTF_SCAN_PDATA |DM_TESTF_SCAN_FDT );
Signature · 1 line
2.5.0
PATCH v2 2/2 sandbox: add a sandbox timer and basic test
Quoted 10 lines · Thomas Chou
Add a sandbox timer which get time from host os and a basic test.
Signed-off-by Thomas Chou <[email protected]>Reviewed-by Simon Glass <[email protected]>---
v2
splitboard_f.cto another patch as suggested by Simon. drop the penultimate comma inof_matchids.
Quoted 14 lines
arch/sandbox/dts/sandbox.dts | 4 ++ board/sandbox/sandbox.c | 2 + configs/sandbox_defconfig | 2 + doc/device-tree-bindings/timer/sandbox_timer.txt | 7 ++++ drivers/timer/Kconfig | 7 ++++ drivers/timer/Makefile | 1 + drivers/timer/sandbox_timer.c | 53 ++++++++++++++++++++++++ include/configs/sandbox.h | 2 + test/dm/Makefile | 1 + test/dm/timer.c | 27 ++++++++++++ 10 files changed, 106 insertions(+) create mode 100644 doc/device-tree-bindings/timer/sandbox_timer.txt create mode 100644 drivers/timer/sandbox_timer.c create mode 100644 test/dm/timer.c
Applied to u-boot-dm, thanks!
PATCH v2 1/2 common/board_f.c: move mark_bootstage after arch_cpu_init_dm
In reply to Thomas ChouQuoted 8 lines · Thomas Chou
As
mark_bootstage()uses timer, it should go after driver model is initialized.Signed-off-by Thomas Chou <[email protected]>Reviewed-by Simon Glass <[email protected]>--- common/board_f.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
PATCH v2 1/2 common/board_f.c: move mark_bootstage after arch_cpu_init_dm
Hi Simon,
Quoted 4 lines · Simon Glass
Quoted 3 lines · Thomas Chou
As
mark_bootstage()uses timer, it should go after driver model is initialized.
Quoted 8 lines
Quoted 5 lines
Signed-off-by Thomas Chou <[email protected]>Reviewed-by Simon Glass <[email protected]>--- common/board_f.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)Reviewed-by Simon Glass <[email protected]>
Will you please pick up this series? Or shall I pick them? As Bin Meng has follow up patches to timer uclass, I hope we can resolve rebase issue.
Best regards,
Thomas
PATCH v2 1/2 common/board_f.c: move mark_bootstage after arch_cpu_init_dm
Quoted 17 lines · Thomas Chou
Hi Simon,
Quoted 13 lines · Simon Glass
Quoted 9 lines · Thomas Chou
As
mark_bootstage()uses timer, it should go after driver model is initialized.Signed-off-by Thomas Chou <[email protected]>Reviewed-by Simon Glass <[email protected]>--- common/board_f.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Quoted 5 lines
Quoted 2 lines
Reviewed-by Simon Glass <[email protected]>Will you please pick up this series? Or shall I pick them? As Bin Meng has follow up patches to timer uclass, I hope we can resolve rebase issue.
OK.
Applied to u-boot-dm, thanks!