xref: /OK3568_Linux_fs/kernel/drivers/crypto/Kconfig (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun
3*4882a593Smuzhiyunmenuconfig CRYPTO_HW
4*4882a593Smuzhiyun	bool "Hardware crypto devices"
5*4882a593Smuzhiyun	default y
6*4882a593Smuzhiyun	help
7*4882a593Smuzhiyun	  Say Y here to get to see options for hardware crypto devices and
8*4882a593Smuzhiyun	  processors. This option alone does not add any kernel code.
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun	  If you say N, all options in this submenu will be skipped and disabled.
11*4882a593Smuzhiyun
12*4882a593Smuzhiyunif CRYPTO_HW
13*4882a593Smuzhiyun
14*4882a593Smuzhiyunsource "drivers/crypto/allwinner/Kconfig"
15*4882a593Smuzhiyun
16*4882a593Smuzhiyunconfig CRYPTO_DEV_PADLOCK
17*4882a593Smuzhiyun	tristate "Support for VIA PadLock ACE"
18*4882a593Smuzhiyun	depends on X86 && !UML
19*4882a593Smuzhiyun	help
20*4882a593Smuzhiyun	  Some VIA processors come with an integrated crypto engine
21*4882a593Smuzhiyun	  (so called VIA PadLock ACE, Advanced Cryptography Engine)
22*4882a593Smuzhiyun	  that provides instructions for very fast cryptographic
23*4882a593Smuzhiyun	  operations with supported algorithms.
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun	  The instructions are used only when the CPU supports them.
26*4882a593Smuzhiyun	  Otherwise software encryption is used.
27*4882a593Smuzhiyun
28*4882a593Smuzhiyunconfig CRYPTO_DEV_PADLOCK_AES
29*4882a593Smuzhiyun	tristate "PadLock driver for AES algorithm"
30*4882a593Smuzhiyun	depends on CRYPTO_DEV_PADLOCK
31*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
32*4882a593Smuzhiyun	select CRYPTO_LIB_AES
33*4882a593Smuzhiyun	help
34*4882a593Smuzhiyun	  Use VIA PadLock for AES algorithm.
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun	  Available in VIA C3 and newer CPUs.
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun	  If unsure say M. The compiled module will be
39*4882a593Smuzhiyun	  called padlock-aes.
40*4882a593Smuzhiyun
41*4882a593Smuzhiyunconfig CRYPTO_DEV_PADLOCK_SHA
42*4882a593Smuzhiyun	tristate "PadLock driver for SHA1 and SHA256 algorithms"
43*4882a593Smuzhiyun	depends on CRYPTO_DEV_PADLOCK
44*4882a593Smuzhiyun	select CRYPTO_HASH
45*4882a593Smuzhiyun	select CRYPTO_SHA1
46*4882a593Smuzhiyun	select CRYPTO_SHA256
47*4882a593Smuzhiyun	help
48*4882a593Smuzhiyun	  Use VIA PadLock for SHA1/SHA256 algorithms.
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun	  Available in VIA C7 and newer processors.
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun	  If unsure say M. The compiled module will be
53*4882a593Smuzhiyun	  called padlock-sha.
54*4882a593Smuzhiyun
55*4882a593Smuzhiyunconfig CRYPTO_DEV_GEODE
56*4882a593Smuzhiyun	tristate "Support for the Geode LX AES engine"
57*4882a593Smuzhiyun	depends on X86_32 && PCI
58*4882a593Smuzhiyun	select CRYPTO_ALGAPI
59*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
60*4882a593Smuzhiyun	help
61*4882a593Smuzhiyun	  Say 'Y' here to use the AMD Geode LX processor on-board AES
62*4882a593Smuzhiyun	  engine for the CryptoAPI AES algorithm.
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun	  To compile this driver as a module, choose M here: the module
65*4882a593Smuzhiyun	  will be called geode-aes.
66*4882a593Smuzhiyun
67*4882a593Smuzhiyunconfig ZCRYPT
68*4882a593Smuzhiyun	tristate "Support for s390 cryptographic adapters"
69*4882a593Smuzhiyun	depends on S390
70*4882a593Smuzhiyun	select HW_RANDOM
71*4882a593Smuzhiyun	help
72*4882a593Smuzhiyun	  Select this option if you want to enable support for
73*4882a593Smuzhiyun	  s390 cryptographic adapters like:
74*4882a593Smuzhiyun	  + Crypto Express 2 up to 7 Coprocessor (CEXxC)
75*4882a593Smuzhiyun	  + Crypto Express 2 up to 7 Accelerator (CEXxA)
76*4882a593Smuzhiyun	  + Crypto Express 4 up to 7 EP11 Coprocessor (CEXxP)
77*4882a593Smuzhiyun
78*4882a593Smuzhiyunconfig ZCRYPT_DEBUG
79*4882a593Smuzhiyun	bool "Enable debug features for s390 cryptographic adapters"
80*4882a593Smuzhiyun	default n
81*4882a593Smuzhiyun	depends on DEBUG_KERNEL
82*4882a593Smuzhiyun	depends on ZCRYPT
83*4882a593Smuzhiyun	help
84*4882a593Smuzhiyun	  Say 'Y' here to enable some additional debug features on the
85*4882a593Smuzhiyun	  s390 cryptographic adapters driver.
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun	  There will be some more sysfs attributes displayed for ap cards
88*4882a593Smuzhiyun	  and queues and some flags on crypto requests are interpreted as
89*4882a593Smuzhiyun	  debugging messages to force error injection.
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun	  Do not enable on production level kernel build.
92*4882a593Smuzhiyun
93*4882a593Smuzhiyun	  If unsure, say N.
94*4882a593Smuzhiyun
95*4882a593Smuzhiyunconfig ZCRYPT_MULTIDEVNODES
96*4882a593Smuzhiyun	bool "Support for multiple zcrypt device nodes"
97*4882a593Smuzhiyun	default y
98*4882a593Smuzhiyun	depends on S390
99*4882a593Smuzhiyun	depends on ZCRYPT
100*4882a593Smuzhiyun	help
101*4882a593Smuzhiyun	  With this option enabled the zcrypt device driver can
102*4882a593Smuzhiyun	  provide multiple devices nodes in /dev. Each device
103*4882a593Smuzhiyun	  node can get customized to limit access and narrow
104*4882a593Smuzhiyun	  down the use of the available crypto hardware.
105*4882a593Smuzhiyun
106*4882a593Smuzhiyunconfig PKEY
107*4882a593Smuzhiyun	tristate "Kernel API for protected key handling"
108*4882a593Smuzhiyun	depends on S390
109*4882a593Smuzhiyun	depends on ZCRYPT
110*4882a593Smuzhiyun	help
111*4882a593Smuzhiyun	  With this option enabled the pkey kernel module provides an API
112*4882a593Smuzhiyun	  for creation and handling of protected keys. Other parts of the
113*4882a593Smuzhiyun	  kernel or userspace applications may use these functions.
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun	  Select this option if you want to enable the kernel and userspace
116*4882a593Smuzhiyun	  API for proteced key handling.
117*4882a593Smuzhiyun
118*4882a593Smuzhiyun	  Please note that creation of protected keys from secure keys
119*4882a593Smuzhiyun	  requires to have at least one CEX card in coprocessor mode
120*4882a593Smuzhiyun	  available at runtime.
121*4882a593Smuzhiyun
122*4882a593Smuzhiyunconfig CRYPTO_PAES_S390
123*4882a593Smuzhiyun	tristate "PAES cipher algorithms"
124*4882a593Smuzhiyun	depends on S390
125*4882a593Smuzhiyun	depends on ZCRYPT
126*4882a593Smuzhiyun	depends on PKEY
127*4882a593Smuzhiyun	select CRYPTO_ALGAPI
128*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
129*4882a593Smuzhiyun	help
130*4882a593Smuzhiyun	  This is the s390 hardware accelerated implementation of the
131*4882a593Smuzhiyun	  AES cipher algorithms for use with protected key.
132*4882a593Smuzhiyun
133*4882a593Smuzhiyun	  Select this option if you want to use the paes cipher
134*4882a593Smuzhiyun	  for example to use protected key encrypted devices.
135*4882a593Smuzhiyun
136*4882a593Smuzhiyunconfig CRYPTO_SHA1_S390
137*4882a593Smuzhiyun	tristate "SHA1 digest algorithm"
138*4882a593Smuzhiyun	depends on S390
139*4882a593Smuzhiyun	select CRYPTO_HASH
140*4882a593Smuzhiyun	help
141*4882a593Smuzhiyun	  This is the s390 hardware accelerated implementation of the
142*4882a593Smuzhiyun	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun	  It is available as of z990.
145*4882a593Smuzhiyun
146*4882a593Smuzhiyunconfig CRYPTO_SHA256_S390
147*4882a593Smuzhiyun	tristate "SHA256 digest algorithm"
148*4882a593Smuzhiyun	depends on S390
149*4882a593Smuzhiyun	select CRYPTO_HASH
150*4882a593Smuzhiyun	help
151*4882a593Smuzhiyun	  This is the s390 hardware accelerated implementation of the
152*4882a593Smuzhiyun	  SHA256 secure hash standard (DFIPS 180-2).
153*4882a593Smuzhiyun
154*4882a593Smuzhiyun	  It is available as of z9.
155*4882a593Smuzhiyun
156*4882a593Smuzhiyunconfig CRYPTO_SHA512_S390
157*4882a593Smuzhiyun	tristate "SHA384 and SHA512 digest algorithm"
158*4882a593Smuzhiyun	depends on S390
159*4882a593Smuzhiyun	select CRYPTO_HASH
160*4882a593Smuzhiyun	help
161*4882a593Smuzhiyun	  This is the s390 hardware accelerated implementation of the
162*4882a593Smuzhiyun	  SHA512 secure hash standard.
163*4882a593Smuzhiyun
164*4882a593Smuzhiyun	  It is available as of z10.
165*4882a593Smuzhiyun
166*4882a593Smuzhiyunconfig CRYPTO_SHA3_256_S390
167*4882a593Smuzhiyun	tristate "SHA3_224 and SHA3_256 digest algorithm"
168*4882a593Smuzhiyun	depends on S390
169*4882a593Smuzhiyun	select CRYPTO_HASH
170*4882a593Smuzhiyun	help
171*4882a593Smuzhiyun	  This is the s390 hardware accelerated implementation of the
172*4882a593Smuzhiyun	  SHA3_256 secure hash standard.
173*4882a593Smuzhiyun
174*4882a593Smuzhiyun	  It is available as of z14.
175*4882a593Smuzhiyun
176*4882a593Smuzhiyunconfig CRYPTO_SHA3_512_S390
177*4882a593Smuzhiyun	tristate "SHA3_384 and SHA3_512 digest algorithm"
178*4882a593Smuzhiyun	depends on S390
179*4882a593Smuzhiyun	select CRYPTO_HASH
180*4882a593Smuzhiyun	help
181*4882a593Smuzhiyun	  This is the s390 hardware accelerated implementation of the
182*4882a593Smuzhiyun	  SHA3_512 secure hash standard.
183*4882a593Smuzhiyun
184*4882a593Smuzhiyun	  It is available as of z14.
185*4882a593Smuzhiyun
186*4882a593Smuzhiyunconfig CRYPTO_DES_S390
187*4882a593Smuzhiyun	tristate "DES and Triple DES cipher algorithms"
188*4882a593Smuzhiyun	depends on S390
189*4882a593Smuzhiyun	select CRYPTO_ALGAPI
190*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
191*4882a593Smuzhiyun	select CRYPTO_LIB_DES
192*4882a593Smuzhiyun	help
193*4882a593Smuzhiyun	  This is the s390 hardware accelerated implementation of the
194*4882a593Smuzhiyun	  DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
195*4882a593Smuzhiyun
196*4882a593Smuzhiyun	  As of z990 the ECB and CBC mode are hardware accelerated.
197*4882a593Smuzhiyun	  As of z196 the CTR mode is hardware accelerated.
198*4882a593Smuzhiyun
199*4882a593Smuzhiyunconfig CRYPTO_AES_S390
200*4882a593Smuzhiyun	tristate "AES cipher algorithms"
201*4882a593Smuzhiyun	depends on S390
202*4882a593Smuzhiyun	select CRYPTO_ALGAPI
203*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
204*4882a593Smuzhiyun	help
205*4882a593Smuzhiyun	  This is the s390 hardware accelerated implementation of the
206*4882a593Smuzhiyun	  AES cipher algorithms (FIPS-197).
207*4882a593Smuzhiyun
208*4882a593Smuzhiyun	  As of z9 the ECB and CBC modes are hardware accelerated
209*4882a593Smuzhiyun	  for 128 bit keys.
210*4882a593Smuzhiyun	  As of z10 the ECB and CBC modes are hardware accelerated
211*4882a593Smuzhiyun	  for all AES key sizes.
212*4882a593Smuzhiyun	  As of z196 the CTR mode is hardware accelerated for all AES
213*4882a593Smuzhiyun	  key sizes and XTS mode is hardware accelerated for 256 and
214*4882a593Smuzhiyun	  512 bit keys.
215*4882a593Smuzhiyun
216*4882a593Smuzhiyunconfig S390_PRNG
217*4882a593Smuzhiyun	tristate "Pseudo random number generator device driver"
218*4882a593Smuzhiyun	depends on S390
219*4882a593Smuzhiyun	default "m"
220*4882a593Smuzhiyun	help
221*4882a593Smuzhiyun	  Select this option if you want to use the s390 pseudo random number
222*4882a593Smuzhiyun	  generator. The PRNG is part of the cryptographic processor functions
223*4882a593Smuzhiyun	  and uses triple-DES to generate secure random numbers like the
224*4882a593Smuzhiyun	  ANSI X9.17 standard. User-space programs access the
225*4882a593Smuzhiyun	  pseudo-random-number device through the char device /dev/prandom.
226*4882a593Smuzhiyun
227*4882a593Smuzhiyun	  It is available as of z9.
228*4882a593Smuzhiyun
229*4882a593Smuzhiyunconfig CRYPTO_GHASH_S390
230*4882a593Smuzhiyun	tristate "GHASH hash function"
231*4882a593Smuzhiyun	depends on S390
232*4882a593Smuzhiyun	select CRYPTO_HASH
233*4882a593Smuzhiyun	help
234*4882a593Smuzhiyun	  This is the s390 hardware accelerated implementation of GHASH,
235*4882a593Smuzhiyun	  the hash function used in GCM (Galois/Counter mode).
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun	  It is available as of z196.
238*4882a593Smuzhiyun
239*4882a593Smuzhiyunconfig CRYPTO_CRC32_S390
240*4882a593Smuzhiyun	tristate "CRC-32 algorithms"
241*4882a593Smuzhiyun	depends on S390
242*4882a593Smuzhiyun	select CRYPTO_HASH
243*4882a593Smuzhiyun	select CRC32
244*4882a593Smuzhiyun	help
245*4882a593Smuzhiyun	  Select this option if you want to use hardware accelerated
246*4882a593Smuzhiyun	  implementations of CRC algorithms.  With this option, you
247*4882a593Smuzhiyun	  can optimize the computation of CRC-32 (IEEE 802.3 Ethernet)
248*4882a593Smuzhiyun	  and CRC-32C (Castagnoli).
249*4882a593Smuzhiyun
250*4882a593Smuzhiyun	  It is available with IBM z13 or later.
251*4882a593Smuzhiyun
252*4882a593Smuzhiyunconfig CRYPTO_DEV_NIAGARA2
253*4882a593Smuzhiyun	tristate "Niagara2 Stream Processing Unit driver"
254*4882a593Smuzhiyun	select CRYPTO_LIB_DES
255*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
256*4882a593Smuzhiyun	select CRYPTO_HASH
257*4882a593Smuzhiyun	select CRYPTO_MD5
258*4882a593Smuzhiyun	select CRYPTO_SHA1
259*4882a593Smuzhiyun	select CRYPTO_SHA256
260*4882a593Smuzhiyun	depends on SPARC64
261*4882a593Smuzhiyun	help
262*4882a593Smuzhiyun	  Each core of a Niagara2 processor contains a Stream
263*4882a593Smuzhiyun	  Processing Unit, which itself contains several cryptographic
264*4882a593Smuzhiyun	  sub-units.  One set provides the Modular Arithmetic Unit,
265*4882a593Smuzhiyun	  used for SSL offload.  The other set provides the Cipher
266*4882a593Smuzhiyun	  Group, which can perform encryption, decryption, hashing,
267*4882a593Smuzhiyun	  checksumming, and raw copies.
268*4882a593Smuzhiyun
269*4882a593Smuzhiyunconfig CRYPTO_DEV_HIFN_795X
270*4882a593Smuzhiyun	tristate "Driver HIFN 795x crypto accelerator chips"
271*4882a593Smuzhiyun	select CRYPTO_LIB_DES
272*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
273*4882a593Smuzhiyun	select HW_RANDOM if CRYPTO_DEV_HIFN_795X_RNG
274*4882a593Smuzhiyun	depends on PCI
275*4882a593Smuzhiyun	depends on !ARCH_DMA_ADDR_T_64BIT
276*4882a593Smuzhiyun	help
277*4882a593Smuzhiyun	  This option allows you to have support for HIFN 795x crypto adapters.
278*4882a593Smuzhiyun
279*4882a593Smuzhiyunconfig CRYPTO_DEV_HIFN_795X_RNG
280*4882a593Smuzhiyun	bool "HIFN 795x random number generator"
281*4882a593Smuzhiyun	depends on CRYPTO_DEV_HIFN_795X
282*4882a593Smuzhiyun	help
283*4882a593Smuzhiyun	  Select this option if you want to enable the random number generator
284*4882a593Smuzhiyun	  on the HIFN 795x crypto adapters.
285*4882a593Smuzhiyun
286*4882a593Smuzhiyunsource "drivers/crypto/caam/Kconfig"
287*4882a593Smuzhiyun
288*4882a593Smuzhiyunconfig CRYPTO_DEV_TALITOS
289*4882a593Smuzhiyun	tristate "Talitos Freescale Security Engine (SEC)"
290*4882a593Smuzhiyun	select CRYPTO_AEAD
291*4882a593Smuzhiyun	select CRYPTO_AUTHENC
292*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
293*4882a593Smuzhiyun	select CRYPTO_HASH
294*4882a593Smuzhiyun	select CRYPTO_LIB_DES
295*4882a593Smuzhiyun	select HW_RANDOM
296*4882a593Smuzhiyun	depends on FSL_SOC
297*4882a593Smuzhiyun	help
298*4882a593Smuzhiyun	  Say 'Y' here to use the Freescale Security Engine (SEC)
299*4882a593Smuzhiyun	  to offload cryptographic algorithm computation.
300*4882a593Smuzhiyun
301*4882a593Smuzhiyun	  The Freescale SEC is present on PowerQUICC 'E' processors, such
302*4882a593Smuzhiyun	  as the MPC8349E and MPC8548E.
303*4882a593Smuzhiyun
304*4882a593Smuzhiyun	  To compile this driver as a module, choose M here: the module
305*4882a593Smuzhiyun	  will be called talitos.
306*4882a593Smuzhiyun
307*4882a593Smuzhiyunconfig CRYPTO_DEV_TALITOS1
308*4882a593Smuzhiyun	bool "SEC1 (SEC 1.0 and SEC Lite 1.2)"
309*4882a593Smuzhiyun	depends on CRYPTO_DEV_TALITOS
310*4882a593Smuzhiyun	depends on PPC_8xx || PPC_82xx
311*4882a593Smuzhiyun	default y
312*4882a593Smuzhiyun	help
313*4882a593Smuzhiyun	  Say 'Y' here to use the Freescale Security Engine (SEC) version 1.0
314*4882a593Smuzhiyun	  found on MPC82xx or the Freescale Security Engine (SEC Lite)
315*4882a593Smuzhiyun	  version 1.2 found on MPC8xx
316*4882a593Smuzhiyun
317*4882a593Smuzhiyunconfig CRYPTO_DEV_TALITOS2
318*4882a593Smuzhiyun	bool "SEC2+ (SEC version 2.0 or upper)"
319*4882a593Smuzhiyun	depends on CRYPTO_DEV_TALITOS
320*4882a593Smuzhiyun	default y if !PPC_8xx
321*4882a593Smuzhiyun	help
322*4882a593Smuzhiyun	  Say 'Y' here to use the Freescale Security Engine (SEC)
323*4882a593Smuzhiyun	  version 2 and following as found on MPC83xx, MPC85xx, etc ...
324*4882a593Smuzhiyun
325*4882a593Smuzhiyunconfig CRYPTO_DEV_IXP4XX
326*4882a593Smuzhiyun	tristate "Driver for IXP4xx crypto hardware acceleration"
327*4882a593Smuzhiyun	depends on ARCH_IXP4XX && IXP4XX_QMGR && IXP4XX_NPE
328*4882a593Smuzhiyun	select CRYPTO_LIB_DES
329*4882a593Smuzhiyun	select CRYPTO_AEAD
330*4882a593Smuzhiyun	select CRYPTO_AUTHENC
331*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
332*4882a593Smuzhiyun	help
333*4882a593Smuzhiyun	  Driver for the IXP4xx NPE crypto engine.
334*4882a593Smuzhiyun
335*4882a593Smuzhiyunconfig CRYPTO_DEV_PPC4XX
336*4882a593Smuzhiyun	tristate "Driver AMCC PPC4xx crypto accelerator"
337*4882a593Smuzhiyun	depends on PPC && 4xx
338*4882a593Smuzhiyun	select CRYPTO_HASH
339*4882a593Smuzhiyun	select CRYPTO_AEAD
340*4882a593Smuzhiyun	select CRYPTO_AES
341*4882a593Smuzhiyun	select CRYPTO_LIB_AES
342*4882a593Smuzhiyun	select CRYPTO_CCM
343*4882a593Smuzhiyun	select CRYPTO_CTR
344*4882a593Smuzhiyun	select CRYPTO_GCM
345*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
346*4882a593Smuzhiyun	help
347*4882a593Smuzhiyun	  This option allows you to have support for AMCC crypto acceleration.
348*4882a593Smuzhiyun
349*4882a593Smuzhiyunconfig HW_RANDOM_PPC4XX
350*4882a593Smuzhiyun	bool "PowerPC 4xx generic true random number generator support"
351*4882a593Smuzhiyun	depends on CRYPTO_DEV_PPC4XX && HW_RANDOM
352*4882a593Smuzhiyun	default y
353*4882a593Smuzhiyun	help
354*4882a593Smuzhiyun	 This option provides the kernel-side support for the TRNG hardware
355*4882a593Smuzhiyun	 found in the security function of some PowerPC 4xx SoCs.
356*4882a593Smuzhiyun
357*4882a593Smuzhiyunconfig CRYPTO_DEV_OMAP
358*4882a593Smuzhiyun	tristate "Support for OMAP crypto HW accelerators"
359*4882a593Smuzhiyun	depends on ARCH_OMAP2PLUS
360*4882a593Smuzhiyun	help
361*4882a593Smuzhiyun	  OMAP processors have various crypto HW accelerators. Select this if
362*4882a593Smuzhiyun	  you want to use the OMAP modules for any of the crypto algorithms.
363*4882a593Smuzhiyun
364*4882a593Smuzhiyunif CRYPTO_DEV_OMAP
365*4882a593Smuzhiyun
366*4882a593Smuzhiyunconfig CRYPTO_DEV_OMAP_SHAM
367*4882a593Smuzhiyun	tristate "Support for OMAP MD5/SHA1/SHA2 hw accelerator"
368*4882a593Smuzhiyun	depends on ARCH_OMAP2PLUS
369*4882a593Smuzhiyun	select CRYPTO_ENGINE
370*4882a593Smuzhiyun	select CRYPTO_SHA1
371*4882a593Smuzhiyun	select CRYPTO_MD5
372*4882a593Smuzhiyun	select CRYPTO_SHA256
373*4882a593Smuzhiyun	select CRYPTO_SHA512
374*4882a593Smuzhiyun	select CRYPTO_HMAC
375*4882a593Smuzhiyun	help
376*4882a593Smuzhiyun	  OMAP processors have MD5/SHA1/SHA2 hw accelerator. Select this if you
377*4882a593Smuzhiyun	  want to use the OMAP module for MD5/SHA1/SHA2 algorithms.
378*4882a593Smuzhiyun
379*4882a593Smuzhiyunconfig CRYPTO_DEV_OMAP_AES
380*4882a593Smuzhiyun	tristate "Support for OMAP AES hw engine"
381*4882a593Smuzhiyun	depends on ARCH_OMAP2 || ARCH_OMAP3 || ARCH_OMAP2PLUS
382*4882a593Smuzhiyun	select CRYPTO_AES
383*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
384*4882a593Smuzhiyun	select CRYPTO_ENGINE
385*4882a593Smuzhiyun	select CRYPTO_CBC
386*4882a593Smuzhiyun	select CRYPTO_ECB
387*4882a593Smuzhiyun	select CRYPTO_CTR
388*4882a593Smuzhiyun	select CRYPTO_AEAD
389*4882a593Smuzhiyun	help
390*4882a593Smuzhiyun	  OMAP processors have AES module accelerator. Select this if you
391*4882a593Smuzhiyun	  want to use the OMAP module for AES algorithms.
392*4882a593Smuzhiyun
393*4882a593Smuzhiyunconfig CRYPTO_DEV_OMAP_DES
394*4882a593Smuzhiyun	tristate "Support for OMAP DES/3DES hw engine"
395*4882a593Smuzhiyun	depends on ARCH_OMAP2PLUS
396*4882a593Smuzhiyun	select CRYPTO_LIB_DES
397*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
398*4882a593Smuzhiyun	select CRYPTO_ENGINE
399*4882a593Smuzhiyun	help
400*4882a593Smuzhiyun	  OMAP processors have DES/3DES module accelerator. Select this if you
401*4882a593Smuzhiyun	  want to use the OMAP module for DES and 3DES algorithms. Currently
402*4882a593Smuzhiyun	  the ECB and CBC modes of operation are supported by the driver. Also
403*4882a593Smuzhiyun	  accesses made on unaligned boundaries are supported.
404*4882a593Smuzhiyun
405*4882a593Smuzhiyunendif # CRYPTO_DEV_OMAP
406*4882a593Smuzhiyun
407*4882a593Smuzhiyunconfig CRYPTO_DEV_PICOXCELL
408*4882a593Smuzhiyun	tristate "Support for picoXcell IPSEC and Layer2 crypto engines"
409*4882a593Smuzhiyun	depends on (ARCH_PICOXCELL || COMPILE_TEST) && HAVE_CLK
410*4882a593Smuzhiyun	select CRYPTO_AEAD
411*4882a593Smuzhiyun	select CRYPTO_AES
412*4882a593Smuzhiyun	select CRYPTO_AUTHENC
413*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
414*4882a593Smuzhiyun	select CRYPTO_LIB_DES
415*4882a593Smuzhiyun	select CRYPTO_CBC
416*4882a593Smuzhiyun	select CRYPTO_ECB
417*4882a593Smuzhiyun	select CRYPTO_SEQIV
418*4882a593Smuzhiyun	help
419*4882a593Smuzhiyun	  This option enables support for the hardware offload engines in the
420*4882a593Smuzhiyun	  Picochip picoXcell SoC devices. Select this for IPSEC ESP offload
421*4882a593Smuzhiyun	  and for 3gpp Layer 2 ciphering support.
422*4882a593Smuzhiyun
423*4882a593Smuzhiyun	  Saying m here will build a module named picoxcell_crypto.
424*4882a593Smuzhiyun
425*4882a593Smuzhiyunconfig CRYPTO_DEV_SAHARA
426*4882a593Smuzhiyun	tristate "Support for SAHARA crypto accelerator"
427*4882a593Smuzhiyun	depends on ARCH_MXC && OF
428*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
429*4882a593Smuzhiyun	select CRYPTO_AES
430*4882a593Smuzhiyun	select CRYPTO_ECB
431*4882a593Smuzhiyun	help
432*4882a593Smuzhiyun	  This option enables support for the SAHARA HW crypto accelerator
433*4882a593Smuzhiyun	  found in some Freescale i.MX chips.
434*4882a593Smuzhiyun
435*4882a593Smuzhiyunconfig CRYPTO_DEV_EXYNOS_RNG
436*4882a593Smuzhiyun	tristate "Exynos HW pseudo random number generator support"
437*4882a593Smuzhiyun	depends on ARCH_EXYNOS || COMPILE_TEST
438*4882a593Smuzhiyun	depends on HAS_IOMEM
439*4882a593Smuzhiyun	select CRYPTO_RNG
440*4882a593Smuzhiyun	help
441*4882a593Smuzhiyun	  This driver provides kernel-side support through the
442*4882a593Smuzhiyun	  cryptographic API for the pseudo random number generator hardware
443*4882a593Smuzhiyun	  found on Exynos SoCs.
444*4882a593Smuzhiyun
445*4882a593Smuzhiyun	  To compile this driver as a module, choose M here: the
446*4882a593Smuzhiyun	  module will be called exynos-rng.
447*4882a593Smuzhiyun
448*4882a593Smuzhiyun	  If unsure, say Y.
449*4882a593Smuzhiyun
450*4882a593Smuzhiyunconfig CRYPTO_DEV_S5P
451*4882a593Smuzhiyun	tristate "Support for Samsung S5PV210/Exynos crypto accelerator"
452*4882a593Smuzhiyun	depends on ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
453*4882a593Smuzhiyun	depends on HAS_IOMEM
454*4882a593Smuzhiyun	select CRYPTO_AES
455*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
456*4882a593Smuzhiyun	help
457*4882a593Smuzhiyun	  This option allows you to have support for S5P crypto acceleration.
458*4882a593Smuzhiyun	  Select this to offload Samsung S5PV210 or S5PC110, Exynos from AES
459*4882a593Smuzhiyun	  algorithms execution.
460*4882a593Smuzhiyun
461*4882a593Smuzhiyunconfig CRYPTO_DEV_EXYNOS_HASH
462*4882a593Smuzhiyun	bool "Support for Samsung Exynos HASH accelerator"
463*4882a593Smuzhiyun	depends on CRYPTO_DEV_S5P
464*4882a593Smuzhiyun	depends on !CRYPTO_DEV_EXYNOS_RNG && CRYPTO_DEV_EXYNOS_RNG!=m
465*4882a593Smuzhiyun	select CRYPTO_SHA1
466*4882a593Smuzhiyun	select CRYPTO_MD5
467*4882a593Smuzhiyun	select CRYPTO_SHA256
468*4882a593Smuzhiyun	help
469*4882a593Smuzhiyun	  Select this to offload Exynos from HASH MD5/SHA1/SHA256.
470*4882a593Smuzhiyun	  This will select software SHA1, MD5 and SHA256 as they are
471*4882a593Smuzhiyun	  needed for small and zero-size messages.
472*4882a593Smuzhiyun	  HASH algorithms will be disabled if EXYNOS_RNG
473*4882a593Smuzhiyun	  is enabled due to hw conflict.
474*4882a593Smuzhiyun
475*4882a593Smuzhiyunconfig CRYPTO_DEV_NX
476*4882a593Smuzhiyun	bool "Support for IBM PowerPC Nest (NX) cryptographic acceleration"
477*4882a593Smuzhiyun	depends on PPC64
478*4882a593Smuzhiyun	help
479*4882a593Smuzhiyun	  This enables support for the NX hardware cryptographic accelerator
480*4882a593Smuzhiyun	  coprocessor that is in IBM PowerPC P7+ or later processors.  This
481*4882a593Smuzhiyun	  does not actually enable any drivers, it only allows you to select
482*4882a593Smuzhiyun	  which acceleration type (encryption and/or compression) to enable.
483*4882a593Smuzhiyun
484*4882a593Smuzhiyunif CRYPTO_DEV_NX
485*4882a593Smuzhiyun	source "drivers/crypto/nx/Kconfig"
486*4882a593Smuzhiyunendif
487*4882a593Smuzhiyun
488*4882a593Smuzhiyunconfig CRYPTO_DEV_UX500
489*4882a593Smuzhiyun	tristate "Driver for ST-Ericsson UX500 crypto hardware acceleration"
490*4882a593Smuzhiyun	depends on ARCH_U8500
491*4882a593Smuzhiyun	help
492*4882a593Smuzhiyun	  Driver for ST-Ericsson UX500 crypto engine.
493*4882a593Smuzhiyun
494*4882a593Smuzhiyunif CRYPTO_DEV_UX500
495*4882a593Smuzhiyun	source "drivers/crypto/ux500/Kconfig"
496*4882a593Smuzhiyunendif # if CRYPTO_DEV_UX500
497*4882a593Smuzhiyun
498*4882a593Smuzhiyunconfig CRYPTO_DEV_ATMEL_AUTHENC
499*4882a593Smuzhiyun	bool "Support for Atmel IPSEC/SSL hw accelerator"
500*4882a593Smuzhiyun	depends on ARCH_AT91 || COMPILE_TEST
501*4882a593Smuzhiyun	depends on CRYPTO_DEV_ATMEL_AES
502*4882a593Smuzhiyun	help
503*4882a593Smuzhiyun	  Some Atmel processors can combine the AES and SHA hw accelerators
504*4882a593Smuzhiyun	  to enhance support of IPSEC/SSL.
505*4882a593Smuzhiyun	  Select this if you want to use the Atmel modules for
506*4882a593Smuzhiyun	  authenc(hmac(shaX),Y(cbc)) algorithms.
507*4882a593Smuzhiyun
508*4882a593Smuzhiyunconfig CRYPTO_DEV_ATMEL_AES
509*4882a593Smuzhiyun	tristate "Support for Atmel AES hw accelerator"
510*4882a593Smuzhiyun	depends on ARCH_AT91 || COMPILE_TEST
511*4882a593Smuzhiyun	select CRYPTO_AES
512*4882a593Smuzhiyun	select CRYPTO_AEAD
513*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
514*4882a593Smuzhiyun	select CRYPTO_AUTHENC if CRYPTO_DEV_ATMEL_AUTHENC
515*4882a593Smuzhiyun	select CRYPTO_DEV_ATMEL_SHA if CRYPTO_DEV_ATMEL_AUTHENC
516*4882a593Smuzhiyun	help
517*4882a593Smuzhiyun	  Some Atmel processors have AES hw accelerator.
518*4882a593Smuzhiyun	  Select this if you want to use the Atmel module for
519*4882a593Smuzhiyun	  AES algorithms.
520*4882a593Smuzhiyun
521*4882a593Smuzhiyun	  To compile this driver as a module, choose M here: the module
522*4882a593Smuzhiyun	  will be called atmel-aes.
523*4882a593Smuzhiyun
524*4882a593Smuzhiyunconfig CRYPTO_DEV_ATMEL_TDES
525*4882a593Smuzhiyun	tristate "Support for Atmel DES/TDES hw accelerator"
526*4882a593Smuzhiyun	depends on ARCH_AT91 || COMPILE_TEST
527*4882a593Smuzhiyun	select CRYPTO_LIB_DES
528*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
529*4882a593Smuzhiyun	help
530*4882a593Smuzhiyun	  Some Atmel processors have DES/TDES hw accelerator.
531*4882a593Smuzhiyun	  Select this if you want to use the Atmel module for
532*4882a593Smuzhiyun	  DES/TDES algorithms.
533*4882a593Smuzhiyun
534*4882a593Smuzhiyun	  To compile this driver as a module, choose M here: the module
535*4882a593Smuzhiyun	  will be called atmel-tdes.
536*4882a593Smuzhiyun
537*4882a593Smuzhiyunconfig CRYPTO_DEV_ATMEL_SHA
538*4882a593Smuzhiyun	tristate "Support for Atmel SHA hw accelerator"
539*4882a593Smuzhiyun	depends on ARCH_AT91 || COMPILE_TEST
540*4882a593Smuzhiyun	select CRYPTO_HASH
541*4882a593Smuzhiyun	help
542*4882a593Smuzhiyun	  Some Atmel processors have SHA1/SHA224/SHA256/SHA384/SHA512
543*4882a593Smuzhiyun	  hw accelerator.
544*4882a593Smuzhiyun	  Select this if you want to use the Atmel module for
545*4882a593Smuzhiyun	  SHA1/SHA224/SHA256/SHA384/SHA512 algorithms.
546*4882a593Smuzhiyun
547*4882a593Smuzhiyun	  To compile this driver as a module, choose M here: the module
548*4882a593Smuzhiyun	  will be called atmel-sha.
549*4882a593Smuzhiyun
550*4882a593Smuzhiyunconfig CRYPTO_DEV_ATMEL_I2C
551*4882a593Smuzhiyun	tristate
552*4882a593Smuzhiyun	select BITREVERSE
553*4882a593Smuzhiyun
554*4882a593Smuzhiyunconfig CRYPTO_DEV_ATMEL_ECC
555*4882a593Smuzhiyun	tristate "Support for Microchip / Atmel ECC hw accelerator"
556*4882a593Smuzhiyun	depends on I2C
557*4882a593Smuzhiyun	select CRYPTO_DEV_ATMEL_I2C
558*4882a593Smuzhiyun	select CRYPTO_ECDH
559*4882a593Smuzhiyun	select CRC16
560*4882a593Smuzhiyun	help
561*4882a593Smuzhiyun	  Microhip / Atmel ECC hw accelerator.
562*4882a593Smuzhiyun	  Select this if you want to use the Microchip / Atmel module for
563*4882a593Smuzhiyun	  ECDH algorithm.
564*4882a593Smuzhiyun
565*4882a593Smuzhiyun	  To compile this driver as a module, choose M here: the module
566*4882a593Smuzhiyun	  will be called atmel-ecc.
567*4882a593Smuzhiyun
568*4882a593Smuzhiyunconfig CRYPTO_DEV_ATMEL_SHA204A
569*4882a593Smuzhiyun	tristate "Support for Microchip / Atmel SHA accelerator and RNG"
570*4882a593Smuzhiyun	depends on I2C
571*4882a593Smuzhiyun	select CRYPTO_DEV_ATMEL_I2C
572*4882a593Smuzhiyun	select HW_RANDOM
573*4882a593Smuzhiyun	select CRC16
574*4882a593Smuzhiyun	help
575*4882a593Smuzhiyun	  Microhip / Atmel SHA accelerator and RNG.
576*4882a593Smuzhiyun	  Select this if you want to use the Microchip / Atmel SHA204A
577*4882a593Smuzhiyun	  module as a random number generator. (Other functions of the
578*4882a593Smuzhiyun	  chip are currently not exposed by this driver)
579*4882a593Smuzhiyun
580*4882a593Smuzhiyun	  To compile this driver as a module, choose M here: the module
581*4882a593Smuzhiyun	  will be called atmel-sha204a.
582*4882a593Smuzhiyun
583*4882a593Smuzhiyunconfig CRYPTO_DEV_CCP
584*4882a593Smuzhiyun	bool "Support for AMD Secure Processor"
585*4882a593Smuzhiyun	depends on ((X86 && PCI) || (ARM64 && (OF_ADDRESS || ACPI))) && HAS_IOMEM
586*4882a593Smuzhiyun	help
587*4882a593Smuzhiyun	  The AMD Secure Processor provides support for the Cryptographic Coprocessor
588*4882a593Smuzhiyun	  (CCP) and the Platform Security Processor (PSP) devices.
589*4882a593Smuzhiyun
590*4882a593Smuzhiyunif CRYPTO_DEV_CCP
591*4882a593Smuzhiyun	source "drivers/crypto/ccp/Kconfig"
592*4882a593Smuzhiyunendif
593*4882a593Smuzhiyun
594*4882a593Smuzhiyunconfig CRYPTO_DEV_MXS_DCP
595*4882a593Smuzhiyun	tristate "Support for Freescale MXS DCP"
596*4882a593Smuzhiyun	depends on (ARCH_MXS || ARCH_MXC)
597*4882a593Smuzhiyun	select STMP_DEVICE
598*4882a593Smuzhiyun	select CRYPTO_CBC
599*4882a593Smuzhiyun	select CRYPTO_ECB
600*4882a593Smuzhiyun	select CRYPTO_AES
601*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
602*4882a593Smuzhiyun	select CRYPTO_HASH
603*4882a593Smuzhiyun	help
604*4882a593Smuzhiyun	  The Freescale i.MX23/i.MX28 has SHA1/SHA256 and AES128 CBC/ECB
605*4882a593Smuzhiyun	  co-processor on the die.
606*4882a593Smuzhiyun
607*4882a593Smuzhiyun	  To compile this driver as a module, choose M here: the module
608*4882a593Smuzhiyun	  will be called mxs-dcp.
609*4882a593Smuzhiyun
610*4882a593Smuzhiyunsource "drivers/crypto/qat/Kconfig"
611*4882a593Smuzhiyunsource "drivers/crypto/cavium/cpt/Kconfig"
612*4882a593Smuzhiyunsource "drivers/crypto/cavium/nitrox/Kconfig"
613*4882a593Smuzhiyunsource "drivers/crypto/marvell/Kconfig"
614*4882a593Smuzhiyun
615*4882a593Smuzhiyunconfig CRYPTO_DEV_CAVIUM_ZIP
616*4882a593Smuzhiyun	tristate "Cavium ZIP driver"
617*4882a593Smuzhiyun	depends on PCI && 64BIT && (ARM64 || COMPILE_TEST)
618*4882a593Smuzhiyun	help
619*4882a593Smuzhiyun	  Select this option if you want to enable compression/decompression
620*4882a593Smuzhiyun	  acceleration on Cavium's ARM based SoCs
621*4882a593Smuzhiyun
622*4882a593Smuzhiyunconfig CRYPTO_DEV_QCE
623*4882a593Smuzhiyun	tristate "Qualcomm crypto engine accelerator"
624*4882a593Smuzhiyun	depends on ARCH_QCOM || COMPILE_TEST
625*4882a593Smuzhiyun	depends on HAS_IOMEM
626*4882a593Smuzhiyun	help
627*4882a593Smuzhiyun	  This driver supports Qualcomm crypto engine accelerator
628*4882a593Smuzhiyun	  hardware. To compile this driver as a module, choose M here. The
629*4882a593Smuzhiyun	  module will be called qcrypto.
630*4882a593Smuzhiyun
631*4882a593Smuzhiyunconfig CRYPTO_DEV_QCE_SKCIPHER
632*4882a593Smuzhiyun	bool
633*4882a593Smuzhiyun	depends on CRYPTO_DEV_QCE
634*4882a593Smuzhiyun	select CRYPTO_AES
635*4882a593Smuzhiyun	select CRYPTO_LIB_DES
636*4882a593Smuzhiyun	select CRYPTO_ECB
637*4882a593Smuzhiyun	select CRYPTO_CBC
638*4882a593Smuzhiyun	select CRYPTO_XTS
639*4882a593Smuzhiyun	select CRYPTO_CTR
640*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
641*4882a593Smuzhiyun
642*4882a593Smuzhiyunconfig CRYPTO_DEV_QCE_SHA
643*4882a593Smuzhiyun	bool
644*4882a593Smuzhiyun	depends on CRYPTO_DEV_QCE
645*4882a593Smuzhiyun	select CRYPTO_SHA1
646*4882a593Smuzhiyun	select CRYPTO_SHA256
647*4882a593Smuzhiyun
648*4882a593Smuzhiyunchoice
649*4882a593Smuzhiyun	prompt "Algorithms enabled for QCE acceleration"
650*4882a593Smuzhiyun	default CRYPTO_DEV_QCE_ENABLE_ALL
651*4882a593Smuzhiyun	depends on CRYPTO_DEV_QCE
652*4882a593Smuzhiyun	help
653*4882a593Smuzhiyun	  This option allows to choose whether to build support for all algorihtms
654*4882a593Smuzhiyun	  (default), hashes-only, or skciphers-only.
655*4882a593Smuzhiyun
656*4882a593Smuzhiyun	  The QCE engine does not appear to scale as well as the CPU to handle
657*4882a593Smuzhiyun	  multiple crypto requests.  While the ipq40xx chips have 4-core CPUs, the
658*4882a593Smuzhiyun	  QCE handles only 2 requests in parallel.
659*4882a593Smuzhiyun
660*4882a593Smuzhiyun	  Ipsec throughput seems to improve when disabling either family of
661*4882a593Smuzhiyun	  algorithms, sharing the load with the CPU.  Enabling skciphers-only
662*4882a593Smuzhiyun	  appears to work best.
663*4882a593Smuzhiyun
664*4882a593Smuzhiyun	config CRYPTO_DEV_QCE_ENABLE_ALL
665*4882a593Smuzhiyun		bool "All supported algorithms"
666*4882a593Smuzhiyun		select CRYPTO_DEV_QCE_SKCIPHER
667*4882a593Smuzhiyun		select CRYPTO_DEV_QCE_SHA
668*4882a593Smuzhiyun		help
669*4882a593Smuzhiyun		  Enable all supported algorithms:
670*4882a593Smuzhiyun			- AES (CBC, CTR, ECB, XTS)
671*4882a593Smuzhiyun			- 3DES (CBC, ECB)
672*4882a593Smuzhiyun			- DES (CBC, ECB)
673*4882a593Smuzhiyun			- SHA1, HMAC-SHA1
674*4882a593Smuzhiyun			- SHA256, HMAC-SHA256
675*4882a593Smuzhiyun
676*4882a593Smuzhiyun	config CRYPTO_DEV_QCE_ENABLE_SKCIPHER
677*4882a593Smuzhiyun		bool "Symmetric-key ciphers only"
678*4882a593Smuzhiyun		select CRYPTO_DEV_QCE_SKCIPHER
679*4882a593Smuzhiyun		help
680*4882a593Smuzhiyun		  Enable symmetric-key ciphers only:
681*4882a593Smuzhiyun			- AES (CBC, CTR, ECB, XTS)
682*4882a593Smuzhiyun			- 3DES (ECB, CBC)
683*4882a593Smuzhiyun			- DES (ECB, CBC)
684*4882a593Smuzhiyun
685*4882a593Smuzhiyun	config CRYPTO_DEV_QCE_ENABLE_SHA
686*4882a593Smuzhiyun		bool "Hash/HMAC only"
687*4882a593Smuzhiyun		select CRYPTO_DEV_QCE_SHA
688*4882a593Smuzhiyun		help
689*4882a593Smuzhiyun		  Enable hashes/HMAC algorithms only:
690*4882a593Smuzhiyun			- SHA1, HMAC-SHA1
691*4882a593Smuzhiyun			- SHA256, HMAC-SHA256
692*4882a593Smuzhiyun
693*4882a593Smuzhiyunendchoice
694*4882a593Smuzhiyun
695*4882a593Smuzhiyunconfig CRYPTO_DEV_QCE_SW_MAX_LEN
696*4882a593Smuzhiyun	int "Default maximum request size to use software for AES"
697*4882a593Smuzhiyun	depends on CRYPTO_DEV_QCE && CRYPTO_DEV_QCE_SKCIPHER
698*4882a593Smuzhiyun	default 512
699*4882a593Smuzhiyun	help
700*4882a593Smuzhiyun	  This sets the default maximum request size to perform AES requests
701*4882a593Smuzhiyun	  using software instead of the crypto engine.  It can be changed by
702*4882a593Smuzhiyun	  setting the aes_sw_max_len parameter.
703*4882a593Smuzhiyun
704*4882a593Smuzhiyun	  Small blocks are processed faster in software than hardware.
705*4882a593Smuzhiyun	  Considering the 256-bit ciphers, software is 2-3 times faster than
706*4882a593Smuzhiyun	  qce at 256-bytes, 30% faster at 512, and about even at 768-bytes.
707*4882a593Smuzhiyun	  With 128-bit keys, the break-even point would be around 1024-bytes.
708*4882a593Smuzhiyun
709*4882a593Smuzhiyun	  The default is set a little lower, to 512 bytes, to balance the
710*4882a593Smuzhiyun	  cost in CPU usage.  The minimum recommended setting is 16-bytes
711*4882a593Smuzhiyun	  (1 AES block), since AES-GCM will fail if you set it lower.
712*4882a593Smuzhiyun	  Setting this to zero will send all requests to the hardware.
713*4882a593Smuzhiyun
714*4882a593Smuzhiyun	  Note that 192-bit keys are not supported by the hardware and are
715*4882a593Smuzhiyun	  always processed by the software fallback, and all DES requests
716*4882a593Smuzhiyun	  are done by the hardware.
717*4882a593Smuzhiyun
718*4882a593Smuzhiyunconfig CRYPTO_DEV_QCOM_RNG
719*4882a593Smuzhiyun	tristate "Qualcomm Random Number Generator Driver"
720*4882a593Smuzhiyun	depends on ARCH_QCOM || COMPILE_TEST
721*4882a593Smuzhiyun	select CRYPTO_RNG
722*4882a593Smuzhiyun	help
723*4882a593Smuzhiyun	  This driver provides support for the Random Number
724*4882a593Smuzhiyun	  Generator hardware found on Qualcomm SoCs.
725*4882a593Smuzhiyun
726*4882a593Smuzhiyun	  To compile this driver as a module, choose M here. The
727*4882a593Smuzhiyun	  module will be called qcom-rng. If unsure, say N.
728*4882a593Smuzhiyun
729*4882a593Smuzhiyunconfig CRYPTO_DEV_VMX
730*4882a593Smuzhiyun	bool "Support for VMX cryptographic acceleration instructions"
731*4882a593Smuzhiyun	depends on PPC64 && VSX
732*4882a593Smuzhiyun	help
733*4882a593Smuzhiyun	  Support for VMX cryptographic acceleration instructions.
734*4882a593Smuzhiyun
735*4882a593Smuzhiyunsource "drivers/crypto/vmx/Kconfig"
736*4882a593Smuzhiyun
737*4882a593Smuzhiyunconfig CRYPTO_DEV_IMGTEC_HASH
738*4882a593Smuzhiyun	tristate "Imagination Technologies hardware hash accelerator"
739*4882a593Smuzhiyun	depends on MIPS || COMPILE_TEST
740*4882a593Smuzhiyun	select CRYPTO_MD5
741*4882a593Smuzhiyun	select CRYPTO_SHA1
742*4882a593Smuzhiyun	select CRYPTO_SHA256
743*4882a593Smuzhiyun	select CRYPTO_HASH
744*4882a593Smuzhiyun	help
745*4882a593Smuzhiyun	  This driver interfaces with the Imagination Technologies
746*4882a593Smuzhiyun	  hardware hash accelerator. Supporting MD5/SHA1/SHA224/SHA256
747*4882a593Smuzhiyun	  hashing algorithms.
748*4882a593Smuzhiyun
749*4882a593Smuzhiyunconfig CRYPTO_DEV_ROCKCHIP
750*4882a593Smuzhiyun	tristate "Rockchip's Cryptographic Engine driver"
751*4882a593Smuzhiyun	depends on OF && ARCH_ROCKCHIP
752*4882a593Smuzhiyun	select CRYPTO_DES
753*4882a593Smuzhiyun	select CRYPTO_AES
754*4882a593Smuzhiyun	select CRYPTO_ECB
755*4882a593Smuzhiyun	select CRYPTO_CBC
756*4882a593Smuzhiyun	select CRYPTO_XTS
757*4882a593Smuzhiyun	select CRYPTO_CFB
758*4882a593Smuzhiyun	select CRYPTO_OFB
759*4882a593Smuzhiyun	select CRYPTO_CTR
760*4882a593Smuzhiyun	select CRYPTO_GCM
761*4882a593Smuzhiyun	select CRYPTO_LIB_DES
762*4882a593Smuzhiyun	select CRYPTO_MD5
763*4882a593Smuzhiyun	select CRYPTO_SHA1
764*4882a593Smuzhiyun	select CRYPTO_SM3
765*4882a593Smuzhiyun	select CRYPTO_SM4
766*4882a593Smuzhiyun	select CRYPTO_SHA256
767*4882a593Smuzhiyun	select CRTPTO_SHA512
768*4882a593Smuzhiyun	select CRYPTO_HASH
769*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
770*4882a593Smuzhiyun	select CRYPTO_RSA
771*4882a593Smuzhiyun
772*4882a593Smuzhiyun	help
773*4882a593Smuzhiyun	  This driver interfaces with the hardware crypto accelerator.
774*4882a593Smuzhiyun	  Supporting cbc/ecb chainmode, and aes/des/des3_ede cipher mode.
775*4882a593Smuzhiyun
776*4882a593Smuzhiyunsource "drivers/crypto/rockchip/Kconfig"
777*4882a593Smuzhiyun
778*4882a593Smuzhiyunconfig CRYPTO_DEV_ZYNQMP_AES
779*4882a593Smuzhiyun	tristate "Support for Xilinx ZynqMP AES hw accelerator"
780*4882a593Smuzhiyun	depends on ZYNQMP_FIRMWARE || COMPILE_TEST
781*4882a593Smuzhiyun	select CRYPTO_AES
782*4882a593Smuzhiyun	select CRYPTO_ENGINE
783*4882a593Smuzhiyun	select CRYPTO_AEAD
784*4882a593Smuzhiyun	help
785*4882a593Smuzhiyun	  Xilinx ZynqMP has AES-GCM engine used for symmetric key
786*4882a593Smuzhiyun	  encryption and decryption. This driver interfaces with AES hw
787*4882a593Smuzhiyun	  accelerator. Select this if you want to use the ZynqMP module
788*4882a593Smuzhiyun	  for AES algorithms.
789*4882a593Smuzhiyun
790*4882a593Smuzhiyunconfig CRYPTO_DEV_MEDIATEK
791*4882a593Smuzhiyun	tristate "MediaTek's EIP97 Cryptographic Engine driver"
792*4882a593Smuzhiyun	depends on (ARM && ARCH_MEDIATEK) || COMPILE_TEST
793*4882a593Smuzhiyun	select CRYPTO_LIB_AES
794*4882a593Smuzhiyun	select CRYPTO_AEAD
795*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
796*4882a593Smuzhiyun	select CRYPTO_SHA1
797*4882a593Smuzhiyun	select CRYPTO_SHA256
798*4882a593Smuzhiyun	select CRYPTO_SHA512
799*4882a593Smuzhiyun	select CRYPTO_HMAC
800*4882a593Smuzhiyun	help
801*4882a593Smuzhiyun	  This driver allows you to utilize the hardware crypto accelerator
802*4882a593Smuzhiyun	  EIP97 which can be found on the MT7623 MT2701, MT8521p, etc ....
803*4882a593Smuzhiyun	  Select this if you want to use it for AES/SHA1/SHA2 algorithms.
804*4882a593Smuzhiyun
805*4882a593Smuzhiyunsource "drivers/crypto/chelsio/Kconfig"
806*4882a593Smuzhiyun
807*4882a593Smuzhiyunsource "drivers/crypto/virtio/Kconfig"
808*4882a593Smuzhiyun
809*4882a593Smuzhiyunconfig CRYPTO_DEV_BCM_SPU
810*4882a593Smuzhiyun	tristate "Broadcom symmetric crypto/hash acceleration support"
811*4882a593Smuzhiyun	depends on ARCH_BCM_IPROC
812*4882a593Smuzhiyun	depends on MAILBOX
813*4882a593Smuzhiyun	default m
814*4882a593Smuzhiyun	select CRYPTO_AUTHENC
815*4882a593Smuzhiyun	select CRYPTO_LIB_DES
816*4882a593Smuzhiyun	select CRYPTO_MD5
817*4882a593Smuzhiyun	select CRYPTO_SHA1
818*4882a593Smuzhiyun	select CRYPTO_SHA256
819*4882a593Smuzhiyun	select CRYPTO_SHA512
820*4882a593Smuzhiyun	help
821*4882a593Smuzhiyun	  This driver provides support for Broadcom crypto acceleration using the
822*4882a593Smuzhiyun	  Secure Processing Unit (SPU). The SPU driver registers skcipher,
823*4882a593Smuzhiyun	  ahash, and aead algorithms with the kernel cryptographic API.
824*4882a593Smuzhiyun
825*4882a593Smuzhiyunsource "drivers/crypto/stm32/Kconfig"
826*4882a593Smuzhiyun
827*4882a593Smuzhiyunconfig CRYPTO_DEV_SAFEXCEL
828*4882a593Smuzhiyun	tristate "Inside Secure's SafeXcel cryptographic engine driver"
829*4882a593Smuzhiyun	depends on (OF || PCI || COMPILE_TEST) && HAS_IOMEM
830*4882a593Smuzhiyun	select CRYPTO_LIB_AES
831*4882a593Smuzhiyun	select CRYPTO_AUTHENC
832*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
833*4882a593Smuzhiyun	select CRYPTO_LIB_DES
834*4882a593Smuzhiyun	select CRYPTO_HASH
835*4882a593Smuzhiyun	select CRYPTO_HMAC
836*4882a593Smuzhiyun	select CRYPTO_MD5
837*4882a593Smuzhiyun	select CRYPTO_SHA1
838*4882a593Smuzhiyun	select CRYPTO_SHA256
839*4882a593Smuzhiyun	select CRYPTO_SHA512
840*4882a593Smuzhiyun	select CRYPTO_CHACHA20POLY1305
841*4882a593Smuzhiyun	select CRYPTO_SHA3
842*4882a593Smuzhiyun	help
843*4882a593Smuzhiyun	  This driver interfaces with the SafeXcel EIP-97 and EIP-197 cryptographic
844*4882a593Smuzhiyun	  engines designed by Inside Secure. It currently accelerates DES, 3DES and
845*4882a593Smuzhiyun	  AES block ciphers in ECB and CBC mode, as well as SHA1, SHA224, SHA256,
846*4882a593Smuzhiyun	  SHA384 and SHA512 hash algorithms for both basic hash and HMAC.
847*4882a593Smuzhiyun	  Additionally, it accelerates combined AES-CBC/HMAC-SHA AEAD operations.
848*4882a593Smuzhiyun
849*4882a593Smuzhiyunconfig CRYPTO_DEV_ARTPEC6
850*4882a593Smuzhiyun	tristate "Support for Axis ARTPEC-6/7 hardware crypto acceleration."
851*4882a593Smuzhiyun	depends on ARM && (ARCH_ARTPEC || COMPILE_TEST)
852*4882a593Smuzhiyun	depends on OF
853*4882a593Smuzhiyun	select CRYPTO_AEAD
854*4882a593Smuzhiyun	select CRYPTO_AES
855*4882a593Smuzhiyun	select CRYPTO_ALGAPI
856*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
857*4882a593Smuzhiyun	select CRYPTO_CTR
858*4882a593Smuzhiyun	select CRYPTO_HASH
859*4882a593Smuzhiyun	select CRYPTO_SHA1
860*4882a593Smuzhiyun	select CRYPTO_SHA256
861*4882a593Smuzhiyun	select CRYPTO_SHA512
862*4882a593Smuzhiyun	help
863*4882a593Smuzhiyun	  Enables the driver for the on-chip crypto accelerator
864*4882a593Smuzhiyun	  of Axis ARTPEC SoCs.
865*4882a593Smuzhiyun
866*4882a593Smuzhiyun	  To compile this driver as a module, choose M here.
867*4882a593Smuzhiyun
868*4882a593Smuzhiyunconfig CRYPTO_DEV_CCREE
869*4882a593Smuzhiyun	tristate "Support for ARM TrustZone CryptoCell family of security processors"
870*4882a593Smuzhiyun	depends on CRYPTO && CRYPTO_HW && OF && HAS_DMA
871*4882a593Smuzhiyun	default n
872*4882a593Smuzhiyun	select CRYPTO_HASH
873*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
874*4882a593Smuzhiyun	select CRYPTO_LIB_DES
875*4882a593Smuzhiyun	select CRYPTO_AEAD
876*4882a593Smuzhiyun	select CRYPTO_AUTHENC
877*4882a593Smuzhiyun	select CRYPTO_SHA1
878*4882a593Smuzhiyun	select CRYPTO_MD5
879*4882a593Smuzhiyun	select CRYPTO_SHA256
880*4882a593Smuzhiyun	select CRYPTO_SHA512
881*4882a593Smuzhiyun	select CRYPTO_HMAC
882*4882a593Smuzhiyun	select CRYPTO_AES
883*4882a593Smuzhiyun	select CRYPTO_CBC
884*4882a593Smuzhiyun	select CRYPTO_ECB
885*4882a593Smuzhiyun	select CRYPTO_CTR
886*4882a593Smuzhiyun	select CRYPTO_XTS
887*4882a593Smuzhiyun	select CRYPTO_SM4
888*4882a593Smuzhiyun	select CRYPTO_SM3
889*4882a593Smuzhiyun	help
890*4882a593Smuzhiyun	  Say 'Y' to enable a driver for the REE interface of the Arm
891*4882a593Smuzhiyun	  TrustZone CryptoCell family of processors. Currently the
892*4882a593Smuzhiyun	  CryptoCell 713, 703, 712, 710 and 630 are supported.
893*4882a593Smuzhiyun	  Choose this if you wish to use hardware acceleration of
894*4882a593Smuzhiyun	  cryptographic operations on the system REE.
895*4882a593Smuzhiyun	  If unsure say Y.
896*4882a593Smuzhiyun
897*4882a593Smuzhiyunsource "drivers/crypto/hisilicon/Kconfig"
898*4882a593Smuzhiyun
899*4882a593Smuzhiyunsource "drivers/crypto/amlogic/Kconfig"
900*4882a593Smuzhiyun
901*4882a593Smuzhiyunconfig CRYPTO_DEV_SA2UL
902*4882a593Smuzhiyun	tristate "Support for TI security accelerator"
903*4882a593Smuzhiyun	depends on ARCH_K3 || COMPILE_TEST
904*4882a593Smuzhiyun	select ARM64_CRYPTO
905*4882a593Smuzhiyun	select CRYPTO_AES
906*4882a593Smuzhiyun	select CRYPTO_AES_ARM64
907*4882a593Smuzhiyun	select CRYPTO_ALGAPI
908*4882a593Smuzhiyun	select CRYPTO_AUTHENC
909*4882a593Smuzhiyun	select CRYPTO_SHA1
910*4882a593Smuzhiyun	select CRYPTO_SHA256
911*4882a593Smuzhiyun	select CRYPTO_SHA512
912*4882a593Smuzhiyun	select HW_RANDOM
913*4882a593Smuzhiyun	select SG_SPLIT
914*4882a593Smuzhiyun	help
915*4882a593Smuzhiyun	  K3 devices include a security accelerator engine that may be
916*4882a593Smuzhiyun	  used for crypto offload.  Select this if you want to use hardware
917*4882a593Smuzhiyun	  acceleration for cryptographic algorithms on these devices.
918*4882a593Smuzhiyun
919*4882a593Smuzhiyunendif # CRYPTO_HW
920