diff options
author | Sudeep Holla <sudeep.holla@arm.com> | 2024-04-17 12:09:31 +0300 |
---|---|---|
committer | Sudeep Holla <sudeep.holla@arm.com> | 2024-04-18 20:29:50 +0300 |
commit | 02c19d84c7c5026624d181b8e4cdc8488134d013 (patch) | |
tree | cf49514c80142ff501b34b949d4329d2dd1728e2 /include/linux/arm_ffa.h | |
parent | 3c258bf6bf29d8c9f9b358c64f6e9f4510c91ff9 (diff) | |
download | linux-02c19d84c7c5026624d181b8e4cdc8488134d013.tar.xz |
firmware: arm_ffa: Add support for FFA_MSG_SEND2
The FFA_MSG_SEND2 can be used to transmit a partition message from
the Tx buffer of the sender(the driver in this case) endpoint to the Rx
buffer of the receiver endpoint.
An invocation of the FFA_MSG_SEND2 transfers the ownership of the Tx
buffer to the receiver endpoint(or any intermediate consumer). Completion
of an FFA_MSG_SEND2 invocation transfers the ownership of the buffer
back to the sender endpoint.
The framework defines the FFA_MSG_SEND2 interface to transmit a partition
message from the Tx buffer of the sender to the Rx buffer of a receiver
and inform the scheduler that the receiver must be run.
Link: https://lore.kernel.org/r/20240417090931.2866487-1-sudeep.holla@arm.com
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Diffstat (limited to 'include/linux/arm_ffa.h')
-rw-r--r-- | include/linux/arm_ffa.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/include/linux/arm_ffa.h b/include/linux/arm_ffa.h index 94a49612ecec..c82d56768101 100644 --- a/include/linux/arm_ffa.h +++ b/include/linux/arm_ffa.h @@ -254,6 +254,14 @@ struct ffa_send_direct_data { unsigned long data4; /* w7/x7 */ }; +struct ffa_indirect_msg_hdr { + u32 flags; + u32 res0; + u32 offset; + u32 send_recv_id; + u32 size; +}; + struct ffa_mem_region_addr_range { /* The base IPA of the constituent memory region, aligned to 4 kiB */ u64 address; @@ -414,6 +422,7 @@ struct ffa_msg_ops { void (*mode_32bit_set)(struct ffa_device *dev); int (*sync_send_receive)(struct ffa_device *dev, struct ffa_send_direct_data *data); + int (*indirect_send)(struct ffa_device *dev, void *buf, size_t sz); }; struct ffa_mem_ops { |