aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/media/ipu7/ipu7-syscom.h
blob: e1fbe3b7914e42ea75011571056231b5803344fc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (C) 2013 - 2025 Intel Corporation
 */

#ifndef IPU7_SYSCOM_H
#define IPU7_SYSCOM_H

#include <linux/types.h>

struct syscom_config_s;
struct syscom_queue_params_config;

struct syscom_queue_config {
	void *token_array_mem;
	u32 queue_size;
	u16 token_size_in_bytes;
	u16 max_capacity;
};

struct ipu7_syscom_context {
	u16 num_input_queues;
	u16 num_output_queues;
	struct syscom_queue_config *queue_configs;
	void __iomem *queue_indices;
	dma_addr_t queue_mem_dma_addr;
	void *queue_mem;
	u32 queue_mem_size;
};

void ipu7_syscom_put_token(struct ipu7_syscom_context *ctx, int q);
void *ipu7_syscom_get_token(struct ipu7_syscom_context *ctx, int q);
struct syscom_queue_params_config *
ipu7_syscom_get_queue_config(struct syscom_config_s *config);
#endif