tests: lib: devicetree: devices: Add sub-partition check
Adds a sub-partition check to this test
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
diff --git a/tests/lib/devicetree/devices/app.overlay b/tests/lib/devicetree/devices/app.overlay
index 3a62127..e195256 100644
--- a/tests/lib/devicetree/devices/app.overlay
+++ b/tests/lib/devicetree/devices/app.overlay
@@ -63,13 +63,23 @@
#address-cells = <1>;
#size-cells = <1>;
- test_p0: partition@0 {
- label = "partition-0";
- reg = <0x00000000 0x0000C000>;
- };
- test_p1: partition@c000 {
- label = "partition-1";
- reg = <0x0000C000 0x00067000>;
+ test_p0_p1: partition@0 {
+ compatible = "fixed-subpartitions";
+ label = "partition-0-1-outer";
+ reg = <0x00000000 0x73000>;
+ ranges = <0x0 0x0 0x73000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ test_p0: partition@0 {
+ label = "partition-0";
+ reg = <0x00000000 0x0000C000>;
+ };
+
+ test_p1: partition@c000 {
+ label = "partition-1";
+ reg = <0x0000C000 0x00067000>;
+ };
};
};
};
diff --git a/tests/lib/devicetree/devices/src/main.c b/tests/lib/devicetree/devices/src/main.c
index 291a4a4..49a1d08 100644
--- a/tests/lib/devicetree/devices/src/main.c
+++ b/tests/lib/devicetree/devices/src/main.c
@@ -14,14 +14,16 @@
#define TEST_GPIOX DT_NODELABEL(test_gpiox)
#define TEST_DEVB DT_NODELABEL(test_dev_b)
#define TEST_DEVC DT_NODELABEL(test_dev_c)
-#define TEST_PARTITION DT_NODELABEL(test_p0)
+#define TEST_PARTITION_OUTER DT_NODELABEL(test_p0_p1)
+#define TEST_PARTITION0 DT_NODELABEL(test_p0)
+#define TEST_PARTITION1 DT_NODELABEL(test_p1)
#define TEST_GPIO_INJECTED DT_NODELABEL(test_gpio_injected)
#define TEST_NOLABEL DT_PATH(test, i2c_11112222, test_i2c_dev_14)
static const struct device *devlist;
static const struct device *devlist_end;
-static device_handle_t init_order[10];
+static device_handle_t init_order[12];
static int dev_init(const struct device *dev)
{
@@ -46,8 +48,12 @@
NULL, NULL, POST_KERNEL, 40, NULL);
DEVICE_DT_DEFINE(TEST_DEVC, dev_init, NULL,
NULL, NULL, POST_KERNEL, 50, NULL);
-DEVICE_DT_DEFINE(TEST_PARTITION, dev_init, NULL,
+DEVICE_DT_DEFINE(TEST_PARTITION_OUTER, dev_init, NULL,
NULL, NULL, POST_KERNEL, 60, NULL);
+DEVICE_DT_DEFINE(TEST_PARTITION0, dev_init, NULL,
+ NULL, NULL, POST_KERNEL, 61, NULL);
+DEVICE_DT_DEFINE(TEST_PARTITION1, dev_init, NULL,
+ NULL, NULL, POST_KERNEL, 62, NULL);
/* Device with both an existing and missing injected dependency */
DEVICE_DT_DEFINE(TEST_GPIO_INJECTED, dev_init, NULL,
NULL, NULL, POST_KERNEL, 70, NULL, DT_DEP_ORD(TEST_DEVB), 999);
@@ -76,8 +82,12 @@
DEVICE_DT_GET(TEST_GPIOX), NULL);
zassert_equal(DEVICE_INIT_DT_GET(TEST_DEVC)->dev,
DEVICE_DT_GET(TEST_DEVC), NULL);
- zassert_equal(DEVICE_INIT_DT_GET(TEST_PARTITION)->dev,
- DEVICE_DT_GET(TEST_PARTITION), NULL);
+ zassert_equal(DEVICE_INIT_DT_GET(TEST_PARTITION_OUTER)->dev,
+ DEVICE_DT_GET(TEST_PARTITION_OUTER), NULL);
+ zassert_equal(DEVICE_INIT_DT_GET(TEST_PARTITION0)->dev,
+ DEVICE_DT_GET(TEST_PARTITION0), NULL);
+ zassert_equal(DEVICE_INIT_DT_GET(TEST_PARTITION1)->dev,
+ DEVICE_DT_GET(TEST_PARTITION1), NULL);
zassert_equal(DEVICE_INIT_DT_GET(TEST_GPIO_INJECTED)->dev,
DEVICE_DT_GET(TEST_GPIO_INJECTED), NULL);
zassert_equal(DEVICE_INIT_GET(manual_dev)->dev,
@@ -92,7 +102,9 @@
zassert_equal(DEVICE_DT_GET(TEST_DEVB)->ops.init, dev_init);
zassert_equal(DEVICE_DT_GET(TEST_GPIOX)->ops.init, dev_init);
zassert_equal(DEVICE_DT_GET(TEST_DEVC)->ops.init, dev_init);
- zassert_equal(DEVICE_DT_GET(TEST_PARTITION)->ops.init, dev_init);
+ zassert_equal(DEVICE_DT_GET(TEST_PARTITION_OUTER)->ops.init, dev_init);
+ zassert_equal(DEVICE_DT_GET(TEST_PARTITION0)->ops.init, dev_init);
+ zassert_equal(DEVICE_DT_GET(TEST_PARTITION1)->ops.init, dev_init);
zassert_equal(DEVICE_DT_GET(TEST_GPIO_INJECTED)->ops.init, dev_init);
zassert_equal(DEVICE_GET(manual_dev)->ops.init, dev_init);
zassert_equal(DEVICE_DT_GET(TEST_NOLABEL)->ops.init, dev_init);
@@ -106,10 +118,12 @@
zassert_equal(init_order[3], DEV_HDL(TEST_DEVB));
zassert_equal(init_order[4], DEV_HDL(TEST_GPIOX));
zassert_equal(init_order[5], DEV_HDL(TEST_DEVC));
- zassert_equal(init_order[6], DEV_HDL(TEST_PARTITION));
- zassert_equal(init_order[7], DEV_HDL(TEST_GPIO_INJECTED));
- zassert_equal(init_order[8], DEV_HDL_NAME(manual_dev));
- zassert_equal(init_order[9], DEV_HDL(TEST_NOLABEL));
+ zassert_equal(init_order[6], DEV_HDL(TEST_PARTITION_OUTER));
+ zassert_equal(init_order[7], DEV_HDL(TEST_PARTITION0));
+ zassert_equal(init_order[8], DEV_HDL(TEST_PARTITION1));
+ zassert_equal(init_order[9], DEV_HDL(TEST_GPIO_INJECTED));
+ zassert_equal(init_order[10], DEV_HDL_NAME(manual_dev));
+ zassert_equal(init_order[11], DEV_HDL(TEST_NOLABEL));
}
static bool check_handle(device_handle_t hdl,
@@ -321,12 +335,17 @@
zassert_true(check_handle(DEV_HDL(TEST_NOLABEL), hdls, nhdls));
/* Support forwarding (intermediate missing devicetree node)
- * TEST_DEVC: TEST_PARTITION
+ * TEST_DEVC: TEST_PARTITION_OUTER: TEST_PARTITION0 TEST_PARTITION1
*/
dev = DEVICE_DT_GET(TEST_DEVC);
hdls = device_supported_handles_get(dev, &nhdls);
zassert_equal(nhdls, 1);
- zassert_true(check_handle(DEV_HDL(TEST_PARTITION), hdls, nhdls));
+ zassert_true(check_handle(DEV_HDL(TEST_PARTITION_OUTER), hdls, nhdls));
+ dev = DEVICE_DT_GET(TEST_PARTITION_OUTER);
+ hdls = device_supported_handles_get(dev, &nhdls);
+ zassert_equal(nhdls, 2);
+ zassert_true(check_handle(DEV_HDL(TEST_PARTITION0), hdls, nhdls));
+ zassert_true(check_handle(DEV_HDL(TEST_PARTITION1), hdls, nhdls));
}
void *devicetree_devices_setup(void)