xref: /openbmc/linux/drivers/crypto/Kconfig (revision 015d239a)
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_MARVELL_CESA
237	tristate "Marvell's Cryptographic Engine driver"
238	depends on PLAT_ORION || ARCH_MVEBU
239	select CRYPTO_LIB_AES
240	select CRYPTO_LIB_DES
241	select CRYPTO_SKCIPHER
242	select CRYPTO_HASH
243	select SRAM
244	help
245	  This driver allows you to utilize the Cryptographic Engines and
246	  Security Accelerator (CESA) which can be found on MVEBU and ORION
247	  platforms.
248	  This driver supports CPU offload through DMA transfers.
249
250config CRYPTO_DEV_NIAGARA2
251	tristate "Niagara2 Stream Processing Unit driver"
252	select CRYPTO_LIB_DES
253	select CRYPTO_SKCIPHER
254	select CRYPTO_HASH
255	select CRYPTO_MD5
256	select CRYPTO_SHA1
257	select CRYPTO_SHA256
258	depends on SPARC64
259	help
260	  Each core of a Niagara2 processor contains a Stream
261	  Processing Unit, which itself contains several cryptographic
262	  sub-units.  One set provides the Modular Arithmetic Unit,
263	  used for SSL offload.  The other set provides the Cipher
264	  Group, which can perform encryption, decryption, hashing,
265	  checksumming, and raw copies.
266
267config CRYPTO_DEV_HIFN_795X
268	tristate "Driver HIFN 795x crypto accelerator chips"
269	select CRYPTO_LIB_DES
270	select CRYPTO_SKCIPHER
271	select HW_RANDOM if CRYPTO_DEV_HIFN_795X_RNG
272	depends on PCI
273	depends on !ARCH_DMA_ADDR_T_64BIT
274	help
275	  This option allows you to have support for HIFN 795x crypto adapters.
276
277config CRYPTO_DEV_HIFN_795X_RNG
278	bool "HIFN 795x random number generator"
279	depends on CRYPTO_DEV_HIFN_795X
280	help
281	  Select this option if you want to enable the random number generator
282	  on the HIFN 795x crypto adapters.
283
284source "drivers/crypto/caam/Kconfig"
285
286config CRYPTO_DEV_TALITOS
287	tristate "Talitos Freescale Security Engine (SEC)"
288	select CRYPTO_AEAD
289	select CRYPTO_AUTHENC
290	select CRYPTO_SKCIPHER
291	select CRYPTO_HASH
292	select CRYPTO_LIB_DES
293	select HW_RANDOM
294	depends on FSL_SOC
295	help
296	  Say 'Y' here to use the Freescale Security Engine (SEC)
297	  to offload cryptographic algorithm computation.
298
299	  The Freescale SEC is present on PowerQUICC 'E' processors, such
300	  as the MPC8349E and MPC8548E.
301
302	  To compile this driver as a module, choose M here: the module
303	  will be called talitos.
304
305config CRYPTO_DEV_TALITOS1
306	bool "SEC1 (SEC 1.0 and SEC Lite 1.2)"
307	depends on CRYPTO_DEV_TALITOS
308	depends on PPC_8xx || PPC_82xx
309	default y
310	help
311	  Say 'Y' here to use the Freescale Security Engine (SEC) version 1.0
312	  found on MPC82xx or the Freescale Security Engine (SEC Lite)
313	  version 1.2 found on MPC8xx
314
315config CRYPTO_DEV_TALITOS2
316	bool "SEC2+ (SEC version 2.0 or upper)"
317	depends on CRYPTO_DEV_TALITOS
318	default y if !PPC_8xx
319	help
320	  Say 'Y' here to use the Freescale Security Engine (SEC)
321	  version 2 and following as found on MPC83xx, MPC85xx, etc ...
322
323config CRYPTO_DEV_IXP4XX
324	tristate "Driver for IXP4xx crypto hardware acceleration"
325	depends on ARCH_IXP4XX && IXP4XX_QMGR && IXP4XX_NPE
326	select CRYPTO_LIB_DES
327	select CRYPTO_AEAD
328	select CRYPTO_AUTHENC
329	select CRYPTO_SKCIPHER
330	help
331	  Driver for the IXP4xx NPE crypto engine.
332
333config CRYPTO_DEV_PPC4XX
334	tristate "Driver AMCC PPC4xx crypto accelerator"
335	depends on PPC && 4xx
336	select CRYPTO_HASH
337	select CRYPTO_AEAD
338	select CRYPTO_AES
339	select CRYPTO_LIB_AES
340	select CRYPTO_CCM
341	select CRYPTO_CTR
342	select CRYPTO_GCM
343	select CRYPTO_SKCIPHER
344	help
345	  This option allows you to have support for AMCC crypto acceleration.
346
347config HW_RANDOM_PPC4XX
348	bool "PowerPC 4xx generic true random number generator support"
349	depends on CRYPTO_DEV_PPC4XX && HW_RANDOM
350	default y
351	---help---
352	 This option provides the kernel-side support for the TRNG hardware
353	 found in the security function of some PowerPC 4xx SoCs.
354
355config CRYPTO_DEV_OMAP
356	tristate "Support for OMAP crypto HW accelerators"
357	depends on ARCH_OMAP2PLUS
358	help
359	  OMAP processors have various crypto HW accelerators. Select this if
360	  you want to use the OMAP modules for any of the crypto algorithms.
361
362if CRYPTO_DEV_OMAP
363
364config CRYPTO_DEV_OMAP_SHAM
365	tristate "Support for OMAP MD5/SHA1/SHA2 hw accelerator"
366	depends on ARCH_OMAP2PLUS
367	select CRYPTO_SHA1
368	select CRYPTO_MD5
369	select CRYPTO_SHA256
370	select CRYPTO_SHA512
371	select CRYPTO_HMAC
372	help
373	  OMAP processors have MD5/SHA1/SHA2 hw accelerator. Select this if you
374	  want to use the OMAP module for MD5/SHA1/SHA2 algorithms.
375
376config CRYPTO_DEV_OMAP_AES
377	tristate "Support for OMAP AES hw engine"
378	depends on ARCH_OMAP2 || ARCH_OMAP3 || ARCH_OMAP2PLUS
379	select CRYPTO_AES
380	select CRYPTO_SKCIPHER
381	select CRYPTO_ENGINE
382	select CRYPTO_CBC
383	select CRYPTO_ECB
384	select CRYPTO_CTR
385	select CRYPTO_AEAD
386	help
387	  OMAP processors have AES module accelerator. Select this if you
388	  want to use the OMAP module for AES algorithms.
389
390config CRYPTO_DEV_OMAP_DES
391	tristate "Support for OMAP DES/3DES hw engine"
392	depends on ARCH_OMAP2PLUS
393	select CRYPTO_LIB_DES
394	select CRYPTO_SKCIPHER
395	select CRYPTO_ENGINE
396	help
397	  OMAP processors have DES/3DES module accelerator. Select this if you
398	  want to use the OMAP module for DES and 3DES algorithms. Currently
399	  the ECB and CBC modes of operation are supported by the driver. Also
400	  accesses made on unaligned boundaries are supported.
401
402endif # CRYPTO_DEV_OMAP
403
404config CRYPTO_DEV_PICOXCELL
405	tristate "Support for picoXcell IPSEC and Layer2 crypto engines"
406	depends on (ARCH_PICOXCELL || COMPILE_TEST) && HAVE_CLK
407	select CRYPTO_AEAD
408	select CRYPTO_AES
409	select CRYPTO_AUTHENC
410	select CRYPTO_SKCIPHER
411	select CRYPTO_LIB_DES
412	select CRYPTO_CBC
413	select CRYPTO_ECB
414	select CRYPTO_SEQIV
415	help
416	  This option enables support for the hardware offload engines in the
417	  Picochip picoXcell SoC devices. Select this for IPSEC ESP offload
418	  and for 3gpp Layer 2 ciphering support.
419
420	  Saying m here will build a module named picoxcell_crypto.
421
422config CRYPTO_DEV_SAHARA
423	tristate "Support for SAHARA crypto accelerator"
424	depends on ARCH_MXC && OF
425	select CRYPTO_SKCIPHER
426	select CRYPTO_AES
427	select CRYPTO_ECB
428	help
429	  This option enables support for the SAHARA HW crypto accelerator
430	  found in some Freescale i.MX chips.
431
432config CRYPTO_DEV_EXYNOS_RNG
433	tristate "Exynos HW pseudo random number generator support"
434	depends on ARCH_EXYNOS || COMPILE_TEST
435	depends on HAS_IOMEM
436	select CRYPTO_RNG
437	---help---
438	  This driver provides kernel-side support through the
439	  cryptographic API for the pseudo random number generator hardware
440	  found on Exynos SoCs.
441
442	  To compile this driver as a module, choose M here: the
443	  module will be called exynos-rng.
444
445	  If unsure, say Y.
446
447config CRYPTO_DEV_S5P
448	tristate "Support for Samsung S5PV210/Exynos crypto accelerator"
449	depends on ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
450	depends on HAS_IOMEM
451	select CRYPTO_AES
452	select CRYPTO_SKCIPHER
453	help
454	  This option allows you to have support for S5P crypto acceleration.
455	  Select this to offload Samsung S5PV210 or S5PC110, Exynos from AES
456	  algorithms execution.
457
458config CRYPTO_DEV_EXYNOS_HASH
459	bool "Support for Samsung Exynos HASH accelerator"
460	depends on CRYPTO_DEV_S5P
461	depends on !CRYPTO_DEV_EXYNOS_RNG && CRYPTO_DEV_EXYNOS_RNG!=m
462	select CRYPTO_SHA1
463	select CRYPTO_MD5
464	select CRYPTO_SHA256
465	help
466	  Select this to offload Exynos from HASH MD5/SHA1/SHA256.
467	  This will select software SHA1, MD5 and SHA256 as they are
468	  needed for small and zero-size messages.
469	  HASH algorithms will be disabled if EXYNOS_RNG
470	  is enabled due to hw conflict.
471
472config CRYPTO_DEV_NX
473	bool "Support for IBM PowerPC Nest (NX) cryptographic acceleration"
474	depends on PPC64
475	help
476	  This enables support for the NX hardware cryptographic accelerator
477	  coprocessor that is in IBM PowerPC P7+ or later processors.  This
478	  does not actually enable any drivers, it only allows you to select
479	  which acceleration type (encryption and/or compression) to enable.
480
481if CRYPTO_DEV_NX
482	source "drivers/crypto/nx/Kconfig"
483endif
484
485config CRYPTO_DEV_UX500
486	tristate "Driver for ST-Ericsson UX500 crypto hardware acceleration"
487	depends on ARCH_U8500
488	help
489	  Driver for ST-Ericsson UX500 crypto engine.
490
491if CRYPTO_DEV_UX500
492	source "drivers/crypto/ux500/Kconfig"
493endif # if CRYPTO_DEV_UX500
494
495config CRYPTO_DEV_ATMEL_AUTHENC
496	bool "Support for Atmel IPSEC/SSL hw accelerator"
497	depends on ARCH_AT91 || COMPILE_TEST
498	depends on CRYPTO_DEV_ATMEL_AES
499	help
500	  Some Atmel processors can combine the AES and SHA hw accelerators
501	  to enhance support of IPSEC/SSL.
502	  Select this if you want to use the Atmel modules for
503	  authenc(hmac(shaX),Y(cbc)) algorithms.
504
505config CRYPTO_DEV_ATMEL_AES
506	tristate "Support for Atmel AES hw accelerator"
507	depends on ARCH_AT91 || COMPILE_TEST
508	select CRYPTO_AES
509	select CRYPTO_AEAD
510	select CRYPTO_SKCIPHER
511	select CRYPTO_AUTHENC if CRYPTO_DEV_ATMEL_AUTHENC
512	select CRYPTO_DEV_ATMEL_SHA if CRYPTO_DEV_ATMEL_AUTHENC
513	help
514	  Some Atmel processors have AES hw accelerator.
515	  Select this if you want to use the Atmel module for
516	  AES algorithms.
517
518	  To compile this driver as a module, choose M here: the module
519	  will be called atmel-aes.
520
521config CRYPTO_DEV_ATMEL_TDES
522	tristate "Support for Atmel DES/TDES hw accelerator"
523	depends on ARCH_AT91 || COMPILE_TEST
524	select CRYPTO_LIB_DES
525	select CRYPTO_SKCIPHER
526	help
527	  Some Atmel processors have DES/TDES hw accelerator.
528	  Select this if you want to use the Atmel module for
529	  DES/TDES algorithms.
530
531	  To compile this driver as a module, choose M here: the module
532	  will be called atmel-tdes.
533
534config CRYPTO_DEV_ATMEL_SHA
535	tristate "Support for Atmel SHA hw accelerator"
536	depends on ARCH_AT91 || COMPILE_TEST
537	select CRYPTO_HASH
538	help
539	  Some Atmel processors have SHA1/SHA224/SHA256/SHA384/SHA512
540	  hw accelerator.
541	  Select this if you want to use the Atmel module for
542	  SHA1/SHA224/SHA256/SHA384/SHA512 algorithms.
543
544	  To compile this driver as a module, choose M here: the module
545	  will be called atmel-sha.
546
547config CRYPTO_DEV_ATMEL_I2C
548	tristate
549
550config CRYPTO_DEV_ATMEL_ECC
551	tristate "Support for Microchip / Atmel ECC hw accelerator"
552	depends on I2C
553	select CRYPTO_DEV_ATMEL_I2C
554	select CRYPTO_ECDH
555	select CRC16
556	help
557	  Microhip / Atmel ECC hw accelerator.
558	  Select this if you want to use the Microchip / Atmel module for
559	  ECDH algorithm.
560
561	  To compile this driver as a module, choose M here: the module
562	  will be called atmel-ecc.
563
564config CRYPTO_DEV_ATMEL_SHA204A
565	tristate "Support for Microchip / Atmel SHA accelerator and RNG"
566	depends on I2C
567	select CRYPTO_DEV_ATMEL_I2C
568	select HW_RANDOM
569	select CRC16
570	help
571	  Microhip / Atmel SHA accelerator and RNG.
572	  Select this if you want to use the Microchip / Atmel SHA204A
573	  module as a random number generator. (Other functions of the
574	  chip are currently not exposed by this driver)
575
576	  To compile this driver as a module, choose M here: the module
577	  will be called atmel-sha204a.
578
579config CRYPTO_DEV_CCP
580	bool "Support for AMD Secure Processor"
581	depends on ((X86 && PCI) || (ARM64 && (OF_ADDRESS || ACPI))) && HAS_IOMEM
582	help
583	  The AMD Secure Processor provides support for the Cryptographic Coprocessor
584	  (CCP) and the Platform Security Processor (PSP) devices.
585
586if CRYPTO_DEV_CCP
587	source "drivers/crypto/ccp/Kconfig"
588endif
589
590config CRYPTO_DEV_MXS_DCP
591	tristate "Support for Freescale MXS DCP"
592	depends on (ARCH_MXS || ARCH_MXC)
593	select STMP_DEVICE
594	select CRYPTO_CBC
595	select CRYPTO_ECB
596	select CRYPTO_AES
597	select CRYPTO_SKCIPHER
598	select CRYPTO_HASH
599	help
600	  The Freescale i.MX23/i.MX28 has SHA1/SHA256 and AES128 CBC/ECB
601	  co-processor on the die.
602
603	  To compile this driver as a module, choose M here: the module
604	  will be called mxs-dcp.
605
606source "drivers/crypto/qat/Kconfig"
607source "drivers/crypto/cavium/cpt/Kconfig"
608source "drivers/crypto/cavium/nitrox/Kconfig"
609
610config CRYPTO_DEV_CAVIUM_ZIP
611	tristate "Cavium ZIP driver"
612	depends on PCI && 64BIT && (ARM64 || COMPILE_TEST)
613	---help---
614	  Select this option if you want to enable compression/decompression
615	  acceleration on Cavium's ARM based SoCs
616
617config CRYPTO_DEV_QCE
618	tristate "Qualcomm crypto engine accelerator"
619	depends on ARCH_QCOM || COMPILE_TEST
620	depends on HAS_IOMEM
621	help
622	  This driver supports Qualcomm crypto engine accelerator
623	  hardware. To compile this driver as a module, choose M here. The
624	  module will be called qcrypto.
625
626config CRYPTO_DEV_QCE_SKCIPHER
627	bool
628	depends on CRYPTO_DEV_QCE
629	select CRYPTO_AES
630	select CRYPTO_LIB_DES
631	select CRYPTO_ECB
632	select CRYPTO_CBC
633	select CRYPTO_XTS
634	select CRYPTO_CTR
635	select CRYPTO_SKCIPHER
636
637config CRYPTO_DEV_QCE_SHA
638	bool
639	depends on CRYPTO_DEV_QCE
640
641choice
642	prompt "Algorithms enabled for QCE acceleration"
643	default CRYPTO_DEV_QCE_ENABLE_ALL
644	depends on CRYPTO_DEV_QCE
645	help
646	  This option allows to choose whether to build support for all algorihtms
647	  (default), hashes-only, or skciphers-only.
648
649	  The QCE engine does not appear to scale as well as the CPU to handle
650	  multiple crypto requests.  While the ipq40xx chips have 4-core CPUs, the
651	  QCE handles only 2 requests in parallel.
652
653	  Ipsec throughput seems to improve when disabling either family of
654	  algorithms, sharing the load with the CPU.  Enabling skciphers-only
655	  appears to work best.
656
657	config CRYPTO_DEV_QCE_ENABLE_ALL
658		bool "All supported algorithms"
659		select CRYPTO_DEV_QCE_SKCIPHER
660		select CRYPTO_DEV_QCE_SHA
661		help
662		  Enable all supported algorithms:
663			- AES (CBC, CTR, ECB, XTS)
664			- 3DES (CBC, ECB)
665			- DES (CBC, ECB)
666			- SHA1, HMAC-SHA1
667			- SHA256, HMAC-SHA256
668
669	config CRYPTO_DEV_QCE_ENABLE_SKCIPHER
670		bool "Symmetric-key ciphers only"
671		select CRYPTO_DEV_QCE_SKCIPHER
672		help
673		  Enable symmetric-key ciphers only:
674			- AES (CBC, CTR, ECB, XTS)
675			- 3DES (ECB, CBC)
676			- DES (ECB, CBC)
677
678	config CRYPTO_DEV_QCE_ENABLE_SHA
679		bool "Hash/HMAC only"
680		select CRYPTO_DEV_QCE_SHA
681		help
682		  Enable hashes/HMAC algorithms only:
683			- SHA1, HMAC-SHA1
684			- SHA256, HMAC-SHA256
685
686endchoice
687
688config CRYPTO_DEV_QCE_SW_MAX_LEN
689	int "Default maximum request size to use software for AES"
690	depends on CRYPTO_DEV_QCE && CRYPTO_DEV_QCE_SKCIPHER
691	default 512
692	help
693	  This sets the default maximum request size to perform AES requests
694	  using software instead of the crypto engine.  It can be changed by
695	  setting the aes_sw_max_len parameter.
696
697	  Small blocks are processed faster in software than hardware.
698	  Considering the 256-bit ciphers, software is 2-3 times faster than
699	  qce at 256-bytes, 30% faster at 512, and about even at 768-bytes.
700	  With 128-bit keys, the break-even point would be around 1024-bytes.
701
702	  The default is set a little lower, to 512 bytes, to balance the
703	  cost in CPU usage.  The minimum recommended setting is 16-bytes
704	  (1 AES block), since AES-GCM will fail if you set it lower.
705	  Setting this to zero will send all requests to the hardware.
706
707	  Note that 192-bit keys are not supported by the hardware and are
708	  always processed by the software fallback, and all DES requests
709	  are done by the hardware.
710
711config CRYPTO_DEV_QCOM_RNG
712	tristate "Qualcomm Random Number Generator Driver"
713	depends on ARCH_QCOM || COMPILE_TEST
714	select CRYPTO_RNG
715	help
716	  This driver provides support for the Random Number
717	  Generator hardware found on Qualcomm SoCs.
718
719	  To compile this driver as a module, choose M here. The
720	  module will be called qcom-rng. If unsure, say N.
721
722config CRYPTO_DEV_VMX
723	bool "Support for VMX cryptographic acceleration instructions"
724	depends on PPC64 && VSX
725	help
726	  Support for VMX cryptographic acceleration instructions.
727
728source "drivers/crypto/vmx/Kconfig"
729
730config CRYPTO_DEV_IMGTEC_HASH
731	tristate "Imagination Technologies hardware hash accelerator"
732	depends on MIPS || COMPILE_TEST
733	select CRYPTO_MD5
734	select CRYPTO_SHA1
735	select CRYPTO_SHA256
736	select CRYPTO_HASH
737	help
738	  This driver interfaces with the Imagination Technologies
739	  hardware hash accelerator. Supporting MD5/SHA1/SHA224/SHA256
740	  hashing algorithms.
741
742config CRYPTO_DEV_ROCKCHIP
743	tristate "Rockchip's Cryptographic Engine driver"
744	depends on OF && ARCH_ROCKCHIP
745	select CRYPTO_AES
746	select CRYPTO_LIB_DES
747	select CRYPTO_MD5
748	select CRYPTO_SHA1
749	select CRYPTO_SHA256
750	select CRYPTO_HASH
751	select CRYPTO_SKCIPHER
752
753	help
754	  This driver interfaces with the hardware crypto accelerator.
755	  Supporting cbc/ecb chainmode, and aes/des/des3_ede cipher mode.
756
757config CRYPTO_DEV_MEDIATEK
758	tristate "MediaTek's EIP97 Cryptographic Engine driver"
759	depends on (ARM && ARCH_MEDIATEK) || COMPILE_TEST
760	select CRYPTO_AES
761	select CRYPTO_AEAD
762	select CRYPTO_SKCIPHER
763	select CRYPTO_CTR
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
869endif # CRYPTO_HW
870