Message ID | 1309421193-7785-1-git-send-email-shawn.guo@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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 >
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
? 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
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.
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
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)
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(-)