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