From: "Heiko Stübner" <heiko@sntech.de>
To: kgene.kim@samsung.com
Cc: Dan Williams <djbw@fb.com>, Vinod Koul <vinod.koul@intel.com>,
linus.walleij@linaro.org, Tomasz Figa <tomasz.figa@gmail.com>,
Sylwester Nawrocki <sylvester.nawrocki@gmail.com>,
linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org
Subject: [PATCH v4 0/4] ARM: S3C24XX: add dmaengine based dma-driver
Date: Thu, 5 Sep 2013 00:33:48 +0200 [thread overview]
Message-ID: <201309050033.50333.heiko@sntech.de> (raw)
This series tries to provide a basic dmaengine driver for the s3c24xx
SoCs to subsequently retire the old one with custom API.
Since v3 more smaller fixes were added, and memcpy operations now have a very
simple mechanism to try to use higher transfer widths.
Since v2 only some small fixes to the dma driver itself were added.
Since v1 three big changes happened (appart from fixing received comments):
For one the limitation of sg-lists to 1 element is gone.Secondly the
specifics of the virtual channels (target bus, handshake, etc) are not
encoded with channel ids but in the platformdata - making a later dt
binding easier, as these informations can there be gathered by the xlate
function. And lastly I also added a preliminary mechanism to handle the
specific needs for the earlier variants of the driver.
While s3c2443 and later can use any channel for any peripheral with just
marking the target-peripheral-id in a register, earlier SoCs can only use
specific channels and the target-ids also vary depending on the channel.
Therefore on newer SoCs the chansel element only needs to contain the
requested target-id, while on the older variants use it to encode both
the valid channels and the channel-specific peripheral-id.
On affected SoCs the target-id is always 3 bit wide, so we use these and
an additional 4th bit to hold the valid state. As the older SoCs all have
4 dma channels this can live happily in an u16 element.
The s3c24xx series will most likely not see any new offspring, but even
if it happens any new model will probably use the newer more flexible
variant of the dma controller, so this should not restrict anything
in the future.
Example:
SDI is valid on channels 0, 2 and 3 - with varying hw request sources.
For it the chansel field would look like
((BIT(3) | 1) << 3 * 4) | // channel 3, with request source 1
((BIT(3) | 2) << 2 * 4) | // channel 2, with request source 2
((BIT(3) | 2) << 0 * 4) // channel 0, with request source 2
Heiko Stuebner (4):
ARM: S3C24XX: number the dma clocks
dmaengine: add driver for Samsung s3c24xx SoCs
ARM: S3C24XX: add platform-devices for new dma driver for s3c2412 and
s3c2443
ARM: SAMSUNG: set s3c24xx_dma_filter for s3c64xx-spi0 device
arch/arm/mach-s3c24xx/clock-s3c2412.c | 8 +-
arch/arm/mach-s3c24xx/common-s3c2443.c | 12 +-
arch/arm/mach-s3c24xx/common.c | 106 +++
arch/arm/mach-s3c24xx/common.h | 3 +
arch/arm/mach-s3c24xx/mach-jive.c | 1 +
arch/arm/mach-s3c24xx/mach-smdk2413.c | 1 +
arch/arm/mach-s3c24xx/mach-smdk2416.c | 1 +
arch/arm/mach-s3c24xx/mach-smdk2443.c | 1 +
arch/arm/mach-s3c24xx/mach-vstms.c | 1 +
arch/arm/plat-samsung/devs.c | 5 +-
drivers/dma/Kconfig | 12 +
drivers/dma/Makefile | 1 +
drivers/dma/s3c24xx-dma.c | 1340 +++++++++++++++++++++++++++++
include/linux/platform_data/dma-s3c24xx.h | 43 +
14 files changed, 1524 insertions(+), 11 deletions(-)
create mode 100644 drivers/dma/s3c24xx-dma.c
create mode 100644 include/linux/platform_data/dma-s3c24xx.h
--
1.7.10.4
next reply other threads:[~2013-09-04 22:34 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-04 22:33 Heiko Stübner [this message]
2013-09-04 22:34 ` [PATCH v4 1/4] ARM: S3C24XX: number the dma clocks Heiko Stübner
2013-09-04 22:35 ` [PATCH v4 2/4] dmaengine: add driver for Samsung s3c24xx SoCs Heiko Stübner
2013-09-12 10:56 ` Kukjin Kim
2013-09-17 6:41 ` Vinod Koul
2013-09-04 22:35 ` [PATCH v4 3/4] ARM: S3C24XX: add platform-devices for new dma driver for s3c2412 and s3c2443 Heiko Stübner
2013-09-04 22:36 ` [PATCH v4 4/4] ARM: SAMSUNG: set s3c24xx_dma_filter for s3c64xx-spi0 device Heiko Stübner
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=201309050033.50333.heiko@sntech.de \
--to=heiko@sntech.de \
--cc=djbw@fb.com \
--cc=kgene.kim@samsung.com \
--cc=linus.walleij@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=sylvester.nawrocki@gmail.com \
--cc=tomasz.figa@gmail.com \
--cc=vinod.koul@intel.com \
/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