Messages in this thread | | | Subject | Re: [PATCH] mfd: syscon: Add syscon_regmap_lookup_by_phandle_optional() function. | From | Matthias Brugger <> | Date | Fri, 6 Nov 2020 08:40:09 +0100 |
| |
On 27/10/2020 22:11, Enric Balletbo i Serra wrote: > This adds syscon_regmap_lookup_by_phandle_optional() function to get an > optional regmap. > > It behaves the same as syscon_regmap_lookup_by_phandle() except where > there is no regmap phandle. In this case, instead of returning -ENODEV, > the function returns NULL. This makes error checking simpler when the > regmap phandle is optional. > > Suggested-by: Nicolas Boichat <drinkcat@chromium.org> > Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com>
> --- > > drivers/mfd/syscon.c | 13 +++++++++++++ > include/linux/mfd/syscon.h | 11 +++++++++++ > 2 files changed, 24 insertions(+) > > diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c > index ca465794ea9c..60c5c2b194cc 100644 > --- a/drivers/mfd/syscon.c > +++ b/drivers/mfd/syscon.c > @@ -255,6 +255,19 @@ struct regmap *syscon_regmap_lookup_by_phandle_args(struct device_node *np, > } > EXPORT_SYMBOL_GPL(syscon_regmap_lookup_by_phandle_args); > > +struct regmap *syscon_regmap_lookup_by_phandle_optional(struct device_node *np, > + const char *property) > +{ > + struct regmap *regmap; > + > + regmap = syscon_regmap_lookup_by_phandle(np, property); > + if (IS_ERR(regmap) && PTR_ERR(regmap) == -ENODEV) > + return NULL; > + > + return regmap; > +} > +EXPORT_SYMBOL_GPL(syscon_regmap_lookup_by_phandle_optional); > + > static int syscon_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > diff --git a/include/linux/mfd/syscon.h b/include/linux/mfd/syscon.h > index 7f20e9b502a5..a1fe8aedced2 100644 > --- a/include/linux/mfd/syscon.h > +++ b/include/linux/mfd/syscon.h > @@ -28,6 +28,9 @@ extern struct regmap *syscon_regmap_lookup_by_phandle_args( > const char *property, > int arg_count, > unsigned int *out_args); > +extern struct regmap *syscon_regmap_lookup_by_phandle_optional( > + struct device_node *np, > + const char *property); > #else > static inline struct regmap *device_node_to_regmap(struct device_node *np) > { > @@ -59,6 +62,14 @@ static inline struct regmap *syscon_regmap_lookup_by_phandle_args( > { > return ERR_PTR(-ENOTSUPP); > } > + > +static inline struct regmap *syscon_regmap_lookup_by_phandle_optional( > + struct device_node *np, > + const char *property) > +{ > + return ERR_PTR(-ENOTSUPP); > +} > + > #endif > > #endif /* __LINUX_MFD_SYSCON_H__ */ >
| |