aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>2017-05-05 05:57:49 -0400
committerVinod Koul <vinod.koul@intel.com>2017-05-14 08:54:44 -0400
commit9dd4f319bac25334a869d9276b19eac9e478fd33 (patch)
tree136e3d29838927c21993dfa7943a657aaa798b5e
parent44d5887a8bf1e86915c8ff647337cb138149da82 (diff)
dmaengine: mv_xor_v2: remove interrupt coalescing
The current implementation of interrupt coalescing doesn't work, because it doesn't configure the coalescing timer, which is needed to make sure we get an interrupt at some point. As a fix for stable, we simply remove the interrupt coalescing functionality. It will be re-introduced properly in a future commit. Fixes: 19a340b1a820 ("dmaengine: mv_xor_v2: new driver") Cc: <stable@vger.kernel.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
-rw-r--r--drivers/dma/mv_xor_v2.c25
1 files changed, 0 insertions, 25 deletions
diff --git a/drivers/dma/mv_xor_v2.c b/drivers/dma/mv_xor_v2.c
index 4684eceea759..b133fe29d788 100644
--- a/drivers/dma/mv_xor_v2.c
+++ b/drivers/dma/mv_xor_v2.c
@@ -246,22 +246,6 @@ static int mv_xor_v2_set_desc_size(struct mv_xor_v2_device *xor_dev)
246 return MV_XOR_V2_EXT_DESC_SIZE; 246 return MV_XOR_V2_EXT_DESC_SIZE;
247} 247}
248 248
249/*
250 * Set the IMSG threshold
251 */
252static inline
253void mv_xor_v2_set_imsg_thrd(struct mv_xor_v2_device *xor_dev, int thrd_val)
254{
255 u32 reg;
256
257 reg = readl(xor_dev->dma_base + MV_XOR_V2_DMA_IMSG_THRD_OFF);
258
259 reg &= (~MV_XOR_V2_DMA_IMSG_THRD_MASK << MV_XOR_V2_DMA_IMSG_THRD_SHIFT);
260 reg |= (thrd_val << MV_XOR_V2_DMA_IMSG_THRD_SHIFT);
261
262 writel(reg, xor_dev->dma_base + MV_XOR_V2_DMA_IMSG_THRD_OFF);
263}
264
265static irqreturn_t mv_xor_v2_interrupt_handler(int irq, void *data) 249static irqreturn_t mv_xor_v2_interrupt_handler(int irq, void *data)
266{ 250{
267 struct mv_xor_v2_device *xor_dev = data; 251 struct mv_xor_v2_device *xor_dev = data;
@@ -277,12 +261,6 @@ static irqreturn_t mv_xor_v2_interrupt_handler(int irq, void *data)
277 if (!ndescs) 261 if (!ndescs)
278 return IRQ_NONE; 262 return IRQ_NONE;
279 263
280 /*
281 * Update IMSG threshold, to disable new IMSG interrupts until
282 * end of the tasklet
283 */
284 mv_xor_v2_set_imsg_thrd(xor_dev, MV_XOR_V2_DESC_NUM);
285
286 /* schedule a tasklet to handle descriptors callbacks */ 264 /* schedule a tasklet to handle descriptors callbacks */
287 tasklet_schedule(&xor_dev->irq_tasklet); 265 tasklet_schedule(&xor_dev->irq_tasklet);
288 266
@@ -607,9 +585,6 @@ static void mv_xor_v2_tasklet(unsigned long data)
607 /* free the descriptores */ 585 /* free the descriptores */
608 mv_xor_v2_free_desc_from_desq(xor_dev, num_of_pending); 586 mv_xor_v2_free_desc_from_desq(xor_dev, num_of_pending);
609 } 587 }
610
611 /* Update IMSG threshold, to enable new IMSG interrupts */
612 mv_xor_v2_set_imsg_thrd(xor_dev, 0);
613} 588}
614 589
615/* 590/*