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

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
...@@ -176,5 +176,60 @@ __overlay__ { ...@@ -176,5 +176,60 @@ __overlay__ {
}; };
}; };
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>;
};
};
};
};
};
}; };
}; };
...@@ -978,6 +978,9 @@ static int selftest_probe(struct platform_device *pdev) ...@@ -978,6 +978,9 @@ static int selftest_probe(struct platform_device *pdev)
} }
dev_dbg(dev, "%s for node @%s\n", __func__, np->full_name); dev_dbg(dev, "%s for node @%s\n", __func__, np->full_name);
of_platform_populate(np, NULL, NULL, &pdev->dev);
return 0; return 0;
} }
...@@ -1385,6 +1388,39 @@ static void of_selftest_overlay_8(void) ...@@ -1385,6 +1388,39 @@ static void of_selftest_overlay_8(void)
selftest(1, "overlay test %d passed\n", 8); 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) static void __init of_selftest_overlay(void)
{ {
struct device_node *bus_np = NULL; struct device_node *bus_np = NULL;
...@@ -1433,6 +1469,9 @@ static void __init of_selftest_overlay(void) ...@@ -1433,6 +1469,9 @@ static void __init of_selftest_overlay(void)
of_selftest_overlay_6(); of_selftest_overlay_6();
of_selftest_overlay_8(); of_selftest_overlay_8();
of_selftest_overlay_10();
of_selftest_overlay_11();
out: out:
of_node_put(bus_np); of_node_put(bus_np);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment