diff options
| -rw-r--r-- | drivers/mailbox/mailbox.c | 2 | ||||
| -rw-r--r-- | include/linux/mailbox_client.h | 3 |
2 files changed, 5 insertions, 0 deletions
diff --git a/drivers/mailbox/mailbox.c b/drivers/mailbox/mailbox.c index c281e5562876..58789b027708 100644 --- a/drivers/mailbox/mailbox.c +++ b/drivers/mailbox/mailbox.c | |||
| @@ -78,6 +78,8 @@ static void msg_submit(struct mbox_chan *chan) | |||
| 78 | 78 | ||
| 79 | data = chan->msg_data[idx]; | 79 | data = chan->msg_data[idx]; |
| 80 | 80 | ||
| 81 | if (chan->cl->tx_prepare) | ||
| 82 | chan->cl->tx_prepare(chan->cl, data); | ||
| 81 | /* Try to submit a message to the MBOX controller */ | 83 | /* Try to submit a message to the MBOX controller */ |
| 82 | err = chan->mbox->ops->send_data(chan, data); | 84 | err = chan->mbox->ops->send_data(chan, data); |
| 83 | if (!err) { | 85 | if (!err) { |
diff --git a/include/linux/mailbox_client.h b/include/linux/mailbox_client.h index 307d9cab2026..1726ccbd8009 100644 --- a/include/linux/mailbox_client.h +++ b/include/linux/mailbox_client.h | |||
| @@ -25,6 +25,8 @@ struct mbox_chan; | |||
| 25 | * if the client receives some ACK packet for transmission. | 25 | * if the client receives some ACK packet for transmission. |
| 26 | * Unused if the controller already has TX_Done/RTR IRQ. | 26 | * Unused if the controller already has TX_Done/RTR IRQ. |
| 27 | * @rx_callback: Atomic callback to provide client the data received | 27 | * @rx_callback: Atomic callback to provide client the data received |
| 28 | * @tx_prepare: Atomic callback to ask client to prepare the payload | ||
| 29 | * before initiating the transmission if required. | ||
| 28 | * @tx_done: Atomic callback to tell client of data transmission | 30 | * @tx_done: Atomic callback to tell client of data transmission |
| 29 | */ | 31 | */ |
| 30 | struct mbox_client { | 32 | struct mbox_client { |
| @@ -34,6 +36,7 @@ struct mbox_client { | |||
| 34 | bool knows_txdone; | 36 | bool knows_txdone; |
| 35 | 37 | ||
| 36 | void (*rx_callback)(struct mbox_client *cl, void *mssg); | 38 | void (*rx_callback)(struct mbox_client *cl, void *mssg); |
| 39 | void (*tx_prepare)(struct mbox_client *cl, void *mssg); | ||
| 37 | void (*tx_done)(struct mbox_client *cl, void *mssg, int r); | 40 | void (*tx_done)(struct mbox_client *cl, void *mssg, int r); |
| 38 | }; | 41 | }; |
| 39 | 42 | ||
