config CRYPTO_DEV_KEEMBAY_OCS_AES_SM4
	tristate "Support for Intel Keem Bay OCS AES/SM4 HW acceleration"
	depends on HAS_IOMEM
	depends on ARCH_KEEMBAY || COMPILE_TEST
	select CRYPTO_SKCIPHER
	select CRYPTO_AEAD
	select CRYPTO_ENGINE
	help
	  Support for Intel Keem Bay Offload and Crypto Subsystem (OCS) AES and
	  SM4 cipher hardware acceleration for use with Crypto API.

	  Provides HW acceleration for the following transformations:
	  cbc(aes), ctr(aes), ccm(aes), gcm(aes), cbc(sm4), ctr(sm4), ccm(sm4)
	  and gcm(sm4).

	  Optionally, support for the following transformations can also be
	  enabled: ecb(aes), cts(cbc(aes)), ecb(sm4) and cts(cbc(sm4)).

config CRYPTO_DEV_KEEMBAY_OCS_AES_SM4_ECB
	bool "Support for Intel Keem Bay OCS AES/SM4 ECB HW acceleration"
	depends on CRYPTO_DEV_KEEMBAY_OCS_AES_SM4
	help
	  Support for Intel Keem Bay Offload and Crypto Subsystem (OCS)
	  AES/SM4 ECB mode hardware acceleration for use with Crypto API.

	  Provides OCS version of ecb(aes) and ecb(sm4)

	  Intel does not recommend use of ECB mode with AES/SM4.

config CRYPTO_DEV_KEEMBAY_OCS_AES_SM4_CTS
	bool "Support for Intel Keem Bay OCS AES/SM4 CTS HW acceleration"
	depends on CRYPTO_DEV_KEEMBAY_OCS_AES_SM4
	help
	  Support for Intel Keem Bay Offload and Crypto Subsystem (OCS)
	  AES/SM4 CBC with CTS mode hardware acceleration for use with
	  Crypto API.

	  Provides OCS version of cts(cbc(aes)) and cts(cbc(sm4)).

	  Intel does not recommend use of CTS mode with AES/SM4.

config CRYPTO_DEV_KEEMBAY_OCS_ECC
	tristate "Support for Intel Keem Bay OCS ECC HW acceleration"
	depends on ARCH_KEEMBAY || COMPILE_TEST
	depends on OF
	depends on HAS_IOMEM
	select CRYPTO_ECDH
	select CRYPTO_ENGINE
	help
	  Support for Intel Keem Bay Offload and Crypto Subsystem (OCS)
	  Elliptic Curve Cryptography (ECC) hardware acceleration for use with
	  Crypto API.

	  Provides OCS acceleration for ECDH-256 and ECDH-384.

	  Say Y or M if you are compiling for the Intel Keem Bay SoC. The
	  module will be called keembay-ocs-ecc.

	  If unsure, say N.

config CRYPTO_DEV_KEEMBAY_OCS_HCU
	tristate "Support for Intel Keem Bay OCS HCU HW acceleration"
	select CRYPTO_HASH
	select CRYPTO_ENGINE
	depends on HAS_IOMEM
	depends on ARCH_KEEMBAY || COMPILE_TEST
	depends on OF
	help
	  Support for Intel Keem Bay Offload and Crypto Subsystem (OCS) Hash
	  Control Unit (HCU) hardware acceleration for use with Crypto API.

	  Provides OCS HCU hardware acceleration of sha256, sha384, sha512, and
	  sm3, as well as the HMAC variant of these algorithms.

	  Say Y or M if you're building for the Intel Keem Bay SoC. If compiled
	  as a module, the module will be called keembay-ocs-hcu.

	  If unsure, say N.

config CRYPTO_DEV_KEEMBAY_OCS_HCU_HMAC_SHA224
	bool "Enable sha224 and hmac(sha224) support in Intel Keem Bay OCS HCU"
	depends on CRYPTO_DEV_KEEMBAY_OCS_HCU
	help
	  Enables support for sha224 and hmac(sha224) algorithms in the Intel
	  Keem Bay OCS HCU driver. Intel recommends not to use these
	  algorithms.

	  Provides OCS HCU hardware acceleration of sha224 and hmac(224).

	  If unsure, say N.
