summaryrefslogtreecommitdiff
path: root/drivers/crypto
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/crypto')
-rw-r--r--drivers/crypto/dwc-spacc/spacc_skcipher.c35
1 files changed, 19 insertions, 16 deletions
diff --git a/drivers/crypto/dwc-spacc/spacc_skcipher.c b/drivers/crypto/dwc-spacc/spacc_skcipher.c
index 8c698b75dd92..1ef7c665188f 100644
--- a/drivers/crypto/dwc-spacc/spacc_skcipher.c
+++ b/drivers/crypto/dwc-spacc/spacc_skcipher.c
@@ -408,40 +408,42 @@ static int spacc_cipher_process(struct skcipher_request *req, int enc_dec)
for (i = 0; i < 16; i++)
ivc1[i] = req->iv[i];
- /* 32-bit counter width */
- if (readl(device_h->regmap + SPACC_REG_VERSION_EXT_3) & (0x2)) {
+ /* 64-bit counter width */
+ if (readl(device_h->regmap + SPACC_REG_VERSION_EXT_3) & (0x3)) {
- for (i = 12; i < 16; i++) {
- num_iv <<= 8;
- num_iv |= ivc1[i];
+ for (i = 8; i < 16; i++) {
+ num_iv64 <<= 8;
+ num_iv64 |= ivc1[i];
}
- diff = SPACC_CTR_IV_MAX32 - num_iv;
+ diff64 = SPACC_CTR_IV_MAX64 - num_iv64;
- if (len > diff) {
+ if (len > diff64) {
name = salg->calg->cra_name;
ret = spacc_skcipher_fallback(name,
req, enc_dec);
return ret;
}
+ /* 32-bit counter width */
} else if (readl(device_h->regmap + SPACC_REG_VERSION_EXT_3)
- & (0x3)) { /* 64-bit counter width */
+ & (0x2)) {
- for (i = 8; i < 16; i++) {
- num_iv64 <<= 8;
- num_iv64 |= ivc1[i];
+ for (i = 12; i < 16; i++) {
+ num_iv <<= 8;
+ num_iv |= ivc1[i];
}
- diff64 = SPACC_CTR_IV_MAX64 - num_iv64;
+ diff = SPACC_CTR_IV_MAX32 - num_iv;
- if (len > diff64) {
+ if (len > diff) {
name = salg->calg->cra_name;
ret = spacc_skcipher_fallback(name,
req, enc_dec);
return ret;
}
+ /* 16-bit counter width */
} else if (readl(device_h->regmap + SPACC_REG_VERSION_EXT_3)
- & (0x1)) { /* 16-bit counter width */
+ & (0x1)) {
for (i = 14; i < 16; i++) {
num_iv <<= 8;
@@ -456,8 +458,9 @@ static int spacc_cipher_process(struct skcipher_request *req, int enc_dec)
req, enc_dec);
return ret;
}
- } else if (readl(device_h->regmap + SPACC_REG_VERSION_EXT_3)
- & (0x0)) { /* 8-bit counter width */
+ /* 8-bit counter width */
+ } else if ((readl(device_h->regmap + SPACC_REG_VERSION_EXT_3)
+ & 0x7) == 0) {
for (i = 15; i < 16; i++) {
num_iv <<= 8;