diff for duplicates of <1471259434.21247.47.camel@synopsys.com> diff --git a/a/1.txt b/N1/1.txt index 2ebbbc6..fe91d0e 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,19 +1,19 @@ -On Fri, 2016-08-12@17:08 +0300, Andy Shevchenko wrote: -> On Fri, 2016-08-12@13:36 +0000, Eugeniy Paltsev wrote: -> >? -> > On Fri, 2016-08-12@13:59 +0300, Andy Shevchenko wrote: -> > >? -> > >? -> > > On Fri, 2016-08-12@08:03 +0000, Eugeniy Paltsev wrote: -> > > >? -> > > >? -> > > >? +On Fri, 2016-08-12 at 17:08 +0300, Andy Shevchenko wrote: +> On Fri, 2016-08-12 at 13:36 +0000, Eugeniy Paltsev wrote: +> > +> > On Fri, 2016-08-12 at 13:59 +0300, Andy Shevchenko wrote: +> > > +> > > +> > > On Fri, 2016-08-12 at 08:03 +0000, Eugeniy Paltsev wrote: +> > > > +> > > > +> > > > > > > > Hi, -> > > >? +> > > > > > > > "nollp" parameter defines if DW DMAC channel supports multi > > > > block > > > > transfer or not. -> > > >? +> > > > > > > > It is calculated in runtime, but differently depending on on > > > > availability of pdata. If pdata is absent "nollp" is calculated > > > > using @@ -23,18 +23,18 @@ On Fri, 2016-08-12@17:08 +0300, Andy Shevchenko wrote: > > > > channel_writel(dwc, LLP, DWC_LLP_LOC(0xffffffff)); > > > > dwc->nollp = DWC_LLP_LOC(channel_readl(dwc, LLP)) == 0; > > > > channel_writel(dwc, LLP, 0); -> > > >? +> > > > > > > > I realized that these methods give different results. > > > > For example on ARC AXS101 SDP in case of using autoconfig > > > > "nollp" > > > > was -> > > > calculated as "true" (and DMAC works fine),? +> > > > calculated as "true" (and DMAC works fine), > > > > otherwise "nollp" was calculated as "false" (and DMAC doesn't > > > > work). > > > Can you show out what the value you read back? > > channel_readl(dwc, LLP) return 0xfffffffc > Nice. ->? +> > Oh, forgot to ask, what are the DW_PARAMS and DWC_PARAMS[x] are on > the same hardware? DW_PARAMS: 0x38280b0c @@ -45,9 +45,9 @@ DWC_PARAMS[3]: 0x4926d300 > I assume we are talking about that one which has no hardware LLP > support. Yep. -> >? -> > >? -> > > >? +> > +> > > +> > > > > > > > So I'm wondering how the code in question really works? > > > > From DW AHB DMAC databook I wasn't able to find anything > > > > relevant @@ -65,12 +65,12 @@ Yep. > So, any comment on this one? I suppose you may have an access to some > internal Synopsys documentation which might shed a light. Or maybe I > missed something else which should be considered. -Looks like this code based on idea, what if DMA ip-core doesn't have? +Looks like this code based on idea, what if DMA ip-core doesn't have LLP support it will not have LLP registers. It is not necessarily true. > -> >? -> > >? -> > > >? +> > +> > > +> > > > > > > > Maybe we should add "nollp" field in pdata structure and > > > > receive > > > > it @@ -80,21 +80,21 @@ LLP support it will not have LLP registers. It is not necessarily true. > > > be > > > set > > > on Intel Quark which might have the same issue as your case [1]. -> > >? +> > > > > > [1] http://www.spinics.net/lists/linux-serial/msg22948.html -> > >? +> > > > > In which tree I can find this patch applied, so I may base my work > > on > > it? > The series is under review. I'm preparing v10, so, I would like to > re- > make this patch with regarding to your input. ->? +> > For now I would prefer just to remove the trick, but I still wonder > what > the circumstances are to bring it not working. ->? -Please add this code to read "is_memcpy" and "is_nollp" property? +> +Please add this code to read "is_memcpy" and "is_nollp" property from device tree. ----------------------------->8------------------------------ diff --git a/drivers/dma/dw/platform.c b/drivers/dma/dw/platform.c @@ -102,18 +102,18 @@ index 5bda0eb..2712602 100644 --- a/drivers/dma/dw/platform.c +++ b/drivers/dma/dw/platform.c @@ -129,6 +129,12 @@ dw_dma_parse_dt(struct platform_device *pdev) -????????if (of_property_read_bool(np, "is_private")) -????????????????pdata->is_private = true; -? -+???????if (of_property_read_bool(np, "is_memcpy")) -+???????????????pdata->is_memcpy = true; + if (of_property_read_bool(np, "is_private")) + pdata->is_private = true; + ++ if (of_property_read_bool(np, "is_memcpy")) ++ pdata->is_memcpy = true; + -+???????if (of_property_read_bool(np, "is_nollp")) -+???????????????pdata->is_nollp = true; ++ if (of_property_read_bool(np, "is_nollp")) ++ pdata->is_nollp = true; + -????????if (!of_property_read_u32(np, "chan_allocation_order", &tmp)) -????????????????pdata->chan_allocation_order = (unsigned char)tmp; -? + if (!of_property_read_u32(np, "chan_allocation_order", &tmp)) + pdata->chan_allocation_order = (unsigned char)tmp; + ----------------------------->8------------------------------ ---? -?Paltsev Eugeniy +-- + Paltsev Eugeniy diff --git a/a/content_digest b/N1/content_digest index accb670..fcd0e38 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -2,28 +2,34 @@ "ref\01470999584.4887.94.camel@linux.intel.com\0" "ref\01471008972.21247.40.camel@synopsys.com\0" "ref\01471010908.4887.100.camel@linux.intel.com\0" - "From\0Eugeniy.Paltsev@synopsys.com (Eugeniy Paltsev)\0" - "Subject\0Wrong \"nollp\" DW DMAC parameter value on ARC SDP.\0" + "From\0Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>\0" + "Subject\0Re: Wrong \"nollp\" DW DMAC parameter value on ARC SDP.\0" "Date\0Mon, 15 Aug 2016 11:10:34 +0000\0" - "To\0linux-snps-arc@lists.infradead.org\0" + "To\0andriy.shevchenko@linux.intel.com <andriy.shevchenko@linux.intel.com>\0" + "Cc\0dmaengine@vger.kernel.org <dmaengine@vger.kernel.org>" + linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org> + viresh.kumar@linaro.org <viresh.kumar@linaro.org> + Nelson.Pereira@synopsys.com <Nelson.Pereira@synopsys.com> + vinod.koul@intel.com <vinod.koul@intel.com> + " linux-snps-arc@lists.infradead.org <linux-snps-arc@lists.infradead.org>\0" "\00:1\0" "b\0" - "On Fri, 2016-08-12@17:08 +0300, Andy Shevchenko wrote:\n" - "> On Fri, 2016-08-12@13:36 +0000, Eugeniy Paltsev wrote:\n" - "> >?\n" - "> > On Fri, 2016-08-12@13:59 +0300, Andy Shevchenko wrote:\n" - "> > >?\n" - "> > >?\n" - "> > > On Fri, 2016-08-12@08:03 +0000, Eugeniy Paltsev wrote:\n" - "> > > >?\n" - "> > > >?\n" - "> > > >?\n" + "On Fri, 2016-08-12 at 17:08 +0300, Andy Shevchenko wrote:\n" + "> On Fri, 2016-08-12 at 13:36 +0000, Eugeniy Paltsev wrote:\n" + "> >\302\240\n" + "> > On Fri, 2016-08-12 at 13:59 +0300, Andy Shevchenko wrote:\n" + "> > >\302\240\n" + "> > >\302\240\n" + "> > > On Fri, 2016-08-12 at 08:03 +0000, Eugeniy Paltsev wrote:\n" + "> > > >\302\240\n" + "> > > >\302\240\n" + "> > > >\302\240\n" "> > > > Hi,\n" - "> > > >?\n" + "> > > >\302\240\n" "> > > > \"nollp\" parameter defines if DW DMAC channel supports multi\n" "> > > > block\n" "> > > > transfer or not.\n" - "> > > >?\n" + "> > > >\302\240\n" "> > > > It is calculated in runtime, but differently depending on on\n" "> > > > availability of pdata. If pdata is absent \"nollp\" is calculated\n" "> > > > using\n" @@ -33,18 +39,18 @@ "> > > > channel_writel(dwc, LLP, DWC_LLP_LOC(0xffffffff));\n" "> > > > dwc->nollp = DWC_LLP_LOC(channel_readl(dwc, LLP)) == 0;\n" "> > > > channel_writel(dwc, LLP, 0);\n" - "> > > >?\n" + "> > > >\302\240\n" "> > > > I realized that these methods give different results.\n" "> > > > For example on ARC AXS101 SDP in case of using autoconfig\n" "> > > > \"nollp\"\n" "> > > > was\n" - "> > > > calculated as \"true\" (and DMAC works fine),?\n" + "> > > > calculated as \"true\" (and DMAC works fine),\302\240\n" "> > > > otherwise \"nollp\" was calculated as \"false\" (and DMAC doesn't\n" "> > > > work).\n" "> > > Can you show out what the value you read back?\n" "> > channel_readl(dwc, LLP) return 0xfffffffc\n" "> Nice.\n" - ">?\n" + ">\302\240\n" "> Oh, forgot to ask, what are the DW_PARAMS and DWC_PARAMS[x] are on\n" "> the same hardware?\n" "DW_PARAMS: 0x38280b0c\n" @@ -55,9 +61,9 @@ "> I assume we are talking about that one which has no hardware LLP\n" "> support.\n" "Yep.\n" - "> >?\n" - "> > >?\n" - "> > > >?\n" + "> >\302\240\n" + "> > >\302\240\n" + "> > > >\302\240\n" "> > > > So I'm wondering how the code in question really works?\n" "> > > > From DW AHB DMAC databook I wasn't able to find anything\n" "> > > > relevant\n" @@ -75,12 +81,12 @@ "> So, any comment on this one? I suppose you may have an access to some\n" "> internal Synopsys documentation which might shed a light. Or maybe I\n" "> missed something else which should be considered.\n" - "Looks like this code based on idea, what if DMA ip-core doesn't have?\n" + "Looks like this code based on idea, what if DMA ip-core doesn't have\302\240\n" "LLP support it will not have LLP registers. It is not necessarily true.\n" ">\n" - "> >?\n" - "> > >?\n" - "> > > >?\n" + "> >\302\240\n" + "> > >\302\240\n" + "> > > >\302\240\n" "> > > > Maybe we should add \"nollp\" field in pdata structure and\n" "> > > > receive\n" "> > > > it\n" @@ -90,21 +96,21 @@ "> > > be\n" "> > > set\n" "> > > on Intel Quark which might have the same issue as your case [1].\n" - "> > >?\n" + "> > >\302\240\n" "> > > [1] http://www.spinics.net/lists/linux-serial/msg22948.html\n" - "> > >?\n" + "> > >\302\240\n" "> > In which tree I can find this patch applied, so I may base my work\n" "> > on\n" "> > it?\n" "> The series is under review. I'm preparing v10, so, I would like to\n" "> re-\n" "> make this patch with regarding to your input.\n" - ">?\n" + ">\302\240\n" "> For now I would prefer just to remove the trick, but I still wonder\n" "> what\n" "> the circumstances are to bring it not working.\n" - ">?\n" - "Please add this code to read \"is_memcpy\" and \"is_nollp\" property?\n" + ">\302\240\n" + "Please add this code to read \"is_memcpy\" and \"is_nollp\" property\302\240\n" "from device tree.\n" "----------------------------->8------------------------------\n" "diff --git a/drivers/dma/dw/platform.c b/drivers/dma/dw/platform.c\n" @@ -112,20 +118,20 @@ "--- a/drivers/dma/dw/platform.c\n" "+++ b/drivers/dma/dw/platform.c\n" "@@ -129,6 +129,12 @@ dw_dma_parse_dt(struct platform_device *pdev)\n" - "????????if (of_property_read_bool(np, \"is_private\"))\n" - "????????????????pdata->is_private = true;\n" - "?\n" - "+???????if (of_property_read_bool(np, \"is_memcpy\"))\n" - "+???????????????pdata->is_memcpy = true;\n" + "\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (of_property_read_bool(np, \"is_private\"))\n" + "\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240pdata->is_private = true;\n" + "\302\240\n" + "+\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (of_property_read_bool(np, \"is_memcpy\"))\n" + "+\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240pdata->is_memcpy = true;\n" "+\n" - "+???????if (of_property_read_bool(np, \"is_nollp\"))\n" - "+???????????????pdata->is_nollp = true;\n" + "+\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (of_property_read_bool(np, \"is_nollp\"))\n" + "+\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240pdata->is_nollp = true;\n" "+\n" - "????????if (!of_property_read_u32(np, \"chan_allocation_order\", &tmp))\n" - "????????????????pdata->chan_allocation_order = (unsigned char)tmp;\n" - "?\n" + "\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!of_property_read_u32(np, \"chan_allocation_order\", &tmp))\n" + "\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240pdata->chan_allocation_order = (unsigned char)tmp;\n" + "\302\240\n" "----------------------------->8------------------------------\n" - "--?\n" - ?Paltsev Eugeniy + "--\302\240\n" + "\302\240Paltsev Eugeniy" -281c7a57bb0d9adfc47236f9743593f6028aac6b5c4f15ecef3dae32ab2ddb5f +73985118e4b1f02a50c76b9ba5c2299cf771834f12587b3955aff1b63a75bfc5
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.