On 9/14/20 5:09 PM, Eugen Hristev wrote: > The PERID in the CC register for mem2mem operations must match an unused > PERID. > The PERID field is 7 bits, but the selected value is 0x3f. > On later products we can have more reserved PERIDs for actual peripherals, > thus this needs to be increased to maximum size. > Changing the value to 0x7f, which is the maximum for 7 bits field. > Maybe it is worth to explain that for memory-to-memory transfers, PERID should be set to an unused peripheral ID, and the maximum value seems the safest. Anyway with or without this addressed, one can add: Reviewed-by: Tudor Ambarus <tudor.ambarus@xxxxxxxxxxxxx> > Signed-off-by: Eugen Hristev <eugen.hristev@xxxxxxxxxxxxx> > --- > drivers/dma/at_xdmac.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c > index fab19e00a7be..81bb90206092 100644 > --- a/drivers/dma/at_xdmac.c > +++ b/drivers/dma/at_xdmac.c > @@ -726,7 +726,7 @@ at_xdmac_interleaved_queue_desc(struct dma_chan *chan, > * match the one of another channel. If not, it could lead to spurious > * flag status. > */ > - u32 chan_cc = AT_XDMAC_CC_PERID(0x3f) > + u32 chan_cc = AT_XDMAC_CC_PERID(0x7f) > | AT_XDMAC_CC_DIF(0) > | AT_XDMAC_CC_SIF(0) > | AT_XDMAC_CC_MBSIZE_SIXTEEN > @@ -908,7 +908,7 @@ at_xdmac_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dest, dma_addr_t src, > * match the one of another channel. If not, it could lead to spurious > * flag status. > */ > - u32 chan_cc = AT_XDMAC_CC_PERID(0x3f) > + u32 chan_cc = AT_XDMAC_CC_PERID(0x7f) > | AT_XDMAC_CC_DAM_INCREMENTED_AM > | AT_XDMAC_CC_SAM_INCREMENTED_AM > | AT_XDMAC_CC_DIF(0) > @@ -1014,7 +1014,7 @@ static struct at_xdmac_desc *at_xdmac_memset_create_desc(struct dma_chan *chan, > * match the one of another channel. If not, it could lead to spurious > * flag status. > */ > - u32 chan_cc = AT_XDMAC_CC_PERID(0x3f) > + u32 chan_cc = AT_XDMAC_CC_PERID(0x7f) > | AT_XDMAC_CC_DAM_UBS_AM > | AT_XDMAC_CC_SAM_INCREMENTED_AM > | AT_XDMAC_CC_DIF(0) >