Lines Matching refs:chan

207 	int (*rx_startup)(struct mhuv2 *mhu, struct mbox_chan *chan);
208 void (*rx_shutdown)(struct mhuv2 *mhu, struct mbox_chan *chan);
209 void *(*read_data)(struct mhuv2 *mhu, struct mbox_chan *chan);
211 void (*tx_startup)(struct mhuv2 *mhu, struct mbox_chan *chan);
212 void (*tx_shutdown)(struct mhuv2 *mhu, struct mbox_chan *chan);
213 int (*last_tx_done)(struct mhuv2 *mhu, struct mbox_chan *chan);
214 int (*send_data)(struct mhuv2 *mhu, struct mbox_chan *chan, void *arg);
261 static int mhuv2_doorbell_rx_startup(struct mhuv2 *mhu, struct mbox_chan *chan)
263 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
271 struct mbox_chan *chan)
273 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
279 static void *mhuv2_doorbell_read_data(struct mhuv2 *mhu, struct mbox_chan *chan)
281 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
289 struct mbox_chan *chan)
291 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
297 static int mhuv2_doorbell_send_data(struct mhuv2 *mhu, struct mbox_chan *chan,
300 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
326 struct mbox_chan *chan)
328 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
340 struct mbox_chan *chan)
342 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
349 struct mbox_chan *chan)
351 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
386 struct mbox_chan *chan)
388 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
399 struct mbox_chan *chan)
401 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
409 struct mbox_chan *chan)
411 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
446 struct mbox_chan *chan, void *arg)
450 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
460 while(!mhuv2_data_transfer_last_tx_done(mhu, chan))
527 /* Return first chan of the window in doorbell mode */
543 struct mbox_chan *chan;
548 chan = get_irq_chan_comb(mhu, mhu->send->chcomb_int_st);
549 if (IS_ERR(chan)) {
553 priv = chan->con_priv;
559 if (chan->cl) {
560 mbox_chan_txdone(chan, 0);
587 priv = chan[i].con_priv;
593 if (!chan->cl) {
599 mbox_chan_txdone(&chan[i], 0);
624 struct mbox_chan *chan;
627 chan = get_irq_chan_comb(mhu, mhu->recv->chcomb_int_st);
628 if (IS_ERR(chan))
629 return chan;
631 priv = chan->con_priv;
633 return chan;
642 return chan + __builtin_ctz(stat);
679 struct mbox_chan *chan = get_irq_chan_rx(mhu);
685 if (IS_ERR(chan)) {
689 priv = chan->con_priv;
692 data = priv->ops->read_data(mhu, chan);
694 if (!chan->cl) {
700 mbox_chan_received_data(chan, data);
711 static bool mhuv2_sender_last_tx_done(struct mbox_chan *chan)
713 struct mhuv2 *mhu = mhu_from_mbox(chan->mbox);
714 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
716 return priv->ops->last_tx_done(mhu, chan);
719 static int mhuv2_sender_send_data(struct mbox_chan *chan, void *data)
721 struct mhuv2 *mhu = mhu_from_mbox(chan->mbox);
722 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
724 if (!priv->ops->last_tx_done(mhu, chan))
727 return priv->ops->send_data(mhu, chan, data);
730 static int mhuv2_sender_startup(struct mbox_chan *chan)
732 struct mhuv2 *mhu = mhu_from_mbox(chan->mbox);
733 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
736 priv->ops->tx_startup(mhu, chan);
740 static void mhuv2_sender_shutdown(struct mbox_chan *chan)
742 struct mhuv2 *mhu = mhu_from_mbox(chan->mbox);
743 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
746 priv->ops->tx_shutdown(mhu, chan);
756 static int mhuv2_receiver_startup(struct mbox_chan *chan)
758 struct mhuv2 *mhu = mhu_from_mbox(chan->mbox);
759 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
761 return priv->ops->rx_startup(mhu, chan);
764 static void mhuv2_receiver_shutdown(struct mbox_chan *chan)
766 struct mhuv2 *mhu = mhu_from_mbox(chan->mbox);
767 struct mhuv2_mbox_chan_priv *priv = chan->con_priv;
769 priv->ops->rx_shutdown(mhu, chan);
772 static int mhuv2_receiver_send_data(struct mbox_chan *chan, void *data)
774 dev_err(chan->mbox->dev,
779 static bool mhuv2_receiver_last_tx_done(struct mbox_chan *chan)
781 dev_err(chan->mbox->dev, "Trying to Tx poll on a receiver MHU frame\n");