diff mbox series

[v5,1/3] dmaengine: fsl-edma: Add eDMA support for QorIQ LS1028A platform

Message ID 20191212033714.4090-1-peng.ma@nxp.com (mailing list archive)
State Accepted
Headers show
Series [v5,1/3] dmaengine: fsl-edma: Add eDMA support for QorIQ LS1028A platform | expand

Commit Message

Peng Ma Dec. 12, 2019, 3:38 a.m. UTC
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.

Signed-off-by: Peng Ma <peng.ma@nxp.com>
Reviewed-by: Robin Gong <yibin.gong@nxp.com>
---
Changed for v5:
	- no changes

 drivers/dma/fsl-edma-common.c | 5 +++++
 drivers/dma/fsl-edma-common.h | 1 +
 drivers/dma/fsl-edma.c        | 8 ++++++++
 3 files changed, 14 insertions(+)

Comments

Vinod Koul Dec. 18, 2019, 6:26 a.m. UTC | #1
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.
Peng Ma Dec. 18, 2019, 8:08 a.m. UTC | #2
>-----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
Vinod Koul Dec. 19, 2019, 3:54 p.m. UTC | #3
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 Dec. 23, 2019, 6:12 a.m. UTC | #4
>-----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 mbox series

Patch

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 */ }
 };