diff options
author | Dan Williams <dan.j.williams@intel.com> | 2008-04-17 23:17:26 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2008-04-17 16:25:54 -0400 |
commit | c4fe15541d0ef5cc8cc1ce43057663851f8fc387 (patch) | |
tree | f54ffc254e1264ab7d33fe43e30078e6ecd36bd8 | |
parent | ce4d65a5db77e1568c82d5151a746f627c4f6ed5 (diff) |
iop-adma: remove the workaround for missed interrupts on iop3xx
This workaround was covering the dependency submission bug in async_tx.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r-- | drivers/dma/iop-adma.c | 5 | ||||
-rw-r--r-- | include/asm-arm/arch-iop13xx/adma.h | 5 | ||||
-rw-r--r-- | include/asm-arm/hardware/iop3xx-adma.h | 8 | ||||
-rw-r--r-- | include/asm-arm/hardware/iop_adma.h | 2 |
4 files changed, 0 insertions, 20 deletions
diff --git a/drivers/dma/iop-adma.c b/drivers/dma/iop-adma.c index 2aa3df50c842..93252294f32b 100644 --- a/drivers/dma/iop-adma.c +++ b/drivers/dma/iop-adma.c | |||
@@ -255,8 +255,6 @@ static void __iop_adma_slot_cleanup(struct iop_adma_chan *iop_chan) | |||
255 | 255 | ||
256 | BUG_ON(!seen_current); | 256 | BUG_ON(!seen_current); |
257 | 257 | ||
258 | iop_chan_idle(busy, iop_chan); | ||
259 | |||
260 | if (cookie > 0) { | 258 | if (cookie > 0) { |
261 | iop_chan->completed_cookie = cookie; | 259 | iop_chan->completed_cookie = cookie; |
262 | pr_debug("\tcompleted cookie %d\n", cookie); | 260 | pr_debug("\tcompleted cookie %d\n", cookie); |
@@ -1226,9 +1224,6 @@ static int __devinit iop_adma_probe(struct platform_device *pdev) | |||
1226 | } | 1224 | } |
1227 | 1225 | ||
1228 | spin_lock_init(&iop_chan->lock); | 1226 | spin_lock_init(&iop_chan->lock); |
1229 | init_timer(&iop_chan->cleanup_watchdog); | ||
1230 | iop_chan->cleanup_watchdog.data = (unsigned long) iop_chan; | ||
1231 | iop_chan->cleanup_watchdog.function = iop_adma_tasklet; | ||
1232 | INIT_LIST_HEAD(&iop_chan->chain); | 1227 | INIT_LIST_HEAD(&iop_chan->chain); |
1233 | INIT_LIST_HEAD(&iop_chan->all_slots); | 1228 | INIT_LIST_HEAD(&iop_chan->all_slots); |
1234 | INIT_RCU_HEAD(&iop_chan->common.rcu); | 1229 | INIT_RCU_HEAD(&iop_chan->common.rcu); |
diff --git a/include/asm-arm/arch-iop13xx/adma.h b/include/asm-arm/arch-iop13xx/adma.h index efd9a5eb1008..90d14ee564f5 100644 --- a/include/asm-arm/arch-iop13xx/adma.h +++ b/include/asm-arm/arch-iop13xx/adma.h | |||
@@ -454,11 +454,6 @@ static inline void iop_chan_append(struct iop_adma_chan *chan) | |||
454 | __raw_writel(adma_accr, ADMA_ACCR(chan)); | 454 | __raw_writel(adma_accr, ADMA_ACCR(chan)); |
455 | } | 455 | } |
456 | 456 | ||
457 | static inline void iop_chan_idle(int busy, struct iop_adma_chan *chan) | ||
458 | { | ||
459 | do { } while (0); | ||
460 | } | ||
461 | |||
462 | static inline u32 iop_chan_get_status(struct iop_adma_chan *chan) | 457 | static inline u32 iop_chan_get_status(struct iop_adma_chan *chan) |
463 | { | 458 | { |
464 | return __raw_readl(ADMA_ACSR(chan)); | 459 | return __raw_readl(ADMA_ACSR(chan)); |
diff --git a/include/asm-arm/hardware/iop3xx-adma.h b/include/asm-arm/hardware/iop3xx-adma.h index 5c529e6a5e3b..84d635b0a71a 100644 --- a/include/asm-arm/hardware/iop3xx-adma.h +++ b/include/asm-arm/hardware/iop3xx-adma.h | |||
@@ -767,20 +767,12 @@ static inline int iop_desc_get_zero_result(struct iop_adma_desc_slot *desc) | |||
767 | static inline void iop_chan_append(struct iop_adma_chan *chan) | 767 | static inline void iop_chan_append(struct iop_adma_chan *chan) |
768 | { | 768 | { |
769 | u32 dma_chan_ctrl; | 769 | u32 dma_chan_ctrl; |
770 | /* workaround dropped interrupts on 3xx */ | ||
771 | mod_timer(&chan->cleanup_watchdog, jiffies + msecs_to_jiffies(3)); | ||
772 | 770 | ||
773 | dma_chan_ctrl = __raw_readl(DMA_CCR(chan)); | 771 | dma_chan_ctrl = __raw_readl(DMA_CCR(chan)); |
774 | dma_chan_ctrl |= 0x2; | 772 | dma_chan_ctrl |= 0x2; |
775 | __raw_writel(dma_chan_ctrl, DMA_CCR(chan)); | 773 | __raw_writel(dma_chan_ctrl, DMA_CCR(chan)); |
776 | } | 774 | } |
777 | 775 | ||
778 | static inline void iop_chan_idle(int busy, struct iop_adma_chan *chan) | ||
779 | { | ||
780 | if (!busy) | ||
781 | del_timer(&chan->cleanup_watchdog); | ||
782 | } | ||
783 | |||
784 | static inline u32 iop_chan_get_status(struct iop_adma_chan *chan) | 776 | static inline u32 iop_chan_get_status(struct iop_adma_chan *chan) |
785 | { | 777 | { |
786 | return __raw_readl(DMA_CSR(chan)); | 778 | return __raw_readl(DMA_CSR(chan)); |
diff --git a/include/asm-arm/hardware/iop_adma.h b/include/asm-arm/hardware/iop_adma.h index ca8e71f44346..cb7e3611bcba 100644 --- a/include/asm-arm/hardware/iop_adma.h +++ b/include/asm-arm/hardware/iop_adma.h | |||
@@ -51,7 +51,6 @@ struct iop_adma_device { | |||
51 | * @common: common dmaengine channel object members | 51 | * @common: common dmaengine channel object members |
52 | * @last_used: place holder for allocation to continue from where it left off | 52 | * @last_used: place holder for allocation to continue from where it left off |
53 | * @all_slots: complete domain of slots usable by the channel | 53 | * @all_slots: complete domain of slots usable by the channel |
54 | * @cleanup_watchdog: workaround missed interrupts on iop3xx | ||
55 | * @slots_allocated: records the actual size of the descriptor slot pool | 54 | * @slots_allocated: records the actual size of the descriptor slot pool |
56 | * @irq_tasklet: bottom half where iop_adma_slot_cleanup runs | 55 | * @irq_tasklet: bottom half where iop_adma_slot_cleanup runs |
57 | */ | 56 | */ |
@@ -65,7 +64,6 @@ struct iop_adma_chan { | |||
65 | struct dma_chan common; | 64 | struct dma_chan common; |
66 | struct iop_adma_desc_slot *last_used; | 65 | struct iop_adma_desc_slot *last_used; |
67 | struct list_head all_slots; | 66 | struct list_head all_slots; |
68 | struct timer_list cleanup_watchdog; | ||
69 | int slots_allocated; | 67 | int slots_allocated; |
70 | struct tasklet_struct irq_tasklet; | 68 | struct tasklet_struct irq_tasklet; |
71 | }; | 69 | }; |