# SPDX-License-Identifier: GPL-2.0-only
config CRYPTO_DEV_QAT
	tristate
	select CRYPTO_AEAD
	select CRYPTO_AUTHENC
	select CRYPTO_SKCIPHER
	select CRYPTO_AKCIPHER
	select CRYPTO_DH
	select CRYPTO_HMAC
	select CRYPTO_RSA
	select CRYPTO_SHA1
	select CRYPTO_SHA256
	select CRYPTO_SHA512
	select CRYPTO_LIB_AES
	select FW_LOADER
	select CRC8

config CRYPTO_DEV_QAT_DH895xCC
	tristate "Support for Intel(R) DH895xCC"
	depends on PCI && (!CPU_BIG_ENDIAN || COMPILE_TEST)
	select CRYPTO_DEV_QAT
	help
	  Support for Intel(R) DH895xcc with Intel(R) QuickAssist Technology
	  for accelerating crypto and compression workloads.

	  To compile this as a module, choose M here: the module
	  will be called qat_dh895xcc.

config CRYPTO_DEV_QAT_C3XXX
	tristate "Support for Intel(R) C3XXX"
	depends on PCI && (!CPU_BIG_ENDIAN || COMPILE_TEST)
	select CRYPTO_DEV_QAT
	help
	  Support for Intel(R) C3xxx with Intel(R) QuickAssist Technology
	  for accelerating crypto and compression workloads.

	  To compile this as a module, choose M here: the module
	  will be called qat_c3xxx.

config CRYPTO_DEV_QAT_C62X
	tristate "Support for Intel(R) C62X"
	depends on PCI && (!CPU_BIG_ENDIAN || COMPILE_TEST)
	select CRYPTO_DEV_QAT
	help
	  Support for Intel(R) C62x with Intel(R) QuickAssist Technology
	  for accelerating crypto and compression workloads.

	  To compile this as a module, choose M here: the module
	  will be called qat_c62x.

config CRYPTO_DEV_QAT_4XXX
	tristate "Support for Intel(R) QAT_4XXX"
	depends on PCI && (!CPU_BIG_ENDIAN || COMPILE_TEST)
	select CRYPTO_DEV_QAT
	help
	  Support for Intel(R) QuickAssist Technology QAT_4xxx
	  for accelerating crypto and compression workloads.

	  To compile this as a module, choose M here: the module
	  will be called qat_4xxx.

config CRYPTO_DEV_QAT_420XX
	tristate "Support for Intel(R) QAT_420XX"
	depends on PCI && (!CPU_BIG_ENDIAN || COMPILE_TEST)
	select CRYPTO_DEV_QAT
	help
	  Support for Intel(R) QuickAssist Technology QAT_420xx
	  for accelerating crypto and compression workloads.

	  To compile this as a module, choose M here: the module
	  will be called qat_420xx.

config CRYPTO_DEV_QAT_DH895xCCVF
	tristate "Support for Intel(R) DH895xCC Virtual Function"
	depends on PCI && (!CPU_BIG_ENDIAN || COMPILE_TEST)
	select PCI_IOV
	select CRYPTO_DEV_QAT

	help
	  Support for Intel(R) DH895xcc with Intel(R) QuickAssist Technology
	  Virtual Function for accelerating crypto and compression workloads.

	  To compile this as a module, choose M here: the module
	  will be called qat_dh895xccvf.

config CRYPTO_DEV_QAT_C3XXXVF
	tristate "Support for Intel(R) C3XXX Virtual Function"
	depends on PCI && (!CPU_BIG_ENDIAN || COMPILE_TEST)
	select PCI_IOV
	select CRYPTO_DEV_QAT
	help
	  Support for Intel(R) C3xxx with Intel(R) QuickAssist Technology
	  Virtual Function for accelerating crypto and compression workloads.

	  To compile this as a module, choose M here: the module
	  will be called qat_c3xxxvf.

config CRYPTO_DEV_QAT_C62XVF
	tristate "Support for Intel(R) C62X Virtual Function"
	depends on PCI && (!CPU_BIG_ENDIAN || COMPILE_TEST)
	select PCI_IOV
	select CRYPTO_DEV_QAT
	help
	  Support for Intel(R) C62x with Intel(R) QuickAssist Technology
	  Virtual Function for accelerating crypto and compression workloads.

	  To compile this as a module, choose M here: the module
	  will be called qat_c62xvf.

config CRYPTO_DEV_QAT_ERROR_INJECTION
	bool "Support for Intel(R) QAT Devices Heartbeat Error Injection"
	depends on CRYPTO_DEV_QAT
	depends on DEBUG_FS
	help
	  Enables a mechanism that allows to inject a heartbeat error on
	  Intel(R) QuickAssist devices for testing purposes.

	  This is intended for developer use only.
	  If unsure, say N.

	  This functionality is available via debugfs entry of the Intel(R)
	  QuickAssist device
