From e65a9ed4c3ec11fb40474f3340b9c1e1551c6b7a Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Wed, 10 Sep 2025 15:11:50 +0800 Subject: [PATCH] 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 Signed-off-by: Peng Fan Link: https://lore.kernel.org/r/20250910-imx-rproc-cleanup-v2-6-10386685b8a9@nxp.com Signed-off-by: Mathieu Poirier --- drivers/remoteproc/imx_rproc.c | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c index 5fa729f4286f6..bb25221a4a898 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) -- 2.47.3