OSDN Git Service

crypto: keembay - Add Keem Bay OCS HCU driver
authorDeclan Murphy <declan.murphy@intel.com>
Wed, 16 Dec 2020 11:46:36 +0000 (11:46 +0000)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sat, 2 Jan 2021 21:41:36 +0000 (08:41 +1100)
commit472b04444cd39e16ba54987b2e901a79cf175463
tree7a8ad9c520f567383524a66b1fbe596943492052
parent33ff64884c4e5ffcac1c4aa767e38bf4b3f443a0
crypto: keembay - Add Keem Bay OCS HCU driver

Add support for the Hashing Control Unit (HCU) included in the Offload
Crypto Subsystem (OCS) of the Intel Keem Bay SoC, thus enabling
hardware-accelerated hashing on the Keem Bay SoC for the following
algorithms:
- sha256
- sha384
- sha512
- sm3

The driver is composed of two files:

- 'ocs-hcu.c' which interacts with the hardware and abstracts it by
  providing an API following the usual paradigm used in hashing drivers
  / libraries (e.g., hash_init(), hash_update(), hash_final(), etc.).
  NOTE: this API can block and sleep, since completions are used to wait
  for the HW to complete the hashing.

- 'keembay-ocs-hcu-core.c' which exports the functionality provided by
  'ocs-hcu.c' as a ahash crypto driver. The crypto engine is used to
  provide asynchronous behavior. 'keembay-ocs-hcu-core.c' also takes
  care of the DMA mapping of the input sg list.

The driver passes crypto manager self-tests, including the extra tests
(CRYPTO_MANAGER_EXTRA_TESTS=y).

Signed-off-by: Declan Murphy <declan.murphy@intel.com>
Co-developed-by: Daniele Alessandrelli <daniele.alessandrelli@intel.com>
Signed-off-by: Daniele Alessandrelli <daniele.alessandrelli@intel.com>
Acked-by: Mark Gross <mgross@linux.intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/keembay/Kconfig
drivers/crypto/keembay/Makefile
drivers/crypto/keembay/keembay-ocs-hcu-core.c [new file with mode: 0644]
drivers/crypto/keembay/ocs-hcu.c [new file with mode: 0644]
drivers/crypto/keembay/ocs-hcu.h [new file with mode: 0644]