aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/crypto/qce/cipher.h
diff options
context:
space:
mode:
authorStanimir Varbanov <svarbanov@mm-sol.com>2014-06-25 12:28:57 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2014-07-03 09:40:27 -0400
commitec8f5d8f6f76b939f662d6e83041abecabef0a34 (patch)
tree507b8aff2cec7d3f5b2a4b1f94aa3da9a2d3fd04 /drivers/crypto/qce/cipher.h
parent002c77a48b479b094b834b02ef78be47ceac76fd (diff)
crypto: qce - Qualcomm crypto engine driver
The driver is separated by functional parts. The core part implements a platform driver probe and remove callbaks. The probe enables clocks, checks crypto version, initialize and request dma channels, create done tasklet and init crypto queue and finally register the algorithms into crypto core subsystem. - DMA and SG helper functions implement dmaengine and sg-list helper functions used by other parts of the crypto driver. - ablkcipher algorithms implementation of AES, DES and 3DES crypto API callbacks, the crypto register alg function, the async request handler and its dma done callback function. - SHA and HMAC transforms implementation and registration of ahash crypto type. It includes sha1, sha256, hmac(sha1) and hmac(sha256). - infrastructure to setup the crypto hw contains functions used to setup/prepare hardware registers for all algorithms supported by the crypto block. It also exports few helper functions needed by algorithms: - to check hardware status - to start crypto hardware - to translate data stream to big endian form Adds register addresses and bit/masks used by the driver as well. Signed-off-by: Stanimir Varbanov <svarbanov@mm-sol.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/qce/cipher.h')
-rw-r--r--drivers/crypto/qce/cipher.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/drivers/crypto/qce/cipher.h b/drivers/crypto/qce/cipher.h
new file mode 100644
index 000000000000..d5757cfcda2d
--- /dev/null
+++ b/drivers/crypto/qce/cipher.h
@@ -0,0 +1,68 @@
1/*
2 * Copyright (c) 2010-2014, The Linux Foundation. All rights reserved.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 and
6 * only version 2 as published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13
14#ifndef _CIPHER_H_
15#define _CIPHER_H_
16
17#include "common.h"
18#include "core.h"
19
20#define QCE_MAX_KEY_SIZE 64
21
22struct qce_cipher_ctx {
23 u8 enc_key[QCE_MAX_KEY_SIZE];
24 unsigned int enc_keylen;
25 struct crypto_ablkcipher *fallback;
26};
27
28/**
29 * struct qce_cipher_reqctx - holds private cipher objects per request
30 * @flags: operation flags
31 * @iv: pointer to the IV
32 * @ivsize: IV size
33 * @src_nents: source entries
34 * @dst_nents: destination entries
35 * @src_chained: is source chained
36 * @dst_chained: is destination chained
37 * @result_sg: scatterlist used for result buffer
38 * @dst_tbl: destination sg table
39 * @dst_sg: destination sg pointer table beginning
40 * @src_tbl: source sg table
41 * @src_sg: source sg pointer table beginning;
42 * @cryptlen: crypto length
43 */
44struct qce_cipher_reqctx {
45 unsigned long flags;
46 u8 *iv;
47 unsigned int ivsize;
48 int src_nents;
49 int dst_nents;
50 bool src_chained;
51 bool dst_chained;
52 struct scatterlist result_sg;
53 struct sg_table dst_tbl;
54 struct scatterlist *dst_sg;
55 struct sg_table src_tbl;
56 struct scatterlist *src_sg;
57 unsigned int cryptlen;
58};
59
60static inline struct qce_alg_template *to_cipher_tmpl(struct crypto_tfm *tfm)
61{
62 struct crypto_alg *alg = tfm->__crt_alg;
63 return container_of(alg, struct qce_alg_template, alg.crypto);
64}
65
66extern const struct qce_algo_ops ablkcipher_ops;
67
68#endif /* _CIPHER_H_ */