Browse Source

dmaengine: pl330: do not emit loop for 1 byte transfer.

When there is only one burst required do not emit loop instructions to
loop exactly once. Emit just the body of the loop.

Signed-off-by: Michal Suchanek <hramrach@gmail.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Michal Suchanek 10 years ago
parent
commit
31495d60a0
1 changed files with 3 additions and 0 deletions
  1. 3 0
      drivers/dma/pl330.c

+ 3 - 0
drivers/dma/pl330.c

@@ -1198,6 +1198,9 @@ static inline int _loop(unsigned dry_run, u8 buf[],
 	unsigned lcnt0, lcnt1, ljmp0, ljmp1;
 	struct _arg_LPEND lpend;
 
+	if (*bursts == 1)
+		return _bursts(dry_run, buf, pxs, 1);
+
 	/* Max iterations possible in DMALP is 256 */
 	if (*bursts >= 256*256) {
 		lcnt1 = 256;