Lines Matching +full:controller +full:- +full:data
1 /* SPDX-License-Identifier: GPL-2.0-only */
15 * struct mbox_chan_ops - methods to control mailbox channels
16 * @send_data: The API asks the MBOX controller driver, in atomic
18 * data is accepted for transmission, -EBUSY while rejecting
19 * if the remote hasn't yet read the last data sent. Actual
20 * transmission of data is reported by the controller via
24 * the context doesn't allow sleeping. Typically the controller
25 * will implement a busy loop waiting for the data to flush out.
26 * @startup: Called when a client requests the chan. The controller
29 * block. After this call the Controller must forward any
30 * data received on the chan by calling mbox_chan_received_data.
31 * The controller may do stuff that need to sleep.
33 * This call may block too. The controller must not forward
34 * any received data anymore.
35 * The controller may do stuff that need to sleep.
36 * @last_tx_done: If the controller sets 'txdone_poll', the API calls
37 * this to poll status of last TX. The controller must
40 * mode 'send_data' is expected to return -EBUSY.
41 * The controller may do stuff that need to sleep/block.
43 * @peek_data: Atomic check for any received data. Return true if controller
44 * has some data to push to the client. False otherwise.
47 int (*send_data)(struct mbox_chan *chan, void *data);
56 * struct mbox_controller - Controller of a class of communication channels
57 * @dev: Device backing this controller
61 * @txdone_irq: Indicates if the controller can report to API when
62 * the last transmitted data was read by the remote.
64 * @txdone_poll: If the controller can read but not report the TX
69 * @of_xlate: Controller driver specific mapping of channel via DT
95 * triggered and if we have lots of data to transfer, the interrupt
106 * struct mbox_chan - s/w representation of a communication chan
114 * @msg_data: Hook for data packet
116 * @con_priv: Hook for controller driver to attach private data
132 void mbox_chan_received_data(struct mbox_chan *chan, void *data); /* atomic */