]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
crypto: ccp - Use only the relevant interrupt bits
authorGary R Hook <gary.hook@amd.com>
Thu, 20 Apr 2017 20:24:09 +0000 (15:24 -0500)
committerStefan Bader <stefan.bader@canonical.com>
Tue, 20 Jun 2017 08:50:23 +0000 (10:50 +0200)
BugLink: http://bugs.launchpad.net/bugs/1692898
commit 56467cb11cf8ae4db9003f54b3d3425b5f07a10a upstream.

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.

Signed-off-by: Gary R Hook <gary.hook@amd.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
drivers/crypto/ccp/ccp-dev-v5.c
drivers/crypto/ccp/ccp-dev.h

index 3422f203455d643e3e1066db3ceb62b8bd5f415d..4e9436b98bac3e853648997bf933e5d2612f3186 100644 (file)
@@ -747,7 +747,7 @@ static int ccp5_init(struct ccp_device *ccp)
                ioread32(cmd_q->reg_status);
 
                /* Clear the interrupts */
-               iowrite32(ALL_INTERRUPTS, cmd_q->reg_interrupt_status);
+               iowrite32(SUPPORTED_INTERRUPTS, cmd_q->reg_interrupt_status);
        }
 
        dev_dbg(dev, "Requesting an IRQ...\n");
@@ -828,7 +828,7 @@ static int ccp5_init(struct ccp_device *ccp)
        /* Enable interrupts */
        for (i = 0; i < ccp->cmd_q_count; i++) {
                cmd_q = &ccp->cmd_q[i];
-               iowrite32(ALL_INTERRUPTS, cmd_q->reg_int_enable);
+               iowrite32(SUPPORTED_INTERRUPTS, cmd_q->reg_int_enable);
        }
 
        dev_dbg(dev, "Registering device...\n");
@@ -888,7 +888,7 @@ static void ccp5_destroy(struct ccp_device *ccp)
                iowrite32(cmd_q->qcontrol & ~CMD5_Q_RUN, cmd_q->reg_control);
 
                /* Disable the interrupts */
-               iowrite32(ALL_INTERRUPTS, cmd_q->reg_interrupt_status);
+               iowrite32(SUPPORTED_INTERRUPTS, cmd_q->reg_interrupt_status);
 
                /* Clear the interrupt status */
                iowrite32(0x00, cmd_q->reg_int_enable);
@@ -948,7 +948,8 @@ static irqreturn_t ccp5_irq_handler(int irq, void *data)
                        cmd_q->int_rcvd = 1;
 
                        /* Acknowledge the interrupt and wake the kthread */
-                       iowrite32(ALL_INTERRUPTS, cmd_q->reg_interrupt_status);
+                       iowrite32(SUPPORTED_INTERRUPTS,
+                                 cmd_q->reg_interrupt_status);
                        wake_up_interruptible(&cmd_q->int_queue);
                }
        }
index cd9a7051da3c36c3d5e68c150ff2b04d5ad4237b..79ba7950e6f7c72b7b1de6c67d52befa245e95e0 100644 (file)
 #define INT_COMPLETION                 0x1
 #define INT_ERROR                      0x2
 #define INT_QUEUE_STOPPED              0x4
-#define ALL_INTERRUPTS                 (INT_COMPLETION| \
-                                        INT_ERROR| \
-                                        INT_QUEUE_STOPPED)
+#define        INT_EMPTY_QUEUE                 0x8
+#define SUPPORTED_INTERRUPTS           (INT_COMPLETION | INT_ERROR)
 
 #define LSB_REGION_WIDTH               5
 #define MAX_LSB_CNT                    8