diff for duplicates of <4F28A7C7.8060500@renesas.com> diff --git a/a/1.txt b/N1/1.txt index c89c0fb..76a2704 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -25,8 +25,7 @@ Hi Guennadi-san, >> So, if I add codes like the following in the dma-simple.c, >> the renesas_usbhs driver can work correctly without the driver changes. >> If you think the code is good, would you merge it to your code? ->> ======= chan_irqt() ======= ->> simple_chan_ld_cleanup(schan, false); +>> ==== chan_irqt() ===>> simple_chan_ld_cleanup(schan, false); >> >> + spin_lock_irq(&schan->chan_lock); >> + /* Next desc */ @@ -34,7 +33,7 @@ Hi Guennadi-san, >> + spin_unlock_irq(&schan->chan_lock); >> >> return IRQ_HANDLED; ->> ============== +>> ======= > > Therefore, no, this shouldn't be needed. @@ -56,7 +55,7 @@ Yoshihiro Shimoda >>> >>>> For reference, if I changed the threaded IRQ to tasklet, >>>> the 2 environment worked correctly: ->>>> ============== +>>>> ======= >>>> diff --git a/drivers/dma/dma-simple.c b/drivers/dma/dma-simple.c >>>> index 49d8f7d..65a5170 100644 >>>> --- a/drivers/dma/dma-simple.c @@ -67,7 +66,7 @@ Yoshihiro Shimoda >>>> >>>> - ret = ops->chan_irq(schan, irq) ? IRQ_WAKE_THREAD : IRQ_NONE; >>>> + ret = ops->chan_irq(schan, irq) ? IRQ_HANDLED : IRQ_NONE; ->>>> + if (ret == IRQ_HANDLED) +>>>> + if (ret = IRQ_HANDLED) >>>> + tasklet_schedule(&schan->tasklet); >>>> >>>> spin_unlock(&schan->chan_lock); @@ -80,8 +79,7 @@ Yoshihiro Shimoda >>>> { >>>> - struct dma_simple_chan *schan = dev; >>>> + struct dma_simple_chan *schan = (struct dma_simple_chan *)dev; ->>>> const struct dma_simple_ops *ops = ->>>> to_simple_dev(schan->dma_chan.device)->ops; +>>>> const struct dma_simple_ops *ops >>>> to_simple_dev(schan->dma_chan.device)->ops; >>>> struct dma_simple_desc *sdesc; >>>> @@ -744,15 +746,13 @@ static irqreturn_t chan_irqt(int irq, void *dev) >>>> spin_unlock_irq(&schan->chan_lock); @@ -113,7 +111,7 @@ Yoshihiro Shimoda >>>> }; >>>> >>>> /** ->>>> ============== +>>>> ======= >>>> >>>> Best regards, >>>> Yoshihiro Shimoda diff --git a/a/content_digest b/N1/content_digest index 12f9b57..f3db9ce 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -6,7 +6,7 @@ "ref\0Pine.LNX.4.64.1202010145510.31226@axis700.grange\0" "From\0Shimoda, Yoshihiro <yoshihiro.shimoda.uh@renesas.com>\0" "Subject\0Re: [PATCH 1/7 v2] dmaengine: add a simple dma library\0" - "Date\0Wed, 01 Feb 2012 11:47:35 +0900\0" + "Date\0Wed, 01 Feb 2012 02:47:35 +0000\0" "To\0Guennadi Liakhovetski <g.liakhovetski@gmx.de>\0" "Cc\0linux-kernel@vger.kernel.org" linux-sh@vger.kernel.org @@ -45,8 +45,7 @@ ">> So, if I add codes like the following in the dma-simple.c,\n" ">> the renesas_usbhs driver can work correctly without the driver changes.\n" ">> If you think the code is good, would you merge it to your code?\n" - ">> ======= chan_irqt() =======\n" - ">> \tsimple_chan_ld_cleanup(schan, false);\n" + ">> ==== chan_irqt() ===>> \tsimple_chan_ld_cleanup(schan, false);\n" ">>\n" ">> +\tspin_lock_irq(&schan->chan_lock);\n" ">> +\t/* Next desc */\n" @@ -54,7 +53,7 @@ ">> +\tspin_unlock_irq(&schan->chan_lock);\n" ">>\n" ">> \treturn IRQ_HANDLED;\n" - ">> ==============\n" + ">> =======\n" "> \n" "> Therefore, no, this shouldn't be needed.\n" "\n" @@ -76,7 +75,7 @@ ">>>\n" ">>>> For reference, if I changed the threaded IRQ to tasklet,\n" ">>>> the 2 environment worked correctly:\n" - ">>>> ==============\n" + ">>>> =======\n" ">>>> diff --git a/drivers/dma/dma-simple.c b/drivers/dma/dma-simple.c\n" ">>>> index 49d8f7d..65a5170 100644\n" ">>>> --- a/drivers/dma/dma-simple.c\n" @@ -87,7 +86,7 @@ ">>>>\n" ">>>> -\tret = ops->chan_irq(schan, irq) ? IRQ_WAKE_THREAD : IRQ_NONE;\n" ">>>> +\tret = ops->chan_irq(schan, irq) ? IRQ_HANDLED : IRQ_NONE;\n" - ">>>> +\tif (ret == IRQ_HANDLED)\n" + ">>>> +\tif (ret = IRQ_HANDLED)\n" ">>>> +\t\ttasklet_schedule(&schan->tasklet);\n" ">>>>\n" ">>>> \tspin_unlock(&schan->chan_lock);\n" @@ -100,8 +99,7 @@ ">>>> {\n" ">>>> -\tstruct dma_simple_chan *schan = dev;\n" ">>>> +\tstruct dma_simple_chan *schan = (struct dma_simple_chan *)dev;\n" - ">>>> \tconst struct dma_simple_ops *ops =\n" - ">>>> \t\tto_simple_dev(schan->dma_chan.device)->ops;\n" + ">>>> \tconst struct dma_simple_ops *ops >>>> \t\tto_simple_dev(schan->dma_chan.device)->ops;\n" ">>>> \tstruct dma_simple_desc *sdesc;\n" ">>>> @@ -744,15 +746,13 @@ static irqreturn_t chan_irqt(int irq, void *dev)\n" ">>>> \tspin_unlock_irq(&schan->chan_lock);\n" @@ -133,7 +131,7 @@ ">>>> };\n" ">>>>\n" ">>>> /**\n" - ">>>> ==============\n" + ">>>> =======\n" ">>>>\n" ">>>> Best regards,\n" ">>>> Yoshihiro Shimoda\n" @@ -162,4 +160,4 @@ "Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>\n" EC No. -8a7883279edde6941a1e1523824bf956c8b8cbff7e1b14dff9d46555cda8319e +a0c36f7bc95e4213823e29b36c04ad131fedd533f2b43c05df42875ce67271ce
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.