From: kernel-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org
To: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>,
Lee Jones <lee-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Eric Anholt <eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org>,
Vinod Koul <vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-rpi-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Martin Sperl <kernel-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org>
Subject: [PATCH v3 00/11] dmaengine: bcm2835: bugfix + enhancement of driver
Date: Sat, 5 Mar 2016 10:52:11 +0000 [thread overview]
Message-ID: <1457175142-28665-1-git-send-email-kernel@martin.sperl.org> (raw)
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
next reply other threads:[~2016-03-05 10:52 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-05 10:52 kernel-TqfNSX0MhmxHKSADF0wUEw [this message]
[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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1457175142-28665-1-git-send-email-kernel@martin.sperl.org \
--to=kernel-tqfnsx0mhmxhksadf0wuew@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org \
--cc=lee-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-rpi-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org \
--cc=vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).