summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/dm/Makefile1
-rw-r--r--test/dm/sysinfo-gpio.c69
-rw-r--r--test/dm/sysinfo.c25
-rw-r--r--test/env/Makefile1
-rw-r--r--test/env/fdt.c20
5 files changed, 106 insertions, 10 deletions
diff --git a/test/dm/Makefile b/test/dm/Makefile
index e7cb1eec960..c9644617a1f 100644
--- a/test/dm/Makefile
+++ b/test/dm/Makefile
@@ -96,6 +96,7 @@ obj-$(CONFIG_SPMI) += spmi.o
obj-y += syscon.o
obj-$(CONFIG_RESET_SYSCON) += syscon-reset.o
obj-$(CONFIG_SYSINFO) += sysinfo.o
+obj-$(CONFIG_SYSINFO_GPIO) += sysinfo-gpio.o
obj-$(CONFIG_TEE) += tee.o
obj-$(CONFIG_TIMER) += timer.o
obj-$(CONFIG_DM_USB) += usb.o
diff --git a/test/dm/sysinfo-gpio.c b/test/dm/sysinfo-gpio.c
new file mode 100644
index 00000000000..2e494b3f341
--- /dev/null
+++ b/test/dm/sysinfo-gpio.c
@@ -0,0 +1,69 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2021 Sean Anderson <sean.anderson@seco.com>
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <log.h>
+#include <sysinfo.h>
+#include <asm/gpio.h>
+#include <dm/test.h>
+#include <test/test.h>
+#include <test/ut.h>
+
+static int dm_test_sysinfo_gpio(struct unit_test_state *uts)
+{
+ char buf[64];
+ int val;
+ struct udevice *sysinfo, *gpio;
+
+ ut_assertok(uclass_get_device_by_name(UCLASS_SYSINFO, "sysinfo-gpio",
+ &sysinfo));
+ ut_assertok(uclass_get_device_by_name(UCLASS_GPIO, "base-gpios", &gpio));
+
+ /*
+ * Set up pins: pull-up (1), pull-down (0) and floating (2). This should
+ * result in digits 2 0 1, i.e. 2 * 9 + 1 * 3 = 19
+ */
+ sandbox_gpio_set_flags(gpio, 15, GPIOD_EXT_PULL_UP);
+ sandbox_gpio_set_flags(gpio, 16, GPIOD_EXT_PULL_DOWN);
+ sandbox_gpio_set_flags(gpio, 17, 0);
+ ut_assertok(sysinfo_detect(sysinfo));
+ ut_assertok(sysinfo_get_int(sysinfo, SYSINFO_ID_BOARD_MODEL, &val));
+ ut_asserteq(19, val);
+ ut_assertok(sysinfo_get_str(sysinfo, SYSINFO_ID_BOARD_MODEL, sizeof(buf),
+ buf));
+ ut_asserteq_str("rev_a", buf);
+
+ /*
+ * Set up pins: floating (2), pull-up (1) and pull-down (0). This should
+ * result in digits 0 1 2, i.e. 1 * 3 + 2 = 5
+ */
+ sandbox_gpio_set_flags(gpio, 15, 0);
+ sandbox_gpio_set_flags(gpio, 16, GPIOD_EXT_PULL_UP);
+ sandbox_gpio_set_flags(gpio, 17, GPIOD_EXT_PULL_DOWN);
+ ut_assertok(sysinfo_detect(sysinfo));
+ ut_assertok(sysinfo_get_int(sysinfo, SYSINFO_ID_BOARD_MODEL, &val));
+ ut_asserteq(5, val);
+ ut_assertok(sysinfo_get_str(sysinfo, SYSINFO_ID_BOARD_MODEL, sizeof(buf),
+ buf));
+ ut_asserteq_str("foo", buf);
+
+ /*
+ * Set up pins: floating (2), pull-up (1) and pull-down (0). This should
+ * result in digits 1 2 0, i.e. 1 * 9 + 2 * 3 = 15
+ */
+ sandbox_gpio_set_flags(gpio, 15, GPIOD_EXT_PULL_DOWN);
+ sandbox_gpio_set_flags(gpio, 16, 0);
+ sandbox_gpio_set_flags(gpio, 17, GPIOD_EXT_PULL_UP);
+ ut_assertok(sysinfo_detect(sysinfo));
+ ut_assertok(sysinfo_get_int(sysinfo, SYSINFO_ID_BOARD_MODEL, &val));
+ ut_asserteq(15, val);
+ ut_assertok(sysinfo_get_str(sysinfo, SYSINFO_ID_BOARD_MODEL, sizeof(buf),
+ buf));
+ ut_asserteq_str("unknown", buf);
+
+ return 0;
+}
+DM_TEST(dm_test_sysinfo_gpio, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
diff --git a/test/dm/sysinfo.c b/test/dm/sysinfo.c
index 4aaa9e85bce..96b3a8ebaba 100644
--- a/test/dm/sysinfo.c
+++ b/test/dm/sysinfo.c
@@ -17,40 +17,45 @@
static int dm_test_sysinfo(struct unit_test_state *uts)
{
struct udevice *sysinfo;
- bool called_detect;
+ bool called_detect = false;
char str[64];
int i;
ut_assertok(sysinfo_get(&sysinfo));
ut_assert(sysinfo);
- sysinfo_get_bool(sysinfo, BOOL_CALLED_DETECT, &called_detect);
+ ut_asserteq(-EPERM, sysinfo_get_bool(sysinfo, BOOL_CALLED_DETECT,
+ &called_detect));
ut_assert(!called_detect);
sysinfo_detect(sysinfo);
- sysinfo_get_bool(sysinfo, BOOL_CALLED_DETECT, &called_detect);
+ ut_assertok(sysinfo_get_bool(sysinfo, BOOL_CALLED_DETECT,
+ &called_detect));
ut_assert(called_detect);
- sysinfo_get_str(sysinfo, STR_VACATIONSPOT, sizeof(str), str);
+ ut_assertok(sysinfo_get_str(sysinfo, STR_VACATIONSPOT, sizeof(str),
+ str));
ut_assertok(strcmp(str, "R'lyeh"));
- sysinfo_get_int(sysinfo, INT_TEST1, &i);
+ ut_assertok(sysinfo_get_int(sysinfo, INT_TEST1, &i));
ut_asserteq(0, i);
- sysinfo_get_int(sysinfo, INT_TEST2, &i);
+ ut_assertok(sysinfo_get_int(sysinfo, INT_TEST2, &i));
ut_asserteq(100, i);
- sysinfo_get_str(sysinfo, STR_VACATIONSPOT, sizeof(str), str);
+ ut_assertok(sysinfo_get_str(sysinfo, STR_VACATIONSPOT, sizeof(str),
+ str));
ut_assertok(strcmp(str, "Carcosa"));
- sysinfo_get_int(sysinfo, INT_TEST1, &i);
+ ut_assertok(sysinfo_get_int(sysinfo, INT_TEST1, &i));
ut_asserteq(1, i);
- sysinfo_get_int(sysinfo, INT_TEST2, &i);
+ ut_assertok(sysinfo_get_int(sysinfo, INT_TEST2, &i));
ut_asserteq(99, i);
- sysinfo_get_str(sysinfo, STR_VACATIONSPOT, sizeof(str), str);
+ ut_assertok(sysinfo_get_str(sysinfo, STR_VACATIONSPOT, sizeof(str),
+ str));
ut_assertok(strcmp(str, "Yuggoth"));
return 0;
diff --git a/test/env/Makefile b/test/env/Makefile
index 5c8eae31b0f..9a98fd47966 100644
--- a/test/env/Makefile
+++ b/test/env/Makefile
@@ -5,3 +5,4 @@
obj-y += cmd_ut_env.o
obj-y += attr.o
obj-y += hashtable.o
+obj-$(CONFIG_ENV_IMPORT_FDT) += fdt.o
diff --git a/test/env/fdt.c b/test/env/fdt.c
new file mode 100644
index 00000000000..30bfa88c355
--- /dev/null
+++ b/test/env/fdt.c
@@ -0,0 +1,20 @@
+#include <common.h>
+#include <command.h>
+#include <env_attr.h>
+#include <test/env.h>
+#include <test/ut.h>
+
+static int env_test_fdt_import(struct unit_test_state *uts)
+{
+ const char *val;
+
+ val = env_get("from_fdt");
+ ut_assertnonnull(val);
+ ut_asserteq_str("yes", val);
+
+ val = env_get("fdt_env_path");
+ ut_assertnull(val);
+
+ return 0;
+}
+ENV_TEST(env_test_fdt_import, 0);