From: Sheetal <sheetal@nvidia.com>
To: Vinod Koul <vkoul@kernel.org>, Rob Herring <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>
Cc: Frank Li <Frank.Li@kernel.org>,
Laxman Dewangan <ldewangan@nvidia.com>,
Jonathan Hunter <jonathanh@nvidia.com>,
Thierry Reding <thierry.reding@kernel.org>,
Mohan Kumar <mkumard@nvidia.com>,
Sameer Pujar <spujar@nvidia.com>, <dmaengine@vger.kernel.org>,
<devicetree@vger.kernel.org>, <linux-tegra@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, Sheetal <sheetal@nvidia.com>
Subject: [PATCH 2/3] dmaengine: tegra210-adma: Make Tegra264 FIFO size explicit
Date: Wed, 4 Nov 2026 11:09:31 +0000 [thread overview]
Message-ID: <20261104110932.1097294-3-sheetal@nvidia.com> (raw)
In-Reply-To: <20261104110932.1097294-1-sheetal@nvidia.com>
Tegra264 uses the same ADMA FIFO size for every ADMAIF request. The
driver currently obtains this by setting sreq_index_offset to zero,
which makes every valid request select a FIFO size of 2.
Add a SoC data field for the uniform FIFO size and set it to 2 for
Tegra264. Retain the request-index-based FIFO selection for earlier
SoCs. This preserves existing FIFO programming and allows devices
with a different uniform FIFO size to specify it in their SoC data.
Signed-off-by: Sheetal <sheetal@nvidia.com>
---
drivers/dma/tegra210-adma.c | 26 +++++++++++++++++++-------
1 file changed, 19 insertions(+), 7 deletions(-)
diff --git a/drivers/dma/tegra210-adma.c b/drivers/dma/tegra210-adma.c
index 21a381d022cf..293a1119e07a 100644
--- a/drivers/dma/tegra210-adma.c
+++ b/drivers/dma/tegra210-adma.c
@@ -101,6 +101,7 @@ struct tegra_adma;
* @ch_reg_size: Size of DMA channel register space.
* @nr_channels: Number of DMA channels available.
* @ch_fifo_size_mask: Mask for FIFO size field.
+ * @ch_fifo_size: FIFO size for devices with uniform channel FIFO size.
* @sreq_index_offset: Slave channel index offset.
* @max_page: Maximum ADMA Channel Page.
* @set_global_pg_config: Global page programming.
@@ -125,6 +126,7 @@ struct tegra_adma_chip_data {
unsigned int ch_reg_size;
unsigned int nr_channels;
unsigned int ch_fifo_size_mask;
+ unsigned int ch_fifo_size;
unsigned int sreq_index_offset;
unsigned int max_page;
void (*set_global_pg_config)(struct tegra_adma *tdma);
@@ -725,18 +727,28 @@ static int tegra_adma_set_xfer_params(struct tegra_adma_chan *tdc,
*
* ADMA FIFO size is set as per below (based on default ADMAIF channel
* FIFO sizes):
+ * For Tegra264:
+ * fifo_size = ch_fifo_size
+ * For devices prior to Tegra264:
* fifo_size = 0x2 (sreq_index > sreq_index_offset)
* fifo_size = 0x3 (sreq_index <= sreq_index_offset)
*
*/
- if (tdc->sreq_index > cdata->sreq_index_offset)
+ if (cdata->ch_fifo_size) {
ch_regs->fifo_ctrl =
- ADMA_CH_REG_FIELD_VAL(2, cdata->ch_fifo_size_mask,
- fifo_size_shift);
- else
- ch_regs->fifo_ctrl =
- ADMA_CH_REG_FIELD_VAL(3, cdata->ch_fifo_size_mask,
+ ADMA_CH_REG_FIELD_VAL(cdata->ch_fifo_size,
+ cdata->ch_fifo_size_mask,
fifo_size_shift);
+ } else {
+ if (tdc->sreq_index > cdata->sreq_index_offset)
+ ch_regs->fifo_ctrl =
+ ADMA_CH_REG_FIELD_VAL(2, cdata->ch_fifo_size_mask,
+ fifo_size_shift);
+ else
+ ch_regs->fifo_ctrl =
+ ADMA_CH_REG_FIELD_VAL(3, cdata->ch_fifo_size_mask,
+ fifo_size_shift);
+ }
ch_regs->tc = desc->period_len & ADMA_CH_TC_COUNT_MASK;
@@ -1018,7 +1030,7 @@ static const struct tegra_adma_chip_data tegra264_chip_data = {
.ch_reg_size = 0x100,
.nr_channels = 64,
.ch_fifo_size_mask = 0x7f,
- .sreq_index_offset = 0,
+ .ch_fifo_size = 2,
.max_page = 10,
.set_global_pg_config = tegra264_adma_global_page_config,
};
--
2.43.0
next prev parent reply other threads:[~2026-11-04 11:10 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-04 11:09 [PATCH 0/3] dmaengine: tegra210-adma: Add Tegra268 support Sheetal
2026-11-04 11:09 ` [PATCH 1/3] dt-bindings: dma: nvidia,tegra210-adma: " Sheetal
2026-11-12 21:05 ` Frank Li
2026-11-04 11:09 ` Sheetal [this message]
2026-11-12 21:10 ` [PATCH 2/3] dmaengine: tegra210-adma: Make Tegra264 FIFO size explicit Frank Li
2026-11-04 11:09 ` [PATCH 3/3] dmaengine: tegra210-adma: Add Tegra268 support Sheetal
2026-11-12 21:13 ` Frank Li
2026-11-11 14:12 ` [PATCH 0/3] " Jon Hunter
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=20261104110932.1097294-3-sheetal@nvidia.com \
--to=sheetal@nvidia.com \
--cc=Frank.Li@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmaengine@vger.kernel.org \
--cc=jonathanh@nvidia.com \
--cc=krzk+dt@kernel.org \
--cc=ldewangan@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=mkumard@nvidia.com \
--cc=robh@kernel.org \
--cc=spujar@nvidia.com \
--cc=thierry.reding@kernel.org \
--cc=vkoul@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 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.