xref: /linux/drivers/accel/amdxdna/aie2_msg_priv.h (revision 2c1ed907520c50326b8f604907a8478b27881a2e)
1*b87f920bSLizhi Hou /* SPDX-License-Identifier: GPL-2.0 */
2*b87f920bSLizhi Hou /*
3*b87f920bSLizhi Hou  * Copyright (C) 2022-2024, Advanced Micro Devices, Inc.
4*b87f920bSLizhi Hou  */
5*b87f920bSLizhi Hou 
6*b87f920bSLizhi Hou #ifndef _AIE2_MSG_PRIV_H_
7*b87f920bSLizhi Hou #define _AIE2_MSG_PRIV_H_
8*b87f920bSLizhi Hou 
9*b87f920bSLizhi Hou enum aie2_msg_opcode {
10*b87f920bSLizhi Hou 	MSG_OP_CREATE_CONTEXT              = 0x2,
11*b87f920bSLizhi Hou 	MSG_OP_DESTROY_CONTEXT             = 0x3,
12*b87f920bSLizhi Hou 	MSG_OP_SYNC_BO			   = 0x7,
13*b87f920bSLizhi Hou 	MSG_OP_EXECUTE_BUFFER_CF           = 0xC,
14*b87f920bSLizhi Hou 	MSG_OP_QUERY_COL_STATUS            = 0xD,
15*b87f920bSLizhi Hou 	MSG_OP_QUERY_AIE_TILE_INFO         = 0xE,
16*b87f920bSLizhi Hou 	MSG_OP_QUERY_AIE_VERSION           = 0xF,
17*b87f920bSLizhi Hou 	MSG_OP_EXEC_DPU                    = 0x10,
18*b87f920bSLizhi Hou 	MSG_OP_CONFIG_CU                   = 0x11,
19*b87f920bSLizhi Hou 	MSG_OP_CHAIN_EXEC_BUFFER_CF        = 0x12,
20*b87f920bSLizhi Hou 	MSG_OP_CHAIN_EXEC_DPU              = 0x13,
21*b87f920bSLizhi Hou 	MSG_OP_MAX_XRT_OPCODE,
22*b87f920bSLizhi Hou 	MSG_OP_SUSPEND                     = 0x101,
23*b87f920bSLizhi Hou 	MSG_OP_RESUME                      = 0x102,
24*b87f920bSLizhi Hou 	MSG_OP_ASSIGN_MGMT_PASID           = 0x103,
25*b87f920bSLizhi Hou 	MSG_OP_INVOKE_SELF_TEST            = 0x104,
26*b87f920bSLizhi Hou 	MSG_OP_MAP_HOST_BUFFER             = 0x106,
27*b87f920bSLizhi Hou 	MSG_OP_GET_FIRMWARE_VERSION        = 0x108,
28*b87f920bSLizhi Hou 	MSG_OP_SET_RUNTIME_CONFIG          = 0x10A,
29*b87f920bSLizhi Hou 	MSG_OP_GET_RUNTIME_CONFIG          = 0x10B,
30*b87f920bSLizhi Hou 	MSG_OP_REGISTER_ASYNC_EVENT_MSG    = 0x10C,
31*b87f920bSLizhi Hou 	MSG_OP_MAX_DRV_OPCODE,
32*b87f920bSLizhi Hou 	MSG_OP_GET_PROTOCOL_VERSION        = 0x301,
33*b87f920bSLizhi Hou 	MSG_OP_MAX_OPCODE
34*b87f920bSLizhi Hou };
35*b87f920bSLizhi Hou 
36*b87f920bSLizhi Hou enum aie2_msg_status {
37*b87f920bSLizhi Hou 	AIE2_STATUS_SUCCESS				= 0x0,
38*b87f920bSLizhi Hou 	/* AIE Error codes */
39*b87f920bSLizhi Hou 	AIE2_STATUS_AIE_SATURATION_ERROR		= 0x1000001,
40*b87f920bSLizhi Hou 	AIE2_STATUS_AIE_FP_ERROR			= 0x1000002,
41*b87f920bSLizhi Hou 	AIE2_STATUS_AIE_STREAM_ERROR			= 0x1000003,
42*b87f920bSLizhi Hou 	AIE2_STATUS_AIE_ACCESS_ERROR			= 0x1000004,
43*b87f920bSLizhi Hou 	AIE2_STATUS_AIE_BUS_ERROR			= 0x1000005,
44*b87f920bSLizhi Hou 	AIE2_STATUS_AIE_INSTRUCTION_ERROR		= 0x1000006,
45*b87f920bSLizhi Hou 	AIE2_STATUS_AIE_ECC_ERROR			= 0x1000007,
46*b87f920bSLizhi Hou 	AIE2_STATUS_AIE_LOCK_ERROR			= 0x1000008,
47*b87f920bSLizhi Hou 	AIE2_STATUS_AIE_DMA_ERROR			= 0x1000009,
48*b87f920bSLizhi Hou 	AIE2_STATUS_AIE_MEM_PARITY_ERROR		= 0x100000a,
49*b87f920bSLizhi Hou 	AIE2_STATUS_AIE_PWR_CFG_ERROR			= 0x100000b,
50*b87f920bSLizhi Hou 	AIE2_STATUS_AIE_BACKTRACK_ERROR			= 0x100000c,
51*b87f920bSLizhi Hou 	AIE2_STATUS_MAX_AIE_STATUS_CODE,
52*b87f920bSLizhi Hou 	/* MGMT ERT Error codes */
53*b87f920bSLizhi Hou 	AIE2_STATUS_MGMT_ERT_SELF_TEST_FAILURE		= 0x2000001,
54*b87f920bSLizhi Hou 	AIE2_STATUS_MGMT_ERT_HASH_MISMATCH,
55*b87f920bSLizhi Hou 	AIE2_STATUS_MGMT_ERT_NOAVAIL,
56*b87f920bSLizhi Hou 	AIE2_STATUS_MGMT_ERT_INVALID_PARAM,
57*b87f920bSLizhi Hou 	AIE2_STATUS_MGMT_ERT_ENTER_SUSPEND_FAILURE,
58*b87f920bSLizhi Hou 	AIE2_STATUS_MGMT_ERT_BUSY,
59*b87f920bSLizhi Hou 	AIE2_STATUS_MGMT_ERT_APPLICATION_ACTIVE,
60*b87f920bSLizhi Hou 	MAX_MGMT_ERT_STATUS_CODE,
61*b87f920bSLizhi Hou 	/* APP ERT Error codes */
62*b87f920bSLizhi Hou 	AIE2_STATUS_APP_ERT_FIRST_ERROR			= 0x3000001,
63*b87f920bSLizhi Hou 	AIE2_STATUS_APP_INVALID_INSTR,
64*b87f920bSLizhi Hou 	AIE2_STATUS_APP_LOAD_PDI_FAIL,
65*b87f920bSLizhi Hou 	MAX_APP_ERT_STATUS_CODE,
66*b87f920bSLizhi Hou 	/* NPU RTOS Error Codes */
67*b87f920bSLizhi Hou 	AIE2_STATUS_INVALID_INPUT_BUFFER		= 0x4000001,
68*b87f920bSLizhi Hou 	AIE2_STATUS_INVALID_COMMAND,
69*b87f920bSLizhi Hou 	AIE2_STATUS_INVALID_PARAM,
70*b87f920bSLizhi Hou 	AIE2_STATUS_INVALID_OPERATION			= 0x4000006,
71*b87f920bSLizhi Hou 	AIE2_STATUS_ASYNC_EVENT_MSGS_FULL,
72*b87f920bSLizhi Hou 	AIE2_STATUS_MAX_RTOS_STATUS_CODE,
73*b87f920bSLizhi Hou 	MAX_AIE2_STATUS_CODE
74*b87f920bSLizhi Hou };
75*b87f920bSLizhi Hou 
76*b87f920bSLizhi Hou struct assign_mgmt_pasid_req {
77*b87f920bSLizhi Hou 	__u16	pasid;
78*b87f920bSLizhi Hou 	__u16	reserved;
79*b87f920bSLizhi Hou } __packed;
80*b87f920bSLizhi Hou 
81*b87f920bSLizhi Hou struct assign_mgmt_pasid_resp {
82*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
83*b87f920bSLizhi Hou } __packed;
84*b87f920bSLizhi Hou 
85*b87f920bSLizhi Hou struct map_host_buffer_req {
86*b87f920bSLizhi Hou 	__u32		context_id;
87*b87f920bSLizhi Hou 	__u64		buf_addr;
88*b87f920bSLizhi Hou 	__u64		buf_size;
89*b87f920bSLizhi Hou } __packed;
90*b87f920bSLizhi Hou 
91*b87f920bSLizhi Hou struct map_host_buffer_resp {
92*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
93*b87f920bSLizhi Hou } __packed;
94*b87f920bSLizhi Hou 
95*b87f920bSLizhi Hou #define MAX_CQ_PAIRS		2
96*b87f920bSLizhi Hou struct cq_info {
97*b87f920bSLizhi Hou 	__u32 head_addr;
98*b87f920bSLizhi Hou 	__u32 tail_addr;
99*b87f920bSLizhi Hou 	__u32 buf_addr;
100*b87f920bSLizhi Hou 	__u32 buf_size;
101*b87f920bSLizhi Hou };
102*b87f920bSLizhi Hou 
103*b87f920bSLizhi Hou struct cq_pair {
104*b87f920bSLizhi Hou 	struct cq_info x2i_q;
105*b87f920bSLizhi Hou 	struct cq_info i2x_q;
106*b87f920bSLizhi Hou };
107*b87f920bSLizhi Hou 
108*b87f920bSLizhi Hou struct create_ctx_req {
109*b87f920bSLizhi Hou 	__u32	aie_type;
110*b87f920bSLizhi Hou 	__u8	start_col;
111*b87f920bSLizhi Hou 	__u8	num_col;
112*b87f920bSLizhi Hou 	__u16	reserved;
113*b87f920bSLizhi Hou 	__u8	num_cq_pairs_requested;
114*b87f920bSLizhi Hou 	__u8	reserved1;
115*b87f920bSLizhi Hou 	__u16	pasid;
116*b87f920bSLizhi Hou 	__u32	pad[2];
117*b87f920bSLizhi Hou 	__u32	sec_comm_target_type;
118*b87f920bSLizhi Hou 	__u32	context_priority;
119*b87f920bSLizhi Hou } __packed;
120*b87f920bSLizhi Hou 
121*b87f920bSLizhi Hou struct create_ctx_resp {
122*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
123*b87f920bSLizhi Hou 	__u32			context_id;
124*b87f920bSLizhi Hou 	__u16			msix_id;
125*b87f920bSLizhi Hou 	__u8			num_cq_pairs_allocated;
126*b87f920bSLizhi Hou 	__u8			reserved;
127*b87f920bSLizhi Hou 	struct cq_pair		cq_pair[MAX_CQ_PAIRS];
128*b87f920bSLizhi Hou } __packed;
129*b87f920bSLizhi Hou 
130*b87f920bSLizhi Hou struct destroy_ctx_req {
131*b87f920bSLizhi Hou 	__u32	context_id;
132*b87f920bSLizhi Hou } __packed;
133*b87f920bSLizhi Hou 
134*b87f920bSLizhi Hou struct destroy_ctx_resp {
135*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
136*b87f920bSLizhi Hou } __packed;
137*b87f920bSLizhi Hou 
138*b87f920bSLizhi Hou struct execute_buffer_req {
139*b87f920bSLizhi Hou 	__u32	cu_idx;
140*b87f920bSLizhi Hou 	__u32	payload[19];
141*b87f920bSLizhi Hou } __packed;
142*b87f920bSLizhi Hou 
143*b87f920bSLizhi Hou struct exec_dpu_req {
144*b87f920bSLizhi Hou 	__u64	inst_buf_addr;
145*b87f920bSLizhi Hou 	__u32	inst_size;
146*b87f920bSLizhi Hou 	__u32	inst_prop_cnt;
147*b87f920bSLizhi Hou 	__u32	cu_idx;
148*b87f920bSLizhi Hou 	__u32	payload[35];
149*b87f920bSLizhi Hou } __packed;
150*b87f920bSLizhi Hou 
151*b87f920bSLizhi Hou struct execute_buffer_resp {
152*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
153*b87f920bSLizhi Hou } __packed;
154*b87f920bSLizhi Hou 
155*b87f920bSLizhi Hou struct aie_tile_info {
156*b87f920bSLizhi Hou 	__u32		size;
157*b87f920bSLizhi Hou 	__u16		major;
158*b87f920bSLizhi Hou 	__u16		minor;
159*b87f920bSLizhi Hou 	__u16		cols;
160*b87f920bSLizhi Hou 	__u16		rows;
161*b87f920bSLizhi Hou 	__u16		core_rows;
162*b87f920bSLizhi Hou 	__u16		mem_rows;
163*b87f920bSLizhi Hou 	__u16		shim_rows;
164*b87f920bSLizhi Hou 	__u16		core_row_start;
165*b87f920bSLizhi Hou 	__u16		mem_row_start;
166*b87f920bSLizhi Hou 	__u16		shim_row_start;
167*b87f920bSLizhi Hou 	__u16		core_dma_channels;
168*b87f920bSLizhi Hou 	__u16		mem_dma_channels;
169*b87f920bSLizhi Hou 	__u16		shim_dma_channels;
170*b87f920bSLizhi Hou 	__u16		core_locks;
171*b87f920bSLizhi Hou 	__u16		mem_locks;
172*b87f920bSLizhi Hou 	__u16		shim_locks;
173*b87f920bSLizhi Hou 	__u16		core_events;
174*b87f920bSLizhi Hou 	__u16		mem_events;
175*b87f920bSLizhi Hou 	__u16		shim_events;
176*b87f920bSLizhi Hou 	__u16		reserved;
177*b87f920bSLizhi Hou };
178*b87f920bSLizhi Hou 
179*b87f920bSLizhi Hou struct aie_tile_info_req {
180*b87f920bSLizhi Hou 	__u32	reserved;
181*b87f920bSLizhi Hou } __packed;
182*b87f920bSLizhi Hou 
183*b87f920bSLizhi Hou struct aie_tile_info_resp {
184*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
185*b87f920bSLizhi Hou 	struct aie_tile_info	info;
186*b87f920bSLizhi Hou } __packed;
187*b87f920bSLizhi Hou 
188*b87f920bSLizhi Hou struct aie_version_info_req {
189*b87f920bSLizhi Hou 	__u32		reserved;
190*b87f920bSLizhi Hou } __packed;
191*b87f920bSLizhi Hou 
192*b87f920bSLizhi Hou struct aie_version_info_resp {
193*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
194*b87f920bSLizhi Hou 	__u16			major;
195*b87f920bSLizhi Hou 	__u16			minor;
196*b87f920bSLizhi Hou } __packed;
197*b87f920bSLizhi Hou 
198*b87f920bSLizhi Hou struct aie_column_info_req {
199*b87f920bSLizhi Hou 	__u64 dump_buff_addr;
200*b87f920bSLizhi Hou 	__u32 dump_buff_size;
201*b87f920bSLizhi Hou 	__u32 num_cols;
202*b87f920bSLizhi Hou 	__u32 aie_bitmap;
203*b87f920bSLizhi Hou } __packed;
204*b87f920bSLizhi Hou 
205*b87f920bSLizhi Hou struct aie_column_info_resp {
206*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
207*b87f920bSLizhi Hou 	__u32 size;
208*b87f920bSLizhi Hou } __packed;
209*b87f920bSLizhi Hou 
210*b87f920bSLizhi Hou struct suspend_req {
211*b87f920bSLizhi Hou 	__u32		place_holder;
212*b87f920bSLizhi Hou } __packed;
213*b87f920bSLizhi Hou 
214*b87f920bSLizhi Hou struct suspend_resp {
215*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
216*b87f920bSLizhi Hou } __packed;
217*b87f920bSLizhi Hou 
218*b87f920bSLizhi Hou struct resume_req {
219*b87f920bSLizhi Hou 	__u32		place_holder;
220*b87f920bSLizhi Hou } __packed;
221*b87f920bSLizhi Hou 
222*b87f920bSLizhi Hou struct resume_resp {
223*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
224*b87f920bSLizhi Hou } __packed;
225*b87f920bSLizhi Hou 
226*b87f920bSLizhi Hou struct check_header_hash_req {
227*b87f920bSLizhi Hou 	__u64		hash_high;
228*b87f920bSLizhi Hou 	__u64		hash_low;
229*b87f920bSLizhi Hou } __packed;
230*b87f920bSLizhi Hou 
231*b87f920bSLizhi Hou struct check_header_hash_resp {
232*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
233*b87f920bSLizhi Hou } __packed;
234*b87f920bSLizhi Hou 
235*b87f920bSLizhi Hou struct query_error_req {
236*b87f920bSLizhi Hou 	__u64		buf_addr;
237*b87f920bSLizhi Hou 	__u32		buf_size;
238*b87f920bSLizhi Hou 	__u32		next_row;
239*b87f920bSLizhi Hou 	__u32		next_column;
240*b87f920bSLizhi Hou 	__u32		next_module;
241*b87f920bSLizhi Hou } __packed;
242*b87f920bSLizhi Hou 
243*b87f920bSLizhi Hou struct query_error_resp {
244*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
245*b87f920bSLizhi Hou 	__u32			num_err;
246*b87f920bSLizhi Hou 	__u32			has_next_err;
247*b87f920bSLizhi Hou 	__u32			next_row;
248*b87f920bSLizhi Hou 	__u32			next_column;
249*b87f920bSLizhi Hou 	__u32			next_module;
250*b87f920bSLizhi Hou } __packed;
251*b87f920bSLizhi Hou 
252*b87f920bSLizhi Hou struct protocol_version_req {
253*b87f920bSLizhi Hou 	__u32		reserved;
254*b87f920bSLizhi Hou } __packed;
255*b87f920bSLizhi Hou 
256*b87f920bSLizhi Hou struct protocol_version_resp {
257*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
258*b87f920bSLizhi Hou 	__u32			major;
259*b87f920bSLizhi Hou 	__u32			minor;
260*b87f920bSLizhi Hou } __packed;
261*b87f920bSLizhi Hou 
262*b87f920bSLizhi Hou struct firmware_version_req {
263*b87f920bSLizhi Hou 	__u32		reserved;
264*b87f920bSLizhi Hou } __packed;
265*b87f920bSLizhi Hou 
266*b87f920bSLizhi Hou struct firmware_version_resp {
267*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
268*b87f920bSLizhi Hou 	__u32			major;
269*b87f920bSLizhi Hou 	__u32			minor;
270*b87f920bSLizhi Hou 	__u32			sub;
271*b87f920bSLizhi Hou 	__u32			build;
272*b87f920bSLizhi Hou } __packed;
273*b87f920bSLizhi Hou 
274*b87f920bSLizhi Hou #define MAX_NUM_CUS			32
275*b87f920bSLizhi Hou #define AIE2_MSG_CFG_CU_PDI_ADDR	GENMASK(16, 0)
276*b87f920bSLizhi Hou #define AIE2_MSG_CFG_CU_FUNC		GENMASK(24, 17)
277*b87f920bSLizhi Hou struct config_cu_req {
278*b87f920bSLizhi Hou 	__u32	num_cus;
279*b87f920bSLizhi Hou 	__u32	cfgs[MAX_NUM_CUS];
280*b87f920bSLizhi Hou } __packed;
281*b87f920bSLizhi Hou 
282*b87f920bSLizhi Hou struct config_cu_resp {
283*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
284*b87f920bSLizhi Hou } __packed;
285*b87f920bSLizhi Hou 
286*b87f920bSLizhi Hou struct set_runtime_cfg_req {
287*b87f920bSLizhi Hou 	__u32	type;
288*b87f920bSLizhi Hou 	__u64	value;
289*b87f920bSLizhi Hou } __packed;
290*b87f920bSLizhi Hou 
291*b87f920bSLizhi Hou struct set_runtime_cfg_resp {
292*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
293*b87f920bSLizhi Hou } __packed;
294*b87f920bSLizhi Hou 
295*b87f920bSLizhi Hou struct get_runtime_cfg_req {
296*b87f920bSLizhi Hou 	__u32	type;
297*b87f920bSLizhi Hou } __packed;
298*b87f920bSLizhi Hou 
299*b87f920bSLizhi Hou struct get_runtime_cfg_resp {
300*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
301*b87f920bSLizhi Hou 	__u64			value;
302*b87f920bSLizhi Hou } __packed;
303*b87f920bSLizhi Hou 
304*b87f920bSLizhi Hou enum async_event_type {
305*b87f920bSLizhi Hou 	ASYNC_EVENT_TYPE_AIE_ERROR,
306*b87f920bSLizhi Hou 	ASYNC_EVENT_TYPE_EXCEPTION,
307*b87f920bSLizhi Hou 	MAX_ASYNC_EVENT_TYPE
308*b87f920bSLizhi Hou };
309*b87f920bSLizhi Hou 
310*b87f920bSLizhi Hou #define ASYNC_BUF_SIZE SZ_8K
311*b87f920bSLizhi Hou struct async_event_msg_req {
312*b87f920bSLizhi Hou 	__u64 buf_addr;
313*b87f920bSLizhi Hou 	__u32 buf_size;
314*b87f920bSLizhi Hou } __packed;
315*b87f920bSLizhi Hou 
316*b87f920bSLizhi Hou struct async_event_msg_resp {
317*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
318*b87f920bSLizhi Hou 	enum async_event_type	type;
319*b87f920bSLizhi Hou } __packed;
320*b87f920bSLizhi Hou 
321*b87f920bSLizhi Hou #define MAX_CHAIN_CMDBUF_SIZE SZ_4K
322*b87f920bSLizhi Hou #define slot_cf_has_space(offset, payload_size) \
323*b87f920bSLizhi Hou 	(MAX_CHAIN_CMDBUF_SIZE - ((offset) + (payload_size)) > \
324*b87f920bSLizhi Hou 	 offsetof(struct cmd_chain_slot_execbuf_cf, args[0]))
325*b87f920bSLizhi Hou struct cmd_chain_slot_execbuf_cf {
326*b87f920bSLizhi Hou 	__u32 cu_idx;
327*b87f920bSLizhi Hou 	__u32 arg_cnt;
328*b87f920bSLizhi Hou 	__u32 args[] __counted_by(arg_cnt);
329*b87f920bSLizhi Hou };
330*b87f920bSLizhi Hou 
331*b87f920bSLizhi Hou #define slot_dpu_has_space(offset, payload_size) \
332*b87f920bSLizhi Hou 	(MAX_CHAIN_CMDBUF_SIZE - ((offset) + (payload_size)) > \
333*b87f920bSLizhi Hou 	 offsetof(struct cmd_chain_slot_dpu, args[0]))
334*b87f920bSLizhi Hou struct cmd_chain_slot_dpu {
335*b87f920bSLizhi Hou 	__u64 inst_buf_addr;
336*b87f920bSLizhi Hou 	__u32 inst_size;
337*b87f920bSLizhi Hou 	__u32 inst_prop_cnt;
338*b87f920bSLizhi Hou 	__u32 cu_idx;
339*b87f920bSLizhi Hou 	__u32 arg_cnt;
340*b87f920bSLizhi Hou #define MAX_DPU_ARGS_SIZE (34 * sizeof(__u32))
341*b87f920bSLizhi Hou 	__u32 args[] __counted_by(arg_cnt);
342*b87f920bSLizhi Hou };
343*b87f920bSLizhi Hou 
344*b87f920bSLizhi Hou struct cmd_chain_req {
345*b87f920bSLizhi Hou 	__u64 buf_addr;
346*b87f920bSLizhi Hou 	__u32 buf_size;
347*b87f920bSLizhi Hou 	__u32 count;
348*b87f920bSLizhi Hou } __packed;
349*b87f920bSLizhi Hou 
350*b87f920bSLizhi Hou struct cmd_chain_resp {
351*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
352*b87f920bSLizhi Hou 	__u32			fail_cmd_idx;
353*b87f920bSLizhi Hou 	enum aie2_msg_status	fail_cmd_status;
354*b87f920bSLizhi Hou } __packed;
355*b87f920bSLizhi Hou 
356*b87f920bSLizhi Hou #define AIE2_MSG_SYNC_BO_SRC_TYPE	GENMASK(3, 0)
357*b87f920bSLizhi Hou #define AIE2_MSG_SYNC_BO_DST_TYPE	GENMASK(7, 4)
358*b87f920bSLizhi Hou struct sync_bo_req {
359*b87f920bSLizhi Hou 	__u64 src_addr;
360*b87f920bSLizhi Hou 	__u64 dst_addr;
361*b87f920bSLizhi Hou 	__u32 size;
362*b87f920bSLizhi Hou #define SYNC_BO_DEV_MEM  0
363*b87f920bSLizhi Hou #define SYNC_BO_HOST_MEM 2
364*b87f920bSLizhi Hou 	__u32 type;
365*b87f920bSLizhi Hou } __packed;
366*b87f920bSLizhi Hou 
367*b87f920bSLizhi Hou struct sync_bo_resp {
368*b87f920bSLizhi Hou 	enum aie2_msg_status	status;
369*b87f920bSLizhi Hou } __packed;
370*b87f920bSLizhi Hou #endif /* _AIE2_MSG_PRIV_H_ */
371