dmaengine: imx-sdma: Support 24bit/3bytes for sg mode
authorShengjiu Wang <shengjiu.wang@nxp.com>
Fri, 29 Mar 2024 14:34:42 +0000 (10:34 -0400)
committerVinod Koul <vkoul@kernel.org>
Sun, 7 Apr 2024 11:19:25 +0000 (16:49 +0530)
Update 3bytes buswidth that is supported by sdma.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Signed-off-by: Vipul Kumar <vipul_kumar@mentor.com>
Signed-off-by: Srikanth Krishnakar <Srikanth_Krishnakar@mentor.com>
Acked-by: Robin Gong <yibin.gong@nxp.com>
Reviewed-by: Joy Zou <joy.zou@nxp.com>
Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
Link: https://lore.kernel.org/r/20240329-sdma_upstream-v4-2-daeb3067dea7@nxp.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/imx-sdma.c

index 4f1a9d1b152d66402a5032137d9ca055c11093f3..6be4c1e4412665313833974facf295ec7fd7c1ee 100644 (file)
 
 #define SDMA_DMA_BUSWIDTHS     (BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | \
                                 BIT(DMA_SLAVE_BUSWIDTH_2_BYTES) | \
+                                BIT(DMA_SLAVE_BUSWIDTH_3_BYTES) | \
                                 BIT(DMA_SLAVE_BUSWIDTH_4_BYTES))
 
 #define SDMA_DMA_DIRECTIONS    (BIT(DMA_DEV_TO_MEM) | \
@@ -1658,6 +1659,9 @@ static struct dma_async_tx_descriptor *sdma_prep_slave_sg(
                        if (count & 3 || sg->dma_address & 3)
                                goto err_bd_out;
                        break;
+               case DMA_SLAVE_BUSWIDTH_3_BYTES:
+                       bd->mode.command = 3;
+                       break;
                case DMA_SLAVE_BUSWIDTH_2_BYTES:
                        bd->mode.command = 2;
                        if (count & 1 || sg->dma_address & 1)