devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/11] dmaengine: bcm2835: bugfix + enhancement of driver
@ 2016-03-05 10:52 kernel-TqfNSX0MhmxHKSADF0wUEw
       [not found] ` <1457175142-28665-1-git-send-email-kernel-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org>
  0 siblings, 1 reply; 19+ messages in thread
From: kernel-TqfNSX0MhmxHKSADF0wUEw @ 2016-03-05 10:52 UTC (permalink / raw)
  To: Rob Herring, Stephen Warren, Lee Jones, Eric Anholt, Vinod Koul,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-rpi-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	dmaengine-u79uwXL29TY76Z2rM5mHXA
  Cc: Martin Sperl

From: Martin Sperl <kernel-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org>

This patchset fixes several issues:
* missing residue_granularity to allow better support for I2S
* dma-channels are no longer artificially restricted (channel 0 and 2)
* added correct support for dma-channels 11-14 (changeable via
  the device tree) by using the correct shared irq line with index
  11 into the interrupts list (changeable via device tree)

With this now 11 DMA channels are available instead of 7 - the
additional HW-DMA-channels are:
* 0, 2 (masking of channels)
* 13, 14 (shared interrupts - see also note on channel 12)

It also adds several new features:
* slave_sg support
* dma_memcopy support

For these a consolidated method for creating standard control-block
chains was created to share common between cyclic, slave_sg and
memcopy.

Testing:
* slave_sg
  * spi-bcm2835:
    * fb_st7735r framebuffer
      * tested using mplayer
* cyclic
  * bcm2835-i2s
    * Audio output with a Hifiberry I2S card.
      * tested using mplayer and aplay
* memcopy
  * dmatest

Tests using both slave_sg and cyclic concurrently were also conducted
using mplayer to play BigBuckBunny.

Note that the bcm2835-i2s driver still requires the clock patch-set
enabling the pcm clock.

The last patches (expose registers via debugfs) is optional:
  dmaengine: bcm2835: expose dma registers via debugfs

Note: DMA channel 15 is still not supported because:
* it sits in a separate IO range
* it is used by the firmware
So unless the firmware no longer uses DMA 15, it is not worth
the effort.

Possibly future improvements:
* allow control over channel selection (Lite or normal)
  as well as AXI priorities via the device-tree
* support for memset, memset_sg and interleave
* using DREQ-names instead of magic numbers (via include/dt-binding/...)

Change-log:
  V1 -> V2: * rewrite of the original patch avoiding code duplication
            * splitting of changes into multiple patches
  V2 -> V3: * allow configuration to dma mapping va device tree.
            * adding names binging for DREQs to get used in device-trees
	    * move lite channel detection (via debug register) and using
	      limits of it into separate patch
	    * add debugfs support to see what is actually happening in
	      the dma registers.
	    * incorporated feedback from various people improving
	      code-readability (primarily Patch 7)

Martin Sperl (11):
  dmaengine: bcm2835: set residue_granularity field
  dmaengine: bcm2835: remove unnecessary masking of dma channels
  dmaengine: bcm2835: use shared interrupt for channel 11 to 14.
  ARM: bcm2835: dt: add bindings for shared interrupt properties
  dmaengine: bcm2835: add additional defines for DMA-registers
  dmaengine: bcm2835: move cyclic member from bcm2835_chan into
    bcm2835_desc
  dmaengine: bcm2835: move controlblock chain generation into separate
    method
  dmaengine: bcm2835: limit max length based on channel type
  dmaengine: bcm2835: add slave_sg support to bcm2835-dma
  dmaengine: bcm2835: add dma_memcopy support to bcm2835-dma
  dmaengine: bcm2835: expose dma registers via debugfs

 .../devicetree/bindings/dma/brcm,bcm2835-dma.txt   |   6 +
 drivers/dma/bcm2835-dma.c                          | 740 +++++++++++++++++----
 2 files changed, 623 insertions(+), 123 deletions(-)

--
2.1.4
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

end of thread, other threads:[~2016-03-22 10:24 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-05 10:52 [PATCH v3 00/11] dmaengine: bcm2835: bugfix + enhancement of driver kernel-TqfNSX0MhmxHKSADF0wUEw
     [not found] ` <1457175142-28665-1-git-send-email-kernel-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org>
2016-03-05 10:52   ` [PATCH v3 01/11] dmaengine: bcm2835: set residue_granularity field kernel-TqfNSX0MhmxHKSADF0wUEw
2016-03-05 10:52   ` [PATCH v3 02/11] dmaengine: bcm2835: remove unnecessary masking of dma channels kernel-TqfNSX0MhmxHKSADF0wUEw
2016-03-05 10:52   ` [PATCH v3 03/11] dmaengine: bcm2835: use shared interrupt for channel 11 to 14 kernel-TqfNSX0MhmxHKSADF0wUEw
2016-03-05 10:52   ` [PATCH v3 04/11] ARM: bcm2835: dt: add bindings for shared interrupt properties kernel-TqfNSX0MhmxHKSADF0wUEw
     [not found]     ` <1457175142-28665-5-git-send-email-kernel-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org>
2016-03-07 23:24       ` Eric Anholt
     [not found]         ` <87fuw1yipi.fsf-omZaPlIz5HhaEpDpdNBo/KxOck334EZe@public.gmane.org>
2016-03-08 11:23           ` Martin Sperl
     [not found]             ` <3503D512-7E9C-46E8-91C7-CAD828DD48D1-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org>
2016-03-11  5:53               ` Vinod Koul
2016-03-10  8:57       ` Mark Rutland
2016-03-11  8:51         ` Martin Sperl
     [not found]           ` <E60A6B56-0F3F-465C-8BF7-59EF35D41070-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org>
2016-03-22  9:23             ` Martin Sperl
     [not found]               ` <56F10F21.9020709-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org>
2016-03-22 10:24                 ` Mark Rutland
2016-03-05 10:52   ` [PATCH v3 05/11] dmaengine: bcm2835: add additional defines for DMA-registers kernel-TqfNSX0MhmxHKSADF0wUEw
2016-03-05 10:52   ` [PATCH v3 06/11] dmaengine: bcm2835: move cyclic member from bcm2835_chan into bcm2835_desc kernel-TqfNSX0MhmxHKSADF0wUEw
2016-03-05 10:52   ` [PATCH v3 07/11] dmaengine: bcm2835: move controlblock chain generation into separate method kernel-TqfNSX0MhmxHKSADF0wUEw
2016-03-05 10:52   ` [PATCH v3 08/11] dmaengine: bcm2835: limit max length based on channel type kernel-TqfNSX0MhmxHKSADF0wUEw
2016-03-05 10:52   ` [PATCH v3 09/11] dmaengine: bcm2835: add slave_sg support to bcm2835-dma kernel-TqfNSX0MhmxHKSADF0wUEw
2016-03-05 10:52   ` [PATCH v3 10/11] dmaengine: bcm2835: add dma_memcopy " kernel-TqfNSX0MhmxHKSADF0wUEw
2016-03-05 10:52   ` [PATCH v3 11/11] dmaengine: bcm2835: expose dma registers via debugfs kernel-TqfNSX0MhmxHKSADF0wUEw

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).