Lines Matching refs:mbox

82 	err = chan->mbox->ops->send_data(chan, data);  in msg_submit()
91 poll_txdone((unsigned long)chan->mbox); in msg_submit()
117 struct mbox_controller *mbox = (struct mbox_controller *)data; in poll_txdone() local
121 for (i = 0; i < mbox->num_chans; i++) { in poll_txdone()
122 struct mbox_chan *chan = &mbox->chans[i]; in poll_txdone()
125 txdone = chan->mbox->ops->last_tx_done(chan); in poll_txdone()
134 mod_timer(&mbox->poll, jiffies + in poll_txdone()
135 msecs_to_jiffies(mbox->txpoll_period)); in poll_txdone()
169 dev_err(chan->mbox->dev, in mbox_chan_txdone()
190 dev_err(chan->mbox->dev, "Client can't run the TX ticker\n"); in mbox_client_txdone()
215 if (chan->mbox->ops->peek_data) in mbox_client_peek_data()
216 return chan->mbox->ops->peek_data(chan); in mbox_client_peek_data()
255 dev_err(chan->mbox->dev, "Try increasing MBOX_TX_QUEUE_LEN\n"); in mbox_send_message()
301 struct mbox_controller *mbox; in mbox_request_channel() local
322 list_for_each_entry(mbox, &mbox_cons, node) in mbox_request_channel()
323 if (mbox->dev->of_node == spec.np) { in mbox_request_channel()
324 chan = mbox->of_xlate(mbox, &spec); in mbox_request_channel()
330 if (!chan || chan->cl || !try_module_get(mbox->dev->driver->owner)) { in mbox_request_channel()
348 ret = chan->mbox->ops->startup(chan); in mbox_request_channel()
372 chan->mbox->ops->shutdown(chan); in mbox_free_channel()
381 module_put(chan->mbox->dev->driver->owner); in mbox_free_channel()
387 of_mbox_index_xlate(struct mbox_controller *mbox, in of_mbox_index_xlate() argument
392 if (ind >= mbox->num_chans) in of_mbox_index_xlate()
395 return &mbox->chans[ind]; in of_mbox_index_xlate()
404 int mbox_controller_register(struct mbox_controller *mbox) in mbox_controller_register() argument
409 if (!mbox || !mbox->dev || !mbox->ops || !mbox->num_chans) in mbox_controller_register()
412 if (mbox->txdone_irq) in mbox_controller_register()
414 else if (mbox->txdone_poll) in mbox_controller_register()
420 mbox->poll.function = &poll_txdone; in mbox_controller_register()
421 mbox->poll.data = (unsigned long)mbox; in mbox_controller_register()
422 init_timer(&mbox->poll); in mbox_controller_register()
425 for (i = 0; i < mbox->num_chans; i++) { in mbox_controller_register()
426 struct mbox_chan *chan = &mbox->chans[i]; in mbox_controller_register()
429 chan->mbox = mbox; in mbox_controller_register()
434 if (!mbox->of_xlate) in mbox_controller_register()
435 mbox->of_xlate = of_mbox_index_xlate; in mbox_controller_register()
438 list_add_tail(&mbox->node, &mbox_cons); in mbox_controller_register()
449 void mbox_controller_unregister(struct mbox_controller *mbox) in mbox_controller_unregister() argument
453 if (!mbox) in mbox_controller_unregister()
458 list_del(&mbox->node); in mbox_controller_unregister()
460 for (i = 0; i < mbox->num_chans; i++) in mbox_controller_unregister()
461 mbox_free_channel(&mbox->chans[i]); in mbox_controller_unregister()
463 if (mbox->txdone_poll) in mbox_controller_unregister()
464 del_timer_sync(&mbox->poll); in mbox_controller_unregister()