1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (C) 2020 - 2025 Intel Corporation
4  */
5 
6 #ifndef IPU7_FW_SYSCOM_ABI_H
7 #define IPU7_FW_SYSCOM_ABI_H
8 
9 #include <linux/types.h>
10 
11 #include "ipu7_fw_common_abi.h"
12 
13 #pragma pack(push, 1)
14 #define SYSCOM_QUEUE_MIN_CAPACITY	2U
15 
16 struct syscom_queue_params_config {
17 	ia_gofo_addr_t token_array_mem;
18 	u16 token_size_in_bytes;
19 	u16 max_capacity;
20 };
21 
22 struct syscom_config_s {
23 	u16 max_output_queues;
24 	u16 max_input_queues;
25 };
26 
27 #pragma pack(pop)
28 
29 static inline struct syscom_queue_params_config *
syscom_config_get_queue_configs(struct syscom_config_s * config)30 syscom_config_get_queue_configs(struct syscom_config_s *config)
31 {
32 	return (struct syscom_queue_params_config *)(&config[1]);
33 }
34 
35 static inline const struct syscom_queue_params_config *
syscom_config_get_queue_configs_const(const struct syscom_config_s * config)36 syscom_config_get_queue_configs_const(const struct syscom_config_s *config)
37 {
38 	return (const struct syscom_queue_params_config *)(&config[1]);
39 }
40 
41 #pragma pack(push, 1)
42 struct syscom_queue_indices_s {
43 	u32 read_index;
44 	u32 write_index;
45 };
46 
47 #pragma pack(pop)
48 
49 #endif
50