dmaengine: pl330: do not emit loop for 1 byte transfer.
authorMichal Suchanek <hramrach@gmail.com>
Thu, 23 Jul 2015 16:04:49 +0000 (18:04 +0200)
committerVinod Koul <vinod.koul@intel.com>
Wed, 19 Aug 2015 16:41:46 +0000 (22:11 +0530)
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>
drivers/dma/pl330.c

index f513f77b1d85471ff0997f8d9f4755deca293621..257e0d90475a2fd024b6753937980f332a4c4e0d 100644 (file)
@@ -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;