Commit a00838ca authored by Nuno Sa's avatar Nuno Sa Committed by Jonathan Cameron

iio: temperature: ltc2983: convert to dev_err_probe()

Use dev_err_probe() (and variants) in the probe() path. While at it, made
some simple improvements:
 * Explicitly included the err.h and errno.h headers;
 * Removed some unnecessary line breaks;
 * Removed a redundant 'else';
 * Added some missing \n to prink.
Signed-off-by: default avatarNuno Sa <nuno.sa@analog.com>
Link: https://patch.msgid.link/20240606-dev-add_dev_errp_probe-v3-2-51bb229edd79@analog.comSigned-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent dbbe7eaf
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
#include <linux/bitfield.h> #include <linux/bitfield.h>
#include <linux/completion.h> #include <linux/completion.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/err.h>
#include <linux/errno.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/iio/iio.h> #include <linux/iio/iio.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
...@@ -432,10 +434,9 @@ __ltc2983_custom_sensor_new(struct ltc2983_data *st, const struct fwnode_handle ...@@ -432,10 +434,9 @@ __ltc2983_custom_sensor_new(struct ltc2983_data *st, const struct fwnode_handle
else else
n_entries = fwnode_property_count_u64(fn, propname); n_entries = fwnode_property_count_u64(fn, propname);
/* n_entries must be an even number */ /* n_entries must be an even number */
if (!n_entries || (n_entries % 2) != 0) { if (!n_entries || (n_entries % 2) != 0)
dev_err(dev, "Number of entries either 0 or not even\n"); return dev_err_ptr_probe(dev, -EINVAL,
return ERR_PTR(-EINVAL); "Number of entries either 0 or not even\n");
}
new_custom = devm_kzalloc(dev, sizeof(*new_custom), GFP_KERNEL); new_custom = devm_kzalloc(dev, sizeof(*new_custom), GFP_KERNEL);
if (!new_custom) if (!new_custom)
...@@ -443,19 +444,17 @@ __ltc2983_custom_sensor_new(struct ltc2983_data *st, const struct fwnode_handle ...@@ -443,19 +444,17 @@ __ltc2983_custom_sensor_new(struct ltc2983_data *st, const struct fwnode_handle
new_custom->size = n_entries * n_size; new_custom->size = n_entries * n_size;
/* check Steinhart size */ /* check Steinhart size */
if (is_steinhart && new_custom->size != LTC2983_CUSTOM_STEINHART_SIZE) { if (is_steinhart && new_custom->size != LTC2983_CUSTOM_STEINHART_SIZE)
dev_err(dev, "Steinhart sensors size(%zu) must be %u\n", new_custom->size, return dev_err_ptr_probe(dev, -EINVAL,
LTC2983_CUSTOM_STEINHART_SIZE); "Steinhart sensors size(%zu) must be %u\n",
return ERR_PTR(-EINVAL); new_custom->size, LTC2983_CUSTOM_STEINHART_SIZE);
}
/* Check space on the table. */ /* Check space on the table. */
if (st->custom_table_size + new_custom->size > if (st->custom_table_size + new_custom->size >
(LTC2983_CUST_SENS_TBL_END_REG - (LTC2983_CUST_SENS_TBL_END_REG - LTC2983_CUST_SENS_TBL_START_REG) + 1)
LTC2983_CUST_SENS_TBL_START_REG) + 1) { return dev_err_ptr_probe(dev, -EINVAL,
dev_err(dev, "No space left(%d) for new custom sensor(%zu)", "No space left(%d) for new custom sensor(%zu)\n",
st->custom_table_size, new_custom->size); st->custom_table_size, new_custom->size);
return ERR_PTR(-EINVAL);
}
/* allocate the table */ /* allocate the table */
if (is_steinhart) if (is_steinhart)
...@@ -688,21 +687,19 @@ ltc2983_thermocouple_new(const struct fwnode_handle *child, struct ltc2983_data ...@@ -688,21 +687,19 @@ ltc2983_thermocouple_new(const struct fwnode_handle *child, struct ltc2983_data
LTC2983_THERMOCOUPLE_OC_CURR(3); LTC2983_THERMOCOUPLE_OC_CURR(3);
break; break;
default: default:
dev_err(&st->spi->dev, return dev_err_ptr_probe(&st->spi->dev, -EINVAL,
"Invalid open circuit current:%u", oc_current); "Invalid open circuit current:%u\n",
return ERR_PTR(-EINVAL); oc_current);
} }
thermo->sensor_config |= LTC2983_THERMOCOUPLE_OC_CHECK(1); thermo->sensor_config |= LTC2983_THERMOCOUPLE_OC_CHECK(1);
} }
/* validate channel index */ /* validate channel index */
if (!(thermo->sensor_config & LTC2983_THERMOCOUPLE_DIFF_MASK) && if (!(thermo->sensor_config & LTC2983_THERMOCOUPLE_DIFF_MASK) &&
sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN)
dev_err(&st->spi->dev, return dev_err_ptr_probe(&st->spi->dev, -EINVAL,
"Invalid chann:%d for differential thermocouple", "Invalid chann:%d for differential thermocouple\n",
sensor->chan); sensor->chan);
return ERR_PTR(-EINVAL);
}
struct fwnode_handle *ref __free(fwnode_handle) = struct fwnode_handle *ref __free(fwnode_handle) =
fwnode_find_reference(child, "adi,cold-junction-handle", 0); fwnode_find_reference(child, "adi,cold-junction-handle", 0);
...@@ -710,14 +707,13 @@ ltc2983_thermocouple_new(const struct fwnode_handle *child, struct ltc2983_data ...@@ -710,14 +707,13 @@ ltc2983_thermocouple_new(const struct fwnode_handle *child, struct ltc2983_data
ref = NULL; ref = NULL;
} else { } else {
ret = fwnode_property_read_u32(ref, "reg", &thermo->cold_junction_chan); ret = fwnode_property_read_u32(ref, "reg", &thermo->cold_junction_chan);
if (ret) { if (ret)
/* /*
* This would be catched later but we can just return * This would be catched later but we can just return
* the error right away. * the error right away.
*/ */
dev_err(&st->spi->dev, "Property reg must be given\n"); return dev_err_ptr_probe(&st->spi->dev, ret,
return ERR_PTR(ret); "Property reg must be given\n");
}
} }
/* check custom sensor */ /* check custom sensor */
...@@ -753,16 +749,14 @@ ltc2983_rtd_new(const struct fwnode_handle *child, struct ltc2983_data *st, ...@@ -753,16 +749,14 @@ ltc2983_rtd_new(const struct fwnode_handle *child, struct ltc2983_data *st,
struct fwnode_handle *ref __free(fwnode_handle) = struct fwnode_handle *ref __free(fwnode_handle) =
fwnode_find_reference(child, "adi,rsense-handle", 0); fwnode_find_reference(child, "adi,rsense-handle", 0);
if (IS_ERR(ref)) { if (IS_ERR(ref))
dev_err(dev, "Property adi,rsense-handle missing or invalid"); return dev_err_cast_probe(dev, ref,
return ERR_CAST(ref); "Property adi,rsense-handle missing or invalid\n");
}
ret = fwnode_property_read_u32(ref, "reg", &rtd->r_sense_chan); ret = fwnode_property_read_u32(ref, "reg", &rtd->r_sense_chan);
if (ret) { if (ret)
dev_err(dev, "Property reg must be given\n"); return dev_err_ptr_probe(dev, ret,
return ERR_PTR(ret); "Property reg must be given\n");
}
ret = fwnode_property_read_u32(child, "adi,number-of-wires", &n_wires); ret = fwnode_property_read_u32(child, "adi,number-of-wires", &n_wires);
if (!ret) { if (!ret) {
...@@ -781,19 +775,19 @@ ltc2983_rtd_new(const struct fwnode_handle *child, struct ltc2983_data *st, ...@@ -781,19 +775,19 @@ ltc2983_rtd_new(const struct fwnode_handle *child, struct ltc2983_data *st,
rtd->sensor_config = LTC2983_RTD_N_WIRES(3); rtd->sensor_config = LTC2983_RTD_N_WIRES(3);
break; break;
default: default:
dev_err(dev, "Invalid number of wires:%u\n", n_wires); return dev_err_ptr_probe(dev, -EINVAL,
return ERR_PTR(-EINVAL); "Invalid number of wires:%u\n",
n_wires);
} }
} }
if (fwnode_property_read_bool(child, "adi,rsense-share")) { if (fwnode_property_read_bool(child, "adi,rsense-share")) {
/* Current rotation is only available with rsense sharing */ /* Current rotation is only available with rsense sharing */
if (fwnode_property_read_bool(child, "adi,current-rotate")) { if (fwnode_property_read_bool(child, "adi,current-rotate")) {
if (n_wires == 2 || n_wires == 3) { if (n_wires == 2 || n_wires == 3)
dev_err(dev, return dev_err_ptr_probe(dev, -EINVAL,
"Rotation not allowed for 2/3 Wire RTDs"); "Rotation not allowed for 2/3 Wire RTDs\n");
return ERR_PTR(-EINVAL);
}
rtd->sensor_config |= LTC2983_RTD_C_ROTATE(1); rtd->sensor_config |= LTC2983_RTD_C_ROTATE(1);
} else { } else {
rtd->sensor_config |= LTC2983_RTD_R_SHARE(1); rtd->sensor_config |= LTC2983_RTD_R_SHARE(1);
...@@ -816,29 +810,22 @@ ltc2983_rtd_new(const struct fwnode_handle *child, struct ltc2983_data *st, ...@@ -816,29 +810,22 @@ ltc2983_rtd_new(const struct fwnode_handle *child, struct ltc2983_data *st,
if (((rtd->sensor_config & LTC2983_RTD_KELVIN_R_SENSE_MASK) if (((rtd->sensor_config & LTC2983_RTD_KELVIN_R_SENSE_MASK)
== LTC2983_RTD_KELVIN_R_SENSE_MASK) && == LTC2983_RTD_KELVIN_R_SENSE_MASK) &&
(rtd->r_sense_chan <= min)) { (rtd->r_sense_chan <= min))
/* kelvin rsense*/ /* kelvin rsense*/
dev_err(dev, return dev_err_ptr_probe(dev, -EINVAL,
"Invalid rsense chann:%d to use in kelvin rsense", "Invalid rsense chann:%d to use in kelvin rsense\n",
rtd->r_sense_chan); rtd->r_sense_chan);
return ERR_PTR(-EINVAL); if (sensor->chan < min || sensor->chan > max)
} return dev_err_ptr_probe(dev, -EINVAL,
"Invalid chann:%d for the rtd config\n",
if (sensor->chan < min || sensor->chan > max) { sensor->chan);
dev_err(dev, "Invalid chann:%d for the rtd config",
sensor->chan);
return ERR_PTR(-EINVAL);
}
} else { } else {
/* same as differential case */ /* same as differential case */
if (sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { if (sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN)
dev_err(&st->spi->dev, return dev_err_ptr_probe(&st->spi->dev, -EINVAL,
"Invalid chann:%d for RTD", sensor->chan); "Invalid chann:%d for RTD\n",
sensor->chan);
return ERR_PTR(-EINVAL);
}
} }
/* check custom sensor */ /* check custom sensor */
...@@ -886,10 +873,9 @@ ltc2983_rtd_new(const struct fwnode_handle *child, struct ltc2983_data *st, ...@@ -886,10 +873,9 @@ ltc2983_rtd_new(const struct fwnode_handle *child, struct ltc2983_data *st,
rtd->excitation_current = 0x08; rtd->excitation_current = 0x08;
break; break;
default: default:
dev_err(&st->spi->dev, return dev_err_ptr_probe(&st->spi->dev, -EINVAL,
"Invalid value for excitation current(%u)", "Invalid value for excitation current(%u)\n",
excitation_current); excitation_current);
return ERR_PTR(-EINVAL);
} }
} }
...@@ -913,16 +899,14 @@ ltc2983_thermistor_new(const struct fwnode_handle *child, struct ltc2983_data *s ...@@ -913,16 +899,14 @@ ltc2983_thermistor_new(const struct fwnode_handle *child, struct ltc2983_data *s
struct fwnode_handle *ref __free(fwnode_handle) = struct fwnode_handle *ref __free(fwnode_handle) =
fwnode_find_reference(child, "adi,rsense-handle", 0); fwnode_find_reference(child, "adi,rsense-handle", 0);
if (IS_ERR(ref)) { if (IS_ERR(ref))
dev_err(dev, "Property adi,rsense-handle missing or invalid"); return dev_err_cast_probe(dev, ref,
return ERR_CAST(ref); "Property adi,rsense-handle missing or invalid\n");
}
ret = fwnode_property_read_u32(ref, "reg", &thermistor->r_sense_chan); ret = fwnode_property_read_u32(ref, "reg", &thermistor->r_sense_chan);
if (ret) { if (ret)
dev_err(dev, "rsense channel must be configured...\n"); return dev_err_ptr_probe(dev, ret,
return ERR_PTR(ret); "rsense channel must be configured...\n");
}
if (fwnode_property_read_bool(child, "adi,single-ended")) { if (fwnode_property_read_bool(child, "adi,single-ended")) {
thermistor->sensor_config = LTC2983_THERMISTOR_SGL(1); thermistor->sensor_config = LTC2983_THERMISTOR_SGL(1);
...@@ -937,12 +921,10 @@ ltc2983_thermistor_new(const struct fwnode_handle *child, struct ltc2983_data *s ...@@ -937,12 +921,10 @@ ltc2983_thermistor_new(const struct fwnode_handle *child, struct ltc2983_data *s
} }
/* validate channel index */ /* validate channel index */
if (!(thermistor->sensor_config & LTC2983_THERMISTOR_DIFF_MASK) && if (!(thermistor->sensor_config & LTC2983_THERMISTOR_DIFF_MASK) &&
sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN)
dev_err(&st->spi->dev, return dev_err_ptr_probe(&st->spi->dev, -EINVAL,
"Invalid chann:%d for differential thermistor", "Invalid chann:%d for differential thermistor\n",
sensor->chan); sensor->chan);
return ERR_PTR(-EINVAL);
}
/* check custom sensor */ /* check custom sensor */
if (sensor->type >= LTC2983_SENSOR_THERMISTOR_STEINHART) { if (sensor->type >= LTC2983_SENSOR_THERMISTOR_STEINHART) {
...@@ -981,12 +963,10 @@ ltc2983_thermistor_new(const struct fwnode_handle *child, struct ltc2983_data *s ...@@ -981,12 +963,10 @@ ltc2983_thermistor_new(const struct fwnode_handle *child, struct ltc2983_data *s
switch (excitation_current) { switch (excitation_current) {
case 0: case 0:
/* auto range */ /* auto range */
if (sensor->type >= if (sensor->type >= LTC2983_SENSOR_THERMISTOR_STEINHART)
LTC2983_SENSOR_THERMISTOR_STEINHART) { return dev_err_ptr_probe(&st->spi->dev, -EINVAL,
dev_err(&st->spi->dev, "Auto Range not allowed for custom sensors\n");
"Auto Range not allowed for custom sensors\n");
return ERR_PTR(-EINVAL);
}
thermistor->excitation_current = 0x0c; thermistor->excitation_current = 0x0c;
break; break;
case 250: case 250:
...@@ -1023,10 +1003,9 @@ ltc2983_thermistor_new(const struct fwnode_handle *child, struct ltc2983_data *s ...@@ -1023,10 +1003,9 @@ ltc2983_thermistor_new(const struct fwnode_handle *child, struct ltc2983_data *s
thermistor->excitation_current = 0x0b; thermistor->excitation_current = 0x0b;
break; break;
default: default:
dev_err(&st->spi->dev, return dev_err_ptr_probe(&st->spi->dev, -EINVAL,
"Invalid value for excitation current(%u)", "Invalid value for excitation current(%u)\n",
excitation_current); excitation_current);
return ERR_PTR(-EINVAL);
} }
} }
...@@ -1056,12 +1035,11 @@ ltc2983_diode_new(const struct fwnode_handle *child, const struct ltc2983_data * ...@@ -1056,12 +1035,11 @@ ltc2983_diode_new(const struct fwnode_handle *child, const struct ltc2983_data *
/* validate channel index */ /* validate channel index */
if (!(diode->sensor_config & LTC2983_DIODE_DIFF_MASK) && if (!(diode->sensor_config & LTC2983_DIODE_DIFF_MASK) &&
sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN)
dev_err(&st->spi->dev, return dev_err_ptr_probe(&st->spi->dev, -EINVAL,
"Invalid chann:%d for differential thermistor", "Invalid chann:%d for differential thermistor\n",
sensor->chan); sensor->chan);
return ERR_PTR(-EINVAL);
}
/* set common parameters */ /* set common parameters */
diode->sensor.fault_handler = ltc2983_common_fault_handler; diode->sensor.fault_handler = ltc2983_common_fault_handler;
diode->sensor.assign_chan = ltc2983_diode_assign_chan; diode->sensor.assign_chan = ltc2983_diode_assign_chan;
...@@ -1083,10 +1061,9 @@ ltc2983_diode_new(const struct fwnode_handle *child, const struct ltc2983_data * ...@@ -1083,10 +1061,9 @@ ltc2983_diode_new(const struct fwnode_handle *child, const struct ltc2983_data *
diode->excitation_current = 0x03; diode->excitation_current = 0x03;
break; break;
default: default:
dev_err(&st->spi->dev, return dev_err_ptr_probe(&st->spi->dev, -EINVAL,
"Invalid value for excitation current(%u)", "Invalid value for excitation current(%u)\n",
excitation_current); excitation_current);
return ERR_PTR(-EINVAL);
} }
} }
...@@ -1111,17 +1088,15 @@ static struct ltc2983_sensor *ltc2983_r_sense_new(struct fwnode_handle *child, ...@@ -1111,17 +1088,15 @@ static struct ltc2983_sensor *ltc2983_r_sense_new(struct fwnode_handle *child,
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
/* validate channel index */ /* validate channel index */
if (sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { if (sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN)
dev_err(&st->spi->dev, "Invalid chann:%d for r_sense", return dev_err_ptr_probe(&st->spi->dev, -EINVAL,
sensor->chan); "Invalid chann:%d for r_sense\n",
return ERR_PTR(-EINVAL); sensor->chan);
}
ret = fwnode_property_read_u32(child, "adi,rsense-val-milli-ohms", &temp); ret = fwnode_property_read_u32(child, "adi,rsense-val-milli-ohms", &temp);
if (ret) { if (ret)
dev_err(&st->spi->dev, "Property adi,rsense-val-milli-ohms missing\n"); return dev_err_ptr_probe(&st->spi->dev, -EINVAL,
return ERR_PTR(-EINVAL); "Property adi,rsense-val-milli-ohms missing\n");
}
/* /*
* Times 1000 because we have milli-ohms and __convert_to_raw * Times 1000 because we have milli-ohms and __convert_to_raw
* expects scales of 1000000 which are used for all other * expects scales of 1000000 which are used for all other
...@@ -1149,12 +1124,11 @@ static struct ltc2983_sensor *ltc2983_adc_new(struct fwnode_handle *child, ...@@ -1149,12 +1124,11 @@ static struct ltc2983_sensor *ltc2983_adc_new(struct fwnode_handle *child,
if (fwnode_property_read_bool(child, "adi,single-ended")) if (fwnode_property_read_bool(child, "adi,single-ended"))
adc->single_ended = true; adc->single_ended = true;
if (!adc->single_ended && if (!adc->single_ended && sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN)
sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { return dev_err_ptr_probe(&st->spi->dev, -EINVAL,
dev_err(&st->spi->dev, "Invalid chan:%d for differential adc\n", "Invalid chan:%d for differential adc\n",
sensor->chan); sensor->chan);
return ERR_PTR(-EINVAL);
}
/* set common parameters */ /* set common parameters */
adc->sensor.assign_chan = ltc2983_adc_assign_chan; adc->sensor.assign_chan = ltc2983_adc_assign_chan;
adc->sensor.fault_handler = ltc2983_common_fault_handler; adc->sensor.fault_handler = ltc2983_common_fault_handler;
...@@ -1175,12 +1149,10 @@ static struct ltc2983_sensor *ltc2983_temp_new(struct fwnode_handle *child, ...@@ -1175,12 +1149,10 @@ static struct ltc2983_sensor *ltc2983_temp_new(struct fwnode_handle *child,
if (fwnode_property_read_bool(child, "adi,single-ended")) if (fwnode_property_read_bool(child, "adi,single-ended"))
temp->single_ended = true; temp->single_ended = true;
if (!temp->single_ended && if (!temp->single_ended && sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN)
sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { return dev_err_ptr_probe(&st->spi->dev, -EINVAL,
dev_err(&st->spi->dev, "Invalid chan:%d for differential temp\n", "Invalid chan:%d for differential temp\n",
sensor->chan); sensor->chan);
return ERR_PTR(-EINVAL);
}
temp->custom = __ltc2983_custom_sensor_new(st, child, "adi,custom-temp", temp->custom = __ltc2983_custom_sensor_new(st, child, "adi,custom-temp",
false, 4096, true); false, 4096, true);
...@@ -1296,8 +1268,8 @@ static int ltc2983_reg_access(struct iio_dev *indio_dev, ...@@ -1296,8 +1268,8 @@ static int ltc2983_reg_access(struct iio_dev *indio_dev,
if (readval) if (readval)
return regmap_read(st->regmap, reg, readval); return regmap_read(st->regmap, reg, readval);
else
return regmap_write(st->regmap, reg, writeval); return regmap_write(st->regmap, reg, writeval);
} }
static irqreturn_t ltc2983_irq_handler(int irq, void *data) static irqreturn_t ltc2983_irq_handler(int irq, void *data)
...@@ -1330,10 +1302,9 @@ static int ltc2983_parse_fw(struct ltc2983_data *st) ...@@ -1330,10 +1302,9 @@ static int ltc2983_parse_fw(struct ltc2983_data *st)
device_property_read_u32(dev, "adi,filter-notch-freq", &st->filter_notch_freq); device_property_read_u32(dev, "adi,filter-notch-freq", &st->filter_notch_freq);
st->num_channels = device_get_child_node_count(dev); st->num_channels = device_get_child_node_count(dev);
if (!st->num_channels) { if (!st->num_channels)
dev_err(&st->spi->dev, "At least one channel must be given!"); return dev_err_probe(&st->spi->dev, -EINVAL,
return -EINVAL; "At least one channel must be given!\n");
}
st->sensors = devm_kcalloc(dev, st->num_channels, sizeof(*st->sensors), st->sensors = devm_kcalloc(dev, st->num_channels, sizeof(*st->sensors),
GFP_KERNEL); GFP_KERNEL);
...@@ -1438,19 +1409,17 @@ static int ltc2983_eeprom_cmd(struct ltc2983_data *st, unsigned int cmd, ...@@ -1438,19 +1409,17 @@ static int ltc2983_eeprom_cmd(struct ltc2983_data *st, unsigned int cmd,
time = wait_for_completion_timeout(&st->completion, time = wait_for_completion_timeout(&st->completion,
msecs_to_jiffies(wait_time)); msecs_to_jiffies(wait_time));
if (!time) { if (!time)
dev_err(&st->spi->dev, "EEPROM command timed out\n"); return dev_err_probe(&st->spi->dev, -ETIMEDOUT,
return -ETIMEDOUT; "EEPROM command timed out\n");
}
ret = regmap_read(st->regmap, status_reg, &val); ret = regmap_read(st->regmap, status_reg, &val);
if (ret) if (ret)
return ret; return ret;
if (val & status_fail_mask) { if (val & status_fail_mask)
dev_err(&st->spi->dev, "EEPROM command failed: 0x%02X\n", val); return dev_err_probe(&st->spi->dev, -EINVAL,
return -EINVAL; "EEPROM command failed: 0x%02X\n", val);
}
return 0; return 0;
} }
...@@ -1464,10 +1433,9 @@ static int ltc2983_setup(struct ltc2983_data *st, bool assign_iio) ...@@ -1464,10 +1433,9 @@ static int ltc2983_setup(struct ltc2983_data *st, bool assign_iio)
ret = regmap_read_poll_timeout(st->regmap, LTC2983_STATUS_REG, status, ret = regmap_read_poll_timeout(st->regmap, LTC2983_STATUS_REG, status,
LTC2983_STATUS_UP(status) == 1, 25000, LTC2983_STATUS_UP(status) == 1, 25000,
25000 * 10); 25000 * 10);
if (ret) { if (ret)
dev_err(&st->spi->dev, "Device startup timed out\n"); return dev_err_probe(&st->spi->dev, ret,
return ret; "Device startup timed out\n");
}
ret = regmap_update_bits(st->regmap, LTC2983_GLOBAL_CONFIG_REG, ret = regmap_update_bits(st->regmap, LTC2983_GLOBAL_CONFIG_REG,
LTC2983_NOTCH_FREQ_MASK, LTC2983_NOTCH_FREQ_MASK,
...@@ -1583,10 +1551,9 @@ static int ltc2983_probe(struct spi_device *spi) ...@@ -1583,10 +1551,9 @@ static int ltc2983_probe(struct spi_device *spi)
return -ENODEV; return -ENODEV;
st->regmap = devm_regmap_init_spi(spi, &ltc2983_regmap_config); st->regmap = devm_regmap_init_spi(spi, &ltc2983_regmap_config);
if (IS_ERR(st->regmap)) { if (IS_ERR(st->regmap))
dev_err(&spi->dev, "Failed to initialize regmap\n"); return dev_err_probe(&spi->dev, PTR_ERR(st->regmap),
return PTR_ERR(st->regmap); "Failed to initialize regmap\n");
}
mutex_init(&st->lock); mutex_init(&st->lock);
init_completion(&st->completion); init_completion(&st->completion);
...@@ -1624,10 +1591,9 @@ static int ltc2983_probe(struct spi_device *spi) ...@@ -1624,10 +1591,9 @@ static int ltc2983_probe(struct spi_device *spi)
ret = devm_request_irq(&spi->dev, spi->irq, ltc2983_irq_handler, ret = devm_request_irq(&spi->dev, spi->irq, ltc2983_irq_handler,
IRQF_TRIGGER_RISING, st->info->name, st); IRQF_TRIGGER_RISING, st->info->name, st);
if (ret) { if (ret)
dev_err(&spi->dev, "failed to request an irq, %d", ret); return dev_err_probe(&spi->dev, ret,
return ret; "failed to request an irq\n");
}
if (st->info->has_eeprom) { if (st->info->has_eeprom) {
ret = ltc2983_eeprom_cmd(st, LTC2983_EEPROM_WRITE_CMD, ret = ltc2983_eeprom_cmd(st, LTC2983_EEPROM_WRITE_CMD,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment