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]>
---
 drivers/of/selftest.c                        | 23 ++++++++++++++++++
 drivers/of/testcase-data/testcases.dtsi      |  1 +
 drivers/of/testcase-data/tests-platform.dtsi | 35 ++++++++++++++++++++++++++++
 3 files changed, 59 insertions(+)
 create mode 100644 drivers/of/testcase-data/tests-platform.dtsi

diff --git a/drivers/of/selftest.c b/drivers/of/selftest.c
index ae44500..c93cb4a 100644
--- a/drivers/of/selftest.c
+++ b/drivers/of/selftest.c
@@ -10,6 +10,7 @@
 #include <linux/module.h>
 #include <linux/of.h>
 #include <linux/of_irq.h>
+#include <linux/of_platform.h>
 #include <linux/list.h>
 #include <linux/mutex.h>
 #include <linux/slab.h>
@@ -427,6 +428,27 @@ static void __init of_selftest_match_node(void)
        }
 }
 
+static void __init of_selftest_platform_populate(void)
+{
+       struct device_node *np, *child;
+       int rc;
+       struct of_device_id match[] = {
+               { .compatible = "test-device", },
+               {}
+       };
+
+       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) {
+               rc = of_platform_populate(child, match, NULL, NULL);
+               selftest(!rc, "Could not create device for node '%s'\n", 
child->name);
+       }
+}
+
 static int __init of_selftest(void)
 {
        struct device_node *np;
@@ -445,6 +467,7 @@ static int __init of_selftest(void)
        of_selftest_parse_interrupts();
        of_selftest_parse_interrupts_extended();
        of_selftest_match_node();
+       of_selftest_platform_populate();
        pr_info("end of selftest - %i passed, %i failed\n",
                selftest_results.passed, selftest_results.failed);
        return 0;
diff --git a/drivers/of/testcase-data/testcases.dtsi 
b/drivers/of/testcase-data/testcases.dtsi
index 3a5b75a..6d8d980a 100644
--- a/drivers/of/testcase-data/testcases.dtsi
+++ b/drivers/of/testcase-data/testcases.dtsi
@@ -1,3 +1,4 @@
 #include "tests-phandle.dtsi"
 #include "tests-interrupts.dtsi"
 #include "tests-match.dtsi"
+#include "tests-platform.dtsi"
diff --git a/drivers/of/testcase-data/tests-platform.dtsi 
b/drivers/of/testcase-data/tests-platform.dtsi
new file mode 100644
index 0000000..eb20eeb
--- /dev/null
+++ b/drivers/of/testcase-data/tests-platform.dtsi
@@ -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>;
+                               };
+                       };
+               };
+       };
+};
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to