[PATCH v5 3/4] dmaengine: mmp_pdma: add Spacemit K3 support

Frank Li Frank.li at nxp.com
Thu May 7 11:19:12 PDT 2026


On Thu, May 07, 2026 at 06:36:22PM +0800, Troy Mitchell wrote:
> From: Guodong Xu <guodong at riscstar.com>
>
> SpacemiT K3 reuses most of the PDMA IP design found on K1, with one difference
> being the extended DRCMR base address. This patch adds "spacemit,k3-pdma"

Don't use "this patch", just add "spacemit,k3-pdma"

Frank
> compatible string and it defines a new mmp_pdma_ops for k3 pdma.
>
> Signed-off-by: Guodong Xu <guodong at riscstar.com>
> Signed-off-by: Troy Mitchell <troy.mitchell at linux.spacemit.com>
> ---
>  drivers/dma/mmp_pdma.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
>
> diff --git a/drivers/dma/mmp_pdma.c b/drivers/dma/mmp_pdma.c
> index 6112369006ee..386e85cd4882 100644
> --- a/drivers/dma/mmp_pdma.c
> +++ b/drivers/dma/mmp_pdma.c
> @@ -52,6 +52,7 @@
>  #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) */
> @@ -1207,6 +1208,20 @@ static const struct mmp_pdma_ops spacemit_k1_pdma_ops = {
>  	.drcmr_ext_base = DRCMR_EXT_BASE_DEFAULT,
>  };
>
> +static const struct mmp_pdma_ops spacemit_k3_pdma_ops = {
> +	.write_next_addr = write_next_addr_64,
> +	.read_src_addr = read_src_addr_64,
> +	.read_dst_addr = read_dst_addr_64,
> +	.set_desc_next_addr = set_desc_next_addr_64,
> +	.set_desc_src_addr = set_desc_src_addr_64,
> +	.set_desc_dst_addr = set_desc_dst_addr_64,
> +	.get_desc_src_addr = get_desc_src_addr_64,
> +	.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,
> +};
> +
>  static const struct of_device_id mmp_pdma_dt_ids[] = {
>  	{
>  		.compatible = "marvell,pdma-1.0",
> @@ -1214,6 +1229,9 @@ static const struct of_device_id mmp_pdma_dt_ids[] = {
>  	}, {
>  		.compatible = "spacemit,k1-pdma",
>  		.data = &spacemit_k1_pdma_ops
> +	}, {
> +		.compatible = "spacemit,k3-pdma",
> +		.data = &spacemit_k3_pdma_ops
>  	}, {
>  		/* sentinel */
>  	}
>
> --
> 2.54.0
>



More information about the linux-riscv mailing list