xref: /openbmc/linux/drivers/crypto/caam/Kconfig (revision 8d818c10)
1config CRYPTO_DEV_FSL_CAAM_COMMON
2	tristate
3
4config CRYPTO_DEV_FSL_CAAM
5	tristate "Freescale CAAM-Multicore platform driver backend"
6	depends on FSL_SOC || ARCH_MXC || ARCH_LAYERSCAPE
7	select SOC_BUS
8	select CRYPTO_DEV_FSL_CAAM_COMMON
9	help
10	  Enables the driver module for Freescale's Cryptographic Accelerator
11	  and Assurance Module (CAAM), also known as the SEC version 4 (SEC4).
12	  This module creates job ring devices, and configures h/w
13	  to operate as a DPAA component automatically, depending
14	  on h/w feature availability.
15
16	  To compile this driver as a module, choose M here: the module
17	  will be called caam.
18
19if CRYPTO_DEV_FSL_CAAM
20
21config CRYPTO_DEV_FSL_CAAM_DEBUG
22	bool "Enable debug output in CAAM driver"
23	help
24	  Selecting this will enable printing of various debug
25	  information in the CAAM driver.
26
27config CRYPTO_DEV_FSL_CAAM_JR
28	tristate "Freescale CAAM Job Ring driver backend"
29	default y
30	help
31	  Enables the driver module for Job Rings which are part of
32	  Freescale's Cryptographic Accelerator
33	  and Assurance Module (CAAM). This module adds a job ring operation
34	  interface.
35
36	  To compile this driver as a module, choose M here: the module
37	  will be called caam_jr.
38
39if CRYPTO_DEV_FSL_CAAM_JR
40
41config CRYPTO_DEV_FSL_CAAM_RINGSIZE
42	int "Job Ring size"
43	range 2 9
44	default "9"
45	help
46	  Select size of Job Rings as a power of 2, within the
47	  range 2-9 (ring size 4-512).
48	  Examples:
49		2 => 4
50		3 => 8
51		4 => 16
52		5 => 32
53		6 => 64
54		7 => 128
55		8 => 256
56		9 => 512
57
58config CRYPTO_DEV_FSL_CAAM_INTC
59	bool "Job Ring interrupt coalescing"
60	help
61	  Enable the Job Ring's interrupt coalescing feature.
62
63	  Note: the driver already provides adequate
64	  interrupt coalescing in software.
65
66config CRYPTO_DEV_FSL_CAAM_INTC_COUNT_THLD
67	int "Job Ring interrupt coalescing count threshold"
68	depends on CRYPTO_DEV_FSL_CAAM_INTC
69	range 1 255
70	default 255
71	help
72	  Select number of descriptor completions to queue before
73	  raising an interrupt, in the range 1-255. Note that a selection
74	  of 1 functionally defeats the coalescing feature, and a selection
75	  equal or greater than the job ring size will force timeouts.
76
77config CRYPTO_DEV_FSL_CAAM_INTC_TIME_THLD
78	int "Job Ring interrupt coalescing timer threshold"
79	depends on CRYPTO_DEV_FSL_CAAM_INTC
80	range 1 65535
81	default 2048
82	help
83	  Select number of bus clocks/64 to timeout in the case that one or
84	  more descriptor completions are queued without reaching the count
85	  threshold. Range is 1-65535.
86
87config CRYPTO_DEV_FSL_CAAM_CRYPTO_API
88	tristate "Register algorithm implementations with the Crypto API"
89	default y
90	select CRYPTO_AEAD
91	select CRYPTO_AUTHENC
92	select CRYPTO_BLKCIPHER
93	help
94	  Selecting this will offload crypto for users of the
95	  scatterlist crypto API (such as the linux native IPSec
96	  stack) to the SEC4 via job ring.
97
98	  To compile this as a module, choose M here: the module
99	  will be called caamalg.
100
101config CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI
102	tristate "Queue Interface as Crypto API backend"
103	depends on FSL_DPAA && NET
104	default y
105	select CRYPTO_AUTHENC
106	select CRYPTO_BLKCIPHER
107	help
108	  Selecting this will use CAAM Queue Interface (QI) for sending
109	  & receiving crypto jobs to/from CAAM. This gives better performance
110	  than job ring interface when the number of cores are more than the
111	  number of job rings assigned to the kernel. The number of portals
112	  assigned to the kernel should also be more than the number of
113	  job rings.
114
115	  To compile this as a module, choose M here: the module
116	  will be called caamalg_qi.
117
118config CRYPTO_DEV_FSL_CAAM_AHASH_API
119	tristate "Register hash algorithm implementations with Crypto API"
120	default y
121	select CRYPTO_HASH
122	help
123	  Selecting this will offload ahash for users of the
124	  scatterlist crypto API to the SEC4 via job ring.
125
126	  To compile this as a module, choose M here: the module
127	  will be called caamhash.
128
129config CRYPTO_DEV_FSL_CAAM_PKC_API
130        tristate "Register public key cryptography implementations with Crypto API"
131        default y
132        select CRYPTO_RSA
133        help
134          Selecting this will allow SEC Public key support for RSA.
135          Supported cryptographic primitives: encryption, decryption,
136          signature and verification.
137          To compile this as a module, choose M here: the module
138          will be called caam_pkc.
139
140config CRYPTO_DEV_FSL_CAAM_RNG_API
141	tristate "Register caam device for hwrng API"
142	default y
143	select CRYPTO_RNG
144	select HW_RANDOM
145	help
146	  Selecting this will register the SEC4 hardware rng to
147	  the hw_random API for suppying the kernel entropy pool.
148
149	  To compile this as a module, choose M here: the module
150	  will be called caamrng.
151
152endif # CRYPTO_DEV_FSL_CAAM_JR
153
154endif # CRYPTO_DEV_FSL_CAAM
155
156config CRYPTO_DEV_FSL_DPAA2_CAAM
157	tristate "QorIQ DPAA2 CAAM (DPSECI) driver"
158	depends on FSL_MC_DPIO
159	select CRYPTO_DEV_FSL_CAAM_COMMON
160	select CRYPTO_AUTHENC
161	select CRYPTO_AEAD
162	help
163	  CAAM driver for QorIQ Data Path Acceleration Architecture 2.
164	  It handles DPSECI DPAA2 objects that sit on the Management Complex
165	  (MC) fsl-mc bus.
166
167	  To compile this as a module, choose M here: the module
168	  will be called dpaa2_caam.
169
170config CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC
171	def_tristate (CRYPTO_DEV_FSL_CAAM_CRYPTO_API || \
172		      CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI || \
173		      CRYPTO_DEV_FSL_DPAA2_CAAM)
174