config CRYPTO_DEV_FSL_CAAM
	tristate "Freescale CAAM-Multicore driver backend"
	depends on FSL_SOC || ARCH_MXC || ARCH_LAYERSCAPE
	select SOC_BUS
	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_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)
