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