Hi Hervé, On Mon, Sep 30, 2024 at 2:16 PM Herve Codina <herve.codina@xxxxxxxxxxx> 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@xxxxxxxxxxx/ [1] > Signed-off-by: Herve Codina <herve.codina@xxxxxxxxxxx> Thanks for your patch! > --- 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@xxxxxxxxxxxxxx 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