test: bootcount: add bootcount-uclass test
authorPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
Fri, 14 Dec 2018 20:14:29 +0000 (21:14 +0100)
committerTom Rini <trini@konsulko.com>
Mon, 14 Jan 2019 22:41:23 +0000 (17:41 -0500)
Add a test for the bootcount uclass, which uses the RTC bootcount backend
(i.e. drivers/bootcount/rtc.c is implictly also tested).

Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
arch/sandbox/dts/test.dts
configs/sandbox_defconfig
test/dm/Makefile
test/dm/bootcount.c [new file with mode: 0644]

index 3790b4c..1d011de 100644 (file)
                };
        };
 
+       bootcount@0 {
+               compatible = "u-boot,bootcount-rtc";
+               rtc = <&rtc_1>;
+               offset = <0x13>;
+       };
+
        adc@0 {
                compatible = "sandbox,adc";
                vdd-supply = <&buck2>;
index 90146f6..78a684b 100644 (file)
@@ -57,6 +57,7 @@ CONFIG_CMD_DNS=y
 CONFIG_CMD_LINK_LOCAL=y
 CONFIG_CMD_ETHSW=y
 CONFIG_CMD_BMP=y
+CONFIG_CMD_BOOTCOUNT=y
 CONFIG_CMD_TIME=y
 CONFIG_CMD_TIMER=y
 CONFIG_CMD_SOUND=y
@@ -86,6 +87,9 @@ CONFIG_ADC=y
 CONFIG_ADC_SANDBOX=y
 CONFIG_AXI=y
 CONFIG_AXI_SANDBOX=y
+CONFIG_BOOTCOUNT_LIMIT=y
+CONFIG_DM_BOOTCOUNT=y
+CONFIG_DM_BOOTCOUNT_RTC=y
 CONFIG_CLK=y
 CONFIG_CPU=y
 CONFIG_DM_DEMO=y
@@ -217,3 +221,4 @@ CONFIG_UNIT_TEST=y
 CONFIG_UT_TIME=y
 CONFIG_UT_DM=y
 CONFIG_UT_ENV=y
+CONFIG_UT_OVERLAY=y
index 7dc80be..1b08996 100644 (file)
@@ -15,6 +15,7 @@ ifneq ($(CONFIG_SANDBOX),)
 obj-$(CONFIG_SOUND) += audio.o
 obj-$(CONFIG_BLK) += blk.o
 obj-$(CONFIG_BOARD) += board.o
+obj-$(CONFIG_DM_BOOTCOUNT) += bootcount.o
 obj-$(CONFIG_CLK) += clk.o
 obj-$(CONFIG_DM_ETH) += eth.o
 obj-$(CONFIG_FIRMWARE) += firmware.o
diff --git a/test/dm/bootcount.c b/test/dm/bootcount.c
new file mode 100644 (file)
index 0000000..0817b7d
--- /dev/null
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * (C) 2018 Theobroma Systems Design und Consulting GmbH
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <bootcount.h>
+#include <asm/test.h>
+#include <dm/test.h>
+#include <test/ut.h>
+
+static int dm_test_bootcount(struct unit_test_state *uts)
+{
+       struct udevice *dev;
+       u32 val;
+
+       ut_assertok(uclass_get_device(UCLASS_BOOTCOUNT, 0, &dev));
+       ut_assertok(dm_bootcount_set(dev, 0));
+       ut_assertok(dm_bootcount_get(dev, &val));
+       ut_assert(val == 0);
+       ut_assertok(dm_bootcount_set(dev, 0xab));
+       ut_assertok(dm_bootcount_get(dev, &val));
+       ut_assert(val == 0xab);
+
+       return 0;
+}
+
+DM_TEST(dm_test_bootcount, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
+