remoteproc: stm32: improve debug using dev_err_probe
authorArnaud Pouliquen <arnaud.pouliquen@foss-st.com>
Thu, 17 Dec 2020 14:41:25 +0000 (15:41 +0100)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Thu, 7 Jan 2021 17:24:48 +0000 (11:24 -0600)
When possible use dev_err_probe help to properly deal with the
PROBE_DEFER error.
The benefit is that DEFER issue will be logged in the devices_deferred
debugfs file.

Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss-st.com>
Link: https://lore.kernel.org/r/20201217144125.12903-1-arnaud.pouliquen@foss.st.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
drivers/remoteproc/stm32_rproc.c

index a180aeae9675ba98bc95dcb0971b819e4657dfb3..ccb3c14a0023edc7a9f7c76af07ce81052a1dccd 100644 (file)
@@ -370,8 +370,13 @@ static int stm32_rproc_request_mbox(struct rproc *rproc)
 
                ddata->mb[i].chan = mbox_request_channel_byname(cl, name);
                if (IS_ERR(ddata->mb[i].chan)) {
-                       if (PTR_ERR(ddata->mb[i].chan) == -EPROBE_DEFER)
+                       if (PTR_ERR(ddata->mb[i].chan) == -EPROBE_DEFER) {
+                               dev_err_probe(dev->parent,
+                                             PTR_ERR(ddata->mb[i].chan),
+                                             "failed to request mailbox %s\n",
+                                             name);
                                goto err_probe;
+                       }
                        dev_warn(dev, "cannot get %s mbox\n", name);
                        ddata->mb[i].chan = NULL;
                }
@@ -592,15 +597,14 @@ static int stm32_rproc_parse_dt(struct platform_device *pdev,
 
        irq = platform_get_irq(pdev, 0);
        if (irq == -EPROBE_DEFER)
-               return -EPROBE_DEFER;
+               return dev_err_probe(dev, irq, "failed to get interrupt\n");
 
        if (irq > 0) {
                err = devm_request_irq(dev, irq, stm32_rproc_wdg, 0,
                                       dev_name(dev), pdev);
-               if (err) {
-                       dev_err(dev, "failed to request wdg irq\n");
-                       return err;
-               }
+               if (err)
+                       return dev_err_probe(dev, err,
+                                            "failed to request wdg irq\n");
 
                ddata->wdg_irq = irq;
 
@@ -613,10 +617,9 @@ static int stm32_rproc_parse_dt(struct platform_device *pdev,
        }
 
        ddata->rst = devm_reset_control_get_by_index(dev, 0);
-       if (IS_ERR(ddata->rst)) {
-               dev_err(dev, "failed to get mcu reset\n");
-               return PTR_ERR(ddata->rst);
-       }
+       if (IS_ERR(ddata->rst))
+               return dev_err_probe(dev, PTR_ERR(ddata->rst),
+                                    "failed to get mcu_reset\n");
 
        /*
         * if platform is secured the hold boot bit must be written by