drivers/hwmon/ina2xx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
From: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com>
S32G2/S32G3 based boards which integrate the ina231 sensor do not have a
dedicated voltage regulator.
Co-developed-by: Florin Buica <florin.buica@nxp.com>
Signed-off-by: Florin Buica <florin.buica@nxp.com>
Signed-off-by: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com>
---
drivers/hwmon/ina2xx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/hwmon/ina2xx.c b/drivers/hwmon/ina2xx.c
index 345fe7db9de9..ab4972f94a8c 100644
--- a/drivers/hwmon/ina2xx.c
+++ b/drivers/hwmon/ina2xx.c
@@ -959,8 +959,8 @@ static int ina2xx_probe(struct i2c_client *client)
return PTR_ERR(data->regmap);
}
- ret = devm_regulator_get_enable(dev, "vs");
- if (ret)
+ ret = devm_regulator_get_enable_optional(dev, "vs");
+ if (ret < 0 && ret != -ENODEV)
return dev_err_probe(dev, ret, "failed to enable vs regulator\n");
ret = ina2xx_init(dev, data);
--
2.45.2
On 4/3/25 03:15, Ciprian Costea wrote: > From: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com> > > S32G2/S32G3 based boards which integrate the ina231 sensor do not have a > dedicated voltage regulator. > > Co-developed-by: Florin Buica <florin.buica@nxp.com> > Signed-off-by: Florin Buica <florin.buica@nxp.com> > Signed-off-by: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com> > --- > drivers/hwmon/ina2xx.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/hwmon/ina2xx.c b/drivers/hwmon/ina2xx.c > index 345fe7db9de9..ab4972f94a8c 100644 > --- a/drivers/hwmon/ina2xx.c > +++ b/drivers/hwmon/ina2xx.c > @@ -959,8 +959,8 @@ static int ina2xx_probe(struct i2c_client *client) > return PTR_ERR(data->regmap); > } > > - ret = (dev, "vs"); > - if (ret) > + ret = devm_regulator_get_enable_optional(dev, "vs"); devm_regulator_get_enable() should provide a dummy regulator if there is no explicit regulator. Why does this not work ? > + if (ret < 0 && ret != -ENODEV) Why this added check ? I know it used to be necessary if regulator support is disabled, but that is no longer the case. Guenter > return dev_err_probe(dev, ret, "failed to enable vs regulator\n"); > > ret = ina2xx_init(dev, data);
On 4/3/2025 3:15 PM, Guenter Roeck wrote: > On 4/3/25 03:15, Ciprian Costea wrote: >> From: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com> >> >> S32G2/S32G3 based boards which integrate the ina231 sensor do not have a >> dedicated voltage regulator. >> >> Co-developed-by: Florin Buica <florin.buica@nxp.com> >> Signed-off-by: Florin Buica <florin.buica@nxp.com> >> Signed-off-by: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com> >> --- >> drivers/hwmon/ina2xx.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/hwmon/ina2xx.c b/drivers/hwmon/ina2xx.c >> index 345fe7db9de9..ab4972f94a8c 100644 >> --- a/drivers/hwmon/ina2xx.c >> +++ b/drivers/hwmon/ina2xx.c >> @@ -959,8 +959,8 @@ static int ina2xx_probe(struct i2c_client *client) >> return PTR_ERR(data->regmap); >> } >> - ret = (dev, "vs"); >> - if (ret) >> + ret = devm_regulator_get_enable_optional(dev, "vs"); > > devm_regulator_get_enable() should provide a dummy regulator if there is > no explicit regulator. Why does this not work ? > >> + if (ret < 0 && ret != -ENODEV) > > Why this added check ? > > I know it used to be necessary if regulator support is disabled, > but that is no longer the case. > > Guenter > Hello Guenter, I've just tested and devm_regulator_get_enable() does work as you've described, providing a dummy regulator. But, according to the 'ti,ina2xx' binding [1] I see that the `vs-supply` property is not required. Hence wouldn't it be correct for `vs-supply` to be optional ? Using 'devm_regulator_get_enable_optional()' [1] https://elixir.bootlin.com/linux/v6.13.7/source/Documentation/devicetree/bindings/hwmon/ti,ina2xx.yaml#L78-L80 Regards, Ciprian >> return dev_err_probe(dev, ret, "failed to enable vs >> regulator\n"); >> ret = ina2xx_init(dev, data); >
On Thu, Apr 03, 2025 at 05:29:26PM +0300, Ciprian Marian Costea wrote: > On 4/3/2025 3:15 PM, Guenter Roeck wrote: > > On 4/3/25 03:15, Ciprian Costea wrote: > > > From: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com> > > > > > > S32G2/S32G3 based boards which integrate the ina231 sensor do not have a > > > dedicated voltage regulator. > > > > > > Co-developed-by: Florin Buica <florin.buica@nxp.com> > > > Signed-off-by: Florin Buica <florin.buica@nxp.com> > > > Signed-off-by: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com> > > > --- > > > drivers/hwmon/ina2xx.c | 4 ++-- > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > diff --git a/drivers/hwmon/ina2xx.c b/drivers/hwmon/ina2xx.c > > > index 345fe7db9de9..ab4972f94a8c 100644 > > > --- a/drivers/hwmon/ina2xx.c > > > +++ b/drivers/hwmon/ina2xx.c > > > @@ -959,8 +959,8 @@ static int ina2xx_probe(struct i2c_client *client) > > > return PTR_ERR(data->regmap); > > > } > > > - ret = (dev, "vs"); > > > - if (ret) > > > + ret = devm_regulator_get_enable_optional(dev, "vs"); > > > > devm_regulator_get_enable() should provide a dummy regulator if there is > > no explicit regulator. Why does this not work ? > > > > > + if (ret < 0 && ret != -ENODEV) > > > > Why this added check ? > > > > I know it used to be necessary if regulator support is disabled, > > but that is no longer the case. > > > > Guenter > > > > Hello Guenter, > > I've just tested and devm_regulator_get_enable() does work as you've > described, providing a dummy regulator. > > But, according to the 'ti,ina2xx' binding [1] I see that the `vs-supply` > property is not required. Hence wouldn't it be correct for `vs-supply` to be > optional ? Using 'devm_regulator_get_enable_optional()' > Yes, but the reasoning you provided is different and suggested that the current code would not work. Since that is not the case, the change would be purely cosmetic. Also, I still don't see why the -ENODEV check would be necessary. Guenter
On 4/3/2025 7:06 PM, Guenter Roeck wrote: > On Thu, Apr 03, 2025 at 05:29:26PM +0300, Ciprian Marian Costea wrote: >> On 4/3/2025 3:15 PM, Guenter Roeck wrote: >>> On 4/3/25 03:15, Ciprian Costea wrote: >>>> From: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com> >>>> >>>> S32G2/S32G3 based boards which integrate the ina231 sensor do not have a >>>> dedicated voltage regulator. >>>> >>>> Co-developed-by: Florin Buica <florin.buica@nxp.com> >>>> Signed-off-by: Florin Buica <florin.buica@nxp.com> >>>> Signed-off-by: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com> >>>> --- >>>> drivers/hwmon/ina2xx.c | 4 ++-- >>>> 1 file changed, 2 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/drivers/hwmon/ina2xx.c b/drivers/hwmon/ina2xx.c >>>> index 345fe7db9de9..ab4972f94a8c 100644 >>>> --- a/drivers/hwmon/ina2xx.c >>>> +++ b/drivers/hwmon/ina2xx.c >>>> @@ -959,8 +959,8 @@ static int ina2xx_probe(struct i2c_client *client) >>>> return PTR_ERR(data->regmap); >>>> } >>>> - ret = (dev, "vs"); >>>> - if (ret) >>>> + ret = devm_regulator_get_enable_optional(dev, "vs"); >>> >>> devm_regulator_get_enable() should provide a dummy regulator if there is >>> no explicit regulator. Why does this not work ? >>> >>>> + if (ret < 0 && ret != -ENODEV) >>> >>> Why this added check ? >>> >>> I know it used to be necessary if regulator support is disabled, >>> but that is no longer the case. >>> >>> Guenter >>> >> >> Hello Guenter, >> >> I've just tested and devm_regulator_get_enable() does work as you've >> described, providing a dummy regulator. >> >> But, according to the 'ti,ina2xx' binding [1] I see that the `vs-supply` >> property is not required. Hence wouldn't it be correct for `vs-supply` to be >> optional ? Using 'devm_regulator_get_enable_optional()' >> > Yes, but the reasoning you provided is different and suggested that the > current code would not work. Since that is not the case, the change would > be purely cosmetic. Also, I still don't see why the -ENODEV check would be > necessary. > > Guenter For boards such as S32G274A-EVB, S32G274A-RDB2 and S32G399A-RDB3 which do not have a voltage regulator, 'devm_regulator_get_enable_optional()' would return error value -19 (-ENODEV). Also, other usages from the Linux Kernel seem to perform the same error check when using 'devm_regulator_get_enable_optional()' [1], [2] and [3]. This patch would help in S32G2 and S32G3 to not print an unnecessary kernel log warning hinting usage of a dummy regulator when such a regulator is not required according to the binding. Would you like me to send a V2 with the commit title updated as follows ? " hwmon: (ina2xx) make regulator 'vs' support optional According to the 'ti,ina2xx' binding, the 'vs-supply' property is optional. Furthermore, S32G2/S32G3 based boards which integrate the ina231 sensor do not have a dedicated voltage regulator. Thus, making regulator support optional would help in avoiding any unnecessary kernel log warnings during boot. " [1] https://elixir.bootlin.com/linux/v6.13.7/source/drivers/iio/adc/ad7625.c#L524-L525 [2] https://elixir.bootlin.com/linux/v6.13.7/source/drivers/pci/controller/pcie-rcar-host.c#L982-L983 [3] https://elixir.bootlin.com/linux/v6.13.7/source/drivers/iio/adc/ad7944.c#L514-L515 Regards, Ciprian
© 2016 - 2025 Red Hat, Inc.