aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/patches-5.4/806-dma-0028-dmaengine-fsl-edma-Add-eDMA-support-for-QorIQ-LS1028.patch
diff options
context:
space:
mode:
authorYangbo Lu <yangbo.lu@nxp.com>2020-04-10 10:47:05 +0800
committerPetr Štetiar <ynezz@true.cz>2020-05-07 12:53:06 +0200
commitcddd4591404fb4c53dc0b3c0b15b942cdbed4356 (patch)
tree392c1179de46b0f804e3789edca19069b64e6b44 /target/linux/layerscape/patches-5.4/806-dma-0028-dmaengine-fsl-edma-Add-eDMA-support-for-QorIQ-LS1028.patch
parentd1d2c0b5579ea4f69a42246c9318539d61ba1999 (diff)
downloadupstream-cddd4591404fb4c53dc0b3c0b15b942cdbed4356.tar.gz
upstream-cddd4591404fb4c53dc0b3c0b15b942cdbed4356.tar.bz2
upstream-cddd4591404fb4c53dc0b3c0b15b942cdbed4356.zip
layerscape: add patches-5.4
Add patches for linux-5.4. The patches are from NXP LSDK-20.04 release which was tagged LSDK-20.04-V5.4. https://source.codeaurora.org/external/qoriq/qoriq-components/linux/ For boards LS1021A-IOT, and Traverse-LS1043 which are not involved in LSDK, port the dts patches from 4.14. The patches are sorted into the following categories: 301-arch-xxxx 302-dts-xxxx 303-core-xxxx 701-net-xxxx 801-audio-xxxx 802-can-xxxx 803-clock-xxxx 804-crypto-xxxx 805-display-xxxx 806-dma-xxxx 807-gpio-xxxx 808-i2c-xxxx 809-jailhouse-xxxx 810-keys-xxxx 811-kvm-xxxx 812-pcie-xxxx 813-pm-xxxx 814-qe-xxxx 815-sata-xxxx 816-sdhc-xxxx 817-spi-xxxx 818-thermal-xxxx 819-uart-xxxx 820-usb-xxxx 821-vfio-xxxx Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
Diffstat (limited to 'target/linux/layerscape/patches-5.4/806-dma-0028-dmaengine-fsl-edma-Add-eDMA-support-for-QorIQ-LS1028.patch')
-rw-r--r--target/linux/layerscape/patches-5.4/806-dma-0028-dmaengine-fsl-edma-Add-eDMA-support-for-QorIQ-LS1028.patch94
1 files changed, 94 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-5.4/806-dma-0028-dmaengine-fsl-edma-Add-eDMA-support-for-QorIQ-LS1028.patch b/target/linux/layerscape/patches-5.4/806-dma-0028-dmaengine-fsl-edma-Add-eDMA-support-for-QorIQ-LS1028.patch
new file mode 100644
index 0000000000..611f96b1a8
--- /dev/null
+++ b/target/linux/layerscape/patches-5.4/806-dma-0028-dmaengine-fsl-edma-Add-eDMA-support-for-QorIQ-LS1028.patch
@@ -0,0 +1,94 @@
+From 83d2cb1c64c5a34f23b34fcee715a68be230c232 Mon Sep 17 00:00:00 2001
+From: Peng Ma <peng.ma@nxp.com>
+Date: Thu, 12 Dec 2019 03:38:10 +0000
+Subject: [PATCH] dmaengine: fsl-edma: Add eDMA support for QorIQ LS1028A
+ platform
+
+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>
+Link: https://lore.kernel.org/r/20191212033714.4090-1-peng.ma@nxp.com
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+---
+ 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(+)
+
+--- 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_c
+ 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);
+
+--- a/drivers/dma/fsl-edma-common.h
++++ b/drivers/dma/fsl-edma-common.h
+@@ -148,6 +148,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);
+ };
+--- a/drivers/dma/fsl-edma.c
++++ b/drivers/dma/fsl-edma.c
+@@ -234,6 +234,13 @@ static struct fsl_edma_drvdata vf610_dat
+ .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,
+@@ -243,6 +250,7 @@ static struct fsl_edma_drvdata imx7ulp_d
+
+ 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 */ }
+ };