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