aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/patches-5.4/806-dma-0012-MLK-17094-dma-fsl-edma-v3-add-suspend-resume-to-rest.patch
diff options
context:
space:
mode:
authorDaniel Golle <daniel@makrotopia.org>2022-03-21 01:16:48 +0000
committerDaniel Golle <daniel@makrotopia.org>2022-03-21 13:11:56 +0000
commit786bf7fdaca4c75e7eba6e9aa3a8b5775fd21186 (patch)
tree926fecb2b1f6ce1e42ba7ef4c7aab8e68dfd214c /target/linux/layerscape/patches-5.4/806-dma-0012-MLK-17094-dma-fsl-edma-v3-add-suspend-resume-to-rest.patch
parent9470160c350d15f765c33d6c1db15d6c4709a64c (diff)
downloadupstream-786bf7fdaca4c75e7eba6e9aa3a8b5775fd21186.tar.gz
upstream-786bf7fdaca4c75e7eba6e9aa3a8b5775fd21186.tar.bz2
upstream-786bf7fdaca4c75e7eba6e9aa3a8b5775fd21186.zip
kernel: delete Linux 5.4 config and patches
As the upcoming release will be based on Linux 5.10 only, remove all kernel configuration as well as patches for Linux 5.4. There were no targets still actively using Linux 5.4. Signed-off-by: Daniel Golle <daniel@makrotopia.org> (cherry picked from commit 3a14580411adfb75f9a44eded9f41245b9e44606)
Diffstat (limited to 'target/linux/layerscape/patches-5.4/806-dma-0012-MLK-17094-dma-fsl-edma-v3-add-suspend-resume-to-rest.patch')
-rw-r--r--target/linux/layerscape/patches-5.4/806-dma-0012-MLK-17094-dma-fsl-edma-v3-add-suspend-resume-to-rest.patch192
1 files changed, 0 insertions, 192 deletions
diff --git a/target/linux/layerscape/patches-5.4/806-dma-0012-MLK-17094-dma-fsl-edma-v3-add-suspend-resume-to-rest.patch b/target/linux/layerscape/patches-5.4/806-dma-0012-MLK-17094-dma-fsl-edma-v3-add-suspend-resume-to-rest.patch
deleted file mode 100644
index e9ca236556..0000000000
--- a/target/linux/layerscape/patches-5.4/806-dma-0012-MLK-17094-dma-fsl-edma-v3-add-suspend-resume-to-rest.patch
+++ /dev/null
@@ -1,192 +0,0 @@
-From 411a2f6ad13bd58646de34a340553232044f0951 Mon Sep 17 00:00:00 2001
-From: Robin Gong <yibin.gong@nxp.com>
-Date: Mon, 4 Dec 2017 15:35:09 +0800
-Subject: [PATCH] MLK-17094 dma: fsl-edma-v3: add suspend/resume to restore
- back channel registers
-
-Add suspend to save channel registers and resume to restore them back since
-edmav3 may powered off in suspend.
-
-Signed-off-by: Robin Gong <yibin.gong@nxp.com>
-(cherry picked from commit 7eda1ae538ec7e7c0f993b3ea91805459f3dedd3)
----
- drivers/dma/fsl-edma-v3.c | 86 +++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 86 insertions(+)
-
---- a/drivers/dma/fsl-edma-v3.c
-+++ b/drivers/dma/fsl-edma-v3.c
-@@ -111,6 +111,11 @@
- #define CHAN_PREFIX "edma0-chan"
- #define CHAN_POSFIX "-tx"
-
-+enum fsl_edma3_pm_state {
-+ RUNNING = 0,
-+ SUSPENDED,
-+};
-+
- struct fsl_edma3_hw_tcd {
- __le32 saddr;
- __le16 soff;
-@@ -142,6 +147,8 @@ struct fsl_edma3_slave_config {
- struct fsl_edma3_chan {
- struct virt_dma_chan vchan;
- enum dma_status status;
-+ enum fsl_edma3_pm_state pm_state;
-+ bool idle;
- struct fsl_edma3_engine *edma3;
- struct fsl_edma3_desc *edesc;
- struct fsl_edma3_slave_config fsc;
-@@ -165,11 +172,18 @@ struct fsl_edma3_desc {
- struct fsl_edma3_sw_tcd tcd[];
- };
-
-+struct fsl_edma3_reg_save {
-+ u32 csr;
-+ u32 sbr;
-+};
-+
- struct fsl_edma3_engine {
- struct dma_device dma_dev;
- struct mutex fsl_edma3_mutex;
- u32 n_chans;
- int errirq;
-+ #define MAX_CHAN_NUM 32
-+ struct fsl_edma3_reg_save edma_regs[MAX_CHAN_NUM];
- bool swap; /* remote/local swapped on Audio edma */
- struct fsl_edma3_chan chans[];
- };
-@@ -266,6 +280,7 @@ static int fsl_edma3_terminate_all(struc
- spin_lock_irqsave(&fsl_chan->vchan.lock, flags);
- fsl_edma3_disable_request(fsl_chan);
- fsl_chan->edesc = NULL;
-+ fsl_chan->idle = true;
- vchan_get_all_descriptors(&fsl_chan->vchan, &head);
- spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags);
- vchan_dma_desc_free_list(&fsl_chan->vchan, &head);
-@@ -281,6 +296,7 @@ static int fsl_edma3_pause(struct dma_ch
- if (fsl_chan->edesc) {
- fsl_edma3_disable_request(fsl_chan);
- fsl_chan->status = DMA_PAUSED;
-+ fsl_chan->idle = true;
- }
- spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags);
- return 0;
-@@ -295,6 +311,7 @@ static int fsl_edma3_resume(struct dma_c
- if (fsl_chan->edesc) {
- fsl_edma3_enable_request(fsl_chan);
- fsl_chan->status = DMA_IN_PROGRESS;
-+ fsl_chan->idle = false;
- }
- spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags);
- return 0;
-@@ -664,6 +681,7 @@ static void fsl_edma3_xfer_desc(struct f
- fsl_edma3_set_tcd_regs(fsl_chan, fsl_chan->edesc->tcd[0].vtcd);
- fsl_edma3_enable_request(fsl_chan);
- fsl_chan->status = DMA_IN_PROGRESS;
-+ fsl_chan->idle = false;
- }
-
- static size_t fsl_edma3_desc_residue(struct fsl_edma3_chan *fsl_chan,
-@@ -700,6 +718,7 @@ static irqreturn_t fsl_edma3_tx_handler(
- vchan_cookie_complete(&fsl_chan->edesc->vdesc);
- fsl_chan->edesc = NULL;
- fsl_chan->status = DMA_COMPLETE;
-+ fsl_chan->idle = true;
- } else {
- vchan_cyclic_callback(&fsl_chan->edesc->vdesc);
- }
-@@ -719,6 +738,12 @@ static void fsl_edma3_issue_pending(stru
-
- spin_lock_irqsave(&fsl_chan->vchan.lock, flags);
-
-+ if (unlikely(fsl_chan->pm_state != RUNNING)) {
-+ spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags);
-+ /* cannot submit due to suspend */
-+ return;
-+ }
-+
- if (vchan_issue_pending(&fsl_chan->vchan) && !fsl_chan->edesc)
- fsl_edma3_xfer_desc(fsl_chan);
-
-@@ -821,6 +846,8 @@ static int fsl_edma3_probe(struct platfo
- unsigned long val;
-
- fsl_chan->edma3 = fsl_edma3;
-+ fsl_chan->pm_state = RUNNING;
-+ fsl_chan->idle = true;
- /* Get per channel membase */
- res = platform_get_resource(pdev, IORESOURCE_MEM, i);
- fsl_chan->membase = devm_ioremap_resource(&pdev->dev, res);
-@@ -932,6 +959,64 @@ static int fsl_edma3_remove(struct platf
- return 0;
- }
-
-+static int fsl_edma3_suspend_late(struct device *dev)
-+{
-+ struct fsl_edma3_engine *fsl_edma = dev_get_drvdata(dev);
-+ struct fsl_edma3_chan *fsl_chan;
-+ unsigned long flags;
-+ void __iomem *addr;
-+ int i;
-+
-+ for (i = 0; i < fsl_edma->n_chans; i++) {
-+ fsl_chan = &fsl_edma->chans[i];
-+ addr = fsl_chan->membase;
-+
-+ spin_lock_irqsave(&fsl_chan->vchan.lock, flags);
-+ fsl_edma->edma_regs[i].csr = readl(addr + EDMA_CH_CSR);
-+ fsl_edma->edma_regs[i].sbr = readl(addr + EDMA_CH_SBR);
-+ /* Make sure chan is idle or will force disable. */
-+ if (unlikely(!fsl_chan->idle)) {
-+ dev_warn(dev, "WARN: There is non-idle channel.");
-+ fsl_edma3_disable_request(fsl_chan);
-+ }
-+ fsl_chan->pm_state = SUSPENDED;
-+ spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags);
-+ }
-+
-+ return 0;
-+}
-+
-+static int fsl_edma3_resume_early(struct device *dev)
-+{
-+ struct fsl_edma3_engine *fsl_edma = dev_get_drvdata(dev);
-+ struct fsl_edma3_chan *fsl_chan;
-+ void __iomem *addr;
-+ unsigned long flags;
-+ int i;
-+
-+ for (i = 0; i < fsl_edma->n_chans; i++) {
-+ fsl_chan = &fsl_edma->chans[i];
-+ addr = fsl_chan->membase;
-+
-+ spin_lock_irqsave(&fsl_chan->vchan.lock, flags);
-+ writel(fsl_edma->edma_regs[i].csr, addr + EDMA_CH_CSR);
-+ writel(fsl_edma->edma_regs[i].sbr, addr + EDMA_CH_SBR);
-+ /* restore tcd if this channel not terminated before suspend */
-+ if (fsl_chan->edesc)
-+ fsl_edma3_set_tcd_regs(fsl_chan,
-+ fsl_chan->edesc->tcd[0].vtcd);
-+ fsl_chan->pm_state = RUNNING;
-+ spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags);
-+ }
-+
-+ return 0;
-+}
-+
-+static const struct dev_pm_ops fsl_edma3_pm_ops = {
-+ .suspend_late = fsl_edma3_suspend_late,
-+ .resume_early = fsl_edma3_resume_early,
-+};
-+
- static const struct of_device_id fsl_edma3_dt_ids[] = {
- { .compatible = "fsl,imx8qm-edma", },
- { .compatible = "fsl,imx8qm-adma", },
-@@ -943,6 +1028,7 @@ static struct platform_driver fsl_edma3_
- .driver = {
- .name = "fsl-edma-v3",
- .of_match_table = fsl_edma3_dt_ids,
-+ .pm = &fsl_edma3_pm_ops,
- },
- .probe = fsl_edma3_probe,
- .remove = fsl_edma3_remove,