Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6b1271de authored by Pantelis Antoniou's avatar Pantelis Antoniou Committed by Grant Likely
Browse files

of/unittest: Overlays with sub-devices tests



Introduce selftests for overlays using sub-devices present
in children nodes.

Signed-off-by: default avatarPantelis Antoniou <pantelis.antoniou@konsulko.com>
Signed-off-by: default avatarGrant Likely <grant.likely@linaro.org>
parent 15204ab1
Loading
Loading
Loading
Loading
+55 −0
Original line number Diff line number Diff line
@@ -176,5 +176,60 @@
			};
		};

		overlay10 {
			fragment@0 {
				target-path = "/testcase-data/overlay-node/test-bus";
				__overlay__ {

					/* suppress DTC warning */
					#address-cells = <1>;
					#size-cells = <0>;

					test-selftest10 {
						compatible = "selftest";
						status = "okay";
						reg = <10>;

						#address-cells = <1>;
						#size-cells = <0>;

						test-selftest101 {
							compatible = "selftest";
							status = "okay";
							reg = <1>;
						};

					};
				};
			};
		};

		overlay11 {
			fragment@0 {
				target-path = "/testcase-data/overlay-node/test-bus";
				__overlay__ {

					/* suppress DTC warning */
					#address-cells = <1>;
					#size-cells = <0>;

					test-selftest11 {
						compatible = "selftest";
						status = "okay";
						reg = <11>;

						#address-cells = <1>;
						#size-cells = <0>;

						test-selftest111 {
							compatible = "selftest";
							status = "okay";
							reg = <1>;
						};

					};
				};
			};
		};
	};
};
+39 −0
Original line number Diff line number Diff line
@@ -978,6 +978,9 @@ static int selftest_probe(struct platform_device *pdev)
	}

	dev_dbg(dev, "%s for node @%s\n", __func__, np->full_name);

	of_platform_populate(np, NULL, NULL, &pdev->dev);

	return 0;
}

@@ -1385,6 +1388,39 @@ static void of_selftest_overlay_8(void)
	selftest(1, "overlay test %d passed\n", 8);
}

/* test insertion of a bus with parent devices */
static void of_selftest_overlay_10(void)
{
	int ret;
	char *child_path;

	/* device should disable */
	ret = of_selftest_apply_overlay_check(10, 10, 0, 1);
	if (selftest(ret == 0, "overlay test %d failed; overlay application\n", 10))
		return;

	child_path = kasprintf(GFP_KERNEL, "%s/test-selftest101",
			selftest_path(10));
	if (selftest(child_path, "overlay test %d failed; kasprintf\n", 10))
		return;

	ret = of_path_platform_device_exists(child_path);
	kfree(child_path);
	if (selftest(ret, "overlay test %d failed; no child device\n", 10))
		return;
}

/* test insertion of a bus with parent devices (and revert) */
static void of_selftest_overlay_11(void)
{
	int ret;

	/* device should disable */
	ret = of_selftest_apply_revert_overlay_check(11, 11, 0, 1);
	if (selftest(ret == 0, "overlay test %d failed; overlay application\n", 11))
		return;
}

static void __init of_selftest_overlay(void)
{
	struct device_node *bus_np = NULL;
@@ -1433,6 +1469,9 @@ static void __init of_selftest_overlay(void)
	of_selftest_overlay_6();
	of_selftest_overlay_8();

	of_selftest_overlay_10();
	of_selftest_overlay_11();

out:
	of_node_put(bus_np);
}