xref: /linux/drivers/staging/media/ipu7/ipu7-syscom.h (revision 8d2b0853add1d7534dc0794e3c8e0b9e8c4ec640)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (C) 2013 - 2025 Intel Corporation
4  */
5 
6 #ifndef IPU7_SYSCOM_H
7 #define IPU7_SYSCOM_H
8 
9 #include <linux/types.h>
10 
11 struct syscom_config_s;
12 struct syscom_queue_params_config;
13 
14 struct syscom_queue_config {
15 	void *token_array_mem;
16 	u32 queue_size;
17 	u16 token_size_in_bytes;
18 	u16 max_capacity;
19 };
20 
21 struct ipu7_syscom_context {
22 	u16 num_input_queues;
23 	u16 num_output_queues;
24 	struct syscom_queue_config *queue_configs;
25 	void __iomem *queue_indices;
26 	dma_addr_t queue_mem_dma_addr;
27 	void *queue_mem;
28 	u32 queue_mem_size;
29 };
30 
31 void ipu7_syscom_put_token(struct ipu7_syscom_context *ctx, int q);
32 void *ipu7_syscom_get_token(struct ipu7_syscom_context *ctx, int q);
33 struct syscom_queue_params_config *
34 ipu7_syscom_get_queue_config(struct syscom_config_s *config);
35 #endif
36