diff options
author | Peng Fan <peng.fan@nxp.com> | 2025-09-10 15:11:50 +0800 |
---|---|---|
committer | Mathieu Poirier <mathieu.poirier@linaro.org> | 2025-09-15 10:05:59 -0600 |
commit | e65a9ed4c3ec11fb40474f3340b9c1e1551c6b7a (patch) | |
tree | 5c1b5c4c7eba1aeca710a4ab37b7cfc6e3092f1f | |
parent | ecadd767fb83556fe4db599fd5305b08b8328cef (diff) |
remoteproc: imx_rproc: Clean up after ops introduction
With the switch-case in imx_rproc_{start,stop}{} removed, simplify
the code logic by removing 'goto'. The last switch-case in
imx_rproc_detect_mode() are no longer needed and can be removed.
This cleanup improves code readability and aligns with the new ops-based
design.
No functional changes.
Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
Link: https://lore.kernel.org/r/20250910-imx-rproc-cleanup-v2-6-10386685b8a9@nxp.com
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
-rw-r--r-- | drivers/remoteproc/imx_rproc.c | 34 |
1 files changed, 12 insertions, 22 deletions
diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c index 5fa729f4286f..bb25221a4a89 100644 --- a/drivers/remoteproc/imx_rproc.c +++ b/drivers/remoteproc/imx_rproc.c @@ -323,14 +323,10 @@ static int imx_rproc_start(struct rproc *rproc) if (ret) return ret; - if (dcfg->ops && dcfg->ops->start) { - ret = dcfg->ops->start(rproc); - goto start_ret; - } - - return -EOPNOTSUPP; + if (!dcfg->ops || !dcfg->ops->start) + return -EOPNOTSUPP; -start_ret: + ret = dcfg->ops->start(rproc); if (ret) dev_err(dev, "Failed to enable remote core!\n"); @@ -380,14 +376,10 @@ static int imx_rproc_stop(struct rproc *rproc) struct device *dev = priv->dev; int ret; - if (dcfg->ops && dcfg->ops->stop) { - ret = dcfg->ops->stop(rproc); - goto stop_ret; - } - - return -EOPNOTSUPP; + if (!dcfg->ops || !dcfg->ops->stop) + return -EOPNOTSUPP; -stop_ret: + ret = dcfg->ops->stop(rproc); if (ret) dev_err(dev, "Failed to stop remote core\n"); else @@ -997,18 +989,16 @@ static int imx_rproc_detect_mode(struct imx_rproc *priv) { const struct imx_rproc_dcfg *dcfg = priv->dcfg; - if (dcfg->ops && dcfg->ops->detect_mode) - return dcfg->ops->detect_mode(priv->rproc); - - switch (dcfg->method) { - case IMX_RPROC_NONE: + /* + * To i.MX{7,8} ULP, Linux is under control of RTOS, no need + * dcfg->ops or dcfg->ops->detect_mode, it is state RPROC_DETACHED. + */ + if (!dcfg->ops || !dcfg->ops->detect_mode) { priv->rproc->state = RPROC_DETACHED; return 0; - default: - break; } - return 0; + return dcfg->ops->detect_mode(priv->rproc); } static int imx_rproc_clk_enable(struct imx_rproc *priv) |