Commit c4fe1554 authored by Dan Williams's avatar Dan Williams

iop-adma: remove the workaround for missed interrupts on iop3xx

This workaround was covering the dependency submission bug in async_tx.
Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent ce4d65a5
...@@ -255,8 +255,6 @@ static void __iop_adma_slot_cleanup(struct iop_adma_chan *iop_chan) ...@@ -255,8 +255,6 @@ static void __iop_adma_slot_cleanup(struct iop_adma_chan *iop_chan)
BUG_ON(!seen_current); BUG_ON(!seen_current);
iop_chan_idle(busy, iop_chan);
if (cookie > 0) { if (cookie > 0) {
iop_chan->completed_cookie = cookie; iop_chan->completed_cookie = cookie;
pr_debug("\tcompleted cookie %d\n", cookie); pr_debug("\tcompleted cookie %d\n", cookie);
...@@ -1226,9 +1224,6 @@ static int __devinit iop_adma_probe(struct platform_device *pdev) ...@@ -1226,9 +1224,6 @@ static int __devinit iop_adma_probe(struct platform_device *pdev)
} }
spin_lock_init(&iop_chan->lock); spin_lock_init(&iop_chan->lock);
init_timer(&iop_chan->cleanup_watchdog);
iop_chan->cleanup_watchdog.data = (unsigned long) iop_chan;
iop_chan->cleanup_watchdog.function = iop_adma_tasklet;
INIT_LIST_HEAD(&iop_chan->chain); INIT_LIST_HEAD(&iop_chan->chain);
INIT_LIST_HEAD(&iop_chan->all_slots); INIT_LIST_HEAD(&iop_chan->all_slots);
INIT_RCU_HEAD(&iop_chan->common.rcu); INIT_RCU_HEAD(&iop_chan->common.rcu);
......
...@@ -454,11 +454,6 @@ static inline void iop_chan_append(struct iop_adma_chan *chan) ...@@ -454,11 +454,6 @@ static inline void iop_chan_append(struct iop_adma_chan *chan)
__raw_writel(adma_accr, ADMA_ACCR(chan)); __raw_writel(adma_accr, ADMA_ACCR(chan));
} }
static inline void iop_chan_idle(int busy, struct iop_adma_chan *chan)
{
do { } while (0);
}
static inline u32 iop_chan_get_status(struct iop_adma_chan *chan) static inline u32 iop_chan_get_status(struct iop_adma_chan *chan)
{ {
return __raw_readl(ADMA_ACSR(chan)); return __raw_readl(ADMA_ACSR(chan));
......
...@@ -767,20 +767,12 @@ static inline int iop_desc_get_zero_result(struct iop_adma_desc_slot *desc) ...@@ -767,20 +767,12 @@ static inline int iop_desc_get_zero_result(struct iop_adma_desc_slot *desc)
static inline void iop_chan_append(struct iop_adma_chan *chan) static inline void iop_chan_append(struct iop_adma_chan *chan)
{ {
u32 dma_chan_ctrl; u32 dma_chan_ctrl;
/* workaround dropped interrupts on 3xx */
mod_timer(&chan->cleanup_watchdog, jiffies + msecs_to_jiffies(3));
dma_chan_ctrl = __raw_readl(DMA_CCR(chan)); dma_chan_ctrl = __raw_readl(DMA_CCR(chan));
dma_chan_ctrl |= 0x2; dma_chan_ctrl |= 0x2;
__raw_writel(dma_chan_ctrl, DMA_CCR(chan)); __raw_writel(dma_chan_ctrl, DMA_CCR(chan));
} }
static inline void iop_chan_idle(int busy, struct iop_adma_chan *chan)
{
if (!busy)
del_timer(&chan->cleanup_watchdog);
}
static inline u32 iop_chan_get_status(struct iop_adma_chan *chan) static inline u32 iop_chan_get_status(struct iop_adma_chan *chan)
{ {
return __raw_readl(DMA_CSR(chan)); return __raw_readl(DMA_CSR(chan));
......
...@@ -51,7 +51,6 @@ struct iop_adma_device { ...@@ -51,7 +51,6 @@ struct iop_adma_device {
* @common: common dmaengine channel object members * @common: common dmaengine channel object members
* @last_used: place holder for allocation to continue from where it left off * @last_used: place holder for allocation to continue from where it left off
* @all_slots: complete domain of slots usable by the channel * @all_slots: complete domain of slots usable by the channel
* @cleanup_watchdog: workaround missed interrupts on iop3xx
* @slots_allocated: records the actual size of the descriptor slot pool * @slots_allocated: records the actual size of the descriptor slot pool
* @irq_tasklet: bottom half where iop_adma_slot_cleanup runs * @irq_tasklet: bottom half where iop_adma_slot_cleanup runs
*/ */
...@@ -65,7 +64,6 @@ struct iop_adma_chan { ...@@ -65,7 +64,6 @@ struct iop_adma_chan {
struct dma_chan common; struct dma_chan common;
struct iop_adma_desc_slot *last_used; struct iop_adma_desc_slot *last_used;
struct list_head all_slots; struct list_head all_slots;
struct timer_list cleanup_watchdog;
int slots_allocated; int slots_allocated;
struct tasklet_struct irq_tasklet; struct tasklet_struct irq_tasklet;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment