aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGary R Hook <gary.hook@amd.com>2017-04-20 16:24:09 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2017-04-21 08:30:56 -0400
commit56467cb11cf8ae4db9003f54b3d3425b5f07a10a (patch)
tree0f51509aec6c9c379cd498e427f1221340d4a4b5
parent7701d1ff8ed1b8d71dcccf1ae47470fe22942373 (diff)
crypto: ccp - Use only the relevant interrupt bits
Each CCP queue can product interrupts for 4 conditions: operation complete, queue empty, error, and queue stopped. This driver only works with completion and error events. Cc: <stable@vger.kernel.org> # 4.9.x+ Signed-off-by: Gary R Hook <gary.hook@amd.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--drivers/crypto/ccp/ccp-dev-v5.c9
-rw-r--r--drivers/crypto/ccp/ccp-dev.h5
2 files changed, 7 insertions, 7 deletions
diff --git a/drivers/crypto/ccp/ccp-dev-v5.c b/drivers/crypto/ccp/ccp-dev-v5.c
index e03d06a54d4e..c7972e733e43 100644
--- a/drivers/crypto/ccp/ccp-dev-v5.c
+++ b/drivers/crypto/ccp/ccp-dev-v5.c
@@ -801,7 +801,7 @@ static int ccp5_init(struct ccp_device *ccp)
801 ioread32(cmd_q->reg_status); 801 ioread32(cmd_q->reg_status);
802 802
803 /* Clear the interrupts */ 803 /* Clear the interrupts */
804 iowrite32(ALL_INTERRUPTS, cmd_q->reg_interrupt_status); 804 iowrite32(SUPPORTED_INTERRUPTS, cmd_q->reg_interrupt_status);
805 } 805 }
806 806
807 dev_dbg(dev, "Requesting an IRQ...\n"); 807 dev_dbg(dev, "Requesting an IRQ...\n");
@@ -882,7 +882,7 @@ static int ccp5_init(struct ccp_device *ccp)
882 /* Enable interrupts */ 882 /* Enable interrupts */
883 for (i = 0; i < ccp->cmd_q_count; i++) { 883 for (i = 0; i < ccp->cmd_q_count; i++) {
884 cmd_q = &ccp->cmd_q[i]; 884 cmd_q = &ccp->cmd_q[i];
885 iowrite32(ALL_INTERRUPTS, cmd_q->reg_int_enable); 885 iowrite32(SUPPORTED_INTERRUPTS, cmd_q->reg_int_enable);
886 } 886 }
887 887
888 dev_dbg(dev, "Registering device...\n"); 888 dev_dbg(dev, "Registering device...\n");
@@ -942,7 +942,7 @@ static void ccp5_destroy(struct ccp_device *ccp)
942 iowrite32(cmd_q->qcontrol & ~CMD5_Q_RUN, cmd_q->reg_control); 942 iowrite32(cmd_q->qcontrol & ~CMD5_Q_RUN, cmd_q->reg_control);
943 943
944 /* Disable the interrupts */ 944 /* Disable the interrupts */
945 iowrite32(ALL_INTERRUPTS, cmd_q->reg_interrupt_status); 945 iowrite32(SUPPORTED_INTERRUPTS, cmd_q->reg_interrupt_status);
946 946
947 /* Clear the interrupt status */ 947 /* Clear the interrupt status */
948 iowrite32(0x00, cmd_q->reg_int_enable); 948 iowrite32(0x00, cmd_q->reg_int_enable);
@@ -1002,7 +1002,8 @@ static irqreturn_t ccp5_irq_handler(int irq, void *data)
1002 cmd_q->int_rcvd = 1; 1002 cmd_q->int_rcvd = 1;
1003 1003
1004 /* Acknowledge the interrupt and wake the kthread */ 1004 /* Acknowledge the interrupt and wake the kthread */
1005 iowrite32(ALL_INTERRUPTS, cmd_q->reg_interrupt_status); 1005 iowrite32(SUPPORTED_INTERRUPTS,
1006 cmd_q->reg_interrupt_status);
1006 wake_up_interruptible(&cmd_q->int_queue); 1007 wake_up_interruptible(&cmd_q->int_queue);
1007 } 1008 }
1008 } 1009 }
diff --git a/drivers/crypto/ccp/ccp-dev.h b/drivers/crypto/ccp/ccp-dev.h
index 191274d41036..2dfec019a832 100644
--- a/drivers/crypto/ccp/ccp-dev.h
+++ b/drivers/crypto/ccp/ccp-dev.h
@@ -109,9 +109,8 @@
109#define INT_COMPLETION 0x1 109#define INT_COMPLETION 0x1
110#define INT_ERROR 0x2 110#define INT_ERROR 0x2
111#define INT_QUEUE_STOPPED 0x4 111#define INT_QUEUE_STOPPED 0x4
112#define ALL_INTERRUPTS (INT_COMPLETION| \ 112#define INT_EMPTY_QUEUE 0x8
113 INT_ERROR| \ 113#define SUPPORTED_INTERRUPTS (INT_COMPLETION | INT_ERROR)
114 INT_QUEUE_STOPPED)
115 114
116#define LSB_REGION_WIDTH 5 115#define LSB_REGION_WIDTH 5
117#define MAX_LSB_CNT 8 116#define MAX_LSB_CNT 8