On Mon, 21 Aug 2023 at 23:39, Harshit Mogalapalli <harshit.m.mogalapalli@xxxxxxxxxx> wrote: > > Hi, > > On 18/08/23 4:36 pm, Dmitry Baryshkov wrote: > > On 28/07/2023 04:31, 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-qcom-cci.c | 6 ++---- > >> 1 file changed, 2 insertions(+), 4 deletions(-) > > > > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> > > > >> > >> diff --git a/drivers/i2c/busses/i2c-qcom-cci.c > >> b/drivers/i2c/busses/i2c-qcom-cci.c > >> index 622dc14add9d..cf13abec05f1 100644 > >> --- a/drivers/i2c/busses/i2c-qcom-cci.c > >> +++ b/drivers/i2c/busses/i2c-qcom-cci.c > >> @@ -588,10 +588,8 @@ static int cci_probe(struct platform_device *pdev) > >> /* Clocks */ > >> ret = devm_clk_bulk_get_all(dev, &cci->clocks); > >> - if (ret < 1) { > >> - dev_err(dev, "failed to get clocks %d\n", ret); > >> - return ret; > >> - } > >> + if (ret < 1) > >> + return dev_err_probe(dev, ret, "failed to get clocks\n"); > > Description: > ----------- > * devm_clk_bulk_get_all - managed get multiple clk consumers > * @dev: device for clock "consumer" > * @clks: pointer to the clk_bulk_data table of consumer > * > * Returns a positive value for the number of clocks obtained while the > * clock references are stored in the clk_bulk_data table in @clks field. > * Returns 0 if there're none and a negative value if something failed. > ----------- > > When ret = 0; > > "zero" is passed to dev_err_probe and we are returning success(zero) > from probe function. > > Based on other instances of devm_clk_bulk_get_all() API, can we fix it > by changing condition like this? > > diff --git a/drivers/i2c/busses/i2c-qcom-cci.c > b/drivers/i2c/busses/i2c-qcom-cci.c > index cf13abec05f1..cea6f70d2b8d 100644 > --- a/drivers/i2c/busses/i2c-qcom-cci.c > +++ b/drivers/i2c/busses/i2c-qcom-cci.c > @@ -588,7 +588,7 @@ static int cci_probe(struct platform_device *pdev) > /* Clocks */ > > ret = devm_clk_bulk_get_all(dev, &cci->clocks); > - if (ret < 1) > + if (ret < 0) > return dev_err_probe(dev, ret, "failed to get clocks\n"); Only if it succeeded with something like: if (!ret) return dev_err_probe(dev, -EINVAL, "Not enough clocks in DT\n"); But it is a separate topic and should be a part of the separate patch. > cci->nclocks = ret; > > > Thanks, > Harshit > > >> cci->nclocks = ret; > >> /* Retrieve CCI clock rate */ > > -- With best wishes Dmitry