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)