Message ID | 20191212033714.4090-1-peng.ma@nxp.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v5,1/3] dmaengine: fsl-edma: Add eDMA support for QorIQ LS1028A platform | expand |
On 12-12-19, 03:38, Peng Ma wrote: > Our platforms(such as LS1021A, LS1012A, LS1043A, LS1046A, LS1028A) with > below registers(CHCFG0 - CHCFG15) of eDMA as follows: > *-----------------------------------------------------------* > | Offset | OTHERS | LS1028A | > |--------------|--------------------|-----------------------| > | 0x0 | CHCFG0 | CHCFG3 | > |--------------|--------------------|-----------------------| > | 0x1 | CHCFG1 | CHCFG2 | > |--------------|--------------------|-----------------------| > | 0x2 | CHCFG2 | CHCFG1 | > |--------------|--------------------|-----------------------| > | 0x3 | CHCFG3 | CHCFG0 | > |--------------|--------------------|-----------------------| > | ... | ...... | ...... | > |--------------|--------------------|-----------------------| > | 0xC | CHCFG12 | CHCFG15 | > |--------------|--------------------|-----------------------| > | 0xD | CHCFG13 | CHCFG14 | > |--------------|--------------------|-----------------------| > | 0xE | CHCFG14 | CHCFG13 | > |--------------|--------------------|-----------------------| > | 0xF | CHCFG15 | CHCFG12 | > *-----------------------------------------------------------* > > This patch is to improve edma driver to fit LS1028A platform. Applied this and patch 3, thanks Btw pls send bindings as patch1 and driver changes as patch2.
>-----Original Message----- >From: Vinod Koul <vkoul@kernel.org> >Sent: 2019年12月18日 14:27 >To: Peng Ma <peng.ma@nxp.com> >Cc: robh+dt@kernel.org; mark.rutland@arm.com; shawnguo@kernel.org; Leo >Li <leoyang.li@nxp.com>; dan.j.williams@intel.com; Robin Gong ><yibin.gong@nxp.com>; dmaengine@vger.kernel.org; >devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; >linux-arm-kernel@lists.infradead.org >Subject: [EXT] Re: [v5 1/3] dmaengine: fsl-edma: Add eDMA support for QorIQ >LS1028A platform > >Caution: EXT Email > >On 12-12-19, 03:38, Peng Ma wrote: >> Our platforms(such as LS1021A, LS1012A, LS1043A, LS1046A, LS1028A) >> with below registers(CHCFG0 - CHCFG15) of eDMA as follows: >> *-----------------------------------------------------------* >> | Offset | OTHERS | >LS1028A | >> |--------------|--------------------|-----------------------| >> | 0x0 | CHCFG0 | CHCFG3 | >> |--------------|--------------------|-----------------------| >> | 0x1 | CHCFG1 | CHCFG2 | >> |--------------|--------------------|-----------------------| >> | 0x2 | CHCFG2 | CHCFG1 | >> |--------------|--------------------|-----------------------| >> | 0x3 | CHCFG3 | CHCFG0 | >> |--------------|--------------------|-----------------------| >> | ... | ...... | ...... | >> |--------------|--------------------|-----------------------| >> | 0xC | CHCFG12 | CHCFG15 | >> |--------------|--------------------|-----------------------| >> | 0xD | CHCFG13 | CHCFG14 | >> |--------------|--------------------|-----------------------| >> | 0xE | CHCFG14 | CHCFG13 | >> |--------------|--------------------|-----------------------| >> | 0xF | CHCFG15 | CHCFG12 | >> *-----------------------------------------------------------* >> >> This patch is to improve edma driver to fit LS1028A platform. > Hi Vinod >Applied this and patch 3, thanks > [Peng Ma] Many thanks. >Btw pls send bindings as patch1 and driver changes as patch2. [Peng Ma] I don't understand this sentence, Please give me more information. As I know patch1 is driver changes, patch2 is dts changes, patch3 is binding changes. You accepted patch1 and patch3, I am puzzled for patch2 and your comments. Best Regards, Peng >-- >~Vinod
On 18-12-19, 08:08, Peng Ma wrote: >Btw pls send bindings as patch1 and driver changes as patch2. > [Peng Ma] I don't understand this sentence, Please give me more information. > As I know patch1 is driver changes, patch2 is dts changes, patch3 is binding changes. > You accepted patch1 and patch3, I am puzzled for patch2 and your comments. The order of patches should always be dt-bindings first, followerd by driver change and the dts changes as the last one in the series.
>-----Original Message----- >From: Vinod Koul <vkoul@kernel.org> >Sent: 2019年12月19日 23:55 >To: Peng Ma <peng.ma@nxp.com> >Cc: robh+dt@kernel.org; mark.rutland@arm.com; shawnguo@kernel.org; Leo >Li <leoyang.li@nxp.com>; dan.j.williams@intel.com; Robin Gong ><yibin.gong@nxp.com>; dmaengine@vger.kernel.org; >devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; >linux-arm-kernel@lists.infradead.org >Subject: Re: [EXT] Re: [v5 1/3] dmaengine: fsl-edma: Add eDMA support for >QorIQ LS1028A platform > >Caution: EXT Email > >On 18-12-19, 08:08, Peng Ma wrote: > >Btw pls send bindings as patch1 and driver changes as patch2. >> [Peng Ma] I don't understand this sentence, Please give me more >information. >> As I know patch1 is driver changes, patch2 is dts changes, patch3 is binding >changes. >> You accepted patch1 and patch3, I am puzzled for patch2 and your >comments. > >The order of patches should always be dt-bindings first, followerd by driver >change and the dts changes as the last one in the series. > [Peng Ma] OK,Got it. Thanks very much! Best Regards, Peng >-- >~Vinod
diff --git a/drivers/dma/fsl-edma-common.c b/drivers/dma/fsl-edma-common.c index b1a7ca91701a..5697c3622699 100644 --- a/drivers/dma/fsl-edma-common.c +++ b/drivers/dma/fsl-edma-common.c @@ -109,10 +109,15 @@ void fsl_edma_chan_mux(struct fsl_edma_chan *fsl_chan, u32 ch = fsl_chan->vchan.chan.chan_id; void __iomem *muxaddr; unsigned int chans_per_mux, ch_off; + int endian_diff[4] = {3, 1, -1, -3}; u32 dmamux_nr = fsl_chan->edma->drvdata->dmamuxs; chans_per_mux = fsl_chan->edma->n_chans / dmamux_nr; ch_off = fsl_chan->vchan.chan.chan_id % chans_per_mux; + + if (fsl_chan->edma->drvdata->mux_swap) + ch_off += endian_diff[ch_off % 4]; + muxaddr = fsl_chan->edma->muxbase[ch / chans_per_mux]; slot = EDMAMUX_CHCFG_SOURCE(slot); diff --git a/drivers/dma/fsl-edma-common.h b/drivers/dma/fsl-edma-common.h index 5eaa2902ed39..67e422590c9a 100644 --- a/drivers/dma/fsl-edma-common.h +++ b/drivers/dma/fsl-edma-common.h @@ -147,6 +147,7 @@ struct fsl_edma_drvdata { enum edma_version version; u32 dmamuxs; bool has_dmaclk; + bool mux_swap; int (*setup_irq)(struct platform_device *pdev, struct fsl_edma_engine *fsl_edma); }; diff --git a/drivers/dma/fsl-edma.c b/drivers/dma/fsl-edma.c index b626c06ac2e0..eff7ebd8cf35 100644 --- a/drivers/dma/fsl-edma.c +++ b/drivers/dma/fsl-edma.c @@ -233,6 +233,13 @@ static struct fsl_edma_drvdata vf610_data = { .setup_irq = fsl_edma_irq_init, }; +static struct fsl_edma_drvdata ls1028a_data = { + .version = v1, + .dmamuxs = DMAMUX_NR, + .mux_swap = true, + .setup_irq = fsl_edma_irq_init, +}; + static struct fsl_edma_drvdata imx7ulp_data = { .version = v3, .dmamuxs = 1, @@ -242,6 +249,7 @@ static struct fsl_edma_drvdata imx7ulp_data = { static const struct of_device_id fsl_edma_dt_ids[] = { { .compatible = "fsl,vf610-edma", .data = &vf610_data}, + { .compatible = "fsl,ls1028a-edma", .data = &ls1028a_data}, { .compatible = "fsl,imx7ulp-edma", .data = &imx7ulp_data}, { /* sentinel */ } };