|
81 | 81 | #define TEST_IO_CHANNEL_CTLR_1 DT_NODELABEL(test_adc_1) |
82 | 82 | #define TEST_IO_CHANNEL_CTLR_2 DT_NODELABEL(test_adc_2) |
83 | 83 |
|
| 84 | +#define TEST_RANGES_PCIE DT_NODELABEL(test_ranges_pcie) |
| 85 | +#define TEST_RANGES_OTHER DT_NODELABEL(test_ranges_other) |
| 86 | + |
84 | 87 | #define TA_HAS_COMPAT(compat) DT_NODE_HAS_COMPAT(TEST_ARRAYS, compat) |
85 | 88 |
|
86 | 89 | #define TO_STRING(x) TO_STRING_(x) |
@@ -1723,6 +1726,123 @@ static void test_great_grandchild(void) |
1723 | 1726 | zassert_equal(DT_PROP(DT_NODELABEL(test_ggc), ggc_prop), 42, ""); |
1724 | 1727 | } |
1725 | 1728 |
|
| 1729 | +#undef DT_DRV_COMPAT |
| 1730 | +#define DT_DRV_COMPAT vnd_test_ranges_pcie |
| 1731 | +static void test_ranges_pcie(void) |
| 1732 | +{ |
| 1733 | +#define FLAGS(node_id, idx) \ |
| 1734 | + DT_RANGES_CHILD_BUS_FLAGS_BY_IDX(node_id, idx), |
| 1735 | +#define CHILD_BUS_ADDR(node_id, idx) \ |
| 1736 | + DT_RANGES_CHILD_BUS_ADDRESS_BY_IDX(node_id, idx), |
| 1737 | +#define PARENT_BUS_ADDR(node_id, idx) \ |
| 1738 | + DT_RANGES_PARENT_BUS_ADDRESS_BY_IDX(node_id, idx), |
| 1739 | +#define LENGTH(node_id, idx) DT_RANGES_LENGTH_BY_IDX(node_id, idx), |
| 1740 | + |
| 1741 | + unsigned int count = DT_NUM_RANGES(TEST_RANGES_PCIE); |
| 1742 | + |
| 1743 | + const uint64_t ranges_pcie_flags[] = { |
| 1744 | + DT_FOREACH_RANGE(TEST_RANGES_PCIE, FLAGS) |
| 1745 | + }; |
| 1746 | + |
| 1747 | + const uint64_t ranges_child_bus_addr[] = { |
| 1748 | + DT_FOREACH_RANGE(TEST_RANGES_PCIE, CHILD_BUS_ADDR) |
| 1749 | + }; |
| 1750 | + |
| 1751 | + const uint64_t ranges_parent_bus_addr[] = { |
| 1752 | + DT_FOREACH_RANGE(TEST_RANGES_PCIE, PARENT_BUS_ADDR) |
| 1753 | + }; |
| 1754 | + |
| 1755 | + const uint64_t ranges_length[] = { |
| 1756 | + DT_FOREACH_RANGE(TEST_RANGES_PCIE, LENGTH) |
| 1757 | + }; |
| 1758 | + |
| 1759 | + zassert_equal(count, 3, ""); |
| 1760 | + |
| 1761 | + zassert_equal(DT_RANGES_HAS_IDX(TEST_RANGES_PCIE, 0), 1, ""); |
| 1762 | + zassert_equal(DT_RANGES_HAS_IDX(TEST_RANGES_PCIE, 1), 1, ""); |
| 1763 | + zassert_equal(DT_RANGES_HAS_IDX(TEST_RANGES_PCIE, 2), 1, ""); |
| 1764 | + zassert_equal(DT_RANGES_HAS_IDX(TEST_RANGES_PCIE, 3), 0, ""); |
| 1765 | + |
| 1766 | + zassert_equal(DT_RANGES_HAS_CHILD_BUS_FLAGS_AT_IDX(TEST_RANGES_PCIE, 0), |
| 1767 | + 1, ""); |
| 1768 | + zassert_equal(DT_RANGES_HAS_CHILD_BUS_FLAGS_AT_IDX(TEST_RANGES_PCIE, 1), |
| 1769 | + 1, ""); |
| 1770 | + zassert_equal(DT_RANGES_HAS_CHILD_BUS_FLAGS_AT_IDX(TEST_RANGES_PCIE, 2), |
| 1771 | + 1, ""); |
| 1772 | + zassert_equal(DT_RANGES_HAS_CHILD_BUS_FLAGS_AT_IDX(TEST_RANGES_PCIE, 3), |
| 1773 | + 0, ""); |
| 1774 | + |
| 1775 | + zassert_equal(ranges_pcie_flags[0], 0x1000000, ""); |
| 1776 | + zassert_equal(ranges_pcie_flags[1], 0x2000000, ""); |
| 1777 | + zassert_equal(ranges_pcie_flags[2], 0x3000000, ""); |
| 1778 | + zassert_equal(ranges_child_bus_addr[0], 0, ""); |
| 1779 | + zassert_equal(ranges_child_bus_addr[1], 0x10000000, ""); |
| 1780 | + zassert_equal(ranges_child_bus_addr[2], 0x8000000000, ""); |
| 1781 | + zassert_equal(ranges_parent_bus_addr[0], 0x3eff0000, ""); |
| 1782 | + zassert_equal(ranges_parent_bus_addr[1], 0x10000000, ""); |
| 1783 | + zassert_equal(ranges_parent_bus_addr[2], 0x8000000000, ""); |
| 1784 | + zassert_equal(ranges_length[0], 0x10000, ""); |
| 1785 | + zassert_equal(ranges_length[1], 0x2eff0000, ""); |
| 1786 | + zassert_equal(ranges_length[2], 0x8000000000, ""); |
| 1787 | + |
| 1788 | +#undef FLAGS |
| 1789 | +#undef CHILD_BUS_ADDR |
| 1790 | +#undef PARENT_BUS_ADDR |
| 1791 | +#undef LENGTH |
| 1792 | +} |
| 1793 | + |
| 1794 | +static void test_ranges_other(void) |
| 1795 | +{ |
| 1796 | +#define HAS_FLAGS(node_id, idx) \ |
| 1797 | + DT_RANGES_HAS_CHILD_BUS_FLAGS_AT_IDX(node_id, idx) |
| 1798 | +#define FLAGS(node_id, idx) \ |
| 1799 | + DT_RANGES_CHILD_BUS_FLAGS_BY_IDX(node_id, idx), |
| 1800 | +#define CHILD_BUS_ADDR(node_id, idx) \ |
| 1801 | + DT_RANGES_CHILD_BUS_ADDRESS_BY_IDX(node_id, idx), |
| 1802 | +#define PARENT_BUS_ADDR(node_id, idx) \ |
| 1803 | + DT_RANGES_PARENT_BUS_ADDRESS_BY_IDX(node_id, idx), |
| 1804 | +#define LENGTH(node_id, idx) DT_RANGES_LENGTH_BY_IDX(node_id, idx), |
| 1805 | + |
| 1806 | + unsigned int count = DT_NUM_RANGES(TEST_RANGES_OTHER); |
| 1807 | + |
| 1808 | + const uint32_t ranges_child_bus_addr[] = { |
| 1809 | + DT_FOREACH_RANGE(TEST_RANGES_OTHER, CHILD_BUS_ADDR) |
| 1810 | + }; |
| 1811 | + |
| 1812 | + const uint32_t ranges_parent_bus_addr[] = { |
| 1813 | + DT_FOREACH_RANGE(TEST_RANGES_OTHER, PARENT_BUS_ADDR) |
| 1814 | + }; |
| 1815 | + |
| 1816 | + const uint32_t ranges_length[] = { |
| 1817 | + DT_FOREACH_RANGE(TEST_RANGES_OTHER, LENGTH) |
| 1818 | + }; |
| 1819 | + |
| 1820 | + zassert_equal(count, 2, ""); |
| 1821 | + |
| 1822 | + zassert_equal(DT_RANGES_HAS_IDX(TEST_RANGES_OTHER, 0), 1, ""); |
| 1823 | + zassert_equal(DT_RANGES_HAS_IDX(TEST_RANGES_OTHER, 1), 1, ""); |
| 1824 | + zassert_equal(DT_RANGES_HAS_IDX(TEST_RANGES_OTHER, 2), 0, ""); |
| 1825 | + zassert_equal(DT_RANGES_HAS_IDX(TEST_RANGES_OTHER, 3), 0, ""); |
| 1826 | + |
| 1827 | + zassert_equal(HAS_FLAGS(TEST_RANGES_OTHER, 0), 0, ""); |
| 1828 | + zassert_equal(HAS_FLAGS(TEST_RANGES_OTHER, 1), 0, ""); |
| 1829 | + zassert_equal(HAS_FLAGS(TEST_RANGES_OTHER, 2), 0, ""); |
| 1830 | + zassert_equal(HAS_FLAGS(TEST_RANGES_OTHER, 3), 0, ""); |
| 1831 | + |
| 1832 | + zassert_equal(ranges_child_bus_addr[0], 0, ""); |
| 1833 | + zassert_equal(ranges_child_bus_addr[1], 0x10000000, ""); |
| 1834 | + zassert_equal(ranges_parent_bus_addr[0], 0x3eff0000, ""); |
| 1835 | + zassert_equal(ranges_parent_bus_addr[1], 0x10000000, ""); |
| 1836 | + zassert_equal(ranges_length[0], 0x10000, ""); |
| 1837 | + zassert_equal(ranges_length[1], 0x2eff0000, ""); |
| 1838 | + |
| 1839 | +#undef HAS_FLAGS |
| 1840 | +#undef FLAGS |
| 1841 | +#undef CHILD_BUS_ADDR |
| 1842 | +#undef PARENT_BUS_ADDR |
| 1843 | +#undef LENGTH |
| 1844 | +} |
| 1845 | + |
1726 | 1846 | static void test_compat_get_any_status_okay(void) |
1727 | 1847 | { |
1728 | 1848 | zassert_true( |
@@ -2148,6 +2268,8 @@ void test_main(void) |
2148 | 2268 | ztest_unit_test(test_child_nodes_list), |
2149 | 2269 | ztest_unit_test(test_child_nodes_list_varg), |
2150 | 2270 | ztest_unit_test(test_great_grandchild), |
| 2271 | + ztest_unit_test(test_ranges_pcie), |
| 2272 | + ztest_unit_test(test_ranges_other), |
2151 | 2273 | ztest_unit_test(test_compat_get_any_status_okay), |
2152 | 2274 | ztest_unit_test(test_dep_ord), |
2153 | 2275 | ztest_unit_test(test_path), |
|
0 commit comments