Merge tag 'linux_kselftest-fixes-6.12-rc2' of git://git.kernel.org/pub/scm/linux...
[linux-block.git] / drivers / crypto / Kconfig
1 # SPDX-License-Identifier: GPL-2.0-only
2
3 menuconfig 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
12 if CRYPTO_HW
13
14 source "drivers/crypto/allwinner/Kconfig"
15
16 config 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
28 config 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
41 config 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
55 config 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
67 config 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
78 config 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
102 config 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
118 config 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
134 config 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
155 config 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
169 config 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
182 config 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
199 config 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
211 config 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
220 config 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
230 config 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
237 source "drivers/crypto/caam/Kconfig"
238
239 config 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
258 config 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
268 config 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
276 config 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
290 config 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
298 config 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
305 if CRYPTO_DEV_OMAP
306
307 config 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
320 config 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
334 config 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
346 endif # CRYPTO_DEV_OMAP
347
348 config 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
359 config 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
374 config 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
385 config 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
399 config 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
408 if CRYPTO_DEV_NX
409         source "drivers/crypto/nx/Kconfig"
410 endif
411
412 config 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
422 config 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
438 config 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
451 config 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
464 config CRYPTO_DEV_ATMEL_I2C
465         tristate
466         select BITREVERSE
467
468 config 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
482 config 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
497 config 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
504 if CRYPTO_DEV_CCP
505         source "drivers/crypto/ccp/Kconfig"
506 endif
507
508 config 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
524 source "drivers/crypto/cavium/cpt/Kconfig"
525 source "drivers/crypto/cavium/nitrox/Kconfig"
526 source "drivers/crypto/marvell/Kconfig"
527 source "drivers/crypto/intel/Kconfig"
528
529 config 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
536 config 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
545 config 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
556 config CRYPTO_DEV_QCE_SHA
557         bool
558         depends on CRYPTO_DEV_QCE
559         select CRYPTO_SHA1
560         select CRYPTO_SHA256
561
562 config CRYPTO_DEV_QCE_AEAD
563         bool
564         depends on CRYPTO_DEV_QCE
565         select CRYPTO_AUTHENC
566         select CRYPTO_LIB_DES
567
568 choice
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))
622 endchoice
623
624 config 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
647 config 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
667 config 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
679 config 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
699 config 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
708 config 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
717 config 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
729 config 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
739 source "drivers/crypto/chelsio/Kconfig"
740
741 source "drivers/crypto/virtio/Kconfig"
742
743 config 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
759 source "drivers/crypto/stm32/Kconfig"
760
761 config 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
783 config 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
802 config 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
831 source "drivers/crypto/hisilicon/Kconfig"
832
833 source "drivers/crypto/amlogic/Kconfig"
834
835 config 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
852 source "drivers/crypto/aspeed/Kconfig"
853 source "drivers/crypto/starfive/Kconfig"
854
855 endif # CRYPTO_HW