* [PATCH 00/10] i2c: Replace dev_err() with dev_err_probe()
@ 2026-03-24 18:26 Atharv Dubey
2026-03-24 18:26 ` [PATCH 01/10] i2c: tiny-usb: Replace dev_err() with dev_err_probe() in probe function Atharv Dubey
` (9 more replies)
0 siblings, 10 replies; 13+ messages in thread
From: Atharv Dubey @ 2026-03-24 18:26 UTC (permalink / raw)
To: Till Harbaum, Andi Shyti, Laxman Dewangan, Dmitry Osipenko,
Thierry Reding, Jonathan Hunter, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Pierre-Yves MORDRET, Alain Volmat,
Maxime Coquelin, Alexandre Torgue, Patrice Chotard, Orson Zhai,
Baolin Wang, Chunyan Zhang, Jean Delvare
Cc: linux-i2c, linux-kernel, linux-tegra, linux-arm-kernel,
linux-sunxi, linux-stm32, Enrico Zanda, Atharv Dubey
This patch series replaces dev_err() with dev_err_probe() in the probe()
functions of each module.
This simplifies the code and improves logs.
---
This Patch series was intially sent out by Encrio[1],
this series is an effort to get it reviewed and upstream
it.
[1]: https://lore.kernel.org/all/20250520194400.341079-3-e.zanda1@gmail.com/t/#u
---
Enrico Zanda (10):
i2c: tiny-usb: Replace dev_err() with dev_err_probe() in probe function
i2c: tegra: Replace dev_err() with dev_err_probe() in probe function
i2c: sun6i-p2wi: Replace dev_err() with dev_err_probe() in probe function
i2c: stm32f7: Replace dev_err() with dev_err_probe() in probe function
i2c: stm32f4: Replace dev_err() with dev_err_probe() in probe function
i2c: stm32: Replace dev_err() with dev_err_probe() in probe function
i2c: st: Replace dev_err() with dev_err_probe() in probe function
i2c: sprd: Replace dev_err() with dev_err_probe() in probe function
i2c: sis96x: Replace dev_err() with dev_err_probe() in probe function
i2c: sis630: Replace dev_err() with dev_err_probe() in probe function
drivers/i2c/busses/i2c-sis630.c | 31 +++++++--------
drivers/i2c/busses/i2c-sis96x.c | 30 +++++++-------
drivers/i2c/busses/i2c-sprd.c | 13 +++----
drivers/i2c/busses/i2c-st.c | 34 +++++++---------
drivers/i2c/busses/i2c-stm32.c | 4 +-
drivers/i2c/busses/i2c-stm32f4.c | 53 ++++++++++---------------
drivers/i2c/busses/i2c-stm32f7.c | 78 ++++++++++++++-----------------------
drivers/i2c/busses/i2c-sun6i-p2wi.c | 55 ++++++++++----------------
drivers/i2c/busses/i2c-tegra.c | 12 +++---
drivers/i2c/busses/i2c-tiny-usb.c | 5 +--
10 files changed, 127 insertions(+), 188 deletions(-)
---
base-commit: c612261bedd6bbab7109f798715e449c9d20ff2f
change-id: 20260324-deverr-4b0b0e50195c
Best regards,
--
Atharv Dubey <atharvd440@gmail.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 01/10] i2c: tiny-usb: Replace dev_err() with dev_err_probe() in probe function
2026-03-24 18:26 [PATCH 00/10] i2c: Replace dev_err() with dev_err_probe() Atharv Dubey
@ 2026-03-24 18:26 ` Atharv Dubey
2026-03-24 18:26 ` [PATCH 02/10] i2c: tegra: " Atharv Dubey
` (8 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Atharv Dubey @ 2026-03-24 18:26 UTC (permalink / raw)
To: Till Harbaum, Andi Shyti, Laxman Dewangan, Dmitry Osipenko,
Thierry Reding, Jonathan Hunter, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Pierre-Yves MORDRET, Alain Volmat,
Maxime Coquelin, Alexandre Torgue, Patrice Chotard, Orson Zhai,
Baolin Wang, Chunyan Zhang, Jean Delvare
Cc: linux-i2c, linux-kernel, linux-tegra, linux-arm-kernel,
linux-sunxi, linux-stm32, Enrico Zanda, Atharv Dubey
From: Enrico Zanda <e.zanda1@gmail.com>
This simplifies the code while improving log.
Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Signed-off-by: Atharv Dubey <atharvd440@gmail.com>
---
drivers/i2c/busses/i2c-tiny-usb.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/i2c/busses/i2c-tiny-usb.c b/drivers/i2c/busses/i2c-tiny-usb.c
index 9ef495f88ef2..0637c71126f9 100644
--- a/drivers/i2c/busses/i2c-tiny-usb.c
+++ b/drivers/i2c/busses/i2c-tiny-usb.c
@@ -260,9 +260,8 @@ static int i2c_tiny_usb_probe(struct usb_interface *interface,
dev->usb_dev->bus->busnum, dev->usb_dev->devnum);
if (usb_write(&dev->adapter, CMD_SET_DELAY, delay, 0, NULL, 0) != 0) {
- dev_err(&dev->adapter.dev,
- "failure setting delay to %dus\n", delay);
- retval = -EIO;
+ retval = dev_err_probe(&dev->adapter.dev, -EIO,
+ "failure setting delay to %dus\n", delay);
goto error;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 02/10] i2c: tegra: Replace dev_err() with dev_err_probe() in probe function
2026-03-24 18:26 [PATCH 00/10] i2c: Replace dev_err() with dev_err_probe() Atharv Dubey
2026-03-24 18:26 ` [PATCH 01/10] i2c: tiny-usb: Replace dev_err() with dev_err_probe() in probe function Atharv Dubey
@ 2026-03-24 18:26 ` Atharv Dubey
2026-03-24 21:04 ` Jon Hunter
2026-03-24 18:26 ` [PATCH 03/10] i2c: sun6i-p2wi: " Atharv Dubey
` (7 subsequent siblings)
9 siblings, 1 reply; 13+ messages in thread
From: Atharv Dubey @ 2026-03-24 18:26 UTC (permalink / raw)
To: Till Harbaum, Andi Shyti, Laxman Dewangan, Dmitry Osipenko,
Thierry Reding, Jonathan Hunter, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Pierre-Yves MORDRET, Alain Volmat,
Maxime Coquelin, Alexandre Torgue, Patrice Chotard, Orson Zhai,
Baolin Wang, Chunyan Zhang, Jean Delvare
Cc: linux-i2c, linux-kernel, linux-tegra, linux-arm-kernel,
linux-sunxi, linux-stm32, Enrico Zanda, Atharv Dubey
From: Enrico Zanda <e.zanda1@gmail.com>
This simplifies the code while improving log.
Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Signed-off-by: Atharv Dubey <atharvd440@gmail.com>
---
drivers/i2c/busses/i2c-tegra.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
index bec619b9af4e..51d15fca82fc 100644
--- a/drivers/i2c/busses/i2c-tegra.c
+++ b/drivers/i2c/busses/i2c-tegra.c
@@ -575,8 +575,8 @@ static int tegra_i2c_init_dma(struct tegra_i2c_dev *i2c_dev)
dma_buf = dma_alloc_coherent(i2c_dev->dma_dev, i2c_dev->dma_buf_size,
&dma_phys, GFP_KERNEL | __GFP_NOWARN);
if (!dma_buf) {
- dev_err(i2c_dev->dev, "failed to allocate DMA buffer\n");
- err = -ENOMEM;
+ err = dev_err_probe(i2c_dev->dev, -ENOMEM,
+ "failed to allocate DMA buffer\n");
goto err_out;
}
@@ -588,8 +588,8 @@ static int tegra_i2c_init_dma(struct tegra_i2c_dev *i2c_dev)
err_out:
tegra_i2c_release_dma(i2c_dev);
if (err != -EPROBE_DEFER) {
- dev_err(i2c_dev->dev, "cannot use DMA: %d\n", err);
- dev_err(i2c_dev->dev, "falling back to PIO\n");
+ dev_err_probe(i2c_dev->dev, err,
+ "cannot use DMA, falling back to PIO\n");
return 0;
}
@@ -1953,7 +1953,7 @@ static int tegra_i2c_init_clocks(struct tegra_i2c_dev *i2c_dev)
err = clk_enable(i2c_dev->div_clk);
if (err) {
- dev_err(i2c_dev->dev, "failed to enable div-clk: %d\n", err);
+ dev_err_probe(i2c_dev->dev, err, "failed to enable div-clk\n");
goto unprepare_clocks;
}
@@ -1979,7 +1979,7 @@ static int tegra_i2c_init_hardware(struct tegra_i2c_dev *i2c_dev)
ret = pm_runtime_get_sync(i2c_dev->dev);
if (ret < 0)
- dev_err(i2c_dev->dev, "runtime resume failed: %d\n", ret);
+ dev_err_probe(i2c_dev->dev, ret, "runtime resume failed\n");
else
ret = tegra_i2c_init(i2c_dev);
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 03/10] i2c: sun6i-p2wi: Replace dev_err() with dev_err_probe() in probe function
2026-03-24 18:26 [PATCH 00/10] i2c: Replace dev_err() with dev_err_probe() Atharv Dubey
2026-03-24 18:26 ` [PATCH 01/10] i2c: tiny-usb: Replace dev_err() with dev_err_probe() in probe function Atharv Dubey
2026-03-24 18:26 ` [PATCH 02/10] i2c: tegra: " Atharv Dubey
@ 2026-03-24 18:26 ` Atharv Dubey
2026-03-25 16:01 ` Chen-Yu Tsai
2026-03-24 18:26 ` [PATCH 04/10] i2c: stm32f7: " Atharv Dubey
` (6 subsequent siblings)
9 siblings, 1 reply; 13+ messages in thread
From: Atharv Dubey @ 2026-03-24 18:26 UTC (permalink / raw)
To: Till Harbaum, Andi Shyti, Laxman Dewangan, Dmitry Osipenko,
Thierry Reding, Jonathan Hunter, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Pierre-Yves MORDRET, Alain Volmat,
Maxime Coquelin, Alexandre Torgue, Patrice Chotard, Orson Zhai,
Baolin Wang, Chunyan Zhang, Jean Delvare
Cc: linux-i2c, linux-kernel, linux-tegra, linux-arm-kernel,
linux-sunxi, linux-stm32, Enrico Zanda, Atharv Dubey
From: Enrico Zanda <e.zanda1@gmail.com>
This simplifies the code while improving log.
Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Signed-off-by: Atharv Dubey <atharvd440@gmail.com>
---
drivers/i2c/busses/i2c-sun6i-p2wi.c | 55 ++++++++++++++-----------------------
1 file changed, 20 insertions(+), 35 deletions(-)
diff --git a/drivers/i2c/busses/i2c-sun6i-p2wi.c b/drivers/i2c/busses/i2c-sun6i-p2wi.c
index fb5280b8cf7f..dffbe776a195 100644
--- a/drivers/i2c/busses/i2c-sun6i-p2wi.c
+++ b/drivers/i2c/busses/i2c-sun6i-p2wi.c
@@ -194,22 +194,16 @@ static int p2wi_probe(struct platform_device *pdev)
int ret;
of_property_read_u32(np, "clock-frequency", &clk_freq);
- if (clk_freq > P2WI_MAX_FREQ) {
- dev_err(dev,
- "required clock-frequency (%u Hz) is too high (max = 6MHz)",
- clk_freq);
- return -EINVAL;
- }
+ if (clk_freq > P2WI_MAX_FREQ)
+ return dev_err_probe(dev, -EINVAL,
+ "required clock-frequency (%u Hz) is too high (max = 6MHz)",
+ clk_freq);
- if (clk_freq == 0) {
- dev_err(dev, "clock-frequency is set to 0 in DT\n");
- return -EINVAL;
- }
+ if (clk_freq == 0)
+ return dev_err_probe(dev, -EINVAL, "clock-frequency is set to 0 in DT\n");
- if (of_get_child_count(np) > 1) {
- dev_err(dev, "P2WI only supports one target device\n");
- return -EINVAL;
- }
+ if (of_get_child_count(np) > 1)
+ return dev_err_probe(dev, -EINVAL, "P2WI only supports one target device\n");
p2wi = devm_kzalloc(dev, sizeof(struct p2wi), GFP_KERNEL);
if (!p2wi)
@@ -226,11 +220,9 @@ static int p2wi_probe(struct platform_device *pdev)
childnp = of_get_next_available_child(np, NULL);
if (childnp) {
ret = of_property_read_u32(childnp, "reg", &target_addr);
- if (ret) {
- dev_err(dev, "invalid target address on node %pOF\n",
- childnp);
- return -EINVAL;
- }
+ if (ret)
+ return dev_err_probe(dev, -EINVAL,
+ "invalid target address on node %pOF\n", childnp);
p2wi->target_addr = target_addr;
}
@@ -245,26 +237,20 @@ static int p2wi_probe(struct platform_device *pdev)
return irq;
p2wi->clk = devm_clk_get_enabled(dev, NULL);
- if (IS_ERR(p2wi->clk)) {
- ret = PTR_ERR(p2wi->clk);
- dev_err(dev, "failed to enable clk: %d\n", ret);
- return ret;
- }
+ if (IS_ERR(p2wi->clk))
+ return dev_err_probe(dev, PTR_ERR(p2wi->clk),
+ "failed to enable clk\n");
parent_clk_freq = clk_get_rate(p2wi->clk);
p2wi->rstc = devm_reset_control_get_exclusive(dev, NULL);
- if (IS_ERR(p2wi->rstc)) {
- dev_err(dev, "failed to retrieve reset controller: %pe\n",
- p2wi->rstc);
- return PTR_ERR(p2wi->rstc);
- }
+ if (IS_ERR(p2wi->rstc))
+ return dev_err_probe(dev, PTR_ERR(p2wi->rstc),
+ "failed to retrieve reset controller\n");
ret = reset_control_deassert(p2wi->rstc);
- if (ret) {
- dev_err(dev, "failed to deassert reset line: %d\n", ret);
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret, "failed to deassert reset line\n");
init_completion(&p2wi->complete);
p2wi->adapter.dev.parent = dev;
@@ -276,8 +262,7 @@ static int p2wi_probe(struct platform_device *pdev)
ret = devm_request_irq(dev, irq, p2wi_interrupt, 0, pdev->name, p2wi);
if (ret) {
- dev_err(dev, "can't register interrupt handler irq%d: %d\n",
- irq, ret);
+ dev_err_probe(dev, ret, "can't register interrupt handler irq%d\n", irq);
goto err_reset_assert;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 04/10] i2c: stm32f7: Replace dev_err() with dev_err_probe() in probe function
2026-03-24 18:26 [PATCH 00/10] i2c: Replace dev_err() with dev_err_probe() Atharv Dubey
` (2 preceding siblings ...)
2026-03-24 18:26 ` [PATCH 03/10] i2c: sun6i-p2wi: " Atharv Dubey
@ 2026-03-24 18:26 ` Atharv Dubey
2026-03-24 18:26 ` [PATCH 05/10] i2c: stm32f4: " Atharv Dubey
` (5 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Atharv Dubey @ 2026-03-24 18:26 UTC (permalink / raw)
To: Till Harbaum, Andi Shyti, Laxman Dewangan, Dmitry Osipenko,
Thierry Reding, Jonathan Hunter, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Pierre-Yves MORDRET, Alain Volmat,
Maxime Coquelin, Alexandre Torgue, Patrice Chotard, Orson Zhai,
Baolin Wang, Chunyan Zhang, Jean Delvare
Cc: linux-i2c, linux-kernel, linux-tegra, linux-arm-kernel,
linux-sunxi, linux-stm32, Enrico Zanda, Atharv Dubey
From: Enrico Zanda <e.zanda1@gmail.com>
This simplifies the code while improving log.
Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Signed-off-by: Atharv Dubey <atharvd440@gmail.com>
---
drivers/i2c/busses/i2c-stm32f7.c | 78 ++++++++++++++++------------------------
1 file changed, 30 insertions(+), 48 deletions(-)
diff --git a/drivers/i2c/busses/i2c-stm32f7.c b/drivers/i2c/busses/i2c-stm32f7.c
index 70cb5822bf17..e7cc7f0fb56c 100644
--- a/drivers/i2c/busses/i2c-stm32f7.c
+++ b/drivers/i2c/busses/i2c-stm32f7.c
@@ -481,28 +481,22 @@ static int stm32f7_i2c_compute_timing(struct stm32f7_i2c_dev *i2c_dev,
int ret = 0;
specs = stm32f7_get_specs(setup->speed_freq);
- if (specs == ERR_PTR(-EINVAL)) {
- dev_err(i2c_dev->dev, "speed out of bound {%d}\n",
- setup->speed_freq);
- return -EINVAL;
- }
+ if (specs == ERR_PTR(-EINVAL))
+ return dev_err_probe(i2c_dev->dev, -EINVAL, "speed out of bound {%d}\n",
+ setup->speed_freq);
if ((setup->rise_time > specs->rise_max) ||
- (setup->fall_time > specs->fall_max)) {
- dev_err(i2c_dev->dev,
- "timings out of bound Rise{%d>%d}/Fall{%d>%d}\n",
- setup->rise_time, specs->rise_max,
- setup->fall_time, specs->fall_max);
- return -EINVAL;
- }
+ (setup->fall_time > specs->fall_max))
+ return dev_err_probe(i2c_dev->dev, -EINVAL,
+ "timings out of bound Rise{%d>%d}/Fall{%d>%d}\n",
+ setup->rise_time, specs->rise_max,
+ setup->fall_time, specs->fall_max);
i2c_dev->dnf = DIV_ROUND_CLOSEST(i2c_dev->dnf_dt, i2cclk);
- if (i2c_dev->dnf > STM32F7_I2C_DNF_MAX) {
- dev_err(i2c_dev->dev,
- "DNF out of bound %d/%d\n",
- i2c_dev->dnf * i2cclk, STM32F7_I2C_DNF_MAX * i2cclk);
- return -EINVAL;
- }
+ if (i2c_dev->dnf > STM32F7_I2C_DNF_MAX)
+ return dev_err_probe(i2c_dev->dev, -EINVAL,
+ "DNF out of bound %d/%d\n", i2c_dev->dnf * i2cclk,
+ STM32F7_I2C_DNF_MAX * i2cclk);
/* Analog and Digital Filters */
af_delay_min =
@@ -567,8 +561,7 @@ static int stm32f7_i2c_compute_timing(struct stm32f7_i2c_dev *i2c_dev,
}
if (list_empty(&solutions)) {
- dev_err(i2c_dev->dev, "no Prescaler solution\n");
- ret = -EPERM;
+ ret = dev_err_probe(i2c_dev->dev, -EPERM, "no Prescaler solution\n");
goto exit;
}
@@ -624,8 +617,7 @@ static int stm32f7_i2c_compute_timing(struct stm32f7_i2c_dev *i2c_dev,
}
if (!s) {
- dev_err(i2c_dev->dev, "no solution at all\n");
- ret = -EPERM;
+ ret = dev_err_probe(i2c_dev->dev, -EPERM, "no solution at all\n");
goto exit;
}
@@ -674,11 +666,9 @@ static int stm32f7_i2c_setup_timing(struct stm32f7_i2c_dev *i2c_dev,
i2c_parse_fw_timings(i2c_dev->dev, t, false);
- if (t->bus_freq_hz > I2C_MAX_FAST_MODE_PLUS_FREQ) {
- dev_err(i2c_dev->dev, "Invalid bus speed (%i>%i)\n",
- t->bus_freq_hz, I2C_MAX_FAST_MODE_PLUS_FREQ);
- return -EINVAL;
- }
+ if (t->bus_freq_hz > I2C_MAX_FAST_MODE_PLUS_FREQ)
+ return dev_err_probe(i2c_dev->dev, -EINVAL, "Invalid bus speed (%i>%i)\n",
+ t->bus_freq_hz, I2C_MAX_FAST_MODE_PLUS_FREQ);
setup->speed_freq = t->bus_freq_hz;
i2c_dev->setup.rise_time = t->scl_rise_ns;
@@ -686,10 +676,8 @@ static int stm32f7_i2c_setup_timing(struct stm32f7_i2c_dev *i2c_dev,
i2c_dev->dnf_dt = t->digital_filter_width_ns;
setup->clock_src = clk_get_rate(i2c_dev->clk);
- if (!setup->clock_src) {
- dev_err(i2c_dev->dev, "clock rate is 0\n");
- return -EINVAL;
- }
+ if (!setup->clock_src)
+ return dev_err_probe(i2c_dev->dev, -EINVAL, "clock rate is 0\n");
if (!of_property_read_bool(i2c_dev->dev->of_node, "i2c-digital-filter"))
i2c_dev->dnf_dt = STM32F7_I2C_DNF_DEFAULT;
@@ -698,8 +686,8 @@ static int stm32f7_i2c_setup_timing(struct stm32f7_i2c_dev *i2c_dev,
ret = stm32f7_i2c_compute_timing(i2c_dev, setup,
&i2c_dev->timing);
if (ret) {
- dev_err(i2c_dev->dev,
- "failed to compute I2C timings.\n");
+ dev_err_probe(i2c_dev->dev, ret,
+ "failed to compute I2C timings.\n");
if (setup->speed_freq <= I2C_MAX_STANDARD_MODE_FREQ)
break;
setup->speed_freq =
@@ -710,10 +698,8 @@ static int stm32f7_i2c_setup_timing(struct stm32f7_i2c_dev *i2c_dev,
}
} while (ret);
- if (ret) {
- dev_err(i2c_dev->dev, "Impossible to compute I2C timings.\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(i2c_dev->dev, ret, "Impossible to compute I2C timings.\n");
i2c_dev->analog_filter = of_property_read_bool(i2c_dev->dev->of_node,
"i2c-analog-filter");
@@ -2175,10 +2161,8 @@ static int stm32f7_i2c_probe(struct platform_device *pdev)
return -ENOMEM;
setup = of_device_get_match_data(&pdev->dev);
- if (!setup) {
- dev_err(&pdev->dev, "Can't get device data\n");
- return -ENODEV;
- }
+ if (!setup)
+ return dev_err_probe(&pdev->dev, -ENODEV, "Can't get device data\n");
i2c_dev->setup = *setup;
i2c_dev->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
@@ -2279,7 +2263,7 @@ static int stm32f7_i2c_probe(struct platform_device *pdev)
ret = dev_pm_set_wake_irq(i2c_dev->dev, irq_event);
if (ret) {
- dev_err(i2c_dev->dev, "Failed to set wake up irq\n");
+ dev_err_probe(i2c_dev->dev, ret, "Failed to set wake up irq\n");
goto clr_wakeup_capable;
}
}
@@ -2305,9 +2289,8 @@ static int stm32f7_i2c_probe(struct platform_device *pdev)
if (i2c_dev->smbus_mode) {
ret = stm32f7_i2c_enable_smbus_host(i2c_dev);
if (ret) {
- dev_err(i2c_dev->dev,
- "failed to enable SMBus Host-Notify protocol (%d)\n",
- ret);
+ dev_err_probe(i2c_dev->dev, ret,
+ "failed to enable SMBus Host-Notify protocol\n");
goto i2c_adapter_remove;
}
}
@@ -2315,9 +2298,8 @@ static int stm32f7_i2c_probe(struct platform_device *pdev)
if (of_property_read_bool(pdev->dev.of_node, "smbus-alert")) {
ret = stm32f7_i2c_enable_smbus_alert(i2c_dev);
if (ret) {
- dev_err(i2c_dev->dev,
- "failed to enable SMBus alert protocol (%d)\n",
- ret);
+ dev_err_probe(i2c_dev->dev, ret,
+ "failed to enable SMBus alert protocol\n");
goto i2c_disable_smbus_host;
}
}
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 05/10] i2c: stm32f4: Replace dev_err() with dev_err_probe() in probe function
2026-03-24 18:26 [PATCH 00/10] i2c: Replace dev_err() with dev_err_probe() Atharv Dubey
` (3 preceding siblings ...)
2026-03-24 18:26 ` [PATCH 04/10] i2c: stm32f7: " Atharv Dubey
@ 2026-03-24 18:26 ` Atharv Dubey
2026-03-24 18:26 ` [PATCH 06/10] i2c: stm32: " Atharv Dubey
` (4 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Atharv Dubey @ 2026-03-24 18:26 UTC (permalink / raw)
To: Till Harbaum, Andi Shyti, Laxman Dewangan, Dmitry Osipenko,
Thierry Reding, Jonathan Hunter, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Pierre-Yves MORDRET, Alain Volmat,
Maxime Coquelin, Alexandre Torgue, Patrice Chotard, Orson Zhai,
Baolin Wang, Chunyan Zhang, Jean Delvare
Cc: linux-i2c, linux-kernel, linux-tegra, linux-arm-kernel,
linux-sunxi, linux-stm32, Enrico Zanda, Atharv Dubey
From: Enrico Zanda <e.zanda1@gmail.com>
This simplifies the code while improving log.
Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Signed-off-by: Atharv Dubey <atharvd440@gmail.com>
---
drivers/i2c/busses/i2c-stm32f4.c | 53 ++++++++++++++++------------------------
1 file changed, 21 insertions(+), 32 deletions(-)
diff --git a/drivers/i2c/busses/i2c-stm32f4.c b/drivers/i2c/busses/i2c-stm32f4.c
index b3d56d0aa9d0..44e8b04962bb 100644
--- a/drivers/i2c/busses/i2c-stm32f4.c
+++ b/drivers/i2c/busses/i2c-stm32f4.c
@@ -163,11 +163,9 @@ static int stm32f4_i2c_set_periph_clk_freq(struct stm32f4_i2c_dev *i2c_dev)
* to hardware limitation
*/
if (freq < STM32F4_I2C_MIN_STANDARD_FREQ ||
- freq > STM32F4_I2C_MAX_FREQ) {
- dev_err(i2c_dev->dev,
- "bad parent clk freq for standard mode\n");
- return -EINVAL;
- }
+ freq > STM32F4_I2C_MAX_FREQ)
+ return dev_err_probe(i2c_dev->dev, -EINVAL,
+ "bad parent clk freq for standard mode\n");
} else {
/*
* To be as close as possible to 400 kHz, the parent clk
@@ -175,11 +173,9 @@ static int stm32f4_i2c_set_periph_clk_freq(struct stm32f4_i2c_dev *i2c_dev)
* maximum value of 46 MHz due to hardware limitation
*/
if (freq < STM32F4_I2C_MIN_FAST_FREQ ||
- freq > STM32F4_I2C_MAX_FREQ) {
- dev_err(i2c_dev->dev,
- "bad parent clk freq for fast mode\n");
- return -EINVAL;
- }
+ freq > STM32F4_I2C_MAX_FREQ)
+ return dev_err_probe(i2c_dev->dev, -EINVAL,
+ "bad parent clk freq for fast mode\n");
}
cr2 |= STM32F4_I2C_CR2_FREQ(freq);
@@ -772,22 +768,19 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
return PTR_ERR(i2c_dev->base);
irq_event = irq_of_parse_and_map(np, 0);
- if (!irq_event) {
- dev_err(&pdev->dev, "IRQ event missing or invalid\n");
- return -EINVAL;
- }
+ if (!irq_event)
+ return dev_err_probe(&pdev->dev, -EINVAL,
+ "IRQ event missing or invalid\n");
irq_error = irq_of_parse_and_map(np, 1);
- if (!irq_error) {
- dev_err(&pdev->dev, "IRQ error missing or invalid\n");
- return -EINVAL;
- }
+ if (!irq_error)
+ return dev_err_probe(&pdev->dev, -EINVAL,
+ "IRQ error missing or invalid\n");
i2c_dev->clk = devm_clk_get_enabled(&pdev->dev, NULL);
- if (IS_ERR(i2c_dev->clk)) {
- dev_err(&pdev->dev, "Failed to enable clock\n");
- return PTR_ERR(i2c_dev->clk);
- }
+ if (IS_ERR(i2c_dev->clk))
+ return dev_err_probe(&pdev->dev, PTR_ERR(i2c_dev->clk),
+ "Failed to enable clock\n");
rst = devm_reset_control_get_exclusive(&pdev->dev, NULL);
if (IS_ERR(rst))
@@ -807,19 +800,15 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
ret = devm_request_irq(&pdev->dev, irq_event, stm32f4_i2c_isr_event, 0,
pdev->name, i2c_dev);
- if (ret) {
- dev_err(&pdev->dev, "Failed to request irq event %i\n",
- irq_event);
- return ret;
- }
+ if (ret)
+ return dev_err_probe(&pdev->dev, ret,
+ "Failed to request irq event %i\n", irq_event);
ret = devm_request_irq(&pdev->dev, irq_error, stm32f4_i2c_isr_error, 0,
pdev->name, i2c_dev);
- if (ret) {
- dev_err(&pdev->dev, "Failed to request irq error %i\n",
- irq_error);
- return ret;
- }
+ if (ret)
+ return dev_err_probe(&pdev->dev, ret,
+ "Failed to request irq error %i\n", irq_error);
ret = stm32f4_i2c_hw_config(i2c_dev);
if (ret)
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 06/10] i2c: stm32: Replace dev_err() with dev_err_probe() in probe function
2026-03-24 18:26 [PATCH 00/10] i2c: Replace dev_err() with dev_err_probe() Atharv Dubey
` (4 preceding siblings ...)
2026-03-24 18:26 ` [PATCH 05/10] i2c: stm32f4: " Atharv Dubey
@ 2026-03-24 18:26 ` Atharv Dubey
2026-03-24 18:26 ` [PATCH 07/10] i2c: st: " Atharv Dubey
` (3 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Atharv Dubey @ 2026-03-24 18:26 UTC (permalink / raw)
To: Till Harbaum, Andi Shyti, Laxman Dewangan, Dmitry Osipenko,
Thierry Reding, Jonathan Hunter, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Pierre-Yves MORDRET, Alain Volmat,
Maxime Coquelin, Alexandre Torgue, Patrice Chotard, Orson Zhai,
Baolin Wang, Chunyan Zhang, Jean Delvare
Cc: linux-i2c, linux-kernel, linux-tegra, linux-arm-kernel,
linux-sunxi, linux-stm32, Enrico Zanda, Atharv Dubey
From: Enrico Zanda <e.zanda1@gmail.com>
This simplifies the code while improving log.
Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Signed-off-by: Atharv Dubey <atharvd440@gmail.com>
---
drivers/i2c/busses/i2c-stm32.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/i2c/busses/i2c-stm32.c b/drivers/i2c/busses/i2c-stm32.c
index becf8977979f..064e47d6c96f 100644
--- a/drivers/i2c/busses/i2c-stm32.c
+++ b/drivers/i2c/busses/i2c-stm32.c
@@ -39,7 +39,7 @@ struct stm32_i2c_dma *stm32_i2c_dma_request(struct device *dev,
dma_sconfig.direction = DMA_MEM_TO_DEV;
ret = dmaengine_slave_config(dma->chan_tx, &dma_sconfig);
if (ret < 0) {
- dev_err(dev, "can't configure tx channel\n");
+ dev_err_probe(dev, ret, "can't configure tx channel\n");
goto fail_tx;
}
@@ -60,7 +60,7 @@ struct stm32_i2c_dma *stm32_i2c_dma_request(struct device *dev,
dma_sconfig.direction = DMA_DEV_TO_MEM;
ret = dmaengine_slave_config(dma->chan_rx, &dma_sconfig);
if (ret < 0) {
- dev_err(dev, "can't configure rx channel\n");
+ dev_err_probe(dev, ret, "can't configure rx channel\n");
goto fail_rx;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 07/10] i2c: st: Replace dev_err() with dev_err_probe() in probe function
2026-03-24 18:26 [PATCH 00/10] i2c: Replace dev_err() with dev_err_probe() Atharv Dubey
` (5 preceding siblings ...)
2026-03-24 18:26 ` [PATCH 06/10] i2c: stm32: " Atharv Dubey
@ 2026-03-24 18:26 ` Atharv Dubey
2026-03-24 18:26 ` [PATCH 08/10] i2c: sprd: " Atharv Dubey
` (2 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Atharv Dubey @ 2026-03-24 18:26 UTC (permalink / raw)
To: Till Harbaum, Andi Shyti, Laxman Dewangan, Dmitry Osipenko,
Thierry Reding, Jonathan Hunter, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Pierre-Yves MORDRET, Alain Volmat,
Maxime Coquelin, Alexandre Torgue, Patrice Chotard, Orson Zhai,
Baolin Wang, Chunyan Zhang, Jean Delvare
Cc: linux-i2c, linux-kernel, linux-tegra, linux-arm-kernel,
linux-sunxi, linux-stm32, Enrico Zanda, Atharv Dubey
From: Enrico Zanda <e.zanda1@gmail.com>
This simplifies the code while improving log.
Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Signed-off-by: Atharv Dubey <atharvd440@gmail.com>
---
drivers/i2c/busses/i2c-st.c | 34 ++++++++++++++--------------------
1 file changed, 14 insertions(+), 20 deletions(-)
diff --git a/drivers/i2c/busses/i2c-st.c b/drivers/i2c/busses/i2c-st.c
index 751ea421caaf..3f89c2145741 100644
--- a/drivers/i2c/busses/i2c-st.c
+++ b/drivers/i2c/busses/i2c-st.c
@@ -775,17 +775,15 @@ static int st_i2c_of_get_deglitch(struct device_node *np,
ret = of_property_read_u32(np, "st,i2c-min-scl-pulse-width-us",
&i2c_dev->scl_min_width_us);
- if ((ret == -ENODATA) || (ret == -EOVERFLOW)) {
- dev_err(i2c_dev->dev, "st,i2c-min-scl-pulse-width-us invalid\n");
- return ret;
- }
+ if ((ret == -ENODATA) || (ret == -EOVERFLOW))
+ return dev_err_probe(i2c_dev->dev, ret,
+ "st,i2c-min-scl-pulse-width-us invalid\n");
ret = of_property_read_u32(np, "st,i2c-min-sda-pulse-width-us",
&i2c_dev->sda_min_width_us);
- if ((ret == -ENODATA) || (ret == -EOVERFLOW)) {
- dev_err(i2c_dev->dev, "st,i2c-min-sda-pulse-width-us invalid\n");
- return ret;
- }
+ if ((ret == -ENODATA) || (ret == -EOVERFLOW))
+ return dev_err_probe(i2c_dev->dev, ret,
+ "st,i2c-min-sda-pulse-width-us invalid\n");
return 0;
}
@@ -808,16 +806,13 @@ static int st_i2c_probe(struct platform_device *pdev)
return PTR_ERR(i2c_dev->base);
i2c_dev->irq = irq_of_parse_and_map(np, 0);
- if (!i2c_dev->irq) {
- dev_err(&pdev->dev, "IRQ missing or invalid\n");
- return -EINVAL;
- }
+ if (!i2c_dev->irq)
+ return dev_err_probe(&pdev->dev, -EINVAL, "IRQ missing or invalid\n");
i2c_dev->clk = of_clk_get_by_name(np, "ssc");
- if (IS_ERR(i2c_dev->clk)) {
- dev_err(&pdev->dev, "Unable to request clock\n");
- return PTR_ERR(i2c_dev->clk);
- }
+ if (IS_ERR(i2c_dev->clk))
+ return dev_err_probe(&pdev->dev, PTR_ERR(i2c_dev->clk),
+ "Unable to request clock\n");
i2c_dev->mode = I2C_MODE_STANDARD;
ret = of_property_read_u32(np, "clock-frequency", &clk_rate);
@@ -829,10 +824,9 @@ static int st_i2c_probe(struct platform_device *pdev)
ret = devm_request_threaded_irq(&pdev->dev, i2c_dev->irq,
NULL, st_i2c_isr_thread,
IRQF_ONESHOT, pdev->name, i2c_dev);
- if (ret) {
- dev_err(&pdev->dev, "Failed to request irq %i\n", i2c_dev->irq);
- return ret;
- }
+ if (ret)
+ return dev_err_probe(&pdev->dev, ret,
+ "Failed to request irq %i\n", i2c_dev->irq);
pinctrl_pm_select_default_state(i2c_dev->dev);
/* In case idle state available, select it */
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 08/10] i2c: sprd: Replace dev_err() with dev_err_probe() in probe function
2026-03-24 18:26 [PATCH 00/10] i2c: Replace dev_err() with dev_err_probe() Atharv Dubey
` (6 preceding siblings ...)
2026-03-24 18:26 ` [PATCH 07/10] i2c: st: " Atharv Dubey
@ 2026-03-24 18:26 ` Atharv Dubey
2026-03-24 18:26 ` [PATCH 09/10] i2c: sis96x: " Atharv Dubey
2026-03-24 18:26 ` [PATCH 10/10] i2c: sis630: " Atharv Dubey
9 siblings, 0 replies; 13+ messages in thread
From: Atharv Dubey @ 2026-03-24 18:26 UTC (permalink / raw)
To: Till Harbaum, Andi Shyti, Laxman Dewangan, Dmitry Osipenko,
Thierry Reding, Jonathan Hunter, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Pierre-Yves MORDRET, Alain Volmat,
Maxime Coquelin, Alexandre Torgue, Patrice Chotard, Orson Zhai,
Baolin Wang, Chunyan Zhang, Jean Delvare
Cc: linux-i2c, linux-kernel, linux-tegra, linux-arm-kernel,
linux-sunxi, linux-stm32, Enrico Zanda, Atharv Dubey
From: Enrico Zanda <e.zanda1@gmail.com>
This simplifies the code while improving log.
Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Signed-off-by: Atharv Dubey <atharvd440@gmail.com>
---
drivers/i2c/busses/i2c-sprd.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/drivers/i2c/busses/i2c-sprd.c b/drivers/i2c/busses/i2c-sprd.c
index 1b490525d8dd..7b321a956fca 100644
--- a/drivers/i2c/busses/i2c-sprd.c
+++ b/drivers/i2c/busses/i2c-sprd.c
@@ -469,11 +469,10 @@ static int sprd_i2c_clk_init(struct sprd_i2c *i2c_dev)
i2c_dev->adap.nr, i2c_dev->src_clk);
i2c_dev->clk = devm_clk_get(i2c_dev->dev, "enable");
- if (IS_ERR(i2c_dev->clk)) {
- dev_err(i2c_dev->dev, "i2c%d can't get the enable clock\n",
- i2c_dev->adap.nr);
- return PTR_ERR(i2c_dev->clk);
- }
+ if (IS_ERR(i2c_dev->clk))
+ return dev_err_probe(i2c_dev->dev, PTR_ERR(i2c_dev->clk),
+ "i2c%d can't get the enable clock\n",
+ i2c_dev->adap.nr);
return 0;
}
@@ -548,13 +547,13 @@ static int sprd_i2c_probe(struct platform_device *pdev)
IRQF_NO_SUSPEND | IRQF_ONESHOT,
pdev->name, i2c_dev);
if (ret) {
- dev_err(&pdev->dev, "failed to request irq %d\n", i2c_dev->irq);
+ dev_err_probe(&pdev->dev, ret, "failed to request irq %d\n", i2c_dev->irq);
goto err_rpm_put;
}
ret = i2c_add_numbered_adapter(&i2c_dev->adap);
if (ret) {
- dev_err(&pdev->dev, "add adapter failed\n");
+ dev_err_probe(&pdev->dev, ret, "add adapter failed\n");
goto err_rpm_put;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 09/10] i2c: sis96x: Replace dev_err() with dev_err_probe() in probe function
2026-03-24 18:26 [PATCH 00/10] i2c: Replace dev_err() with dev_err_probe() Atharv Dubey
` (7 preceding siblings ...)
2026-03-24 18:26 ` [PATCH 08/10] i2c: sprd: " Atharv Dubey
@ 2026-03-24 18:26 ` Atharv Dubey
2026-03-24 18:26 ` [PATCH 10/10] i2c: sis630: " Atharv Dubey
9 siblings, 0 replies; 13+ messages in thread
From: Atharv Dubey @ 2026-03-24 18:26 UTC (permalink / raw)
To: Till Harbaum, Andi Shyti, Laxman Dewangan, Dmitry Osipenko,
Thierry Reding, Jonathan Hunter, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Pierre-Yves MORDRET, Alain Volmat,
Maxime Coquelin, Alexandre Torgue, Patrice Chotard, Orson Zhai,
Baolin Wang, Chunyan Zhang, Jean Delvare
Cc: linux-i2c, linux-kernel, linux-tegra, linux-arm-kernel,
linux-sunxi, linux-stm32, Enrico Zanda, Atharv Dubey
From: Enrico Zanda <e.zanda1@gmail.com>
This simplifies the code while improving log.
Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Signed-off-by: Atharv Dubey <atharvd440@gmail.com>
---
drivers/i2c/busses/i2c-sis96x.c | 30 +++++++++++++-----------------
1 file changed, 13 insertions(+), 17 deletions(-)
diff --git a/drivers/i2c/busses/i2c-sis96x.c b/drivers/i2c/busses/i2c-sis96x.c
index 77529dda6fcd..eee41dc9d706 100644
--- a/drivers/i2c/busses/i2c-sis96x.c
+++ b/drivers/i2c/busses/i2c-sis96x.c
@@ -245,23 +245,19 @@ static int sis96x_probe(struct pci_dev *dev,
u16 ww = 0;
int retval;
- if (sis96x_smbus_base) {
- dev_err(&dev->dev, "Only one device supported.\n");
- return -EBUSY;
- }
+ if (sis96x_smbus_base)
+ return dev_err_probe(&dev->dev, -EBUSY, "Only one device supported.\n");
pci_read_config_word(dev, PCI_CLASS_DEVICE, &ww);
- if (PCI_CLASS_SERIAL_SMBUS != ww) {
- dev_err(&dev->dev, "Unsupported device class 0x%04x!\n", ww);
- return -ENODEV;
- }
+ if (ww != PCI_CLASS_SERIAL_SMBUS)
+ return dev_err_probe(&dev->dev, -ENODEV,
+ "Unsupported device class 0x%04x!\n", ww);
sis96x_smbus_base = pci_resource_start(dev, SIS96x_BAR);
- if (!sis96x_smbus_base) {
- dev_err(&dev->dev, "SiS96x SMBus base address "
- "not initialized!\n");
- return -EINVAL;
- }
+ if (!sis96x_smbus_base)
+ return dev_err_probe(&dev->dev, -EINVAL,
+ "SiS96x SMBus base address not initialized!\n");
+
dev_info(&dev->dev, "SiS96x SMBus base address: 0x%04x\n",
sis96x_smbus_base);
@@ -272,9 +268,9 @@ static int sis96x_probe(struct pci_dev *dev,
/* Everything is happy, let's grab the memory and set things up. */
if (!request_region(sis96x_smbus_base, SMB_IOSIZE,
sis96x_driver.name)) {
- dev_err(&dev->dev, "SMBus registers 0x%04x-0x%04x "
- "already in use!\n", sis96x_smbus_base,
- sis96x_smbus_base + SMB_IOSIZE - 1);
+ dev_err_probe(&dev->dev, -EINVAL,
+ "SMBus registers 0x%04x-0x%04x already in use!\n",
+ sis96x_smbus_base, sis96x_smbus_base + SMB_IOSIZE - 1);
sis96x_smbus_base = 0;
return -EINVAL;
@@ -287,7 +283,7 @@ static int sis96x_probe(struct pci_dev *dev,
"SiS96x SMBus adapter at 0x%04x", sis96x_smbus_base);
if ((retval = i2c_add_adapter(&sis96x_adapter))) {
- dev_err(&dev->dev, "Couldn't register adapter!\n");
+ dev_err_probe(&dev->dev, retval, "Couldn't register adapter!\n");
release_region(sis96x_smbus_base, SMB_IOSIZE);
sis96x_smbus_base = 0;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 10/10] i2c: sis630: Replace dev_err() with dev_err_probe() in probe function
2026-03-24 18:26 [PATCH 00/10] i2c: Replace dev_err() with dev_err_probe() Atharv Dubey
` (8 preceding siblings ...)
2026-03-24 18:26 ` [PATCH 09/10] i2c: sis96x: " Atharv Dubey
@ 2026-03-24 18:26 ` Atharv Dubey
9 siblings, 0 replies; 13+ messages in thread
From: Atharv Dubey @ 2026-03-24 18:26 UTC (permalink / raw)
To: Till Harbaum, Andi Shyti, Laxman Dewangan, Dmitry Osipenko,
Thierry Reding, Jonathan Hunter, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Pierre-Yves MORDRET, Alain Volmat,
Maxime Coquelin, Alexandre Torgue, Patrice Chotard, Orson Zhai,
Baolin Wang, Chunyan Zhang, Jean Delvare
Cc: linux-i2c, linux-kernel, linux-tegra, linux-arm-kernel,
linux-sunxi, linux-stm32, Enrico Zanda, Atharv Dubey
From: Enrico Zanda <e.zanda1@gmail.com>
This simplifies the code while improving log.
Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Signed-off-by: Atharv Dubey <atharvd440@gmail.com>
---
drivers/i2c/busses/i2c-sis630.c | 31 +++++++++++++------------------
1 file changed, 13 insertions(+), 18 deletions(-)
diff --git a/drivers/i2c/busses/i2c-sis630.c b/drivers/i2c/busses/i2c-sis630.c
index a19c3d251804..3d0638c2bc51 100644
--- a/drivers/i2c/busses/i2c-sis630.c
+++ b/drivers/i2c/busses/i2c-sis630.c
@@ -431,24 +431,23 @@ static int sis630_setup(struct pci_dev *sis630_dev)
in acpi io space and read acpi base addr
*/
if (pci_read_config_byte(sis630_dev, SIS630_BIOS_CTL_REG, &b)) {
- dev_err(&sis630_dev->dev, "Error: Can't read bios ctl reg\n");
- retval = -ENODEV;
+ retval = dev_err_probe(&sis630_dev->dev, -ENODEV,
+ "Error: Can't read bios ctl reg\n");
goto exit;
}
/* if ACPI already enabled , do nothing */
if (!(b & 0x80) &&
pci_write_config_byte(sis630_dev, SIS630_BIOS_CTL_REG, b | 0x80)) {
- dev_err(&sis630_dev->dev, "Error: Can't enable ACPI\n");
- retval = -ENODEV;
+ retval = dev_err_probe(&sis630_dev->dev, -ENODEV,
+ "Error: Can't enable ACPI\n");
goto exit;
}
/* Determine the ACPI base address */
if (pci_read_config_word(sis630_dev,
SIS630_ACPI_BASE_REG, &acpi_base)) {
- dev_err(&sis630_dev->dev,
- "Error: Can't determine ACPI base address\n");
- retval = -ENODEV;
+ retval = dev_err_probe(&sis630_dev->dev, -ENODEV,
+ "Error: Can't determine ACPI base address\n");
goto exit;
}
@@ -469,11 +468,10 @@ static int sis630_setup(struct pci_dev *sis630_dev)
/* Everything is happy, let's grab the memory and set things up. */
if (!request_region(smbus_base + SMB_STS, SIS630_SMB_IOREGION,
sis630_driver.name)) {
- dev_err(&sis630_dev->dev,
- "I/O Region 0x%04x-0x%04x for SMBus already in use.\n",
- smbus_base + SMB_STS,
- smbus_base + SMB_STS + SIS630_SMB_IOREGION - 1);
- retval = -EBUSY;
+ retval = dev_err_probe(&sis630_dev->dev, -EBUSY,
+ "I/O Region 0x%04x-0x%04x for SMBus already in use.\n",
+ smbus_base + SMB_STS,
+ smbus_base + SMB_STS + SIS630_SMB_IOREGION - 1);
goto exit;
}
@@ -511,12 +509,9 @@ static int sis630_probe(struct pci_dev *dev, const struct pci_device_id *id)
{
int ret;
- if (sis630_setup(dev)) {
- dev_err(&dev->dev,
- "SIS630 compatible bus not detected, "
- "module not inserted.\n");
- return -ENODEV;
- }
+ if (sis630_setup(dev))
+ return dev_err_probe(&dev->dev, -ENODEV,
+ "Compatible bus not detected, module not inserted.\n");
/* set up the sysfs linkage to our parent device */
sis630_adapter.dev.parent = &dev->dev;
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 02/10] i2c: tegra: Replace dev_err() with dev_err_probe() in probe function
2026-03-24 18:26 ` [PATCH 02/10] i2c: tegra: " Atharv Dubey
@ 2026-03-24 21:04 ` Jon Hunter
0 siblings, 0 replies; 13+ messages in thread
From: Jon Hunter @ 2026-03-24 21:04 UTC (permalink / raw)
To: Atharv Dubey, Till Harbaum, Andi Shyti, Laxman Dewangan,
Dmitry Osipenko, Thierry Reding, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Pierre-Yves MORDRET, Alain Volmat,
Maxime Coquelin, Alexandre Torgue, Patrice Chotard, Orson Zhai,
Baolin Wang, Chunyan Zhang, Jean Delvare
Cc: linux-i2c, linux-kernel, linux-tegra, linux-arm-kernel,
linux-sunxi, linux-stm32, Enrico Zanda
On 24/03/2026 18:26, Atharv Dubey wrote:
> From: Enrico Zanda <e.zanda1@gmail.com>
>
> This simplifies the code while improving log.
>
> Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
> Signed-off-by: Atharv Dubey <atharvd440@gmail.com>
> ---
> drivers/i2c/busses/i2c-tegra.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
> index bec619b9af4e..51d15fca82fc 100644
> --- a/drivers/i2c/busses/i2c-tegra.c
> +++ b/drivers/i2c/busses/i2c-tegra.c
> @@ -575,8 +575,8 @@ static int tegra_i2c_init_dma(struct tegra_i2c_dev *i2c_dev)
> dma_buf = dma_alloc_coherent(i2c_dev->dma_dev, i2c_dev->dma_buf_size,
> &dma_phys, GFP_KERNEL | __GFP_NOWARN);
> if (!dma_buf) {
> - dev_err(i2c_dev->dev, "failed to allocate DMA buffer\n");
> - err = -ENOMEM;
> + err = dev_err_probe(i2c_dev->dev, -ENOMEM,
> + "failed to allocate DMA buffer\n");
So this will never be a probe defer, so why bother?
> goto err_out;
> }
>
> @@ -588,8 +588,8 @@ static int tegra_i2c_init_dma(struct tegra_i2c_dev *i2c_dev)
> err_out:
> tegra_i2c_release_dma(i2c_dev);
> if (err != -EPROBE_DEFER) {
> - dev_err(i2c_dev->dev, "cannot use DMA: %d\n", err);
> - dev_err(i2c_dev->dev, "falling back to PIO\n");
> + dev_err_probe(i2c_dev->dev, err,
> + "cannot use DMA, falling back to PIO\n");
This is not right.
> return 0;
> }
>
> @@ -1953,7 +1953,7 @@ static int tegra_i2c_init_clocks(struct tegra_i2c_dev *i2c_dev)
>
> err = clk_enable(i2c_dev->div_clk);
> if (err) {
> - dev_err(i2c_dev->dev, "failed to enable div-clk: %d\n", err);
> + dev_err_probe(i2c_dev->dev, err, "failed to enable div-clk\n");
We have already got the clock and so I don't think that this is needed
either.
> goto unprepare_clocks;
> }
>
> @@ -1979,7 +1979,7 @@ static int tegra_i2c_init_hardware(struct tegra_i2c_dev *i2c_dev)
>
> ret = pm_runtime_get_sync(i2c_dev->dev);
> if (ret < 0)
> - dev_err(i2c_dev->dev, "runtime resume failed: %d\n", ret);
> + dev_err_probe(i2c_dev->dev, ret, "runtime resume failed\n");
I don't think that this is needed either.
> else
> ret = tegra_i2c_init(i2c_dev);
>
>
--
nvpublic
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 03/10] i2c: sun6i-p2wi: Replace dev_err() with dev_err_probe() in probe function
2026-03-24 18:26 ` [PATCH 03/10] i2c: sun6i-p2wi: " Atharv Dubey
@ 2026-03-25 16:01 ` Chen-Yu Tsai
0 siblings, 0 replies; 13+ messages in thread
From: Chen-Yu Tsai @ 2026-03-25 16:01 UTC (permalink / raw)
To: Atharv Dubey
Cc: Till Harbaum, Andi Shyti, Laxman Dewangan, Dmitry Osipenko,
Thierry Reding, Jonathan Hunter, Jernej Skrabec, Samuel Holland,
Pierre-Yves MORDRET, Alain Volmat, Maxime Coquelin,
Alexandre Torgue, Patrice Chotard, Orson Zhai, Baolin Wang,
Chunyan Zhang, Jean Delvare, linux-i2c, linux-kernel, linux-tegra,
linux-arm-kernel, linux-sunxi, linux-stm32, Enrico Zanda
On Wed, Mar 25, 2026 at 2:27 AM Atharv Dubey <atharvd440@gmail.com> wrote:
>
> From: Enrico Zanda <e.zanda1@gmail.com>
>
> This simplifies the code while improving log.
>
> Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
> Signed-off-by: Atharv Dubey <atharvd440@gmail.com>
> ---
> drivers/i2c/busses/i2c-sun6i-p2wi.c | 55 ++++++++++++++-----------------------
> 1 file changed, 20 insertions(+), 35 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-sun6i-p2wi.c b/drivers/i2c/busses/i2c-sun6i-p2wi.c
> index fb5280b8cf7f..dffbe776a195 100644
> --- a/drivers/i2c/busses/i2c-sun6i-p2wi.c
> +++ b/drivers/i2c/busses/i2c-sun6i-p2wi.c
> @@ -194,22 +194,16 @@ static int p2wi_probe(struct platform_device *pdev)
> int ret;
>
> of_property_read_u32(np, "clock-frequency", &clk_freq);
> - if (clk_freq > P2WI_MAX_FREQ) {
> - dev_err(dev,
> - "required clock-frequency (%u Hz) is too high (max = 6MHz)",
> - clk_freq);
> - return -EINVAL;
> - }
> + if (clk_freq > P2WI_MAX_FREQ)
> + return dev_err_probe(dev, -EINVAL,
> + "required clock-frequency (%u Hz) is too high (max = 6MHz)",
> + clk_freq);
>
> - if (clk_freq == 0) {
> - dev_err(dev, "clock-frequency is set to 0 in DT\n");
> - return -EINVAL;
> - }
> + if (clk_freq == 0)
> + return dev_err_probe(dev, -EINVAL, "clock-frequency is set to 0 in DT\n");
>
> - if (of_get_child_count(np) > 1) {
> - dev_err(dev, "P2WI only supports one target device\n");
> - return -EINVAL;
> - }
> + if (of_get_child_count(np) > 1)
> + return dev_err_probe(dev, -EINVAL, "P2WI only supports one target device\n");
>
> p2wi = devm_kzalloc(dev, sizeof(struct p2wi), GFP_KERNEL);
> if (!p2wi)
> @@ -226,11 +220,9 @@ static int p2wi_probe(struct platform_device *pdev)
> childnp = of_get_next_available_child(np, NULL);
> if (childnp) {
> ret = of_property_read_u32(childnp, "reg", &target_addr);
> - if (ret) {
> - dev_err(dev, "invalid target address on node %pOF\n",
> - childnp);
> - return -EINVAL;
> - }
> + if (ret)
> + return dev_err_probe(dev, -EINVAL,
> + "invalid target address on node %pOF\n", childnp);
>
> p2wi->target_addr = target_addr;
> }
> @@ -245,26 +237,20 @@ static int p2wi_probe(struct platform_device *pdev)
> return irq;
>
> p2wi->clk = devm_clk_get_enabled(dev, NULL);
> - if (IS_ERR(p2wi->clk)) {
> - ret = PTR_ERR(p2wi->clk);
> - dev_err(dev, "failed to enable clk: %d\n", ret);
> - return ret;
> - }
> + if (IS_ERR(p2wi->clk))
> + return dev_err_probe(dev, PTR_ERR(p2wi->clk),
> + "failed to enable clk\n");
>
> parent_clk_freq = clk_get_rate(p2wi->clk);
>
> p2wi->rstc = devm_reset_control_get_exclusive(dev, NULL);
> - if (IS_ERR(p2wi->rstc)) {
> - dev_err(dev, "failed to retrieve reset controller: %pe\n",
> - p2wi->rstc);
> - return PTR_ERR(p2wi->rstc);
> - }
> + if (IS_ERR(p2wi->rstc))
> + return dev_err_probe(dev, PTR_ERR(p2wi->rstc),
> + "failed to retrieve reset controller\n");
>
> ret = reset_control_deassert(p2wi->rstc);
> - if (ret) {
> - dev_err(dev, "failed to deassert reset line: %d\n", ret);
> - return ret;
> - }
> + if (ret)
> + return dev_err_probe(dev, ret, "failed to deassert reset line\n");
You could also simplify this whole block with
devm_reset_control_get_exclusive_deasserted().
Either way,
Reviewed-by: Chen-Yu Tsai <wens@kernel.org>
> init_completion(&p2wi->complete);
> p2wi->adapter.dev.parent = dev;
> @@ -276,8 +262,7 @@ static int p2wi_probe(struct platform_device *pdev)
>
> ret = devm_request_irq(dev, irq, p2wi_interrupt, 0, pdev->name, p2wi);
> if (ret) {
> - dev_err(dev, "can't register interrupt handler irq%d: %d\n",
> - irq, ret);
> + dev_err_probe(dev, ret, "can't register interrupt handler irq%d\n", irq);
> goto err_reset_assert;
> }
>
>
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2026-03-25 16:01 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-24 18:26 [PATCH 00/10] i2c: Replace dev_err() with dev_err_probe() Atharv Dubey
2026-03-24 18:26 ` [PATCH 01/10] i2c: tiny-usb: Replace dev_err() with dev_err_probe() in probe function Atharv Dubey
2026-03-24 18:26 ` [PATCH 02/10] i2c: tegra: " Atharv Dubey
2026-03-24 21:04 ` Jon Hunter
2026-03-24 18:26 ` [PATCH 03/10] i2c: sun6i-p2wi: " Atharv Dubey
2026-03-25 16:01 ` Chen-Yu Tsai
2026-03-24 18:26 ` [PATCH 04/10] i2c: stm32f7: " Atharv Dubey
2026-03-24 18:26 ` [PATCH 05/10] i2c: stm32f4: " Atharv Dubey
2026-03-24 18:26 ` [PATCH 06/10] i2c: stm32: " Atharv Dubey
2026-03-24 18:26 ` [PATCH 07/10] i2c: st: " Atharv Dubey
2026-03-24 18:26 ` [PATCH 08/10] i2c: sprd: " Atharv Dubey
2026-03-24 18:26 ` [PATCH 09/10] i2c: sis96x: " Atharv Dubey
2026-03-24 18:26 ` [PATCH 10/10] i2c: sis630: " Atharv Dubey
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox