]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: Use of_reserved_mem_region_to_resource() for "memory-region"
authorRob Herring (Arm) <robh@kernel.org>
Thu, 3 Jul 2025 18:35:21 +0000 (13:35 -0500)
committerMark Brown <broonie@kernel.org>
Fri, 4 Jul 2025 12:09:47 +0000 (13:09 +0100)
Use the newly added of_reserved_mem_region_to_resource() function to
handle "memory-region" properties.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Reviewed-by: Tzung-Bi Shih <tzungbi@kernel.org>
Reviewed-by: Cheng-Yi Chiang <cychiang@chromium.org>
Link: https://patch.msgid.link/20250703183523.2075276-1-robh@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/cros_ec_codec.c
sound/soc/sof/imx/imx-common.c
sound/soc/sof/mediatek/mt8186/mt8186.c
sound/soc/sof/mediatek/mt8195/mt8195.c

index 571222ec520cac5d56c80f179c323888e6d63a2d..937c8cec682ac35e52fa0c6b37affb005d7523de 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/module.h>
 #include <linux/of.h>
 #include <linux/of_address.h>
+#include <linux/of_reserved_mem.h>
 #include <linux/platform_data/cros_ec_commands.h>
 #include <linux/platform_data/cros_ec_proto.h>
 #include <linux/platform_device.h>
@@ -961,7 +962,6 @@ static int cros_ec_codec_platform_probe(struct platform_device *pdev)
        struct ec_response_ec_codec_get_capabilities r;
        int ret;
 #ifdef CONFIG_OF
-       struct device_node *node;
        struct resource res;
        u64 ec_shm_size;
        const __be32 *regaddr_p;
@@ -981,22 +981,18 @@ static int cros_ec_codec_platform_probe(struct platform_device *pdev)
                        priv->ec_shm_addr, priv->ec_shm_len);
        }
 
-       node = of_parse_phandle(dev->of_node, "memory-region", 0);
-       if (node) {
-               ret = of_address_to_resource(node, 0, &res);
-               if (!ret) {
-                       priv->ap_shm_phys_addr = res.start;
-                       priv->ap_shm_len = resource_size(&res);
-                       priv->ap_shm_addr =
-                               (uint64_t)(uintptr_t)devm_ioremap_wc(
-                                       dev, priv->ap_shm_phys_addr,
-                                       priv->ap_shm_len);
-                       priv->ap_shm_last_alloc = priv->ap_shm_phys_addr;
-
-                       dev_dbg(dev, "ap_shm_phys_addr=%#llx len=%#x\n",
-                               priv->ap_shm_phys_addr, priv->ap_shm_len);
-               }
-               of_node_put(node);
+       ret = of_reserved_mem_region_to_resource(dev->of_node, 0, &res);
+       if (!ret) {
+               priv->ap_shm_phys_addr = res.start;
+               priv->ap_shm_len = resource_size(&res);
+               priv->ap_shm_addr =
+                       (uint64_t)(uintptr_t)devm_ioremap_wc(
+                               dev, priv->ap_shm_phys_addr,
+                               priv->ap_shm_len);
+               priv->ap_shm_last_alloc = priv->ap_shm_phys_addr;
+
+               dev_dbg(dev, "ap_shm_phys_addr=%#llx len=%#x\n",
+                       priv->ap_shm_phys_addr, priv->ap_shm_len);
        }
 #endif
 
index 62bf707aa909ccfb6c17771a675e86a859b48c42..f00b381cec3b4aa03c76068bac120582fec64d0a 100644 (file)
@@ -282,11 +282,8 @@ static int imx_region_name_to_blk_type(const char *region_name)
 static int imx_parse_ioremap_memory(struct snd_sof_dev *sdev)
 {
        const struct imx_chip_info *chip_info;
-       struct reserved_mem *reserved;
        struct platform_device *pdev;
-       struct device_node *res_np;
-       phys_addr_t base, size;
-       struct resource *res;
+       struct resource *res, _res;
        int i, blk_type, ret;
 
        pdev = to_platform_device(sdev->dev);
@@ -307,37 +304,18 @@ static int imx_parse_ioremap_memory(struct snd_sof_dev *sdev)
                                                     "failed to fetch %s resource\n",
                                                     chip_info->memory[i].name);
 
-                       base = res->start;
-                       size = resource_size(res);
                } else {
-                       ret = of_property_match_string(pdev->dev.of_node,
-                                                      "memory-region-names",
-                                                      chip_info->memory[i].name);
+                       ret = of_reserved_mem_region_to_resource_byname(pdev->dev.of_node,
+                                                                       chip_info->memory[i].name,
+                                                                       &_res);
                        if (ret < 0)
                                return dev_err_probe(sdev->dev, ret,
-                                                    "no valid index for %s\n",
+                                                    "no valid entry for %s\n",
                                                     chip_info->memory[i].name);
-
-                       res_np = of_parse_phandle(pdev->dev.of_node,
-                                                 "memory-region",
-                                                 ret);
-                       if (!res_np)
-                               return dev_err_probe(sdev->dev, -ENODEV,
-                                                    "failed to parse phandle %s\n",
-                                                    chip_info->memory[i].name);
-
-                       reserved = of_reserved_mem_lookup(res_np);
-                       of_node_put(res_np);
-                       if (!reserved)
-                               return dev_err_probe(sdev->dev, -ENODEV,
-                                                    "failed to get %s reserved\n",
-                                                    chip_info->memory[i].name);
-
-                       base = reserved->base;
-                       size = reserved->size;
+                       res = &_res;
                }
 
-               sdev->bar[blk_type] = devm_ioremap(sdev->dev, base, size);
+               sdev->bar[blk_type] = devm_ioremap_resource(sdev->dev, res);
                if (!sdev->bar[blk_type])
                        return dev_err_probe(sdev->dev,
                                             -ENOMEM,
index 7ff080452cbec469aaf016931475bd732f25e4d1..c1bea967737d523cb7781a80ee576eb75964fe3d 100644 (file)
@@ -12,7 +12,6 @@
 #include <linux/delay.h>
 #include <linux/firmware.h>
 #include <linux/io.h>
-#include <linux/of_address.h>
 #include <linux/of_irq.h>
 #include <linux/of_platform.h>
 #include <linux/of_reserved_mem.h>
@@ -46,7 +45,6 @@ static int platform_parse_resource(struct platform_device *pdev, void *data)
 {
        struct resource *mmio;
        struct resource res;
-       struct device_node *mem_region;
        struct device *dev = &pdev->dev;
        struct mtk_adsp_chip_info *adsp = data;
        int ret;
@@ -57,14 +55,7 @@ static int platform_parse_resource(struct platform_device *pdev, void *data)
                return ret;
        }
 
-       mem_region = of_parse_phandle(dev->of_node, "memory-region", 1);
-       if (!mem_region) {
-               dev_err(dev, "no memory-region sysmem phandle\n");
-               return -ENODEV;
-       }
-
-       ret = of_address_to_resource(mem_region, 0, &res);
-       of_node_put(mem_region);
+       ret = of_reserved_mem_region_to_resource(dev->of_node, 1, &res);
        if (ret) {
                dev_err(dev, "of_address_to_resource sysmem failed\n");
                return ret;
index 3b3582d74510397563d88089acd010c9dec9c30d..4d6e9300a9c03bff2e41ed1d4c9dd4310a993892 100644 (file)
@@ -12,7 +12,6 @@
 #include <linux/delay.h>
 #include <linux/firmware.h>
 #include <linux/io.h>
-#include <linux/of_address.h>
 #include <linux/of_irq.h>
 #include <linux/of_platform.h>
 #include <linux/of_reserved_mem.h>
@@ -46,7 +45,6 @@ static int platform_parse_resource(struct platform_device *pdev, void *data)
 {
        struct resource *mmio;
        struct resource res;
-       struct device_node *mem_region;
        struct device *dev = &pdev->dev;
        struct mtk_adsp_chip_info *adsp = data;
        int ret;
@@ -57,14 +55,7 @@ static int platform_parse_resource(struct platform_device *pdev, void *data)
                return ret;
        }
 
-       mem_region = of_parse_phandle(dev->of_node, "memory-region", 1);
-       if (!mem_region) {
-               dev_err(dev, "no memory-region sysmem phandle\n");
-               return -ENODEV;
-       }
-
-       ret = of_address_to_resource(mem_region, 0, &res);
-       of_node_put(mem_region);
+       ret = of_reserved_mem_region_to_resource(dev->of_node, 1, &res);
        if (ret) {
                dev_err(dev, "of_address_to_resource sysmem failed\n");
                return ret;