RE: [PATCH] dmaengine: dw: don't handle interrupt when dmaengine is not used

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: Koul, Vinod
> Sent: Wednesday, February 11, 2015 9:19 AM
> To: Andy Shevchenko
> Cc: Jie, Yang; dmaengine@xxxxxxxxxxxxxxx; Girdwood, Liam R
> Subject: Re: [PATCH] dmaengine: dw: don't handle interrupt when
> dmaengine is not used
> 
> On Tue, Jan 20, 2015 at 11:36:05AM +0200, Andy Shevchenko wrote:
> > On Tue, 2015-01-20 at 17:12 +0800, Jie Yang wrote:
> > > When dma controller is not used by any user and set off, we should
> > > disble interrupt handler, at least the interrupt reset part, for
> > > some subsystem, e.g. ADSP, may use the dma in its own logic, here
> > > reset the interrupt may make this subsystem work abnormally.
> >
> > I think like on Intel MID (Medfield) there should be a specific
> > register to route interrupt pin from ADSP to CPU and vise versa. So,
> > my understanding we have to utilize that register somehow.
> >
> > Since it's quite specific to ADSP HW I would consider that ADSP driver
> > would take care of this.
> >
> > Vinod, it seems we already discussed this earlier, though I'm not
> > quite sure I remember your point. Can you share your opinion?
> Yes using those registers is recommended. Not handling a kernel irq seems
> not a good option.
> 
> Do we have an updated patch for this now?
[Keyon] Andy sent out a update patch on 2015/1/27:
[PATCH] dmaengine: dw: disable BLOCK interrupts in dw_dma_off()
What's your opinion for that solution?
> 
> --
> ~Vinod
> >
> > >
> > > Signed-off-by: Jie Yang <yang.jie@xxxxxxxxx>
> > > ---
> > >  drivers/dma/dw/core.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/dma/dw/core.c b/drivers/dma/dw/core.c index
> > > 3804785..ac0d6f6 100644
> > > --- a/drivers/dma/dw/core.c
> > > +++ b/drivers/dma/dw/core.c
> > > @@ -619,7 +619,7 @@ static irqreturn_t dw_dma_interrupt(int irq, void
> *dev_id)
> > >  	dev_vdbg(dw->dma.dev, "%s: status=0x%x\n", __func__, status);
> > >
> > >  	/* Check if we have any interrupt from the DMAC */
> > > -	if (!status)
> > > +	if (!status || !dw->in_use)
> > >  		return IRQ_NONE;
> > >
> > >  	/*
> >
> >
> > --
> > Andy Shevchenko <andriy.shevchenko@xxxxxxxxx> Intel Finland Oy
> >
> 
> --
--
To unsubscribe from this list: send the line "unsubscribe dmaengine" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux