mailbox: omap: Use mbox_bind_client
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>
This commit is contained in:
parent
85a9538065
commit
f11ff34d88
@ -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 = mbox_bind_client(mbox->chan, cl);
|
||||
if (ret)
|
||||
return ERR_PTR(ret);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
return chan;
|
||||
return mbox->chan;
|
||||
}
|
||||
EXPORT_SYMBOL(omap_mbox_request_channel);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user