On 27/08/2024 13:46, Jinjie Ruan wrote: > Use the dev_err_probe() helper to simplify error handling during probe. > This also handle scenario, when EDEFER is returned and useless error > is printed. ? Sorry, this cannot happen. Please point to below code which can defer. > > Signed-off-by: Jinjie Ruan <ruanjinjie@xxxxxxxxxx> > --- > drivers/soc/fsl/qe/tsa.c | 62 +++++++++++++++------------------------- > 1 file changed, 23 insertions(+), 39 deletions(-) > > diff --git a/drivers/soc/fsl/qe/tsa.c b/drivers/soc/fsl/qe/tsa.c > index 7fa399b7a47c..fc37d23b746d 100644 > --- a/drivers/soc/fsl/qe/tsa.c > +++ b/drivers/soc/fsl/qe/tsa.c > @@ -453,10 +453,8 @@ static int tsa_of_parse_tdms(struct tsa *tsa, struct device_node *np) > > for_each_available_child_of_node_scoped(np, tdm_np) { > ret = of_property_read_u32(tdm_np, "reg", &tdm_id); > - if (ret) { > - dev_err(tsa->dev, "%pOF: failed to read reg\n", tdm_np); > - return ret; > - } > + if (ret) > + return dev_err_probe(tsa->dev, ret, "%pOF: failed to read reg\n", tdm_np); > switch (tdm_id) { > case 0: > tsa->tdms |= BIT(TSA_TDMA); > @@ -465,18 +463,15 @@ static int tsa_of_parse_tdms(struct tsa *tsa, struct device_node *np) > tsa->tdms |= BIT(TSA_TDMB); > break; > default: > - dev_err(tsa->dev, "%pOF: Invalid tdm_id (%u)\n", tdm_np, > - tdm_id); > - return -EINVAL; > + return dev_err_probe(tsa->dev, -EINVAL, "%pOF: Invalid tdm_id (%u)\n", > + tdm_np, tdm_id); > } > } > > for_each_available_child_of_node_scoped(np, tdm_np) { > ret = of_property_read_u32(tdm_np, "reg", &tdm_id); > - if (ret) { > - dev_err(tsa->dev, "%pOF: failed to read reg\n", tdm_np); > - return ret; > - } > + if (ret) > + return dev_err_probe(tsa->dev, ret, "%pOF: failed to read reg\n", tdm_np); > > tdm = &tsa->tdm[tdm_id]; > tdm->simode_tdm = TSA_SIMODE_TDM_SDM_NORM; > @@ -484,35 +479,26 @@ static int tsa_of_parse_tdms(struct tsa *tsa, struct device_node *np) > val = 0; > ret = of_property_read_u32(tdm_np, "fsl,rx-frame-sync-delay-bits", > &val); > - if (ret && ret != -EINVAL) { > - dev_err(tsa->dev, > - "%pOF: failed to read fsl,rx-frame-sync-delay-bits\n", > - tdm_np); > - return ret; > - } > - if (val > 3) { > - dev_err(tsa->dev, > - "%pOF: Invalid fsl,rx-frame-sync-delay-bits (%u)\n", > - tdm_np, val); > - return -EINVAL; > - } > + if (ret && ret != -EINVAL) > + return dev_err_probe(tsa->dev, ret, > + "%pOF: failed to read fsl,rx-frame-sync-delay-bits\n", > + tdm_np); > + if (val > 3) > + return dev_err_probe(tsa->dev, -EINVAL, > + "%pOF: Invalid fsl,rx-frame-sync-delay-bits (%u)\n", > + tdm_np, val); > tdm->simode_tdm |= TSA_SIMODE_TDM_RFSD(val); > > val = 0; > ret = of_property_read_u32(tdm_np, "fsl,tx-frame-sync-delay-bits", > &val); > - if (ret && ret != -EINVAL) { > - dev_err(tsa->dev, > - "%pOF: failed to read fsl,tx-frame-sync-delay-bits\n", > - tdm_np); > - return ret; > - } > - if (val > 3) { > - dev_err(tsa->dev, > - "%pOF: Invalid fsl,tx-frame-sync-delay-bits (%u)\n", > - tdm_np, val); > - return -EINVAL; > - } > + if (ret && ret != -EINVAL) > + return dev_err_probe(tsa->dev, ret, > + "%pOF: failed to read fsl,tx-frame-sync-delay-bits\n", tdm_np); > + if (val > 3) > + return dev_err_probe(tsa->dev, -EINVAL, > + "%pOF: Invalid fsl,tx-frame-sync-delay-bits (%u)\n", > + tdm_np, val); > tdm->simode_tdm |= TSA_SIMODE_TDM_TFSD(val); > > if (of_property_read_bool(tdm_np, "fsl,common-rxtx-pins")) > @@ -645,10 +631,8 @@ static int tsa_probe(struct platform_device *pdev) > return PTR_ERR(tsa->si_regs); > > res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "si_ram"); > - if (!res) { > - dev_err(tsa->dev, "si_ram resource missing\n"); > - return -EINVAL; > - } > + if (!res) > + return dev_err_probe(tsa->dev, -EINVAL, "si_ram resource missing\n"); > tsa->si_ram_sz = resource_size(res); > tsa->si_ram = devm_ioremap_resource(&pdev->dev, res); > if (IS_ERR(tsa->si_ram)) Best regards, Krzysztof