Message ID | 20240805101725.93947-7-herve.codina@bootlin.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for the LAN966x PCI device using a DT overlay | expand |
Hi Herve, On Mon, 2024-08-05 at 12:17 +0200, Herve Codina wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you > know the content is safe > > From: Clément Léger <clement.leger@bootlin.com> > > The sparx5 reset controller does not release syscon when it is not > used > anymore. > > This reset controller is used by the LAN966x PCI device driver. > It can be removed from the system at runtime and needs to release its > consumed syscon on removal. > > Use the newly introduced devm_syscon_regmap_lookup_by_phandle() in > order > to get the syscon and automatically release it on removal. > > Signed-off-by: Clément Léger <clement.leger@bootlin.com> > Signed-off-by: Herve Codina <herve.codina@bootlin.com> > --- > drivers/reset/reset-microchip-sparx5.c | 8 ++------ > 1 file changed, 2 insertions(+), 6 deletions(-) > > diff --git a/drivers/reset/reset-microchip-sparx5.c > b/drivers/reset/reset-microchip-sparx5.c > index 69915c7b4941..c4fe65291a43 100644 > --- a/drivers/reset/reset-microchip-sparx5.c > +++ b/drivers/reset/reset-microchip-sparx5.c > @@ -65,15 +65,11 @@ static const struct reset_control_ops > sparx5_reset_ops = { > static int mchp_sparx5_map_syscon(struct platform_device *pdev, char > *name, > struct regmap **target) > { > - struct device_node *syscon_np; > + struct device *dev = &pdev->dev; > struct regmap *regmap; > int err; > > - syscon_np = of_parse_phandle(pdev->dev.of_node, name, 0); > - if (!syscon_np) > - return -ENODEV; > - regmap = syscon_node_to_regmap(syscon_np); > - of_node_put(syscon_np); > + regmap = devm_syscon_regmap_lookup_by_phandle(dev, dev- > >of_node, name); > if (IS_ERR(regmap)) { > err = PTR_ERR(regmap); > dev_err(&pdev->dev, "No '%s' map: %d\n", name, err); > -- > 2.45.0 > Looks good to me. Reviewed-by: Steen Hegelund <Steen.Hegelund@microchip.com> BR Steen
diff --git a/drivers/reset/reset-microchip-sparx5.c b/drivers/reset/reset-microchip-sparx5.c index 69915c7b4941..c4fe65291a43 100644 --- a/drivers/reset/reset-microchip-sparx5.c +++ b/drivers/reset/reset-microchip-sparx5.c @@ -65,15 +65,11 @@ static const struct reset_control_ops sparx5_reset_ops = { static int mchp_sparx5_map_syscon(struct platform_device *pdev, char *name, struct regmap **target) { - struct device_node *syscon_np; + struct device *dev = &pdev->dev; struct regmap *regmap; int err; - syscon_np = of_parse_phandle(pdev->dev.of_node, name, 0); - if (!syscon_np) - return -ENODEV; - regmap = syscon_node_to_regmap(syscon_np); - of_node_put(syscon_np); + regmap = devm_syscon_regmap_lookup_by_phandle(dev, dev->of_node, name); if (IS_ERR(regmap)) { err = PTR_ERR(regmap); dev_err(&pdev->dev, "No '%s' map: %d\n", name, err);