lkml.org 
[lkml]   [2021]   [Jan]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.10 24/51] spi: altera: fix return value for altera_spi_txrx()
    Date
    From: Xu Yilun <yilun.xu@intel.com>

    [ Upstream commit ede090f5a438e97d0586f64067bbb956e30a2a31 ]

    This patch fixes the return value for altera_spi_txrx. It should return
    1 for interrupt transfer mode, and return 0 for polling transfer mode.

    The altera_spi_txrx() implements the spi_controller.transfer_one
    callback. According to the spi-summary.rst, the transfer_one should
    return 0 when transfer is finished, return 1 when transfer is still in
    progress.

    Signed-off-by: Xu Yilun <yilun.xu@intel.com>
    Link: https://lore.kernel.org/r/1609219662-27057-2-git-send-email-yilun.xu@intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/spi/spi-altera.c | 26 ++++++++++++++------------
    1 file changed, 14 insertions(+), 12 deletions(-)

    diff --git a/drivers/spi/spi-altera.c b/drivers/spi/spi-altera.c
    index 809bfff3690ab..cbc4c28c1541c 100644
    --- a/drivers/spi/spi-altera.c
    +++ b/drivers/spi/spi-altera.c
    @@ -189,24 +189,26 @@ static int altera_spi_txrx(struct spi_master *master,

    /* send the first byte */
    altera_spi_tx_word(hw);
    - } else {
    - while (hw->count < hw->len) {
    - altera_spi_tx_word(hw);

    - for (;;) {
    - altr_spi_readl(hw, ALTERA_SPI_STATUS, &val);
    - if (val & ALTERA_SPI_STATUS_RRDY_MSK)
    - break;
    + return 1;
    + }
    +
    + while (hw->count < hw->len) {
    + altera_spi_tx_word(hw);

    - cpu_relax();
    - }
    + for (;;) {
    + altr_spi_readl(hw, ALTERA_SPI_STATUS, &val);
    + if (val & ALTERA_SPI_STATUS_RRDY_MSK)
    + break;

    - altera_spi_rx_word(hw);
    + cpu_relax();
    }
    - spi_finalize_current_transfer(master);
    +
    + altera_spi_rx_word(hw);
    }
    + spi_finalize_current_transfer(master);

    - return t->len;
    + return 0;
    }

    static irqreturn_t altera_spi_irq(int irq, void *dev)
    --
    2.27.0
    \
     
     \ /
      Last update: 2021-01-12 14:41    [W:3.632 / U:0.616 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site