mailbox: omap: Use mbox_bind_client
authorElliot Berman <quic_eberman@quicinc.com>
Mon, 10 Apr 2023 16:16:53 +0000 (09:16 -0700)
committerJassi Brar <jaswinder.singh@linaro.org>
Tue, 18 Apr 2023 16:48:55 +0000 (11:48 -0500)
Use generic mbox_bind_client() to bind omap mailbox channel to a client.

mbox_bind_client is identical to the replaced lines, except that it:
 - Does the operation under con_mutex which prevents possible races in
   removal path
 - Sets TXDONE_BY_ACK if omap uses TXDONE_BY_POLL. omap uses
   TXDONE_BY_IRQ, so this check is not applicable.
 - Calls chan->mbox->ops->startup, if available. omap doesn't have, so
   this is not applicable.

Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
drivers/mailbox/omap-mailbox.c

index 098c82d..dfe82a5 100644 (file)
@@ -417,8 +417,6 @@ struct mbox_chan *omap_mbox_request_channel(struct mbox_client *cl,
        struct device *dev = cl->dev;
        struct omap_mbox *mbox = NULL;
        struct omap_mbox_device *mdev;
-       struct mbox_chan *chan;
-       unsigned long flags;
        int ret;
 
        if (!dev)
@@ -441,23 +439,11 @@ struct mbox_chan *omap_mbox_request_channel(struct mbox_client *cl,
        if (!mbox || !mbox->chan)
                return ERR_PTR(-ENOENT);
 
-       chan = mbox->chan;
-       spin_lock_irqsave(&chan->lock, flags);
-       chan->msg_free = 0;
-       chan->msg_count = 0;
-       chan->active_req = NULL;
-       chan->cl = cl;
-       init_completion(&chan->tx_complete);
-       spin_unlock_irqrestore(&chan->lock, flags);
-
-       ret = chan->mbox->ops->startup(chan);
-       if (ret) {
-               pr_err("Unable to startup the chan (%d)\n", ret);
-               mbox_free_channel(chan);
-               chan = ERR_PTR(ret);
-       }
+       ret = mbox_bind_client(mbox->chan, cl);
+       if (ret)
+               return ERR_PTR(ret);
 
-       return chan;
+       return mbox->chan;
 }
 EXPORT_SYMBOL(omap_mbox_request_channel);