linux_dsm_epyc7002/drivers/dma
Andy Shevchenko 123b69ab80 dw_dmac: don't wait for FIFO_EMPTY endlessly in dwc_chan_pause
When we pause the channel after transfer is completed we might stuck in the
dwc_chan_pause() because the FIFO_EMPTY flag will never be asserted. To avoid
the endless loop we introduce a timeout here (*). The proper solution is to
somehow get the residue in FIFO and avoid busyloop when transfer is done, but
this task is not simple and fast.

Unfortunately we can't use cpu_relax() in conjunction with jiffies checker, due
to we have interrupts disabled by spin_lock_irqsave() and there is a big chance
that no interrupts will come to update the jiffies..

(*) The worst case is
	AHB write * FIFO size / hclk = 5.12 us,
    where
	AHB write = 2 cycles,
	hclk = 100 MHz,
	burst size = 1 byte,
	FIFO size = 256 bytes.
    The proposed 40us timeout might be considered as a big one, though we enter
    to that state only when we have the transfer already completed.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2013-04-15 09:51:18 +05:30
..
bestcomm Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2013-02-23 17:09:55 -08:00
ioat ioatdma: allow all channels to have irq coalescing support 2013-04-15 09:51:16 +05:30
ipu dma: ipu: ipu_idmac: Fix section mismatch 2013-04-15 09:51:18 +05:30
ppc4xx Drivers: dma: remove __dev* attributes. 2013-01-03 15:57:15 -08:00
sh Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2013-02-26 09:24:48 -08:00
amba-pl08x.c pl080.h: moved from arm/include/asm/hardware to include/linux/amba/ 2013-01-13 05:19:45 -08:00
at_hdmac_regs.h dma: Convert dev_printk(KERN_<LEVEL> to dev_<level>( 2013-01-07 22:04:56 -08:00
at_hdmac.c dma: Remove erroneous __exit and __exit_p() references 2013-04-15 09:51:16 +05:30
coh901318_lli.c Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2013-02-26 09:24:48 -08:00
coh901318.c dma: Remove erroneous __exit and __exit_p() references 2013-04-15 09:51:16 +05:30
coh901318.h dma: coh901318: merge header files 2013-01-07 17:36:37 +01:00
dmaengine.c dmaengine: convert to idr_alloc() 2013-02-27 19:10:15 -08:00
dmaengine.h dmaengine: consolidate initialization of cookies 2012-03-13 11:37:22 +05:30
dmatest.c dmatest: append verify result to results 2013-04-15 09:51:18 +05:30
dw_dmac_regs.h dw_dmac: adjust slave_id accordingly to request line base 2013-03-30 04:34:07 +05:30
dw_dmac.c dw_dmac: don't wait for FIFO_EMPTY endlessly in dwc_chan_pause 2013-04-15 09:51:18 +05:30
edma.c Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2013-02-26 09:24:48 -08:00
ep93xx_dma.c dma: ep93xx_dma: reuse is_slave_direction helper 2013-01-12 05:07:22 -08:00
fsldma.c dma: remove use of __devinit 2012-11-28 12:42:36 -08:00
fsldma.h dmaengine: move last completed cookie into generic dma_chan structure 2012-03-13 11:36:06 +05:30
imx-dma.c dma: imx-dma: Remove redundant NULL check before kfree 2013-04-15 09:51:18 +05:30
imx-sdma.c dma: Remove erroneous __exit and __exit_p() references 2013-04-15 09:51:16 +05:30
intel_mid_dma_regs.h dma: fix comments 2012-09-01 08:57:12 -07:00
intel_mid_dma.c Drivers: dma: remove __dev* attributes. 2013-01-03 15:57:15 -08:00
iop-adma.c Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2013-02-26 09:24:48 -08:00
iovlock.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
Kconfig drivers/Kconfig: add several missing GENERIC_HARDIRQS dependencies 2013-03-21 13:35:37 +01:00
Makefile Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2013-02-26 09:24:48 -08:00
mmp_pdma.c Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2013-02-26 09:24:48 -08:00
mmp_tdma.c dma: Convert to devm_ioremap_resource() 2013-01-25 12:21:46 -08:00
mpc512x_dma.c Drivers: dma: remove __dev* attributes. 2013-01-03 15:57:15 -08:00
mv_xor.c Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2013-02-26 09:24:48 -08:00
mv_xor.h dma: mv_xor: clear the window override control registers 2012-11-22 18:16:37 +01:00
mxs-dma.c dma: mxs-dma: Fix build warnings with W=1 2013-01-08 07:35:27 -08:00
of-dma.c dma: of-dma: protect list write operation by spin_lock 2013-02-14 20:00:53 +05:30
omap-dma.c dmaengine: omap-dma: Start DMA without delay for cyclic channels 2013-04-10 10:33:30 +05:30
pch_dma.c pch_dma: Use GFP_ATOMIC because called from interrupt context 2013-04-15 09:51:16 +05:30
pl330.c dma: pl330: Convert to devm_ioremap_resource() 2013-04-15 09:51:18 +05:30
sa11x0-dma.c Drivers: dma: remove __dev* attributes. 2013-01-03 15:57:15 -08:00
sirf-dma.c Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2013-02-26 09:24:48 -08:00
ste_dma40_ll.c dmaengine: ste_dma40: minor cosmetic fixes 2013-01-14 10:51:01 +01:00
ste_dma40_ll.h dmaengine: ste_dma40: support more than 128 event lines 2013-01-14 10:50:48 +01:00
ste_dma40.c dmaengine: ste_dma40: do not remove descriptors for cyclic transfers 2013-02-14 19:54:31 +05:30
tegra20-apb-dma.c dma: tegra: assume CONFIG_OF 2013-04-15 09:51:18 +05:30
timb_dma.c dma: timb_dma: Fix compiler warning 2013-04-15 09:51:16 +05:30
TODO dmaengine: remove ste_dma40 from issue_pending TODO 2011-07-14 04:02:08 +05:30
txx9dmac.c dma: Remove erroneous __exit and __exit_p() references 2013-04-15 09:51:16 +05:30
txx9dmac.h dmaengine: move last completed cookie into generic dma_chan structure 2012-03-13 11:36:06 +05:30
virt-dma.c dmaengine: virt-dma: add support for cyclic DMA periodic callbacks 2012-07-01 14:15:23 +01:00
virt-dma.h dmaengine: virt-dma: add support for cyclic DMA periodic callbacks 2012-07-01 14:15:23 +01:00