[PATCH V3 2/6] dmaengine: add interrupt check for GPMI controller
STALE5426d
From: Huang Shijie <hidden>
Date: 2011-03-31 08:50:07
Hi:
Hi, Huang Shijie writes:quoted
The GPMI may have many DMA channels, such as the imx23 has four DMA channels. All these DMA channels share the same interrupt. Add the interrupt check for the GPMI, only the first DMA channel will register the irq. Signed-off-by: Huang Shijie<redacted> --- drivers/dma/mxs-dma.c | 36 ++++++++++++++++++++++++++++++++---- 1 files changed, 32 insertions(+), 4 deletions(-)diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c index 88aad4f..db36bf1 100644 --- a/drivers/dma/mxs-dma.c +++ b/drivers/dma/mxs-dma.c@@ -26,6 +26,8 @@ #include<asm/irq.h> #include<mach/mxs.h> #include<mach/dma.h> +#include<mach/mx23.h> +#include<mach/mx28.h> #include<mach/common.h> /*@@ -306,6 +308,30 @@ static irqreturn_t mxs_dma_int_handler(int irq, void *dev_id) return IRQ_HANDLED; } +/* The GPMI has several DMA channels, only the first can register the irq. */ +static bool irq_check(struct mxs_dma_chan *mxs_chan) +{ + int irq_num = mxs_chan->chan_irq; + +#ifdef CONFIG_SOC_IMX23 + if (cpu_is_mx23()&& irq_num == MX23_INT_GPMI_DMA) { + if (mxs_chan->chan.chan_id == MX23_DMA_GPMI0) + return true; + else + return false; + } +#endif +#ifdef CONFIG_SOC_IMX28 + if (cpu_is_mx28()&& irq_num == MX28_INT_GPMI_DMA) { + if (mxs_chan->chan.chan_id == MX28_DMA_GPMI0) + return true; + else + return false; + } +#endif + return true; +}You should make the distinction based on the platform_id, which would save you the ugly ifdef's and cpu_is_... macros.
This in the DMA driver. Do you want me to change the DMA driver to add the platform_id? The DMA driver has already used the cpu_is_xx() macros. Best Regards Huang Shijie
Lothar Wa?mann