xref: /freebsd/sys/dev/qat/qat_common/qat_common_module.c (revision 71625ec9ad2a9bc8c09784fbd23b759830e0ee5f)
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