From fb447217c59a13b2fff22d94de2498c185cd9032 Mon Sep 17 00:00:00 2001 From: Andy Shevchenko Date: Thu, 19 Feb 2026 15:15:32 +0100 Subject: hwmon: (ina233) Don't check for specific errors when parsing properties Instead of checking for the specific error codes (that can be considered a layering violation to some extent) check for the property existence first and then either parse it, or apply a default value. Signed-off-by: Andy Shevchenko Link: https://lore.kernel.org/r/20260219141532.2259642-1-andriy.shevchenko@linux.intel.com Signed-off-by: Guenter Roeck --- drivers/hwmon/pmbus/ina233.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'drivers') diff --git a/drivers/hwmon/pmbus/ina233.c b/drivers/hwmon/pmbus/ina233.c index 7aebd854763a6..652087589c55a 100644 --- a/drivers/hwmon/pmbus/ina233.c +++ b/drivers/hwmon/pmbus/ina233.c @@ -85,6 +85,7 @@ static int ina233_read_word_data(struct i2c_client *client, int page, static int ina233_probe(struct i2c_client *client) { struct device *dev = &client->dev; + const char *propname; int ret, m, R; u32 rshunt; u32 max_current; @@ -114,27 +115,28 @@ static int ina233_probe(struct i2c_client *client) /* If INA233 skips current/power, shunt-resistor and current-lsb aren't needed. */ /* read rshunt value (uOhm) */ - ret = device_property_read_u32(dev, "shunt-resistor", &rshunt); - if (ret) { - if (ret != -EINVAL) - return dev_err_probe(dev, ret, "Shunt resistor property read fail.\n"); + propname = "shunt-resistor"; + if (device_property_present(dev, propname)) { + ret = device_property_read_u32(dev, propname, &rshunt); + if (ret) + return dev_err_probe(dev, ret, "%s property read fail.\n", propname); + } else { rshunt = INA233_RSHUNT_DEFAULT; } if (!rshunt) - return dev_err_probe(dev, -EINVAL, - "Shunt resistor cannot be zero.\n"); + return dev_err_probe(dev, -EINVAL, "%s cannot be zero.\n", propname); /* read Maximum expected current value (uA) */ - ret = device_property_read_u32(dev, "ti,maximum-expected-current-microamp", &max_current); - if (ret) { - if (ret != -EINVAL) - return dev_err_probe(dev, ret, - "Maximum expected current property read fail.\n"); + propname = "ti,maximum-expected-current-microamp"; + if (device_property_present(dev, propname)) { + ret = device_property_read_u32(dev, propname, &max_current); + if (ret) + return dev_err_probe(dev, ret, "%s property read fail.\n", propname); + } else { max_current = INA233_MAX_CURRENT_DEFAULT; } if (max_current < 32768) - return dev_err_probe(dev, -EINVAL, - "Maximum expected current cannot less then 32768.\n"); + return dev_err_probe(dev, -EINVAL, "%s cannot be less than 32768.\n", propname); /* Calculate Current_LSB according to the spec formula */ current_lsb = max_current / 32768; -- cgit v1.2.3