|  | 
| 111 | 111 | #define TEST_SUBPARTITION_1 DT_PATH(test, test_mtd_ffeeddcc, flash_20000000, partitions, \ | 
| 112 | 112 | 				    partition_100, partition_40) | 
| 113 | 113 | 
 | 
|  | 114 | +#define TEST_GPIO_CONNECTOR  DT_PATH(gpio_map_test, connector) | 
|  | 115 | +#define TEST_INTERRUPT_NEXUS DT_PATH(interrupt_map_test, nexus) | 
|  | 116 | + | 
| 114 | 117 | #define ZEPHYR_USER DT_PATH(zephyr_user) | 
| 115 | 118 | 
 | 
| 116 | 119 | #define TA_HAS_COMPAT(compat) DT_NODE_HAS_COMPAT(TEST_ARRAYS, compat) | 
| @@ -3832,4 +3835,87 @@ ZTEST(devicetree_api, test_interrupt_controller) | 
| 3832 | 3835 | 	zassert_true(DT_SAME_NODE(DT_INST_IRQ_INTC(0), TEST_INTC), ""); | 
| 3833 | 3836 | } | 
| 3834 | 3837 | 
 | 
|  | 3838 | +#define INTERRUPT_NEXUS_CHECK_0(n, p, i, ...)                                                      \ | 
|  | 3839 | +	zassert_equal(NUM_VA_ARGS(DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 4);                \ | 
|  | 3840 | +	zassert_equal(GET_ARG_N(1, DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 0);               \ | 
|  | 3841 | +	zassert_equal(GET_ARG_N(2, DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 0);               \ | 
|  | 3842 | +	zassert_equal(GET_ARG_N(3, DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 1);               \ | 
|  | 3843 | +	zassert_equal(GET_ARG_N(4, DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 2);               \ | 
|  | 3844 | +	zassert_equal(NUM_VA_ARGS(DT_MAP_PARENT_SPECIFIER_ARGS_BY_IDX(n, p, i)), 2);               \ | 
|  | 3845 | +	zassert_equal(GET_ARG_N(1, DT_MAP_PARENT_SPECIFIER_ARGS_BY_IDX(n, p, i)), 3);              \ | 
|  | 3846 | +	zassert_equal(GET_ARG_N(2, DT_MAP_PARENT_SPECIFIER_ARGS_BY_IDX(n, p, i)), 4);              \ | 
|  | 3847 | +	zassert_equal(NUM_VA_ARGS(DT_MAP_PARENT_ARG_BY_IDX(n, p, i)), 1);                          \ | 
|  | 3848 | +	zassert_str_equal(STRINGIFY(DT_MAP_PARENT_ARG_BY_IDX(n, p, i)),                            \ | 
|  | 3849 | +				    "DT_N_S_interrupt_map_test_S_controller_0_0"); | 
|  | 3850 | + | 
|  | 3851 | +#define INTERRUPT_NEXUS_CHECK_1(n, p, i, ...)                                                      \ | 
|  | 3852 | +	zassert_equal(NUM_VA_ARGS(DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 4);                \ | 
|  | 3853 | +	zassert_equal(GET_ARG_N(1, DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 0);               \ | 
|  | 3854 | +	zassert_equal(GET_ARG_N(2, DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 0);               \ | 
|  | 3855 | +	zassert_equal(GET_ARG_N(3, DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 5);               \ | 
|  | 3856 | +	zassert_equal(GET_ARG_N(4, DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 6);               \ | 
|  | 3857 | +	zassert_equal(NUM_VA_ARGS(DT_MAP_PARENT_SPECIFIER_ARGS_BY_IDX(n, p, i)), 4);               \ | 
|  | 3858 | +	zassert_equal(GET_ARG_N(1, DT_MAP_PARENT_SPECIFIER_ARGS_BY_IDX(n, p, i)), 7);              \ | 
|  | 3859 | +	zassert_equal(GET_ARG_N(2, DT_MAP_PARENT_SPECIFIER_ARGS_BY_IDX(n, p, i)), 8);              \ | 
|  | 3860 | +	zassert_equal(GET_ARG_N(3, DT_MAP_PARENT_SPECIFIER_ARGS_BY_IDX(n, p, i)), 9);              \ | 
|  | 3861 | +	zassert_equal(GET_ARG_N(4, DT_MAP_PARENT_SPECIFIER_ARGS_BY_IDX(n, p, i)), 0);              \ | 
|  | 3862 | +	zassert_equal(NUM_VA_ARGS(DT_MAP_PARENT_ARG_BY_IDX(n, p, i)), 1);                          \ | 
|  | 3863 | +	zassert_str_equal(STRINGIFY(DT_MAP_PARENT_ARG_BY_IDX(n, p, i)),                            \ | 
|  | 3864 | +				    "DT_N_S_interrupt_map_test_S_controller_1_1"); | 
|  | 3865 | + | 
|  | 3866 | +#define INTERRUPT_NEXUS_CHECK_2(n, p, i, ...)                                                      \ | 
|  | 3867 | +	zassert_equal(NUM_VA_ARGS(DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 4);                \ | 
|  | 3868 | +	zassert_equal(GET_ARG_N(1, DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 0);               \ | 
|  | 3869 | +	zassert_equal(GET_ARG_N(2, DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 1);               \ | 
|  | 3870 | +	zassert_equal(GET_ARG_N(3, DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 9);               \ | 
|  | 3871 | +	zassert_equal(GET_ARG_N(4, DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 8);               \ | 
|  | 3872 | +	zassert_equal(NUM_VA_ARGS(DT_MAP_PARENT_SPECIFIER_ARGS_BY_IDX(n, p, i)), 2);               \ | 
|  | 3873 | +	zassert_equal(GET_ARG_N(1, DT_MAP_PARENT_SPECIFIER_ARGS_BY_IDX(n, p, i)), 7);              \ | 
|  | 3874 | +	zassert_equal(GET_ARG_N(2, DT_MAP_PARENT_SPECIFIER_ARGS_BY_IDX(n, p, i)), 6);              \ | 
|  | 3875 | +	zassert_equal(NUM_VA_ARGS(DT_MAP_PARENT_ARG_BY_IDX(n, p, i)), 1);                          \ | 
|  | 3876 | +	zassert_str_equal(STRINGIFY(DT_MAP_PARENT_ARG_BY_IDX(n, p, i)),                            \ | 
|  | 3877 | +				    "DT_N_S_interrupt_map_test_S_controller_0_0"); | 
|  | 3878 | + | 
|  | 3879 | +#define INTERRUPT_NEXUS_CHECK_3(n, p, i, ...)                                                      \ | 
|  | 3880 | +	zassert_equal(NUM_VA_ARGS(DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 4);                \ | 
|  | 3881 | +	zassert_equal(GET_ARG_N(1, DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 0);               \ | 
|  | 3882 | +	zassert_equal(GET_ARG_N(2, DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 1);               \ | 
|  | 3883 | +	zassert_equal(GET_ARG_N(3, DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 5);               \ | 
|  | 3884 | +	zassert_equal(GET_ARG_N(4, DT_MAP_CHILD_SPECIFIER_ARGS_BY_IDX(n, p, i)), 4);               \ | 
|  | 3885 | +	zassert_equal(NUM_VA_ARGS(DT_MAP_PARENT_SPECIFIER_ARGS_BY_IDX(n, p, i)), 4);               \ | 
|  | 3886 | +	zassert_equal(GET_ARG_N(1, DT_MAP_PARENT_SPECIFIER_ARGS_BY_IDX(n, p, i)), 3);              \ | 
|  | 3887 | +	zassert_equal(GET_ARG_N(2, DT_MAP_PARENT_SPECIFIER_ARGS_BY_IDX(n, p, i)), 2);              \ | 
|  | 3888 | +	zassert_equal(GET_ARG_N(3, DT_MAP_PARENT_SPECIFIER_ARGS_BY_IDX(n, p, i)), 1);              \ | 
|  | 3889 | +	zassert_equal(GET_ARG_N(4, DT_MAP_PARENT_SPECIFIER_ARGS_BY_IDX(n, p, i)), 0);              \ | 
|  | 3890 | +	zassert_str_equal(STRINGIFY(DT_MAP_PARENT_ARG_BY_IDX(n, p, i)),                            \ | 
|  | 3891 | +				    "DT_N_S_interrupt_map_test_S_controller_1_1"); | 
|  | 3892 | + | 
|  | 3893 | +#define INTERRUPT_NEXUS_CHECK(...)                                                                 \ | 
|  | 3894 | +	UTIL_CAT(INTERRUPT_NEXUS_CHECK_, GET_ARG_N(3, __VA_ARGS__))(__VA_ARGS__) | 
|  | 3895 | + | 
|  | 3896 | +ZTEST(devicetree_api, test_map) | 
|  | 3897 | +{ | 
|  | 3898 | +	zassert_equal(DT_PROP_LEN(TEST_GPIO_CONNECTOR, gpio_map), 2); | 
|  | 3899 | +	zassert_equal(DT_PHA_BY_IDX(TEST_GPIO_CONNECTOR, gpio_map, 0, child_specifier_0), 1); | 
|  | 3900 | +	zassert_equal(DT_PHA_BY_IDX(TEST_GPIO_CONNECTOR, gpio_map, 0, child_specifier_1), 2); | 
|  | 3901 | +	zassert_str_equal(STRINGIFY(DT_PHANDLE_BY_IDX(TEST_GPIO_CONNECTOR, gpio_map, 0)), | 
|  | 3902 | +				    "DT_N_S_gpio_map_test_S_parent"); | 
|  | 3903 | +	zassert_equal(DT_PHA_BY_IDX(TEST_GPIO_CONNECTOR, gpio_map, 0, parent_specifier_0), 3); | 
|  | 3904 | +	zassert_equal(DT_PHA_BY_IDX(TEST_GPIO_CONNECTOR, gpio_map, 1, child_specifier_0), 4); | 
|  | 3905 | +	zassert_equal(DT_PHA_BY_IDX(TEST_GPIO_CONNECTOR, gpio_map, 1, child_specifier_1), 5); | 
|  | 3906 | +	zassert_str_equal(STRINGIFY(DT_PHANDLE_BY_IDX(TEST_GPIO_CONNECTOR, gpio_map, 1)), | 
|  | 3907 | +				    "DT_N_S_gpio_map_test_S_parent"); | 
|  | 3908 | +	zassert_equal(DT_PHA_BY_IDX(TEST_GPIO_CONNECTOR, gpio_map, 1, parent_specifier_0), 6); | 
|  | 3909 | + | 
|  | 3910 | +	zassert_equal(DT_PROP_LEN(TEST_GPIO_CONNECTOR, gpio_map_mask), 2); | 
|  | 3911 | +	zassert_equal(DT_PROP_BY_IDX(TEST_GPIO_CONNECTOR, gpio_map_mask, 0), 0xffffffff); | 
|  | 3912 | +	zassert_equal(DT_PROP_BY_IDX(TEST_GPIO_CONNECTOR, gpio_map_mask, 1), 0xffffffc0); | 
|  | 3913 | +	zassert_equal(DT_PROP_LEN(TEST_GPIO_CONNECTOR, gpio_map_pass_thru), 2); | 
|  | 3914 | +	zassert_equal(DT_PROP_BY_IDX(TEST_GPIO_CONNECTOR, gpio_map_pass_thru, 0), 0x0); | 
|  | 3915 | +	zassert_equal(DT_PROP_BY_IDX(TEST_GPIO_CONNECTOR, gpio_map_pass_thru, 1), 0x3f); | 
|  | 3916 | + | 
|  | 3917 | +	DT_FOREACH_PROP_ELEM_VARGS(TEST_INTERRUPT_NEXUS, interrupt_map, INTERRUPT_NEXUS_CHECK, | 
|  | 3918 | +				   9999); | 
|  | 3919 | +} | 
|  | 3920 | + | 
| 3835 | 3921 | ZTEST_SUITE(devicetree_api, NULL, NULL, NULL, NULL, NULL); | 
0 commit comments