On Thu, Aug 29, 2019 at 01:08:35PM +0100, Andrew Murray wrote: > On Thu, Aug 29, 2019 at 01:46:03PM +0200, Thierry Reding wrote: > > If regulator_get_optional() returned NULL for absent optional supplies, > > this could be unified across all drivers. And it would allow treating > > NULL regulators special, if that's something you'd be willing to do. > > In either case, the number of abuses shows that people clearly don't > > understand how to use this. So there are two options: a) fix abuse every > > time we come across it or b) try to change the API to make it more > > difficult to abuse. > Sure. I think we end up with something like: > diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c > index e0c0cf462004..67e2a6d7abf6 100644 > --- a/drivers/regulator/core.c > +++ b/drivers/regulator/core.c > @@ -1868,6 +1868,9 @@ struct regulator *_regulator_get(struct device *dev, const char *id, > } > > switch (get_type) { > + case OPTIONAL_GET: > + return NULL; > + Implementing returning NULL is not hard. How returning NULL discourages people from using regulator_get_optional() when they shouldn't be using it in the first place is not clear to me.