Hi Liao, On Fri, Jul 28, 2023 at 09:31:41AM +0800, Liao Chang wrote: > Use the dev_err_probe function instead of dev_err in the probe function > so that the printed messge includes the return value and also handles > -EPROBE_DEFER nicely. > > Signed-off-by: Liao Chang <liaochang1@xxxxxxxxxx> > --- > drivers/i2c/busses/i2c-mlxbf.c | 44 ++++++++++++---------------------- > 1 file changed, 15 insertions(+), 29 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-mlxbf.c b/drivers/i2c/busses/i2c-mlxbf.c > index ae66bdd1b737..b5f2aa2fc1db 100644 > --- a/drivers/i2c/busses/i2c-mlxbf.c > +++ b/drivers/i2c/busses/i2c-mlxbf.c > @@ -2323,10 +2323,8 @@ static int mlxbf_i2c_probe(struct platform_device *pdev) > > ret = mlxbf_i2c_init_resource(pdev, &priv->smbus, > MLXBF_I2C_SMBUS_RES); > - if (ret < 0) { > - dev_err(dev, "Cannot fetch smbus resource info"); > - return ret; > - } > + if (ret < 0) > + return dev_err_probe(dev, ret, "Cannot fetch smbus resource info"); > > priv->timer->io = priv->smbus->io; > priv->mst->io = priv->smbus->io + MLXBF_I2C_MST_ADDR_OFFSET; > @@ -2334,10 +2332,8 @@ static int mlxbf_i2c_probe(struct platform_device *pdev) > } else { > ret = mlxbf_i2c_init_resource(pdev, &priv->timer, > MLXBF_I2C_SMBUS_TIMER_RES); > - if (ret < 0) { > - dev_err(dev, "Cannot fetch timer resource info"); > - return ret; > - } > + if (ret < 0) > + return dev_err_probe(dev, ret, "Cannot fetch timer resource info"); > > ret = mlxbf_i2c_init_resource(pdev, &priv->mst, > MLXBF_I2C_SMBUS_MST_RES); You forgot one here return dev_err_probe(dev, "Cannot fetch master resource info"); Andi > @@ -2348,25 +2344,19 @@ static int mlxbf_i2c_probe(struct platform_device *pdev) > > ret = mlxbf_i2c_init_resource(pdev, &priv->slv, > MLXBF_I2C_SMBUS_SLV_RES); > - if (ret < 0) { > - dev_err(dev, "Cannot fetch slave resource info"); > - return ret; > - } > + if (ret < 0) > + return dev_err_probe(dev, ret, "Cannot fetch slave resource info");