[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230609183252.1767487-1-robh@kernel.org>
Date: Fri, 9 Jun 2023 12:32:52 -0600
From: Rob Herring <robh@...nel.org>
To: BenoƮt Cousson <bcousson@...libre.com>,
Paul Walmsley <paul@...an.com>,
Tony Lindgren <tony@...mide.com>,
Russell King <linux@...linux.org.uk>
Cc: linux-omap@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-kernel@...r.kernel.org
Subject: [PATCH] ARM: omap2: Use of_range_to_resource() for "ranges" parsing
"ranges" is a standard property with common parsing functions. Users
shouldn't be implementing their own parsing of it. Use the recently
added of_range_to_resource() function instead for OMAP hwmod.
Signed-off-by: Rob Herring <robh@...nel.org>
---
arch/arm/mach-omap2/omap_hwmod.c | 45 +++++---------------------------
1 file changed, 6 insertions(+), 39 deletions(-)
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index aac4c4ee2528..1e17b5f77588 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -2194,23 +2194,8 @@ int omap_hwmod_parse_module_range(struct omap_hwmod *oh,
struct resource *res)
{
struct property *prop;
- const __be32 *ranges;
const char *name;
- u32 nr_addr, nr_size;
- u64 base, size;
- int len, error;
-
- if (!res)
- return -EINVAL;
-
- ranges = of_get_property(np, "ranges", &len);
- if (!ranges)
- return -ENOENT;
-
- len /= sizeof(*ranges);
-
- if (len < 3)
- return -EINVAL;
+ int err;
of_property_for_each_string(np, "compatible", prop, name)
if (!strncmp("ti,sysc-", name, 8))
@@ -2219,26 +2204,12 @@ int omap_hwmod_parse_module_range(struct omap_hwmod *oh,
if (!name)
return -ENOENT;
- error = of_property_read_u32(np, "#address-cells", &nr_addr);
- if (error)
- return -ENOENT;
+ err = of_range_to_resource(np, 0, res);
+ if (err)
+ return err;
- error = of_property_read_u32(np, "#size-cells", &nr_size);
- if (error)
- return -ENOENT;
-
- if (nr_addr != 1 || nr_size != 1) {
- pr_err("%s: invalid range for %s->%pOFn\n", __func__,
- oh->name, np);
- return -EINVAL;
- }
-
- ranges++;
- base = of_translate_address(np, ranges++);
- size = be32_to_cpup(ranges);
-
- pr_debug("omap_hwmod: %s %pOFn at 0x%llx size 0x%llx\n",
- oh->name, np, base, size);
+ pr_debug("omap_hwmod: %s %pOFn at %pR\n",
+ oh->name, np, &res);
if (oh && oh->mpu_rt_idx) {
omap_hwmod_fix_mpu_rt_idx(oh, np, res);
@@ -2246,10 +2217,6 @@ int omap_hwmod_parse_module_range(struct omap_hwmod *oh,
return 0;
}
- res->start = base;
- res->end = base + size - 1;
- res->flags = IORESOURCE_MEM;
-
return 0;
}
--
2.39.2
Powered by blists - more mailing lists