1 /*
2 * Copyright (c) 2023 MUNIC SA
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7
8 #include <zephyr/ztest.h>
9 #include <zephyr/kernel.h>
10 #include <zephyr/device.h>
11 #include <zephyr/devicetree.h>
12
13 #define TEST_GPIO_1 DT_NODELABEL(test_gpio_1)
14 #define TEST_GPIO_2 DT_NODELABEL(test_gpio_2)
15 #define TEST_GPIO_3 DT_NODELABEL(test_gpio_3)
16 #define TEST_GPIO_4 DT_NODELABEL(test_gpio_4)
17 #define TEST_GPIO_5 DT_NODELABEL(test_gpio_5)
18 #define TEST_GPIO_6 DT_NODELABEL(test_gpio_6)
19
20 #define DT_DRV_COMPAT vnd_gpio_device
21
ZTEST(gpio_reserved_ranges,test_path_props)22 ZTEST(gpio_reserved_ranges, test_path_props)
23 {
24 zassert_true(DT_NODE_HAS_PROP(TEST_GPIO_1, gpio_reserved_ranges), "");
25 zassert_true(DT_NODE_HAS_PROP(TEST_GPIO_2, gpio_reserved_ranges), "");
26 zassert_true(DT_NODE_HAS_PROP(TEST_GPIO_3, gpio_reserved_ranges), "");
27 zassert_true(DT_NODE_HAS_PROP(TEST_GPIO_4, gpio_reserved_ranges), "");
28 zassert_true(DT_NODE_HAS_PROP(TEST_GPIO_5, gpio_reserved_ranges), "");
29 zassert_false(DT_NODE_HAS_PROP(TEST_GPIO_6, gpio_reserved_ranges), "");
30 }
31
ZTEST(gpio_reserved_ranges,test_has_status)32 ZTEST(gpio_reserved_ranges, test_has_status)
33 {
34 zassert_equal(DT_NODE_HAS_STATUS_OKAY(TEST_GPIO_1), 1, "");
35 zassert_equal(DT_NODE_HAS_STATUS_OKAY(TEST_GPIO_2), 1, "");
36 zassert_equal(DT_NODE_HAS_STATUS_OKAY(TEST_GPIO_3), 1, "");
37 zassert_equal(DT_NODE_HAS_STATUS_OKAY(TEST_GPIO_4), 1, "");
38 zassert_equal(DT_NODE_HAS_STATUS_OKAY(TEST_GPIO_5), 1, "");
39 zassert_equal(DT_NODE_HAS_STATUS_OKAY(TEST_GPIO_6), 1, "");
40 }
41
ZTEST(gpio_reserved_ranges,test_reserved_ranges)42 ZTEST(gpio_reserved_ranges, test_reserved_ranges)
43 {
44 /* GPIO_DT_INST_RESERVED_RANGES_NGPIOS */
45 zassert_equal(GPIO_DT_RESERVED_RANGES_NGPIOS(TEST_GPIO_1, 32),
46 0xdeadbeef, "");
47 zassert_equal(GPIO_DT_RESERVED_RANGES_NGPIOS(TEST_GPIO_2, 32),
48 0x7fffbeff, "");
49 zassert_equal(GPIO_DT_RESERVED_RANGES_NGPIOS(TEST_GPIO_3, 18),
50 0xfffc0418, "");
51 zassert_equal(GPIO_DT_RESERVED_RANGES_NGPIOS(TEST_GPIO_4, 16),
52 0xfffffff0, "");
53 zassert_equal(GPIO_DT_RESERVED_RANGES_NGPIOS(TEST_GPIO_5, 0),
54 0xffffffff, "");
55 zassert_equal(GPIO_DT_RESERVED_RANGES_NGPIOS(TEST_GPIO_6, 32),
56 0, "");
57
58 /* GPIO_DT_INST_RESERVED_RANGES_NGPIOS */
59 zassert_equal(GPIO_DT_INST_RESERVED_RANGES_NGPIOS(0, 32), 0xdeadbeef,
60 "");
61 zassert_equal(GPIO_DT_INST_RESERVED_RANGES_NGPIOS(1, 32), 0x7fffbeff,
62 "");
63 zassert_equal(GPIO_DT_INST_RESERVED_RANGES_NGPIOS(2, 18), 0xfffc0418,
64 "");
65 zassert_equal(GPIO_DT_INST_RESERVED_RANGES_NGPIOS(3, 16), 0xfffffff0,
66 "");
67 zassert_equal(GPIO_DT_INST_RESERVED_RANGES_NGPIOS(4, 0), 0xffffffff,
68 "");
69 zassert_equal(GPIO_DT_INST_RESERVED_RANGES_NGPIOS(5, 32), 0, "");
70
71 /* GPIO_DT_RESERVED_RANGES */
72 zassert_equal(GPIO_DT_RESERVED_RANGES(TEST_GPIO_1), 0xdeadbeef, "");
73 zassert_equal(GPIO_DT_RESERVED_RANGES(TEST_GPIO_2), 0x7fffbeff, "");
74 zassert_equal(GPIO_DT_RESERVED_RANGES(TEST_GPIO_3), 0xfffc0418, "");
75 zassert_equal(GPIO_DT_RESERVED_RANGES(TEST_GPIO_4), 0xfffffff0, "");
76 zassert_equal(GPIO_DT_RESERVED_RANGES(TEST_GPIO_5), 0xffffffff, "");
77 zassert_equal(GPIO_DT_RESERVED_RANGES(TEST_GPIO_6), 0x0, "");
78
79 /* GPIO_DT_INST_RESERVED_RANGES */
80 zassert_equal(GPIO_DT_INST_RESERVED_RANGES(0), 0xdeadbeef, "");
81 zassert_equal(GPIO_DT_INST_RESERVED_RANGES(1), 0x7fffbeff, "");
82 zassert_equal(GPIO_DT_INST_RESERVED_RANGES(2), 0xfffc0418, "");
83 zassert_equal(GPIO_DT_INST_RESERVED_RANGES(3), 0xfffffff0, "");
84 zassert_equal(GPIO_DT_INST_RESERVED_RANGES(4), 0xffffffff, "");
85 zassert_equal(GPIO_DT_INST_RESERVED_RANGES(5), 0x0, "");
86 }
87
ZTEST(gpio_reserved_ranges,test_port_pin_mask_exc)88 ZTEST(gpio_reserved_ranges, test_port_pin_mask_exc)
89 {
90 /* GPIO_DT_PORT_PIN_MASK_NGPIOS_EXC */
91 zassert_equal(GPIO_DT_PORT_PIN_MASK_NGPIOS_EXC(TEST_GPIO_1, 32),
92 0x21524110, "");
93 zassert_equal(GPIO_DT_PORT_PIN_MASK_NGPIOS_EXC(TEST_GPIO_2, 32),
94 0x80004100, "");
95 zassert_equal(GPIO_DT_PORT_PIN_MASK_NGPIOS_EXC(TEST_GPIO_3, 18),
96 0x0003fbe7, "");
97 zassert_equal(GPIO_DT_PORT_PIN_MASK_NGPIOS_EXC(TEST_GPIO_4, 16),
98 0x0000000f, "");
99 zassert_equal(GPIO_DT_PORT_PIN_MASK_NGPIOS_EXC(TEST_GPIO_5, 0),
100 0x00000000, "");
101 zassert_equal(GPIO_DT_PORT_PIN_MASK_NGPIOS_EXC(TEST_GPIO_6, 32),
102 0xffffffff, "");
103
104 /* GPIO_DT_INST_PORT_PIN_MASK_NGPIOS_EXC */
105 zassert_equal(GPIO_DT_INST_PORT_PIN_MASK_NGPIOS_EXC(0, 32), 0x21524110,
106 "");
107 zassert_equal(GPIO_DT_INST_PORT_PIN_MASK_NGPIOS_EXC(1, 32), 0x80004100,
108 "");
109 zassert_equal(GPIO_DT_INST_PORT_PIN_MASK_NGPIOS_EXC(2, 18), 0x0003fbe7,
110 "");
111 zassert_equal(GPIO_DT_INST_PORT_PIN_MASK_NGPIOS_EXC(3, 16), 0x0000000f,
112 "");
113 zassert_equal(GPIO_DT_INST_PORT_PIN_MASK_NGPIOS_EXC(4, 0), 0x00000000,
114 "");
115 zassert_equal(GPIO_DT_INST_PORT_PIN_MASK_NGPIOS_EXC(5, 16), 0x0000ffff,
116 "");
117
118 /* GPIO_PORT_PIN_MASK_FROM_DT_NODE */
119 zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_NODE(TEST_GPIO_1),
120 0x21524110, "");
121 zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_NODE(TEST_GPIO_2),
122 0x80004100, "");
123 zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_NODE(TEST_GPIO_3),
124 0x0003fbe7, "");
125 zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_NODE(TEST_GPIO_4),
126 0x0000000f, "");
127 zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_NODE(TEST_GPIO_5),
128 0x00000000, "");
129 zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_NODE(TEST_GPIO_6),
130 0xffffffff, "");
131
132 /* GPIO_PORT_PIN_MASK_FROM_DT_INST */
133 zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_INST(0), 0x21524110, "");
134 zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_INST(1), 0x80004100, "");
135 zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_INST(2), 0x0003fbe7, "");
136 zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_INST(3), 0x0000000f, "");
137 zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_INST(4), 0x00000000, "");
138 zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_INST(5), 0xffffffff, "");
139 }
140
141 /* Test GPIO port configuration */
142 ZTEST_SUITE(gpio_reserved_ranges, NULL, NULL, NULL, NULL, NULL);
143