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