On 1/11/25 19:42, Krzysztof Kozlowski wrote: > Use dev_err_probe() to make error code handling simpler and handle > deferred probe. > > Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> > --- > drivers/remoteproc/st_remoteproc.c | 44 +++++++++++++++++--------------------- > 1 file changed, 20 insertions(+), 24 deletions(-) > > diff --git a/drivers/remoteproc/st_remoteproc.c b/drivers/remoteproc/st_remoteproc.c > index 5df99bae7131a832c0c03c9bf8619812d9eb570d..d1f35e8a83ba525613ed4e54d2269b7e9f427e46 100644 > --- a/drivers/remoteproc/st_remoteproc.c > +++ b/drivers/remoteproc/st_remoteproc.c > @@ -290,26 +290,23 @@ static int st_rproc_parse_dt(struct platform_device *pdev) > if (ddata->config->sw_reset) { > ddata->sw_reset = devm_reset_control_get_exclusive(dev, > "sw_reset"); > - if (IS_ERR(ddata->sw_reset)) { > - dev_err(dev, "Failed to get S/W Reset\n"); > - return PTR_ERR(ddata->sw_reset); > - } > + if (IS_ERR(ddata->sw_reset)) > + return dev_err_probe(dev, PTR_ERR(ddata->sw_reset), > + "Failed to get S/W Reset\n"); > } > > if (ddata->config->pwr_reset) { > ddata->pwr_reset = devm_reset_control_get_exclusive(dev, > "pwr_reset"); > - if (IS_ERR(ddata->pwr_reset)) { > - dev_err(dev, "Failed to get Power Reset\n"); > - return PTR_ERR(ddata->pwr_reset); > - } > + if (IS_ERR(ddata->pwr_reset)) > + return dev_err_probe(dev, PTR_ERR(ddata->pwr_reset), > + "Failed to get Power Reset\n"); > } > > ddata->clk = devm_clk_get(dev, NULL); > - if (IS_ERR(ddata->clk)) { > - dev_err(dev, "Failed to get clock\n"); > - return PTR_ERR(ddata->clk); > - } > + if (IS_ERR(ddata->clk)) > + return dev_err_probe(dev, PTR_ERR(ddata->clk), > + "Failed to get clock\n"); > > err = of_property_read_u32(np, "clock-frequency", &ddata->clk_rate); > if (err) { > @@ -318,10 +315,9 @@ static int st_rproc_parse_dt(struct platform_device *pdev) > } > > ddata->boot_base = syscon_regmap_lookup_by_phandle(np, "st,syscfg"); > - if (IS_ERR(ddata->boot_base)) { > - dev_err(dev, "Boot base not found\n"); > - return PTR_ERR(ddata->boot_base); > - } > + if (IS_ERR(ddata->boot_base)) > + return dev_err_probe(dev, PTR_ERR(ddata->boot_base), > + "Boot base not found\n"); > > err = of_property_read_u32_index(np, "st,syscfg", 1, > &ddata->boot_offset); > @@ -395,32 +391,32 @@ static int st_rproc_probe(struct platform_device *pdev) > */ > chan = mbox_request_channel_byname(&ddata->mbox_client_vq0, "vq0_rx"); > if (IS_ERR(chan)) { > - dev_err(&rproc->dev, "failed to request mbox chan 0\n"); > - ret = PTR_ERR(chan); > + ret = dev_err_probe(&rproc->dev, PTR_ERR(chan), > + "failed to request mbox chan 0\n"); > goto free_clk; > } > ddata->mbox_chan[ST_RPROC_VQ0 * MBOX_MAX + MBOX_RX] = chan; > > chan = mbox_request_channel_byname(&ddata->mbox_client_vq0, "vq0_tx"); > if (IS_ERR(chan)) { > - dev_err(&rproc->dev, "failed to request mbox chan 0\n"); > - ret = PTR_ERR(chan); > + ret = dev_err_probe(&rproc->dev, PTR_ERR(chan), > + "failed to request mbox chan 0\n"); > goto free_mbox; > } > ddata->mbox_chan[ST_RPROC_VQ0 * MBOX_MAX + MBOX_TX] = chan; > > chan = mbox_request_channel_byname(&ddata->mbox_client_vq1, "vq1_rx"); > if (IS_ERR(chan)) { > - dev_err(&rproc->dev, "failed to request mbox chan 1\n"); > - ret = PTR_ERR(chan); > + ret = dev_err_probe(&rproc->dev, PTR_ERR(chan), > + "failed to request mbox chan 1\n"); > goto free_mbox; > } > ddata->mbox_chan[ST_RPROC_VQ1 * MBOX_MAX + MBOX_RX] = chan; > > chan = mbox_request_channel_byname(&ddata->mbox_client_vq1, "vq1_tx"); > if (IS_ERR(chan)) { > - dev_err(&rproc->dev, "failed to request mbox chan 1\n"); > - ret = PTR_ERR(chan); > + ret = dev_err_probe(&rproc->dev, PTR_ERR(chan), > + "failed to request mbox chan 1\n"); > goto free_mbox; > } > ddata->mbox_chan[ST_RPROC_VQ1 * MBOX_MAX + MBOX_TX] = chan; > Reviewed-by: Patrice Chotard <patrice.chotard@xxxxxxxxxxx> Thanks Patrice