178ee8d1cSJulian Grajkowski /* SPDX-License-Identifier: BSD-3-Clause */
278ee8d1cSJulian Grajkowski /* Copyright(c) 2007-2022 Intel Corporation */
378ee8d1cSJulian Grajkowski #include "qat_freebsd.h"
478ee8d1cSJulian Grajkowski #include "adf_common_drv.h"
578ee8d1cSJulian Grajkowski
678ee8d1cSJulian Grajkowski static int __init
qat_common_register(void)778ee8d1cSJulian Grajkowski qat_common_register(void)
878ee8d1cSJulian Grajkowski {
978ee8d1cSJulian Grajkowski if (adf_init_aer())
1078ee8d1cSJulian Grajkowski return EFAULT;
1178ee8d1cSJulian Grajkowski
1278ee8d1cSJulian Grajkowski if (adf_init_fatal_error_wq())
1378ee8d1cSJulian Grajkowski return EFAULT;
1478ee8d1cSJulian Grajkowski
15*266b0663SKrzysztof Zdziarski if (adf_register_ctl_device_driver())
16*266b0663SKrzysztof Zdziarski return EFAULT;
17*266b0663SKrzysztof Zdziarski
1878ee8d1cSJulian Grajkowski return 0;
1978ee8d1cSJulian Grajkowski }
2078ee8d1cSJulian Grajkowski
2178ee8d1cSJulian Grajkowski static void __exit
qat_common_unregister(void)2278ee8d1cSJulian Grajkowski qat_common_unregister(void)
2378ee8d1cSJulian Grajkowski {
2478ee8d1cSJulian Grajkowski adf_exit_vf_wq();
2578ee8d1cSJulian Grajkowski adf_exit_aer();
2678ee8d1cSJulian Grajkowski adf_exit_fatal_error_wq();
27*266b0663SKrzysztof Zdziarski adf_unregister_ctl_device_driver();
2878ee8d1cSJulian Grajkowski }
2978ee8d1cSJulian Grajkowski
3078ee8d1cSJulian Grajkowski static int
qat_common_modevent(module_t mod,int type,void * data)3178ee8d1cSJulian Grajkowski qat_common_modevent(module_t mod, int type, void *data)
3278ee8d1cSJulian Grajkowski {
3378ee8d1cSJulian Grajkowski switch (type) {
3478ee8d1cSJulian Grajkowski case MOD_LOAD:
3578ee8d1cSJulian Grajkowski return qat_common_register();
3678ee8d1cSJulian Grajkowski case MOD_UNLOAD:
3778ee8d1cSJulian Grajkowski qat_common_unregister();
3878ee8d1cSJulian Grajkowski return 0;
3978ee8d1cSJulian Grajkowski default:
4078ee8d1cSJulian Grajkowski return EOPNOTSUPP;
4178ee8d1cSJulian Grajkowski }
4278ee8d1cSJulian Grajkowski }
4378ee8d1cSJulian Grajkowski
4478ee8d1cSJulian Grajkowski static moduledata_t qat_common_mod = { "qat_common", qat_common_modevent, 0 };
4578ee8d1cSJulian Grajkowski
4678ee8d1cSJulian Grajkowski DECLARE_MODULE(qat_common, qat_common_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
4778ee8d1cSJulian Grajkowski MODULE_VERSION(qat_common, 1);
48d623883dSMark Johnston MODULE_DEPEND(qat_common, firmware, 1, 1, 1);
4978ee8d1cSJulian Grajkowski MODULE_DEPEND(qat_common, linuxkpi, 1, 1, 1);
50