This workaround was covering the dependency submission bug in async_tx.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
 
        BUG_ON(!seen_current);
 
-       iop_chan_idle(busy, iop_chan);
-
        if (cookie > 0) {
                iop_chan->completed_cookie = cookie;
                pr_debug("\tcompleted cookie %d\n", cookie);
        }
 
        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->all_slots);
        INIT_RCU_HEAD(&iop_chan->common.rcu);
 
        __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)
 {
        return __raw_readl(ADMA_ACSR(chan));
 
 static inline void iop_chan_append(struct iop_adma_chan *chan)
 {
        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 |= 0x2;
        __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)
 {
        return __raw_readl(DMA_CSR(chan));
 
  * @common: common dmaengine channel object members
  * @last_used: place holder for allocation to continue from where it left off
  * @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
  * @irq_tasklet: bottom half where iop_adma_slot_cleanup runs
  */
        struct dma_chan common;
        struct iop_adma_desc_slot *last_used;
        struct list_head all_slots;
-       struct timer_list cleanup_watchdog;
        int slots_allocated;
        struct tasklet_struct irq_tasklet;
 };