1 /* SPDX-License-Identifier: MIT */
2 /*
3  * Copyright © 2023 Intel Corporation
4  */
5 
6 #ifndef _ABI_GSC_COMMAND_HEADER_ABI_H
7 #define _ABI_GSC_COMMAND_HEADER_ABI_H
8 
9 #include <linux/types.h>
10 
11 struct intel_gsc_mtl_header {
12 	u32 validity_marker;
13 #define GSC_HECI_VALIDITY_MARKER 0xA578875A
14 
15 	u8 heci_client_id;
16 
17 	u8 reserved1;
18 
19 	u16 header_version;
20 #define MTL_GSC_HEADER_VERSION 1
21 
22 	/* FW allows host to decide host_session handle as it sees fit. */
23 	u64 host_session_handle;
24 
25 	/* handle generated by FW for messages that need to be re-submitted */
26 	u64 gsc_message_handle;
27 
28 	u32 message_size; /* lower 20 bits only, upper 12 are reserved */
29 
30 	/*
31 	 * Flags mask:
32 	 * Bit 0: Pending
33 	 * Bit 1: Session Cleanup;
34 	 * Bits 2-15: Flags
35 	 * Bits 16-31: Extension Size
36 	 * According to internal spec flags are either input or output
37 	 * we distinguish the flags using OUTFLAG or INFLAG
38 	 */
39 	u32 flags;
40 #define GSC_OUTFLAG_MSG_PENDING	BIT(0)
41 #define GSC_INFLAG_MSG_CLEANUP	BIT(1)
42 
43 	u32 status;
44 } __packed;
45 
46 #endif
47