summaryrefslogtreecommitdiff
path: root/include/linux/i3c/mctp/i3c-mctp.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/i3c/mctp/i3c-mctp.h')
-rw-r--r--include/linux/i3c/mctp/i3c-mctp.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/include/linux/i3c/mctp/i3c-mctp.h b/include/linux/i3c/mctp/i3c-mctp.h
new file mode 100644
index 000000000000..72f6fae922b5
--- /dev/null
+++ b/include/linux/i3c/mctp/i3c-mctp.h
@@ -0,0 +1,38 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright (C) 2022 Intel Corporation.*/
+
+#ifndef I3C_MCTP_H
+#define I3C_MCTP_H
+
+#define I3C_MCTP_PACKET_SIZE 68
+#define I3C_MCTP_PAYLOAD_SIZE 64
+#define I3C_MCTP_HDR_SIZE 4
+
+struct i3c_mctp_client;
+
+struct mctp_protocol_hdr {
+ u8 ver;
+ u8 dest;
+ u8 src;
+ u8 flags_seq_tag;
+} __packed;
+
+struct i3c_mctp_packet_data {
+ u8 protocol_hdr[I3C_MCTP_HDR_SIZE];
+ u8 payload[I3C_MCTP_PAYLOAD_SIZE];
+};
+
+struct i3c_mctp_packet {
+ struct i3c_mctp_packet_data data;
+ u32 size;
+};
+
+void *i3c_mctp_packet_alloc(gfp_t flags);
+void i3c_mctp_packet_free(void *packet);
+
+int i3c_mctp_get_eid(struct i3c_mctp_client *client, u8 domain_id, u8 *eid);
+int i3c_mctp_send_packet(struct i3c_device *i3c, struct i3c_mctp_packet *tx_packet);
+struct i3c_mctp_packet *i3c_mctp_receive_packet(struct i3c_mctp_client *client,
+ unsigned long timeout);
+
+#endif /* I3C_MCTP_H */