of/selftest: add testcase for nodes with same name and address
PATCH v2 1/1 of/selftest: add testcase for nodes with same name and address
From: Rob Herring <[email protected]>
Add a test case for nodes which have the same name and same non-translatable unit address.
Signed-off-by Rob Herring <[email protected]>
Reviewed-by Grant Likely <[email protected]>
Reviewed-by Frank Rowand <frank.rowand-/[email protected]>
---
v2:
- Rebase to v3.15-rc5 and deferred probe irq test
- Rework self checking since adding error return to of_platform_populate doesn't work.
drivers/of/selftest.c | 20 +++++++++++++++- drivers/of/testcase-data/testcases.dtsi | 1 + drivers/of/testcase-data/tests-platform.dtsi | 35 ++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 drivers/of/testcase-data/tests-platform.dtsi
drivers/of/selftest.c +19 -1
@@ -431,8 +431,12 @@ static void __init of_selftest_match_node(void)static void __init of_selftest_platform_populate (void ) {int irq; -struct device_node *np; +struct device_node *np, *child;struct platform_device *pdev; +struct of_device_id match[] = { + { .compatible ="test-device" , }, + {} + }; np =of_find_node_by_path ("/testcase-data" );of_platform_populate (np, of_default_bus_match_table,NULL ,NULL );
@@ -452,6 +456,20 @@ static void __init of_selftest_platform_populate(void) irq =platform_get_irq (pdev,0 );selftest (irq <0 && irq != -EPROBE_DEFER ,"device parsing error failed - %d\n" , irq); + np =of_find_node_by_path ("/testcase-data/platform-tests" ); +if (!np) { +pr_err ("No testcase data in device tree\n" ); +return ; + } + +for_each_child_of_node (np, child) { +struct device_node *grandchild; +of_platform_populate (child, match,NULL ,NULL ); +for_each_child_of_node (child, grandchild) +selftest (of_find_device_by_node (grandchild), +"Could not create device for node '%s'\n" , + grandchild->name); + } }static int __init of_selftest (void )
drivers/of/testcase-data/testcases.dtsi +1 -0
@@ -1,3 +1,4 @@ #include "tests-phandle.dtsi" #include "tests-interrupts.dtsi" #include "tests-match.dtsi" +#include "tests-platform.dtsi"
drivers/of/testcase-data/tests-platform.dtsi new file +35 -0
@@ -0,0 +1,35 @@ + +/ { + testcase-data { + platform-tests { + #address-cells = <1>; + #size-cells = <0>; + + test-device@0 { + compatible = "test-device"; + reg = <0x0>; + + #address-cells = <1>; + #size-cells = <0>; + + dev@100 { + compatible = "test-sub-device"; + reg = <0x100>; + }; + }; + + test-device@1 { + compatible = "test-device"; + reg = <0x1>; + + #address-cells = <1>; + #size-cells = <0>; + + dev@100 { + compatible = "test-sub-device"; + reg = <0x100>; + }; + }; + }; + }; +};
Signature · 6 lines
1.9.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html