Re: [PATCH v3] reset: mchp: sparx5: Fix for lan966x
From: Horatiu Vultur <horatiu.vultur@microchip.com>
Date: 2025-02-27 08:54:05
Also in:
lkml
The 02/26/2025 17:32, Philipp Zabel wrote: Hi,
On Mi, 2025-02-26 at 15:46 +0100, Horatiu Vultur wrote:quoted
With the blamed commit it seems that lan966x doesn't seem to boot anymore when the internal CPU is used. The reason seems to be the usage of the devm_of_iomap, if we replace this with of_iomap, this seems to fix the issue as we use the same^^^^^^^^ The is not accurate anymore.
Good catch. I will update in the next version.
quoted
region also for other devices. Fixes: 0426a920d6269c ("reset: mchp: sparx5: Map cpu-syscon locally in case of LAN966x") Reviewed-by: Herve Codina <herve.codina@bootlin.com> Tested-by: Herve Codina <herve.codina@bootlin.com>Is this still correct?quoted
Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com> --- v2->v3: - forward error from of_address_to_resource - use devm_ioremap instead of_iomap v1->v2: - make sure to use iounmap when driver is removed --- drivers/reset/reset-microchip-sparx5.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-)diff --git a/drivers/reset/reset-microchip-sparx5.c b/drivers/reset/reset-microchip-sparx5.c index aa5464be7053b..176b3f46e9243 100644 --- a/drivers/reset/reset-microchip-sparx5.c +++ b/drivers/reset/reset-microchip-sparx5.c@@ -8,6 +8,7 @@ */ #include <linux/mfd/syscon.h> #include <linux/of.h> +#include <linux/of_address.h> #include <linux/module.h> #include <linux/platform_device.h> #include <linux/property.h>@@ -72,14 +73,19 @@ static struct regmap *mchp_lan966x_syscon_to_regmap(struct device *dev, struct device_node *syscon_np) { struct regmap_config regmap_config = mchp_lan966x_syscon_regmap_config; - resource_size_t size; + struct resource res; void __iomem *base; + int err; + + err = of_address_to_resource(syscon_np, 0, &res); + if (err) + return ERR_PTR(err); - base = devm_of_iomap(dev, syscon_np, 0, &size); - if (IS_ERR(base)) - return ERR_CAST(base);It would be nice to add a comment here that devm_of_iomap() can't be used because the resource is shared with other devices. Do you know which ones?
Yes, I will add a comment in the next version. Looking at the device trees (lan966x.dtsi), it looks like it is shared with the clock driver (clks).
Otherwise, this looks good to me. regards Philipp
-- /Horatiu