Re: [PATCH v6 2/7] reset: mchp: sparx5: Use the second reg item when cpu-syscon is not present
From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: 2024-09-30 13:23:53
Also in:
linux-arm-kernel, linux-devicetree, linux-pci, lkml
Hi Hervé, On Mon, Sep 30, 2024 at 2:16 PM Herve Codina [off-list ref] wrote:
In the LAN966x PCI device use case, syscon cannot be used as syscon devices do not support removal [1]. A syscon device is a core "system" device and not a device available in some addon boards and so, it is not supposed to be removed. In order to remove the syscon usage, use a local mapping of a reg address range when cpu-syscon is not present. Link: https://lore.kernel.org/all/20240923100741.11277439@bootlin.com/ (local) [1] Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Thanks for your patch!
quoted hunk ↗ jump to hunk
--- a/drivers/reset/reset-microchip-sparx5.c +++ b/drivers/reset/reset-microchip-sparx5.c@@ -114,8 +114,22 @@ static int mchp_sparx5_reset_probe(struct platform_device *pdev) return -ENOMEM; err = mchp_sparx5_map_syscon(pdev, "cpu-syscon", &ctx->cpu_ctrl); - if (err) + switch (err) { + case 0: + break; + case -ENODEV: + /* + * The cpu-syscon device is not available. + * Fall back with IO mapping (i.e. mapping from reg property). + */ + err = mchp_sparx5_map_io(pdev, 1, &ctx->cpu_ctrl); + if (err) + return err; + break; + default: return err; + } +
This can be shortened to:
if (err == -ENODEV) {
/*
* The cpu-syscon device is not available.
* Fall back with IO mapping (i.e. mapping from reg property).
*/
err = mchp_sparx5_map_io(pdev, 1, &ctx->cpu_ctrl);
}
if (err)
return err;
err = mchp_sparx5_map_io(pdev, 0, &ctx->gcb_ctrl);
if (err)
return err;
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds