[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