xref: /freebsd/sys/dev/qat/include/common/adf_uio_control.h (revision 25f09d4a9c358c5452435d299e00c1a1bdafff87)
1266b0663SKrzysztof Zdziarski /* SPDX-License-Identifier: BSD-3-Clause */
2*25f09d4aSHareshx Sankar Raj /* Copyright(c) 2007-2025 Intel Corporation */
3266b0663SKrzysztof Zdziarski #ifndef QAT_UIO_CONTROL_H
4266b0663SKrzysztof Zdziarski #define QAT_UIO_CONTROL_H
5266b0663SKrzysztof Zdziarski #include <sys/condvar.h>
6266b0663SKrzysztof Zdziarski 
7266b0663SKrzysztof Zdziarski struct adf_uio_instance_rings {
8266b0663SKrzysztof Zdziarski 	unsigned int user_pid;
9266b0663SKrzysztof Zdziarski 	u16 ring_mask;
10266b0663SKrzysztof Zdziarski 	struct list_head list;
11266b0663SKrzysztof Zdziarski };
12266b0663SKrzysztof Zdziarski 
13266b0663SKrzysztof Zdziarski struct adf_uio_control_bundle {
14266b0663SKrzysztof Zdziarski 	uint8_t hardware_bundle_number;
15266b0663SKrzysztof Zdziarski 	bool used;
16266b0663SKrzysztof Zdziarski 	struct list_head list;
17266b0663SKrzysztof Zdziarski 	struct mutex list_lock; /* protects list struct */
18266b0663SKrzysztof Zdziarski 	struct mutex lock;      /* protects rings_used and csr_addr */
19266b0663SKrzysztof Zdziarski 	u16 rings_used;
20266b0663SKrzysztof Zdziarski 	u32 rings_enabled;
21266b0663SKrzysztof Zdziarski 	void *csr_addr;
22266b0663SKrzysztof Zdziarski 	struct qat_uio_bundle_dev uio_priv;
23266b0663SKrzysztof Zdziarski 	vm_object_t obj;
24266b0663SKrzysztof Zdziarski };
25266b0663SKrzysztof Zdziarski 
26266b0663SKrzysztof Zdziarski struct adf_uio_control_accel {
27266b0663SKrzysztof Zdziarski 	struct adf_accel_dev *accel_dev;
28266b0663SKrzysztof Zdziarski 	struct cdev *cdev;
29266b0663SKrzysztof Zdziarski 	struct mtx lock;
30266b0663SKrzysztof Zdziarski 	struct adf_bar *bar;
31266b0663SKrzysztof Zdziarski 	unsigned int nb_bundles;
32266b0663SKrzysztof Zdziarski 	unsigned int num_ker_bundles;
33266b0663SKrzysztof Zdziarski 	unsigned int total_used_bundles;
34266b0663SKrzysztof Zdziarski 	unsigned int num_handles;
35266b0663SKrzysztof Zdziarski 	struct cv cleanup_ok;
36266b0663SKrzysztof Zdziarski 	/* bundle[] must be last to allow dynamic size allocation. */
37266b0663SKrzysztof Zdziarski 	struct adf_uio_control_bundle bundle[0];
38266b0663SKrzysztof Zdziarski 
39266b0663SKrzysztof Zdziarski };
40266b0663SKrzysztof Zdziarski 
41266b0663SKrzysztof Zdziarski #endif /* end of include guard: QAT_UIO_CONTROL_H */
42