Thread (22 messages) 22 messages, 5 authors, 2024-10-02

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help