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