[PATCH v4 00/19] dmaengine: ti: Add support for BCDMA v2 and PKTDMA v2

Sai Sree Kartheek Adivi posted 19 patches 1 week ago
.../bindings/dma/ti/ti,k3-bcdma-v2.yaml       |  116 +
.../bindings/dma/ti/ti,k3-pktdma-v2.yaml      |   90 +
drivers/dma/ti/Kconfig                        |   21 +-
drivers/dma/ti/Makefile                       |    5 +-
drivers/dma/ti/k3-psil-am62l.c                |  132 +
drivers/dma/ti/k3-psil-priv.h                 |    1 +
drivers/dma/ti/k3-psil.c                      |    1 +
drivers/dma/ti/k3-udma-common.c               | 2577 ++++++++++++++
drivers/dma/ti/k3-udma-glue.c                 |   91 +-
drivers/dma/ti/k3-udma-private.c              |   48 +-
drivers/dma/ti/k3-udma-v2.c                   | 1472 ++++++++
drivers/dma/ti/k3-udma.c                      | 3095 +----------------
drivers/dma/ti/k3-udma.h                      |  583 ++++
drivers/soc/ti/Kconfig                        |    1 -
drivers/soc/ti/k3-ringacc.c                   |  188 +-
include/linux/soc/ti/k3-ringacc.h             |   20 +
16 files changed, 5402 insertions(+), 3039 deletions(-)
create mode 100644 Documentation/devicetree/bindings/dma/ti/ti,k3-bcdma-v2.yaml
create mode 100644 Documentation/devicetree/bindings/dma/ti/ti,k3-pktdma-v2.yaml
create mode 100644 drivers/dma/ti/k3-psil-am62l.c
create mode 100644 drivers/dma/ti/k3-udma-common.c
create mode 100644 drivers/dma/ti/k3-udma-v2.c
[PATCH v4 00/19] dmaengine: ti: Add support for BCDMA v2 and PKTDMA v2
Posted by Sai Sree Kartheek Adivi 1 week ago
This series adds support for the BCDMA_V2 and PKTDMA_V2 which is
introduced in AM62L.

The key differences between the existing DMA and DMA V2 are:
- Absence of TISCI: Instead of configuring via TISCI calls, direct
  register writes are required.
- Autopair: There is no longer a need for PSIL pair and instead AUTOPAIR
  bit needs to set in the RT_CTL register.
- Static channel mapping: Each channel is mapped to a single peripheral.
- Direct IRQs: There is no INT-A and interrupt lines from DMA are
  directly connected to GIC.
- Remote side configuration handled by DMA. So no need to write to PEER
  registers to START / STOP / PAUSE / TEARDOWN.

Changes from v3 to v4:
- Rename the dt-binding files to add "ti," prefix.
- Update cell description in dt-bindings and add client examples.
- Update k3_ring_intr_regs reg names
- Rename soc specific data to bcdma_v2_data and pktdma_v2_data to
  bcdma_v2_am62l_data and pktdma_v2_am62l_data.
- Add a new patch [18/19] to fix a null pointer dereference issue when
  trying to reserve a channel id that is out of bounds in
  udma_reserve_##res macro. Also fix logging issues in this macro.
- Add a new patch [19/19] to switch to synchronous descriptor freeing to
  avoid running out of memory during stress tests.
- Fix checkpatch warnings.
link to v3:
https://lore.kernel.org/linux-arm-kernel/20250623053716.1493974-1-s-adivi@ti.com

Changes from v2 to v3:
- Fix checkpatch errors & spellings.
link to v2:
https://lore.kernel.org/linux-arm-kernel/20250612071521.3116831-1-s-adivi@ti.com

Changes from v1 to v2:
- Split refactoring of k3-udma driver into multiple commits
- Fix bcdma v2 and pktdma v2 dt-binding examples
- Fix compatibles in k3-udma-v2.c
- move udma_is_desc_really_done to k3-udma-common.c as the difference
  between k3-udma and k3-udma-v2 implementation is minor.
- remove udma_ prefix to function pointers in udma_dev
- reorder the commits to first refactor the existing code completely and
  then introduce k3-udma-v2 related commits.
- remove redundant includes in k3-udma-common.c
- remove ti_sci_ dependency for k3_ringacc in Kconfig
- refactor setup_resources functions to remove ti_sci_ code from common
  logic.
link to v1:
https://lore.kernel.org/linux-arm-kernel/20250428072032.946008-1-s-adivi@ti.com

Sai Sree Kartheek Adivi (19):
  dmaengine: ti: k3-udma: move macros to header file
  dmaengine: ti: k3-udma: move structs and enums to header file
  dmaengine: ti: k3-udma: move static inline helper functions to header
    file
  dmaengine: ti: k3-udma: move descriptor management to k3-udma-common.c
  dmaengine: ti: k3-udma: move ring management functions to
    k3-udma-common.c
  dmaengine: ti: k3-udma: Add variant-specific function pointers to
    udma_dev
  dmaengine: ti: k3-udma: move udma utility functions to
    k3-udma-common.c
  dmaengine: ti: k3-udma: move resource management functions to
    k3-udma-common.c
  dmaengine: ti: k3-udma: refactor resource setup functions
  dmaengine: ti: k3-udma: move inclusion of k3-udma-private.c to
    k3-udma-common.c
  drivers: soc: ti: k3-ringacc: handle absence of tisci
  dt-bindings: dma: ti: Add K3 BCDMA V2
  dt-bindings: dma: ti: Add K3 PKTDMA V2
  dmaengine: ti: k3-psil-am62l: Add AM62Lx PSIL and PDMA data
  dmaengine: ti: k3-udma-v2: New driver for K3 BCDMA_V2
  dmaengine: ti: k3-udma-v2: Add support for PKTDMA V2
  dmaengine: ti: k3-udma-v2: Update glue layer to support PKTDMA V2
  dmaengine: ti: k3-udma: Validate resource ID and fix logging in
    reservation
  dmaengine: ti: k3-udma: switch to synchronous descriptor freeing

 .../bindings/dma/ti/ti,k3-bcdma-v2.yaml       |  116 +
 .../bindings/dma/ti/ti,k3-pktdma-v2.yaml      |   90 +
 drivers/dma/ti/Kconfig                        |   21 +-
 drivers/dma/ti/Makefile                       |    5 +-
 drivers/dma/ti/k3-psil-am62l.c                |  132 +
 drivers/dma/ti/k3-psil-priv.h                 |    1 +
 drivers/dma/ti/k3-psil.c                      |    1 +
 drivers/dma/ti/k3-udma-common.c               | 2577 ++++++++++++++
 drivers/dma/ti/k3-udma-glue.c                 |   91 +-
 drivers/dma/ti/k3-udma-private.c              |   48 +-
 drivers/dma/ti/k3-udma-v2.c                   | 1472 ++++++++
 drivers/dma/ti/k3-udma.c                      | 3095 +----------------
 drivers/dma/ti/k3-udma.h                      |  583 ++++
 drivers/soc/ti/Kconfig                        |    1 -
 drivers/soc/ti/k3-ringacc.c                   |  188 +-
 include/linux/soc/ti/k3-ringacc.h             |   20 +
 16 files changed, 5402 insertions(+), 3039 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/dma/ti/ti,k3-bcdma-v2.yaml
 create mode 100644 Documentation/devicetree/bindings/dma/ti/ti,k3-pktdma-v2.yaml
 create mode 100644 drivers/dma/ti/k3-psil-am62l.c
 create mode 100644 drivers/dma/ti/k3-udma-common.c
 create mode 100644 drivers/dma/ti/k3-udma-v2.c

-- 
2.34.1
Re: [PATCH v4 00/19] dmaengine: ti: Add support for BCDMA v2 and PKTDMA v2
Posted by Péter Ujfalusi 4 days, 3 hours ago
Hi

On 30/01/2026 13:01, Sai Sree Kartheek Adivi wrote:
> This series adds support for the BCDMA_V2 and PKTDMA_V2 which is
> introduced in AM62L.
> 
> The key differences between the existing DMA and DMA V2 are:
> - Absence of TISCI: Instead of configuring via TISCI calls, direct
>   register writes are required.
> - Autopair: There is no longer a need for PSIL pair and instead AUTOPAIR
>   bit needs to set in the RT_CTL register.
> - Static channel mapping: Each channel is mapped to a single peripheral.
> - Direct IRQs: There is no INT-A and interrupt lines from DMA are
>   directly connected to GIC.
> - Remote side configuration handled by DMA. So no need to write to PEER
>   registers to START / STOP / PAUSE / TEARDOWN.

I think this looks really good overall, I have few nitpicks around
variable declaration order and one bigger ask for the possibility of
introducing version member to struct udma_match_data to cut down on
changes and have more targeted handling of the differences between the
two variants.

> 
> Changes from v3 to v4:
> - Rename the dt-binding files to add "ti," prefix.
> - Update cell description in dt-bindings and add client examples.
> - Update k3_ring_intr_regs reg names
> - Rename soc specific data to bcdma_v2_data and pktdma_v2_data to
>   bcdma_v2_am62l_data and pktdma_v2_am62l_data.
> - Add a new patch [18/19] to fix a null pointer dereference issue when
>   trying to reserve a channel id that is out of bounds in
>   udma_reserve_##res macro. Also fix logging issues in this macro.
> - Add a new patch [19/19] to switch to synchronous descriptor freeing to
>   avoid running out of memory during stress tests.
> - Fix checkpatch warnings.
> link to v3:
> https://lore.kernel.org/linux-arm-kernel/20250623053716.1493974-1-s-adivi@ti.com
> 
> Changes from v2 to v3:
> - Fix checkpatch errors & spellings.
> link to v2:
> https://lore.kernel.org/linux-arm-kernel/20250612071521.3116831-1-s-adivi@ti.com
> 
> Changes from v1 to v2:
> - Split refactoring of k3-udma driver into multiple commits
> - Fix bcdma v2 and pktdma v2 dt-binding examples
> - Fix compatibles in k3-udma-v2.c
> - move udma_is_desc_really_done to k3-udma-common.c as the difference
>   between k3-udma and k3-udma-v2 implementation is minor.
> - remove udma_ prefix to function pointers in udma_dev
> - reorder the commits to first refactor the existing code completely and
>   then introduce k3-udma-v2 related commits.
> - remove redundant includes in k3-udma-common.c
> - remove ti_sci_ dependency for k3_ringacc in Kconfig
> - refactor setup_resources functions to remove ti_sci_ code from common
>   logic.
> link to v1:
> https://lore.kernel.org/linux-arm-kernel/20250428072032.946008-1-s-adivi@ti.com
> 
> Sai Sree Kartheek Adivi (19):
>   dmaengine: ti: k3-udma: move macros to header file
>   dmaengine: ti: k3-udma: move structs and enums to header file
>   dmaengine: ti: k3-udma: move static inline helper functions to header
>     file
>   dmaengine: ti: k3-udma: move descriptor management to k3-udma-common.c
>   dmaengine: ti: k3-udma: move ring management functions to
>     k3-udma-common.c
>   dmaengine: ti: k3-udma: Add variant-specific function pointers to
>     udma_dev
>   dmaengine: ti: k3-udma: move udma utility functions to
>     k3-udma-common.c
>   dmaengine: ti: k3-udma: move resource management functions to
>     k3-udma-common.c
>   dmaengine: ti: k3-udma: refactor resource setup functions
>   dmaengine: ti: k3-udma: move inclusion of k3-udma-private.c to
>     k3-udma-common.c
>   drivers: soc: ti: k3-ringacc: handle absence of tisci
>   dt-bindings: dma: ti: Add K3 BCDMA V2
>   dt-bindings: dma: ti: Add K3 PKTDMA V2
>   dmaengine: ti: k3-psil-am62l: Add AM62Lx PSIL and PDMA data
>   dmaengine: ti: k3-udma-v2: New driver for K3 BCDMA_V2
>   dmaengine: ti: k3-udma-v2: Add support for PKTDMA V2
>   dmaengine: ti: k3-udma-v2: Update glue layer to support PKTDMA V2
>   dmaengine: ti: k3-udma: Validate resource ID and fix logging in
>     reservation
>   dmaengine: ti: k3-udma: switch to synchronous descriptor freeing
> 
>  .../bindings/dma/ti/ti,k3-bcdma-v2.yaml       |  116 +
>  .../bindings/dma/ti/ti,k3-pktdma-v2.yaml      |   90 +
>  drivers/dma/ti/Kconfig                        |   21 +-
>  drivers/dma/ti/Makefile                       |    5 +-
>  drivers/dma/ti/k3-psil-am62l.c                |  132 +
>  drivers/dma/ti/k3-psil-priv.h                 |    1 +
>  drivers/dma/ti/k3-psil.c                      |    1 +
>  drivers/dma/ti/k3-udma-common.c               | 2577 ++++++++++++++
>  drivers/dma/ti/k3-udma-glue.c                 |   91 +-
>  drivers/dma/ti/k3-udma-private.c              |   48 +-
>  drivers/dma/ti/k3-udma-v2.c                   | 1472 ++++++++
>  drivers/dma/ti/k3-udma.c                      | 3095 +----------------
>  drivers/dma/ti/k3-udma.h                      |  583 ++++
>  drivers/soc/ti/Kconfig                        |    1 -
>  drivers/soc/ti/k3-ringacc.c                   |  188 +-
>  include/linux/soc/ti/k3-ringacc.h             |   20 +
>  16 files changed, 5402 insertions(+), 3039 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/dma/ti/ti,k3-bcdma-v2.yaml
>  create mode 100644 Documentation/devicetree/bindings/dma/ti/ti,k3-pktdma-v2.yaml
>  create mode 100644 drivers/dma/ti/k3-psil-am62l.c
>  create mode 100644 drivers/dma/ti/k3-udma-common.c
>  create mode 100644 drivers/dma/ti/k3-udma-v2.c
> 

-- 
Péter