config CRYPTO_DEV_FSL_CAAM
	tristate "Freescale CAAM-Multicore driver backend"
	depends on FSL_SOC || ARCH_MXC || ARCH_LAYERSCAPE
	help
	  Enables the driver module for Freescale's Cryptographic Accelerator
	  and Assurance Module (CAAM), also known as the SEC version 4 (SEC4).
	  This module creates job ring devices, and configures h/w
	  to operate as a DPAA component automatically, depending
	  on h/w feature availability.

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

config CRYPTO_DEV_FSL_CAAM_JR
	tristate "Freescale CAAM Job Ring driver backend"
	depends on CRYPTO_DEV_FSL_CAAM
	default y
	help
	  Enables the driver module for Job Rings which are part of
	  Freescale's Cryptographic Accelerator
	  and Assurance Module (CAAM). This module adds a job ring operation
	  interface.

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

config CRYPTO_DEV_FSL_CAAM_RINGSIZE
	int "Job Ring size"
	depends on CRYPTO_DEV_FSL_CAAM_JR
	range 2 9
	default "9"
	help
	  Select size of Job Rings as a power of 2, within the
	  range 2-9 (ring size 4-512).
	  Examples:
		2 => 4
		3 => 8
		4 => 16
		5 => 32
		6 => 64
		7 => 128
		8 => 256
		9 => 512

config CRYPTO_DEV_FSL_CAAM_INTC
	bool "Job Ring interrupt coalescing"
	depends on CRYPTO_DEV_FSL_CAAM_JR
	help
	  Enable the Job Ring's interrupt coalescing feature.

	  Note: the driver already provides adequate
	  interrupt coalescing in software.

config CRYPTO_DEV_FSL_CAAM_INTC_COUNT_THLD
	int "Job Ring interrupt coalescing count threshold"
	depends on CRYPTO_DEV_FSL_CAAM_INTC
	range 1 255
	default 255
	help
	  Select number of descriptor completions to queue before
	  raising an interrupt, in the range 1-255. Note that a selection
	  of 1 functionally defeats the coalescing feature, and a selection
	  equal or greater than the job ring size will force timeouts.

config CRYPTO_DEV_FSL_CAAM_INTC_TIME_THLD
	int "Job Ring interrupt coalescing timer threshold"
	depends on CRYPTO_DEV_FSL_CAAM_INTC
	range 1 65535
	default 2048
	help
	  Select number of bus clocks/64 to timeout in the case that one or
	  more descriptor completions are queued without reaching the count
	  threshold. Range is 1-65535.

config CRYPTO_DEV_FSL_CAAM_CRYPTO_API
	tristate "Register algorithm implementations with the Crypto API"
	depends on CRYPTO_DEV_FSL_CAAM && CRYPTO_DEV_FSL_CAAM_JR
	default y
	select CRYPTO_AEAD
	select CRYPTO_AUTHENC
	select CRYPTO_BLKCIPHER
	select CRYPTO_DES
	help
	  Selecting this will offload crypto for users of the
	  scatterlist crypto API (such as the linux native IPSec
	  stack) to the SEC4 via job ring.

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

config CRYPTO_DEV_FSL_CAAM_AHASH_API
	tristate "Register hash algorithm implementations with Crypto API"
	depends on CRYPTO_DEV_FSL_CAAM && CRYPTO_DEV_FSL_CAAM_JR
	default y
	select CRYPTO_HASH
	help
	  Selecting this will offload ahash for users of the
	  scatterlist crypto API to the SEC4 via job ring.

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

config CRYPTO_DEV_FSL_CAAM_PKC_API
        tristate "Register public key cryptography implementations with Crypto API"
        depends on CRYPTO_DEV_FSL_CAAM && CRYPTO_DEV_FSL_CAAM_JR
        default y
        select CRYPTO_RSA
        help
          Selecting this will allow SEC Public key support for RSA.
          Supported cryptographic primitives: encryption, decryption,
          signature and verification.
          To compile this as a module, choose M here: the module
          will be called caam_pkc.

config CRYPTO_DEV_FSL_CAAM_RNG_API
	tristate "Register caam device for hwrng API"
	depends on CRYPTO_DEV_FSL_CAAM && CRYPTO_DEV_FSL_CAAM_JR
	default y
	select CRYPTO_RNG
	select HW_RANDOM
	help
	  Selecting this will register the SEC4 hardware rng to
	  the hw_random API for suppying the kernel entropy pool.

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

config CRYPTO_DEV_FSL_CAAM_IMX
	def_bool SOC_IMX6 || SOC_IMX7D || HAVE_IMX8_SOC
	depends on CRYPTO_DEV_FSL_CAAM


config CRYPTO_DEV_FSL_CAAM_RNG_TEST
	boolean "Test caam rng"
	depends on CRYPTO_DEV_FSL_CAAM_RNG_API
	default n
	help
	  Selecting this will enable a self-test to run for the
	  caam RNG. This test is several minutes long and executes
	  just before the RNG is registered with the hw_random API.

config CRYPTO_DEV_FSL_CAAM_SM
	tristate "CAAM Secure Memory / Keystore API (EXPERIMENTAL)"
	default n
	help
	  Enables use of a prototype kernel-level Keystore API with CAAM
	  Secure Memory for insertion/extraction of bus-protected secrets.

config CRYPTO_DEV_FSL_CAAM_SM_SLOTSIZE
	int "Size of each keystore slot in Secure Memory"
	depends on CRYPTO_DEV_FSL_CAAM_SM
	range 5 9
	default 7
	help
	  Select size of allocation units to divide Secure Memory pages into
	  (the size of a "slot" as referenced inside the API code).
	  Established as powers of two.
	  Examples:
		5 => 32 bytes
		6 => 64 bytes
		7 => 128 bytes
		8 => 256 bytes
		9 => 512 bytes

config CRYPTO_DEV_FSL_CAAM_SM_TEST
	tristate "CAAM Secure Memory - Keystore Test/Example (EXPERIMENTAL)"
	depends on CRYPTO_DEV_FSL_CAAM_SM
	default n
	help
	  Example thread to exercise the Keystore API and to verify that
	  stored and recovered secrets can be used for general purpose
	  encryption/decryption.

config CRYPTO_DEV_FSL_CAAM_SECVIO
	tristate "CAAM/SNVS Security Violation Handler (EXPERIMENTAL)"
	depends on CRYPTO_DEV_FSL_CAAM
	default n
	help
	  Enables installation of an interrupt handler with registrable
          handler functions which can be specified to act on the consequences
          of a security violation.

config CRYPTO_DEV_FSL_CAAM_DEBUG
	bool "Enable debug output in CAAM driver"
	depends on CRYPTO_DEV_FSL_CAAM
	help
	  Selecting this will enable printing of various debug
	  information in the CAAM driver.
