Prev: [patch] acpi: map pxms to low node ids
Next: [patch 0/2] Run interrupt handlers always with interrupts disabled
From: Dan Williams on 25 Mar 2010 19:40 On Thu, 2010-03-25 at 08:02 -0700, Linus Walleij wrote: > Convert the device_terminate_all() operation on the > DMA engine to a generic device_control() operation > which can now optionally support also pausing and > resuming DMA on a certain channel. Implemented for the > COH 901 318 DMAC as an example. > > Signed-off-by: Linus Walleij <linus.walleij(a)stericsson.com> > Cc: Maciej Sosnowski <maciej.sosnowski(a)intel.com> > Cc: Nicolas Ferre <nicolas.ferre(a)atmel.com> > Cc: Pavel Machek <pavel(a)ucw.cz> > Cc: Li Yang <leoli(a)freescale.com> > Cc: Guennadi Liakhovetski <g.liakhovetski(a)gmx.de> > Cc: Paul Mundt <lethal(a)linux-sh.org> > Cc: Ralf Baechle <ralf(a)linux-mips.org> > Cc: Haavard Skinnemoen <haavard.skinnemoen(a)atmel.com> > Cc: Magnus Damm <damm(a)opensource.se> > Cc: Liam Girdwood <lrg(a)slimlogic.co.uk> > Cc: Mark Brown <broonie(a)opensource.wolfsonmicro.com> > --- > arch/arm/mach-u300/include/mach/coh901318.h | 14 --------- > drivers/dma/at_hdmac.c | 10 +++++- > drivers/dma/coh901318.c | 42 ++++++++++++++++++--------- > drivers/dma/dmaengine.c | 2 +- > drivers/dma/dw_dmac.c | 10 +++++- > drivers/dma/fsldma.c | 11 ++++++- > drivers/dma/ipu/ipu_idmac.c | 19 ++++++++---- > drivers/dma/shdma.c | 10 +++++- > drivers/dma/txx9dmac.c | 10 +++++- > drivers/mmc/host/atmel-mci.c | 2 +- > drivers/serial/sh-sci.c | 2 +- > drivers/video/mx3fb.c | 3 +- > include/linux/dmaengine.h | 18 ++++++++++- > sound/soc/txx9/txx9aclc.c | 6 ++-- > 14 files changed, 106 insertions(+), 53 deletions(-) > > diff --git a/arch/arm/mach-u300/include/mach/coh901318.h b/arch/arm/mach-u300/include/mach/coh901318.h > index b8155b4..43ec040 100644 > --- a/arch/arm/mach-u300/include/mach/coh901318.h > +++ b/arch/arm/mach-u300/include/mach/coh901318.h > @@ -110,20 +110,6 @@ struct coh901318_platform { > u32 coh901318_get_bytes_left(struct dma_chan *chan); > > /** > - * coh901318_stop() - Stops dma transfer > - * @chan: dma channel handle > - * return 0 on success otherwise negative value > - */ > -void coh901318_stop(struct dma_chan *chan); > - > -/** > - * coh901318_continue() - Resumes a stopped dma transfer > - * @chan: dma channel handle > - * return 0 on success otherwise negative value > - */ > -void coh901318_continue(struct dma_chan *chan); > - > -/** > * coh901318_filter_id() - DMA channel filter function > * @chan: dma channel handle > * @chan_id: id of dma channel to be filter out > diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c > index efc1a61..3fa3658 100644 > --- a/drivers/dma/at_hdmac.c > +++ b/drivers/dma/at_hdmac.c > @@ -759,13 +759,17 @@ err_desc_get: > return NULL; > } > > -static void atc_terminate_all(struct dma_chan *chan) > +static int atc_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd) > { > struct at_dma_chan *atchan = to_at_dma_chan(chan); > struct at_dma *atdma = to_at_dma(chan->device); > struct at_desc *desc, *_desc; > LIST_HEAD(list); > > + /* Only supports DMA_TERMINATE_ALL */ > + if (cmd != DMA_TERMINATE_ALL) > + return -EINVAL; > + I'd prefer ENXIO here since it may be a valid command, just not implemented in this specific driver. Here is the important bits from build_dma.sh: drivers/dma/ipu/ipu_idmac.c: In function '__idmac_control': drivers/dma/ipu/ipu_idmac.c:1512: warning: control reaches end of non-void function drivers/dma/fsldma.c: In function 'fsl_dma_device_control': drivers/dma/fsldma.c:788: warning: 'return' with no value, in function returning non-void drivers/dma/ppc4xx/adma.c:3944: error: expected identifier or '(' before '{' token drivers/dma/shdma.c: In function `sh_dmae_control': drivers/dma/shdma.c:592: warning: `return' with no value, in function returning non-void -- Dan -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |