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_JR
	default y
	select CRYPTO_AEAD
	select CRYPTO_AUTHENC
	select CRYPTO_BLKCIPHER
	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_CRYPTO_API_QI
	tristate "Queue Interface as Crypto API backend"
	depends on CRYPTO_DEV_FSL_CAAM_JR && FSL_DPAA && NET
	default y
	select CRYPTO_AUTHENC
	select CRYPTO_BLKCIPHER
	help
	  Selecting this will use CAAM Queue Interface (QI) for sending
	  & receiving crypto jobs to/from CAAM. This gives better performance
	  than job ring interface when the number of cores are more than the
	  number of job rings assigned to the kernel. The number of portals
	  assigned to the kernel should also be more than the number of
	  job rings.

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

config CRYPTO_DEV_FSL_CAAM_AHASH_API
	tristate "Register hash algorithm implementations with Crypto API"
	depends on 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_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_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
	depends on CRYPTO_DEV_FSL_CAAM

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.

config CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC
	def_tristate (CRYPTO_DEV_FSL_CAAM_CRYPTO_API || \
		      CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI)
