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