xref: /freebsd-src/sys/dev/qat/include/common/adf_uio_control.h (revision 71625ec9ad2a9bc8c09784fbd23b759830e0ee5f)
1*266b0663SKrzysztof Zdziarski /* SPDX-License-Identifier: BSD-3-Clause */
2*266b0663SKrzysztof Zdziarski /* Copyright(c) 2007-2023 Intel Corporation */
3*266b0663SKrzysztof Zdziarski #ifndef QAT_UIO_CONTROL_H
4*266b0663SKrzysztof Zdziarski #define QAT_UIO_CONTROL_H
5*266b0663SKrzysztof Zdziarski #include <sys/condvar.h>
6*266b0663SKrzysztof Zdziarski 
7*266b0663SKrzysztof Zdziarski struct adf_uio_instance_rings {
8*266b0663SKrzysztof Zdziarski 	unsigned int user_pid;
9*266b0663SKrzysztof Zdziarski 	u16 ring_mask;
10*266b0663SKrzysztof Zdziarski 	struct list_head list;
11*266b0663SKrzysztof Zdziarski };
12*266b0663SKrzysztof Zdziarski 
13*266b0663SKrzysztof Zdziarski struct adf_uio_control_bundle {
14*266b0663SKrzysztof Zdziarski 	uint8_t hardware_bundle_number;
15*266b0663SKrzysztof Zdziarski 	bool used;
16*266b0663SKrzysztof Zdziarski 	struct list_head list;
17*266b0663SKrzysztof Zdziarski 	struct mutex list_lock; /* protects list struct */
18*266b0663SKrzysztof Zdziarski 	struct mutex lock;      /* protects rings_used and csr_addr */
19*266b0663SKrzysztof Zdziarski 	u16 rings_used;
20*266b0663SKrzysztof Zdziarski 	u32 rings_enabled;
21*266b0663SKrzysztof Zdziarski 	void *csr_addr;
22*266b0663SKrzysztof Zdziarski 	struct qat_uio_bundle_dev uio_priv;
23*266b0663SKrzysztof Zdziarski 	vm_object_t obj;
24*266b0663SKrzysztof Zdziarski };
25*266b0663SKrzysztof Zdziarski 
26*266b0663SKrzysztof Zdziarski struct adf_uio_control_accel {
27*266b0663SKrzysztof Zdziarski 	struct adf_accel_dev *accel_dev;
28*266b0663SKrzysztof Zdziarski 	struct cdev *cdev;
29*266b0663SKrzysztof Zdziarski 	struct mtx lock;
30*266b0663SKrzysztof Zdziarski 	struct adf_bar *bar;
31*266b0663SKrzysztof Zdziarski 	unsigned int nb_bundles;
32*266b0663SKrzysztof Zdziarski 	unsigned int num_ker_bundles;
33*266b0663SKrzysztof Zdziarski 	unsigned int total_used_bundles;
34*266b0663SKrzysztof Zdziarski 	unsigned int num_handles;
35*266b0663SKrzysztof Zdziarski 	struct cv cleanup_ok;
36*266b0663SKrzysztof Zdziarski 	/* bundle[] must be last to allow dynamic size allocation. */
37*266b0663SKrzysztof Zdziarski 	struct adf_uio_control_bundle bundle[0];
38*266b0663SKrzysztof Zdziarski 
39*266b0663SKrzysztof Zdziarski };
40*266b0663SKrzysztof Zdziarski 
41*266b0663SKrzysztof Zdziarski 
42*266b0663SKrzysztof Zdziarski #endif /* end of include guard: QAT_UIO_CONTROL_H */
43