From: Vishwaroop A <va@nvidia.com>
To: Mark Brown <broonie@kernel.org>, <linux-spi@vger.kernel.org>
Cc: Laxman Dewangan <ldewangan@nvidia.com>,
Thierry Reding <thierry.reding@kernel.org>,
Jonathan Hunter <jonathanh@nvidia.com>,
"Sowjanya Komatineni" <skomatineni@nvidia.com>,
Rhyland Klein <rklein@nvidia.com>,
Suresh Mangipudi <smangipudi@nvidia.com>,
Krishna Yarlagadda <kyarlagadda@nvidia.com>,
Vishwaroop A <va@nvidia.com>, <linux-tegra@vger.kernel.org>,
<linux-kernel@vger.kernel.org>
Subject: [PATCH 1/5] spi: tegra114: Allow PIO fallback when DMA is unavailable
Date: Tue, 18 Aug 2026 14:34:43 +0000 [thread overview]
Message-ID: <179258895296.403962.7785404408966779179@nvidia.com> (raw)
In-Reply-To: <179258895296.403962.3492255118456900623@nvidia.com>
From: Krishna Yarlagadda <kyarlagadda@nvidia.com>
The driver can still use PIO if DMA is not declared in DT. The DT
binding lists 'dmas' as required, but tolerate its absence by
falling back to PIO instead of failing probe. This lets platforms
that legitimately do not wire up a DMA controller use the SPI
controller in PIO-only mode.
The runtime transfer path only takes DMA when both channels are
set, so PIO-only probes automatically stay on the PIO path.
Signed-off-by: Krishna Yarlagadda <kyarlagadda@nvidia.com>
Signed-off-by: Vishwaroop A <va@nvidia.com>
---
drivers/spi/spi-tegra114.c | 27 +++++++++++++++++----------
1 file changed, 17 insertions(+), 10 deletions(-)
diff --git a/drivers/spi/spi-tegra114.c b/drivers/spi/spi-tegra114.c
index 333fb549214e..f9bd783cb4dc 100644
--- a/drivers/spi/spi-tegra114.c
+++ b/drivers/spi/spi-tegra114.c
@@ -901,7 +901,8 @@ static int tegra_spi_start_transfer_one(struct spi_device *spi,
ret = tegra_spi_flush_fifos(tspi);
if (ret < 0)
return ret;
- if (total_fifo_words > SPI_FIFO_DEPTH)
+ if (total_fifo_words > SPI_FIFO_DEPTH &&
+ tspi->tx_dma_chan && tspi->rx_dma_chan)
ret = tegra_spi_start_dma_based_transfer(tspi, t);
else
ret = tegra_spi_start_cpu_based_transfer(tspi, t);
@@ -1366,15 +1367,21 @@ static int tegra_spi_probe(struct platform_device *pdev)
tspi->max_buf_size = SPI_FIFO_DEPTH << 2;
tspi->dma_buf_size = DEFAULT_SPI_DMA_BUF_LEN;
- ret = tegra_spi_init_dma_param(tspi, true);
- if (ret < 0)
- return ret;
- ret = tegra_spi_init_dma_param(tspi, false);
- if (ret < 0)
- goto exit_rx_dma_free;
- tspi->max_buf_size = tspi->dma_buf_size;
- init_completion(&tspi->tx_dma_complete);
- init_completion(&tspi->rx_dma_complete);
+ if (of_property_present(pdev->dev.of_node, "dmas")) {
+ ret = tegra_spi_init_dma_param(tspi, true);
+ if (ret < 0)
+ return ret;
+ ret = tegra_spi_init_dma_param(tspi, false);
+ if (ret < 0)
+ goto exit_rx_dma_free;
+
+ tspi->max_buf_size = tspi->dma_buf_size;
+ init_completion(&tspi->tx_dma_complete);
+ init_completion(&tspi->rx_dma_complete);
+ } else {
+ dev_warn(&pdev->dev,
+ "'dmas' is required by the binding, falling back to PIO\n");
+ }
init_completion(&tspi->xfer_completion);
base-commit: b810335a0699d1810683796b0e3ffe8827ddfe6c
--
2.17.1
next prev parent reply other threads:[~2026-10-21 13:22 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-21 10:14 [PATCH 0/5] spi: tegra114: chip-select fixes and PIO-only probe Vishwaroop A
2026-08-18 14:34 ` Vishwaroop A [this message]
2026-08-18 14:54 ` [PATCH 2/5] spi: tegra114: Run per-transfer delay before ending the transfer Vishwaroop A
2026-08-18 14:55 ` [PATCH 4/5] spi: tegra114: Decide the chip-select mode once per message Vishwaroop A
2026-08-18 14:56 ` [PATCH 5/5] spi: tegra114: Keep software CS across bus-locked messages Vishwaroop A
2026-09-29 9:41 ` [PATCH 3/5] spi: tegra114: Assert CS between transfers when cs_change is set Vishwaroop A
2026-10-27 6:57 ` [PATCH 0/5] spi: tegra114: chip-select fixes and PIO-only probe Karl Mehltretter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=179258895296.403962.7785404408966779179@nvidia.com \
--to=va@nvidia.com \
--cc=broonie@kernel.org \
--cc=jonathanh@nvidia.com \
--cc=kyarlagadda@nvidia.com \
--cc=ldewangan@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=rklein@nvidia.com \
--cc=skomatineni@nvidia.com \
--cc=smangipudi@nvidia.com \
--cc=thierry.reding@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®