* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).