xref: /linux/drivers/crypto/intel/qat/qat_common/adf_module.c (revision b2128290c29902315e632ea59e0504d6bc9e9b42)
1*9206f1b3SGiovanni Cabiddu // SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)
2*9206f1b3SGiovanni Cabiddu /* Copyright(c) 2014 - 2020 Intel Corporation */
3*9206f1b3SGiovanni Cabiddu 
4*9206f1b3SGiovanni Cabiddu #include <crypto/algapi.h>
5*9206f1b3SGiovanni Cabiddu #include <linux/errno.h>
6*9206f1b3SGiovanni Cabiddu #include <linux/module.h>
7*9206f1b3SGiovanni Cabiddu 
8*9206f1b3SGiovanni Cabiddu #include "adf_common_drv.h"
9*9206f1b3SGiovanni Cabiddu 
10*9206f1b3SGiovanni Cabiddu static int __init adf_register_module(void)
11*9206f1b3SGiovanni Cabiddu {
12*9206f1b3SGiovanni Cabiddu 	if (adf_init_misc_wq())
13*9206f1b3SGiovanni Cabiddu 		goto err_misc_wq;
14*9206f1b3SGiovanni Cabiddu 
15*9206f1b3SGiovanni Cabiddu 	if (adf_init_aer())
16*9206f1b3SGiovanni Cabiddu 		goto err_aer;
17*9206f1b3SGiovanni Cabiddu 
18*9206f1b3SGiovanni Cabiddu 	if (adf_init_pf_wq())
19*9206f1b3SGiovanni Cabiddu 		goto err_pf_wq;
20*9206f1b3SGiovanni Cabiddu 
21*9206f1b3SGiovanni Cabiddu 	if (adf_init_vf_wq())
22*9206f1b3SGiovanni Cabiddu 		goto err_vf_wq;
23*9206f1b3SGiovanni Cabiddu 
24*9206f1b3SGiovanni Cabiddu 	if (qat_crypto_register())
25*9206f1b3SGiovanni Cabiddu 		goto err_crypto_register;
26*9206f1b3SGiovanni Cabiddu 
27*9206f1b3SGiovanni Cabiddu 	if (qat_compression_register())
28*9206f1b3SGiovanni Cabiddu 		goto err_compression_register;
29*9206f1b3SGiovanni Cabiddu 
30*9206f1b3SGiovanni Cabiddu 	return 0;
31*9206f1b3SGiovanni Cabiddu 
32*9206f1b3SGiovanni Cabiddu err_compression_register:
33*9206f1b3SGiovanni Cabiddu 	qat_crypto_unregister();
34*9206f1b3SGiovanni Cabiddu err_crypto_register:
35*9206f1b3SGiovanni Cabiddu 	adf_exit_vf_wq();
36*9206f1b3SGiovanni Cabiddu err_vf_wq:
37*9206f1b3SGiovanni Cabiddu 	adf_exit_pf_wq();
38*9206f1b3SGiovanni Cabiddu err_pf_wq:
39*9206f1b3SGiovanni Cabiddu 	adf_exit_aer();
40*9206f1b3SGiovanni Cabiddu err_aer:
41*9206f1b3SGiovanni Cabiddu 	adf_exit_misc_wq();
42*9206f1b3SGiovanni Cabiddu err_misc_wq:
43*9206f1b3SGiovanni Cabiddu 	return -EFAULT;
44*9206f1b3SGiovanni Cabiddu }
45*9206f1b3SGiovanni Cabiddu 
46*9206f1b3SGiovanni Cabiddu static void __exit adf_unregister_module(void)
47*9206f1b3SGiovanni Cabiddu {
48*9206f1b3SGiovanni Cabiddu 	adf_exit_misc_wq();
49*9206f1b3SGiovanni Cabiddu 	adf_exit_aer();
50*9206f1b3SGiovanni Cabiddu 	adf_exit_vf_wq();
51*9206f1b3SGiovanni Cabiddu 	adf_exit_pf_wq();
52*9206f1b3SGiovanni Cabiddu 	qat_crypto_unregister();
53*9206f1b3SGiovanni Cabiddu 	qat_compression_unregister();
54*9206f1b3SGiovanni Cabiddu 	adf_clean_vf_map(false);
55*9206f1b3SGiovanni Cabiddu }
56*9206f1b3SGiovanni Cabiddu 
57*9206f1b3SGiovanni Cabiddu module_init(adf_register_module);
58*9206f1b3SGiovanni Cabiddu module_exit(adf_unregister_module);
59*9206f1b3SGiovanni Cabiddu MODULE_LICENSE("Dual BSD/GPL");
60*9206f1b3SGiovanni Cabiddu MODULE_AUTHOR("Intel");
61*9206f1b3SGiovanni Cabiddu MODULE_DESCRIPTION("Intel(R) QuickAssist Technology");
62*9206f1b3SGiovanni Cabiddu MODULE_ALIAS_CRYPTO("intel_qat");
63*9206f1b3SGiovanni Cabiddu MODULE_IMPORT_NS("CRYPTO_INTERNAL");
64