Skip to content

Commit

Permalink
mailbox: sprd: Use devm_clk_get_enabled() helpers
Browse files Browse the repository at this point in the history
The devm_clk_get_enabled() helpers:
     - call devm_clk_get()
     - call clk_prepare_enable() and register what is needed in order to
      call clk_disable_unprepare() when needed, as a managed resource.

This simplifies the code and avoids the calls to clk_disable_unprepare().

Due to clk only used in probe, not in suspend\resume, this pointer can
remove from sprd_mbox_priv to save a little memory.

Signed-off-by: Huan Yang <link@vivo.com>
Reviewed-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
  • Loading branch information
Huan Yang authored and Jassi Brar committed Sep 23, 2024
1 parent e92d87c commit 0d97651
Showing 1 changed file with 4 additions and 21 deletions.
25 changes: 4 additions & 21 deletions drivers/mailbox/sprd-mailbox.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ struct sprd_mbox_priv {
void __iomem *outbox_base;
/* Base register address for supplementary outbox */
void __iomem *supp_base;
struct clk *clk;
u32 outbox_fifo_depth;

struct mutex lock;
Expand Down Expand Up @@ -291,19 +290,13 @@ static const struct mbox_chan_ops sprd_mbox_ops = {
.shutdown = sprd_mbox_shutdown,
};

static void sprd_mbox_disable(void *data)
{
struct sprd_mbox_priv *priv = data;

clk_disable_unprepare(priv->clk);
}

static int sprd_mbox_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct sprd_mbox_priv *priv;
int ret, inbox_irq, outbox_irq, supp_irq;
unsigned long id, supp;
struct clk *clk;

priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
Expand Down Expand Up @@ -331,20 +324,10 @@ static int sprd_mbox_probe(struct platform_device *pdev)
if (IS_ERR(priv->outbox_base))
return PTR_ERR(priv->outbox_base);

priv->clk = devm_clk_get(dev, "enable");
if (IS_ERR(priv->clk)) {
clk = devm_clk_get_enabled(dev, "enable");
if (IS_ERR(clk)) {
dev_err(dev, "failed to get mailbox clock\n");
return PTR_ERR(priv->clk);
}

ret = clk_prepare_enable(priv->clk);
if (ret)
return ret;

ret = devm_add_action_or_reset(dev, sprd_mbox_disable, priv);
if (ret) {
dev_err(dev, "failed to add mailbox disable action\n");
return ret;
return PTR_ERR(clk);
}

inbox_irq = platform_get_irq_byname(pdev, "inbox");
Expand Down

0 comments on commit 0d97651

Please sign in to comment.