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