[PATCH v2 1/3] dma: mxs-dma: Cleanup interrupt handler

Lothar Waßmann LW at KARO-electronics.de
Mon Sep 30 09:54:55 EDT 2013


Hi,

Markus Pargmann writes:
> The DMA interrupt handler uses its controll registers to handle all
> available channel interrupts it can find.
> 
> This patch changes it to handle only one interrupt by directly mapping
> irq number to channel. It also includes a cleanup of the ctrl-register
> usage.
> 
> Signed-off-by: Markus Pargmann <mpa at pengutronix.de>
> ---
>  drivers/dma/mxs-dma.c | 95 ++++++++++++++++++++++++++++++++-------------------
>  1 file changed, 59 insertions(+), 36 deletions(-)
> 
> diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
> index ccd13df..bfca8dc 100644
> --- a/drivers/dma/mxs-dma.c
> +++ b/drivers/dma/mxs-dma.c
> @@ -272,58 +272,81 @@ static void mxs_dma_tasklet(unsigned long data)
>  		mxs_chan->desc.callback(mxs_chan->desc.callback_param);
>  }
>  
> +static int mxs_dma_irq_to_chan(struct mxs_dma_engine *mxs_dma, int irq)
> +{
> +	int i;
> +
> +	for (i = 0; i != mxs_dma->nr_channels; ++i)
> +		if (mxs_dma->mxs_chans[i].chan_irq == irq)
> +			return i;
>
You might use a linked list for all active channels so that you don't
have to check all unused channels when trying to find the channel
number for an irq.


Lothar Waßmann
-- 
___________________________________________________________

Ka-Ro electronics GmbH | Pascalstraße 22 | D - 52076 Aachen
Phone: +49 2408 1402-0 | Fax: +49 2408 1402-10
Geschäftsführer: Matthias Kaussen
Handelsregistereintrag: Amtsgericht Aachen, HRB 4996

www.karo-electronics.de | info at karo-electronics.de
___________________________________________________________



More information about the linux-arm-kernel mailing list