Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c4fe1554 authored by Dan Williams's avatar Dan Williams
Browse files

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
Loading
Loading
Loading
Loading
+0 −5
Original line number Original line Diff line number Diff line
@@ -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)
	}
	}


	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);
+0 −5
Original line number Original line Diff line number Diff line
@@ -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));
+0 −8
Original line number Original line Diff line number Diff line
@@ -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));
+0 −2
Original line number Original line Diff line number Diff line
@@ -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 {
	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;
};
};