Loading drivers/of/unittest-data/tests-overlay.dtsi +55 −0 Original line number Diff line number Diff line Loading @@ -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>; }; }; }; }; }; }; }; drivers/of/unittest.c +39 −0 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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; Loading Loading @@ -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); } Loading Loading
drivers/of/unittest-data/tests-overlay.dtsi +55 −0 Original line number Diff line number Diff line Loading @@ -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>; }; }; }; }; }; }; };
drivers/of/unittest.c +39 −0 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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; Loading Loading @@ -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); } Loading