dmaengine: dw: replace convert_burst() with one liner
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 17 Jan 2017 11:57:27 +0000 (13:57 +0200)
committerVinod Koul <vinod.koul@intel.com>
Wed, 25 Jan 2017 06:21:39 +0000 (11:51 +0530)
Replace convert_burst() with one liner in place.

The change simplifies further extension of the driver to cover new DMA
controller hardware.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/dw/core.c

index 87516246c445172497e1c337dc34b665bdafe97d..e3749ec9901689aaa793c3c4991af6fc22fdd199 100644 (file)
@@ -901,25 +901,18 @@ bool dw_dma_filter(struct dma_chan *chan, void *param)
 }
 EXPORT_SYMBOL_GPL(dw_dma_filter);
 
-/*
- * Fix sconfig's burst size according to dw_dmac. We need to convert them as:
- * 1 -> 0, 4 -> 1, 8 -> 2, 16 -> 3.
- *
- * NOTE: burst size 2 is not supported by controller.
- *
- * This can be done by finding least significant bit set: n & (n - 1)
- */
-static inline void convert_burst(u32 *maxburst)
-{
-       if (*maxburst > 1)
-               *maxburst = fls(*maxburst) - 2;
-       else
-               *maxburst = 0;
-}
-
 static int dwc_config(struct dma_chan *chan, struct dma_slave_config *sconfig)
 {
        struct dw_dma_chan *dwc = to_dw_dma_chan(chan);
+       struct dma_slave_config *sc = &dwc->dma_sconfig;
+       /*
+        * Fix sconfig's burst size according to dw_dmac. We need to convert
+        * them as:
+        * 1 -> 0, 4 -> 1, 8 -> 2, 16 -> 3.
+        *
+        * NOTE: burst size 2 is not supported by DesignWare controller.
+        */
+       u32 s = 2;
 
        /* Check if chan will be configured for slave transfers */
        if (!is_slave_direction(sconfig->direction))
@@ -928,8 +921,8 @@ static int dwc_config(struct dma_chan *chan, struct dma_slave_config *sconfig)
        memcpy(&dwc->dma_sconfig, sconfig, sizeof(*sconfig));
        dwc->direction = sconfig->direction;
 
-       convert_burst(&dwc->dma_sconfig.src_maxburst);
-       convert_burst(&dwc->dma_sconfig.dst_maxburst);
+       sc->src_maxburst = sc->src_maxburst > 1 ? fls(sc->src_maxburst) - s : 0;
+       sc->dst_maxburst = sc->dst_maxburst > 1 ? fls(sc->dst_maxburst) - s : 0;
 
        return 0;
 }