spi: Fix warning for Clang build and simplify code
authorLi-hao Kuo <lhjeff911@gmail.com>
Mon, 14 Feb 2022 02:20:11 +0000 (10:20 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 14 Feb 2022 12:53:17 +0000 (12:53 +0000)
Clang build fails with
spi-sunplus-sp7021.c:405:2: error: variable 'ret' is used
  uninitialized whenever switch default is taken
        default:

simplify code

Restore initializing ret. and add return error at default

Fixes: 47e8fe57a66f ("spi: Modify irq request position and modify parameters")
Reported-by: Tom Rix <trix@redhat.com>
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Nathan Chancellor <nathan@kernel.org>
Reported-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Li-hao Kuo <lhjeff911@gmail.com>
Link: https://lore.kernel.org/r/7d91e6ce29f9a8df2c53a47b4b977664020e237a.1644805060.git.lhjeff911@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-sunplus-sp7021.c

index ba5ed9f..ade7a0f 100644 (file)
 #define SP7021_SPI_DATA_SIZE           (255)
 #define SP7021_FIFO_DATA_LEN           (16)
 
-enum SP_SPI_MODE {
-       SP7021_SLAVE_READ = 0,
-       SP7021_SLAVE_WRITE = 1,
-       SP7021_SPI_IDLE = 2,
-};
-
 enum {
        SP7021_MASTER_MODE = 0,
        SP7021_SLAVE_MODE = 1,
@@ -375,40 +369,26 @@ static int sp7021_spi_slave_transfer_one(struct spi_controller *ctlr, struct spi
 {
        struct sp7021_spi_ctlr *pspim = spi_master_get_devdata(ctlr);
        struct device *dev = pspim->dev;
-       int mode, ret;
+       int ret;
 
-       mode = SP7021_SPI_IDLE;
-       if (xfer->tx_buf && xfer->rx_buf) {
-               dev_dbg(&ctlr->dev, "%s() wrong command\n", __func__);
-               return -EINVAL;
-       } else if (xfer->tx_buf) {
+       if (xfer->tx_buf && !xfer->rx_buf) {
                xfer->tx_dma = dma_map_single(dev, (void *)xfer->tx_buf,
                                              xfer->len, DMA_TO_DEVICE);
                if (dma_mapping_error(dev, xfer->tx_dma))
                        return -ENOMEM;
-               mode = SP7021_SLAVE_WRITE;
-       } else if (xfer->rx_buf) {
+                ret = sp7021_spi_slave_tx(spi, xfer);
+                dma_unmap_single(dev, xfer->tx_dma, xfer->len, DMA_TO_DEVICE);
+       } else if (xfer->rx_buf && !xfer->tx_buf) {
                xfer->rx_dma = dma_map_single(dev, xfer->rx_buf, xfer->len,
                                              DMA_FROM_DEVICE);
                if (dma_mapping_error(dev, xfer->rx_dma))
                        return -ENOMEM;
-               mode = SP7021_SLAVE_READ;
-       }
-
-       switch (mode) {
-       case SP7021_SLAVE_WRITE:
-               ret = sp7021_spi_slave_tx(spi, xfer);
-               break;
-       case SP7021_SLAVE_READ:
                ret = sp7021_spi_slave_rx(spi, xfer);
-               break;
-       default:
-               break;
-       }
-       if (xfer->tx_buf)
-               dma_unmap_single(dev, xfer->tx_dma, xfer->len, DMA_TO_DEVICE);
-       if (xfer->rx_buf)
                dma_unmap_single(dev, xfer->rx_dma, xfer->len, DMA_FROM_DEVICE);
+       } else {
+               dev_dbg(&ctlr->dev, "%s() wrong command\n", __func__);
+               return -EINVAL;
+       }
 
        spi_finalize_current_transfer(ctlr);
        return ret;