Skip to content

Commit

Permalink
mailbox: imx: support return value of init
Browse files Browse the repository at this point in the history
There will be changes that init may fail, so adding return value for
init function.

Reviewed-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
  • Loading branch information
Peng Fan authored and Jassi Brar committed Mar 11, 2024
1 parent b6819b8 commit f0e0110
Showing 1 changed file with 24 additions and 11 deletions.
35 changes: 24 additions & 11 deletions drivers/mailbox/imx-mailbox.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ struct imx_mu_dcfg {
int (*tx)(struct imx_mu_priv *priv, struct imx_mu_con_priv *cp, void *data);
int (*rx)(struct imx_mu_priv *priv, struct imx_mu_con_priv *cp);
int (*rxdb)(struct imx_mu_priv *priv, struct imx_mu_con_priv *cp);
void (*init)(struct imx_mu_priv *priv);
int (*init)(struct imx_mu_priv *priv);
enum imx_mu_type type;
u32 xTR; /* Transmit Register0 */
u32 xRR; /* Receive Register0 */
Expand Down Expand Up @@ -737,7 +737,7 @@ static struct mbox_chan *imx_mu_seco_xlate(struct mbox_controller *mbox,
return imx_mu_xlate(mbox, sp);
}

static void imx_mu_init_generic(struct imx_mu_priv *priv)
static int imx_mu_init_generic(struct imx_mu_priv *priv)
{
unsigned int i;
unsigned int val;
Expand All @@ -757,7 +757,7 @@ static void imx_mu_init_generic(struct imx_mu_priv *priv)
priv->mbox.of_xlate = imx_mu_xlate;

if (priv->side_b)
return;
return 0;

/* Set default MU configuration */
for (i = 0; i < IMX_MU_xCR_MAX; i++)
Expand All @@ -770,9 +770,11 @@ static void imx_mu_init_generic(struct imx_mu_priv *priv)
/* Clear any pending RSR */
for (i = 0; i < IMX_MU_NUM_RR; i++)
imx_mu_read(priv, priv->dcfg->xRR + (i % 4) * 4);

return 0;
}

static void imx_mu_init_specific(struct imx_mu_priv *priv)
static int imx_mu_init_specific(struct imx_mu_priv *priv)
{
unsigned int i;
int num_chans = priv->dcfg->type & IMX_MU_V2_S4 ? IMX_MU_S4_CHANS : IMX_MU_SCU_CHANS;
Expand All @@ -794,12 +796,20 @@ static void imx_mu_init_specific(struct imx_mu_priv *priv)
/* Set default MU configuration */
for (i = 0; i < IMX_MU_xCR_MAX; i++)
imx_mu_write(priv, 0, priv->dcfg->xCR[i]);

return 0;
}

static void imx_mu_init_seco(struct imx_mu_priv *priv)
static int imx_mu_init_seco(struct imx_mu_priv *priv)
{
imx_mu_init_generic(priv);
int ret;

ret = imx_mu_init_generic(priv);
if (ret)
return ret;
priv->mbox.of_xlate = imx_mu_seco_xlate;

return 0;
}

static int imx_mu_probe(struct platform_device *pdev)
Expand Down Expand Up @@ -866,7 +876,11 @@ static int imx_mu_probe(struct platform_device *pdev)

priv->side_b = of_property_read_bool(np, "fsl,mu-side-b");

priv->dcfg->init(priv);
ret = priv->dcfg->init(priv);
if (ret) {
dev_err(dev, "Failed to init MU\n");
goto disable_clk;
}

spin_lock_init(&priv->xcr_lock);

Expand All @@ -878,10 +892,8 @@ static int imx_mu_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, priv);

ret = devm_mbox_controller_register(dev, &priv->mbox);
if (ret) {
clk_disable_unprepare(priv->clk);
return ret;
}
if (ret)
goto disable_clk;

pm_runtime_enable(dev);

Expand All @@ -899,6 +911,7 @@ static int imx_mu_probe(struct platform_device *pdev)

disable_runtime_pm:
pm_runtime_disable(dev);
disable_clk:
clk_disable_unprepare(priv->clk);
return ret;
}
Expand Down

0 comments on commit f0e0110

Please sign in to comment.