mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-09-06 01:22:20 +00:00
160 lines
6.6 KiB
Diff
160 lines
6.6 KiB
Diff
From 64551bccab9b5b933757f6256b58f9ca0544f004 Mon Sep 17 00:00:00 2001
|
|
From: Zhen Kong <zkong@codeaurora.org>
|
|
Date: Wed, 9 Nov 2016 16:25:24 -0800
|
|
Subject: msm: crypto: set CLR_CNTXT bit for crypto operations
|
|
|
|
HLOS Crypto driver needs to set CLR_CNTXT bit for operations with
|
|
legacy software key registers
|
|
|
|
Change-Id: Iff482f726d106e99a4006f7077a171da3c7ca9c3
|
|
Signed-off-by: Zhen Kong <zkong@codeaurora.org>
|
|
---
|
|
drivers/crypto/msm/qce50.c | 47 +++++++++++++++++++++++++---------------------
|
|
1 file changed, 26 insertions(+), 21 deletions(-)
|
|
|
|
diff --git a/drivers/crypto/msm/qce50.c b/drivers/crypto/msm/qce50.c
|
|
index 3562de7..a8521fd 100644
|
|
--- a/drivers/crypto/msm/qce50.c
|
|
+++ b/drivers/crypto/msm/qce50.c
|
|
@@ -1347,7 +1347,8 @@ go_proc:
|
|
CRYPTO_CONFIG_REG));
|
|
/* issue go to crypto */
|
|
if (use_hw_key == false) {
|
|
- QCE_WRITE_REG(((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP)),
|
|
+ QCE_WRITE_REG(((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP) |
|
|
+ (1 << CRYPTO_CLR_CNTXT)),
|
|
pce_dev->iobase + CRYPTO_GOPROC_REG);
|
|
} else {
|
|
QCE_WRITE_REG(((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP)),
|
|
@@ -1528,7 +1529,8 @@ static int _ce_setup_aead_direct(struct qce_device *pce_dev,
|
|
|
|
CRYPTO_CONFIG_REG));
|
|
/* issue go to crypto */
|
|
- QCE_WRITE_REG(((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP)),
|
|
+ QCE_WRITE_REG(((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP) |
|
|
+ (1 << CRYPTO_CLR_CNTXT)),
|
|
pce_dev->iobase + CRYPTO_GOPROC_REG);
|
|
/*
|
|
* Ensure previous instructions (setting the GO register)
|
|
@@ -1847,7 +1849,8 @@ static int _ce_setup_cipher_direct(struct qce_device *pce_dev,
|
|
CRYPTO_CONFIG_REG));
|
|
/* issue go to crypto */
|
|
if (use_hw_key == false) {
|
|
- QCE_WRITE_REG(((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP)),
|
|
+ QCE_WRITE_REG(((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP) |
|
|
+ (1 << CRYPTO_CLR_CNTXT)),
|
|
pce_dev->iobase + CRYPTO_GOPROC_REG);
|
|
} else {
|
|
QCE_WRITE_REG(((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP)),
|
|
@@ -1935,7 +1938,8 @@ static int _ce_f9_setup_direct(struct qce_device *pce_dev,
|
|
QCE_WRITE_REG(pce_dev->reg.crypto_cfg_le, (pce_dev->iobase +
|
|
CRYPTO_CONFIG_REG));
|
|
/* write go */
|
|
- QCE_WRITE_REG(((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP)),
|
|
+ QCE_WRITE_REG(((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP) |
|
|
+ (1 << CRYPTO_CLR_CNTXT)),
|
|
pce_dev->iobase + CRYPTO_GOPROC_REG);
|
|
/*
|
|
* Ensure previous instructions (setting the GO register)
|
|
@@ -2012,7 +2016,8 @@ static int _ce_f8_setup_direct(struct qce_device *pce_dev,
|
|
QCE_WRITE_REG(pce_dev->reg.crypto_cfg_le, (pce_dev->iobase +
|
|
CRYPTO_CONFIG_REG));
|
|
/* write go */
|
|
- QCE_WRITE_REG(((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP)),
|
|
+ QCE_WRITE_REG(((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP) |
|
|
+ (1 << CRYPTO_CLR_CNTXT)),
|
|
pce_dev->iobase + CRYPTO_GOPROC_REG);
|
|
/*
|
|
* Ensure previous instructions (setting the GO register)
|
|
@@ -3323,8 +3328,8 @@ static int _setup_cipher_aes_cmdlistptrs(struct qce_device *pdev, int cri_index,
|
|
pdev->reg.crypto_cfg_le, NULL);
|
|
|
|
qce_add_cmd_element(pdev, &ce_vaddr, CRYPTO_GOPROC_REG,
|
|
- ((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP)),
|
|
- &pcl_info->go_proc);
|
|
+ ((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP) |
|
|
+ (1 << CRYPTO_CLR_CNTXT)), &pcl_info->go_proc);
|
|
|
|
pcl_info->size = (uintptr_t)ce_vaddr - (uintptr_t)ce_vaddr_start;
|
|
*pvaddr = (unsigned char *) ce_vaddr;
|
|
@@ -3437,8 +3442,8 @@ static int _setup_cipher_des_cmdlistptrs(struct qce_device *pdev, int cri_index,
|
|
pdev->reg.crypto_cfg_le, NULL);
|
|
|
|
qce_add_cmd_element(pdev, &ce_vaddr, CRYPTO_GOPROC_REG,
|
|
- ((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP)),
|
|
- &pcl_info->go_proc);
|
|
+ ((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP) |
|
|
+ (1 << CRYPTO_CLR_CNTXT)), &pcl_info->go_proc);
|
|
|
|
pcl_info->size = (uintptr_t)ce_vaddr - (uintptr_t)ce_vaddr_start;
|
|
*pvaddr = (unsigned char *) ce_vaddr;
|
|
@@ -3481,8 +3486,8 @@ static int _setup_cipher_null_cmdlistptrs(struct qce_device *pdev,
|
|
NULL);
|
|
|
|
qce_add_cmd_element(pdev, &ce_vaddr, CRYPTO_GOPROC_REG,
|
|
- ((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP)),
|
|
- &pcl_info->go_proc);
|
|
+ ((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP) |
|
|
+ (1 << CRYPTO_CLR_CNTXT)), &pcl_info->go_proc);
|
|
|
|
pcl_info->size = (uintptr_t)ce_vaddr - (uintptr_t)ce_vaddr_start;
|
|
*pvaddr = (unsigned char *) ce_vaddr;
|
|
@@ -3659,8 +3664,8 @@ static int _setup_auth_cmdlistptrs(struct qce_device *pdev, int cri_index,
|
|
pdev->reg.crypto_cfg_le, NULL);
|
|
|
|
qce_add_cmd_element(pdev, &ce_vaddr, CRYPTO_GOPROC_REG,
|
|
- ((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP)),
|
|
- &pcl_info->go_proc);
|
|
+ ((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP) |
|
|
+ (1 << CRYPTO_CLR_CNTXT)), &pcl_info->go_proc);
|
|
|
|
pcl_info->size = (uintptr_t)ce_vaddr - (uintptr_t)ce_vaddr_start;
|
|
*pvaddr = (unsigned char *) ce_vaddr;
|
|
@@ -3876,8 +3881,8 @@ static int _setup_aead_cmdlistptrs(struct qce_device *pdev,
|
|
pdev->reg.crypto_cfg_le, NULL);
|
|
|
|
qce_add_cmd_element(pdev, &ce_vaddr, CRYPTO_GOPROC_REG,
|
|
- ((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP)),
|
|
- &pcl_info->go_proc);
|
|
+ ((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP) |
|
|
+ (1 << CRYPTO_CLR_CNTXT)), &pcl_info->go_proc);
|
|
|
|
pcl_info->size = (uintptr_t)ce_vaddr - (uintptr_t)ce_vaddr_start;
|
|
*pvaddr = (unsigned char *) ce_vaddr;
|
|
@@ -4009,8 +4014,8 @@ static int _setup_aead_ccm_cmdlistptrs(struct qce_device *pdev, int cri_index,
|
|
pdev->reg.crypto_cfg_le, NULL);
|
|
|
|
qce_add_cmd_element(pdev, &ce_vaddr, CRYPTO_GOPROC_REG,
|
|
- ((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP)),
|
|
- &pcl_info->go_proc);
|
|
+ ((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP) |
|
|
+ (1 << CRYPTO_CLR_CNTXT)), &pcl_info->go_proc);
|
|
|
|
pcl_info->size = (uintptr_t)ce_vaddr - (uintptr_t)ce_vaddr_start;
|
|
*pvaddr = (unsigned char *) ce_vaddr;
|
|
@@ -4095,8 +4100,8 @@ static int _setup_f8_cmdlistptrs(struct qce_device *pdev, int cri_index,
|
|
pdev->reg.crypto_cfg_le, NULL);
|
|
|
|
qce_add_cmd_element(pdev, &ce_vaddr, CRYPTO_GOPROC_REG,
|
|
- ((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP)),
|
|
- &pcl_info->go_proc);
|
|
+ ((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP) |
|
|
+ (1 << CRYPTO_CLR_CNTXT)), &pcl_info->go_proc);
|
|
|
|
pcl_info->size = (uintptr_t)ce_vaddr - (uintptr_t)ce_vaddr_start;
|
|
*pvaddr = (unsigned char *) ce_vaddr;
|
|
@@ -4177,8 +4182,8 @@ static int _setup_f9_cmdlistptrs(struct qce_device *pdev, int cri_index,
|
|
pdev->reg.crypto_cfg_le, NULL);
|
|
|
|
qce_add_cmd_element(pdev, &ce_vaddr, CRYPTO_GOPROC_REG,
|
|
- ((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP)),
|
|
- &pcl_info->go_proc);
|
|
+ ((1 << CRYPTO_GO) | (1 << CRYPTO_RESULTS_DUMP) |
|
|
+ (1 << CRYPTO_CLR_CNTXT)), &pcl_info->go_proc);
|
|
|
|
pcl_info->size = (uintptr_t)ce_vaddr - (uintptr_t)ce_vaddr_start;
|
|
*pvaddr = (unsigned char *) ce_vaddr;
|
|
--
|
|
cgit v1.1
|
|
|