# 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_RSA
	select CRYPTO_LIB_AES
	select CRYPTO_LIB_SHA1
	select CRYPTO_LIB_SHA256
	select CRYPTO_LIB_SHA512
	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_6XXX
	tristate "Support for Intel(R) QuickAssist Technology QAT_6XXX"
	depends on (X86 || COMPILE_TEST)
	depends on PCI
	select CRYPTO_DEV_QAT
	help
	  Support for Intel(R) QuickAssist Technology QAT_6xxx
	  for accelerating crypto and compression workloads.

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

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
