Re: [PATCH v2] dmaengine: mmp_pdma: fix wrong extended DRCMR base for SpacemiT K3

Frank Li <[email protected]>
Newsgroups dev.linux.lists.spacemit,org.infradead.lists.linux-riscv,org.kernel.vger.dmaengine,org.kernel.vger.linux-kernel
Message-ID <an938oW_b_W-AYeE@lizhi-Precision-Tower-5810>
On Mon, Jul 27, 2026 at 01:26:15AM -0700, Troy Mitchell wrote:
> The extended DRCMR window on SpacemiT K3 starts at 0x1100. Commit
> 6587b8661a0b ("dmaengine: mmp_pdma: add SpacemiT K3 support") incorrectly
> set it to 0x1000, causing DRCMR accesses for request IDs >= 64 to target
> offsets 0x100 too low.
>
> The 0x1100 base has been verified on K3 silicon using real SPI and QSPI
> DMA transactions. The K3 DMA documentation [1] was updated on June 24,
> 2026, to reflect the corrected register addresses.
>
> Drop the bogus DRCMR_EXT_BASE_K3 macro and reuse
> DRCMR_EXT_BASE_DEFAULT for the K3 ops.
>
> Fixes: 6587b8661a0b ("dmaengine: mmp_pdma: add SpacemiT K3 support")
> Link: https://www.spacemit.com/community/document/info?nodepath=hardware/key_stone/k3/k3_docs/k3_usermanual/16_peripherals/dma.md&lang=en [1]
> Signed-off-by: Troy Mitchell <[email protected]>
> ---

Reviewed-by: Frank Li <[email protected]>

> This is a minimal fix for the wrong DRCMR_EXT_BASE_K3 value introduced
> by commit 6587b8661a0b ("dmaengine: mmp_pdma: add SpacemiT K3 support").
> K3 silicon uses 0x1100 as the extended DRCMR base, so the K3 ops now
> reuse DRCMR_EXT_BASE_DEFAULT.
>
> I deliberately kept the per-ops drcmr_ext_base field and the
> DRCMR_EXT_BASE_DEFAULT macro to preserve the extensibility that was
> introduced together with the helper refactor, in case a future PDMA
> variant ends up using a different extended base. If reviewers prefer
> to drop this abstraction entirely and collapse it back to a single
> constant now that all known users share the same value, I am happy to
> send a v3 that removes the drcmr_ext_base ops field as a cleanup.
> ---
> Changes in v2:
> - Reword the commit message to remove the inaccurate K1 comparison.
> - Mention successful SPI and QSPI DMA tests on K3 silicon in the commit
>   message.
> - Add a link to the corrected K3 DMA documentation, updated June 24,
>   2026.
> - Link to v1: https://patch.msgid.link/20260615-k3-pdma-fix-drcmr-base-v1-1-ee1af124199f@linux.spacemit.com
>
> To: Vinod Koul <[email protected]>
> To: Frank Li <[email protected]>
> To: Yixun Lan <[email protected]>
> To: Guodong Xu <[email protected]>
> To: Troy Mitchell <[email protected]>
> To: Paul Walmsley <[email protected]>
> To: Palmer Dabbelt <[email protected]>
> To: Albert Ou <[email protected]>
> To: Alexandre Ghiti <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> ---
>  drivers/dma/mmp_pdma.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/dma/mmp_pdma.c b/drivers/dma/mmp_pdma.c
> index 386e85cd4882..78e3e07e681d 100644
> --- a/drivers/dma/mmp_pdma.c
> +++ b/drivers/dma/mmp_pdma.c
> @@ -52,7 +52,6 @@
>  #define DCSR_EORINTR	BIT(9)	/* The end of Receive */
>
>  #define DRCMR_BASE		0x0100
> -#define DRCMR_EXT_BASE_K3	0x1000
>  #define DRCMR_EXT_BASE_DEFAULT	0x1100
>  #define DRCMR_REQ_LIMIT		64
>  #define DRCMR_MAPVLD	BIT(7)	/* Map Valid (read / write) */
> @@ -1219,7 +1218,7 @@ static const struct mmp_pdma_ops spacemit_k3_pdma_ops = {
>  	.get_desc_dst_addr = get_desc_dst_addr_64,
>  	.run_bits = (DCSR_RUN | DCSR_LPAEEN | DCSR_EORIRQEN | DCSR_EORSTOPEN),
>  	.dma_width = 64,
> -	.drcmr_ext_base = DRCMR_EXT_BASE_K3,
> +	.drcmr_ext_base = DRCMR_EXT_BASE_DEFAULT,
>  };
>
>  static const struct of_device_id mmp_pdma_dt_ids[] = {
>
> ---
> base-commit: c425609d6ac4012c8bbf01ec2e10e801b1923a7b
> change-id: 20260615-k3-pdma-fix-drcmr-base-326536770427
>
> Best regards,
> --
> Troy Mitchell <[email protected]>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.