of_address_to_resource() on a non-translatable address should return an
error. Additionally, this case also triggers a spurious WARN for
missing #address-cells/#size-cells.

Signed-off-by: Rob Herring (Arm) <r...@kernel.org>
---
 drivers/of/unittest-data/tests-platform.dtsi | 13 +++++++++++++
 drivers/of/unittest.c                        | 14 ++++++++++++++
 2 files changed, 27 insertions(+)

diff --git a/drivers/of/unittest-data/tests-platform.dtsi 
b/drivers/of/unittest-data/tests-platform.dtsi
index fa39611071b3..cd310b26b50c 100644
--- a/drivers/of/unittest-data/tests-platform.dtsi
+++ b/drivers/of/unittest-data/tests-platform.dtsi
@@ -34,5 +34,18 @@ dev@100 {
                                };
                        };
                };
+
+               platform-tests-2 {
+                       // No #address-cells or #size-cells
+                       node {
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+
+                               test-device@100 {
+                                       compatible = "test-sub-device";
+                                       reg = <0x100 1>;
+                               };
+                       };
+               };
        };
 };
diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
index 80483e38d7b4..34c957add8b9 100644
--- a/drivers/of/unittest.c
+++ b/drivers/of/unittest.c
@@ -1380,6 +1380,7 @@ static void __init of_unittest_bus_3cell_ranges(void)
 static void __init of_unittest_reg(void)
 {
        struct device_node *np;
+       struct resource res;
        int ret;
        u64 addr, size;
 
@@ -1396,6 +1397,19 @@ static void __init of_unittest_reg(void)
                np, addr);
 
        of_node_put(np);
+
+       np = 
of_find_node_by_path("/testcase-data/platform-tests-2/node/test-device@100");
+       if (!np) {
+               pr_err("missing testcase data\n");
+               return;
+       }
+
+       ret = of_address_to_resource(np, 0, &res);
+       unittest(ret == -EINVAL, "of_address_to_resource(%pOF) expected error 
on untranslatable address\n",
+                np);
+
+       of_node_put(np);
+
 }
 
 struct of_unittest_expected_res {
-- 
2.45.2


Reply via email to