diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c
index 0f4b9a3d43f59d0af840c58c4d60a86b7355681d..da4065b661985b3bf50eb6137a85c3d6ba717792 100644
--- a/drivers/dma/imx-sdma.c
+++ b/drivers/dma/imx-sdma.c
@@ -197,7 +197,7 @@
 				 BIT(DMA_MEM_TO_DEV) | \
 				 BIT(DMA_DEV_TO_DEV))
 
-#define SDMA_WATERMARK_LEVEL_FIFOS_OFF	8
+#define SDMA_WATERMARK_LEVEL_FIFOS_OFF	12
 #define SDMA_WATERMARK_LEVEL_SW_DONE	BIT(23)
 #define SDMA_WATERMARK_LEVEL_SW_DONE_SEL_OFF 24
 
@@ -1192,7 +1192,7 @@ static void sdma_set_watermarklevel_for_p2p(struct sdma_channel *sdmac)
 
 static void sdma_set_watermarklevel_for_sais(struct sdma_channel *sdmac)
 {
-	sdmac->watermark_level &= ~(0xFFF << SDMA_WATERMARK_LEVEL_FIFOS_OFF |
+	sdmac->watermark_level &= ~(0xFF << SDMA_WATERMARK_LEVEL_FIFOS_OFF |
 				    SDMA_WATERMARK_LEVEL_SW_DONE |
 				    0xf << SDMA_WATERMARK_LEVEL_SW_DONE_SEL_OFF);
 
@@ -1202,9 +1202,9 @@ static void sdma_set_watermarklevel_for_sais(struct sdma_channel *sdmac)
 			SDMA_WATERMARK_LEVEL_SW_DONE_SEL_OFF;
 
 	/* For fifo_num
-	 * bit 0-7 is the fifo number;
-	 * bit 8-11 is the fifo offset,
-	 * so here only need to shift left fifo_num 8 bit for watermake_level
+	 * bit 12-15 is the fifo number;
+	 * bit 16-19 is the fifo offset,
+	 * so here only need to shift left fifo_num 12 bit for watermake_level
 	 */
 	sdmac->watermark_level |= sdmac->fifo_num<<
 				SDMA_WATERMARK_LEVEL_FIFOS_OFF;