From: Andrey Smirnov <andrew.smirnov@gmail.com>
To: linux-crypto@vger.kernel.org
Cc: "Andrey Smirnov" <andrew.smirnov@gmail.com>,
"Chris Spencer" <christopher.spencer@sea.co.uk>,
"Cory Tusar" <cory.tusar@zii.aero>,
"Chris Healy" <cphealy@gmail.com>,
"Lucas Stach" <l.stach@pengutronix.de>,
"Horia Geantă" <horia.geanta@nxp.com>,
"Aymen Sghaier" <aymen.sghaier@nxp.com>,
"Leonard Crestez" <leonard.crestez@nxp.com>,
linux-kernel@vger.kernel.org
Subject: [PATCH v4 10/16] crypto: caam - make CAAM_PTR_SZ dynamic
Date: Wed, 3 Jul 2019 01:13:21 -0700 [thread overview]
Message-ID: <20190703081327.17505-11-andrew.smirnov@gmail.com> (raw)
In-Reply-To: <20190703081327.17505-1-andrew.smirnov@gmail.com>
In order to be able to configure CAAM pointer size at run-time, which
needed to support i.MX8MQ, which is 64-bit SoC with 32-bit pointer
size, convert CAAM_PTR_SZ to refer to a global variable of the same
name ("caam_ptr_sz") and adjust the rest of the code accordingly. No
functional change intended.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Cc: Chris Spencer <christopher.spencer@sea.co.uk>
Cc: Cory Tusar <cory.tusar@zii.aero>
Cc: Chris Healy <cphealy@gmail.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Horia Geantă <horia.geanta@nxp.com>
Cc: Aymen Sghaier <aymen.sghaier@nxp.com>
Cc: Leonard Crestez <leonard.crestez@nxp.com>
Cc: linux-crypto@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
drivers/crypto/caam/caamalg.c | 2 +-
drivers/crypto/caam/caamhash.c | 2 +-
drivers/crypto/caam/caamrng.c | 2 +-
drivers/crypto/caam/ctrl.c | 2 ++
drivers/crypto/caam/desc_constr.h | 10 ++++++++--
drivers/crypto/caam/error.c | 3 +++
6 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/drivers/crypto/caam/caamalg.c b/drivers/crypto/caam/caamalg.c
index 4b03c967009b..7f13ccc1e603 100644
--- a/drivers/crypto/caam/caamalg.c
+++ b/drivers/crypto/caam/caamalg.c
@@ -74,7 +74,7 @@
#define CHACHAPOLY_DESC_JOB_IO_LEN (AEAD_DESC_JOB_IO_LEN + CAAM_CMD_SZ * 6)
-#define DESC_MAX_USED_BYTES (CAAM_DESC_BYTES_MAX - DESC_JOB_IO_LEN)
+#define DESC_MAX_USED_BYTES (CAAM_DESC_BYTES_MAX - DESC_JOB_IO_LEN_MIN)
#define DESC_MAX_USED_LEN (DESC_MAX_USED_BYTES / CAAM_CMD_SZ)
struct caam_alg_entry {
diff --git a/drivers/crypto/caam/caamhash.c b/drivers/crypto/caam/caamhash.c
index a87526f62737..4bfec53ccb8e 100644
--- a/drivers/crypto/caam/caamhash.c
+++ b/drivers/crypto/caam/caamhash.c
@@ -538,7 +538,7 @@ struct ahash_edesc {
dma_addr_t sec4_sg_dma;
int src_nents;
int sec4_sg_bytes;
- u32 hw_desc[DESC_JOB_IO_LEN / sizeof(u32)] ____cacheline_aligned;
+ u32 hw_desc[DESC_JOB_IO_LEN_MAX / sizeof(u32)] ____cacheline_aligned;
struct sec4_sg_entry sec4_sg[0];
};
diff --git a/drivers/crypto/caam/caamrng.c b/drivers/crypto/caam/caamrng.c
index 561bcb535184..511f0b44e258 100644
--- a/drivers/crypto/caam/caamrng.c
+++ b/drivers/crypto/caam/caamrng.c
@@ -53,7 +53,7 @@
L1_CACHE_BYTES)
/* length of descriptors */
-#define DESC_JOB_O_LEN (CAAM_CMD_SZ * 2 + CAAM_PTR_SZ * 2)
+#define DESC_JOB_O_LEN (CAAM_CMD_SZ * 2 + CAAM_PTR_SZ_MAX * 2)
#define DESC_RNG_LEN (3 * CAAM_CMD_SZ)
/* Buffer, its dma address and lock */
diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c
index 908d3ecf6d1c..42692a2bc2f3 100644
--- a/drivers/crypto/caam/ctrl.c
+++ b/drivers/crypto/caam/ctrl.c
@@ -605,6 +605,8 @@ static int caam_probe(struct platform_device *pdev)
}
caam_imx = (bool)imx_soc_match;
+ caam_ptr_sz = sizeof(dma_addr_t);
+
/* Get configuration properties from device tree */
/* First, get register page */
ctrl = of_iomap(nprop, 0);
diff --git a/drivers/crypto/caam/desc_constr.h b/drivers/crypto/caam/desc_constr.h
index 5988a26a2441..3a83a3332ba9 100644
--- a/drivers/crypto/caam/desc_constr.h
+++ b/drivers/crypto/caam/desc_constr.h
@@ -14,9 +14,14 @@
#define IMMEDIATE (1 << 23)
#define CAAM_CMD_SZ sizeof(u32)
-#define CAAM_PTR_SZ sizeof(dma_addr_t)
+#define CAAM_PTR_SZ caam_ptr_sz
+#define CAAM_PTR_SZ_MAX sizeof(dma_addr_t)
+#define CAAM_PTR_SZ_MIN sizeof(u32)
#define CAAM_DESC_BYTES_MAX (CAAM_CMD_SZ * MAX_CAAM_DESCSIZE)
-#define DESC_JOB_IO_LEN (CAAM_CMD_SZ * 5 + CAAM_PTR_SZ * 3)
+#define __DESC_JOB_IO_LEN(n) (CAAM_CMD_SZ * 5 + (n) * 3)
+#define DESC_JOB_IO_LEN __DESC_JOB_IO_LEN(CAAM_PTR_SZ)
+#define DESC_JOB_IO_LEN_MAX __DESC_JOB_IO_LEN(CAAM_PTR_SZ_MAX)
+#define DESC_JOB_IO_LEN_MIN __DESC_JOB_IO_LEN(CAAM_PTR_SZ_MIN)
#ifdef DEBUG
#define PRINT_POS do { printk(KERN_DEBUG "%02d: %s\n", desc_len(desc),\
@@ -37,6 +42,7 @@
(LDOFF_ENABLE_AUTO_NFIFO << LDST_OFFSET_SHIFT))
extern bool caam_little_end;
+extern size_t caam_ptr_sz;
/*
* HW fetches 4 S/G table entries at a time, irrespective of how many entries
diff --git a/drivers/crypto/caam/error.c b/drivers/crypto/caam/error.c
index 4f0d45865aa2..885cd364a01d 100644
--- a/drivers/crypto/caam/error.c
+++ b/drivers/crypto/caam/error.c
@@ -56,6 +56,9 @@ EXPORT_SYMBOL(caam_little_end);
bool caam_imx;
EXPORT_SYMBOL(caam_imx);
+size_t caam_ptr_sz;
+EXPORT_SYMBOL(caam_ptr_sz);
+
static const struct {
u8 value;
const char *error_text;
--
2.21.0
next prev parent reply other threads:[~2019-07-03 8:14 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-03 8:13 [PATCH v4 00/16] crypto: caam - Add i.MX8MQ support Andrey Smirnov
2019-07-03 8:13 ` [PATCH v4 01/16] crypto: caam - move DMA mask selection into a function Andrey Smirnov
2019-07-03 8:13 ` [PATCH v4 02/16] crypto: caam - simplify clock initialization Andrey Smirnov
2019-07-03 13:54 ` Leonard Crestez
2019-07-04 15:43 ` Iuliana Prodan
2019-07-15 18:14 ` Andrey Smirnov
2019-07-03 8:13 ` [PATCH v4 03/16] crypto: caam - move tasklet_init() call down Andrey Smirnov
2019-07-03 13:51 ` Leonard Crestez
2019-07-03 17:14 ` Andrey Smirnov
2019-07-03 23:45 ` Leonard Crestez
2019-07-05 10:33 ` Horia Geanta
2019-07-03 8:13 ` [PATCH v4 04/16] crypto: caam - use deveres to allocate 'entinfo' Andrey Smirnov
2019-07-03 8:13 ` [PATCH v4 05/16] crypto: caam - use devres to allocate 'outring' Andrey Smirnov
2019-07-04 9:54 ` Horia Geanta
2019-07-03 8:13 ` [PATCH v4 06/16] crypto: caam - use devres to allocate 'inpring' Andrey Smirnov
2019-07-03 8:13 ` [PATCH v4 07/16] crytpo: caam - make use of iowrite64*_hi_lo in wr_reg64 Andrey Smirnov
2019-07-03 8:13 ` [PATCH v4 08/16] crypto: caam - use ioread64*_hi_lo in rd_reg64 Andrey Smirnov
2019-07-03 8:13 ` [PATCH v4 09/16] crypto: caam - drop 64-bit only wr/rd_reg64() Andrey Smirnov
2019-07-03 8:13 ` Andrey Smirnov [this message]
2019-07-03 8:13 ` [PATCH v4 11/16] crypto: caam - move cpu_to_caam_dma() selection to runtime Andrey Smirnov
2019-07-03 8:13 ` [PATCH v4 12/16] crypto: caam - drop explicit usage of struct jr_outentry Andrey Smirnov
2019-07-03 8:13 ` [PATCH v4 13/16] crypto: caam - don't hardcode inpentry size Andrey Smirnov
2019-07-03 8:13 ` [PATCH v4 14/16] crypto: caam - force DMA address to 32-bit on 64-bit i.MX SoCs Andrey Smirnov
2019-07-03 8:13 ` [PATCH v4 15/16] crypto: caam - always select job ring via RSR on i.MX8MQ Andrey Smirnov
2019-07-03 8:13 ` [PATCH v4 16/16] crypto: caam - add clock entry for i.MX8MQ Andrey Smirnov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190703081327.17505-11-andrew.smirnov@gmail.com \
--to=andrew.smirnov@gmail.com \
--cc=aymen.sghaier@nxp.com \
--cc=christopher.spencer@sea.co.uk \
--cc=cory.tusar@zii.aero \
--cc=cphealy@gmail.com \
--cc=horia.geanta@nxp.com \
--cc=l.stach@pengutronix.de \
--cc=leonard.crestez@nxp.com \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).