All of lore.kernel.org
 help / color / mirror / Atom feed
* [bug report] spi: stm32_qspi: Add transfer_one_message() spi callback
@ 2022-08-25 16:09 Dan Carpenter
  0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2022-08-25 16:09 UTC (permalink / raw)
  To: patrice.chotard; +Cc: linux-spi

Hello Patrice Chotard,

The patch a557fca630cc: "spi: stm32_qspi: Add transfer_one_message()
spi callback" from Aug 23, 2022, leads to the following Smatch static
checker warning:

	drivers/spi/spi-stm32-qspi.c:627 stm32_qspi_transfer_one_message()
	error: uninitialized symbol 'ret'.

drivers/spi/spi-stm32-qspi.c
    558 static int stm32_qspi_transfer_one_message(struct spi_controller *ctrl,
    559                                            struct spi_message *msg)
    560 {
    561         struct stm32_qspi *qspi = spi_controller_get_devdata(ctrl);
    562         struct spi_transfer *transfer;
    563         struct spi_device *spi = msg->spi;
    564         struct spi_mem_op op;
    565         int ret;
    566 
    567         if (!spi->cs_gpiod)
    568                 return -EOPNOTSUPP;
    569 
    570         mutex_lock(&qspi->lock);
    571 
    572         gpiod_set_value_cansleep(spi->cs_gpiod, true);
    573 
    574         list_for_each_entry(transfer, &msg->transfers, transfer_list) {
    575                 u8 dummy_bytes = 0;
    576 
    577                 memset(&op, 0, sizeof(op));
    578 
    579                 dev_dbg(qspi->dev, "tx_buf:%p tx_nbits:%d rx_buf:%p rx_nbits:%d len:%d dummy_data:%d\n",
    580                         transfer->tx_buf, transfer->tx_nbits,
    581                         transfer->rx_buf, transfer->rx_nbits,
    582                         transfer->len, transfer->dummy_data);
    583 
    584                 /*
    585                  * QSPI hardware supports dummy bytes transfer.
    586                  * If current transfer is dummy byte, merge it with the next
    587                  * transfer in order to take into account QSPI block constraint
    588                  */
    589                 if (transfer->dummy_data) {
    590                         op.dummy.buswidth = transfer->tx_nbits;
    591                         op.dummy.nbytes = transfer->len;
    592                         dummy_bytes = transfer->len;
    593 
    594                         /* if happens, means that message is not correctly built */
    595                         if (list_is_last(&transfer->transfer_list, &msg->transfers))
    596                                 goto end_of_transfer;

The comments suggest this should be an error path.

    597 
    598                         transfer = list_next_entry(transfer, transfer_list);
    599                 }
    600 
    601                 op.data.nbytes = transfer->len;
    602 
    603                 if (transfer->rx_buf) {
    604                         qspi->fmode = CCR_FMODE_INDR;
    605                         op.data.buswidth = transfer->rx_nbits;
    606                         op.data.dir = SPI_MEM_DATA_IN;
    607                         op.data.buf.in = transfer->rx_buf;
    608                 } else {
    609                         qspi->fmode = CCR_FMODE_INDW;
    610                         op.data.buswidth = transfer->tx_nbits;
    611                         op.data.dir = SPI_MEM_DATA_OUT;
    612                         op.data.buf.out = transfer->tx_buf;
    613                 }
    614 
    615                 ret = stm32_qspi_send(spi, &op);
    616                 if (ret)
    617                         goto end_of_transfer;
    618 
    619                 msg->actual_length += transfer->len + dummy_bytes;
    620         }
    621 
    622 end_of_transfer:
    623         gpiod_set_value_cansleep(spi->cs_gpiod, false);
    624 
    625         mutex_unlock(&qspi->lock);
    626 
--> 627         msg->status = ret;
    628         spi_finalize_current_message(ctrl);
    629 
    630         return ret;
    631 }

regards,
dan carpenter

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-08-25 16:09 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-25 16:09 [bug report] spi: stm32_qspi: Add transfer_one_message() spi callback Dan Carpenter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.