Skip to content

Commit a902f6f

Browse files
noglitchcristibirsan
authored andcommitted
dmaengine: at_xdmac: only monitor overflow errors for peripheral xfer
The overflow error flag (ROI: Request Overflow Error) is only relevant for the case when the channel handles a peripheral synchronized transfer. Not in the case of memory to memory transfer where there is no hardware request signal. Remove the use of this interrupt source in such a case. It's based on the first descriptor which holds the configuration for the whole linked list transfer. Signed-off-by: Nicolas Ferre <[email protected]>
1 parent 5256278 commit a902f6f

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

drivers/dma/at_xdmac.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,11 @@ static inline int at_xdmac_csize(u32 maxburst)
308308
return csize;
309309
};
310310

311+
static inline bool at_xdmac_chan_is_peripheral_xfer(u32 cfg)
312+
{
313+
return cfg & AT_XDMAC_CC_TYPE_PER_TRAN;
314+
}
315+
311316
static inline u8 at_xdmac_get_dwidth(u32 cfg)
312317
{
313318
return (cfg & AT_XDMAC_CC_DWIDTH_MASK) >> AT_XDMAC_CC_DWIDTH_OFFSET;
@@ -389,7 +394,13 @@ static void at_xdmac_start_xfer(struct at_xdmac_chan *atchan,
389394
at_xdmac_chan_read(atchan, AT_XDMAC_CUBC));
390395

391396
at_xdmac_chan_write(atchan, AT_XDMAC_CID, 0xffffffff);
392-
reg = AT_XDMAC_CIE_RBEIE | AT_XDMAC_CIE_WBEIE | AT_XDMAC_CIE_ROIE;
397+
reg = AT_XDMAC_CIE_RBEIE | AT_XDMAC_CIE_WBEIE;
398+
/*
399+
* Request Overflow Error is only for peripheral synchronized transfers
400+
*/
401+
if (at_xdmac_chan_is_peripheral_xfer(first->lld.mbr_cfg))
402+
reg |= AT_XDMAC_CIE_ROIE;
403+
393404
/*
394405
* There is no end of list when doing cyclic dma, we need to get
395406
* an interrupt after each periods.

0 commit comments

Comments
 (0)