Use the newly added of_reserved_mem_region_to_resource() function to
handle "memory-region" properties.

The original code did not set 'zap_available' to false if
of_address_to_resource() failed which seems like an oversight.

Signed-off-by: Rob Herring (Arm) <[email protected]>
---
 drivers/gpu/drm/msm/adreno/adreno_gpu.c | 17 +++++------------
 drivers/gpu/drm/msm/msm_drv.c           | 15 +++++----------
 2 files changed, 10 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c 
b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
index 2348ffb35f7e..c1060d5b6d05 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
@@ -10,7 +10,7 @@
 #include <linux/interconnect.h>
 #include <linux/firmware/qcom/qcom_scm.h>
 #include <linux/kernel.h>
-#include <linux/of_address.h>
+#include <linux/of_reserved_mem.h>
 #include <linux/pm_opp.h>
 #include <linux/slab.h>
 #include <linux/soc/qcom/mdt_loader.h>
@@ -33,7 +33,7 @@ static int zap_shader_load_mdt(struct msm_gpu *gpu, const 
char *fwname,
        struct device *dev = &gpu->pdev->dev;
        const struct firmware *fw;
        const char *signed_fwname = NULL;
-       struct device_node *np, *mem_np;
+       struct device_node *np;
        struct resource r;
        phys_addr_t mem_phys;
        ssize_t mem_size;
@@ -51,18 +51,11 @@ static int zap_shader_load_mdt(struct msm_gpu *gpu, const 
char *fwname,
                return -ENODEV;
        }
 
-       mem_np = of_parse_phandle(np, "memory-region", 0);
-       of_node_put(np);
-       if (!mem_np) {
+       ret = of_reserved_mem_region_to_resource(np, 0, &r);
+       if (ret) {
                zap_available = false;
-               return -EINVAL;
-       }
-
-       ret = of_address_to_resource(mem_np, 0, &r);
-       of_node_put(mem_np);
-       if (ret)
                return ret;
-
+       }
        mem_phys = r.start;
 
        /*
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index f316e6776f67..31e4de05579a 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -8,7 +8,7 @@
 #include <linux/dma-mapping.h>
 #include <linux/fault-inject.h>
 #include <linux/debugfs.h>
-#include <linux/of_address.h>
+#include <linux/of_reserved_mem.h>
 #include <linux/uaccess.h>
 
 #include <drm/clients/drm_client_setup.h>
@@ -126,8 +126,8 @@ bool msm_use_mmu(struct drm_device *dev)
 static int msm_init_vram(struct drm_device *dev)
 {
        struct msm_drm_private *priv = dev->dev_private;
-       struct device_node *node;
        unsigned long size = 0;
+       struct resource r;
        int ret = 0;
 
        /* In the device-tree world, we could have a 'memory-region'
@@ -147,14 +147,9 @@ static int msm_init_vram(struct drm_device *dev)
         *     load and do initial modeset)
         */
 
-       node = of_parse_phandle(dev->dev->of_node, "memory-region", 0);
-       if (node) {
-               struct resource r;
-               ret = of_address_to_resource(node, 0, &r);
-               of_node_put(node);
-               if (ret)
-                       return ret;
-               size = r.end - r.start + 1;
+       ret = of_reserved_mem_region_to_resource(dev->dev->of_node, 0, &r);
+       if (!ret) {
+               size = resource_size(&r);
                DRM_INFO("using VRAM carveout: %lx@%pa\n", size, &r.start);
 
                /* if we have no IOMMU, then we need to use carveout allocator.
-- 
2.47.2

Reply via email to