All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/14] dmaenigne: edma/ti-crossbar: fixes, new bindings
@ 2015-10-16  7:17 ` Peter Ujfalusi
  0 siblings, 0 replies; 78+ messages in thread
From: Peter Ujfalusi @ 2015-10-16  7:17 UTC (permalink / raw)
  To: vinod.koul, nsekhar
  Cc: linux-arm-kernel, linux-kernel, linux-omap, dmaengine,
	devicetree, tony, r.schwebel

Hi,

Changes since v1:
- Comments in the memcpy optimization patch extended
- The crossbar patch has been improved:
 - debug prints changed
 - fallback xbar parameters now type specific as the fallback values for DRA7
   are not valid for AM33xx crossbar.
- New patch for Kconfig to select the crossbar in case the eDMA is used on OMAP
  platforms

This series depends on the eDMA driver merger series (v5) [1].

The first two patch is to improve the memcpy functionality by removing the
alignment constraint and speed optimization (memcpy speed is up from ~3MB/s to
~15MB/s).

The rest of the series consits of smaller cleanup patches and the new DT binding
implementation for the eDMA3 and the crossbar found in am33xx/am43xx.

The new DT binding was needed for several reasons:
- the original binding was 'Documentating' the Linux driver functionality.
- the use of multiple ti,hwmod properties in the binding need to be removed. In
  recent kernels we have kernel warning printed because of this.
- No way to set queue priorities
- No way to fix the memcpy issue [2]
- Missing infrastructure to deal with multi core usage (ARM + DSP)
- eDMA behind of a crossbar was not safe to use - it could be hacked to work.

While some of these issues migh have been fixed with the old binding by adding
new properties all along, but the TPCC and TPTC separation (to fix the hwmod
warning and to be able to have better power management) and the need to be able
to select TC to execute the given channel demanded new compatible for the eDMA3
components.

[1] http://www.spinics.net/lists/arm-kernel/msg452373.html

[2] memcpy issue with the old stack
ever since the eDMA got support via dmaengine and the memcpy was enabled it has
been mostly broken and worked by luck only.
The root of the issue was that the channels for the memcpy was taken from the
same pool as the slave channels. Since in eDMA a channel number is wired to be
used with the same event number (HW request) this had it's faults. With
dmaengine the driver will always be asked for a channel since the channel
selection for any channel is done in the dmaengine layer.
The whole magic of builing the unused channel list and stuff did not help:
Let assume that in DT we have users for channel 0,1,2,3,10,11.
The eDMA driver would mark these channels as used - which means they are HW
syncronized. If we have drivers enabled which uses channel 0,1,10,11 and some
driver request for a channel for memcpy, it will get the channel 2 and when this
memcpy channel is used it would have been assumed to be HW triggered, so the
memcpy would not work at all. There were no way to fix this within the old
driver stack and with the old bindings.

I'm maintaining this (and other patches) in my linux-next-wip branch if someone
wants to try it out w/o needing to hunt for patches:
https://github.com/omap-audio/linux-audio.git peter/linux-next-wip 

Regards,
Peter
---
Peter Ujfalusi (14):
  dmaengine: edma: Remove alignment constraint for memcpy
  dmaengine: edma: Optimize memcpy operation
  dmaengine: edma: Simplify function parameter list for channel
    operations
  dmaengine: edma: Correct PaRAM access function names (_parm_ to
    _param_)
  dmaengine: edma: Merge map_dmach_to_queue into assign_channel_eventq
  dmaengine: edma: Get qDMA channel information from HW also
  dmaengine: edma: Refactor the dma device and channel struct
    initialization
  dmaengine: edma: Do not allocate memory for edma_rsv_info in case of
    DT boot
  dmaengine: edma: Merge the of parsing functions
  dmaengine: ti-dma-crossbar: Add support for crossbar on AM33xx/AM43xx
  dmaengine: Kconfig: edma: Select TI_DMA_CROSSBAR in case of ARCH_OMAP
  dmaengine: edma: New device tree binding
  ARM: DTS: am33xx: Use the new DT bindings for the eDMA3
  ARM: DTS: am437x: Use the new DT bindings for the eDMA3

 .../devicetree/bindings/dma/ti-dma-crossbar.txt    |   15 +-
 Documentation/devicetree/bindings/dma/ti-edma.txt  |  117 ++-
 arch/arm/boot/dts/am335x-evm.dts                   |    9 +-
 arch/arm/boot/dts/am335x-pepper.dts                |   11 +-
 arch/arm/boot/dts/am33xx.dtsi                      |   96 +-
 arch/arm/boot/dts/am4372.dtsi                      |   82 +-
 arch/arm/boot/dts/am437x-gp-evm.dts                |    9 +-
 drivers/dma/Kconfig                                |    1 +
 drivers/dma/edma.c                                 | 1066 +++++++++++---------
 drivers/dma/ti-dma-crossbar.c                      |  251 ++++-
 include/linux/platform_data/edma.h                 |    3 +
 11 files changed, 1060 insertions(+), 600 deletions(-)

-- 
2.6.1


^ permalink raw reply	[flat|nested] 78+ messages in thread

end of thread, other threads:[~2015-12-04  8:32 UTC | newest]

Thread overview: 78+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-16  7:17 [PATCH v2 00/14] dmaenigne: edma/ti-crossbar: fixes, new bindings Peter Ujfalusi
2015-10-16  7:17 ` Peter Ujfalusi
2015-10-16  7:17 ` Peter Ujfalusi
2015-10-16  7:17 ` [PATCH v2 01/14] dmaengine: edma: Remove alignment constraint for memcpy Peter Ujfalusi
2015-10-16  7:17   ` Peter Ujfalusi
2015-10-16  7:17   ` Peter Ujfalusi
2015-10-16  7:18 ` [PATCH v2 02/14] dmaengine: edma: Optimize memcpy operation Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18 ` [PATCH v2 03/14] dmaengine: edma: Simplify function parameter list for channel operations Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18 ` [PATCH v2 04/14] dmaengine: edma: Correct PaRAM access function names (_parm_ to _param_) Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18 ` [PATCH v2 05/14] dmaengine: edma: Merge map_dmach_to_queue into assign_channel_eventq Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18 ` [PATCH v2 06/14] dmaengine: edma: Get qDMA channel information from HW also Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18 ` [PATCH v2 07/14] dmaengine: edma: Refactor the dma device and channel struct initialization Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18 ` [PATCH v2 08/14] dmaengine: edma: Do not allocate memory for edma_rsv_info in case of DT boot Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18 ` [PATCH v2 09/14] dmaengine: edma: Merge the of parsing functions Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18 ` [PATCH v2 10/14] dmaengine: ti-dma-crossbar: Add support for crossbar on AM33xx/AM43xx Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18 ` [PATCH v2 11/14] dmaengine: Kconfig: edma: Select TI_DMA_CROSSBAR in case of ARCH_OMAP Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18 ` [PATCH v2 12/14] dmaengine: edma: New device tree binding Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18 ` [PATCH v2 13/14] ARM: DTS: am33xx: Use the new DT bindings for the eDMA3 Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-11-02  9:21   ` Olof Johansson
2015-11-02  9:21     ` Olof Johansson
2015-11-02  9:21     ` Olof Johansson
2015-11-02 10:04     ` Vinod Koul
2015-11-02 10:04       ` Vinod Koul
2015-11-02 10:04       ` Vinod Koul
2015-11-02 12:13       ` Peter Ujfalusi
2015-11-02 12:13         ` Peter Ujfalusi
2015-11-02 12:13         ` Peter Ujfalusi
2015-11-02 15:40         ` Vinod Koul
2015-11-02 15:40           ` Vinod Koul
2015-11-02 15:40           ` Vinod Koul
2015-11-02 15:46           ` Peter Ujfalusi
2015-11-02 15:46             ` Peter Ujfalusi
2015-11-02 15:46             ` Peter Ujfalusi
2015-11-04  8:37             ` Vinod Koul
2015-11-04  8:37               ` Vinod Koul
2015-11-04  8:37               ` Vinod Koul
2015-11-04  8:49               ` Peter Ujfalusi
2015-11-04  8:49                 ` Peter Ujfalusi
2015-11-04  8:49                 ` Peter Ujfalusi
2015-11-02 10:19     ` Peter Ujfalusi
2015-11-02 10:19       ` Peter Ujfalusi
2015-11-02 10:19       ` Peter Ujfalusi
2015-12-04  0:54   ` Tony Lindgren
2015-12-04  0:54     ` Tony Lindgren
2015-12-04  0:54     ` Tony Lindgren
2015-12-04  8:32     ` Peter Ujfalusi
2015-12-04  8:32       ` Peter Ujfalusi
2015-12-04  8:32       ` Peter Ujfalusi
2015-10-16  7:18 ` [PATCH v2 14/14] ARM: DTS: am437x: " Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-16  7:18   ` Peter Ujfalusi
2015-10-27  1:24 ` [PATCH v2 00/14] dmaenigne: edma/ti-crossbar: fixes, new bindings Vinod Koul
2015-10-27  1:24   ` Vinod Koul
2015-10-27  1:24   ` Vinod Koul

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.