* [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers
@ 2026-02-23 13:13 Antoniu Miclaus
2026-02-23 13:13 ` [PATCH v2 01/12] iio: frequency: adrf6780: introduce struct device variable Antoniu Miclaus
` (12 more replies)
0 siblings, 13 replies; 16+ messages in thread
From: Antoniu Miclaus @ 2026-02-23 13:13 UTC (permalink / raw)
To: Lars-Peter Clausen, Michael Hennerich, Antoniu Miclaus,
Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
linux-iio, linux-kernel
Use dev_err_probe() consistently in the probe path of several ADI IIO
drivers. This simplifies error handling and ensures proper logging of
deferred probes.
Each driver is updated in two patches: first introducing a local
struct device variable to simplify repeated &spi->dev / &client->dev
references, then converting error paths to use dev_err_probe().
Drivers updated:
- adrf6780
- admv1014
- admv1013
- adf4377
- ad7293
- admv8818
Changes in v2:
- Split each driver update into two patches: one precursor for introducing the
struct device variable, and one for the dev_err_probe() conversion.(as
Jonathan Cameron suggested).
- Dropped ade9000 patch (already accepted).
Antoniu Miclaus (12):
iio: frequency: adrf6780: introduce struct device variable
iio: frequency: adrf6780: use dev_err_probe in probe path
iio: frequency: admv1014: introduce struct device variable
iio: frequency: admv1014: use dev_err_probe in probe path
iio: frequency: admv1013: introduce struct device variable
iio: frequency: admv1013: use dev_err_probe in probe path
iio: frequency: adf4377: introduce struct device variable
iio: frequency: adf4377: use dev_err_probe in probe path
iio: dac: ad7293: introduce struct device variable
iio: dac: ad7293: use dev_err_probe in probe path
iio: filter: admv8818: introduce struct device variable
iio: filter: admv8818: use dev_err_probe in probe path
drivers/iio/dac/ad7293.c | 32 +++++------
drivers/iio/filter/admv8818.c | 61 ++++++++++-----------
drivers/iio/frequency/adf4377.c | 57 +++++++++----------
drivers/iio/frequency/admv1013.c | 51 ++++++++---------
drivers/iio/frequency/admv1014.c | 94 +++++++++++++++-----------------
drivers/iio/frequency/adrf6780.c | 60 ++++++++++----------
6 files changed, 168 insertions(+), 187 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v2 01/12] iio: frequency: adrf6780: introduce struct device variable
2026-02-23 13:13 [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Antoniu Miclaus
@ 2026-02-23 13:13 ` Antoniu Miclaus
2026-02-23 13:13 ` [PATCH v2 02/12] iio: frequency: adrf6780: use dev_err_probe in probe path Antoniu Miclaus
` (11 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Antoniu Miclaus @ 2026-02-23 13:13 UTC (permalink / raw)
To: Antoniu Miclaus, Lars-Peter Clausen, Michael Hennerich,
Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
linux-iio, linux-kernel
Add struct device *dev local variable to simplify repeated &spi->dev
dereferences. Where spi is no longer needed beyond &spi->dev, replace
struct spi_device *spi with struct device *dev = &st->spi->dev.
No functional change.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
drivers/iio/frequency/adrf6780.c | 45 ++++++++++++++++----------------
1 file changed, 23 insertions(+), 22 deletions(-)
diff --git a/drivers/iio/frequency/adrf6780.c b/drivers/iio/frequency/adrf6780.c
index a7a21f929970..918a7a511d09 100644
--- a/drivers/iio/frequency/adrf6780.c
+++ b/drivers/iio/frequency/adrf6780.c
@@ -346,13 +346,13 @@ static const struct iio_chan_spec adrf6780_channels[] = {
static int adrf6780_reset(struct adrf6780_state *st)
{
int ret;
- struct spi_device *spi = st->spi;
+ struct device *dev = &st->spi->dev;
ret = __adrf6780_spi_update_bits(st, ADRF6780_REG_CONTROL,
ADRF6780_SOFT_RESET_MSK,
FIELD_PREP(ADRF6780_SOFT_RESET_MSK, 1));
if (ret) {
- dev_err(&spi->dev, "ADRF6780 SPI software reset failed.\n");
+ dev_err(dev, "ADRF6780 SPI software reset failed.\n");
return ret;
}
@@ -360,7 +360,7 @@ static int adrf6780_reset(struct adrf6780_state *st)
ADRF6780_SOFT_RESET_MSK,
FIELD_PREP(ADRF6780_SOFT_RESET_MSK, 0));
if (ret) {
- dev_err(&spi->dev, "ADRF6780 SPI software reset disable failed.\n");
+ dev_err(dev, "ADRF6780 SPI software reset disable failed.\n");
return ret;
}
@@ -371,7 +371,7 @@ static int adrf6780_init(struct adrf6780_state *st)
{
int ret;
unsigned int chip_id, enable_reg, enable_reg_msk;
- struct spi_device *spi = st->spi;
+ struct device *dev = &st->spi->dev;
/* Perform a software reset */
ret = adrf6780_reset(st);
@@ -384,7 +384,7 @@ static int adrf6780_init(struct adrf6780_state *st)
chip_id = FIELD_GET(ADRF6780_CHIP_ID_MSK, chip_id);
if (chip_id != ADRF6780_CHIP_ID) {
- dev_err(&spi->dev, "ADRF6780 Invalid Chip ID.\n");
+ dev_err(dev, "ADRF6780 Invalid Chip ID.\n");
return -EINVAL;
}
@@ -426,18 +426,18 @@ static int adrf6780_init(struct adrf6780_state *st)
static void adrf6780_properties_parse(struct adrf6780_state *st)
{
- struct spi_device *spi = st->spi;
-
- st->vga_buff_en = device_property_read_bool(&spi->dev, "adi,vga-buff-en");
- st->lo_buff_en = device_property_read_bool(&spi->dev, "adi,lo-buff-en");
- st->if_mode_en = device_property_read_bool(&spi->dev, "adi,if-mode-en");
- st->iq_mode_en = device_property_read_bool(&spi->dev, "adi,iq-mode-en");
- st->lo_x2_en = device_property_read_bool(&spi->dev, "adi,lo-x2-en");
- st->lo_ppf_en = device_property_read_bool(&spi->dev, "adi,lo-ppf-en");
- st->lo_en = device_property_read_bool(&spi->dev, "adi,lo-en");
- st->uc_bias_en = device_property_read_bool(&spi->dev, "adi,uc-bias-en");
- st->lo_sideband = device_property_read_bool(&spi->dev, "adi,lo-sideband");
- st->vdet_out_en = device_property_read_bool(&spi->dev, "adi,vdet-out-en");
+ struct device *dev = &st->spi->dev;
+
+ st->vga_buff_en = device_property_read_bool(dev, "adi,vga-buff-en");
+ st->lo_buff_en = device_property_read_bool(dev, "adi,lo-buff-en");
+ st->if_mode_en = device_property_read_bool(dev, "adi,if-mode-en");
+ st->iq_mode_en = device_property_read_bool(dev, "adi,iq-mode-en");
+ st->lo_x2_en = device_property_read_bool(dev, "adi,lo-x2-en");
+ st->lo_ppf_en = device_property_read_bool(dev, "adi,lo-ppf-en");
+ st->lo_en = device_property_read_bool(dev, "adi,lo-en");
+ st->uc_bias_en = device_property_read_bool(dev, "adi,uc-bias-en");
+ st->lo_sideband = device_property_read_bool(dev, "adi,lo-sideband");
+ st->vdet_out_en = device_property_read_bool(dev, "adi,vdet-out-en");
}
static void adrf6780_powerdown(void *data)
@@ -450,9 +450,10 @@ static int adrf6780_probe(struct spi_device *spi)
{
struct iio_dev *indio_dev;
struct adrf6780_state *st;
+ struct device *dev = &spi->dev;
int ret;
- indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
+ indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
if (!indio_dev)
return -ENOMEM;
@@ -467,9 +468,9 @@ static int adrf6780_probe(struct spi_device *spi)
adrf6780_properties_parse(st);
- st->clkin = devm_clk_get_enabled(&spi->dev, "lo_in");
+ st->clkin = devm_clk_get_enabled(dev, "lo_in");
if (IS_ERR(st->clkin))
- return dev_err_probe(&spi->dev, PTR_ERR(st->clkin),
+ return dev_err_probe(dev, PTR_ERR(st->clkin),
"failed to get the LO input clock\n");
mutex_init(&st->lock);
@@ -478,11 +479,11 @@ static int adrf6780_probe(struct spi_device *spi)
if (ret)
return ret;
- ret = devm_add_action_or_reset(&spi->dev, adrf6780_powerdown, st);
+ ret = devm_add_action_or_reset(dev, adrf6780_powerdown, st);
if (ret)
return ret;
- return devm_iio_device_register(&spi->dev, indio_dev);
+ return devm_iio_device_register(dev, indio_dev);
}
static const struct spi_device_id adrf6780_id[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 02/12] iio: frequency: adrf6780: use dev_err_probe in probe path
2026-02-23 13:13 [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Antoniu Miclaus
2026-02-23 13:13 ` [PATCH v2 01/12] iio: frequency: adrf6780: introduce struct device variable Antoniu Miclaus
@ 2026-02-23 13:13 ` Antoniu Miclaus
2026-02-23 13:13 ` [PATCH v2 03/12] iio: frequency: admv1014: introduce struct device variable Antoniu Miclaus
` (10 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Antoniu Miclaus @ 2026-02-23 13:13 UTC (permalink / raw)
To: Antoniu Miclaus, Lars-Peter Clausen, Michael Hennerich,
Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
linux-iio, linux-kernel
Replace dev_err() + return with dev_err_probe() in the probe path
to simplify error handling and to ensure the error code is logged.
Drop 'SPI' from error messages since the bus type is evident.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
drivers/iio/frequency/adrf6780.c | 21 +++++++++------------
1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/drivers/iio/frequency/adrf6780.c b/drivers/iio/frequency/adrf6780.c
index 918a7a511d09..be8838ab10fb 100644
--- a/drivers/iio/frequency/adrf6780.c
+++ b/drivers/iio/frequency/adrf6780.c
@@ -351,18 +351,16 @@ static int adrf6780_reset(struct adrf6780_state *st)
ret = __adrf6780_spi_update_bits(st, ADRF6780_REG_CONTROL,
ADRF6780_SOFT_RESET_MSK,
FIELD_PREP(ADRF6780_SOFT_RESET_MSK, 1));
- if (ret) {
- dev_err(dev, "ADRF6780 SPI software reset failed.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "ADRF6780 software reset failed.\n");
ret = __adrf6780_spi_update_bits(st, ADRF6780_REG_CONTROL,
ADRF6780_SOFT_RESET_MSK,
FIELD_PREP(ADRF6780_SOFT_RESET_MSK, 0));
- if (ret) {
- dev_err(dev, "ADRF6780 SPI software reset disable failed.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "ADRF6780 software reset disable failed.\n");
return 0;
}
@@ -383,10 +381,9 @@ static int adrf6780_init(struct adrf6780_state *st)
return ret;
chip_id = FIELD_GET(ADRF6780_CHIP_ID_MSK, chip_id);
- if (chip_id != ADRF6780_CHIP_ID) {
- dev_err(dev, "ADRF6780 Invalid Chip ID.\n");
- return -EINVAL;
- }
+ if (chip_id != ADRF6780_CHIP_ID)
+ return dev_err_probe(dev, -EINVAL,
+ "ADRF6780 Invalid Chip ID.\n");
enable_reg_msk = ADRF6780_VGA_BUFFER_EN_MSK |
ADRF6780_DETECTOR_EN_MSK |
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 03/12] iio: frequency: admv1014: introduce struct device variable
2026-02-23 13:13 [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Antoniu Miclaus
2026-02-23 13:13 ` [PATCH v2 01/12] iio: frequency: adrf6780: introduce struct device variable Antoniu Miclaus
2026-02-23 13:13 ` [PATCH v2 02/12] iio: frequency: adrf6780: use dev_err_probe in probe path Antoniu Miclaus
@ 2026-02-23 13:13 ` Antoniu Miclaus
2026-02-23 13:55 ` Andy Shevchenko
2026-02-23 13:13 ` [PATCH v2 04/12] iio: frequency: admv1014: use dev_err_probe in probe path Antoniu Miclaus
` (9 subsequent siblings)
12 siblings, 1 reply; 16+ messages in thread
From: Antoniu Miclaus @ 2026-02-23 13:13 UTC (permalink / raw)
To: Antoniu Miclaus, Lars-Peter Clausen, Michael Hennerich,
Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
linux-iio, linux-kernel
Add struct device *dev local variable to simplify repeated &spi->dev
dereferences. Where spi is no longer needed beyond &spi->dev, replace
struct spi_device *spi with struct device *dev = &st->spi->dev.
No functional change.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
drivers/iio/frequency/admv1014.c | 49 ++++++++++++++++----------------
1 file changed, 25 insertions(+), 24 deletions(-)
diff --git a/drivers/iio/frequency/admv1014.c b/drivers/iio/frequency/admv1014.c
index 7a8f92ec80a2..ce1b40336e15 100644
--- a/drivers/iio/frequency/admv1014.c
+++ b/drivers/iio/frequency/admv1014.c
@@ -609,16 +609,16 @@ static void admv1014_powerdown(void *data)
static int admv1014_init(struct admv1014_state *st)
{
unsigned int chip_id, enable_reg, enable_reg_msk;
- struct spi_device *spi = st->spi;
+ struct device *dev = &st->spi->dev;
int ret;
ret = regulator_bulk_enable(ADMV1014_NUM_REGULATORS, st->regulators);
if (ret) {
- dev_err(&spi->dev, "Failed to enable regulators");
+ dev_err(dev, "Failed to enable regulators");
return ret;
}
- ret = devm_add_action_or_reset(&spi->dev, admv1014_reg_disable, st->regulators);
+ ret = devm_add_action_or_reset(dev, admv1014_reg_disable, st->regulators);
if (ret)
return ret;
@@ -626,16 +626,16 @@ static int admv1014_init(struct admv1014_state *st)
if (ret)
return ret;
- ret = devm_add_action_or_reset(&spi->dev, admv1014_clk_disable, st->clkin);
+ ret = devm_add_action_or_reset(dev, admv1014_clk_disable, st->clkin);
if (ret)
return ret;
st->nb.notifier_call = admv1014_freq_change;
- ret = devm_clk_notifier_register(&spi->dev, st->clkin, &st->nb);
+ ret = devm_clk_notifier_register(dev, st->clkin, &st->nb);
if (ret)
return ret;
- ret = devm_add_action_or_reset(&spi->dev, admv1014_powerdown, st);
+ ret = devm_add_action_or_reset(dev, admv1014_powerdown, st);
if (ret)
return ret;
@@ -644,7 +644,7 @@ static int admv1014_init(struct admv1014_state *st)
ADMV1014_SPI_SOFT_RESET_MSK,
FIELD_PREP(ADMV1014_SPI_SOFT_RESET_MSK, 1));
if (ret) {
- dev_err(&spi->dev, "ADMV1014 SPI software reset failed.\n");
+ dev_err(dev, "ADMV1014 SPI software reset failed.\n");
return ret;
}
@@ -652,13 +652,13 @@ static int admv1014_init(struct admv1014_state *st)
ADMV1014_SPI_SOFT_RESET_MSK,
FIELD_PREP(ADMV1014_SPI_SOFT_RESET_MSK, 0));
if (ret) {
- dev_err(&spi->dev, "ADMV1014 SPI software reset disable failed.\n");
+ dev_err(dev, "ADMV1014 SPI software reset disable failed.\n");
return ret;
}
ret = __admv1014_spi_write(st, ADMV1014_REG_VVA_TEMP_COMP, 0x727C);
if (ret) {
- dev_err(&spi->dev, "Writing default Temperature Compensation value failed.\n");
+ dev_err(dev, "Writing default Temperature Compensation value failed.\n");
return ret;
}
@@ -668,7 +668,7 @@ static int admv1014_init(struct admv1014_state *st)
chip_id = FIELD_GET(ADMV1014_CHIP_ID_MSK, chip_id);
if (chip_id != ADMV1014_CHIP_ID) {
- dev_err(&spi->dev, "Invalid Chip ID.\n");
+ dev_err(dev, "Invalid Chip ID.\n");
return -EINVAL;
}
@@ -677,19 +677,19 @@ static int admv1014_init(struct admv1014_state *st)
FIELD_PREP(ADMV1014_QUAD_SE_MODE_MSK,
st->quad_se_mode));
if (ret) {
- dev_err(&spi->dev, "Writing Quad SE Mode failed.\n");
+ dev_err(dev, "Writing Quad SE Mode failed.\n");
return ret;
}
ret = admv1014_update_quad_filters(st);
if (ret) {
- dev_err(&spi->dev, "Update Quad Filters failed.\n");
+ dev_err(dev, "Update Quad Filters failed.\n");
return ret;
}
ret = admv1014_update_vcm_settings(st);
if (ret) {
- dev_err(&spi->dev, "Update VCM Settings failed.\n");
+ dev_err(dev, "Update VCM Settings failed.\n");
return ret;
}
@@ -711,14 +711,14 @@ static int admv1014_init(struct admv1014_state *st)
static int admv1014_properties_parse(struct admv1014_state *st)
{
unsigned int i;
- struct spi_device *spi = st->spi;
+ struct device *dev = &st->spi->dev;
int ret;
- st->det_en = device_property_read_bool(&spi->dev, "adi,detector-enable");
+ st->det_en = device_property_read_bool(dev, "adi,detector-enable");
- st->p1db_comp = device_property_read_bool(&spi->dev, "adi,p1db-compensation-enable");
+ st->p1db_comp = device_property_read_bool(dev, "adi,p1db-compensation-enable");
- ret = device_property_match_property_string(&spi->dev, "adi,input-mode",
+ ret = device_property_match_property_string(dev, "adi,input-mode",
input_mode_names,
ARRAY_SIZE(input_mode_names));
if (ret >= 0)
@@ -726,7 +726,7 @@ static int admv1014_properties_parse(struct admv1014_state *st)
else
st->input_mode = ADMV1014_IQ_MODE;
- ret = device_property_match_property_string(&spi->dev, "adi,quad-se-mode",
+ ret = device_property_match_property_string(dev, "adi,quad-se-mode",
quad_se_mode_names,
ARRAY_SIZE(quad_se_mode_names));
if (ret >= 0)
@@ -737,16 +737,16 @@ static int admv1014_properties_parse(struct admv1014_state *st)
for (i = 0; i < ADMV1014_NUM_REGULATORS; ++i)
st->regulators[i].supply = admv1014_reg_name[i];
- ret = devm_regulator_bulk_get(&st->spi->dev, ADMV1014_NUM_REGULATORS,
+ ret = devm_regulator_bulk_get(dev, ADMV1014_NUM_REGULATORS,
st->regulators);
if (ret) {
- dev_err(&spi->dev, "Failed to request regulators");
+ dev_err(dev, "Failed to request regulators");
return ret;
}
- st->clkin = devm_clk_get(&spi->dev, "lo_in");
+ st->clkin = devm_clk_get(dev, "lo_in");
if (IS_ERR(st->clkin))
- return dev_err_probe(&spi->dev, PTR_ERR(st->clkin),
+ return dev_err_probe(dev, PTR_ERR(st->clkin),
"failed to get the LO input clock\n");
return 0;
@@ -756,9 +756,10 @@ static int admv1014_probe(struct spi_device *spi)
{
struct iio_dev *indio_dev;
struct admv1014_state *st;
+ struct device *dev = &spi->dev;
int ret;
- indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
+ indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
if (!indio_dev)
return -ENOMEM;
@@ -787,7 +788,7 @@ static int admv1014_probe(struct spi_device *spi)
if (ret)
return ret;
- return devm_iio_device_register(&spi->dev, indio_dev);
+ return devm_iio_device_register(dev, indio_dev);
}
static const struct spi_device_id admv1014_id[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 04/12] iio: frequency: admv1014: use dev_err_probe in probe path
2026-02-23 13:13 [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Antoniu Miclaus
` (2 preceding siblings ...)
2026-02-23 13:13 ` [PATCH v2 03/12] iio: frequency: admv1014: introduce struct device variable Antoniu Miclaus
@ 2026-02-23 13:13 ` Antoniu Miclaus
2026-02-23 13:57 ` Andy Shevchenko
2026-02-23 13:13 ` [PATCH v2 05/12] iio: frequency: admv1013: introduce struct device variable Antoniu Miclaus
` (8 subsequent siblings)
12 siblings, 1 reply; 16+ messages in thread
From: Antoniu Miclaus @ 2026-02-23 13:13 UTC (permalink / raw)
To: Antoniu Miclaus, Lars-Peter Clausen, Michael Hennerich,
Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
linux-iio, linux-kernel
Replace dev_err() + return with dev_err_probe() in the probe path
to simplify error handling and to ensure the error code is logged.
Drop 'SPI' from error messages since the bus type is evident.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
drivers/iio/frequency/admv1014.c | 63 ++++++++++++++------------------
1 file changed, 27 insertions(+), 36 deletions(-)
diff --git a/drivers/iio/frequency/admv1014.c b/drivers/iio/frequency/admv1014.c
index ce1b40336e15..eeb01cfb799f 100644
--- a/drivers/iio/frequency/admv1014.c
+++ b/drivers/iio/frequency/admv1014.c
@@ -613,10 +613,9 @@ static int admv1014_init(struct admv1014_state *st)
int ret;
ret = regulator_bulk_enable(ADMV1014_NUM_REGULATORS, st->regulators);
- if (ret) {
- dev_err(dev, "Failed to enable regulators");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "Failed to enable regulators");
ret = devm_add_action_or_reset(dev, admv1014_reg_disable, st->regulators);
if (ret)
@@ -643,55 +642,48 @@ static int admv1014_init(struct admv1014_state *st)
ret = __admv1014_spi_update_bits(st, ADMV1014_REG_SPI_CONTROL,
ADMV1014_SPI_SOFT_RESET_MSK,
FIELD_PREP(ADMV1014_SPI_SOFT_RESET_MSK, 1));
- if (ret) {
- dev_err(dev, "ADMV1014 SPI software reset failed.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "ADMV1014 software reset failed.\n");
ret = __admv1014_spi_update_bits(st, ADMV1014_REG_SPI_CONTROL,
ADMV1014_SPI_SOFT_RESET_MSK,
FIELD_PREP(ADMV1014_SPI_SOFT_RESET_MSK, 0));
- if (ret) {
- dev_err(dev, "ADMV1014 SPI software reset disable failed.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "ADMV1014 software reset disable failed.\n");
ret = __admv1014_spi_write(st, ADMV1014_REG_VVA_TEMP_COMP, 0x727C);
- if (ret) {
- dev_err(dev, "Writing default Temperature Compensation value failed.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "Writing default Temperature Compensation value failed.\n");
ret = __admv1014_spi_read(st, ADMV1014_REG_SPI_CONTROL, &chip_id);
if (ret)
return ret;
chip_id = FIELD_GET(ADMV1014_CHIP_ID_MSK, chip_id);
- if (chip_id != ADMV1014_CHIP_ID) {
- dev_err(dev, "Invalid Chip ID.\n");
- return -EINVAL;
- }
+ if (chip_id != ADMV1014_CHIP_ID)
+ return dev_err_probe(dev, -EINVAL,
+ "Invalid Chip ID.\n");
ret = __admv1014_spi_update_bits(st, ADMV1014_REG_QUAD,
ADMV1014_QUAD_SE_MODE_MSK,
FIELD_PREP(ADMV1014_QUAD_SE_MODE_MSK,
st->quad_se_mode));
- if (ret) {
- dev_err(dev, "Writing Quad SE Mode failed.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "Writing Quad SE Mode failed.\n");
ret = admv1014_update_quad_filters(st);
- if (ret) {
- dev_err(dev, "Update Quad Filters failed.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "Update Quad Filters failed.\n");
ret = admv1014_update_vcm_settings(st);
- if (ret) {
- dev_err(dev, "Update VCM Settings failed.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "Update VCM Settings failed.\n");
enable_reg_msk = ADMV1014_P1DB_COMPENSATION_MSK |
ADMV1014_IF_AMP_PD_MSK |
@@ -739,10 +731,9 @@ static int admv1014_properties_parse(struct admv1014_state *st)
ret = devm_regulator_bulk_get(dev, ADMV1014_NUM_REGULATORS,
st->regulators);
- if (ret) {
- dev_err(dev, "Failed to request regulators");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "Failed to request regulators");
st->clkin = devm_clk_get(dev, "lo_in");
if (IS_ERR(st->clkin))
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 05/12] iio: frequency: admv1013: introduce struct device variable
2026-02-23 13:13 [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Antoniu Miclaus
` (3 preceding siblings ...)
2026-02-23 13:13 ` [PATCH v2 04/12] iio: frequency: admv1014: use dev_err_probe in probe path Antoniu Miclaus
@ 2026-02-23 13:13 ` Antoniu Miclaus
2026-02-23 13:13 ` [PATCH v2 06/12] iio: frequency: admv1013: use dev_err_probe in probe path Antoniu Miclaus
` (7 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Antoniu Miclaus @ 2026-02-23 13:13 UTC (permalink / raw)
To: Lars-Peter Clausen, Michael Hennerich, Antoniu Miclaus,
Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
linux-iio, linux-kernel
Add struct device *dev local variable to simplify repeated &spi->dev
dereferences. Where spi is no longer needed beyond &spi->dev, replace
struct spi_device *spi with struct device *dev = &st->spi->dev.
No functional change.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
drivers/iio/frequency/admv1013.c | 35 ++++++++++++++++----------------
1 file changed, 18 insertions(+), 17 deletions(-)
diff --git a/drivers/iio/frequency/admv1013.c b/drivers/iio/frequency/admv1013.c
index d8e8d541990f..4e1ebb9a537b 100644
--- a/drivers/iio/frequency/admv1013.c
+++ b/drivers/iio/frequency/admv1013.c
@@ -441,7 +441,7 @@ static int admv1013_init(struct admv1013_state *st, int vcm_uv)
{
int ret;
unsigned int data;
- struct spi_device *spi = st->spi;
+ struct device *dev = &st->spi->dev;
/* Perform a software reset */
ret = __admv1013_spi_update_bits(st, ADMV1013_REG_SPI_CONTROL,
@@ -462,7 +462,7 @@ static int admv1013_init(struct admv1013_state *st, int vcm_uv)
data = FIELD_GET(ADMV1013_CHIP_ID_MSK, data);
if (data != ADMV1013_CHIP_ID) {
- dev_err(&spi->dev, "Invalid Chip ID.\n");
+ dev_err(dev, "Invalid Chip ID.\n");
return -EINVAL;
}
@@ -518,11 +518,11 @@ static int admv1013_properties_parse(struct admv1013_state *st)
{
int ret;
const char *str;
- struct spi_device *spi = st->spi;
+ struct device *dev = &st->spi->dev;
- st->det_en = device_property_read_bool(&spi->dev, "adi,detector-enable");
+ st->det_en = device_property_read_bool(dev, "adi,detector-enable");
- ret = device_property_read_string(&spi->dev, "adi,input-mode", &str);
+ ret = device_property_read_string(dev, "adi,input-mode", &str);
if (ret)
st->input_mode = ADMV1013_IQ_MODE;
@@ -533,7 +533,7 @@ static int admv1013_properties_parse(struct admv1013_state *st)
else
return -EINVAL;
- ret = device_property_read_string(&spi->dev, "adi,quad-se-mode", &str);
+ ret = device_property_read_string(dev, "adi,quad-se-mode", &str);
if (ret)
st->quad_se_mode = ADMV1013_SE_MODE_DIFF;
@@ -546,11 +546,11 @@ static int admv1013_properties_parse(struct admv1013_state *st)
else
return -EINVAL;
- ret = devm_regulator_bulk_get_enable(&st->spi->dev,
+ ret = devm_regulator_bulk_get_enable(dev,
ARRAY_SIZE(admv1013_vcc_regs),
admv1013_vcc_regs);
if (ret) {
- dev_err_probe(&spi->dev, ret,
+ dev_err_probe(dev, ret,
"Failed to request VCC regulators\n");
return ret;
}
@@ -562,9 +562,10 @@ static int admv1013_probe(struct spi_device *spi)
{
struct iio_dev *indio_dev;
struct admv1013_state *st;
+ struct device *dev = &spi->dev;
int ret, vcm_uv;
- indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
+ indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
if (!indio_dev)
return -ENOMEM;
@@ -581,20 +582,20 @@ static int admv1013_probe(struct spi_device *spi)
if (ret)
return ret;
- ret = devm_regulator_get_enable_read_voltage(&spi->dev, "vcm");
+ ret = devm_regulator_get_enable_read_voltage(dev, "vcm");
if (ret < 0)
- return dev_err_probe(&spi->dev, ret,
+ return dev_err_probe(dev, ret,
"failed to get the common-mode voltage\n");
vcm_uv = ret;
- st->clkin = devm_clk_get_enabled(&spi->dev, "lo_in");
+ st->clkin = devm_clk_get_enabled(dev, "lo_in");
if (IS_ERR(st->clkin))
- return dev_err_probe(&spi->dev, PTR_ERR(st->clkin),
+ return dev_err_probe(dev, PTR_ERR(st->clkin),
"failed to get the LO input clock\n");
st->nb.notifier_call = admv1013_freq_change;
- ret = devm_clk_notifier_register(&spi->dev, st->clkin, &st->nb);
+ ret = devm_clk_notifier_register(dev, st->clkin, &st->nb);
if (ret)
return ret;
@@ -602,15 +603,15 @@ static int admv1013_probe(struct spi_device *spi)
ret = admv1013_init(st, vcm_uv);
if (ret) {
- dev_err(&spi->dev, "admv1013 init failed\n");
+ dev_err(dev, "admv1013 init failed\n");
return ret;
}
- ret = devm_add_action_or_reset(&spi->dev, admv1013_powerdown, st);
+ ret = devm_add_action_or_reset(dev, admv1013_powerdown, st);
if (ret)
return ret;
- return devm_iio_device_register(&spi->dev, indio_dev);
+ return devm_iio_device_register(dev, indio_dev);
}
static const struct spi_device_id admv1013_id[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 06/12] iio: frequency: admv1013: use dev_err_probe in probe path
2026-02-23 13:13 [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Antoniu Miclaus
` (4 preceding siblings ...)
2026-02-23 13:13 ` [PATCH v2 05/12] iio: frequency: admv1013: introduce struct device variable Antoniu Miclaus
@ 2026-02-23 13:13 ` Antoniu Miclaus
2026-02-23 13:13 ` [PATCH v2 07/12] iio: frequency: adf4377: introduce struct device variable Antoniu Miclaus
` (6 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Antoniu Miclaus @ 2026-02-23 13:13 UTC (permalink / raw)
To: Antoniu Miclaus, Lars-Peter Clausen, Michael Hennerich,
Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
linux-iio, linux-kernel
Replace dev_err() + return with dev_err_probe() in the probe path
to simplify error handling and to ensure the error code is logged.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
drivers/iio/frequency/admv1013.c | 22 +++++++++-------------
1 file changed, 9 insertions(+), 13 deletions(-)
diff --git a/drivers/iio/frequency/admv1013.c b/drivers/iio/frequency/admv1013.c
index 4e1ebb9a537b..514cf9f8eacb 100644
--- a/drivers/iio/frequency/admv1013.c
+++ b/drivers/iio/frequency/admv1013.c
@@ -461,10 +461,9 @@ static int admv1013_init(struct admv1013_state *st, int vcm_uv)
return ret;
data = FIELD_GET(ADMV1013_CHIP_ID_MSK, data);
- if (data != ADMV1013_CHIP_ID) {
- dev_err(dev, "Invalid Chip ID.\n");
- return -EINVAL;
- }
+ if (data != ADMV1013_CHIP_ID)
+ return dev_err_probe(dev, -EINVAL,
+ "Invalid Chip ID.\n");
ret = __admv1013_spi_write(st, ADMV1013_REG_VVA_TEMP_COMP, 0xE700);
if (ret)
@@ -549,11 +548,9 @@ static int admv1013_properties_parse(struct admv1013_state *st)
ret = devm_regulator_bulk_get_enable(dev,
ARRAY_SIZE(admv1013_vcc_regs),
admv1013_vcc_regs);
- if (ret) {
- dev_err_probe(dev, ret,
- "Failed to request VCC regulators\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "Failed to request VCC regulators\n");
return 0;
}
@@ -602,10 +599,9 @@ static int admv1013_probe(struct spi_device *spi)
mutex_init(&st->lock);
ret = admv1013_init(st, vcm_uv);
- if (ret) {
- dev_err(dev, "admv1013 init failed\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "admv1013 init failed\n");
ret = devm_add_action_or_reset(dev, admv1013_powerdown, st);
if (ret)
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 07/12] iio: frequency: adf4377: introduce struct device variable
2026-02-23 13:13 [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Antoniu Miclaus
` (5 preceding siblings ...)
2026-02-23 13:13 ` [PATCH v2 06/12] iio: frequency: admv1013: use dev_err_probe in probe path Antoniu Miclaus
@ 2026-02-23 13:13 ` Antoniu Miclaus
2026-02-23 13:13 ` [PATCH v2 08/12] iio: frequency: adf4377: use dev_err_probe in probe path Antoniu Miclaus
` (5 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Antoniu Miclaus @ 2026-02-23 13:13 UTC (permalink / raw)
To: Antoniu Miclaus, Lars-Peter Clausen, Michael Hennerich,
Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
linux-iio, linux-kernel
Add struct device *dev local variable to simplify repeated &spi->dev
dereferences. Where spi is no longer needed beyond &spi->dev, replace
struct spi_device *spi with struct device *dev = &st->spi->dev.
No functional change.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
drivers/iio/frequency/adf4377.c | 37 +++++++++++++++++----------------
1 file changed, 19 insertions(+), 18 deletions(-)
diff --git a/drivers/iio/frequency/adf4377.c b/drivers/iio/frequency/adf4377.c
index fa686f785fa4..919b604b2ce6 100644
--- a/drivers/iio/frequency/adf4377.c
+++ b/drivers/iio/frequency/adf4377.c
@@ -706,21 +706,21 @@ static void adf4377_gpio_init(struct adf4377_state *st)
static int adf4377_init(struct adf4377_state *st)
{
- struct spi_device *spi = st->spi;
+ struct device *dev = &st->spi->dev;
int ret;
adf4377_gpio_init(st);
ret = adf4377_soft_reset(st);
if (ret) {
- dev_err(&spi->dev, "Failed to soft reset.\n");
+ dev_err(dev, "Failed to soft reset.\n");
return ret;
}
ret = regmap_multi_reg_write(st->regmap, adf4377_reg_defaults,
ARRAY_SIZE(adf4377_reg_defaults));
if (ret) {
- dev_err(&spi->dev, "Failed to set default registers.\n");
+ dev_err(dev, "Failed to set default registers.\n");
return ret;
}
@@ -731,7 +731,7 @@ static int adf4377_init(struct adf4377_state *st)
FIELD_PREP(ADF4377_0000_SDO_ACTIVE_R_MSK,
ADF4377_0000_SDO_ACTIVE_SPI_4W));
if (ret) {
- dev_err(&spi->dev, "Failed to set 4-Wire Operation.\n");
+ dev_err(dev, "Failed to set 4-Wire Operation.\n");
return ret;
}
@@ -748,7 +748,7 @@ static int adf4377_init(struct adf4377_state *st)
FIELD_PREP(ADF4377_001A_PD_CLKOUT1_MSK, 0) |
FIELD_PREP(ADF4377_001A_PD_CLKOUT2_MSK, 0));
if (ret) {
- dev_err(&spi->dev, "Failed to set power down registers.\n");
+ dev_err(dev, "Failed to set power down registers.\n");
return ret;
}
@@ -882,35 +882,35 @@ static const struct iio_chan_spec adf4377_channels[] = {
static int adf4377_properties_parse(struct adf4377_state *st)
{
- struct spi_device *spi = st->spi;
+ struct device *dev = &st->spi->dev;
int ret;
- st->clkin = devm_clk_get_enabled(&spi->dev, "ref_in");
+ st->clkin = devm_clk_get_enabled(dev, "ref_in");
if (IS_ERR(st->clkin))
- return dev_err_probe(&spi->dev, PTR_ERR(st->clkin),
+ return dev_err_probe(dev, PTR_ERR(st->clkin),
"failed to get the reference input clock\n");
- st->gpio_ce = devm_gpiod_get_optional(&st->spi->dev, "chip-enable",
+ st->gpio_ce = devm_gpiod_get_optional(dev, "chip-enable",
GPIOD_OUT_LOW);
if (IS_ERR(st->gpio_ce))
- return dev_err_probe(&spi->dev, PTR_ERR(st->gpio_ce),
+ return dev_err_probe(dev, PTR_ERR(st->gpio_ce),
"failed to get the CE GPIO\n");
- st->gpio_enclk1 = devm_gpiod_get_optional(&st->spi->dev, "clk1-enable",
+ st->gpio_enclk1 = devm_gpiod_get_optional(dev, "clk1-enable",
GPIOD_OUT_LOW);
if (IS_ERR(st->gpio_enclk1))
- return dev_err_probe(&spi->dev, PTR_ERR(st->gpio_enclk1),
+ return dev_err_probe(dev, PTR_ERR(st->gpio_enclk1),
"failed to get the CE GPIO\n");
if (st->chip_info->has_gpio_enclk2) {
- st->gpio_enclk2 = devm_gpiod_get_optional(&st->spi->dev, "clk2-enable",
+ st->gpio_enclk2 = devm_gpiod_get_optional(dev, "clk2-enable",
GPIOD_OUT_LOW);
if (IS_ERR(st->gpio_enclk2))
- return dev_err_probe(&spi->dev, PTR_ERR(st->gpio_enclk2),
+ return dev_err_probe(dev, PTR_ERR(st->gpio_enclk2),
"failed to get the CE GPIO\n");
}
- ret = device_property_match_property_string(&spi->dev, "adi,muxout-select",
+ ret = device_property_match_property_string(dev, "adi,muxout-select",
adf4377_muxout_modes,
ARRAY_SIZE(adf4377_muxout_modes));
if (ret >= 0)
@@ -1055,9 +1055,10 @@ static int adf4377_probe(struct spi_device *spi)
struct iio_dev *indio_dev;
struct regmap *regmap;
struct adf4377_state *st;
+ struct device *dev = &spi->dev;
int ret;
- indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
+ indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
if (!indio_dev)
return -ENOMEM;
@@ -1080,7 +1081,7 @@ static int adf4377_probe(struct spi_device *spi)
return ret;
st->nb.notifier_call = adf4377_freq_change;
- ret = devm_clk_notifier_register(&spi->dev, st->clkin, &st->nb);
+ ret = devm_clk_notifier_register(dev, st->clkin, &st->nb);
if (ret)
return ret;
@@ -1097,7 +1098,7 @@ static int adf4377_probe(struct spi_device *spi)
indio_dev->num_channels = ARRAY_SIZE(adf4377_channels);
}
- return devm_iio_device_register(&spi->dev, indio_dev);
+ return devm_iio_device_register(dev, indio_dev);
}
static const struct spi_device_id adf4377_id[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 08/12] iio: frequency: adf4377: use dev_err_probe in probe path
2026-02-23 13:13 [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Antoniu Miclaus
` (6 preceding siblings ...)
2026-02-23 13:13 ` [PATCH v2 07/12] iio: frequency: adf4377: introduce struct device variable Antoniu Miclaus
@ 2026-02-23 13:13 ` Antoniu Miclaus
2026-02-23 13:14 ` [PATCH v2 09/12] iio: dac: ad7293: introduce struct device variable Antoniu Miclaus
` (4 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Antoniu Miclaus @ 2026-02-23 13:13 UTC (permalink / raw)
To: Lars-Peter Clausen, Michael Hennerich, Antoniu Miclaus,
Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
linux-iio, linux-kernel
Replace dev_err() + return with dev_err_probe() in the probe path
to simplify error handling and to ensure the error code is logged.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
drivers/iio/frequency/adf4377.c | 28 ++++++++++++----------------
1 file changed, 12 insertions(+), 16 deletions(-)
diff --git a/drivers/iio/frequency/adf4377.c b/drivers/iio/frequency/adf4377.c
index 919b604b2ce6..cfc0c524c4a4 100644
--- a/drivers/iio/frequency/adf4377.c
+++ b/drivers/iio/frequency/adf4377.c
@@ -712,17 +712,15 @@ static int adf4377_init(struct adf4377_state *st)
adf4377_gpio_init(st);
ret = adf4377_soft_reset(st);
- if (ret) {
- dev_err(dev, "Failed to soft reset.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "Failed to soft reset.\n");
ret = regmap_multi_reg_write(st->regmap, adf4377_reg_defaults,
ARRAY_SIZE(adf4377_reg_defaults));
- if (ret) {
- dev_err(dev, "Failed to set default registers.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "Failed to set default registers.\n");
ret = regmap_update_bits(st->regmap, 0x00,
ADF4377_0000_SDO_ACTIVE_MSK | ADF4377_0000_SDO_ACTIVE_R_MSK,
@@ -730,10 +728,9 @@ static int adf4377_init(struct adf4377_state *st)
ADF4377_0000_SDO_ACTIVE_SPI_4W) |
FIELD_PREP(ADF4377_0000_SDO_ACTIVE_R_MSK,
ADF4377_0000_SDO_ACTIVE_SPI_4W));
- if (ret) {
- dev_err(dev, "Failed to set 4-Wire Operation.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "Failed to set 4-Wire Operation.\n");
st->clkin_freq = clk_get_rate(st->clkin);
@@ -747,10 +744,9 @@ static int adf4377_init(struct adf4377_state *st)
FIELD_PREP(ADF4377_001A_PD_PFDCP_MSK, 0) |
FIELD_PREP(ADF4377_001A_PD_CLKOUT1_MSK, 0) |
FIELD_PREP(ADF4377_001A_PD_CLKOUT2_MSK, 0));
- if (ret) {
- dev_err(dev, "Failed to set power down registers.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "Failed to set power down registers.\n");
/* Set Mux Output */
ret = regmap_update_bits(st->regmap, 0x1D,
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 09/12] iio: dac: ad7293: introduce struct device variable
2026-02-23 13:13 [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Antoniu Miclaus
` (7 preceding siblings ...)
2026-02-23 13:13 ` [PATCH v2 08/12] iio: frequency: adf4377: use dev_err_probe in probe path Antoniu Miclaus
@ 2026-02-23 13:14 ` Antoniu Miclaus
2026-02-23 13:14 ` [PATCH v2 10/12] iio: dac: ad7293: use dev_err_probe in probe path Antoniu Miclaus
` (3 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Antoniu Miclaus @ 2026-02-23 13:14 UTC (permalink / raw)
To: Lars-Peter Clausen, Michael Hennerich, Antoniu Miclaus,
Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
linux-iio, linux-kernel
Add struct device *dev local variable to simplify repeated &spi->dev
dereferences. Where spi is no longer needed beyond &spi->dev, replace
struct spi_device *spi with struct device *dev = &st->spi->dev.
No functional change.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
drivers/iio/dac/ad7293.c | 27 ++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)
diff --git a/drivers/iio/dac/ad7293.c b/drivers/iio/dac/ad7293.c
index c3797e40cdd9..0168d111ecbc 100644
--- a/drivers/iio/dac/ad7293.c
+++ b/drivers/iio/dac/ad7293.c
@@ -776,27 +776,27 @@ static int ad7293_reset(struct ad7293_state *st)
static int ad7293_properties_parse(struct ad7293_state *st)
{
- struct spi_device *spi = st->spi;
+ struct device *dev = &st->spi->dev;
int ret;
- ret = devm_regulator_get_enable(&spi->dev, "avdd");
+ ret = devm_regulator_get_enable(dev, "avdd");
if (ret)
- return dev_err_probe(&spi->dev, ret, "failed to enable AVDD\n");
+ return dev_err_probe(dev, ret, "failed to enable AVDD\n");
- ret = devm_regulator_get_enable(&spi->dev, "vdrive");
+ ret = devm_regulator_get_enable(dev, "vdrive");
if (ret)
- return dev_err_probe(&spi->dev, ret, "failed to enable VDRIVE\n");
+ return dev_err_probe(dev, ret, "failed to enable VDRIVE\n");
- ret = devm_regulator_get_enable_optional(&spi->dev, "vrefin");
+ ret = devm_regulator_get_enable_optional(dev, "vrefin");
if (ret < 0 && ret != -ENODEV)
- return dev_err_probe(&spi->dev, ret, "failed to enable VREFIN\n");
+ return dev_err_probe(dev, ret, "failed to enable VREFIN\n");
st->vrefin_en = ret != -ENODEV;
- st->gpio_reset = devm_gpiod_get_optional(&st->spi->dev, "reset",
+ st->gpio_reset = devm_gpiod_get_optional(dev, "reset",
GPIOD_OUT_HIGH);
if (IS_ERR(st->gpio_reset))
- return dev_err_probe(&spi->dev, PTR_ERR(st->gpio_reset),
+ return dev_err_probe(dev, PTR_ERR(st->gpio_reset),
"failed to get the reset GPIO\n");
return 0;
@@ -806,7 +806,7 @@ static int ad7293_init(struct ad7293_state *st)
{
int ret;
u16 chip_id;
- struct spi_device *spi = st->spi;
+ struct device *dev = &st->spi->dev;
ret = ad7293_properties_parse(st);
if (ret)
@@ -822,7 +822,7 @@ static int ad7293_init(struct ad7293_state *st)
return ret;
if (chip_id != AD7293_CHIP_ID) {
- dev_err(&spi->dev, "Invalid Chip ID.\n");
+ dev_err(dev, "Invalid Chip ID.\n");
return -EINVAL;
}
@@ -845,9 +845,10 @@ static int ad7293_probe(struct spi_device *spi)
{
struct iio_dev *indio_dev;
struct ad7293_state *st;
+ struct device *dev = &spi->dev;
int ret;
- indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
+ indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
if (!indio_dev)
return -ENOMEM;
@@ -867,7 +868,7 @@ static int ad7293_probe(struct spi_device *spi)
if (ret)
return ret;
- return devm_iio_device_register(&spi->dev, indio_dev);
+ return devm_iio_device_register(dev, indio_dev);
}
static const struct spi_device_id ad7293_id[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 10/12] iio: dac: ad7293: use dev_err_probe in probe path
2026-02-23 13:13 [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Antoniu Miclaus
` (8 preceding siblings ...)
2026-02-23 13:14 ` [PATCH v2 09/12] iio: dac: ad7293: introduce struct device variable Antoniu Miclaus
@ 2026-02-23 13:14 ` Antoniu Miclaus
2026-02-23 13:14 ` [PATCH v2 11/12] iio: filter: admv8818: introduce struct device variable Antoniu Miclaus
` (2 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Antoniu Miclaus @ 2026-02-23 13:14 UTC (permalink / raw)
To: Lars-Peter Clausen, Michael Hennerich, Antoniu Miclaus,
Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
linux-iio, linux-kernel
Replace dev_err() + return with dev_err_probe() in the probe path
to simplify error handling and to ensure the error code is logged.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
drivers/iio/dac/ad7293.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/iio/dac/ad7293.c b/drivers/iio/dac/ad7293.c
index 0168d111ecbc..e26cc36e9270 100644
--- a/drivers/iio/dac/ad7293.c
+++ b/drivers/iio/dac/ad7293.c
@@ -821,10 +821,9 @@ static int ad7293_init(struct ad7293_state *st)
if (ret)
return ret;
- if (chip_id != AD7293_CHIP_ID) {
- dev_err(dev, "Invalid Chip ID.\n");
- return -EINVAL;
- }
+ if (chip_id != AD7293_CHIP_ID)
+ return dev_err_probe(dev, -EINVAL,
+ "Invalid Chip ID.\n");
if (!st->vrefin_en)
return __ad7293_spi_update_bits(st, AD7293_REG_GENERAL,
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 11/12] iio: filter: admv8818: introduce struct device variable
2026-02-23 13:13 [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Antoniu Miclaus
` (9 preceding siblings ...)
2026-02-23 13:14 ` [PATCH v2 10/12] iio: dac: ad7293: use dev_err_probe in probe path Antoniu Miclaus
@ 2026-02-23 13:14 ` Antoniu Miclaus
2026-02-23 13:14 ` [PATCH v2 12/12] iio: filter: admv8818: use dev_err_probe in probe path Antoniu Miclaus
2026-02-23 14:03 ` [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Andy Shevchenko
12 siblings, 0 replies; 16+ messages in thread
From: Antoniu Miclaus @ 2026-02-23 13:14 UTC (permalink / raw)
To: Antoniu Miclaus, Lars-Peter Clausen, Michael Hennerich,
Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
linux-iio, linux-kernel
Add struct device *dev local variable to simplify repeated &spi->dev
dereferences. Where spi is no longer needed beyond &spi->dev, replace
struct spi_device *spi with struct device *dev = &st->spi->dev.
No functional change.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
drivers/iio/filter/admv8818.c | 33 +++++++++++++++++----------------
1 file changed, 17 insertions(+), 16 deletions(-)
diff --git a/drivers/iio/filter/admv8818.c b/drivers/iio/filter/admv8818.c
index 19f823446cda..82f433532804 100644
--- a/drivers/iio/filter/admv8818.c
+++ b/drivers/iio/filter/admv8818.c
@@ -657,31 +657,31 @@ static void admv8818_clk_disable(void *data)
static int admv8818_init(struct admv8818_state *st)
{
int ret;
- struct spi_device *spi = st->spi;
+ struct device *dev = &st->spi->dev;
unsigned int chip_id;
ret = regmap_write(st->regmap, ADMV8818_REG_SPI_CONFIG_A,
ADMV8818_SOFTRESET_N_MSK | ADMV8818_SOFTRESET_MSK);
if (ret) {
- dev_err(&spi->dev, "ADMV8818 Soft Reset failed.\n");
+ dev_err(dev, "ADMV8818 Soft Reset failed.\n");
return ret;
}
ret = regmap_write(st->regmap, ADMV8818_REG_SPI_CONFIG_A,
ADMV8818_SDOACTIVE_N_MSK | ADMV8818_SDOACTIVE_MSK);
if (ret) {
- dev_err(&spi->dev, "ADMV8818 SDO Enable failed.\n");
+ dev_err(dev, "ADMV8818 SDO Enable failed.\n");
return ret;
}
ret = regmap_read(st->regmap, ADMV8818_REG_CHIPTYPE, &chip_id);
if (ret) {
- dev_err(&spi->dev, "ADMV8818 Chip ID read failed.\n");
+ dev_err(dev, "ADMV8818 Chip ID read failed.\n");
return ret;
}
if (chip_id != 0x1) {
- dev_err(&spi->dev, "ADMV8818 Invalid Chip ID.\n");
+ dev_err(dev, "ADMV8818 Invalid Chip ID.\n");
return -EINVAL;
}
@@ -689,7 +689,7 @@ static int admv8818_init(struct admv8818_state *st)
ADMV8818_SINGLE_INSTRUCTION_MSK,
FIELD_PREP(ADMV8818_SINGLE_INSTRUCTION_MSK, 1));
if (ret) {
- dev_err(&spi->dev, "ADMV8818 Single Instruction failed.\n");
+ dev_err(dev, "ADMV8818 Single Instruction failed.\n");
return ret;
}
@@ -701,12 +701,12 @@ static int admv8818_init(struct admv8818_state *st)
static int admv8818_clk_setup(struct admv8818_state *st)
{
- struct spi_device *spi = st->spi;
+ struct device *dev = &st->spi->dev;
int ret;
- st->clkin = devm_clk_get_optional(&spi->dev, "rf_in");
+ st->clkin = devm_clk_get_optional(dev, "rf_in");
if (IS_ERR(st->clkin))
- return dev_err_probe(&spi->dev, PTR_ERR(st->clkin),
+ return dev_err_probe(dev, PTR_ERR(st->clkin),
"failed to get the input clock\n");
else if (!st->clkin)
return 0;
@@ -715,7 +715,7 @@ static int admv8818_clk_setup(struct admv8818_state *st)
if (ret)
return ret;
- ret = devm_add_action_or_reset(&spi->dev, admv8818_clk_disable, st);
+ ret = devm_add_action_or_reset(dev, admv8818_clk_disable, st);
if (ret)
return ret;
@@ -724,16 +724,16 @@ static int admv8818_clk_setup(struct admv8818_state *st)
if (ret < 0)
return ret;
- return devm_add_action_or_reset(&spi->dev, admv8818_clk_notifier_unreg, st);
+ return devm_add_action_or_reset(dev, admv8818_clk_notifier_unreg, st);
}
static int admv8818_read_properties(struct admv8818_state *st)
{
- struct spi_device *spi = st->spi;
+ struct device *dev = &st->spi->dev;
u32 mhz;
int ret;
- ret = device_property_read_u32(&spi->dev, "adi,lpf-margin-mhz", &mhz);
+ ret = device_property_read_u32(dev, "adi,lpf-margin-mhz", &mhz);
if (ret == 0)
st->lpf_margin_hz = (u64)mhz * HZ_PER_MHZ;
else if (ret == -EINVAL)
@@ -742,7 +742,7 @@ static int admv8818_read_properties(struct admv8818_state *st)
return ret;
- ret = device_property_read_u32(&spi->dev, "adi,hpf-margin-mhz", &mhz);
+ ret = device_property_read_u32(dev, "adi,hpf-margin-mhz", &mhz);
if (ret == 0)
st->hpf_margin_hz = (u64)mhz * HZ_PER_MHZ;
else if (ret == -EINVAL)
@@ -758,9 +758,10 @@ static int admv8818_probe(struct spi_device *spi)
struct iio_dev *indio_dev;
struct regmap *regmap;
struct admv8818_state *st;
+ struct device *dev = &spi->dev;
int ret;
- indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
+ indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
if (!indio_dev)
return -ENOMEM;
@@ -792,7 +793,7 @@ static int admv8818_probe(struct spi_device *spi)
if (ret)
return ret;
- return devm_iio_device_register(&spi->dev, indio_dev);
+ return devm_iio_device_register(dev, indio_dev);
}
static const struct spi_device_id admv8818_id[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 12/12] iio: filter: admv8818: use dev_err_probe in probe path
2026-02-23 13:13 [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Antoniu Miclaus
` (10 preceding siblings ...)
2026-02-23 13:14 ` [PATCH v2 11/12] iio: filter: admv8818: introduce struct device variable Antoniu Miclaus
@ 2026-02-23 13:14 ` Antoniu Miclaus
2026-02-23 14:03 ` [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Andy Shevchenko
12 siblings, 0 replies; 16+ messages in thread
From: Antoniu Miclaus @ 2026-02-23 13:14 UTC (permalink / raw)
To: Antoniu Miclaus, Lars-Peter Clausen, Michael Hennerich,
Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
linux-iio, linux-kernel
Replace dev_err() + return with dev_err_probe() in the probe path
to simplify error handling and to ensure the error code is logged.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
drivers/iio/filter/admv8818.c | 38 ++++++++++++++++-------------------
1 file changed, 17 insertions(+), 21 deletions(-)
diff --git a/drivers/iio/filter/admv8818.c b/drivers/iio/filter/admv8818.c
index 82f433532804..a4c127d12882 100644
--- a/drivers/iio/filter/admv8818.c
+++ b/drivers/iio/filter/admv8818.c
@@ -662,36 +662,31 @@ static int admv8818_init(struct admv8818_state *st)
ret = regmap_write(st->regmap, ADMV8818_REG_SPI_CONFIG_A,
ADMV8818_SOFTRESET_N_MSK | ADMV8818_SOFTRESET_MSK);
- if (ret) {
- dev_err(dev, "ADMV8818 Soft Reset failed.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "ADMV8818 Soft Reset failed.\n");
ret = regmap_write(st->regmap, ADMV8818_REG_SPI_CONFIG_A,
ADMV8818_SDOACTIVE_N_MSK | ADMV8818_SDOACTIVE_MSK);
- if (ret) {
- dev_err(dev, "ADMV8818 SDO Enable failed.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "ADMV8818 SDO Enable failed.\n");
ret = regmap_read(st->regmap, ADMV8818_REG_CHIPTYPE, &chip_id);
- if (ret) {
- dev_err(dev, "ADMV8818 Chip ID read failed.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "ADMV8818 Chip ID read failed.\n");
- if (chip_id != 0x1) {
- dev_err(dev, "ADMV8818 Invalid Chip ID.\n");
- return -EINVAL;
- }
+ if (chip_id != 0x1)
+ return dev_err_probe(dev, -EINVAL,
+ "ADMV8818 Invalid Chip ID.\n");
ret = regmap_update_bits(st->regmap, ADMV8818_REG_SPI_CONFIG_B,
ADMV8818_SINGLE_INSTRUCTION_MSK,
FIELD_PREP(ADMV8818_SINGLE_INSTRUCTION_MSK, 1));
- if (ret) {
- dev_err(dev, "ADMV8818 Single Instruction failed.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "ADMV8818 Single Instruction failed.\n");
if (st->clkin)
return admv8818_rfin_band_select(st);
@@ -767,7 +762,8 @@ static int admv8818_probe(struct spi_device *spi)
regmap = devm_regmap_init_spi(spi, &admv8818_regmap_config);
if (IS_ERR(regmap))
- return PTR_ERR(regmap);
+ return dev_err_probe(dev, PTR_ERR(regmap),
+ "Failed to initialize regmap\n");
st = iio_priv(indio_dev);
st->regmap = regmap;
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v2 03/12] iio: frequency: admv1014: introduce struct device variable
2026-02-23 13:13 ` [PATCH v2 03/12] iio: frequency: admv1014: introduce struct device variable Antoniu Miclaus
@ 2026-02-23 13:55 ` Andy Shevchenko
0 siblings, 0 replies; 16+ messages in thread
From: Andy Shevchenko @ 2026-02-23 13:55 UTC (permalink / raw)
To: Antoniu Miclaus
Cc: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
David Lechner, Nuno Sá, Andy Shevchenko, linux-iio,
linux-kernel
On Mon, Feb 23, 2026 at 03:13:54PM +0200, Antoniu Miclaus wrote:
> Add struct device *dev local variable to simplify repeated &spi->dev
> dereferences. Where spi is no longer needed beyond &spi->dev, replace
> struct spi_device *spi with struct device *dev = &st->spi->dev.
>
> No functional change.
...
> static int admv1014_init(struct admv1014_state *st)
> {
> unsigned int chip_id, enable_reg, enable_reg_msk;
> - struct spi_device *spi = st->spi;
> + struct device *dev = &st->spi->dev;
> int ret;
>
> ret = regulator_bulk_enable(ADMV1014_NUM_REGULATORS, st->regulators);
> if (ret) {
> - dev_err(&spi->dev, "Failed to enable regulators");
> + dev_err(dev, "Failed to enable regulators");
> return ret;
This should be translated to dev_err_probe(). Since devm_*() is used in this
function it's assumed it's only run from ->probe() stage, and hence error
messages may be converted to use dev_err_probe().
> }
...
> if (ret) {
> - dev_err(&spi->dev, "ADMV1014 SPI software reset failed.\n");
> + dev_err(dev, "ADMV1014 SPI software reset failed.\n");
> return ret;
> }
Ditto.
...
> if (ret) {
> - dev_err(&spi->dev, "ADMV1014 SPI software reset disable failed.\n");
> + dev_err(dev, "ADMV1014 SPI software reset disable failed.\n");
> return ret;
> }
> ret = __admv1014_spi_write(st, ADMV1014_REG_VVA_TEMP_COMP, 0x727C);
> if (ret) {
> - dev_err(&spi->dev, "Writing default Temperature Compensation value failed.\n");
> + dev_err(dev, "Writing default Temperature Compensation value failed.\n");
> return ret;
> }
Ditto.
...
> chip_id = FIELD_GET(ADMV1014_CHIP_ID_MSK, chip_id);
> if (chip_id != ADMV1014_CHIP_ID) {
> - dev_err(&spi->dev, "Invalid Chip ID.\n");
> + dev_err(dev, "Invalid Chip ID.\n");
> return -EINVAL;
> }
Ditto.
...
> if (ret) {
> - dev_err(&spi->dev, "Writing Quad SE Mode failed.\n");
> + dev_err(dev, "Writing Quad SE Mode failed.\n");
> return ret;
> }
>
> ret = admv1014_update_quad_filters(st);
> if (ret) {
> - dev_err(&spi->dev, "Update Quad Filters failed.\n");
> + dev_err(dev, "Update Quad Filters failed.\n");
> return ret;
> }
>
> ret = admv1014_update_vcm_settings(st);
> if (ret) {
> - dev_err(&spi->dev, "Update VCM Settings failed.\n");
> + dev_err(dev, "Update VCM Settings failed.\n");
> return ret;
> }
Ditto.
...
> static int admv1014_properties_parse(struct admv1014_state *st)
> - ret = devm_regulator_bulk_get(&st->spi->dev, ADMV1014_NUM_REGULATORS,
> + ret = devm_regulator_bulk_get(dev, ADMV1014_NUM_REGULATORS,
> st->regulators);
> if (ret) {
> - dev_err(&spi->dev, "Failed to request regulators");
> + dev_err(dev, "Failed to request regulators");
> return ret;
> }
Same here.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 04/12] iio: frequency: admv1014: use dev_err_probe in probe path
2026-02-23 13:13 ` [PATCH v2 04/12] iio: frequency: admv1014: use dev_err_probe in probe path Antoniu Miclaus
@ 2026-02-23 13:57 ` Andy Shevchenko
0 siblings, 0 replies; 16+ messages in thread
From: Andy Shevchenko @ 2026-02-23 13:57 UTC (permalink / raw)
To: Antoniu Miclaus
Cc: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
David Lechner, Nuno Sá, Andy Shevchenko, linux-iio,
linux-kernel
On Mon, Feb 23, 2026 at 03:13:55PM +0200, Antoniu Miclaus wrote:
> Replace dev_err() + return with dev_err_probe() in the probe path
> to simplify error handling and to ensure the error code is logged.
>
> Drop 'SPI' from error messages since the bus type is evident.
Okay, it seems that conversion to use struct dev should not touch messages
that are going to be converted to dev_err_probe().
In that case it won't give an unneeded churn. Now all those lines become
touched twice in the sequential changes.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers
2026-02-23 13:13 [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Antoniu Miclaus
` (11 preceding siblings ...)
2026-02-23 13:14 ` [PATCH v2 12/12] iio: filter: admv8818: use dev_err_probe in probe path Antoniu Miclaus
@ 2026-02-23 14:03 ` Andy Shevchenko
12 siblings, 0 replies; 16+ messages in thread
From: Andy Shevchenko @ 2026-02-23 14:03 UTC (permalink / raw)
To: Antoniu Miclaus
Cc: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
David Lechner, Nuno Sá, Andy Shevchenko, linux-iio,
linux-kernel
On Mon, Feb 23, 2026 at 03:13:51PM +0200, Antoniu Miclaus wrote:
> Use dev_err_probe() consistently in the probe path of several ADI IIO
> drivers. This simplifies error handling and ensures proper logging of
> deferred probes.
>
> Each driver is updated in two patches: first introducing a local
> struct device variable to simplify repeated &spi->dev / &client->dev
> references, then converting error paths to use dev_err_probe().
>
> Drivers updated:
> - adrf6780
> - admv1014
> - admv1013
> - adf4377
> - ad7293
> - admv8818
As I mentioned, use a rule of thumb:
- when devm_ is used in the function, error messages may be converted to
dev_err_probe() as devm_ is supposed to be used only at ->probe() stage
- try to avoid ping-pong type of changes when the same line is modified
2+ times in a row in the same series (there are exceptions, but not here)
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2026-02-23 14:03 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-23 13:13 [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Antoniu Miclaus
2026-02-23 13:13 ` [PATCH v2 01/12] iio: frequency: adrf6780: introduce struct device variable Antoniu Miclaus
2026-02-23 13:13 ` [PATCH v2 02/12] iio: frequency: adrf6780: use dev_err_probe in probe path Antoniu Miclaus
2026-02-23 13:13 ` [PATCH v2 03/12] iio: frequency: admv1014: introduce struct device variable Antoniu Miclaus
2026-02-23 13:55 ` Andy Shevchenko
2026-02-23 13:13 ` [PATCH v2 04/12] iio: frequency: admv1014: use dev_err_probe in probe path Antoniu Miclaus
2026-02-23 13:57 ` Andy Shevchenko
2026-02-23 13:13 ` [PATCH v2 05/12] iio: frequency: admv1013: introduce struct device variable Antoniu Miclaus
2026-02-23 13:13 ` [PATCH v2 06/12] iio: frequency: admv1013: use dev_err_probe in probe path Antoniu Miclaus
2026-02-23 13:13 ` [PATCH v2 07/12] iio: frequency: adf4377: introduce struct device variable Antoniu Miclaus
2026-02-23 13:13 ` [PATCH v2 08/12] iio: frequency: adf4377: use dev_err_probe in probe path Antoniu Miclaus
2026-02-23 13:14 ` [PATCH v2 09/12] iio: dac: ad7293: introduce struct device variable Antoniu Miclaus
2026-02-23 13:14 ` [PATCH v2 10/12] iio: dac: ad7293: use dev_err_probe in probe path Antoniu Miclaus
2026-02-23 13:14 ` [PATCH v2 11/12] iio: filter: admv8818: introduce struct device variable Antoniu Miclaus
2026-02-23 13:14 ` [PATCH v2 12/12] iio: filter: admv8818: use dev_err_probe in probe path Antoniu Miclaus
2026-02-23 14:03 ` [PATCH v2 00/12] iio: use dev_err_probe in probe path for ADI drivers Andy Shevchenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox