From: Naveen Krishna Ch <ch.naveen@samsung.com>
To: linux-crypto@vger.kernel.org, linux-samsung-soc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, vzapolskiy@gmail.com,
herbert@gondor.apana.org.au, naveenkrishna.ch@gmail.com,
cpgs@samsung.com, "David S. Miller" <davem@davemloft.net>
Subject: [PATCH 3/5] crypto:s5p-sss: Add support for SSS module on Exynos5
Date: Tue, 07 Jan 2014 17:21:47 +0530 [thread overview]
Message-ID: <1389095509-14357-4-git-send-email-ch.naveen@samsung.com> (raw)
In-Reply-To: <1389095509-14357-1-git-send-email-ch.naveen@samsung.com>
The differences between SSS modules on S5PV210 and Exynos5
(AFA the driver supports)
1. AES register are at an offset of 0x200 on Exynos5
2. hash interrupt is no longer needed on Exynos5
This patch adds code needed to address the above changes.
Signed-off-by: Naveen Krishna Ch <ch.naveen@samsung.com>
CC: Herbert Xu <herbert@gondor.apana.org.au>
CC: David S. Miller <davem@davemloft.net>
CC: Vladimir Zapolskiy <vzapolskiy@gmail.com>
TO: <linux-crypto@vger.kernel.org>
CC: <linux-samsung-soc@vger.kernel.org>
---
drivers/crypto/s5p-sss.c | 59 ++++++++++++++++++++++++++++++++--------------
1 file changed, 41 insertions(+), 18 deletions(-)
diff --git a/drivers/crypto/s5p-sss.c b/drivers/crypto/s5p-sss.c
index dcb9fc1..a11cd0e 100644
--- a/drivers/crypto/s5p-sss.c
+++ b/drivers/crypto/s5p-sss.c
@@ -106,7 +106,7 @@
#define SSS_REG_FCPKDMAO 0x005C
/* AES registers */
-#define SSS_REG_AES_CONTROL 0x4000
+#define SSS_REG_AES_CONTROL(dev) ((dev)->aes_offset + 0x00)
#define SSS_AES_BYTESWAP_DI _BIT(11)
#define SSS_AES_BYTESWAP_DO _BIT(10)
#define SSS_AES_BYTESWAP_IV _BIT(9)
@@ -122,21 +122,26 @@
#define SSS_AES_CHAIN_MODE_CTR _SBF(1, 0x02)
#define SSS_AES_MODE_DECRYPT _BIT(0)
-#define SSS_REG_AES_STATUS 0x4004
+#define SSS_REG_AES_STATUS(dev) ((dev)->aes_offset + 0x04)
#define SSS_AES_BUSY _BIT(2)
#define SSS_AES_INPUT_READY _BIT(1)
#define SSS_AES_OUTPUT_READY _BIT(0)
-#define SSS_REG_AES_IN_DATA(s) (0x4010 + (s << 2))
-#define SSS_REG_AES_OUT_DATA(s) (0x4020 + (s << 2))
-#define SSS_REG_AES_IV_DATA(s) (0x4030 + (s << 2))
-#define SSS_REG_AES_CNT_DATA(s) (0x4040 + (s << 2))
-#define SSS_REG_AES_KEY_DATA(s) (0x4080 + (s << 2))
+#define SSS_REG_AES_IN_DATA(dev, s) ((dev)->aes_offset + 0x10 + (s << 2))
+#define SSS_REG_AES_OUT_DATA(dev, s) ((dev)->aes_offset + 0x20 + (s << 2))
+#define SSS_REG_AES_IV_DATA(dev, s) ((dev)->aes_offset + 0x30 + (s << 2))
+#define SSS_REG_AES_CNT_DATA(dev, s) ((dev)->aes_offset + 0x40 + (s << 2))
+#define SSS_REG_AES_KEY_DATA(dev, s) ((dev)->aes_offset + 0x80 + (s << 2))
#define SSS_REG(dev, reg) ((dev)->ioaddr + (SSS_REG_##reg))
#define SSS_READ(dev, reg) __raw_readl(SSS_REG(dev, reg))
#define SSS_WRITE(dev, reg, val) __raw_writel((val), SSS_REG(dev, reg))
+#define SSS_AES_REG(dev, reg) ((dev)->ioaddr + (SSS_REG_##reg(dev)))
+#define SSS_AES_READ(dev, reg) __raw_readl(SSS_AES_REG(dev, reg))
+#define SSS_AES_WRITE(dev, reg, val) __raw_writel((val), \
+ SSS_AES_REG(dev, reg))
+
/* HW engine modes */
#define FLAGS_AES_DECRYPT _BIT(0)
#define FLAGS_AES_MODE_MASK _SBF(1, 0x03)
@@ -177,6 +182,13 @@ struct s5p_aes_dev {
/* To support SSS versions across Samsung SoCs */
unsigned int version;
+
+ /*
+ * Register banks corresponding to various algorithms
+ * (Ex: AES, TDES, HASH, TRNG, PKA etc.)
+ * are at an offsets from the base (depending on SSS verion)
+ */
+ unsigned int aes_offset;
};
static struct s5p_aes_dev *s5p_dev;
@@ -358,14 +370,14 @@ static void s5p_set_aes(struct s5p_aes_dev *dev,
{
void __iomem *keystart;
- memcpy(dev->ioaddr + SSS_REG_AES_IV_DATA(0), iv, 0x10);
+ memcpy(dev->ioaddr + SSS_REG_AES_IV_DATA(dev, 0), iv, 0x10);
if (keylen == AES_KEYSIZE_256)
- keystart = dev->ioaddr + SSS_REG_AES_KEY_DATA(0);
+ keystart = dev->ioaddr + SSS_REG_AES_KEY_DATA(dev, 0);
else if (keylen == AES_KEYSIZE_192)
- keystart = dev->ioaddr + SSS_REG_AES_KEY_DATA(2);
+ keystart = dev->ioaddr + SSS_REG_AES_KEY_DATA(dev, 2);
else
- keystart = dev->ioaddr + SSS_REG_AES_KEY_DATA(4);
+ keystart = dev->ioaddr + SSS_REG_AES_KEY_DATA(dev, 4);
memcpy(keystart, key, keylen);
}
@@ -415,7 +427,7 @@ static void s5p_aes_crypt_start(struct s5p_aes_dev *dev, unsigned long mode)
if (err)
goto outdata_error;
- SSS_WRITE(dev, AES_CONTROL, aes_control);
+ SSS_AES_WRITE(dev, AES_CONTROL, aes_control);
s5p_set_aes(dev, dev->ctx->aes_key, req->info, dev->ctx->keylen);
s5p_set_dma_indata(dev, req->src);
@@ -618,6 +630,11 @@ static int s5p_aes_probe(struct platform_device *pdev)
pdata->version = find_s5p_sss_version(pdev);
+ if (pdata->version == SSS_VER_5)
+ pdata->aes_offset = 0x200;
+ else
+ pdata->aes_offset = 0x4000;
+
pdata->clk = devm_clk_get(dev, "secss");
if (IS_ERR(pdata->clk)) {
dev_err(dev, "failed to find secss clock source\n");
@@ -643,17 +660,23 @@ static int s5p_aes_probe(struct platform_device *pdev)
goto err_irq;
}
+ /*
+ * SSS module present in Exynos5 Series SoCs
+ * does not use hash interrupt
+ */
pdata->irq_hash = platform_get_irq(pdev, 1);
- if (pdata->irq_hash < 0) {
+ if ((pdata->version == SSS_VER_4) && (pdata->irq_hash < 0)) {
err = pdata->irq_hash;
dev_warn(dev, "hash interrupt is not available.\n");
goto err_irq;
}
- err = devm_request_irq(dev, pdata->irq_hash, s5p_aes_interrupt,
- IRQF_SHARED, pdev->name, pdev);
- if (err < 0) {
- dev_warn(dev, "hash interrupt is not available.\n");
- goto err_irq;
+ if (pdata->version == SSS_VER_4) {
+ err = devm_request_irq(dev, pdata->irq_hash, s5p_aes_interrupt,
+ IRQF_SHARED, pdev->name, pdev);
+ if (err < 0) {
+ dev_warn(dev, "hash interrupt is not available.\n");
+ goto err_irq;
+ }
}
pdata->dev = dev;
--
1.7.9.5
next prev parent reply other threads:[~2014-01-07 11:52 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-07 11:51 [PATCH 0/5] crypto:s5p-sss: Add DT and Exynos5 support Naveen Krishna Ch
2014-01-07 11:51 ` [PATCH 1/5] crypto:s5p-sss: Use platform_get_irq() instead of _byname() Naveen Krishna Ch
2014-01-08 0:14 ` Tomasz Figa
2014-01-09 4:58 ` [PATCH 1/6 v2] " Naveen Krishna Chatradhi
2014-01-10 11:41 ` [PATCH 1/8 v3] " Naveen Krishna Chatradhi
2014-01-10 15:15 ` Tomasz Figa
2014-01-15 9:14 ` [PATCH 1/8 v4] " Naveen Krishna Chatradhi
2014-01-23 10:19 ` Naveen Krishna Ch
2014-01-29 9:19 ` [PATCH 1/9 v5] " Naveen Krishna Chatradhi
2014-02-07 5:21 ` [PATCH 1/9 v6] " Naveen Krishna Chatradhi
2014-01-07 11:51 ` [PATCH 2/5] crypto:s5p-sss: Add device tree and Exynos5 support Naveen Krishna Ch
2014-01-08 0:25 ` Tomasz Figa
2014-01-09 4:59 ` [PATCH 2/6 v2] crypto:s5p-sss: Add device tree support Naveen Krishna Chatradhi
2014-01-09 14:14 ` Tomasz Figa
2014-01-10 6:07 ` Naveen Krishna Ch
2014-01-10 6:20 ` Sachin Kamat
2014-01-10 13:44 ` Tomasz Figa
2014-01-10 11:42 ` [PATCH 2/8 v3] " Naveen Krishna Chatradhi
2014-01-15 9:14 ` [PATCH 2/8 v4] " Naveen Krishna Chatradhi
2014-01-23 10:20 ` Naveen Krishna Ch
2014-01-23 10:28 ` Sylwester Nawrocki
2014-01-23 17:41 ` Mark Rutland
2014-01-23 17:47 ` Sylwester Nawrocki
2014-01-23 17:59 ` Mark Rutland
2014-01-29 9:20 ` [PATCH 2/9 v5] " Naveen Krishna Chatradhi
2014-02-06 14:36 ` Tomasz Figa
2014-02-07 5:21 ` [PATCH 2/9 v6] " Naveen Krishna Chatradhi
2014-01-07 11:51 ` Naveen Krishna Ch [this message]
2014-01-08 0:29 ` [PATCH 3/5] crypto:s5p-sss: Add support for SSS module on Exynos5 Tomasz Figa
2014-01-09 4:59 ` [PATCH 3/6 v2] crypto:s5p-sss: Add support for SSS module on Exynos Naveen Krishna Chatradhi
2014-01-09 9:32 ` Sachin Kamat
2014-01-15 9:15 ` [PATCH 3/8 v4] " Naveen Krishna Chatradhi
2014-01-24 14:09 ` Tomasz Figa
2014-01-29 9:21 ` [PATCH 3/9 v5] " Naveen Krishna Chatradhi
2014-02-06 14:39 ` Tomasz Figa
2014-01-10 11:42 ` [PATCH 3/8 v3] " Naveen Krishna Chatradhi
2014-01-10 15:44 ` Tomasz Figa
2014-01-13 21:06 ` Vladimir Zapolskiy
2014-01-14 6:16 ` Naveen Krishna Ch
2014-01-07 11:51 ` [PATCH 4/5] crypto:s5p-sss: Exynos5 SoCs too can select SSS driver Naveen Krishna Ch
2014-01-08 0:30 ` Tomasz Figa
2014-01-09 4:27 ` Naveen Krishna Ch
2014-01-09 4:59 ` [PATCH 4/6 v2] crypto:s5p-sss: Kconfig: Let Exynos SoCs " Naveen Krishna Chatradhi
2014-01-09 9:29 ` Sachin Kamat
2014-01-15 9:15 ` [PATCH 4/8 v4] " Naveen Krishna Chatradhi
2014-01-29 9:22 ` [PATCH 4/9 v5] " Naveen Krishna Chatradhi
2014-02-06 14:41 ` Tomasz Figa
2014-01-10 11:43 ` [PATCH 4/8 v3] " Naveen Krishna Chatradhi
2014-01-10 15:47 ` Tomasz Figa
2014-02-07 5:23 ` [PATCH 4/9 v6] " Naveen Krishna Chatradhi
2014-01-07 11:51 ` [PATCH 5/5] ARM: exynos5420: add dt node for sss module Naveen Krishna Ch
2014-01-08 0:32 ` Tomasz Figa
2014-01-09 4:26 ` Naveen Krishna Ch
2014-01-09 5:00 ` [PATCH 5/6 v2] ARM: dts: " Naveen Krishna Chatradhi
2014-01-10 11:44 ` [PATCH 6/8 v3] ARM: dts: exynos5250/5420: " Naveen Krishna Chatradhi
2014-01-10 16:00 ` Tomasz Figa
2014-01-10 11:43 ` [PATCH 5/8 v3] clk:exynos-5250: Add gate clock for SSS module Naveen Krishna Chatradhi
2014-01-10 15:58 ` Tomasz Figa
2014-01-15 9:05 ` Naveen Krishna Ch
2014-01-15 9:16 ` [PATCH 5/8 v4] clk: samsung: exynos5250/5420: " Naveen Krishna Chatradhi
2014-01-23 10:20 ` Naveen Krishna Ch
2014-01-24 15:26 ` Tomasz Figa
2014-01-29 9:24 ` [PATCH 5/9 v5] clk: samsung " Naveen Krishna Chatradhi
2014-02-06 14:43 ` Tomasz Figa
2014-02-07 5:24 ` [PATCH 5/9 v6] " Naveen Krishna Chatradhi
2014-02-07 5:24 ` [PATCH 6/9 v6] ARM: dts: exynos5250/5420: add dt node for sss module Naveen Krishna Chatradhi
2014-02-13 23:28 ` Kukjin Kim
2014-02-13 23:32 ` Kukjin Kim
2014-02-14 4:13 ` Naveen Krishna Ch
2014-02-14 10:54 ` Tomasz Figa
2014-02-17 8:56 ` Naveen Krishna Ch
2014-01-10 11:41 ` [PATCH 0/8 v3] crypto:s5p-sss: Add DT and Exynos support Naveen Krishna Chatradhi
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=1389095509-14357-4-git-send-email-ch.naveen@samsung.com \
--to=ch.naveen@samsung.com \
--cc=cpgs@samsung.com \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=naveenkrishna.ch@gmail.com \
--cc=vzapolskiy@gmail.com \
/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
all inboxes | Powered by JetHome®