summaryrefslogtreecommitdiff
path: root/drivers/spi/spi-sunplus-sp7021.c
diff options
context:
space:
mode:
authorLi-hao Kuo <lhjeff911@gmail.com>2022-02-14 10:20:11 +0800
committerMark Brown <broonie@kernel.org>2022-02-14 12:53:17 +0000
commit5790597d7113faabb1714d3d1efa268e36eb4811 (patch)
treea8747603b15f11c6f46fbba257b16292173f28de /drivers/spi/spi-sunplus-sp7021.c
parent2cbfa2128662c6b841f68cd2fe54df199457e38a (diff)
spi: Fix warning for Clang build and simplify code
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>
Diffstat (limited to 'drivers/spi/spi-sunplus-sp7021.c')
-rw-r--r--drivers/spi/spi-sunplus-sp7021.c38
1 files changed, 9 insertions, 29 deletions
diff --git a/drivers/spi/spi-sunplus-sp7021.c b/drivers/spi/spi-sunplus-sp7021.c
index ba5ed9f7277a..ade7a0fca8cb 100644
--- a/drivers/spi/spi-sunplus-sp7021.c
+++ b/drivers/spi/spi-sunplus-sp7021.c
@@ -69,12 +69,6 @@
#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;