[PATCH v2 00/19] dmaengine/soc: k3-udma: Add support for BCDMA and PKTDMA

Peter Ujfalusi peter.ujfalusi at ti.com
Mon Dec 7 02:29:34 EST 2020


Hi Santosh,

On 24/11/2020 19.08, Vinod Koul wrote:
> On 17-11-20, 12:56, Peter Ujfalusi wrote:
>> Hi,
>>
>> The series have build dependency on ti_sci/soc series (v2):
>> https://lore.kernel.org/lkml/20201008115224.1591-1-peter.ujfalusi@ti.com/
>>
>> Santosh kindly created immutable branch holdinf the series:
>> git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone.git for_5.11/drivers-soc 
> 
> Santosh, Can I have a signed tag for this please?

Can you please provide a tag for Vinod?

I'm ready to send v3 with few small fixes and waiting for Rob to get to
the binding documents before I do.

Thanks,
- Péter

>>
>> The unmapped event handling in INTA is already mainline.
>>
>> Changes since v1:
>> - Both DT binding document has been updated to address all comments and
>>   suggestions from Rob, all checks are passing on them
>> - included new patch to fix the normal channel start offset when ultra-high
>>   capacity channels are available for the UDMA and updated the BCDMA/PKTDMA
>>   patches along the same line
>> - Re-arranged the patches for Vinod so that the preparational patches and fixes
>>   can be picked up separately (they still have dependency on Santosh's branch):
>>
>>   patch 1-5: Fixes and new features for existing devices using UDMA, but the
>>              the BCDMA/PKTDMA support is building on top of these.
>>              Build dependency on Santosh's branch
>>   patch 6: Optional second stage router configuration callback support in core
>>   patch 7-9: Per channel coherency support in core and use it in dmatest.
>>   patch 10-: Initial AM64 BCDMA and PKTDMA support
>>
>> The DMSS introduced within AM64 as a simplified Data movement engine is built
>> on similar grounds as the K3 NAVSS and UDMAP, but with significant architectural
>> changes.
>>
>> - Rings are built into the DMAs
>> The DMAs no longer use the general purpose ringacc, all rings has been moved
>> inside of the DMAs. The new rings within the DMAs are simplified to be dual
>> directional compared to the uni-directional rings in ringacc.
>> There is no more of a concept of generic purpose rings, all rings are assigned
>> to specific channels or flows.
>>
>> - Per channel coherency support
>> The DMAs use the 'ASEL' bits to select data and configuration fetch path. The
>> ASEL bits are placed at the unused parts of any address field used by the
>> DMAs (pointers to descriptors, addresses in descriptors, ring base addresses).
>> The ASEL is not part of the address (the DMAs can address 48bits).
>> Individual channels can be configured to be coherent (via ACP port) or non
>> coherent individually by configuring the ASEL to appropriate value.
>>
>> - Two different DMAs (well, three actually)
>> PKTDMA
>> Similar to UDMAP channels configured in packet mode.
>> The flow configuration of the channels has changed significantly in a way that
>> each channel have at least one flow assigned at design time and each flow is
>> directly mapped to corresponding ring.
>> When multiple flows are set, the channel can only use the flows within it's
>> assigned range.
>> PKTDMA also introduced multiple tflows which did not existed in UDMAP.
>>
>> BCDMA
>> It has two types of channels:
>> - split channels (tchan/rchan): Similar to UDMAP channels configured in TR mode.
>> - Block copy channels (bchan): Similar to EDMA or traditional DMA channels, they
>>   can be used for mem2mem type of transfers or to service peripherals not
>>   accessible via PSI-L by using external triggers for the TR.
>> BCDMA channels do not have support for multiple flows
>>
>> With the introduction of the new DMAs (especially the BCDMA) we also need to
>> update the resource manager code to support the second range from sysfw for
>> UDMA channels.
>>
>> The two outstanding change in the series in my view is
>> the handling of the DMAs sideband signal of ASEL to select path to provide
>> coherency or non coherency.
>>
>> The smaller one is the device_router_config callback to allow the configuration
>> of the triggers when BCDMA is servicing a triggering peripheral to solve a
>> chicken-egg situation:
>> The router needs to know the event number to send which in turn depends on the
>> channel we got for servicing the peripheral.
>>
>> Regards,
>> Peter
>> ---
>> Grygorii Strashko (1):
>>   soc: ti: k3-ringacc: add AM64 DMA rings support.
>>
>> Peter Ujfalusi (17):
>>   dmaengine: ti: k3-udma: Correct normal channel offset when uchan_cnt
>>     is not 0
>>   dmaengine: ti: k3-udma: Wait for peer teardown completion if supported
>>   dmaengine: ti: k3-udma: Add support for second resource range from
>>     sysfw
>>   dmaengine: ti: k3-udma-glue: Add function to get device pointer for
>>     DMA API
>>   dmaengine: ti: k3-udma-glue: Configure the dma_dev for rings
>>   dmaengine: of-dma: Add support for optional router configuration
>>     callback
>>   dmaengine: Add support for per channel coherency handling
>>   dmaengine: doc: client: Update for dmaengine_get_dma_device() usage
>>   dmaengine: dmatest: Use dmaengine_get_dma_device
>>   dt-bindings: dma: ti: Add document for K3 BCDMA
>>   dt-bindings: dma: ti: Add document for K3 PKTDMA
>>   dmaengine: ti: k3-psil: Extend psil_endpoint_config for K3 PKTDMA
>>   dmaengine: ti: k3-psil: Add initial map for AM64
>>   dmaengine: ti: Add support for k3 event routers
>>   dmaengine: ti: k3-udma: Initial support for K3 BCDMA
>>   dmaengine: ti: k3-udma: Add support for BCDMA channel TPL handling
>>   dmaengine: ti: k3-udma: Initial support for K3 PKTDMA
>>
>> Vignesh Raghavendra (1):
>>   dmaengine: ti: k3-udma-glue: Add support for K3 PKTDMA
>>
>>  .../devicetree/bindings/dma/ti/k3-bcdma.yaml  |  175 ++
>>  .../devicetree/bindings/dma/ti/k3-pktdma.yaml |  183 ++
>>  Documentation/driver-api/dmaengine/client.rst |    4 +-
>>  drivers/dma/dmatest.c                         |   13 +-
>>  drivers/dma/of-dma.c                          |   10 +
>>  drivers/dma/ti/Makefile                       |    3 +-
>>  drivers/dma/ti/k3-psil-am64.c                 |   75 +
>>  drivers/dma/ti/k3-psil-priv.h                 |    1 +
>>  drivers/dma/ti/k3-psil.c                      |    1 +
>>  drivers/dma/ti/k3-udma-glue.c                 |  294 ++-
>>  drivers/dma/ti/k3-udma-private.c              |   39 +
>>  drivers/dma/ti/k3-udma.c                      | 1968 +++++++++++++++--
>>  drivers/dma/ti/k3-udma.h                      |   27 +-
>>  drivers/soc/ti/k3-ringacc.c                   |  325 ++-
>>  include/linux/dma/k3-event-router.h           |   16 +
>>  include/linux/dma/k3-psil.h                   |   16 +
>>  include/linux/dma/k3-udma-glue.h              |   12 +
>>  include/linux/dmaengine.h                     |   14 +
>>  include/linux/soc/ti/k3-ringacc.h             |   17 +
>>  19 files changed, 2973 insertions(+), 220 deletions(-)
>>  create mode 100644 Documentation/devicetree/bindings/dma/ti/k3-bcdma.yaml
>>  create mode 100644 Documentation/devicetree/bindings/dma/ti/k3-pktdma.yaml
>>  create mode 100644 drivers/dma/ti/k3-psil-am64.c
>>  create mode 100644 include/linux/dma/k3-event-router.h
>>
>> -- 
>> Peter
>>
>> Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
>> Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
> 


Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki



More information about the linux-arm-kernel mailing list