From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/5] dmaengine: dw_dmac: move to generic DMA binding
Date: Tue, 29 Jan 2013 17:45:46 +0000 [thread overview]
Message-ID: <20130129174546.GE23505@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <201301291636.38773.arnd@arndb.de>
On Tue, Jan 29, 2013 at 04:36:38PM +0000, Arnd Bergmann wrote:
> If the pl080 driver already has code for the mux in it, then it should
> handle both of_dma_controller instances in my example. It would
> not change anything regarding the binding, which just describes the
> way that the hardware is connected. I have not looked at the implementation
> of the pl080 driver, but I'd assume we could get away with just having
> two separate xlate() functions.
Well, how it all works in the PL08x driver at present is:
- the platform code passes into the PL08x driver a description of the
virtual channels, eg:
[1] = {
/* Muxed on channel 0-3 */
.bus_id = "aacirx",
.min_signal = 0,
.max_signal = 2,
.muxval = 0x01,
.periph_buses = PL08X_AHB1 | PL08X_AHB2,
},
- the virtual channels include:
- the minimum and maximum index of the DMA request signals into the
PL08x that can be used with this peripheral.
- the the register value for the external mux, if any.
- other PL08x specific data to do with this DMA peripheral
- when a virtual channel is requested by a DMA client, it claims just
the virtual channel. No actual hardware resources are assigned,
and no mappings are setup.
- when a transfer is prepared on a virtual channel, part of the
preparation is to locate the request signal to be used - and
platform code is requested to supply that from the description
associated with the channel (such as the above fragment.)
- the versatile PL08x code looks at min_signal/max_signal, and walks
this space looking for an unassigned request signal. If there is
an external mux associated with this request signal, the mux is
appropriately programmed. If a request signal is currently assigned
the next request signal will be tried until there are no further
possibilities, when failure occurs. In that case, the prepare
function also fails.
- the PL08x driver then knows which request signal is associated with
the peripheral, and sets up the descriptors to be dependent on this
request signal. This mapping must not change until the transfer
has completed.
- when the descriptor is completed - and freed, the muxing is released
and the DMA request signal becomes available for other users to make
use of.
Practically, what this means is that:
(a) we've ensured that all drivers using PL08x do _not_ expect that
descriptors can always be prepared; they must continue to work correctly
when the prepare function returns NULL.
(b) several devices end up sharing the first three request signals
and they're used on an opportunistic basis. Theoretically, if you have
one of these boards where AACI DMA works, you can be using one of these
DMA requests for audio playback, another for record, and the remaining
one can be used on an opportunistic basis between the second MMCI
interface (should that also work - which I've proven is an impossiblity!)
and the 3rd UART... or the USB if there was a driver for that device.
next prev parent reply other threads:[~2013-01-29 17:45 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1359395857-1235-1-git-send-email-arnd@arndb.de>
2013-01-28 21:58 ` [PATCH v2 0/5] dmaengine: convert dw_dmac/spear13xx to generic binding Arnd Bergmann
2013-01-28 21:58 ` [PATCH 1/5] dmaengine: dw_dmac: move to generic DMA binding Arnd Bergmann
2013-01-29 7:24 ` Viresh Kumar
2013-01-29 10:35 ` Arnd Bergmann
2013-01-29 10:49 ` Viresh Kumar
2013-01-29 10:54 ` Andy Shevchenko
2013-01-29 10:57 ` Viresh Kumar
2013-01-29 11:14 ` Andy Shevchenko
2013-01-29 13:31 ` Arnd Bergmann
2013-01-29 13:45 ` Andy Shevchenko
2013-01-29 14:26 ` Russell King - ARM Linux
2013-01-29 15:28 ` Arnd Bergmann
2013-01-29 15:17 ` Viresh Kumar
2013-01-29 16:21 ` Arnd Bergmann
2013-01-30 2:04 ` Viresh Kumar
2013-01-30 9:41 ` Arnd Bergmann
2013-01-30 9:48 ` Viresh Kumar
2013-01-30 10:08 ` Arnd Bergmann
2013-01-30 10:32 ` Viresh Kumar
[not found] ` <1359445171.31148.30.camel@smile>
2013-01-29 10:50 ` Arnd Bergmann
2013-01-29 11:18 ` Russell King - ARM Linux
2013-01-29 13:44 ` Arnd Bergmann
2013-01-29 14:24 ` Russell King - ARM Linux
2013-01-29 14:55 ` Arnd Bergmann
2013-01-29 15:44 ` Russell King - ARM Linux
2013-01-29 16:36 ` Arnd Bergmann
2013-01-29 17:45 ` Russell King - ARM Linux [this message]
2013-01-29 20:40 ` Arnd Bergmann
2013-01-29 21:59 ` Linus Walleij
2013-02-15 8:50 ` Andy Shevchenko
2013-02-15 11:17 ` Arnd Bergmann
2013-01-28 21:58 ` [PATCH 2/5] spi: pl022: use generic DMA slave configuration if possible Arnd Bergmann
2013-01-29 2:41 ` Mark Brown
2013-01-29 7:49 ` Andy Shevchenko
2013-01-29 13:13 ` Arnd Bergmann
2013-02-07 18:29 ` Linus Walleij
2013-02-07 19:42 ` Arnd Bergmann
2013-02-07 20:19 ` Linus Walleij
2013-02-07 21:15 ` Arnd Bergmann
2013-02-08 16:22 ` Russell King - ARM Linux
2013-02-08 16:28 ` Arnd Bergmann
2013-02-08 22:10 ` Linus Walleij
2013-02-08 16:20 ` Russell King - ARM Linux
2013-01-28 21:58 ` [PATCH 3/5] serial: pl011: " Arnd Bergmann
2013-01-30 4:38 ` Greg Kroah-Hartman
2013-01-28 21:58 ` [PATCH 4/5] ata: arasan: remove the need for platform_data Arnd Bergmann
2013-01-29 8:18 ` Viresh Kumar
2013-01-28 21:58 ` [PATCH 5/5] ARM: SPEAr13xx: Pass generic DW DMAC platform data from DT Arnd Bergmann
2013-01-29 8:16 ` Viresh Kumar
2013-01-29 13:21 ` Arnd Bergmann
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=20130129174546.GE23505@n2100.arm.linux.org.uk \
--to=linux@arm.linux.org.uk \
--cc=linux-arm-kernel@lists.infradead.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).