From 649d61fc17259fd96bf4f3e7572047a698366eef Mon Sep 17 00:00:00 2001 From: Anurag Kumar Vulisha Date: Fri, 28 Aug 2015 12:05:43 +0530 Subject: [PATCH] vdma: Corrected the hsize and stride alignment logic This patch corrects the hsize and stride alignment logic when DRE is not enabled in the design. Signed-off-by: Anurag Kumar Vulisha Reviewed-by: Kedareswara rao Appana --- XilinxProcessorIPLib/drivers/axivdma/src/xaxivdma_channel.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/XilinxProcessorIPLib/drivers/axivdma/src/xaxivdma_channel.c b/XilinxProcessorIPLib/drivers/axivdma/src/xaxivdma_channel.c index 436620a7..c7eb8f24 100644 --- a/XilinxProcessorIPLib/drivers/axivdma/src/xaxivdma_channel.c +++ b/XilinxProcessorIPLib/drivers/axivdma/src/xaxivdma_channel.c @@ -652,6 +652,8 @@ int XAxiVdma_ChannelConfig(XAxiVdma_Channel *Channel, } else { hsize_align = (u32)(ChannelCfgPtr->HoriSizeInput % Channel->WordLength); + if (hsize_align > 0) + hsize_align = (Channel->WordLength - hsize_align); } } else { if (ChannelCfgPtr->HoriSizeInput < Channel->WordLength) { @@ -659,6 +661,8 @@ int XAxiVdma_ChannelConfig(XAxiVdma_Channel *Channel, } else { hsize_align = (u32)(ChannelCfgPtr->HoriSizeInput % Channel->StreamWidth); + if (hsize_align > 0) + hsize_align = (Channel->StreamWidth - hsize_align); } } @@ -667,6 +671,8 @@ int XAxiVdma_ChannelConfig(XAxiVdma_Channel *Channel, stride_align = (u32)Channel->WordLength; } else { stride_align = (u32)(ChannelCfgPtr->Stride % Channel->WordLength); + if (stride_align > 0) + stride_align = (Channel->WordLength - stride_align); } /* If hardware has no DRE, then Hsize and Stride must