Merge tag 'for-v4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power...
[sfrench/cifs-2.6.git] / drivers / crypto / caam / jr.c
index 5ef4be22eb8099573fd4d35f62d24143d29ea043..a81f551ac222a73153cdf166d5413cfda89fba9a 100644 (file)
@@ -31,7 +31,7 @@ static int caam_reset_hw_jr(struct device *dev)
         * mask interrupts since we are going to poll
         * for reset completion status
         */
-       setbits32(&jrp->rregs->rconfig_lo, JRCFG_IMSK);
+       clrsetbits_32(&jrp->rregs->rconfig_lo, 0, JRCFG_IMSK);
 
        /* initiate flush (required prior to reset) */
        wr_reg32(&jrp->rregs->jrcommand, JRCR_RESET);
@@ -57,7 +57,7 @@ static int caam_reset_hw_jr(struct device *dev)
        }
 
        /* unmask interrupts */
-       clrbits32(&jrp->rregs->rconfig_lo, JRCFG_IMSK);
+       clrsetbits_32(&jrp->rregs->rconfig_lo, JRCFG_IMSK, 0);
 
        return 0;
 }
@@ -147,7 +147,7 @@ static irqreturn_t caam_jr_interrupt(int irq, void *st_dev)
        }
 
        /* mask valid interrupts */
-       setbits32(&jrp->rregs->rconfig_lo, JRCFG_IMSK);
+       clrsetbits_32(&jrp->rregs->rconfig_lo, 0, JRCFG_IMSK);
 
        /* Have valid interrupt at this point, just ACK and trigger */
        wr_reg32(&jrp->rregs->jrintstatus, irqstate);
@@ -182,7 +182,7 @@ static void caam_jr_dequeue(unsigned long devarg)
                        sw_idx = (tail + i) & (JOBR_DEPTH - 1);
 
                        if (jrp->outring[hw_idx].desc ==
-                           jrp->entinfo[sw_idx].desc_addr_dma)
+                           caam_dma_to_cpu(jrp->entinfo[sw_idx].desc_addr_dma))
                                break; /* found */
                }
                /* we should never fail to find a matching descriptor */
@@ -200,7 +200,7 @@ static void caam_jr_dequeue(unsigned long devarg)
                usercall = jrp->entinfo[sw_idx].callbk;
                userarg = jrp->entinfo[sw_idx].cbkarg;
                userdesc = jrp->entinfo[sw_idx].desc_addr_virt;
-               userstatus = jrp->outring[hw_idx].jrstatus;
+               userstatus = caam32_to_cpu(jrp->outring[hw_idx].jrstatus);
 
                /*
                 * Make sure all information from the job has been obtained
@@ -236,7 +236,7 @@ static void caam_jr_dequeue(unsigned long devarg)
        }
 
        /* reenable / unmask IRQs */
-       clrbits32(&jrp->rregs->rconfig_lo, JRCFG_IMSK);
+       clrsetbits_32(&jrp->rregs->rconfig_lo, JRCFG_IMSK, 0);
 }
 
 /**
@@ -330,7 +330,7 @@ int caam_jr_enqueue(struct device *dev, u32 *desc,
        int head, tail, desc_size;
        dma_addr_t desc_dma;
 
-       desc_size = (*desc & HDR_JD_LENGTH_MASK) * sizeof(u32);
+       desc_size = (caam32_to_cpu(*desc) & HDR_JD_LENGTH_MASK) * sizeof(u32);
        desc_dma = dma_map_single(dev, desc, desc_size, DMA_TO_DEVICE);
        if (dma_mapping_error(dev, desc_dma)) {
                dev_err(dev, "caam_jr_enqueue(): can't map jobdesc\n");
@@ -356,7 +356,7 @@ int caam_jr_enqueue(struct device *dev, u32 *desc,
        head_entry->cbkarg = areq;
        head_entry->desc_addr_dma = desc_dma;
 
-       jrp->inpring[jrp->inp_ring_write_index] = desc_dma;
+       jrp->inpring[jrp->inp_ring_write_index] = cpu_to_caam_dma(desc_dma);
 
        /*
         * Guarantee that the descriptor's DMA address has been written to
@@ -444,9 +444,9 @@ static int caam_jr_init(struct device *dev)
        spin_lock_init(&jrp->outlock);
 
        /* Select interrupt coalescing parameters */
-       setbits32(&jrp->rregs->rconfig_lo, JOBR_INTC |
-                 (JOBR_INTC_COUNT_THLD << JRCFG_ICDCT_SHIFT) |
-                 (JOBR_INTC_TIME_THLD << JRCFG_ICTT_SHIFT));
+       clrsetbits_32(&jrp->rregs->rconfig_lo, 0, JOBR_INTC |
+                     (JOBR_INTC_COUNT_THLD << JRCFG_ICDCT_SHIFT) |
+                     (JOBR_INTC_TIME_THLD << JRCFG_ICTT_SHIFT));
 
        return 0;