From: Kenny Root <[email protected]>

From: Kenny Root <[email protected]>

Add support for parsing the 'memory-region' DT property in addition to
the 'reg' DT property. This enables use cases where the pmem region is
not in I/O address space or dedicated memory (e.g. a bootloader
carveout).

Signed-off-by: Kenny Root <[email protected]>
Signed-off-by: Alistair Delva <[email protected]>
Reviewed-by: "Oliver O'Halloran" <[email protected]>
Cc: Rob Herring <[email protected]>
Cc: Dan Williams <[email protected]>
Cc: Vishal Verma <[email protected]>
Cc: Dave Jiang <[email protected]>
Cc: Ira Weiny <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
---
 drivers/nvdimm/of_pmem.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/drivers/nvdimm/of_pmem.c b/drivers/nvdimm/of_pmem.c
index fdf54494e8c9..cff47cc5fc4a 100644
--- a/drivers/nvdimm/of_pmem.c
+++ b/drivers/nvdimm/of_pmem.c
@@ -49,11 +49,12 @@ static void of_pmem_register_region(struct platform_device 
*pdev,
 
 static int of_pmem_region_probe(struct platform_device *pdev)
 {
+       struct device_node *mr_np, *np;
        struct of_pmem_private *priv;
-       struct device_node *np;
        struct nvdimm_bus *bus;
+       struct resource res;
        bool is_volatile;
-       int i;
+       int i, ret;
 
        np = dev_of_node(&pdev->dev);
        if (!np)
@@ -83,6 +84,21 @@ static int of_pmem_region_probe(struct platform_device *pdev)
                                        is_volatile);
        }
 
+       i = 0;
+       while ((mr_np = of_parse_phandle(np, "memory-region", i++))) {
+               ret = of_address_to_resource(mr_np, 0, &res);
+               if (ret) {
+                       dev_warn(
+                               &pdev->dev,
+                               "Unable to acquire memory-region from %pOF: 
%d\n",
+                               mr_np, ret);
+               } else {
+                       of_pmem_register_region(pdev, bus, np, &res,
+                                               is_volatile);
+               }
+               of_node_put(mr_np);
+       }
+
        return 0;
 }
 
-- 
2.25.0.265.gbab2e86ba0-goog
_______________________________________________
Linux-nvdimm mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to