Patchwork dmaengine: mxs-dma: skip request_irq for NO_IRQ

login
register
mail settings
Submitter Shawn Guo
Date June 30, 2011, 8:06 a.m.
Message ID <1309421193-7785-1-git-send-email-shawn.guo@linaro.org>
Download mbox | patch
Permalink /patch/102714/
State New
Headers show

Comments

Shawn Guo - June 30, 2011, 8:06 a.m.
In general, the mxs-dma users get separate irq for each channel,
but gpmi is special one which has only one irq shared by all gpmi
channels.  It causes mxs_dma channel allocation function fail for
all other gpmi channels except the first one calling into the
function.

The patch gets request_irq call skipped for NO_IRQ case, and leaves
this gpmi specific quirk to gpmi driver to sort out.  It will fix
above problem if gpmi driver sets chan_irq as gpmi irq for only one
channel and NO_IRQ for all the rest channels.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Cc: Vinod Koul <vinod.koul@intel.com>
---
 drivers/dma/mxs-dma.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)
Shawn Guo - July 7, 2011, 12:15 a.m.
On Thu, Jun 30, 2011 at 04:06:33PM +0800, Shawn Guo wrote:
> In general, the mxs-dma users get separate irq for each channel,
> but gpmi is special one which has only one irq shared by all gpmi
> channels.  It causes mxs_dma channel allocation function fail for
> all other gpmi channels except the first one calling into the
> function.
> 
> The patch gets request_irq call skipped for NO_IRQ case, and leaves
> this gpmi specific quirk to gpmi driver to sort out.  It will fix
> above problem if gpmi driver sets chan_irq as gpmi irq for only one
> channel and NO_IRQ for all the rest channels.
> 
> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> Cc: Vinod Koul <vinod.koul@intel.com>
> ---

Hi Vinod,

Can you please take this patch?

Regards,
Shawn

>  drivers/dma/mxs-dma.c |   10 ++++++----
>  1 files changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
> index 88aad4f..2870d91 100644
> --- a/drivers/dma/mxs-dma.c
> +++ b/drivers/dma/mxs-dma.c
> @@ -327,10 +327,12 @@ static int mxs_dma_alloc_chan_resources(struct dma_chan *chan)
>  
>  	memset(mxs_chan->ccw, 0, PAGE_SIZE);
>  
> -	ret = request_irq(mxs_chan->chan_irq, mxs_dma_int_handler,
> -				0, "mxs-dma", mxs_dma);
> -	if (ret)
> -		goto err_irq;
> +	if (mxs_chan->chan_irq != NO_IRQ) {
> +		ret = request_irq(mxs_chan->chan_irq, mxs_dma_int_handler,
> +					0, "mxs-dma", mxs_dma);
> +		if (ret)
> +			goto err_irq;
> +	}
>  
>  	ret = clk_enable(mxs_dma->clk);
>  	if (ret)
> -- 
> 1.7.4.1
> 
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
Vinod Koul - July 7, 2011, 2:06 a.m.
On Thu, 2011-07-07 at 08:15 +0800, Shawn Guo wrote:
> On Thu, Jun 30, 2011 at 04:06:33PM +0800, Shawn Guo wrote:
> > In general, the mxs-dma users get separate irq for each channel,
> > but gpmi is special one which has only one irq shared by all gpmi
> > channels.  It causes mxs_dma channel allocation function fail for
> > all other gpmi channels except the first one calling into the
> > function.
> > 
> > The patch gets request_irq call skipped for NO_IRQ case, and leaves
> > this gpmi specific quirk to gpmi driver to sort out.  It will fix
> > above problem if gpmi driver sets chan_irq as gpmi irq for only one
> > channel and NO_IRQ for all the rest channels.
> > 
> > Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> > Cc: Vinod Koul <vinod.koul@intel.com>
> > ---
> 
> Hi Vinod,
> 
> Can you please take this patch?
> 
> Regards,
> Shawn
Looks okay to me. Have queued it up and should show up in my tree latest by early next week.
I am on road, hence the delay...


> >  drivers/dma/mxs-dma.c |   10 ++++++----
> >  1 files changed, 6 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
> > index 88aad4f..2870d91 100644
> > --- a/drivers/dma/mxs-dma.c
> > +++ b/drivers/dma/mxs-dma.c
> > @@ -327,10 +327,12 @@ static int mxs_dma_alloc_chan_resources(struct dma_chan *chan)
> >  
> >  	memset(mxs_chan->ccw, 0, PAGE_SIZE);
> >  
> > -	ret = request_irq(mxs_chan->chan_irq, mxs_dma_int_handler,
> > -				0, "mxs-dma", mxs_dma);
> > -	if (ret)
> > -		goto err_irq;
> > +	if (mxs_chan->chan_irq != NO_IRQ) {
> > +		ret = request_irq(mxs_chan->chan_irq, mxs_dma_int_handler,
> > +					0, "mxs-dma", mxs_dma);
> > +		if (ret)
> > +			goto err_irq;
> > +	}
> >  
> >  	ret = clk_enable(mxs_dma->clk);
> >  	if (ret)
> > -- 
> > 1.7.4.1
> > 
> > 
> > 
> > _______________________________________________
> > linux-arm-kernel mailing list
> > linux-arm-kernel@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> > 
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Huang Shijie - July 7, 2011, 3:23 a.m.
于 2011年07月07日 11:24, Shawn Guo 写道:
> On Thu, Jul 07, 2011 at 07:36:00AM +0530, Vinod Koul wrote:
>> On Thu, 2011-07-07 at 08:15 +0800, Shawn Guo wrote:
>>> On Thu, Jun 30, 2011 at 04:06:33PM +0800, Shawn Guo wrote:
>>>> In general, the mxs-dma users get separate irq for each channel,
>>>> but gpmi is special one which has only one irq shared by all gpmi
>>>> channels.  It causes mxs_dma channel allocation function fail for
>>>> all other gpmi channels except the first one calling into the
>>>> function.
>>>>
>>>> The patch gets request_irq call skipped for NO_IRQ case, and leaves
>>>> this gpmi specific quirk to gpmi driver to sort out.  It will fix
>>>> above problem if gpmi driver sets chan_irq as gpmi irq for only one
>>>> channel and NO_IRQ for all the rest channels.
>>>>
>>>> Signed-off-by: Shawn Guo<shawn.guo@linaro.org>
>>>> Cc: Vinod Koul<vinod.koul@intel.com>
>>>> ---
>>> Hi Vinod,
>>>
>>> Can you please take this patch?
>>>
>>> Regards,
>>> Shawn
>> Looks okay to me. Have queued it up and should show up in my tree latest by early next week.
>> I am on road, hence the delay...
>>
> No problem.  Thanks, Vinod.
>
thanks. I will submit the next GPMI version which will based this patch.

Best Regards
Huang Shijie
Shawn Guo - July 7, 2011, 3:24 a.m.
On Thu, Jul 07, 2011 at 07:36:00AM +0530, Vinod Koul wrote:
> On Thu, 2011-07-07 at 08:15 +0800, Shawn Guo wrote:
> > On Thu, Jun 30, 2011 at 04:06:33PM +0800, Shawn Guo wrote:
> > > In general, the mxs-dma users get separate irq for each channel,
> > > but gpmi is special one which has only one irq shared by all gpmi
> > > channels.  It causes mxs_dma channel allocation function fail for
> > > all other gpmi channels except the first one calling into the
> > > function.
> > > 
> > > The patch gets request_irq call skipped for NO_IRQ case, and leaves
> > > this gpmi specific quirk to gpmi driver to sort out.  It will fix
> > > above problem if gpmi driver sets chan_irq as gpmi irq for only one
> > > channel and NO_IRQ for all the rest channels.
> > > 
> > > Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> > > Cc: Vinod Koul <vinod.koul@intel.com>
> > > ---
> > 
> > Hi Vinod,
> > 
> > Can you please take this patch?
> > 
> > Regards,
> > Shawn
> Looks okay to me. Have queued it up and should show up in my tree latest by early next week.
> I am on road, hence the delay...
> 
No problem.  Thanks, Vinod.
Koul, Vinod - July 13, 2011, 11:31 p.m.
On Thu, 2011-07-07 at 11:24 +0800, Shawn Guo wrote:
> On Thu, Jul 07, 2011 at 07:36:00AM +0530, Vinod Koul wrote:
> > On Thu, 2011-07-07 at 08:15 +0800, Shawn Guo wrote:
> > > On Thu, Jun 30, 2011 at 04:06:33PM +0800, Shawn Guo wrote:
> > > > In general, the mxs-dma users get separate irq for each channel,
> > > > but gpmi is special one which has only one irq shared by all gpmi
> > > > channels.  It causes mxs_dma channel allocation function fail for
> > > > all other gpmi channels except the first one calling into the
> > > > function.
> > > > 
> > > > The patch gets request_irq call skipped for NO_IRQ case, and leaves
> > > > this gpmi specific quirk to gpmi driver to sort out.  It will fix
> > > > above problem if gpmi driver sets chan_irq as gpmi irq for only one
> > > > channel and NO_IRQ for all the rest channels.
> > > > 
> > > > Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> > > > Cc: Vinod Koul <vinod.koul@intel.com>
> > > > ---
> > > 
> > > Hi Vinod,
> > > 
> > > Can you please take this patch?
> > > 
> > > Regards,
> > > Shawn
> > Looks okay to me. Have queued it up and should show up in my tree latest by early next week.
> > I am on road, hence the delay...
> > 
> No problem.  Thanks, Vinod.
Applied, Thanks

Patch

diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
index 88aad4f..2870d91 100644
--- a/drivers/dma/mxs-dma.c
+++ b/drivers/dma/mxs-dma.c
@@ -327,10 +327,12 @@  static int mxs_dma_alloc_chan_resources(struct dma_chan *chan)
 
 	memset(mxs_chan->ccw, 0, PAGE_SIZE);
 
-	ret = request_irq(mxs_chan->chan_irq, mxs_dma_int_handler,
-				0, "mxs-dma", mxs_dma);
-	if (ret)
-		goto err_irq;
+	if (mxs_chan->chan_irq != NO_IRQ) {
+		ret = request_irq(mxs_chan->chan_irq, mxs_dma_int_handler,
+					0, "mxs-dma", mxs_dma);
+		if (ret)
+			goto err_irq;
+	}
 
 	ret = clk_enable(mxs_dma->clk);
 	if (ret)