xref: /openbmc/linux/drivers/crypto/caam/Kconfig (revision b189817c)
1config CRYPTO_DEV_FSL_CAAM
2	tristate "Freescale CAAM-Multicore driver backend"
3	depends on FSL_SOC || ARCH_MXC || ARCH_LAYERSCAPE
4	help
5	  Enables the driver module for Freescale's Cryptographic Accelerator
6	  and Assurance Module (CAAM), also known as the SEC version 4 (SEC4).
7	  This module creates job ring devices, and configures h/w
8	  to operate as a DPAA component automatically, depending
9	  on h/w feature availability.
10
11	  To compile this driver as a module, choose M here: the module
12	  will be called caam.
13
14config CRYPTO_DEV_FSL_CAAM_JR
15	tristate "Freescale CAAM Job Ring driver backend"
16	depends on CRYPTO_DEV_FSL_CAAM
17	default y
18	help
19	  Enables the driver module for Job Rings which are part of
20	  Freescale's Cryptographic Accelerator
21	  and Assurance Module (CAAM). This module adds a job ring operation
22	  interface.
23
24	  To compile this driver as a module, choose M here: the module
25	  will be called caam_jr.
26
27config CRYPTO_DEV_FSL_CAAM_RINGSIZE
28	int "Job Ring size"
29	depends on CRYPTO_DEV_FSL_CAAM_JR
30	range 2 9
31	default "9"
32	help
33	  Select size of Job Rings as a power of 2, within the
34	  range 2-9 (ring size 4-512).
35	  Examples:
36		2 => 4
37		3 => 8
38		4 => 16
39		5 => 32
40		6 => 64
41		7 => 128
42		8 => 256
43		9 => 512
44
45config CRYPTO_DEV_FSL_CAAM_INTC
46	bool "Job Ring interrupt coalescing"
47	depends on CRYPTO_DEV_FSL_CAAM_JR
48	help
49	  Enable the Job Ring's interrupt coalescing feature.
50
51	  Note: the driver already provides adequate
52	  interrupt coalescing in software.
53
54config CRYPTO_DEV_FSL_CAAM_INTC_COUNT_THLD
55	int "Job Ring interrupt coalescing count threshold"
56	depends on CRYPTO_DEV_FSL_CAAM_INTC
57	range 1 255
58	default 255
59	help
60	  Select number of descriptor completions to queue before
61	  raising an interrupt, in the range 1-255. Note that a selection
62	  of 1 functionally defeats the coalescing feature, and a selection
63	  equal or greater than the job ring size will force timeouts.
64
65config CRYPTO_DEV_FSL_CAAM_INTC_TIME_THLD
66	int "Job Ring interrupt coalescing timer threshold"
67	depends on CRYPTO_DEV_FSL_CAAM_INTC
68	range 1 65535
69	default 2048
70	help
71	  Select number of bus clocks/64 to timeout in the case that one or
72	  more descriptor completions are queued without reaching the count
73	  threshold. Range is 1-65535.
74
75config CRYPTO_DEV_FSL_CAAM_CRYPTO_API
76	tristate "Register algorithm implementations with the Crypto API"
77	depends on CRYPTO_DEV_FSL_CAAM_JR
78	default y
79	select CRYPTO_AEAD
80	select CRYPTO_AUTHENC
81	select CRYPTO_BLKCIPHER
82	help
83	  Selecting this will offload crypto for users of the
84	  scatterlist crypto API (such as the linux native IPSec
85	  stack) to the SEC4 via job ring.
86
87	  To compile this as a module, choose M here: the module
88	  will be called caamalg.
89
90config CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI
91	tristate "Queue Interface as Crypto API backend"
92	depends on CRYPTO_DEV_FSL_CAAM_JR && FSL_DPAA && NET
93	default y
94	select CRYPTO_AUTHENC
95	select CRYPTO_BLKCIPHER
96	help
97	  Selecting this will use CAAM Queue Interface (QI) for sending
98	  & receiving crypto jobs to/from CAAM. This gives better performance
99	  than job ring interface when the number of cores are more than the
100	  number of job rings assigned to the kernel. The number of portals
101	  assigned to the kernel should also be more than the number of
102	  job rings.
103
104	  To compile this as a module, choose M here: the module
105	  will be called caamalg_qi.
106
107config CRYPTO_DEV_FSL_CAAM_AHASH_API
108	tristate "Register hash algorithm implementations with Crypto API"
109	depends on CRYPTO_DEV_FSL_CAAM_JR
110	default y
111	select CRYPTO_HASH
112	help
113	  Selecting this will offload ahash for users of the
114	  scatterlist crypto API to the SEC4 via job ring.
115
116	  To compile this as a module, choose M here: the module
117	  will be called caamhash.
118
119config CRYPTO_DEV_FSL_CAAM_PKC_API
120        tristate "Register public key cryptography implementations with Crypto API"
121        depends on CRYPTO_DEV_FSL_CAAM_JR
122        default y
123        select CRYPTO_RSA
124        help
125          Selecting this will allow SEC Public key support for RSA.
126          Supported cryptographic primitives: encryption, decryption,
127          signature and verification.
128          To compile this as a module, choose M here: the module
129          will be called caam_pkc.
130
131config CRYPTO_DEV_FSL_CAAM_RNG_API
132	tristate "Register caam device for hwrng API"
133	depends on CRYPTO_DEV_FSL_CAAM_JR
134	default y
135	select CRYPTO_RNG
136	select HW_RANDOM
137	help
138	  Selecting this will register the SEC4 hardware rng to
139	  the hw_random API for suppying the kernel entropy pool.
140
141	  To compile this as a module, choose M here: the module
142	  will be called caamrng.
143
144config CRYPTO_DEV_FSL_CAAM_IMX
145	def_bool SOC_IMX6 || SOC_IMX7D
146	depends on CRYPTO_DEV_FSL_CAAM
147
148config CRYPTO_DEV_FSL_CAAM_DEBUG
149	bool "Enable debug output in CAAM driver"
150	depends on CRYPTO_DEV_FSL_CAAM
151	help
152	  Selecting this will enable printing of various debug
153	  information in the CAAM driver.
154
155config CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC
156	def_tristate (CRYPTO_DEV_FSL_CAAM_CRYPTO_API || \
157		      CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI)
158