dmaengine: ste_dma40: use writel_relaxed for lcxa
authorPer Forlin <per.forlin@stericsson.com>
Wed, 28 Sep 2011 07:32:20 +0000 (09:32 +0200)
committerFabio Baltieri <fabio.baltieri@linaro.org>
Mon, 14 Jan 2013 09:50:15 +0000 (10:50 +0100)
lcpa and lcla are written often and the cache_sync() overhead in writel
is costly, especially for wlan where every single network packet (in RX
mode) corresponds to a separate DMA transfer.

Signed-off-by: Per Forlin <per.forlin@stericsson.com>
Reviewed-by: Narayanan Gopalakrishnan <narayanan.gopalakrishnan@stericsson.com>
Reviewed-by: Rabin Vincent <rabin.vincent@stericsson.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org>
drivers/dma/ste_dma40_ll.c

index d64b72ae2dc8cb1cafb226c70b37ab10edbdf0d0..1cfe7ab50c6b192b627c6599093c010e9aa45e27 100644 (file)
@@ -332,10 +332,10 @@ void d40_log_lli_lcpa_write(struct d40_log_lli_full *lcpa,
 {
        d40_log_lli_link(lli_dst, lli_src, next, flags);
 
-       writel(lli_src->lcsp02, &lcpa[0].lcsp0);
-       writel(lli_src->lcsp13, &lcpa[0].lcsp1);
-       writel(lli_dst->lcsp02, &lcpa[0].lcsp2);
-       writel(lli_dst->lcsp13, &lcpa[0].lcsp3);
+       writel_relaxed(lli_src->lcsp02, &lcpa[0].lcsp0);
+       writel_relaxed(lli_src->lcsp13, &lcpa[0].lcsp1);
+       writel_relaxed(lli_dst->lcsp02, &lcpa[0].lcsp2);
+       writel_relaxed(lli_dst->lcsp13, &lcpa[0].lcsp3);
 }
 
 void d40_log_lli_lcla_write(struct d40_log_lli *lcla,
@@ -345,10 +345,10 @@ void d40_log_lli_lcla_write(struct d40_log_lli *lcla,
 {
        d40_log_lli_link(lli_dst, lli_src, next, flags);
 
-       writel(lli_src->lcsp02, &lcla[0].lcsp02);
-       writel(lli_src->lcsp13, &lcla[0].lcsp13);
-       writel(lli_dst->lcsp02, &lcla[1].lcsp02);
-       writel(lli_dst->lcsp13, &lcla[1].lcsp13);
+       writel_relaxed(lli_src->lcsp02, &lcla[0].lcsp02);
+       writel_relaxed(lli_src->lcsp13, &lcla[0].lcsp13);
+       writel_relaxed(lli_dst->lcsp02, &lcla[1].lcsp02);
+       writel_relaxed(lli_dst->lcsp13, &lcla[1].lcsp13);
 }
 
 static void d40_log_fill_lli(struct d40_log_lli *lli,