lkml.org 
[lkml]   [2020]   [May]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 06/16] spi: dw: Parameterize the DMA Rx/Tx burst length
    Date
    It isn't good to have numeric literals in the code especially if there
    are multiple of them and they are related. Let's replace the Tx and Rx
    burst level literals with the corresponding constants.

    Co-developed-by: Georgy Vlasov <Georgy.Vlasov@baikalelectronics.ru>
    Signed-off-by: Georgy Vlasov <Georgy.Vlasov@baikalelectronics.ru>
    Co-developed-by: Ramil Zaripov <Ramil.Zaripov@baikalelectronics.ru>
    Signed-off-by: Ramil Zaripov <Ramil.Zaripov@baikalelectronics.ru>
    Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
    Cc: Alexey Malahov <Alexey.Malahov@baikalelectronics.ru>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Paul Burton <paulburton@kernel.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Rob Herring <robh+dt@kernel.org>
    Cc: linux-mips@vger.kernel.org
    Cc: devicetree@vger.kernel.org

    ---

    Changelog v3:
    - Discard the dws->fifo_len utilization in the Tx FIFO DMA threshold
    setting.
    ---
    drivers/spi/spi-dw-mid.c | 10 ++++++----
    1 file changed, 6 insertions(+), 4 deletions(-)

    diff --git a/drivers/spi/spi-dw-mid.c b/drivers/spi/spi-dw-mid.c
    index c39bc8758339..1598c36c905f 100644
    --- a/drivers/spi/spi-dw-mid.c
    +++ b/drivers/spi/spi-dw-mid.c
    @@ -20,7 +20,9 @@

    #define WAIT_RETRIES 5
    #define RX_BUSY 0
    +#define RX_BURST_LEVEL 16
    #define TX_BUSY 1
    +#define TX_BURST_LEVEL 16

    static bool mid_spi_dma_chan_filter(struct dma_chan *chan, void *param)
    {
    @@ -198,7 +200,7 @@ static struct dma_async_tx_descriptor *dw_spi_dma_prepare_tx(struct dw_spi *dws,
    memset(&txconf, 0, sizeof(txconf));
    txconf.direction = DMA_MEM_TO_DEV;
    txconf.dst_addr = dws->dma_addr;
    - txconf.dst_maxburst = 16;
    + txconf.dst_maxburst = TX_BURST_LEVEL;
    txconf.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
    txconf.dst_addr_width = convert_dma_width(dws->n_bytes);
    txconf.device_fc = false;
    @@ -273,7 +275,7 @@ static struct dma_async_tx_descriptor *dw_spi_dma_prepare_rx(struct dw_spi *dws,
    memset(&rxconf, 0, sizeof(rxconf));
    rxconf.direction = DMA_DEV_TO_MEM;
    rxconf.src_addr = dws->dma_addr;
    - rxconf.src_maxburst = 16;
    + rxconf.src_maxburst = RX_BURST_LEVEL;
    rxconf.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
    rxconf.src_addr_width = convert_dma_width(dws->n_bytes);
    rxconf.device_fc = false;
    @@ -298,8 +300,8 @@ static int mid_spi_dma_setup(struct dw_spi *dws, struct spi_transfer *xfer)
    {
    u16 imr = 0, dma_ctrl = 0;

    - dw_writel(dws, DW_SPI_DMARDLR, 0xf);
    - dw_writel(dws, DW_SPI_DMATDLR, 0x10);
    + dw_writel(dws, DW_SPI_DMARDLR, RX_BURST_LEVEL - 1);
    + dw_writel(dws, DW_SPI_DMATDLR, TX_BURST_LEVEL);

    if (xfer->tx_buf) {
    dma_ctrl |= SPI_DMA_TDMAE;
    --
    2.25.1
    \
     
     \ /
      Last update: 2020-05-22 02:09    [W:2.179 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site