On Sun, May 8, 2022 at 8:53 PM Colin Foster <colin.foster@xxxxxxxxxxxxxxxx> wrote: > > There are a few Ocelot chips that can contain SGPIO logic, but can be > controlled externally. Specifically the VSC7511, 7512, 7513, and 7514. In > the externally controlled configurations these registers are not > memory-mapped. > > Add support for these non-memory-mapped configurations. ... > - regs = devm_platform_ioremap_resource(pdev, 0); > - if (IS_ERR(regs)) > - return PTR_ERR(regs); > + regs = devm_platform_get_and_ioremap_resource(pdev, 0, NULL); > + if (IS_ERR(regs)) { > + /* > + * Fall back to using IORESOURCE_REG, which is possible in an > + * MFD configuration > + */ > + res = platform_get_resource(pdev, IORESOURCE_REG, 0); > + if (!res) { > + dev_err(dev, "Failed to get resource\n"); > + return -ENODEV; > + } > + > + priv->regs = ocelot_init_regmap_from_resource(dev, res); > + } else { > + priv->regs = devm_regmap_init_mmio(dev, regs, ®map_config); > + } > > - priv->regs = devm_regmap_init_mmio(dev, regs, ®map_config); > if (IS_ERR(priv->regs)) > return PTR_ERR(priv->regs); This looks like repetition of something you have done in a few previous patches. Can you avoid code duplication by introducing a corresponding helper function? -- With Best Regards, Andy Shevchenko