| b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 1 | From 0ae3e11113b3132167308c26259f25b504da6ddc Mon Sep 17 00:00:00 2001 |
| 2 | From: Robin Gong <yibin.gong@nxp.com> |
| 3 | Date: Tue, 24 Jul 2018 22:12:24 +0800 |
| 4 | Subject: [PATCH] MLK-19022-2: dmaengine: fsl-edma-v3: add device_synchronize |
| 5 | |
| 6 | Add device_synchronize for edma driver, since some driver such as |
| 7 | Audio need it to make sure dma done callback never come out after |
| 8 | resource related with dma channel free-ed by Audio driver. Android |
| 9 | team report such issue on MA-12087. |
| 10 | |
| 11 | Signed-off-by: Robin Gong <yibin.gong@nxp.com> |
| 12 | (cherry picked from commit 483519c063b08fc1ce0dd297b6c186799cf639d6) |
| 13 | (cherry picked from commit 29ab274aca01ef8f5fc70e8c0a6d43a5bdb3c689) |
| 14 | --- |
| 15 | drivers/dma/fsl-edma-v3.c | 8 ++++++++ |
| 16 | 1 file changed, 8 insertions(+) |
| 17 | |
| 18 | --- a/drivers/dma/fsl-edma-v3.c |
| 19 | +++ b/drivers/dma/fsl-edma-v3.c |
| 20 | @@ -812,6 +812,13 @@ static void fsl_edma3_free_chan_resource |
| 21 | fsl_chan->used = false; |
| 22 | } |
| 23 | |
| 24 | +static void fsl_edma3_synchronize(struct dma_chan *chan) |
| 25 | +{ |
| 26 | + struct fsl_edma3_chan *fsl_chan = to_fsl_edma3_chan(chan); |
| 27 | + |
| 28 | + vchan_synchronize(&fsl_chan->vchan); |
| 29 | +} |
| 30 | + |
| 31 | static int fsl_edma3_probe(struct platform_device *pdev) |
| 32 | { |
| 33 | struct device_node *np = pdev->dev.of_node; |
| 34 | @@ -927,6 +934,7 @@ static int fsl_edma3_probe(struct platfo |
| 35 | fsl_edma3->dma_dev.device_resume = fsl_edma3_resume; |
| 36 | fsl_edma3->dma_dev.device_terminate_all = fsl_edma3_terminate_all; |
| 37 | fsl_edma3->dma_dev.device_issue_pending = fsl_edma3_issue_pending; |
| 38 | + fsl_edma3->dma_dev.device_synchronize = fsl_edma3_synchronize; |
| 39 | |
| 40 | fsl_edma3->dma_dev.src_addr_widths = FSL_EDMA_BUSWIDTHS; |
| 41 | fsl_edma3->dma_dev.dst_addr_widths = FSL_EDMA_BUSWIDTHS; |