mirror of
https://github.com/torvalds/linux.git
synced 2024-11-17 01:22:07 +00:00
ARM: PL08x: add comment explaining the flow control methods
Explain the two flow control methods which the PL08x implements, along with the problem which peripheral flow control presents. This helps people understand why we are unable to use these DMA controllers with (eg) the MMCI. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
3e2a037c1d
commit
9dc2c200a0
@ -53,7 +53,23 @@
|
||||
*
|
||||
* ASSUMES default (little) endianness for DMA transfers
|
||||
*
|
||||
* Only DMAC flow control is implemented
|
||||
* The PL08x has two flow control settings:
|
||||
* - DMAC flow control: the transfer size defines the number of transfers
|
||||
* which occur for the current LLI entry, and the DMAC raises TC at the
|
||||
* end of every LLI entry. Observed behaviour shows the DMAC listening
|
||||
* to both the BREQ and SREQ signals (contrary to documented),
|
||||
* transferring data if either is active. The LBREQ and LSREQ signals
|
||||
* are ignored.
|
||||
*
|
||||
* - Peripheral flow control: the transfer size is ignored (and should be
|
||||
* zero). The data is transferred from the current LLI entry, until
|
||||
* after the final transfer signalled by LBREQ or LSREQ. The DMAC
|
||||
* will then move to the next LLI entry.
|
||||
*
|
||||
* Only the former works sanely with scatter lists, so we only implement
|
||||
* the DMAC flow control method. However, peripherals which use the LBREQ
|
||||
* and LSREQ signals (eg, MMCI) are unable to use this mode, which through
|
||||
* these hardware restrictions prevents them from using scatter DMA.
|
||||
*
|
||||
* Global TODO:
|
||||
* - Break out common code from arch/arm/mach-s3c64xx and share
|
||||
|
Loading…
Reference in New Issue
Block a user