1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3 * DM tag test
4 *
5 * Copyright (c) 2021 Linaro Limited
6 * Author: AKASHI Takahiro
7 */
8
9 #include <common.h>
10 #include <dm/tag.h>
11 #include <dm/test.h> /* DM_TEST() */
12 #include <test/test.h> /* struct unit_test_state */
13 #include <test/ut.h> /* assertions */
14
15 /*
16 * Test dm_tag_ptr() API
17 */
dm_test_tag_ptr(struct unit_test_state * uts)18 static int dm_test_tag_ptr(struct unit_test_state *uts)
19 {
20 ulong val;
21 void *ptr = NULL;
22
23 ut_assertok(dev_tag_set_ptr(uts->root, DM_TAG_EFI, &val));
24
25 ut_assertok(dev_tag_get_ptr(uts->root, DM_TAG_EFI, &ptr));
26
27 ut_asserteq_ptr(&val, ptr);
28
29 ut_assertok(dev_tag_del(uts->root, DM_TAG_EFI));
30
31 return 0;
32 }
33
34 DM_TEST(dm_test_tag_ptr, 0);
35
36 /*
37 * Test dm_tag_val() API
38 */
dm_test_tag_val(struct unit_test_state * uts)39 static int dm_test_tag_val(struct unit_test_state *uts)
40 {
41 ulong val1 = 0x12345678, val2 = 0;
42
43 ut_assertok(dev_tag_set_val(uts->root, DM_TAG_EFI, val1));
44
45 ut_assertok(dev_tag_get_val(uts->root, DM_TAG_EFI, &val2));
46
47 ut_asserteq_64(val1, val2);
48
49 ut_assertok(dev_tag_del(uts->root, DM_TAG_EFI));
50
51 return 0;
52 }
53
54 DM_TEST(dm_test_tag_val, 0);
55
56 /*
57 * Test against an invalid tag
58 */
dm_test_tag_inval(struct unit_test_state * uts)59 static int dm_test_tag_inval(struct unit_test_state *uts)
60 {
61 ulong val;
62
63 ut_asserteq(-EINVAL, dev_tag_set_ptr(uts->root, DM_TAG_COUNT, &val));
64
65 return 0;
66 }
67
68 DM_TEST(dm_test_tag_inval, 0);
69
70 /*
71 * Test dm_tag_del_all() AP:
72 */
dm_test_tag_del_all(struct unit_test_state * uts)73 static int dm_test_tag_del_all(struct unit_test_state *uts)
74 {
75 ulong val;
76
77 ut_assertok(dev_tag_set_ptr(uts->root, DM_TAG_EFI, &val));
78
79 ut_assertok(dev_tag_del_all(uts->root));
80
81 return 0;
82 }
83
84 DM_TEST(dm_test_tag_del_all, 0);
85