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